Revert "TODO epan/dissectors/asn1/kerberos/packet-kerberos-template.c new GSS flags"
[wireshark-sm.git] / epan / dissectors / packet-ulp.c
blob43c45dab1ffebdda7cff33818ae768e793eb19a6
1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
3 /* packet-ulp.c */
4 /* asn2wrs.py -q -L -p ulp -c ./ulp.cnf -s ./packet-ulp-template -D . -O ../.. ULP.asn SUPL.asn ULP-Components.asn */
6 /* packet-ulp.c
7 * Routines for OMA UserPlane Location Protocol packet dissection
8 * Copyright 2006, Anders Broman <anders.broman@ericsson.com>
9 * Copyright 2014-2019, Pascal Quantin <pascal@wireshark.org>
10 * Copyright 2020, Stig Bjorlykke <stig@bjorlykke.org>
12 * Wireshark - Network traffic analyzer
13 * By Gerald Combs <gerald@wireshark.org>
14 * Copyright 1998 Gerald Combs
16 * SPDX-License-Identifier: GPL-2.0-or-later
18 * ref OMA-TS-ULP-V2_0_5-20191028-A
19 * http://www.openmobilealliance.org
22 #include "config.h"
24 #include "math.h"
26 #include <epan/packet.h>
27 #include <epan/prefs.h>
28 #include <epan/asn1.h>
29 #include <epan/tfs.h>
30 #include <epan/unit_strings.h>
31 #include <wsutil/array.h>
33 #include "packet-per.h"
34 #include "packet-tcp.h"
35 #include "packet-e164.h"
36 #include "packet-e212.h"
38 #define PNAME "OMA UserPlane Location Protocol"
39 #define PSNAME "ULP"
40 #define PFNAME "ulp"
42 void proto_register_ulp(void);
44 static dissector_handle_t rrlp_handle;
45 static dissector_handle_t lpp_handle;
47 /* IANA Registered Ports
48 * oma-ulp 7275/tcp OMA UserPlane Location
49 * oma-ulp 7275/udp OMA UserPlane Location
51 #define ULP_PORT 7275
53 /* Initialize the protocol and registered fields */
54 static int proto_ulp;
57 #define ULP_HEADER_SIZE 2
59 static bool ulp_desegment = true;
61 static int hf_ulp_ULP_PDU_PDU; /* ULP_PDU */
62 static int hf_ulp_length; /* INTEGER_0_65535 */
63 static int hf_ulp_version; /* Version */
64 static int hf_ulp_sessionID; /* SessionID */
65 static int hf_ulp_message; /* UlpMessage */
66 static int hf_ulp_msSUPLINIT; /* SUPLINIT */
67 static int hf_ulp_msSUPLSTART; /* SUPLSTART */
68 static int hf_ulp_msSUPLRESPONSE; /* SUPLRESPONSE */
69 static int hf_ulp_msSUPLPOSINIT; /* SUPLPOSINIT */
70 static int hf_ulp_msSUPLPOS; /* SUPLPOS */
71 static int hf_ulp_msSUPLEND; /* SUPLEND */
72 static int hf_ulp_msSUPLAUTHREQ; /* SUPLAUTHREQ */
73 static int hf_ulp_msSUPLAUTHRESP; /* SUPLAUTHRESP */
74 static int hf_ulp_msSUPLTRIGGEREDSTART; /* Ver2_SUPLTRIGGEREDSTART */
75 static int hf_ulp_msSUPLTRIGGEREDRESPONSE; /* Ver2_SUPLTRIGGEREDRESPONSE */
76 static int hf_ulp_msSUPLTRIGGEREDSTOP; /* Ver2_SUPLTRIGGEREDSTOP */
77 static int hf_ulp_msSUPLNOTIFY; /* Ver2_SUPLNOTIFY */
78 static int hf_ulp_msSUPLNOTIFYRESPONSE; /* Ver2_SUPLNOTIFYRESPONSE */
79 static int hf_ulp_msSUPLSETINIT; /* Ver2_SUPLSETINIT */
80 static int hf_ulp_msSUPLREPORT; /* Ver2_SUPLREPORT */
81 static int hf_ulp_posMethod; /* PosMethod */
82 static int hf_ulp_notification; /* Notification */
83 static int hf_ulp_sLPAddress; /* SLPAddress */
84 static int hf_ulp_qoP; /* QoP */
85 static int hf_ulp_sLPMode; /* SLPMode */
86 static int hf_ulp_mac; /* MAC */
87 static int hf_ulp_keyIdentity; /* KeyIdentity */
88 static int hf_ulp_ver2_SUPL_INIT_extension; /* Ver2_SUPL_INIT_extension */
89 static int hf_ulp_notificationType; /* NotificationType */
90 static int hf_ulp_encodingType; /* EncodingType */
91 static int hf_ulp_requestorId; /* T_requestorId */
92 static int hf_ulp_requestorIdType; /* FormatIndicator */
93 static int hf_ulp_clientName; /* T_clientName */
94 static int hf_ulp_clientNameType; /* FormatIndicator */
95 static int hf_ulp_ver2_Notification_extension; /* Ver2_Notification_extension */
96 static int hf_ulp_sETCapabilities; /* SETCapabilities */
97 static int hf_ulp_locationId; /* LocationId */
98 static int hf_ulp_ver2_SUPL_START_extension; /* Ver2_SUPL_START_extension */
99 static int hf_ulp_posTechnology; /* PosTechnology */
100 static int hf_ulp_prefMethod; /* PrefMethod */
101 static int hf_ulp_posProtocol; /* PosProtocol */
102 static int hf_ulp_ver2_SETCapabilities_extension; /* Ver2_SETCapabilities_extension */
103 static int hf_ulp_agpsSETassisted; /* BOOLEAN */
104 static int hf_ulp_agpsSETBased; /* BOOLEAN */
105 static int hf_ulp_autonomousGPS; /* BOOLEAN */
106 static int hf_ulp_aflt; /* BOOLEAN */
107 static int hf_ulp_ecid; /* BOOLEAN */
108 static int hf_ulp_eotd; /* BOOLEAN */
109 static int hf_ulp_otdoa; /* BOOLEAN */
110 static int hf_ulp_ver2_PosTechnology_extension; /* Ver2_PosTechnology_extension */
111 static int hf_ulp_tia801; /* BOOLEAN */
112 static int hf_ulp_rrlp; /* BOOLEAN */
113 static int hf_ulp_rrc; /* BOOLEAN */
114 static int hf_ulp_ver2_PosProtocol_extension; /* Ver2_PosProtocol_extension */
115 static int hf_ulp_sETAuthKey; /* SETAuthKey */
116 static int hf_ulp_keyIdentity4; /* KeyIdentity4 */
117 static int hf_ulp_ver2_SUPL_RESPONSE_extension; /* Ver2_SUPL_RESPONSE_extension */
118 static int hf_ulp_shortKey; /* BIT_STRING_SIZE_128 */
119 static int hf_ulp_longKey; /* BIT_STRING_SIZE_256 */
120 static int hf_ulp_requestedAssistData; /* RequestedAssistData */
121 static int hf_ulp_position; /* Position */
122 static int hf_ulp_suplpos; /* SUPLPOS */
123 static int hf_ulp_ver; /* Ver */
124 static int hf_ulp_ver2_SUPL_POS_INIT_extension; /* Ver2_SUPL_POS_INIT_extension */
125 static int hf_ulp_almanacRequested; /* BOOLEAN */
126 static int hf_ulp_utcModelRequested; /* BOOLEAN */
127 static int hf_ulp_ionosphericModelRequested; /* BOOLEAN */
128 static int hf_ulp_dgpsCorrectionsRequested; /* BOOLEAN */
129 static int hf_ulp_referenceLocationRequested; /* BOOLEAN */
130 static int hf_ulp_referenceTimeRequested; /* BOOLEAN */
131 static int hf_ulp_acquisitionAssistanceRequested; /* BOOLEAN */
132 static int hf_ulp_realTimeIntegrityRequested; /* BOOLEAN */
133 static int hf_ulp_navigationModelRequested; /* BOOLEAN */
134 static int hf_ulp_navigationModelData; /* NavigationModel */
135 static int hf_ulp_ver2_RequestedAssistData_extension; /* Ver2_RequestedAssistData_extension */
136 static int hf_ulp_gpsWeek; /* INTEGER_0_1023 */
137 static int hf_ulp_gpsToe; /* INTEGER_0_167 */
138 static int hf_ulp_nsat; /* INTEGER_0_31 */
139 static int hf_ulp_toeLimit; /* INTEGER_0_10 */
140 static int hf_ulp_satInfo; /* SatelliteInfo */
141 static int hf_ulp_SatelliteInfo_item; /* SatelliteInfoElement */
142 static int hf_ulp_satId; /* INTEGER_0_63 */
143 static int hf_ulp_iode; /* INTEGER_0_255 */
144 static int hf_ulp_posPayLoad; /* PosPayLoad */
145 static int hf_ulp_velocity; /* Velocity */
146 static int hf_ulp_ver2_SUPL_POS_extension; /* Ver2_SUPL_POS_extension */
147 static int hf_ulp_tia801payload; /* OCTET_STRING_SIZE_1_8192 */
148 static int hf_ulp_rrcPayload; /* OCTET_STRING_SIZE_1_8192 */
149 static int hf_ulp_rrlpPayload; /* T_rrlpPayload */
150 static int hf_ulp_ver2_PosPayLoad_extension; /* Ver2_PosPayLoad_extension */
151 static int hf_ulp_statusCode; /* StatusCode */
152 static int hf_ulp_ver2_SUPL_END_extension; /* Ver2_SUPL_END_extension */
153 static int hf_ulp_sPCSETKey; /* SPCSETKey */
154 static int hf_ulp_spctid; /* SPCTID */
155 static int hf_ulp_sPCSETKeylifetime; /* SPCSETKeylifetime */
156 static int hf_ulp_notificationResponse; /* NotificationResponse */
157 static int hf_ulp_targetSETID; /* SETId */
158 static int hf_ulp_applicationID; /* ApplicationID */
159 static int hf_ulp_multipleLocationIds; /* MultipleLocationIds */
160 static int hf_ulp_thirdParty; /* ThirdParty */
161 static int hf_ulp_triggerType; /* TriggerType */
162 static int hf_ulp_triggerParams; /* TriggerParams */
163 static int hf_ulp_reportingCap; /* ReportingCap */
164 static int hf_ulp_causeCode; /* CauseCode */
165 static int hf_ulp_periodicParams; /* PeriodicParams */
166 static int hf_ulp_areaEventParams; /* AreaEventParams */
167 static int hf_ulp_numberOfFixes; /* INTEGER_1_8639999 */
168 static int hf_ulp_intervalBetweenFixes; /* INTEGER_1_8639999 */
169 static int hf_ulp_startTime; /* INTEGER_0_2678400 */
170 static int hf_ulp_areaEventType; /* AreaEventType */
171 static int hf_ulp_locationEstimate; /* BOOLEAN */
172 static int hf_ulp_repeatedReportingParams; /* RepeatedReportingParams */
173 static int hf_ulp_stopTime; /* INTEGER_0_11318399 */
174 static int hf_ulp_geographicTargetAreaList; /* GeographicTargetAreaList */
175 static int hf_ulp_areaIdLists; /* SEQUENCE_SIZE_1_maxAreaIdList_OF_AreaIdList */
176 static int hf_ulp_areaIdLists_item; /* AreaIdList */
177 static int hf_ulp_minimumIntervalTime; /* INTEGER_1_604800 */
178 static int hf_ulp_maximumNumberOfReports; /* INTEGER_1_1024 */
179 static int hf_ulp_GeographicTargetAreaList_item; /* GeographicTargetArea */
180 static int hf_ulp_circularArea; /* CircularArea */
181 static int hf_ulp_ellipticalArea; /* EllipticalArea */
182 static int hf_ulp_polygonArea; /* PolygonArea */
183 static int hf_ulp_areaIdSet; /* AreaIdSet */
184 static int hf_ulp_areaIdSetType; /* AreaIdSetType */
185 static int hf_ulp_geoAreaMappingList; /* GeoAreaMappingList */
186 static int hf_ulp_AreaIdSet_item; /* AreaId */
187 static int hf_ulp_gSMAreaId; /* GSMAreaId */
188 static int hf_ulp_wCDMAAreaId; /* WCDMAAreaId */
189 static int hf_ulp_cDMAAreaId; /* CDMAAreaId */
190 static int hf_ulp_hRPDAreaId; /* HRPDAreaId */
191 static int hf_ulp_uMBAreaId; /* UMBAreaId */
192 static int hf_ulp_lTEAreaId; /* LTEAreaId */
193 static int hf_ulp_wLANAreaId; /* WLANAreaId */
194 static int hf_ulp_wiMAXAreaId; /* WimaxAreaId */
195 static int hf_ulp_nRAreaId; /* NRAreaId */
196 static int hf_ulp_refMCC; /* INTEGER_0_999 */
197 static int hf_ulp_refMNC; /* INTEGER_0_999 */
198 static int hf_ulp_refLAC; /* INTEGER_0_65535 */
199 static int hf_ulp_refCI; /* INTEGER_0_65535 */
200 static int hf_ulp_refUC; /* INTEGER_0_268435455 */
201 static int hf_ulp_refSID; /* INTEGER_0_65535 */
202 static int hf_ulp_refNID; /* INTEGER_0_32767 */
203 static int hf_ulp_refBASEID; /* INTEGER_0_65535 */
204 static int hf_ulp_refSECTORID; /* BIT_STRING_SIZE_128 */
205 static int hf_ulp_refCI_01; /* BIT_STRING_SIZE_29 */
206 static int hf_ulp_apMACAddress; /* T_apMACAddress */
207 static int hf_ulp_bsID_MSB; /* BIT_STRING_SIZE_24 */
208 static int hf_ulp_bsID_LSB; /* BIT_STRING_SIZE_24 */
209 static int hf_ulp_refCI_02; /* BIT_STRING_SIZE_36 */
210 static int hf_ulp_GeoAreaMappingList_item; /* GeoAreaIndex */
211 static int hf_ulp_supportedNetworkInformation; /* SupportedNetworkInformation */
212 static int hf_ulp_reportingMode; /* ReportingMode */
213 static int hf_ulp_gnssPosTechnology; /* GNSSPosTechnology */
214 static int hf_ulp_repMode; /* RepModee */
215 static int hf_ulp_batchRepConditions; /* BatchRepConditions */
216 static int hf_ulp_batchRepType; /* BatchRepType */
217 static int hf_ulp_num_interval; /* INTEGER_1_1024 */
218 static int hf_ulp_num_minutes; /* INTEGER_1_2048 */
219 static int hf_ulp_endofsession; /* NULL */
220 static int hf_ulp_reportPosition; /* BOOLEAN */
221 static int hf_ulp_reportMeasurements; /* BOOLEAN */
222 static int hf_ulp_intermediateReports; /* BOOLEAN */
223 static int hf_ulp_discardOldest; /* BOOLEAN */
224 static int hf_ulp_sessionList; /* SessionList */
225 static int hf_ulp_reportDataList; /* ReportDataList */
226 static int hf_ulp_moreComponents; /* NULL */
227 static int hf_ulp_SessionList_item; /* SessionInformation */
228 static int hf_ulp_ReportDataList_item; /* ReportData */
229 static int hf_ulp_positionData; /* PositionData */
230 static int hf_ulp_resultCode; /* ResultCode */
231 static int hf_ulp_timestamp; /* TimeStamp */
232 static int hf_ulp_ganssSignalsInfo; /* GANSSsignalsInfo */
233 static int hf_ulp_GANSSsignalsInfo_item; /* GANSSSignalsDescription */
234 static int hf_ulp_ganssId; /* INTEGER_0_15 */
235 static int hf_ulp_gANSSSignals; /* GANSSSignals */
236 static int hf_ulp_absoluteTime; /* UTCTime */
237 static int hf_ulp_relativeTime; /* INTEGER_0_31536000 */
238 static int hf_ulp_notificationMode; /* NotificationMode */
239 static int hf_ulp_e_SLPAddress; /* SLPAddress */
240 static int hf_ulp_historicReporting; /* HistoricReporting */
241 static int hf_ulp_protectionLevel; /* ProtectionLevel */
242 static int hf_ulp_minimumMajorVersion; /* INTEGER_0_255 */
243 static int hf_ulp_allowedReportingType; /* AllowedReportingType */
244 static int hf_ulp_reportingCriteria; /* ReportingCriteria */
245 static int hf_ulp_timeWindow; /* TimeWindow */
246 static int hf_ulp_maxNumberofReports; /* INTEGER_1_65536 */
247 static int hf_ulp_minTimeInterval; /* INTEGER_1_86400 */
248 static int hf_ulp_startTime_01; /* INTEGER_M525600_M1 */
249 static int hf_ulp_stopTime_01; /* INTEGER_M525599_0 */
250 static int hf_ulp_protlevel; /* ProtLevel */
251 static int hf_ulp_basicProtectionParams; /* BasicProtectionParams */
252 static int hf_ulp_keyIdentifier; /* OCTET_STRING_SIZE_8 */
253 static int hf_ulp_basicReplayCounter; /* INTEGER_0_65535 */
254 static int hf_ulp_basicMAC; /* BIT_STRING_SIZE_32 */
255 static int hf_ulp_initialApproximateposition; /* Position */
256 static int hf_ulp_utran_GPSReferenceTimeResult; /* UTRAN_GPSReferenceTimeResult */
257 static int hf_ulp_utran_GANSSReferenceTimeResult; /* UTRAN_GANSSReferenceTimeResult */
258 static int hf_ulp_utran_GPSReferenceTimeAssistance; /* UTRAN_GPSReferenceTimeAssistance */
259 static int hf_ulp_utran_GANSSReferenceTimeAssistance; /* UTRAN_GANSSReferenceTimeAssistance */
260 static int hf_ulp_ver2_HighAccuracyPosition; /* Ver2_HighAccuracyPosition */
261 static int hf_ulp_emergencyCallLocation; /* NULL */
262 static int hf_ulp_serviceCapabilities; /* ServiceCapabilities */
263 static int hf_ulp_supportedBearers; /* SupportedBearers */
264 static int hf_ulp_servicesSupported; /* ServicesSupported */
265 static int hf_ulp_reportingCapabilities; /* ReportingCap */
266 static int hf_ulp_eventTriggerCapabilities; /* EventTriggerCapabilities */
267 static int hf_ulp_sessionCapabilities; /* SessionCapabilities */
268 static int hf_ulp_periodicTrigger; /* BOOLEAN */
269 static int hf_ulp_areaEventTrigger; /* BOOLEAN */
270 static int hf_ulp_geoAreaShapesSupported; /* GeoAreaShapesSupported */
271 static int hf_ulp_maxNumGeoAreaSupported; /* INTEGER_0_maxNumGeoArea */
272 static int hf_ulp_maxAreaIdListSupported; /* INTEGER_0_maxAreaIdList */
273 static int hf_ulp_maxAreaIdSupportedPerList; /* INTEGER_0_maxAreaId */
274 static int hf_ulp_ellipticalArea_01; /* BOOLEAN */
275 static int hf_ulp_polygonArea_01; /* BOOLEAN */
276 static int hf_ulp_maxNumberTotalSessions; /* INTEGER_1_128 */
277 static int hf_ulp_maxNumberPeriodicSessions; /* INTEGER_1_32 */
278 static int hf_ulp_maxNumberTriggeredSessions; /* INTEGER_1_32 */
279 static int hf_ulp_gsm; /* BOOLEAN */
280 static int hf_ulp_wcdma; /* BOOLEAN */
281 static int hf_ulp_lte; /* BOOLEAN */
282 static int hf_ulp_cdma; /* BOOLEAN */
283 static int hf_ulp_hprd; /* BOOLEAN */
284 static int hf_ulp_umb; /* BOOLEAN */
285 static int hf_ulp_wlan; /* BOOLEAN */
286 static int hf_ulp_wiMAX; /* BOOLEAN */
287 static int hf_ulp_nr; /* BOOLEAN */
288 static int hf_ulp_lpp; /* BOOLEAN */
289 static int hf_ulp_posProtocolVersionRRLP; /* PosProtocolVersion3GPP */
290 static int hf_ulp_posProtocolVersionRRC; /* PosProtocolVersion3GPP */
291 static int hf_ulp_posProtocolVersionTIA801; /* PosProtocolVersion3GPP2 */
292 static int hf_ulp_posProtocolVersionLPP; /* PosProtocolVersion3GPP */
293 static int hf_ulp_lppe; /* BOOLEAN */
294 static int hf_ulp_posProtocolVersionLPPe; /* PosProtocolVersionOMA */
295 static int hf_ulp_majorVersionField; /* INTEGER_0_255 */
296 static int hf_ulp_technicalVersionField; /* INTEGER_0_255 */
297 static int hf_ulp_editorialVersionField; /* INTEGER_0_255 */
298 static int hf_ulp_PosProtocolVersion3GPP2_item; /* Supported3GPP2PosProtocolVersion */
299 static int hf_ulp_revisionNumber; /* BIT_STRING_SIZE_6 */
300 static int hf_ulp_pointReleaseNumber; /* INTEGER_0_255 */
301 static int hf_ulp_internalEditLevel; /* INTEGER_0_255 */
302 static int hf_ulp_minorVersionField; /* INTEGER_0_255 */
303 static int hf_ulp_gANSSPositionMethods; /* GANSSPositionMethods */
304 static int hf_ulp_additionalPositioningMethods; /* AdditionalPositioningMethods */
305 static int hf_ulp_GANSSPositionMethods_item; /* GANSSPositionMethod */
306 static int hf_ulp_ganssSBASid; /* T_ganssSBASid */
307 static int hf_ulp_gANSSPositioningMethodTypes; /* GANSSPositioningMethodTypes */
308 static int hf_ulp_rtk; /* RTK */
309 static int hf_ulp_osr; /* BOOLEAN */
310 static int hf_ulp_setAssisted; /* BOOLEAN */
311 static int hf_ulp_setBased; /* BOOLEAN */
312 static int hf_ulp_autonomous; /* BOOLEAN */
313 static int hf_ulp_AdditionalPositioningMethods_item; /* AddPosSupport_Element */
314 static int hf_ulp_addPosID; /* T_addPosID */
315 static int hf_ulp_addPosMode; /* T_addPosMode */
316 static int hf_ulp_ganssRequestedCommonAssistanceDataList; /* GanssRequestedCommonAssistanceDataList */
317 static int hf_ulp_ganssRequestedGenericAssistanceDataList; /* GanssRequestedGenericAssistanceDataList */
318 static int hf_ulp_extendedEphemeris; /* ExtendedEphemeris */
319 static int hf_ulp_extendedEphemerisCheck; /* ExtendedEphCheck */
320 static int hf_ulp_ganssReferenceTime; /* BOOLEAN */
321 static int hf_ulp_ganssIonosphericModel; /* BOOLEAN */
322 static int hf_ulp_ganssAdditionalIonosphericModelForDataID00; /* BOOLEAN */
323 static int hf_ulp_ganssAdditionalIonosphericModelForDataID11; /* BOOLEAN */
324 static int hf_ulp_ganssEarthOrientationParameters; /* BOOLEAN */
325 static int hf_ulp_ganssAdditionalIonosphericModelForDataID01; /* BOOLEAN */
326 static int hf_ulp_GanssRequestedGenericAssistanceDataList_item; /* GanssReqGenericData */
327 static int hf_ulp_ganssId_01; /* T_ganssId */
328 static int hf_ulp_ganssSBASid_01; /* T_ganssSBASid_01 */
329 static int hf_ulp_ganssRealTimeIntegrity; /* BOOLEAN */
330 static int hf_ulp_ganssDifferentialCorrection; /* DGANSS_Sig_Id_Req */
331 static int hf_ulp_ganssAlmanac; /* BOOLEAN */
332 static int hf_ulp_ganssNavigationModelData; /* GanssNavigationModelData */
333 static int hf_ulp_ganssTimeModels; /* T_ganssTimeModels */
334 static int hf_ulp_ganssReferenceMeasurementInfo; /* BOOLEAN */
335 static int hf_ulp_ganssDataBits; /* GanssDataBits */
336 static int hf_ulp_ganssUTCModel; /* BOOLEAN */
337 static int hf_ulp_ganssAdditionalDataChoices; /* GanssAdditionalDataChoices */
338 static int hf_ulp_ganssAuxiliaryInformation; /* BOOLEAN */
339 static int hf_ulp_ganssExtendedEphemeris; /* ExtendedEphemeris */
340 static int hf_ulp_ganssExtendedEphemerisCheck; /* GanssExtendedEphCheck */
341 static int hf_ulp_bds_DifferentialCorrection; /* BDS_Sig_Id_Req */
342 static int hf_ulp_bds_GridModelReq; /* BOOLEAN */
343 static int hf_ulp_ganssWeek; /* T_ganssWeek */
344 static int hf_ulp_ganssToe; /* T_ganssToe */
345 static int hf_ulp_t_toeLimit; /* T_t_toeLimit */
346 static int hf_ulp_satellitesListRelatedDataList; /* SatellitesListRelatedDataList */
347 static int hf_ulp_SatellitesListRelatedDataList_item; /* SatellitesListRelatedData */
348 static int hf_ulp_iod; /* INTEGER_0_1023 */
349 static int hf_ulp_ganssTODmin; /* INTEGER_0_59 */
350 static int hf_ulp_reqDataBitAssistanceList; /* ReqDataBitAssistanceList */
351 static int hf_ulp_gnssSignals; /* GANSSSignals */
352 static int hf_ulp_ganssDataBitInterval; /* INTEGER_0_15 */
353 static int hf_ulp_ganssDataBitSatList; /* T_ganssDataBitSatList */
354 static int hf_ulp_ganssDataBitSatList_item; /* INTEGER_0_63 */
355 static int hf_ulp_orbitModelID; /* INTEGER_0_7 */
356 static int hf_ulp_clockModelID; /* INTEGER_0_7 */
357 static int hf_ulp_utcModelID; /* INTEGER_0_7 */
358 static int hf_ulp_almanacModelID; /* INTEGER_0_7 */
359 static int hf_ulp_validity; /* INTEGER_1_256 */
360 static int hf_ulp_beginTime; /* GPSTime */
361 static int hf_ulp_endTime; /* GPSTime */
362 static int hf_ulp_beginTime_01; /* GANSSextEphTime */
363 static int hf_ulp_endTime_01; /* GANSSextEphTime */
364 static int hf_ulp_gPSWeek; /* INTEGER_0_1023 */
365 static int hf_ulp_gPSTOWhour; /* INTEGER_0_167 */
366 static int hf_ulp_gANSSday; /* INTEGER_0_8191 */
367 static int hf_ulp_gANSSTODhour; /* INTEGER_0_23 */
368 static int hf_ulp_lPPPayload; /* T_lPPPayload */
369 static int hf_ulp_lPPPayload_item; /* T_lPPPayload_item */
370 static int hf_ulp_tia801Payload; /* T_tia801Payload */
371 static int hf_ulp_tia801Payload_item; /* OCTET_STRING_SIZE_1_60000 */
372 static int hf_ulp_maj; /* INTEGER_0_255 */
373 static int hf_ulp_min; /* INTEGER_0_255 */
374 static int hf_ulp_servind; /* INTEGER_0_255 */
375 static int hf_ulp_setSessionID; /* SetSessionID */
376 static int hf_ulp_slpSessionID; /* SlpSessionID */
377 static int hf_ulp_sessionId; /* INTEGER_0_65535 */
378 static int hf_ulp_setId; /* SETId */
379 static int hf_ulp_msisdn; /* T_msisdn */
380 static int hf_ulp_mdn; /* T_mdn */
381 static int hf_ulp_minsi; /* BIT_STRING_SIZE_34 */
382 static int hf_ulp_imsi; /* T_imsi */
383 static int hf_ulp_nai; /* IA5String_SIZE_1_1000 */
384 static int hf_ulp_iPAddress; /* IPAddress */
385 static int hf_ulp_ver2_imei; /* OCTET_STRING_SIZE_8 */
386 static int hf_ulp_sessionSlpID; /* OCTET_STRING_SIZE_4 */
387 static int hf_ulp_slpId; /* SLPAddress */
388 static int hf_ulp_ipv4Address; /* OCTET_STRING_SIZE_4 */
389 static int hf_ulp_ipv6Address; /* OCTET_STRING_SIZE_16 */
390 static int hf_ulp_fqdn; /* FQDN */
391 static int hf_ulp_cellInfo; /* CellInfo */
392 static int hf_ulp_status; /* Status */
393 static int hf_ulp_gsmCell; /* GsmCellInformation */
394 static int hf_ulp_wcdmaCell; /* WcdmaCellInformation */
395 static int hf_ulp_cdmaCell; /* CdmaCellInformation */
396 static int hf_ulp_ver2_CellInfo_extension; /* Ver2_CellInfo_extension */
397 static int hf_ulp_timestamp_01; /* UTCTime */
398 static int hf_ulp_positionEstimate; /* PositionEstimate */
399 static int hf_ulp_latitudeSign; /* T_latitudeSign */
400 static int hf_ulp_latitude; /* INTEGER_0_8388607 */
401 static int hf_ulp_longitude; /* INTEGER_M8388608_8388607 */
402 static int hf_ulp_uncertainty; /* T_uncertainty */
403 static int hf_ulp_uncertaintySemiMajor; /* INTEGER_0_127 */
404 static int hf_ulp_uncertaintySemiMinor; /* INTEGER_0_127 */
405 static int hf_ulp_orientationMajorAxis; /* INTEGER_0_180 */
406 static int hf_ulp_confidence; /* INTEGER_0_100 */
407 static int hf_ulp_altitudeInfo; /* AltitudeInfo */
408 static int hf_ulp_altitudeDirection; /* T_altitudeDirection */
409 static int hf_ulp_altitude; /* INTEGER_0_32767 */
410 static int hf_ulp_altUncertainty; /* INTEGER_0_127 */
411 static int hf_ulp_refNID_01; /* INTEGER_0_65535 */
412 static int hf_ulp_refSID_01; /* INTEGER_0_32767 */
413 static int hf_ulp_refBASELAT; /* INTEGER_0_4194303 */
414 static int hf_ulp_reBASELONG; /* INTEGER_0_8388607 */
415 static int hf_ulp_refREFPN; /* INTEGER_0_511 */
416 static int hf_ulp_refWeekNumber; /* INTEGER_0_65535 */
417 static int hf_ulp_refSeconds; /* INTEGER_0_4194303 */
418 static int hf_ulp_nmr; /* NMR */
419 static int hf_ulp_ta; /* INTEGER_0_255 */
420 static int hf_ulp_frequencyInfo; /* FrequencyInfo */
421 static int hf_ulp_primaryScramblingCode; /* INTEGER_0_511 */
422 static int hf_ulp_measuredResultsList; /* MeasuredResultsList */
423 static int hf_ulp_cellParametersId; /* INTEGER_0_127 */
424 static int hf_ulp_timingAdvance; /* TimingAdvance */
425 static int hf_ulp_ta_01; /* INTEGER_0_8191 */
426 static int hf_ulp_tAResolution; /* TAResolution */
427 static int hf_ulp_chipRate; /* ChipRate */
428 static int hf_ulp_modeSpecificFrequencyInfo; /* FrequencySpecificInfo */
429 static int hf_ulp_fdd_fr; /* FrequencyInfoFDD */
430 static int hf_ulp_tdd_fr; /* FrequencyInfoTDD */
431 static int hf_ulp_uarfcn_UL; /* UARFCN */
432 static int hf_ulp_uarfcn_DL; /* UARFCN */
433 static int hf_ulp_uarfcn_Nt; /* UARFCN */
434 static int hf_ulp_NMR_item; /* NMRelement */
435 static int hf_ulp_arfcn; /* INTEGER_0_1023 */
436 static int hf_ulp_bsic; /* INTEGER_0_63 */
437 static int hf_ulp_rxLev; /* INTEGER_0_63 */
438 static int hf_ulp_MeasuredResultsList_item; /* MeasuredResults */
439 static int hf_ulp_utra_CarrierRSSI; /* UTRA_CarrierRSSI */
440 static int hf_ulp_cellMeasuredResultsList; /* CellMeasuredResultsList */
441 static int hf_ulp_CellMeasuredResultsList_item; /* CellMeasuredResults */
442 static int hf_ulp_cellIdentity; /* INTEGER_0_268435455 */
443 static int hf_ulp_modeSpecificInfo; /* T_modeSpecificInfo */
444 static int hf_ulp_fdd; /* T_fdd */
445 static int hf_ulp_primaryCPICH_Info; /* PrimaryCPICH_Info */
446 static int hf_ulp_cpich_Ec_N0; /* CPICH_Ec_N0 */
447 static int hf_ulp_cpich_RSCP; /* CPICH_RSCP */
448 static int hf_ulp_pathloss; /* Pathloss */
449 static int hf_ulp_tdd; /* T_tdd */
450 static int hf_ulp_cellParametersID; /* CellParametersID */
451 static int hf_ulp_proposedTGSN; /* TGSN */
452 static int hf_ulp_primaryCCPCH_RSCP; /* PrimaryCCPCH_RSCP */
453 static int hf_ulp_timeslotISCP_List; /* TimeslotISCP_List */
454 static int hf_ulp_TimeslotISCP_List_item; /* TimeslotISCP */
455 static int hf_ulp_horacc; /* INTEGER_0_127 */
456 static int hf_ulp_veracc; /* INTEGER_0_127 */
457 static int hf_ulp_maxLocAge; /* INTEGER_0_65535 */
458 static int hf_ulp_delay; /* INTEGER_0_7 */
459 static int hf_ulp_ver2_responseTime; /* INTEGER_1_128 */
460 static int hf_ulp_horvel; /* Horvel */
461 static int hf_ulp_horandvervel; /* Horandvervel */
462 static int hf_ulp_horveluncert; /* Horveluncert */
463 static int hf_ulp_horandveruncert; /* Horandveruncert */
464 static int hf_ulp_bearing; /* T_bearing */
465 static int hf_ulp_horspeed; /* T_horspeed */
466 static int hf_ulp_verdirect; /* T_verdirect */
467 static int hf_ulp_bearing_01; /* T_bearing_01 */
468 static int hf_ulp_horspeed_01; /* T_horspeed_01 */
469 static int hf_ulp_verspeed; /* T_verspeed */
470 static int hf_ulp_bearing_02; /* T_bearing_02 */
471 static int hf_ulp_horspeed_02; /* T_horspeed_02 */
472 static int hf_ulp_uncertspeed; /* T_uncertspeed */
473 static int hf_ulp_verdirect_01; /* T_verdirect_01 */
474 static int hf_ulp_bearing_03; /* T_bearing_03 */
475 static int hf_ulp_horspeed_03; /* T_horspeed_03 */
476 static int hf_ulp_verspeed_01; /* T_verspeed_01 */
477 static int hf_ulp_horuncertspeed; /* T_horuncertspeed */
478 static int hf_ulp_veruncertspeed; /* T_veruncertspeed */
479 static int hf_ulp_MultipleLocationIds_item; /* LocationIdData */
480 static int hf_ulp_relativetimestamp; /* RelativeTime */
481 static int hf_ulp_servingFlag; /* BOOLEAN */
482 static int hf_ulp_supportedWLANInfo; /* SupportedWLANInfo */
483 static int hf_ulp_supportedWLANApsList; /* SupportedWLANApsList */
484 static int hf_ulp_supportedWCDMAInfo; /* SupportedWCDMAInfo */
485 static int hf_ulp_hrdp; /* BOOLEAN */
486 static int hf_ulp_wimax; /* BOOLEAN */
487 static int hf_ulp_historic; /* BOOLEAN */
488 static int hf_ulp_nonServing; /* BOOLEAN */
489 static int hf_ulp_uTRANGPSReferenceTime; /* BOOLEAN */
490 static int hf_ulp_uTRANGANSSReferenceTime; /* BOOLEAN */
491 static int hf_ulp_apTP; /* BOOLEAN */
492 static int hf_ulp_apAG; /* BOOLEAN */
493 static int hf_ulp_apSN; /* BOOLEAN */
494 static int hf_ulp_apDevType; /* BOOLEAN */
495 static int hf_ulp_apRSSI; /* BOOLEAN */
496 static int hf_ulp_apChanFreq; /* BOOLEAN */
497 static int hf_ulp_apRTD; /* BOOLEAN */
498 static int hf_ulp_setTP; /* BOOLEAN */
499 static int hf_ulp_setAG; /* BOOLEAN */
500 static int hf_ulp_setSN; /* BOOLEAN */
501 static int hf_ulp_setRSSI; /* BOOLEAN */
502 static int hf_ulp_apRepLoc; /* BOOLEAN */
503 static int hf_ulp_apRL; /* BOOLEAN */
504 static int hf_ulp_opClass; /* BOOLEAN */
505 static int hf_ulp_apSSID; /* BOOLEAN */
506 static int hf_ulp_apPHYType; /* BOOLEAN */
507 static int hf_ulp_setMACAddress; /* BOOLEAN */
508 static int hf_ulp_supportedWLANApDataList; /* SEQUENCE_SIZE_1_maxWLANApDataSize_OF_SupportedWLANApData */
509 static int hf_ulp_supportedWLANApDataList_item; /* SupportedWLANApData */
510 static int hf_ulp_supportedWLANapsChannel11a; /* SupportedWLANApsChannel11a */
511 static int hf_ulp_supportedWLANapsChannel11bg; /* SupportedWLANApsChannel11bg */
512 static int hf_ulp_ch34; /* BOOLEAN */
513 static int hf_ulp_ch36; /* BOOLEAN */
514 static int hf_ulp_ch38; /* BOOLEAN */
515 static int hf_ulp_ch40; /* BOOLEAN */
516 static int hf_ulp_ch42; /* BOOLEAN */
517 static int hf_ulp_ch44; /* BOOLEAN */
518 static int hf_ulp_ch46; /* BOOLEAN */
519 static int hf_ulp_ch48; /* BOOLEAN */
520 static int hf_ulp_ch52; /* BOOLEAN */
521 static int hf_ulp_ch56; /* BOOLEAN */
522 static int hf_ulp_ch60; /* BOOLEAN */
523 static int hf_ulp_ch64; /* BOOLEAN */
524 static int hf_ulp_ch149; /* BOOLEAN */
525 static int hf_ulp_ch153; /* BOOLEAN */
526 static int hf_ulp_ch157; /* BOOLEAN */
527 static int hf_ulp_ch161; /* BOOLEAN */
528 static int hf_ulp_ch1; /* BOOLEAN */
529 static int hf_ulp_ch2; /* BOOLEAN */
530 static int hf_ulp_ch3; /* BOOLEAN */
531 static int hf_ulp_ch4; /* BOOLEAN */
532 static int hf_ulp_ch5; /* BOOLEAN */
533 static int hf_ulp_ch6; /* BOOLEAN */
534 static int hf_ulp_ch7; /* BOOLEAN */
535 static int hf_ulp_ch8; /* BOOLEAN */
536 static int hf_ulp_ch9; /* BOOLEAN */
537 static int hf_ulp_ch10; /* BOOLEAN */
538 static int hf_ulp_ch11; /* BOOLEAN */
539 static int hf_ulp_ch12; /* BOOLEAN */
540 static int hf_ulp_ch13; /* BOOLEAN */
541 static int hf_ulp_ch14; /* BOOLEAN */
542 static int hf_ulp_apMACAddress_01; /* T_apMACAddress_01 */
543 static int hf_ulp_apDevType_01; /* T_apDevType */
544 static int hf_ulp_mrl; /* BOOLEAN */
545 static int hf_ulp_hrpdCell; /* HrpdCellInformation */
546 static int hf_ulp_umbCell; /* UmbCellInformation */
547 static int hf_ulp_lteCell; /* LteCellInformation */
548 static int hf_ulp_wlanAP; /* WlanAPInformation */
549 static int hf_ulp_wimaxBS; /* WimaxBSInformation */
550 static int hf_ulp_nrCell; /* NRCellInformation */
551 static int hf_ulp_cellGlobalIdEUTRA; /* CellGlobalIdEUTRA */
552 static int hf_ulp_physCellId; /* PhysCellId */
553 static int hf_ulp_trackingAreaCode; /* TrackingAreaCode */
554 static int hf_ulp_rsrpResult; /* RSRP_Range */
555 static int hf_ulp_rsrqResult; /* RSRQ_Range */
556 static int hf_ulp_ta_02; /* INTEGER_0_1282 */
557 static int hf_ulp_measResultListEUTRA; /* MeasResultListEUTRA */
558 static int hf_ulp_earfcn; /* INTEGER_0_65535 */
559 static int hf_ulp_earfcn_ext; /* INTEGER_65536_262143 */
560 static int hf_ulp_rsrpResult_ext; /* RSRP_Range_Ext */
561 static int hf_ulp_rsrqResult_ext; /* RSRQ_Range_Ext */
562 static int hf_ulp_rs_sinrResult; /* RS_SINR_Range */
563 static int hf_ulp_servingInformation5G; /* ServingInformation5G */
564 static int hf_ulp_MeasResultListEUTRA_item; /* MeasResultEUTRA */
565 static int hf_ulp_cgi_Info; /* T_cgi_Info */
566 static int hf_ulp_cellGlobalId; /* CellGlobalIdEUTRA */
567 static int hf_ulp_measResult; /* T_measResult */
568 static int hf_ulp_neighbourInformation5G; /* NeighbourInformation5G */
569 static int hf_ulp_plmn_Identity; /* PLMN_Identity */
570 static int hf_ulp_cellIdentity_01; /* CellIdentity */
571 static int hf_ulp_mcc; /* MCC */
572 static int hf_ulp_mnc; /* MNC */
573 static int hf_ulp_MCC_item; /* MCC_MNC_Digit */
574 static int hf_ulp_MNC_item; /* MCC_MNC_Digit */
575 static int hf_ulp_trackingAreaCode_01; /* TrackingAreaCodeNR */
576 static int hf_ulp_apMACAddress_02; /* T_apMACAddress_02 */
577 static int hf_ulp_apTransmitPower; /* INTEGER_M127_128 */
578 static int hf_ulp_apAntennaGain; /* INTEGER_M127_128 */
579 static int hf_ulp_apSignaltoNoise; /* INTEGER_M127_128 */
580 static int hf_ulp_apDeviceType; /* T_apDeviceType */
581 static int hf_ulp_apSignalStrength; /* INTEGER_M127_128 */
582 static int hf_ulp_apChannelFrequency; /* INTEGER_0_256 */
583 static int hf_ulp_apRoundTripDelay; /* RTD */
584 static int hf_ulp_setTransmitPower; /* INTEGER_M127_128 */
585 static int hf_ulp_setAntennaGain; /* INTEGER_M127_128 */
586 static int hf_ulp_setSignaltoNoise; /* INTEGER_M127_128 */
587 static int hf_ulp_setSignalStrength; /* INTEGER_M127_128 */
588 static int hf_ulp_apReportedLocation; /* ReportedLocation */
589 static int hf_ulp_apRepLocation; /* RepLocation */
590 static int hf_ulp_apSignalStrengthDelta; /* INTEGER_0_1 */
591 static int hf_ulp_apSignaltoNoiseDelta; /* INTEGER_0_1 */
592 static int hf_ulp_setSignalStrengthDelta; /* INTEGER_0_1 */
593 static int hf_ulp_setSignaltoNoiseDelta; /* INTEGER_0_1 */
594 static int hf_ulp_operatingClass; /* INTEGER_0_255 */
595 static int hf_ulp_apSSID_01; /* T_apSSID */
596 static int hf_ulp_apPHYType_01; /* T_apPHYType */
597 static int hf_ulp_setMACAddress_01; /* T_setMACAddress */
598 static int hf_ulp_rTDValue; /* INTEGER_0_16777216 */
599 static int hf_ulp_rTDUnits; /* RTDUnits */
600 static int hf_ulp_rTDAccuracy; /* INTEGER_0_255 */
601 static int hf_ulp_locationEncodingDescriptor; /* LocationEncodingDescriptor */
602 static int hf_ulp_locationData; /* LocationData */
603 static int hf_ulp_locationAccuracy; /* INTEGER_0_4294967295 */
604 static int hf_ulp_locationValue; /* OCTET_STRING_SIZE_1_128 */
605 static int hf_ulp_lciLocData; /* LciLocData */
606 static int hf_ulp_locationDataLCI; /* LocationDataLCI */
607 static int hf_ulp_latitudeResolution; /* BIT_STRING_SIZE_6 */
608 static int hf_ulp_latitude_01; /* BIT_STRING_SIZE_34 */
609 static int hf_ulp_longitudeResolution; /* BIT_STRING_SIZE_6 */
610 static int hf_ulp_longitude_01; /* BIT_STRING_SIZE_34 */
611 static int hf_ulp_altitudeType; /* BIT_STRING_SIZE_4 */
612 static int hf_ulp_altitudeResolution; /* BIT_STRING_SIZE_6 */
613 static int hf_ulp_altitude_01; /* BIT_STRING_SIZE_30 */
614 static int hf_ulp_datum; /* BIT_STRING_SIZE_8 */
615 static int hf_ulp_wimaxBsID; /* WimaxBsID */
616 static int hf_ulp_wimaxRTD; /* WimaxRTD */
617 static int hf_ulp_wimaxNMRList; /* WimaxNMRList */
618 static int hf_ulp_rtd; /* INTEGER_0_65535 */
619 static int hf_ulp_rTDstd; /* INTEGER_0_1023 */
620 static int hf_ulp_WimaxNMRList_item; /* WimaxNMR */
621 static int hf_ulp_relDelay; /* INTEGER_M32768_32767 */
622 static int hf_ulp_relDelaystd; /* INTEGER_0_1023 */
623 static int hf_ulp_rssi; /* INTEGER_0_255 */
624 static int hf_ulp_rSSIstd; /* INTEGER_0_63 */
625 static int hf_ulp_bSTxPower; /* INTEGER_0_255 */
626 static int hf_ulp_cinr; /* INTEGER_0_255 */
627 static int hf_ulp_cINRstd; /* INTEGER_0_63 */
628 static int hf_ulp_bSLocation; /* ReportedLocation */
629 static int hf_ulp_servingCellInformation; /* ServingCellInformationNR */
630 static int hf_ulp_measuredResultsListNR; /* MeasResultListNR */
631 static int hf_ulp_ServingCellInformationNR_item; /* ServCellNR */
632 static int hf_ulp_physCellId_01; /* PhysCellIdNR */
633 static int hf_ulp_arfcn_NR; /* ARFCN_NR */
634 static int hf_ulp_cellGlobalId_01; /* CellGlobalIdNR */
635 static int hf_ulp_ssb_Measurements; /* NR_Measurements */
636 static int hf_ulp_csi_rs_Measurements; /* NR_Measurements */
637 static int hf_ulp_ta_03; /* INTEGER_0_3846 */
638 static int hf_ulp_MeasResultListNR_item; /* MeasResultNR */
639 static int hf_ulp_cellIdentityNR; /* CellIdentityNR */
640 static int hf_ulp_rsrp_Range; /* INTEGER_0_127 */
641 static int hf_ulp_rsrq_Range; /* INTEGER_0_127 */
642 static int hf_ulp_sinr_Range; /* INTEGER_0_127 */
643 static int hf_ulp_utran_GPSReferenceTime; /* UTRAN_GPSReferenceTime */
644 static int hf_ulp_gpsReferenceTimeUncertainty; /* INTEGER_0_127 */
645 static int hf_ulp_utranGPSDriftRate; /* UTRANGPSDriftRate */
646 static int hf_ulp_utran_GPSTimingOfCell; /* T_utran_GPSTimingOfCell */
647 static int hf_ulp_ms_part; /* INTEGER_0_1023 */
648 static int hf_ulp_ls_part; /* INTEGER_0_4294967295 */
649 static int hf_ulp_modeSpecificInfo_01; /* T_modeSpecificInfo_01 */
650 static int hf_ulp_fdd_01; /* T_fdd_01 */
651 static int hf_ulp_referenceIdentity; /* PrimaryCPICH_Info */
652 static int hf_ulp_tdd_01; /* T_tdd_01 */
653 static int hf_ulp_referenceIdentity_01; /* CellParametersID */
654 static int hf_ulp_sfn; /* INTEGER_0_4095 */
655 static int hf_ulp_set_GPSTimingOfCell; /* T_set_GPSTimingOfCell */
656 static int hf_ulp_ms_part_01; /* INTEGER_0_16383 */
657 static int hf_ulp_modeSpecificInfo_02; /* T_modeSpecificInfo_02 */
658 static int hf_ulp_fdd_02; /* T_fdd_02 */
659 static int hf_ulp_tdd_02; /* T_tdd_02 */
660 static int hf_ulp_ganssDay; /* INTEGER_0_8191 */
661 static int hf_ulp_ganssTimeID; /* INTEGER_0_15 */
662 static int hf_ulp_utran_GANSSReferenceTime; /* UTRAN_GANSSReferenceTime */
663 static int hf_ulp_utranGANSSDriftRate; /* UTRANGANSSDriftRate */
664 static int hf_ulp_ganssTOD; /* INTEGER_0_86399 */
665 static int hf_ulp_utran_GANSSTimingOfCell; /* INTEGER_0_3999999 */
666 static int hf_ulp_modeSpecificInfo_03; /* T_modeSpecificInfo_03 */
667 static int hf_ulp_fdd_03; /* T_fdd_03 */
668 static int hf_ulp_tdd_03; /* T_tdd_03 */
669 static int hf_ulp_ganss_TODUncertainty; /* INTEGER_0_127 */
670 static int hf_ulp_set_GANSSReferenceTime; /* SET_GANSSReferenceTime */
671 static int hf_ulp_set_GANSSTimingOfCell; /* T_set_GANSSTimingOfCell */
672 static int hf_ulp_ms_part_02; /* INTEGER_0_80 */
673 static int hf_ulp_modeSpecificInfo_04; /* T_modeSpecificInfo_04 */
674 static int hf_ulp_fdd_04; /* T_fdd_04 */
675 static int hf_ulp_tdd_04; /* T_tdd_04 */
676 static int hf_ulp_gps; /* BOOLEAN */
677 static int hf_ulp_galileo; /* BOOLEAN */
678 static int hf_ulp_sbas; /* BOOLEAN */
679 static int hf_ulp_modernized_gps; /* BOOLEAN */
680 static int hf_ulp_qzss; /* BOOLEAN */
681 static int hf_ulp_glonass; /* BOOLEAN */
682 static int hf_ulp_bds; /* BOOLEAN */
683 static int hf_ulp_rtk_osr; /* BOOLEAN */
684 static int hf_ulp_rand; /* BIT_STRING_SIZE_128 */
685 static int hf_ulp_slpFQDN; /* FQDN */
686 static int hf_ulp_ThirdParty_item; /* ThirdPartyID */
687 static int hf_ulp_logicalName; /* IA5String_SIZE_1_1000 */
688 static int hf_ulp_msisdn_01; /* T_msisdn_01 */
689 static int hf_ulp_emailaddr; /* IA5String_SIZE_1_1000 */
690 static int hf_ulp_sip_uri; /* T_sip_uri */
691 static int hf_ulp_ims_public_identity; /* T_ims_public_identity */
692 static int hf_ulp_min_01; /* BIT_STRING_SIZE_34 */
693 static int hf_ulp_mdn_01; /* T_mdn_01 */
694 static int hf_ulp_uri; /* T_uri */
695 static int hf_ulp_appProvider; /* IA5String_SIZE_1_24 */
696 static int hf_ulp_appName; /* IA5String_SIZE_1_32 */
697 static int hf_ulp_appVersion; /* IA5String_SIZE_1_8 */
698 static int hf_ulp_minInt; /* INTEGER_1_3600 */
699 static int hf_ulp_maxInt; /* INTEGER_1_1440 */
700 static int hf_ulp_repMode_01; /* RepMode */
701 static int hf_ulp_batchRepCap; /* BatchRepCap */
702 static int hf_ulp_realtime; /* BOOLEAN */
703 static int hf_ulp_quasirealtime; /* BOOLEAN */
704 static int hf_ulp_batch; /* BOOLEAN */
705 static int hf_ulp_report_position; /* BOOLEAN */
706 static int hf_ulp_report_measurements; /* BOOLEAN */
707 static int hf_ulp_max_num_positions; /* INTEGER_1_1024 */
708 static int hf_ulp_max_num_measurements; /* INTEGER_1_1024 */
709 static int hf_ulp_latitudeSign_01; /* T_latitudeSign_01 */
710 static int hf_ulp_coordinateLatitude; /* INTEGER_0_8388607 */
711 static int hf_ulp_coordinateLongitude; /* INTEGER_M8388608_8388607 */
712 static int hf_ulp_coordinate; /* Coordinate */
713 static int hf_ulp_radius; /* INTEGER_1_1000000 */
714 static int hf_ulp_radius_min; /* INTEGER_1_1000000 */
715 static int hf_ulp_radius_max; /* INTEGER_1_1500000 */
716 static int hf_ulp_semiMajor; /* INTEGER_1_1000000 */
717 static int hf_ulp_semiMajor_min; /* INTEGER_1_1000000 */
718 static int hf_ulp_semiMajor_max; /* INTEGER_1_1500000 */
719 static int hf_ulp_semiMinor; /* INTEGER_1_1000000 */
720 static int hf_ulp_semiMinor_min; /* INTEGER_1_1000000 */
721 static int hf_ulp_semiMinor_max; /* INTEGER_1_1500000 */
722 static int hf_ulp_angle; /* INTEGER_0_179 */
723 static int hf_ulp_polygonDescription; /* PolygonDescription */
724 static int hf_ulp_polygonHysteresis; /* INTEGER_1_100000 */
725 static int hf_ulp_PolygonDescription_item; /* Coordinate */
726 static int hf_ulp_highAccuracyPositionEstimate; /* HighAccuracyPositionEstimate */
727 static int hf_ulp_degreesLatitude; /* INTEGER_M2147483648_2147483647 */
728 static int hf_ulp_degreesLongitude; /* INTEGER_M2147483648_2147483647 */
729 static int hf_ulp_uncertaintySemiMajor_01; /* INTEGER_0_255 */
730 static int hf_ulp_uncertaintySemiMinor_01; /* INTEGER_0_255 */
731 static int hf_ulp_orientationMajorAxis_01; /* INTEGER_0_179 */
732 static int hf_ulp_horizontalConfidence; /* INTEGER_0_100 */
733 static int hf_ulp_highAccuracyAltitudeInfo; /* HighAccuracyAltitudeInfo */
734 static int hf_ulp_altitude_02; /* INTEGER_64000_1280000 */
735 static int hf_ulp_uncertaintyAltitude; /* INTEGER_0_255 */
736 static int hf_ulp_verticalConfidence; /* INTEGER_0_100 */
737 /* named bits */
738 static int hf_ulp_T_addPosMode_standalone;
739 static int hf_ulp_T_addPosMode_setBased;
740 static int hf_ulp_T_addPosMode_setAssisted;
741 static int hf_ulp_GANSSSignals_signal1;
742 static int hf_ulp_GANSSSignals_signal2;
743 static int hf_ulp_GANSSSignals_signal3;
744 static int hf_ulp_GANSSSignals_signal4;
745 static int hf_ulp_GANSSSignals_signal5;
746 static int hf_ulp_GANSSSignals_signal6;
747 static int hf_ulp_GANSSSignals_signal7;
748 static int hf_ulp_GANSSSignals_signal8;
749 static int hf_ulp_mobile_directory_number;
750 static int hf_ulp_ganssTimeModels_bit0;
751 static int hf_ulp_ganssTimeModels_bit1;
752 static int hf_ulp_ganssTimeModels_bit2;
753 static int hf_ulp_ganssTimeModels_bit3;
754 static int hf_ulp_ganssTimeModels_bit4;
755 static int hf_ulp_ganssTimeModels_spare;
757 /* Initialize the subtree pointers */
758 static int ett_ulp;
759 static int ett_ulp_setid;
760 static int ett_ulp_thirdPartyId;
761 static int ett_ulp_ganssTimeModels;
762 static int ett_ulp_ULP_PDU;
763 static int ett_ulp_UlpMessage;
764 static int ett_ulp_SUPLINIT;
765 static int ett_ulp_Notification;
766 static int ett_ulp_SUPLSTART;
767 static int ett_ulp_SETCapabilities;
768 static int ett_ulp_PosTechnology;
769 static int ett_ulp_PosProtocol;
770 static int ett_ulp_SUPLRESPONSE;
771 static int ett_ulp_SETAuthKey;
772 static int ett_ulp_SUPLPOSINIT;
773 static int ett_ulp_RequestedAssistData;
774 static int ett_ulp_NavigationModel;
775 static int ett_ulp_SatelliteInfo;
776 static int ett_ulp_SatelliteInfoElement;
777 static int ett_ulp_SUPLPOS;
778 static int ett_ulp_PosPayLoad;
779 static int ett_ulp_SUPLEND;
780 static int ett_ulp_SUPLAUTHREQ;
781 static int ett_ulp_SUPLAUTHRESP;
782 static int ett_ulp_Ver2_SUPLNOTIFY;
783 static int ett_ulp_Ver2_SUPLNOTIFYRESPONSE;
784 static int ett_ulp_Ver2_SUPLSETINIT;
785 static int ett_ulp_Ver2_SUPLTRIGGEREDSTART;
786 static int ett_ulp_TriggerParams;
787 static int ett_ulp_PeriodicParams;
788 static int ett_ulp_AreaEventParams;
789 static int ett_ulp_SEQUENCE_SIZE_1_maxAreaIdList_OF_AreaIdList;
790 static int ett_ulp_RepeatedReportingParams;
791 static int ett_ulp_GeographicTargetAreaList;
792 static int ett_ulp_GeographicTargetArea;
793 static int ett_ulp_AreaIdList;
794 static int ett_ulp_AreaIdSet;
795 static int ett_ulp_AreaId;
796 static int ett_ulp_GSMAreaId;
797 static int ett_ulp_WCDMAAreaId;
798 static int ett_ulp_CDMAAreaId;
799 static int ett_ulp_HRPDAreaId;
800 static int ett_ulp_UMBAreaId;
801 static int ett_ulp_LTEAreaId;
802 static int ett_ulp_WLANAreaId;
803 static int ett_ulp_WimaxAreaId;
804 static int ett_ulp_NRAreaId;
805 static int ett_ulp_GeoAreaMappingList;
806 static int ett_ulp_Ver2_SUPLTRIGGEREDRESPONSE;
807 static int ett_ulp_ReportingMode;
808 static int ett_ulp_BatchRepConditions;
809 static int ett_ulp_BatchRepType;
810 static int ett_ulp_Ver2_SUPLREPORT;
811 static int ett_ulp_SessionList;
812 static int ett_ulp_SessionInformation;
813 static int ett_ulp_ReportDataList;
814 static int ett_ulp_ReportData;
815 static int ett_ulp_PositionData;
816 static int ett_ulp_GANSSsignalsInfo;
817 static int ett_ulp_GANSSSignalsDescription;
818 static int ett_ulp_TimeStamp;
819 static int ett_ulp_Ver2_SUPLTRIGGEREDSTOP;
820 static int ett_ulp_Ver2_SUPL_INIT_extension;
821 static int ett_ulp_HistoricReporting;
822 static int ett_ulp_ReportingCriteria;
823 static int ett_ulp_TimeWindow;
824 static int ett_ulp_ProtectionLevel;
825 static int ett_ulp_BasicProtectionParams;
826 static int ett_ulp_Ver2_SUPL_START_extension;
827 static int ett_ulp_Ver2_SUPL_RESPONSE_extension;
828 static int ett_ulp_Ver2_SUPL_POS_INIT_extension;
829 static int ett_ulp_Ver2_SUPL_POS_extension;
830 static int ett_ulp_Ver2_SUPL_END_extension;
831 static int ett_ulp_Ver2_Notification_extension;
832 static int ett_ulp_Ver2_SETCapabilities_extension;
833 static int ett_ulp_ServiceCapabilities;
834 static int ett_ulp_ServicesSupported;
835 static int ett_ulp_EventTriggerCapabilities;
836 static int ett_ulp_GeoAreaShapesSupported;
837 static int ett_ulp_SessionCapabilities;
838 static int ett_ulp_SupportedBearers;
839 static int ett_ulp_Ver2_PosProtocol_extension;
840 static int ett_ulp_PosProtocolVersion3GPP;
841 static int ett_ulp_PosProtocolVersion3GPP2;
842 static int ett_ulp_Supported3GPP2PosProtocolVersion;
843 static int ett_ulp_PosProtocolVersionOMA;
844 static int ett_ulp_Ver2_PosTechnology_extension;
845 static int ett_ulp_GANSSPositionMethods;
846 static int ett_ulp_GANSSPositionMethod;
847 static int ett_ulp_RTK;
848 static int ett_ulp_GANSSPositioningMethodTypes;
849 static int ett_ulp_AdditionalPositioningMethods;
850 static int ett_ulp_AddPosSupport_Element;
851 static int ett_ulp_T_addPosMode;
852 static int ett_ulp_Ver2_RequestedAssistData_extension;
853 static int ett_ulp_GanssRequestedCommonAssistanceDataList;
854 static int ett_ulp_GanssRequestedGenericAssistanceDataList;
855 static int ett_ulp_GanssReqGenericData;
856 static int ett_ulp_GanssNavigationModelData;
857 static int ett_ulp_SatellitesListRelatedDataList;
858 static int ett_ulp_SatellitesListRelatedData;
859 static int ett_ulp_GanssDataBits;
860 static int ett_ulp_ReqDataBitAssistanceList;
861 static int ett_ulp_T_ganssDataBitSatList;
862 static int ett_ulp_GanssAdditionalDataChoices;
863 static int ett_ulp_ExtendedEphemeris;
864 static int ett_ulp_ExtendedEphCheck;
865 static int ett_ulp_GanssExtendedEphCheck;
866 static int ett_ulp_GPSTime;
867 static int ett_ulp_GANSSextEphTime;
868 static int ett_ulp_Ver2_PosPayLoad_extension;
869 static int ett_ulp_T_lPPPayload;
870 static int ett_ulp_T_tia801Payload;
871 static int ett_ulp_Version;
872 static int ett_ulp_SessionID;
873 static int ett_ulp_SetSessionID;
874 static int ett_ulp_SETId;
875 static int ett_ulp_SlpSessionID;
876 static int ett_ulp_IPAddress;
877 static int ett_ulp_SLPAddress;
878 static int ett_ulp_LocationId;
879 static int ett_ulp_CellInfo;
880 static int ett_ulp_Position;
881 static int ett_ulp_PositionEstimate;
882 static int ett_ulp_T_uncertainty;
883 static int ett_ulp_AltitudeInfo;
884 static int ett_ulp_CdmaCellInformation;
885 static int ett_ulp_GsmCellInformation;
886 static int ett_ulp_WcdmaCellInformation;
887 static int ett_ulp_TimingAdvance;
888 static int ett_ulp_FrequencyInfo;
889 static int ett_ulp_FrequencySpecificInfo;
890 static int ett_ulp_FrequencyInfoFDD;
891 static int ett_ulp_FrequencyInfoTDD;
892 static int ett_ulp_NMR;
893 static int ett_ulp_NMRelement;
894 static int ett_ulp_MeasuredResultsList;
895 static int ett_ulp_MeasuredResults;
896 static int ett_ulp_CellMeasuredResultsList;
897 static int ett_ulp_CellMeasuredResults;
898 static int ett_ulp_T_modeSpecificInfo;
899 static int ett_ulp_T_fdd;
900 static int ett_ulp_T_tdd;
901 static int ett_ulp_TimeslotISCP_List;
902 static int ett_ulp_PrimaryCPICH_Info;
903 static int ett_ulp_QoP;
904 static int ett_ulp_Velocity;
905 static int ett_ulp_Horvel;
906 static int ett_ulp_Horandvervel;
907 static int ett_ulp_Horveluncert;
908 static int ett_ulp_Horandveruncert;
909 static int ett_ulp_MultipleLocationIds;
910 static int ett_ulp_LocationIdData;
911 static int ett_ulp_SupportedNetworkInformation;
912 static int ett_ulp_SupportedWLANInfo;
913 static int ett_ulp_SupportedWLANApsList;
914 static int ett_ulp_SEQUENCE_SIZE_1_maxWLANApDataSize_OF_SupportedWLANApData;
915 static int ett_ulp_SupportedWLANApsChannel11a;
916 static int ett_ulp_SupportedWLANApsChannel11bg;
917 static int ett_ulp_SupportedWLANApData;
918 static int ett_ulp_SupportedWCDMAInfo;
919 static int ett_ulp_Ver2_CellInfo_extension;
920 static int ett_ulp_HrpdCellInformation;
921 static int ett_ulp_UmbCellInformation;
922 static int ett_ulp_LteCellInformation;
923 static int ett_ulp_MeasResultListEUTRA;
924 static int ett_ulp_MeasResultEUTRA;
925 static int ett_ulp_T_cgi_Info;
926 static int ett_ulp_T_measResult;
927 static int ett_ulp_CellGlobalIdEUTRA;
928 static int ett_ulp_PLMN_Identity;
929 static int ett_ulp_MCC;
930 static int ett_ulp_MNC;
931 static int ett_ulp_ServingInformation5G;
932 static int ett_ulp_NeighbourInformation5G;
933 static int ett_ulp_WlanAPInformation;
934 static int ett_ulp_RTD;
935 static int ett_ulp_ReportedLocation;
936 static int ett_ulp_LocationData;
937 static int ett_ulp_RepLocation;
938 static int ett_ulp_LciLocData;
939 static int ett_ulp_LocationDataLCI;
940 static int ett_ulp_WimaxBSInformation;
941 static int ett_ulp_WimaxBsID;
942 static int ett_ulp_WimaxRTD;
943 static int ett_ulp_WimaxNMRList;
944 static int ett_ulp_WimaxNMR;
945 static int ett_ulp_NRCellInformation;
946 static int ett_ulp_ServingCellInformationNR;
947 static int ett_ulp_ServCellNR;
948 static int ett_ulp_MeasResultListNR;
949 static int ett_ulp_MeasResultNR;
950 static int ett_ulp_CellGlobalIdNR;
951 static int ett_ulp_NR_Measurements;
952 static int ett_ulp_UTRAN_GPSReferenceTimeAssistance;
953 static int ett_ulp_UTRAN_GPSReferenceTime;
954 static int ett_ulp_T_utran_GPSTimingOfCell;
955 static int ett_ulp_T_modeSpecificInfo_01;
956 static int ett_ulp_T_fdd_01;
957 static int ett_ulp_T_tdd_01;
958 static int ett_ulp_UTRAN_GPSReferenceTimeResult;
959 static int ett_ulp_T_set_GPSTimingOfCell;
960 static int ett_ulp_T_modeSpecificInfo_02;
961 static int ett_ulp_T_fdd_02;
962 static int ett_ulp_T_tdd_02;
963 static int ett_ulp_UTRAN_GANSSReferenceTimeAssistance;
964 static int ett_ulp_UTRAN_GANSSReferenceTime;
965 static int ett_ulp_T_modeSpecificInfo_03;
966 static int ett_ulp_T_fdd_03;
967 static int ett_ulp_T_tdd_03;
968 static int ett_ulp_UTRAN_GANSSReferenceTimeResult;
969 static int ett_ulp_SET_GANSSReferenceTime;
970 static int ett_ulp_T_set_GANSSTimingOfCell;
971 static int ett_ulp_T_modeSpecificInfo_04;
972 static int ett_ulp_T_fdd_04;
973 static int ett_ulp_T_tdd_04;
974 static int ett_ulp_GNSSPosTechnology;
975 static int ett_ulp_GANSSSignals;
976 static int ett_ulp_SPCTID;
977 static int ett_ulp_ThirdParty;
978 static int ett_ulp_ThirdPartyID;
979 static int ett_ulp_ApplicationID;
980 static int ett_ulp_ReportingCap;
981 static int ett_ulp_RepMode;
982 static int ett_ulp_BatchRepCap;
983 static int ett_ulp_Coordinate;
984 static int ett_ulp_CircularArea;
985 static int ett_ulp_EllipticalArea;
986 static int ett_ulp_PolygonArea;
987 static int ett_ulp_PolygonDescription;
988 static int ett_ulp_Ver2_HighAccuracyPosition;
989 static int ett_ulp_HighAccuracyPositionEstimate;
990 static int ett_ulp_HighAccuracyAltitudeInfo;
992 static dissector_handle_t ulp_tcp_handle;
993 static dissector_handle_t ulp_pdu_handle;
995 static const value_string ulp_ganss_id_vals[] = {
996 { 0, "Galileo"},
997 { 1, "SBAS"},
998 { 2, "Modernized GPS"},
999 { 3, "QZSS"},
1000 { 4, "GLONASS"},
1001 { 5, "BDS"},
1002 { 0, NULL},
1005 static const value_string ulp_ganss_sbas_id_vals[] = {
1006 { 0, "WAAS"},
1007 { 1, "EGNOS"},
1008 { 2, "MSAS"},
1009 { 3, "GAGAN"},
1010 { 0, NULL},
1013 static void
1014 ulp_ganssDataBitInterval_fmt(char *s, uint32_t v)
1016 if (v == 15) {
1017 snprintf(s, ITEM_LABEL_LENGTH, "Time interval is not specified (15)");
1018 } else {
1019 double interval = (0.1*pow(2, (double)v));
1021 snprintf(s, ITEM_LABEL_LENGTH, "%gs (%u)", interval, v);
1025 static void
1026 ulp_ExtendedEphemeris_validity_fmt(char *s, uint32_t v)
1028 snprintf(s, ITEM_LABEL_LENGTH, "%uh (%u)", 4*v, v);
1031 static void
1032 ulp_PositionEstimate_latitude_fmt(char *s, uint32_t v)
1034 double latitude = ((double)v*90)/pow(2,23);
1036 snprintf(s, ITEM_LABEL_LENGTH, "%g degrees (%u)", latitude, v);
1039 static void
1040 ulp_PositionEstimate_longitude_fmt(char *s, uint32_t v)
1042 double longitude = ((double)(int32_t)v*360)/pow(2,24);
1044 snprintf(s, ITEM_LABEL_LENGTH, "%g degrees (%u)", longitude, v);
1047 static void
1048 ulp_NMRelement_rxLev_fmt(char *s, uint32_t v)
1050 if (v == 0) {
1051 snprintf(s, ITEM_LABEL_LENGTH, "RxLev < -110dBm (0)");
1052 } else if (v == 63) {
1053 snprintf(s, ITEM_LABEL_LENGTH, "RxLev >= -48dBm (63)");
1054 } else {
1055 snprintf(s, ITEM_LABEL_LENGTH, "%ddBm <= RxLev < %ddBm (%u)", -111+v, -110+v, v);
1059 static void
1060 ulp_UTRA_CarrierRSSI_fmt(char *s, uint32_t v)
1062 if (v == 0) {
1063 snprintf(s, ITEM_LABEL_LENGTH, "RSSI < -100dBm (0)");
1064 } else if (v == 76) {
1065 snprintf(s, ITEM_LABEL_LENGTH, "RSSI >= -25dBm (76)");
1066 } else if (v > 76) {
1067 snprintf(s, ITEM_LABEL_LENGTH, "Spare (%u)", v);
1068 } else {
1069 snprintf(s, ITEM_LABEL_LENGTH, "%ddBm <= RSSI < %ddBm (%u)", -101+v, -100+v, v);
1073 static void
1074 ulp_PrimaryCCPCH_RSCP_fmt(char *s, uint32_t v)
1076 if (v == 0) {
1077 snprintf(s, ITEM_LABEL_LENGTH, "RSCP < -115dBm (0)");
1078 } else if (v == 91) {
1079 snprintf(s, ITEM_LABEL_LENGTH, "RSCP >= -25dBm (91)");
1080 } else if (v > 91) {
1081 snprintf(s, ITEM_LABEL_LENGTH, "Spare (%u)", v);
1082 } else {
1083 snprintf(s, ITEM_LABEL_LENGTH, "%ddBm <= RSCP < %ddBm (%u)", -116+v, -115+v, v);
1087 static void
1088 ulp_CPICH_Ec_N0_fmt(char *s, uint32_t v)
1090 if (v == 0) {
1091 snprintf(s, ITEM_LABEL_LENGTH, "CPICH Ec/N0 < -24dB (0)");
1092 } else if (v == 49) {
1093 snprintf(s, ITEM_LABEL_LENGTH, "CPICH Ec/N0 >= 0dB (49)");
1094 } else if (v > 49) {
1095 snprintf(s, ITEM_LABEL_LENGTH, "Spare (%u)", v);
1096 } else {
1097 snprintf(s, ITEM_LABEL_LENGTH, "%.1fdB <= CPICH Ec/N0 < %.1fdB (%u)", -24.5+((float)v/2), -24+((float)v/2), v);
1101 static void
1102 ulp_CPICH_RSCP_fmt(char *s, uint32_t v)
1104 if (v == 123) {
1105 snprintf(s, ITEM_LABEL_LENGTH, "CPICH RSCP < -120dBm (123)");
1106 } else if (v > 123) {
1107 snprintf(s, ITEM_LABEL_LENGTH, "%ddBm <= CPICH RSCP < %ddBm (%u)", -244+v, -243+v, v);
1108 } else if (v == 91) {
1109 snprintf(s, ITEM_LABEL_LENGTH, "CPICH RSCP >= -25dBm (91)");
1110 } else if (v < 91) {
1111 snprintf(s, ITEM_LABEL_LENGTH, "%ddBm < CPICH RSCP <= %ddBm (%u)", -116+v, -115+v, v);
1112 } else {
1113 snprintf(s, ITEM_LABEL_LENGTH, "Spare (%u)", v);
1117 static void
1118 ulp_QoP_horacc_fmt(char *s, uint32_t v)
1120 double uncertainty = 10*(pow(1.1, (double)v)-1);
1122 if (uncertainty < 1000) {
1123 snprintf(s, ITEM_LABEL_LENGTH, "%fm (%u)", uncertainty, v);
1124 } else {
1125 snprintf(s, ITEM_LABEL_LENGTH, "%fkm (%u)", uncertainty/1000, v);
1129 static void
1130 ulp_QoP_veracc_fmt(char *s, uint32_t v)
1132 double uncertainty = 45*(pow(1.025, (double)v)-1);
1134 snprintf(s, ITEM_LABEL_LENGTH, "%fm (%u)", uncertainty, v);
1137 static void
1138 ulp_QoP_delay_fmt(char *s, uint32_t v)
1140 snprintf(s, ITEM_LABEL_LENGTH, "%gs (%u)", pow(2, (double)v), v);
1143 static const true_false_string ulp_vertical_dir_val = {
1144 "Downward",
1145 "Upward"
1148 static void
1149 ulp_RelativeTime_fmt(char *s, uint32_t v)
1151 snprintf(s, ITEM_LABEL_LENGTH, "%.2fs (%u)", 0.01*v, v);
1154 static void
1155 ulp_RSRP_Range_fmt(char *s, uint32_t v)
1157 if (v == 0) {
1158 snprintf(s, ITEM_LABEL_LENGTH, "RSRP < -140dBm (0)");
1159 } else if (v == 97) {
1160 snprintf(s, ITEM_LABEL_LENGTH, "RSRP >= -44dBm (97)");
1161 } else {
1162 snprintf(s, ITEM_LABEL_LENGTH, "%ddBm <= RSRP < %ddBm (%u)", -141+v, -140+v, v);
1166 static void
1167 ulp_RSRQ_Range_fmt(char *s, uint32_t v)
1169 if (v == 0) {
1170 snprintf(s, ITEM_LABEL_LENGTH, "RSRQ < -19.5dB (0)");
1171 } else if (v == 64) {
1172 snprintf(s, ITEM_LABEL_LENGTH, "RSRQ >= -3dB (34)");
1173 } else {
1174 snprintf(s, ITEM_LABEL_LENGTH, "%.1fdB <= RSRQ < %.1fdB (%u)", -20+((float)v/2), -19.5+((float)v/2), v);
1178 static void
1179 ulp_SignalDelta_fmt(char *s, uint32_t v)
1181 snprintf(s, ITEM_LABEL_LENGTH, "%sdB (%u)", v ? "0.5" : "0", v);
1184 static void
1185 ulp_locationAccuracy_fmt(char *s, uint32_t v)
1187 snprintf(s, ITEM_LABEL_LENGTH, "%.1fm (%u)", 0.1*v, v);
1190 static void
1191 ulp_WimaxRTD_fmt(char *s, uint32_t v)
1193 snprintf(s, ITEM_LABEL_LENGTH, "%.2fus (%u)", 0.01*v, v);
1196 static void
1197 ulp_WimaxNMR_rssi_fmt(char *s, uint32_t v)
1199 snprintf(s, ITEM_LABEL_LENGTH, "%.2fdBm (%u)", -103.75+(0.25*v), v);
1202 static void
1203 ulp_UTRAN_gpsReferenceTimeUncertainty_fmt(char *s, uint32_t v)
1205 double uncertainty = 0.0022*(pow(1.18, (double)v)-1);
1207 snprintf(s, ITEM_LABEL_LENGTH, "%fus (%u)", uncertainty, v);
1210 static const value_string ulp_ganss_time_id_vals[] = {
1211 { 0, "Galileo"},
1212 { 1, "QZSS"},
1213 { 2, "GLONASS"},
1214 { 3, "BDS"},
1215 { 0, NULL},
1218 static void
1219 ulp_utran_GANSSTimingOfCell_fmt(char *s, uint32_t v)
1221 snprintf(s, ITEM_LABEL_LENGTH, "%.2fus (%u)", 0.25*v, v);
1224 static void
1225 ulp_Coordinate_latitude_fmt(char *s, uint32_t v)
1227 snprintf(s, ITEM_LABEL_LENGTH, "%f degrees (%u)",
1228 ((float)v/8388607.0)*90, v);
1231 static void
1232 ulp_Coordinate_longitude_fmt(char *s, uint32_t v)
1234 int32_t longitude = (int32_t) v;
1236 snprintf(s, ITEM_LABEL_LENGTH, "%f degrees (%d)",
1237 ((float)longitude/8388608.0)*180, longitude);
1240 /* Include constants */
1241 #define maxReqLength 50
1242 #define maxClientLength 50
1243 #define maxNumGeoArea 32
1244 #define maxAreaId 256
1245 #define maxAreaIdList 32
1246 #define maxnumSessions 64
1247 #define maxGANSS 16
1248 #define maxGANSSSat 32
1249 #define maxCellMeas 32
1250 #define maxFreq 8
1251 #define maxTS 14
1252 #define maxLidSize 64
1253 #define maxWLANApDataSize 128
1254 #define maxCellReport 8
1255 #define maxWimaxBSMeas 32
1256 #define maxNRServingCell 32
1257 #define maxCellReportNR 32
1259 typedef struct
1261 uint8_t notif_enc_type;
1262 uint8_t ganss_req_gen_data_ganss_id;
1263 } ulp_private_data_t;
1265 static ulp_private_data_t* ulp_get_private_data(asn1_ctx_t *actx)
1267 if (actx->private_data == NULL) {
1268 actx->private_data = wmem_new0(actx->pinfo->pool, ulp_private_data_t);
1270 return (ulp_private_data_t*)actx->private_data;
1275 static int
1276 dissect_ulp_INTEGER_0_65535(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1277 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1278 0U, 65535U, NULL, false);
1280 return offset;
1285 static int
1286 dissect_ulp_INTEGER_0_255(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1287 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1288 0U, 255U, NULL, false);
1290 return offset;
1294 static const per_sequence_t Version_sequence[] = {
1295 { &hf_ulp_maj , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_255 },
1296 { &hf_ulp_min , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_255 },
1297 { &hf_ulp_servind , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_255 },
1298 { NULL, 0, 0, NULL }
1301 static int
1302 dissect_ulp_Version(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1303 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1304 ett_ulp_Version, Version_sequence);
1306 return offset;
1311 static int
1312 dissect_ulp_T_msisdn(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1313 tvbuff_t *msisdn_tvb;
1314 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1315 8, 8, false, &msisdn_tvb);
1317 if (msisdn_tvb) {
1318 proto_tree *subtree;
1320 subtree = proto_item_add_subtree(actx->created_item, ett_ulp_setid);
1321 dissect_e164_msisdn(msisdn_tvb, subtree, 0, 8, E164_ENC_BCD);
1325 return offset;
1330 static int
1331 dissect_ulp_T_mdn(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1332 tvbuff_t *mdn_tvb;
1333 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1334 8, 8, false, &mdn_tvb);
1336 if (mdn_tvb) {
1337 proto_tree *subtree;
1339 subtree = proto_item_add_subtree(actx->created_item, ett_ulp_setid);
1340 proto_tree_add_item(subtree, hf_ulp_mobile_directory_number, mdn_tvb, 0, 8, ENC_BCD_DIGITS_0_9|ENC_LITTLE_ENDIAN);
1344 return offset;
1349 static int
1350 dissect_ulp_BIT_STRING_SIZE_34(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1351 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1352 34, 34, false, NULL, 0, NULL, NULL);
1354 return offset;
1359 static int
1360 dissect_ulp_T_imsi(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1361 tvbuff_t *imsi_tvb;
1362 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1363 8, 8, false, &imsi_tvb);
1365 if (imsi_tvb) {
1366 proto_tree *subtree;
1368 subtree = proto_item_add_subtree(actx->created_item, ett_ulp_setid);
1369 dissect_e212_imsi(imsi_tvb, actx->pinfo, subtree, 0, 8, false);
1373 return offset;
1378 static int
1379 dissect_ulp_IA5String_SIZE_1_1000(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1380 offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index,
1381 1, 1000, false,
1382 NULL);
1384 return offset;
1389 static int
1390 dissect_ulp_OCTET_STRING_SIZE_4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1391 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1392 4, 4, false, NULL);
1394 return offset;
1399 static int
1400 dissect_ulp_OCTET_STRING_SIZE_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1401 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1402 16, 16, false, NULL);
1404 return offset;
1408 static const value_string ulp_IPAddress_vals[] = {
1409 { 0, "ipv4Address" },
1410 { 1, "ipv6Address" },
1411 { 0, NULL }
1414 static const per_choice_t IPAddress_choice[] = {
1415 { 0, &hf_ulp_ipv4Address , ASN1_NO_EXTENSIONS , dissect_ulp_OCTET_STRING_SIZE_4 },
1416 { 1, &hf_ulp_ipv6Address , ASN1_NO_EXTENSIONS , dissect_ulp_OCTET_STRING_SIZE_16 },
1417 { 0, NULL, 0, NULL }
1420 static int
1421 dissect_ulp_IPAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1422 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1423 ett_ulp_IPAddress, IPAddress_choice,
1424 NULL);
1426 return offset;
1431 static int
1432 dissect_ulp_OCTET_STRING_SIZE_8(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1433 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1434 8, 8, false, NULL);
1436 return offset;
1440 static const value_string ulp_SETId_vals[] = {
1441 { 0, "msisdn" },
1442 { 1, "mdn" },
1443 { 2, "min" },
1444 { 3, "imsi" },
1445 { 4, "nai" },
1446 { 5, "iPAddress" },
1447 { 6, "ver2-imei" },
1448 { 0, NULL }
1451 static const per_choice_t SETId_choice[] = {
1452 { 0, &hf_ulp_msisdn , ASN1_EXTENSION_ROOT , dissect_ulp_T_msisdn },
1453 { 1, &hf_ulp_mdn , ASN1_EXTENSION_ROOT , dissect_ulp_T_mdn },
1454 { 2, &hf_ulp_minsi , ASN1_EXTENSION_ROOT , dissect_ulp_BIT_STRING_SIZE_34 },
1455 { 3, &hf_ulp_imsi , ASN1_EXTENSION_ROOT , dissect_ulp_T_imsi },
1456 { 4, &hf_ulp_nai , ASN1_EXTENSION_ROOT , dissect_ulp_IA5String_SIZE_1_1000 },
1457 { 5, &hf_ulp_iPAddress , ASN1_EXTENSION_ROOT , dissect_ulp_IPAddress },
1458 { 6, &hf_ulp_ver2_imei , ASN1_NOT_EXTENSION_ROOT, dissect_ulp_OCTET_STRING_SIZE_8 },
1459 { 0, NULL, 0, NULL }
1462 static int
1463 dissect_ulp_SETId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1464 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1465 ett_ulp_SETId, SETId_choice,
1466 NULL);
1468 return offset;
1472 static const per_sequence_t SetSessionID_sequence[] = {
1473 { &hf_ulp_sessionId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_65535 },
1474 { &hf_ulp_setId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_SETId },
1475 { NULL, 0, 0, NULL }
1478 static int
1479 dissect_ulp_SetSessionID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1480 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1481 ett_ulp_SetSessionID, SetSessionID_sequence);
1483 return offset;
1488 static int
1489 dissect_ulp_FQDN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1490 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,
1491 1, 255, false, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-", 64,
1492 NULL);
1494 return offset;
1498 static const value_string ulp_SLPAddress_vals[] = {
1499 { 0, "iPAddress" },
1500 { 1, "fqdn" },
1501 { 0, NULL }
1504 static const per_choice_t SLPAddress_choice[] = {
1505 { 0, &hf_ulp_iPAddress , ASN1_EXTENSION_ROOT , dissect_ulp_IPAddress },
1506 { 1, &hf_ulp_fqdn , ASN1_EXTENSION_ROOT , dissect_ulp_FQDN },
1507 { 0, NULL, 0, NULL }
1510 static int
1511 dissect_ulp_SLPAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1512 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1513 ett_ulp_SLPAddress, SLPAddress_choice,
1514 NULL);
1516 return offset;
1520 static const per_sequence_t SlpSessionID_sequence[] = {
1521 { &hf_ulp_sessionSlpID , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_OCTET_STRING_SIZE_4 },
1522 { &hf_ulp_slpId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_SLPAddress },
1523 { NULL, 0, 0, NULL }
1526 static int
1527 dissect_ulp_SlpSessionID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1528 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1529 ett_ulp_SlpSessionID, SlpSessionID_sequence);
1531 return offset;
1535 static const per_sequence_t SessionID_sequence[] = {
1536 { &hf_ulp_setSessionID , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_SetSessionID },
1537 { &hf_ulp_slpSessionID , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_SlpSessionID },
1538 { NULL, 0, 0, NULL }
1541 static int
1542 dissect_ulp_SessionID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1543 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1544 ett_ulp_SessionID, SessionID_sequence);
1546 return offset;
1550 static const value_string ulp_PosMethod_vals[] = {
1551 { 0, "agpsSETassisted" },
1552 { 1, "agpsSETbased" },
1553 { 2, "agpsSETassistedpref" },
1554 { 3, "agpsSETbasedpref" },
1555 { 4, "autonomousGPS" },
1556 { 5, "aflt" },
1557 { 6, "ecid" },
1558 { 7, "eotd" },
1559 { 8, "otdoa" },
1560 { 9, "noPosition" },
1561 { 10, "ver2-historicalDataRetrieval" },
1562 { 11, "ver2-agnssSETassisted" },
1563 { 12, "ver2-agnssSETbased" },
1564 { 13, "ver2-agnssSETassistedpref" },
1565 { 14, "ver2-agnssSETbasedpref" },
1566 { 15, "ver2-autonomousGNSS" },
1567 { 16, "ver2-sessioninfoquery" },
1568 { 17, "ver2-mbs" },
1569 { 0, NULL }
1573 static int
1574 dissect_ulp_PosMethod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1575 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1576 10, NULL, true, 8, NULL);
1578 return offset;
1582 static const value_string ulp_NotificationType_vals[] = {
1583 { 0, "noNotificationNoVerification" },
1584 { 1, "notificationOnly" },
1585 { 2, "notificationAndVerficationAllowedNA" },
1586 { 3, "notificationAndVerficationDeniedNA" },
1587 { 4, "privacyOverride" },
1588 { 0, NULL }
1592 static int
1593 dissect_ulp_NotificationType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1594 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1595 5, NULL, true, 0, NULL);
1597 return offset;
1601 static const value_string ulp_EncodingType_vals[] = {
1602 { 0, "ucs2" },
1603 { 1, "gsmDefault" },
1604 { 2, "utf8" },
1605 { 0, NULL }
1609 static int
1610 dissect_ulp_EncodingType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1611 uint32_t val;
1612 ulp_private_data_t *ulp_priv = ulp_get_private_data(actx);
1614 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1615 3, &val, true, 0, NULL);
1617 ulp_priv->notif_enc_type = (uint8_t) val;
1620 return offset;
1625 static int
1626 dissect_ulp_T_requestorId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1627 tvbuff_t *val_tvb;
1629 offset = dissect_per_octet_string(tvb, offset, actx, tree, -1,
1630 1, maxReqLength, false, &val_tvb);
1632 if (val_tvb) {
1633 ulp_private_data_t *ulp_priv = ulp_get_private_data(actx);
1634 switch(ulp_priv->notif_enc_type) {
1635 case 0: /* UCS-2 */
1636 actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0,
1637 tvb_reported_length(val_tvb),
1638 ENC_UCS_2|ENC_BIG_ENDIAN);
1639 break;
1640 case 1: /* GSM 7bits */
1641 actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0,
1642 tvb_reported_length(val_tvb), ENC_3GPP_TS_23_038_7BITS|ENC_NA);
1643 break;
1644 case 2: /* UTF-8 */
1645 actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0,
1646 tvb_reported_length(val_tvb), ENC_UTF_8|ENC_NA);
1647 break;
1648 default:
1649 actx->created_item = proto_tree_add_string(tree, hf_index, val_tvb, 0,
1650 tvb_reported_length(val_tvb),
1651 tvb_bytes_to_str(actx->pinfo->pool, val_tvb, 0,
1652 tvb_reported_length(val_tvb)));
1653 break;
1658 return offset;
1662 static const value_string ulp_FormatIndicator_vals[] = {
1663 { 0, "logicalName" },
1664 { 1, "e-mailAddress" },
1665 { 2, "msisdn" },
1666 { 3, "url" },
1667 { 4, "sipUrl" },
1668 { 5, "min" },
1669 { 6, "mdn" },
1670 { 7, "iMSPublicidentity" },
1671 { 0, NULL }
1675 static int
1676 dissect_ulp_FormatIndicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1677 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1678 8, NULL, true, 0, NULL);
1680 return offset;
1685 static int
1686 dissect_ulp_T_clientName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1687 tvbuff_t *val_tvb;
1689 offset = dissect_per_octet_string(tvb, offset, actx, tree, -1,
1690 1, maxClientLength, false, &val_tvb);
1692 if (val_tvb) {
1693 ulp_private_data_t *ulp_priv = ulp_get_private_data(actx);
1694 switch(ulp_priv->notif_enc_type) {
1695 case 0: /* UCS-2 */
1696 actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0,
1697 tvb_reported_length(val_tvb),
1698 ENC_UCS_2|ENC_BIG_ENDIAN);
1699 break;
1700 case 1: /* GSM 7bits */
1701 actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0,
1702 tvb_reported_length(val_tvb), ENC_3GPP_TS_23_038_7BITS|ENC_NA);
1703 break;
1704 case 2: /* UTF-8 */
1705 actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0,
1706 tvb_reported_length(val_tvb), ENC_UTF_8|ENC_NA);
1707 break;
1708 default:
1709 actx->created_item = proto_tree_add_string(tree, hf_index, val_tvb, 0,
1710 tvb_reported_length(val_tvb),
1711 tvb_bytes_to_str(actx->pinfo->pool, val_tvb, 0,
1712 tvb_reported_length(val_tvb)));
1713 break;
1718 return offset;
1723 static int
1724 dissect_ulp_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1725 offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
1727 return offset;
1731 static const per_sequence_t Ver2_Notification_extension_sequence[] = {
1732 { &hf_ulp_emergencyCallLocation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_NULL },
1733 { NULL, 0, 0, NULL }
1736 static int
1737 dissect_ulp_Ver2_Notification_extension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1738 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1739 ett_ulp_Ver2_Notification_extension, Ver2_Notification_extension_sequence);
1741 return offset;
1745 static const per_sequence_t Notification_sequence[] = {
1746 { &hf_ulp_notificationType, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_NotificationType },
1747 { &hf_ulp_encodingType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_EncodingType },
1748 { &hf_ulp_requestorId , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_requestorId },
1749 { &hf_ulp_requestorIdType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_FormatIndicator },
1750 { &hf_ulp_clientName , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_clientName },
1751 { &hf_ulp_clientNameType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_FormatIndicator },
1752 { &hf_ulp_ver2_Notification_extension, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_Ver2_Notification_extension },
1753 { NULL, 0, 0, NULL }
1756 static int
1757 dissect_ulp_Notification(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1758 ulp_private_data_t *ulp_priv = ulp_get_private_data(actx);
1760 ulp_priv->notif_enc_type = -1;
1761 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1762 ett_ulp_Notification, Notification_sequence);
1766 return offset;
1771 static int
1772 dissect_ulp_INTEGER_0_127(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1773 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1774 0U, 127U, NULL, false);
1776 return offset;
1781 static int
1782 dissect_ulp_INTEGER_0_7(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1783 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1784 0U, 7U, NULL, false);
1786 return offset;
1791 static int
1792 dissect_ulp_INTEGER_1_128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1793 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1794 1U, 128U, NULL, false);
1796 return offset;
1800 static const per_sequence_t QoP_sequence[] = {
1801 { &hf_ulp_horacc , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_127 },
1802 { &hf_ulp_veracc , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_127 },
1803 { &hf_ulp_maxLocAge , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_65535 },
1804 { &hf_ulp_delay , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_7 },
1805 { &hf_ulp_ver2_responseTime, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_INTEGER_1_128 },
1806 { NULL, 0, 0, NULL }
1809 static int
1810 dissect_ulp_QoP(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1811 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1812 ett_ulp_QoP, QoP_sequence);
1814 return offset;
1818 static const value_string ulp_SLPMode_vals[] = {
1819 { 0, "proxy" },
1820 { 1, "nonProxy" },
1821 { 0, NULL }
1825 static int
1826 dissect_ulp_SLPMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1827 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1828 2, NULL, false, 0, NULL);
1830 return offset;
1835 static int
1836 dissect_ulp_MAC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1837 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1838 64, 64, false, NULL, 0, NULL, NULL);
1840 return offset;
1845 static int
1846 dissect_ulp_KeyIdentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1847 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1848 128, 128, false, NULL, 0, NULL, NULL);
1850 return offset;
1854 static const value_string ulp_NotificationMode_vals[] = {
1855 { 0, "normal" },
1856 { 1, "basedOnLocation" },
1857 { 0, NULL }
1861 static int
1862 dissect_ulp_NotificationMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1863 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1864 2, NULL, true, 0, NULL);
1866 return offset;
1871 static int
1872 dissect_ulp_BOOLEAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1873 offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
1875 return offset;
1879 static const per_sequence_t SupportedWLANInfo_sequence[] = {
1880 { &hf_ulp_apTP , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1881 { &hf_ulp_apAG , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1882 { &hf_ulp_apSN , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1883 { &hf_ulp_apDevType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1884 { &hf_ulp_apRSSI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1885 { &hf_ulp_apChanFreq , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1886 { &hf_ulp_apRTD , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1887 { &hf_ulp_setTP , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1888 { &hf_ulp_setAG , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1889 { &hf_ulp_setSN , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1890 { &hf_ulp_setRSSI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1891 { &hf_ulp_apRepLoc , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1892 { &hf_ulp_apRL , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_BOOLEAN },
1893 { &hf_ulp_opClass , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_BOOLEAN },
1894 { &hf_ulp_apSSID , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_BOOLEAN },
1895 { &hf_ulp_apPHYType , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_BOOLEAN },
1896 { &hf_ulp_setMACAddress , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_BOOLEAN },
1897 { NULL, 0, 0, NULL }
1900 static int
1901 dissect_ulp_SupportedWLANInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1902 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1903 ett_ulp_SupportedWLANInfo, SupportedWLANInfo_sequence);
1905 return offset;
1910 static int
1911 dissect_ulp_T_apMACAddress_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1912 tvbuff_t *val_tvb;
1914 offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
1915 48, 48, false, NULL, 0, &val_tvb, NULL);
1917 if (val_tvb) {
1918 proto_tree_add_item(tree, hf_index, val_tvb, 0, 6, ENC_NA);
1922 return offset;
1926 static const value_string ulp_T_apDevType_vals[] = {
1927 { 0, "wlan802-11a" },
1928 { 1, "wlan802-11b" },
1929 { 2, "wlan802-11g" },
1930 { 0, NULL }
1934 static int
1935 dissect_ulp_T_apDevType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1936 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1937 3, NULL, true, 0, NULL);
1939 return offset;
1943 static const per_sequence_t SupportedWLANApData_sequence[] = {
1944 { &hf_ulp_apMACAddress_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_apMACAddress_01 },
1945 { &hf_ulp_apDevType_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_apDevType },
1946 { NULL, 0, 0, NULL }
1949 static int
1950 dissect_ulp_SupportedWLANApData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1951 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1952 ett_ulp_SupportedWLANApData, SupportedWLANApData_sequence);
1954 return offset;
1958 static const per_sequence_t SEQUENCE_SIZE_1_maxWLANApDataSize_OF_SupportedWLANApData_sequence_of[1] = {
1959 { &hf_ulp_supportedWLANApDataList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_SupportedWLANApData },
1962 static int
1963 dissect_ulp_SEQUENCE_SIZE_1_maxWLANApDataSize_OF_SupportedWLANApData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1964 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1965 ett_ulp_SEQUENCE_SIZE_1_maxWLANApDataSize_OF_SupportedWLANApData, SEQUENCE_SIZE_1_maxWLANApDataSize_OF_SupportedWLANApData_sequence_of,
1966 1, maxWLANApDataSize, false);
1968 return offset;
1972 static const per_sequence_t SupportedWLANApsChannel11a_sequence[] = {
1973 { &hf_ulp_ch34 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1974 { &hf_ulp_ch36 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1975 { &hf_ulp_ch38 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1976 { &hf_ulp_ch40 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1977 { &hf_ulp_ch42 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1978 { &hf_ulp_ch44 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1979 { &hf_ulp_ch46 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1980 { &hf_ulp_ch48 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1981 { &hf_ulp_ch52 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1982 { &hf_ulp_ch56 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1983 { &hf_ulp_ch60 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1984 { &hf_ulp_ch64 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1985 { &hf_ulp_ch149 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1986 { &hf_ulp_ch153 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1987 { &hf_ulp_ch157 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1988 { &hf_ulp_ch161 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1989 { NULL, 0, 0, NULL }
1992 static int
1993 dissect_ulp_SupportedWLANApsChannel11a(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1994 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1995 ett_ulp_SupportedWLANApsChannel11a, SupportedWLANApsChannel11a_sequence);
1997 return offset;
2001 static const per_sequence_t SupportedWLANApsChannel11bg_sequence[] = {
2002 { &hf_ulp_ch1 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2003 { &hf_ulp_ch2 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2004 { &hf_ulp_ch3 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2005 { &hf_ulp_ch4 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2006 { &hf_ulp_ch5 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2007 { &hf_ulp_ch6 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2008 { &hf_ulp_ch7 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2009 { &hf_ulp_ch8 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2010 { &hf_ulp_ch9 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2011 { &hf_ulp_ch10 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2012 { &hf_ulp_ch11 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2013 { &hf_ulp_ch12 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2014 { &hf_ulp_ch13 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2015 { &hf_ulp_ch14 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2016 { NULL, 0, 0, NULL }
2019 static int
2020 dissect_ulp_SupportedWLANApsChannel11bg(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2021 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2022 ett_ulp_SupportedWLANApsChannel11bg, SupportedWLANApsChannel11bg_sequence);
2024 return offset;
2028 static const per_sequence_t SupportedWLANApsList_sequence[] = {
2029 { &hf_ulp_supportedWLANApDataList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_SEQUENCE_SIZE_1_maxWLANApDataSize_OF_SupportedWLANApData },
2030 { &hf_ulp_supportedWLANapsChannel11a, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SupportedWLANApsChannel11a },
2031 { &hf_ulp_supportedWLANapsChannel11bg, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SupportedWLANApsChannel11bg },
2032 { NULL, 0, 0, NULL }
2035 static int
2036 dissect_ulp_SupportedWLANApsList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2037 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2038 ett_ulp_SupportedWLANApsList, SupportedWLANApsList_sequence);
2040 return offset;
2044 static const per_sequence_t SupportedWCDMAInfo_sequence[] = {
2045 { &hf_ulp_mrl , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2046 { NULL, 0, 0, NULL }
2049 static int
2050 dissect_ulp_SupportedWCDMAInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2051 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2052 ett_ulp_SupportedWCDMAInfo, SupportedWCDMAInfo_sequence);
2054 return offset;
2058 static const per_sequence_t SupportedNetworkInformation_sequence[] = {
2059 { &hf_ulp_wlan , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2060 { &hf_ulp_supportedWLANInfo, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SupportedWLANInfo },
2061 { &hf_ulp_supportedWLANApsList, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SupportedWLANApsList },
2062 { &hf_ulp_gsm , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2063 { &hf_ulp_wcdma , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2064 { &hf_ulp_supportedWCDMAInfo, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SupportedWCDMAInfo },
2065 { &hf_ulp_cdma , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2066 { &hf_ulp_hrdp , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2067 { &hf_ulp_umb , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2068 { &hf_ulp_lte , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2069 { &hf_ulp_wimax , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2070 { &hf_ulp_historic , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2071 { &hf_ulp_nonServing , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2072 { &hf_ulp_uTRANGPSReferenceTime, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2073 { &hf_ulp_uTRANGANSSReferenceTime, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2074 { &hf_ulp_nr , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_BOOLEAN },
2075 { NULL, 0, 0, NULL }
2078 static int
2079 dissect_ulp_SupportedNetworkInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2080 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2081 ett_ulp_SupportedNetworkInformation, SupportedNetworkInformation_sequence);
2083 return offset;
2087 static const value_string ulp_TriggerType_vals[] = {
2088 { 0, "periodic" },
2089 { 1, "areaEvent" },
2090 { 0, NULL }
2094 static int
2095 dissect_ulp_TriggerType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2096 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2097 2, NULL, true, 0, NULL);
2099 return offset;
2103 static const value_string ulp_AllowedReportingType_vals[] = {
2104 { 0, "positionsOnly" },
2105 { 1, "measurementsOnly" },
2106 { 2, "positionsAndMeasurements" },
2107 { 0, NULL }
2111 static int
2112 dissect_ulp_AllowedReportingType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2113 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2114 3, NULL, true, 0, NULL);
2116 return offset;
2121 static int
2122 dissect_ulp_INTEGER_M525600_M1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2123 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2124 -525600, -1, NULL, false);
2126 return offset;
2131 static int
2132 dissect_ulp_INTEGER_M525599_0(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2133 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2134 -525599, 0U, NULL, false);
2136 return offset;
2140 static const per_sequence_t TimeWindow_sequence[] = {
2141 { &hf_ulp_startTime_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_M525600_M1 },
2142 { &hf_ulp_stopTime_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_M525599_0 },
2143 { NULL, 0, 0, NULL }
2146 static int
2147 dissect_ulp_TimeWindow(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2148 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2149 ett_ulp_TimeWindow, TimeWindow_sequence);
2151 return offset;
2156 static int
2157 dissect_ulp_INTEGER_1_65536(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2158 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2159 1U, 65536U, NULL, false);
2161 return offset;
2166 static int
2167 dissect_ulp_INTEGER_1_86400(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2168 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2169 1U, 86400U, NULL, false);
2171 return offset;
2175 static const per_sequence_t ReportingCriteria_sequence[] = {
2176 { &hf_ulp_timeWindow , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_TimeWindow },
2177 { &hf_ulp_maxNumberofReports, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_1_65536 },
2178 { &hf_ulp_minTimeInterval , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_1_86400 },
2179 { NULL, 0, 0, NULL }
2182 static int
2183 dissect_ulp_ReportingCriteria(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2184 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2185 ett_ulp_ReportingCriteria, ReportingCriteria_sequence);
2187 return offset;
2191 static const per_sequence_t HistoricReporting_sequence[] = {
2192 { &hf_ulp_allowedReportingType, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_AllowedReportingType },
2193 { &hf_ulp_reportingCriteria, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_ReportingCriteria },
2194 { NULL, 0, 0, NULL }
2197 static int
2198 dissect_ulp_HistoricReporting(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2199 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2200 ett_ulp_HistoricReporting, HistoricReporting_sequence);
2202 return offset;
2206 static const value_string ulp_ProtLevel_vals[] = {
2207 { 0, "nullProtection" },
2208 { 1, "basicProtection" },
2209 { 0, NULL }
2213 static int
2214 dissect_ulp_ProtLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2215 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2216 2, NULL, true, 0, NULL);
2218 return offset;
2223 static int
2224 dissect_ulp_BIT_STRING_SIZE_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2225 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
2226 32, 32, false, NULL, 0, NULL, NULL);
2228 return offset;
2232 static const per_sequence_t BasicProtectionParams_sequence[] = {
2233 { &hf_ulp_keyIdentifier , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_OCTET_STRING_SIZE_8 },
2234 { &hf_ulp_basicReplayCounter, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_65535 },
2235 { &hf_ulp_basicMAC , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_32 },
2236 { NULL, 0, 0, NULL }
2239 static int
2240 dissect_ulp_BasicProtectionParams(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2241 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2242 ett_ulp_BasicProtectionParams, BasicProtectionParams_sequence);
2244 return offset;
2248 static const per_sequence_t ProtectionLevel_sequence[] = {
2249 { &hf_ulp_protlevel , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_ProtLevel },
2250 { &hf_ulp_basicProtectionParams, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_BasicProtectionParams },
2251 { NULL, 0, 0, NULL }
2254 static int
2255 dissect_ulp_ProtectionLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2256 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2257 ett_ulp_ProtectionLevel, ProtectionLevel_sequence);
2259 return offset;
2263 static const per_sequence_t GNSSPosTechnology_sequence[] = {
2264 { &hf_ulp_gps , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2265 { &hf_ulp_galileo , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2266 { &hf_ulp_sbas , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2267 { &hf_ulp_modernized_gps , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2268 { &hf_ulp_qzss , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2269 { &hf_ulp_glonass , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2270 { &hf_ulp_bds , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_BOOLEAN },
2271 { &hf_ulp_rtk_osr , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_BOOLEAN },
2272 { NULL, 0, 0, NULL }
2275 static int
2276 dissect_ulp_GNSSPosTechnology(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2277 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2278 ett_ulp_GNSSPosTechnology, GNSSPosTechnology_sequence);
2280 return offset;
2284 static const per_sequence_t Ver2_SUPL_INIT_extension_sequence[] = {
2285 { &hf_ulp_notificationMode, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_NotificationMode },
2286 { &hf_ulp_supportedNetworkInformation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SupportedNetworkInformation },
2287 { &hf_ulp_triggerType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_TriggerType },
2288 { &hf_ulp_e_SLPAddress , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SLPAddress },
2289 { &hf_ulp_historicReporting, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_HistoricReporting },
2290 { &hf_ulp_protectionLevel , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_ProtectionLevel },
2291 { &hf_ulp_gnssPosTechnology, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_GNSSPosTechnology },
2292 { &hf_ulp_minimumMajorVersion, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_255 },
2293 { NULL, 0, 0, NULL }
2296 static int
2297 dissect_ulp_Ver2_SUPL_INIT_extension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2298 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2299 ett_ulp_Ver2_SUPL_INIT_extension, Ver2_SUPL_INIT_extension_sequence);
2301 return offset;
2305 static const per_sequence_t SUPLINIT_sequence[] = {
2306 { &hf_ulp_posMethod , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_PosMethod },
2307 { &hf_ulp_notification , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_Notification },
2308 { &hf_ulp_sLPAddress , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SLPAddress },
2309 { &hf_ulp_qoP , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_QoP },
2310 { &hf_ulp_sLPMode , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_SLPMode },
2311 { &hf_ulp_mac , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_MAC },
2312 { &hf_ulp_keyIdentity , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_KeyIdentity },
2313 { &hf_ulp_ver2_SUPL_INIT_extension, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_Ver2_SUPL_INIT_extension },
2314 { NULL, 0, 0, NULL }
2317 static int
2318 dissect_ulp_SUPLINIT(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2319 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2320 ett_ulp_SUPLINIT, SUPLINIT_sequence);
2322 return offset;
2327 static int
2328 dissect_ulp_INTEGER_0_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2329 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2330 0U, 15U, NULL, false);
2332 return offset;
2337 static int
2338 dissect_ulp_T_ganssSBASid(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2339 tvbuff_t *val_tvb;
2341 offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
2342 3, 3, false, NULL, 0, &val_tvb, NULL);
2344 if (val_tvb) {
2345 proto_tree_add_bits_item(tree, hf_index, val_tvb, 0, 3, ENC_NA);
2349 return offset;
2353 static const per_sequence_t GANSSPositioningMethodTypes_sequence[] = {
2354 { &hf_ulp_setAssisted , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2355 { &hf_ulp_setBased , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2356 { &hf_ulp_autonomous , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2357 { NULL, 0, 0, NULL }
2360 static int
2361 dissect_ulp_GANSSPositioningMethodTypes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2362 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2363 ett_ulp_GANSSPositioningMethodTypes, GANSSPositioningMethodTypes_sequence);
2365 return offset;
2369 static int * const GANSSSignals_bits[] = {
2370 &hf_ulp_GANSSSignals_signal1,
2371 &hf_ulp_GANSSSignals_signal2,
2372 &hf_ulp_GANSSSignals_signal3,
2373 &hf_ulp_GANSSSignals_signal4,
2374 &hf_ulp_GANSSSignals_signal5,
2375 &hf_ulp_GANSSSignals_signal6,
2376 &hf_ulp_GANSSSignals_signal7,
2377 &hf_ulp_GANSSSignals_signal8,
2378 NULL
2381 static int
2382 dissect_ulp_GANSSSignals(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2383 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
2384 1, 8, false, GANSSSignals_bits, 8, NULL, NULL);
2386 return offset;
2390 static const per_sequence_t RTK_sequence[] = {
2391 { &hf_ulp_osr , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2392 { NULL, 0, 0, NULL }
2395 static int
2396 dissect_ulp_RTK(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2397 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2398 ett_ulp_RTK, RTK_sequence);
2400 return offset;
2404 static const per_sequence_t GANSSPositionMethod_sequence[] = {
2405 { &hf_ulp_ganssId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_15 },
2406 { &hf_ulp_ganssSBASid , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_ganssSBASid },
2407 { &hf_ulp_gANSSPositioningMethodTypes, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_GANSSPositioningMethodTypes },
2408 { &hf_ulp_gANSSSignals , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_GANSSSignals },
2409 { &hf_ulp_rtk , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_RTK },
2410 { NULL, 0, 0, NULL }
2413 static int
2414 dissect_ulp_GANSSPositionMethod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2415 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2416 ett_ulp_GANSSPositionMethod, GANSSPositionMethod_sequence);
2418 return offset;
2422 static const per_sequence_t GANSSPositionMethods_sequence_of[1] = {
2423 { &hf_ulp_GANSSPositionMethods_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_GANSSPositionMethod },
2426 static int
2427 dissect_ulp_GANSSPositionMethods(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2428 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2429 ett_ulp_GANSSPositionMethods, GANSSPositionMethods_sequence_of,
2430 1, 16, false);
2432 return offset;
2436 static const value_string ulp_T_addPosID_vals[] = {
2437 { 0, "mBS" },
2438 { 0, NULL }
2442 static int
2443 dissect_ulp_T_addPosID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2444 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2445 1, NULL, true, 0, NULL);
2447 return offset;
2451 static int * const T_addPosMode_bits[] = {
2452 &hf_ulp_T_addPosMode_standalone,
2453 &hf_ulp_T_addPosMode_setBased,
2454 &hf_ulp_T_addPosMode_setAssisted,
2455 NULL
2458 static int
2459 dissect_ulp_T_addPosMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2460 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
2461 1, 8, false, T_addPosMode_bits, 3, NULL, NULL);
2463 return offset;
2467 static const per_sequence_t AddPosSupport_Element_sequence[] = {
2468 { &hf_ulp_addPosID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_addPosID },
2469 { &hf_ulp_addPosMode , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_addPosMode },
2470 { NULL, 0, 0, NULL }
2473 static int
2474 dissect_ulp_AddPosSupport_Element(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2475 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2476 ett_ulp_AddPosSupport_Element, AddPosSupport_Element_sequence);
2478 return offset;
2482 static const per_sequence_t AdditionalPositioningMethods_sequence_of[1] = {
2483 { &hf_ulp_AdditionalPositioningMethods_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_AddPosSupport_Element },
2486 static int
2487 dissect_ulp_AdditionalPositioningMethods(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2488 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2489 ett_ulp_AdditionalPositioningMethods, AdditionalPositioningMethods_sequence_of,
2490 1, 8, false);
2492 return offset;
2496 static const per_sequence_t Ver2_PosTechnology_extension_sequence[] = {
2497 { &hf_ulp_gANSSPositionMethods, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_GANSSPositionMethods },
2498 { &hf_ulp_additionalPositioningMethods, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_AdditionalPositioningMethods },
2499 { NULL, 0, 0, NULL }
2502 static int
2503 dissect_ulp_Ver2_PosTechnology_extension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2504 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2505 ett_ulp_Ver2_PosTechnology_extension, Ver2_PosTechnology_extension_sequence);
2507 return offset;
2511 static const per_sequence_t PosTechnology_sequence[] = {
2512 { &hf_ulp_agpsSETassisted , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2513 { &hf_ulp_agpsSETBased , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2514 { &hf_ulp_autonomousGPS , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2515 { &hf_ulp_aflt , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2516 { &hf_ulp_ecid , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2517 { &hf_ulp_eotd , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2518 { &hf_ulp_otdoa , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2519 { &hf_ulp_ver2_PosTechnology_extension, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_Ver2_PosTechnology_extension },
2520 { NULL, 0, 0, NULL }
2523 static int
2524 dissect_ulp_PosTechnology(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2525 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2526 ett_ulp_PosTechnology, PosTechnology_sequence);
2528 return offset;
2532 static const value_string ulp_PrefMethod_vals[] = {
2533 { 0, "agpsSETassistedPreferred" },
2534 { 1, "agpsSETBasedPreferred" },
2535 { 2, "noPreference" },
2536 { 0, NULL }
2540 static int
2541 dissect_ulp_PrefMethod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2542 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2543 3, NULL, false, 0, NULL);
2545 return offset;
2549 static const per_sequence_t PosProtocolVersion3GPP_sequence[] = {
2550 { &hf_ulp_majorVersionField, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_255 },
2551 { &hf_ulp_technicalVersionField, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_255 },
2552 { &hf_ulp_editorialVersionField, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_255 },
2553 { NULL, 0, 0, NULL }
2556 static int
2557 dissect_ulp_PosProtocolVersion3GPP(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2558 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2559 ett_ulp_PosProtocolVersion3GPP, PosProtocolVersion3GPP_sequence);
2561 return offset;
2566 static int
2567 dissect_ulp_BIT_STRING_SIZE_6(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2568 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
2569 6, 6, false, NULL, 0, NULL, NULL);
2571 return offset;
2575 static const per_sequence_t Supported3GPP2PosProtocolVersion_sequence[] = {
2576 { &hf_ulp_revisionNumber , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_6 },
2577 { &hf_ulp_pointReleaseNumber, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_255 },
2578 { &hf_ulp_internalEditLevel, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_255 },
2579 { NULL, 0, 0, NULL }
2582 static int
2583 dissect_ulp_Supported3GPP2PosProtocolVersion(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2584 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2585 ett_ulp_Supported3GPP2PosProtocolVersion, Supported3GPP2PosProtocolVersion_sequence);
2587 return offset;
2591 static const per_sequence_t PosProtocolVersion3GPP2_sequence_of[1] = {
2592 { &hf_ulp_PosProtocolVersion3GPP2_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_Supported3GPP2PosProtocolVersion },
2595 static int
2596 dissect_ulp_PosProtocolVersion3GPP2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2597 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2598 ett_ulp_PosProtocolVersion3GPP2, PosProtocolVersion3GPP2_sequence_of,
2599 1, 8, false);
2601 return offset;
2605 static const per_sequence_t PosProtocolVersionOMA_sequence[] = {
2606 { &hf_ulp_majorVersionField, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_255 },
2607 { &hf_ulp_minorVersionField, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_255 },
2608 { NULL, 0, 0, NULL }
2611 static int
2612 dissect_ulp_PosProtocolVersionOMA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2613 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2614 ett_ulp_PosProtocolVersionOMA, PosProtocolVersionOMA_sequence);
2616 return offset;
2620 static const per_sequence_t Ver2_PosProtocol_extension_sequence[] = {
2621 { &hf_ulp_lpp , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2622 { &hf_ulp_posProtocolVersionRRLP, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_PosProtocolVersion3GPP },
2623 { &hf_ulp_posProtocolVersionRRC, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_PosProtocolVersion3GPP },
2624 { &hf_ulp_posProtocolVersionTIA801, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_PosProtocolVersion3GPP2 },
2625 { &hf_ulp_posProtocolVersionLPP, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_PosProtocolVersion3GPP },
2626 { &hf_ulp_lppe , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_BOOLEAN },
2627 { &hf_ulp_posProtocolVersionLPPe, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_PosProtocolVersionOMA },
2628 { NULL, 0, 0, NULL }
2631 static int
2632 dissect_ulp_Ver2_PosProtocol_extension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2633 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2634 ett_ulp_Ver2_PosProtocol_extension, Ver2_PosProtocol_extension_sequence);
2636 return offset;
2640 static const per_sequence_t PosProtocol_sequence[] = {
2641 { &hf_ulp_tia801 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2642 { &hf_ulp_rrlp , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2643 { &hf_ulp_rrc , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2644 { &hf_ulp_ver2_PosProtocol_extension, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_Ver2_PosProtocol_extension },
2645 { NULL, 0, 0, NULL }
2648 static int
2649 dissect_ulp_PosProtocol(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2650 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2651 ett_ulp_PosProtocol, PosProtocol_sequence);
2653 return offset;
2657 static const per_sequence_t ServicesSupported_sequence[] = {
2658 { &hf_ulp_periodicTrigger , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2659 { &hf_ulp_areaEventTrigger, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2660 { NULL, 0, 0, NULL }
2663 static int
2664 dissect_ulp_ServicesSupported(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2665 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2666 ett_ulp_ServicesSupported, ServicesSupported_sequence);
2668 return offset;
2673 static int
2674 dissect_ulp_INTEGER_1_3600(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2675 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2676 1U, 3600U, NULL, false);
2678 return offset;
2683 static int
2684 dissect_ulp_INTEGER_1_1440(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2685 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2686 1U, 1440U, NULL, false);
2688 return offset;
2692 static const per_sequence_t RepMode_sequence[] = {
2693 { &hf_ulp_realtime , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2694 { &hf_ulp_quasirealtime , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2695 { &hf_ulp_batch , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2696 { NULL, 0, 0, NULL }
2699 static int
2700 dissect_ulp_RepMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2701 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2702 ett_ulp_RepMode, RepMode_sequence);
2704 return offset;
2709 static int
2710 dissect_ulp_INTEGER_1_1024(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2711 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2712 1U, 1024U, NULL, false);
2714 return offset;
2718 static const per_sequence_t BatchRepCap_sequence[] = {
2719 { &hf_ulp_report_position , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2720 { &hf_ulp_report_measurements, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2721 { &hf_ulp_max_num_positions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_1_1024 },
2722 { &hf_ulp_max_num_measurements, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_1_1024 },
2723 { NULL, 0, 0, NULL }
2726 static int
2727 dissect_ulp_BatchRepCap(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2728 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2729 ett_ulp_BatchRepCap, BatchRepCap_sequence);
2731 return offset;
2735 static const per_sequence_t ReportingCap_sequence[] = {
2736 { &hf_ulp_minInt , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_1_3600 },
2737 { &hf_ulp_maxInt , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_1_1440 },
2738 { &hf_ulp_repMode_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_RepMode },
2739 { &hf_ulp_batchRepCap , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_BatchRepCap },
2740 { NULL, 0, 0, NULL }
2743 static int
2744 dissect_ulp_ReportingCap(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2745 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2746 ett_ulp_ReportingCap, ReportingCap_sequence);
2748 return offset;
2752 static const per_sequence_t GeoAreaShapesSupported_sequence[] = {
2753 { &hf_ulp_ellipticalArea_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2754 { &hf_ulp_polygonArea_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2755 { NULL, 0, 0, NULL }
2758 static int
2759 dissect_ulp_GeoAreaShapesSupported(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2760 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2761 ett_ulp_GeoAreaShapesSupported, GeoAreaShapesSupported_sequence);
2763 return offset;
2768 static int
2769 dissect_ulp_INTEGER_0_maxNumGeoArea(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2770 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2771 0U, maxNumGeoArea, NULL, false);
2773 return offset;
2778 static int
2779 dissect_ulp_INTEGER_0_maxAreaIdList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2780 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2781 0U, maxAreaIdList, NULL, false);
2783 return offset;
2788 static int
2789 dissect_ulp_INTEGER_0_maxAreaId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2790 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2791 0U, maxAreaId, NULL, false);
2793 return offset;
2797 static const per_sequence_t EventTriggerCapabilities_sequence[] = {
2798 { &hf_ulp_geoAreaShapesSupported, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_GeoAreaShapesSupported },
2799 { &hf_ulp_maxNumGeoAreaSupported, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_maxNumGeoArea },
2800 { &hf_ulp_maxAreaIdListSupported, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_maxAreaIdList },
2801 { &hf_ulp_maxAreaIdSupportedPerList, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_maxAreaId },
2802 { NULL, 0, 0, NULL }
2805 static int
2806 dissect_ulp_EventTriggerCapabilities(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2807 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2808 ett_ulp_EventTriggerCapabilities, EventTriggerCapabilities_sequence);
2810 return offset;
2815 static int
2816 dissect_ulp_INTEGER_1_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2817 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2818 1U, 32U, NULL, false);
2820 return offset;
2824 static const per_sequence_t SessionCapabilities_sequence[] = {
2825 { &hf_ulp_maxNumberTotalSessions, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_1_128 },
2826 { &hf_ulp_maxNumberPeriodicSessions, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_1_32 },
2827 { &hf_ulp_maxNumberTriggeredSessions, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_1_32 },
2828 { NULL, 0, 0, NULL }
2831 static int
2832 dissect_ulp_SessionCapabilities(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2833 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2834 ett_ulp_SessionCapabilities, SessionCapabilities_sequence);
2836 return offset;
2840 static const per_sequence_t ServiceCapabilities_sequence[] = {
2841 { &hf_ulp_servicesSupported, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_ServicesSupported },
2842 { &hf_ulp_reportingCapabilities, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_ReportingCap },
2843 { &hf_ulp_eventTriggerCapabilities, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_EventTriggerCapabilities },
2844 { &hf_ulp_sessionCapabilities, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_SessionCapabilities },
2845 { NULL, 0, 0, NULL }
2848 static int
2849 dissect_ulp_ServiceCapabilities(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2850 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2851 ett_ulp_ServiceCapabilities, ServiceCapabilities_sequence);
2853 return offset;
2857 static const per_sequence_t SupportedBearers_sequence[] = {
2858 { &hf_ulp_gsm , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2859 { &hf_ulp_wcdma , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2860 { &hf_ulp_lte , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2861 { &hf_ulp_cdma , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2862 { &hf_ulp_hprd , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2863 { &hf_ulp_umb , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2864 { &hf_ulp_wlan , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2865 { &hf_ulp_wiMAX , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
2866 { &hf_ulp_nr , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_BOOLEAN },
2867 { NULL, 0, 0, NULL }
2870 static int
2871 dissect_ulp_SupportedBearers(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2872 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2873 ett_ulp_SupportedBearers, SupportedBearers_sequence);
2875 return offset;
2879 static const per_sequence_t Ver2_SETCapabilities_extension_sequence[] = {
2880 { &hf_ulp_serviceCapabilities, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_ServiceCapabilities },
2881 { &hf_ulp_supportedBearers, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_SupportedBearers },
2882 { NULL, 0, 0, NULL }
2885 static int
2886 dissect_ulp_Ver2_SETCapabilities_extension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2887 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2888 ett_ulp_Ver2_SETCapabilities_extension, Ver2_SETCapabilities_extension_sequence);
2890 return offset;
2894 static const per_sequence_t SETCapabilities_sequence[] = {
2895 { &hf_ulp_posTechnology , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_PosTechnology },
2896 { &hf_ulp_prefMethod , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_PrefMethod },
2897 { &hf_ulp_posProtocol , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_PosProtocol },
2898 { &hf_ulp_ver2_SETCapabilities_extension, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_Ver2_SETCapabilities_extension },
2899 { NULL, 0, 0, NULL }
2902 static int
2903 dissect_ulp_SETCapabilities(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2904 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2905 ett_ulp_SETCapabilities, SETCapabilities_sequence);
2907 return offset;
2912 static int
2913 dissect_ulp_INTEGER_0_999(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2914 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2915 0U, 999U, NULL, false);
2917 return offset;
2922 static int
2923 dissect_ulp_INTEGER_0_1023(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2924 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2925 0U, 1023U, NULL, false);
2927 return offset;
2932 static int
2933 dissect_ulp_INTEGER_0_63(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2934 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2935 0U, 63U, NULL, false);
2937 return offset;
2941 static const per_sequence_t NMRelement_sequence[] = {
2942 { &hf_ulp_arfcn , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_1023 },
2943 { &hf_ulp_bsic , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_63 },
2944 { &hf_ulp_rxLev , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_63 },
2945 { NULL, 0, 0, NULL }
2948 static int
2949 dissect_ulp_NMRelement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2950 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2951 ett_ulp_NMRelement, NMRelement_sequence);
2953 return offset;
2957 static const per_sequence_t NMR_sequence_of[1] = {
2958 { &hf_ulp_NMR_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_NMRelement },
2961 static int
2962 dissect_ulp_NMR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2963 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2964 ett_ulp_NMR, NMR_sequence_of,
2965 1, 15, false);
2967 return offset;
2971 static const per_sequence_t GsmCellInformation_sequence[] = {
2972 { &hf_ulp_refMCC , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_999 },
2973 { &hf_ulp_refMNC , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_999 },
2974 { &hf_ulp_refLAC , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_65535 },
2975 { &hf_ulp_refCI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_65535 },
2976 { &hf_ulp_nmr , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_NMR },
2977 { &hf_ulp_ta , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_255 },
2978 { NULL, 0, 0, NULL }
2981 static int
2982 dissect_ulp_GsmCellInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2983 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2984 ett_ulp_GsmCellInformation, GsmCellInformation_sequence);
2986 return offset;
2991 static int
2992 dissect_ulp_INTEGER_0_268435455(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2993 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2994 0U, 268435455U, NULL, false);
2996 return offset;
3001 static int
3002 dissect_ulp_UARFCN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3003 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3004 0U, 16383U, NULL, false);
3006 return offset;
3010 static const per_sequence_t FrequencyInfoFDD_sequence[] = {
3011 { &hf_ulp_uarfcn_UL , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_UARFCN },
3012 { &hf_ulp_uarfcn_DL , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_UARFCN },
3013 { NULL, 0, 0, NULL }
3016 static int
3017 dissect_ulp_FrequencyInfoFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3018 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3019 ett_ulp_FrequencyInfoFDD, FrequencyInfoFDD_sequence);
3021 return offset;
3025 static const per_sequence_t FrequencyInfoTDD_sequence[] = {
3026 { &hf_ulp_uarfcn_Nt , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_UARFCN },
3027 { NULL, 0, 0, NULL }
3030 static int
3031 dissect_ulp_FrequencyInfoTDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3032 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3033 ett_ulp_FrequencyInfoTDD, FrequencyInfoTDD_sequence);
3035 return offset;
3039 static const value_string ulp_FrequencySpecificInfo_vals[] = {
3040 { 0, "fdd" },
3041 { 1, "tdd" },
3042 { 0, NULL }
3045 static const per_choice_t FrequencySpecificInfo_choice[] = {
3046 { 0, &hf_ulp_fdd_fr , ASN1_EXTENSION_ROOT , dissect_ulp_FrequencyInfoFDD },
3047 { 1, &hf_ulp_tdd_fr , ASN1_EXTENSION_ROOT , dissect_ulp_FrequencyInfoTDD },
3048 { 0, NULL, 0, NULL }
3051 static int
3052 dissect_ulp_FrequencySpecificInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3053 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3054 ett_ulp_FrequencySpecificInfo, FrequencySpecificInfo_choice,
3055 NULL);
3057 return offset;
3061 static const per_sequence_t FrequencyInfo_sequence[] = {
3062 { &hf_ulp_modeSpecificFrequencyInfo, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_FrequencySpecificInfo },
3063 { NULL, 0, 0, NULL }
3066 static int
3067 dissect_ulp_FrequencyInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3068 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3069 ett_ulp_FrequencyInfo, FrequencyInfo_sequence);
3071 return offset;
3076 static int
3077 dissect_ulp_INTEGER_0_511(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3078 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3079 0U, 511U, NULL, false);
3081 return offset;
3086 static int
3087 dissect_ulp_UTRA_CarrierRSSI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3088 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3089 0U, 127U, NULL, false);
3091 return offset;
3095 static const per_sequence_t PrimaryCPICH_Info_sequence[] = {
3096 { &hf_ulp_primaryScramblingCode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_511 },
3097 { NULL, 0, 0, NULL }
3100 static int
3101 dissect_ulp_PrimaryCPICH_Info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3102 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3103 ett_ulp_PrimaryCPICH_Info, PrimaryCPICH_Info_sequence);
3105 return offset;
3110 static int
3111 dissect_ulp_CPICH_Ec_N0(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3112 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3113 0U, 63U, NULL, false);
3115 return offset;
3120 static int
3121 dissect_ulp_CPICH_RSCP(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3122 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3123 0U, 127U, NULL, false);
3125 return offset;
3130 static int
3131 dissect_ulp_Pathloss(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3132 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3133 46U, 173U, NULL, false);
3135 return offset;
3139 static const per_sequence_t T_fdd_sequence[] = {
3140 { &hf_ulp_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_PrimaryCPICH_Info },
3141 { &hf_ulp_cpich_Ec_N0 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_CPICH_Ec_N0 },
3142 { &hf_ulp_cpich_RSCP , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_CPICH_RSCP },
3143 { &hf_ulp_pathloss , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_Pathloss },
3144 { NULL, 0, 0, NULL }
3147 static int
3148 dissect_ulp_T_fdd(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3149 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3150 ett_ulp_T_fdd, T_fdd_sequence);
3152 return offset;
3157 static int
3158 dissect_ulp_CellParametersID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3159 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3160 0U, 127U, NULL, false);
3162 return offset;
3167 static int
3168 dissect_ulp_TGSN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3169 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3170 0U, 14U, NULL, false);
3172 return offset;
3177 static int
3178 dissect_ulp_PrimaryCCPCH_RSCP(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3179 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3180 0U, 127U, NULL, false);
3182 return offset;
3187 static int
3188 dissect_ulp_TimeslotISCP(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3189 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3190 0U, 127U, NULL, false);
3192 return offset;
3196 static const per_sequence_t TimeslotISCP_List_sequence_of[1] = {
3197 { &hf_ulp_TimeslotISCP_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_TimeslotISCP },
3200 static int
3201 dissect_ulp_TimeslotISCP_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3202 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
3203 ett_ulp_TimeslotISCP_List, TimeslotISCP_List_sequence_of,
3204 1, maxTS, false);
3206 return offset;
3210 static const per_sequence_t T_tdd_sequence[] = {
3211 { &hf_ulp_cellParametersID, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_CellParametersID },
3212 { &hf_ulp_proposedTGSN , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_TGSN },
3213 { &hf_ulp_primaryCCPCH_RSCP, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_PrimaryCCPCH_RSCP },
3214 { &hf_ulp_pathloss , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_Pathloss },
3215 { &hf_ulp_timeslotISCP_List, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_TimeslotISCP_List },
3216 { NULL, 0, 0, NULL }
3219 static int
3220 dissect_ulp_T_tdd(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3221 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3222 ett_ulp_T_tdd, T_tdd_sequence);
3224 return offset;
3228 static const value_string ulp_T_modeSpecificInfo_vals[] = {
3229 { 0, "fdd" },
3230 { 1, "tdd" },
3231 { 0, NULL }
3234 static const per_choice_t T_modeSpecificInfo_choice[] = {
3235 { 0, &hf_ulp_fdd , ASN1_NO_EXTENSIONS , dissect_ulp_T_fdd },
3236 { 1, &hf_ulp_tdd , ASN1_NO_EXTENSIONS , dissect_ulp_T_tdd },
3237 { 0, NULL, 0, NULL }
3240 static int
3241 dissect_ulp_T_modeSpecificInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3242 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3243 ett_ulp_T_modeSpecificInfo, T_modeSpecificInfo_choice,
3244 NULL);
3246 return offset;
3250 static const per_sequence_t CellMeasuredResults_sequence[] = {
3251 { &hf_ulp_cellIdentity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_268435455 },
3252 { &hf_ulp_modeSpecificInfo, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_T_modeSpecificInfo },
3253 { NULL, 0, 0, NULL }
3256 static int
3257 dissect_ulp_CellMeasuredResults(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3258 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3259 ett_ulp_CellMeasuredResults, CellMeasuredResults_sequence);
3261 return offset;
3265 static const per_sequence_t CellMeasuredResultsList_sequence_of[1] = {
3266 { &hf_ulp_CellMeasuredResultsList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_CellMeasuredResults },
3269 static int
3270 dissect_ulp_CellMeasuredResultsList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3271 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
3272 ett_ulp_CellMeasuredResultsList, CellMeasuredResultsList_sequence_of,
3273 1, maxCellMeas, false);
3275 return offset;
3279 static const per_sequence_t MeasuredResults_sequence[] = {
3280 { &hf_ulp_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_FrequencyInfo },
3281 { &hf_ulp_utra_CarrierRSSI, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_UTRA_CarrierRSSI },
3282 { &hf_ulp_cellMeasuredResultsList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_CellMeasuredResultsList },
3283 { NULL, 0, 0, NULL }
3286 static int
3287 dissect_ulp_MeasuredResults(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3288 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3289 ett_ulp_MeasuredResults, MeasuredResults_sequence);
3291 return offset;
3295 static const per_sequence_t MeasuredResultsList_sequence_of[1] = {
3296 { &hf_ulp_MeasuredResultsList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_MeasuredResults },
3299 static int
3300 dissect_ulp_MeasuredResultsList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3301 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
3302 ett_ulp_MeasuredResultsList, MeasuredResultsList_sequence_of,
3303 1, maxFreq, false);
3305 return offset;
3310 static int
3311 dissect_ulp_INTEGER_0_8191(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3312 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3313 0U, 8191U, NULL, false);
3315 return offset;
3319 static const value_string ulp_TAResolution_vals[] = {
3320 { 0, "res10chip" },
3321 { 1, "res05chip" },
3322 { 2, "res0125chip" },
3323 { 0, NULL }
3327 static int
3328 dissect_ulp_TAResolution(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3329 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
3330 3, NULL, true, 0, NULL);
3332 return offset;
3336 static const value_string ulp_ChipRate_vals[] = {
3337 { 0, "tdd128" },
3338 { 1, "tdd384" },
3339 { 2, "tdd768" },
3340 { 0, NULL }
3344 static int
3345 dissect_ulp_ChipRate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3346 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
3347 3, NULL, true, 0, NULL);
3349 return offset;
3353 static const per_sequence_t TimingAdvance_sequence[] = {
3354 { &hf_ulp_ta_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_8191 },
3355 { &hf_ulp_tAResolution , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_TAResolution },
3356 { &hf_ulp_chipRate , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_ChipRate },
3357 { NULL, 0, 0, NULL }
3360 static int
3361 dissect_ulp_TimingAdvance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3362 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3363 ett_ulp_TimingAdvance, TimingAdvance_sequence);
3365 return offset;
3369 static const per_sequence_t WcdmaCellInformation_sequence[] = {
3370 { &hf_ulp_refMCC , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_999 },
3371 { &hf_ulp_refMNC , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_999 },
3372 { &hf_ulp_refUC , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_268435455 },
3373 { &hf_ulp_frequencyInfo , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_FrequencyInfo },
3374 { &hf_ulp_primaryScramblingCode, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_511 },
3375 { &hf_ulp_measuredResultsList, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_MeasuredResultsList },
3376 { &hf_ulp_cellParametersId, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_INTEGER_0_127 },
3377 { &hf_ulp_timingAdvance , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_TimingAdvance },
3378 { NULL, 0, 0, NULL }
3381 static int
3382 dissect_ulp_WcdmaCellInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3383 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3384 ett_ulp_WcdmaCellInformation, WcdmaCellInformation_sequence);
3386 return offset;
3391 static int
3392 dissect_ulp_INTEGER_0_32767(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3393 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3394 0U, 32767U, NULL, false);
3396 return offset;
3401 static int
3402 dissect_ulp_INTEGER_0_4194303(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3403 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3404 0U, 4194303U, NULL, false);
3406 return offset;
3411 static int
3412 dissect_ulp_INTEGER_0_8388607(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3413 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3414 0U, 8388607U, NULL, false);
3416 return offset;
3420 static const per_sequence_t CdmaCellInformation_sequence[] = {
3421 { &hf_ulp_refNID_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_65535 },
3422 { &hf_ulp_refSID_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_32767 },
3423 { &hf_ulp_refBASEID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_65535 },
3424 { &hf_ulp_refBASELAT , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_4194303 },
3425 { &hf_ulp_reBASELONG , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_8388607 },
3426 { &hf_ulp_refREFPN , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_511 },
3427 { &hf_ulp_refWeekNumber , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_65535 },
3428 { &hf_ulp_refSeconds , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_4194303 },
3429 { NULL, 0, 0, NULL }
3432 static int
3433 dissect_ulp_CdmaCellInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3434 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3435 ett_ulp_CdmaCellInformation, CdmaCellInformation_sequence);
3437 return offset;
3442 static int
3443 dissect_ulp_BIT_STRING_SIZE_128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3444 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
3445 128, 128, false, NULL, 0, NULL, NULL);
3447 return offset;
3451 static const per_sequence_t HrpdCellInformation_sequence[] = {
3452 { &hf_ulp_refSECTORID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_BIT_STRING_SIZE_128 },
3453 { &hf_ulp_refBASELAT , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_4194303 },
3454 { &hf_ulp_reBASELONG , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_8388607 },
3455 { &hf_ulp_refWeekNumber , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_65535 },
3456 { &hf_ulp_refSeconds , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_4194303 },
3457 { NULL, 0, 0, NULL }
3460 static int
3461 dissect_ulp_HrpdCellInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3462 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3463 ett_ulp_HrpdCellInformation, HrpdCellInformation_sequence);
3465 return offset;
3469 static const per_sequence_t UmbCellInformation_sequence[] = {
3470 { &hf_ulp_refSECTORID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_128 },
3471 { &hf_ulp_refMCC , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_999 },
3472 { &hf_ulp_refMNC , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_999 },
3473 { &hf_ulp_refBASELAT , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_4194303 },
3474 { &hf_ulp_reBASELONG , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_8388607 },
3475 { &hf_ulp_refWeekNumber , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_65535 },
3476 { &hf_ulp_refSeconds , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_4194303 },
3477 { NULL, 0, 0, NULL }
3480 static int
3481 dissect_ulp_UmbCellInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3482 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3483 ett_ulp_UmbCellInformation, UmbCellInformation_sequence);
3485 return offset;
3490 static int
3491 dissect_ulp_MCC_MNC_Digit(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3492 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3493 0U, 9U, NULL, false);
3495 return offset;
3499 static const per_sequence_t MCC_sequence_of[1] = {
3500 { &hf_ulp_MCC_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_MCC_MNC_Digit },
3503 static int
3504 dissect_ulp_MCC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3505 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
3506 ett_ulp_MCC, MCC_sequence_of,
3507 3, 3, false);
3509 return offset;
3513 static const per_sequence_t MNC_sequence_of[1] = {
3514 { &hf_ulp_MNC_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_MCC_MNC_Digit },
3517 static int
3518 dissect_ulp_MNC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3519 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
3520 ett_ulp_MNC, MNC_sequence_of,
3521 2, 3, false);
3523 return offset;
3527 static const per_sequence_t PLMN_Identity_sequence[] = {
3528 { &hf_ulp_mcc , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_MCC },
3529 { &hf_ulp_mnc , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_MNC },
3530 { NULL, 0, 0, NULL }
3533 static int
3534 dissect_ulp_PLMN_Identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3535 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3536 ett_ulp_PLMN_Identity, PLMN_Identity_sequence);
3538 return offset;
3543 static int
3544 dissect_ulp_CellIdentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3545 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
3546 28, 28, false, NULL, 0, NULL, NULL);
3548 return offset;
3552 static const per_sequence_t CellGlobalIdEUTRA_sequence[] = {
3553 { &hf_ulp_plmn_Identity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_PLMN_Identity },
3554 { &hf_ulp_cellIdentity_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_CellIdentity },
3555 { NULL, 0, 0, NULL }
3558 static int
3559 dissect_ulp_CellGlobalIdEUTRA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3560 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3561 ett_ulp_CellGlobalIdEUTRA, CellGlobalIdEUTRA_sequence);
3563 return offset;
3568 static int
3569 dissect_ulp_PhysCellId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3570 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3571 0U, 503U, NULL, false);
3573 return offset;
3578 static int
3579 dissect_ulp_TrackingAreaCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3580 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
3581 16, 16, false, NULL, 0, NULL, NULL);
3583 return offset;
3588 static int
3589 dissect_ulp_RSRP_Range(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3590 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3591 0U, 97U, NULL, false);
3593 return offset;
3598 static int
3599 dissect_ulp_RSRQ_Range(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3600 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3601 0U, 34U, NULL, false);
3603 return offset;
3608 static int
3609 dissect_ulp_INTEGER_0_1282(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3610 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3611 0U, 1282U, NULL, false);
3613 return offset;
3617 static const per_sequence_t T_cgi_Info_sequence[] = {
3618 { &hf_ulp_cellGlobalId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_CellGlobalIdEUTRA },
3619 { &hf_ulp_trackingAreaCode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_TrackingAreaCode },
3620 { NULL, 0, 0, NULL }
3623 static int
3624 dissect_ulp_T_cgi_Info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3625 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3626 ett_ulp_T_cgi_Info, T_cgi_Info_sequence);
3628 return offset;
3633 static int
3634 dissect_ulp_INTEGER_65536_262143(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3635 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3636 65536U, 262143U, NULL, false);
3638 return offset;
3643 static int
3644 dissect_ulp_RSRP_Range_Ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3645 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3646 -17, -1, NULL, false);
3648 return offset;
3653 static int
3654 dissect_ulp_RSRQ_Range_Ext(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3655 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3656 -30, 46U, NULL, false);
3658 return offset;
3663 static int
3664 dissect_ulp_RS_SINR_Range(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3665 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3666 0U, 127U, NULL, false);
3668 return offset;
3673 static int
3674 dissect_ulp_TrackingAreaCodeNR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3675 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
3676 24, 24, false, NULL, 0, NULL, NULL);
3678 return offset;
3682 static const per_sequence_t NeighbourInformation5G_sequence[] = {
3683 { &hf_ulp_trackingAreaCode_01, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_TrackingAreaCodeNR },
3684 { NULL, 0, 0, NULL }
3687 static int
3688 dissect_ulp_NeighbourInformation5G(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3689 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3690 ett_ulp_NeighbourInformation5G, NeighbourInformation5G_sequence);
3692 return offset;
3696 static const per_sequence_t T_measResult_sequence[] = {
3697 { &hf_ulp_rsrpResult , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_RSRP_Range },
3698 { &hf_ulp_rsrqResult , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_RSRQ_Range },
3699 { &hf_ulp_earfcn , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_INTEGER_0_65535 },
3700 { &hf_ulp_earfcn_ext , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_INTEGER_65536_262143 },
3701 { &hf_ulp_rsrpResult_ext , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_RSRP_Range_Ext },
3702 { &hf_ulp_rsrqResult_ext , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_RSRQ_Range_Ext },
3703 { &hf_ulp_rs_sinrResult , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_RS_SINR_Range },
3704 { &hf_ulp_neighbourInformation5G, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_NeighbourInformation5G },
3705 { NULL, 0, 0, NULL }
3708 static int
3709 dissect_ulp_T_measResult(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3710 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3711 ett_ulp_T_measResult, T_measResult_sequence);
3713 return offset;
3717 static const per_sequence_t MeasResultEUTRA_sequence[] = {
3718 { &hf_ulp_physCellId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_PhysCellId },
3719 { &hf_ulp_cgi_Info , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_T_cgi_Info },
3720 { &hf_ulp_measResult , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_T_measResult },
3721 { NULL, 0, 0, NULL }
3724 static int
3725 dissect_ulp_MeasResultEUTRA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3726 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3727 ett_ulp_MeasResultEUTRA, MeasResultEUTRA_sequence);
3729 return offset;
3733 static const per_sequence_t MeasResultListEUTRA_sequence_of[1] = {
3734 { &hf_ulp_MeasResultListEUTRA_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_MeasResultEUTRA },
3737 static int
3738 dissect_ulp_MeasResultListEUTRA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3739 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
3740 ett_ulp_MeasResultListEUTRA, MeasResultListEUTRA_sequence_of,
3741 1, maxCellReport, false);
3743 return offset;
3747 static const per_sequence_t ServingInformation5G_sequence[] = {
3748 { &hf_ulp_trackingAreaCode_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_TrackingAreaCodeNR },
3749 { NULL, 0, 0, NULL }
3752 static int
3753 dissect_ulp_ServingInformation5G(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3754 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3755 ett_ulp_ServingInformation5G, ServingInformation5G_sequence);
3757 return offset;
3761 static const per_sequence_t LteCellInformation_sequence[] = {
3762 { &hf_ulp_cellGlobalIdEUTRA, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_CellGlobalIdEUTRA },
3763 { &hf_ulp_physCellId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_PhysCellId },
3764 { &hf_ulp_trackingAreaCode, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_TrackingAreaCode },
3765 { &hf_ulp_rsrpResult , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_RSRP_Range },
3766 { &hf_ulp_rsrqResult , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_RSRQ_Range },
3767 { &hf_ulp_ta_02 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_1282 },
3768 { &hf_ulp_measResultListEUTRA, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_MeasResultListEUTRA },
3769 { &hf_ulp_earfcn , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_INTEGER_0_65535 },
3770 { &hf_ulp_earfcn_ext , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_INTEGER_65536_262143 },
3771 { &hf_ulp_rsrpResult_ext , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_RSRP_Range_Ext },
3772 { &hf_ulp_rsrqResult_ext , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_RSRQ_Range_Ext },
3773 { &hf_ulp_rs_sinrResult , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_RS_SINR_Range },
3774 { &hf_ulp_servingInformation5G, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_ServingInformation5G },
3775 { NULL, 0, 0, NULL }
3778 static int
3779 dissect_ulp_LteCellInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3780 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3781 ett_ulp_LteCellInformation, LteCellInformation_sequence);
3783 return offset;
3788 static int
3789 dissect_ulp_T_apMACAddress_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3790 tvbuff_t *val_tvb;
3792 offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
3793 48, 48, false, NULL, 0, &val_tvb, NULL);
3795 if (val_tvb) {
3796 proto_tree_add_item(tree, hf_index, val_tvb, 0, 6, ENC_NA);
3800 return offset;
3805 static int
3806 dissect_ulp_INTEGER_M127_128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3807 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3808 -127, 128U, NULL, false);
3810 return offset;
3814 static const value_string ulp_T_apDeviceType_vals[] = {
3815 { 0, "wlan802-11a" },
3816 { 1, "wlan802-11b" },
3817 { 2, "wlan802-11g" },
3818 { 3, "wlan802-11n" },
3819 { 4, "wlan802-11ac" },
3820 { 5, "wlan802-11ad" },
3821 { 0, NULL }
3825 static int
3826 dissect_ulp_T_apDeviceType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3827 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
3828 3, NULL, true, 3, NULL);
3830 return offset;
3835 static int
3836 dissect_ulp_INTEGER_0_256(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3837 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3838 0U, 256U, NULL, false);
3840 return offset;
3845 static int
3846 dissect_ulp_INTEGER_0_16777216(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3847 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3848 0U, 16777216U, NULL, false);
3850 return offset;
3854 static const value_string ulp_RTDUnits_vals[] = {
3855 { 0, "microseconds" },
3856 { 1, "hundredsofnanoseconds" },
3857 { 2, "tensofnanoseconds" },
3858 { 3, "nanoseconds" },
3859 { 4, "tenthsofnanoseconds" },
3860 { 0, NULL }
3864 static int
3865 dissect_ulp_RTDUnits(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3866 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
3867 5, NULL, true, 0, NULL);
3869 return offset;
3873 static const per_sequence_t RTD_sequence[] = {
3874 { &hf_ulp_rTDValue , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_16777216 },
3875 { &hf_ulp_rTDUnits , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_RTDUnits },
3876 { &hf_ulp_rTDAccuracy , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_255 },
3877 { NULL, 0, 0, NULL }
3880 static int
3881 dissect_ulp_RTD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3882 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3883 ett_ulp_RTD, RTD_sequence);
3885 return offset;
3889 static const value_string ulp_LocationEncodingDescriptor_vals[] = {
3890 { 0, "lci" },
3891 { 1, "asn1" },
3892 { 0, NULL }
3896 static int
3897 dissect_ulp_LocationEncodingDescriptor(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3898 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
3899 2, NULL, true, 0, NULL);
3901 return offset;
3906 static int
3907 dissect_ulp_INTEGER_0_4294967295(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3908 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3909 0U, 4294967295U, NULL, false);
3911 return offset;
3916 static int
3917 dissect_ulp_OCTET_STRING_SIZE_1_128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3918 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
3919 1, 128, false, NULL);
3921 return offset;
3925 static const per_sequence_t LocationData_sequence[] = {
3926 { &hf_ulp_locationAccuracy, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_4294967295 },
3927 { &hf_ulp_locationValue , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_OCTET_STRING_SIZE_1_128 },
3928 { NULL, 0, 0, NULL }
3931 static int
3932 dissect_ulp_LocationData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3933 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3934 ett_ulp_LocationData, LocationData_sequence);
3936 return offset;
3940 static const per_sequence_t ReportedLocation_sequence[] = {
3941 { &hf_ulp_locationEncodingDescriptor, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_LocationEncodingDescriptor },
3942 { &hf_ulp_locationData , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_LocationData },
3943 { NULL, 0, 0, NULL }
3946 static int
3947 dissect_ulp_ReportedLocation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3948 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3949 ett_ulp_ReportedLocation, ReportedLocation_sequence);
3951 return offset;
3956 static int
3957 dissect_ulp_BIT_STRING_SIZE_4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3958 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
3959 4, 4, false, NULL, 0, NULL, NULL);
3961 return offset;
3966 static int
3967 dissect_ulp_BIT_STRING_SIZE_30(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3968 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
3969 30, 30, false, NULL, 0, NULL, NULL);
3971 return offset;
3976 static int
3977 dissect_ulp_BIT_STRING_SIZE_8(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3978 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
3979 8, 8, false, NULL, 0, NULL, NULL);
3981 return offset;
3985 static const per_sequence_t LocationDataLCI_sequence[] = {
3986 { &hf_ulp_latitudeResolution, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_6 },
3987 { &hf_ulp_latitude_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_34 },
3988 { &hf_ulp_longitudeResolution, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_6 },
3989 { &hf_ulp_longitude_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_34 },
3990 { &hf_ulp_altitudeType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_4 },
3991 { &hf_ulp_altitudeResolution, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_6 },
3992 { &hf_ulp_altitude_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_30 },
3993 { &hf_ulp_datum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_8 },
3994 { NULL, 0, 0, NULL }
3997 static int
3998 dissect_ulp_LocationDataLCI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3999 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4000 ett_ulp_LocationDataLCI, LocationDataLCI_sequence);
4002 return offset;
4006 static const per_sequence_t LciLocData_sequence[] = {
4007 { &hf_ulp_locationDataLCI , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_LocationDataLCI },
4008 { NULL, 0, 0, NULL }
4011 static int
4012 dissect_ulp_LciLocData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4013 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4014 ett_ulp_LciLocData, LciLocData_sequence);
4016 return offset;
4020 static const value_string ulp_RepLocation_vals[] = {
4021 { 0, "lciLocData" },
4022 { 0, NULL }
4025 static const per_choice_t RepLocation_choice[] = {
4026 { 0, &hf_ulp_lciLocData , ASN1_EXTENSION_ROOT , dissect_ulp_LciLocData },
4027 { 0, NULL, 0, NULL }
4030 static int
4031 dissect_ulp_RepLocation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4032 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
4033 ett_ulp_RepLocation, RepLocation_choice,
4034 NULL);
4036 return offset;
4041 static int
4042 dissect_ulp_INTEGER_0_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4043 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4044 0U, 1U, NULL, false);
4046 return offset;
4051 static int
4052 dissect_ulp_T_apSSID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4053 tvbuff_t *ssid_tvb;
4055 offset = dissect_per_octet_string(tvb, offset, actx, tree, -1,
4056 1, 32, false, &ssid_tvb);
4058 if (ssid_tvb) {
4059 actx->created_item = proto_tree_add_item(tree, hf_index, ssid_tvb, 0, -1, ENC_ASCII|ENC_NA);
4063 return offset;
4067 static const value_string ulp_T_apPHYType_vals[] = {
4068 { 0, "unknown" },
4069 { 1, "any" },
4070 { 2, "fhss" },
4071 { 3, "dsss" },
4072 { 4, "irbaseband" },
4073 { 5, "ofdm" },
4074 { 6, "hrdsss" },
4075 { 7, "erp" },
4076 { 8, "ht" },
4077 { 9, "ihv" },
4078 { 0, NULL }
4082 static int
4083 dissect_ulp_T_apPHYType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4084 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4085 10, NULL, true, 0, NULL);
4087 return offset;
4092 static int
4093 dissect_ulp_T_setMACAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4094 tvbuff_t *val_tvb;
4096 offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
4097 48, 48, false, NULL, 0, &val_tvb, NULL);
4099 if (val_tvb) {
4100 proto_tree_add_item(tree, hf_index, val_tvb, 0, 6, ENC_NA);
4104 return offset;
4108 static const per_sequence_t WlanAPInformation_sequence[] = {
4109 { &hf_ulp_apMACAddress_02 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_apMACAddress_02 },
4110 { &hf_ulp_apTransmitPower , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_M127_128 },
4111 { &hf_ulp_apAntennaGain , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_M127_128 },
4112 { &hf_ulp_apSignaltoNoise , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_M127_128 },
4113 { &hf_ulp_apDeviceType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_apDeviceType },
4114 { &hf_ulp_apSignalStrength, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_M127_128 },
4115 { &hf_ulp_apChannelFrequency, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_256 },
4116 { &hf_ulp_apRoundTripDelay, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_RTD },
4117 { &hf_ulp_setTransmitPower, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_M127_128 },
4118 { &hf_ulp_setAntennaGain , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_M127_128 },
4119 { &hf_ulp_setSignaltoNoise, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_M127_128 },
4120 { &hf_ulp_setSignalStrength, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_M127_128 },
4121 { &hf_ulp_apReportedLocation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_ReportedLocation },
4122 { &hf_ulp_apRepLocation , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_RepLocation },
4123 { &hf_ulp_apSignalStrengthDelta, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_INTEGER_0_1 },
4124 { &hf_ulp_apSignaltoNoiseDelta, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_INTEGER_0_1 },
4125 { &hf_ulp_setSignalStrengthDelta, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_INTEGER_0_1 },
4126 { &hf_ulp_setSignaltoNoiseDelta, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_INTEGER_0_1 },
4127 { &hf_ulp_operatingClass , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_INTEGER_0_255 },
4128 { &hf_ulp_apSSID_01 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_T_apSSID },
4129 { &hf_ulp_apPHYType_01 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_T_apPHYType },
4130 { &hf_ulp_setMACAddress_01, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_T_setMACAddress },
4131 { NULL, 0, 0, NULL }
4134 static int
4135 dissect_ulp_WlanAPInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4136 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4137 ett_ulp_WlanAPInformation, WlanAPInformation_sequence);
4139 return offset;
4144 static int
4145 dissect_ulp_BIT_STRING_SIZE_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4146 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
4147 24, 24, false, NULL, 0, NULL, NULL);
4149 return offset;
4153 static const per_sequence_t WimaxBsID_sequence[] = {
4154 { &hf_ulp_bsID_MSB , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_BIT_STRING_SIZE_24 },
4155 { &hf_ulp_bsID_LSB , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_24 },
4156 { NULL, 0, 0, NULL }
4159 static int
4160 dissect_ulp_WimaxBsID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4161 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4162 ett_ulp_WimaxBsID, WimaxBsID_sequence);
4164 return offset;
4168 static const per_sequence_t WimaxRTD_sequence[] = {
4169 { &hf_ulp_rtd , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_65535 },
4170 { &hf_ulp_rTDstd , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_1023 },
4171 { NULL, 0, 0, NULL }
4174 static int
4175 dissect_ulp_WimaxRTD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4176 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4177 ett_ulp_WimaxRTD, WimaxRTD_sequence);
4179 return offset;
4184 static int
4185 dissect_ulp_INTEGER_M32768_32767(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4186 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4187 -32768, 32767U, NULL, false);
4189 return offset;
4193 static const per_sequence_t WimaxNMR_sequence[] = {
4194 { &hf_ulp_wimaxBsID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_WimaxBsID },
4195 { &hf_ulp_relDelay , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_M32768_32767 },
4196 { &hf_ulp_relDelaystd , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_1023 },
4197 { &hf_ulp_rssi , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_255 },
4198 { &hf_ulp_rSSIstd , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_63 },
4199 { &hf_ulp_bSTxPower , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_255 },
4200 { &hf_ulp_cinr , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_255 },
4201 { &hf_ulp_cINRstd , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_63 },
4202 { &hf_ulp_bSLocation , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_ReportedLocation },
4203 { NULL, 0, 0, NULL }
4206 static int
4207 dissect_ulp_WimaxNMR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4208 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4209 ett_ulp_WimaxNMR, WimaxNMR_sequence);
4211 return offset;
4215 static const per_sequence_t WimaxNMRList_sequence_of[1] = {
4216 { &hf_ulp_WimaxNMRList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_WimaxNMR },
4219 static int
4220 dissect_ulp_WimaxNMRList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4221 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
4222 ett_ulp_WimaxNMRList, WimaxNMRList_sequence_of,
4223 1, maxWimaxBSMeas, false);
4225 return offset;
4229 static const per_sequence_t WimaxBSInformation_sequence[] = {
4230 { &hf_ulp_wimaxBsID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_WimaxBsID },
4231 { &hf_ulp_wimaxRTD , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_WimaxRTD },
4232 { &hf_ulp_wimaxNMRList , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_WimaxNMRList },
4233 { NULL, 0, 0, NULL }
4236 static int
4237 dissect_ulp_WimaxBSInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4238 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4239 ett_ulp_WimaxBSInformation, WimaxBSInformation_sequence);
4241 return offset;
4246 static int
4247 dissect_ulp_PhysCellIdNR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4248 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4249 0U, 1007U, NULL, false);
4251 return offset;
4256 static int
4257 dissect_ulp_ARFCN_NR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4258 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4259 0U, 3279165U, NULL, false);
4261 return offset;
4266 static int
4267 dissect_ulp_CellIdentityNR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4268 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
4269 36, 36, false, NULL, 0, NULL, NULL);
4271 return offset;
4275 static const per_sequence_t CellGlobalIdNR_sequence[] = {
4276 { &hf_ulp_plmn_Identity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_PLMN_Identity },
4277 { &hf_ulp_cellIdentityNR , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_CellIdentityNR },
4278 { NULL, 0, 0, NULL }
4281 static int
4282 dissect_ulp_CellGlobalIdNR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4283 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4284 ett_ulp_CellGlobalIdNR, CellGlobalIdNR_sequence);
4286 return offset;
4290 static const per_sequence_t NR_Measurements_sequence[] = {
4291 { &hf_ulp_rsrp_Range , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_127 },
4292 { &hf_ulp_rsrq_Range , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_127 },
4293 { &hf_ulp_sinr_Range , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_127 },
4294 { NULL, 0, 0, NULL }
4297 static int
4298 dissect_ulp_NR_Measurements(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4299 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4300 ett_ulp_NR_Measurements, NR_Measurements_sequence);
4302 return offset;
4307 static int
4308 dissect_ulp_INTEGER_0_3846(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4309 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4310 0U, 3846U, NULL, false);
4312 return offset;
4316 static const per_sequence_t ServCellNR_sequence[] = {
4317 { &hf_ulp_physCellId_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_PhysCellIdNR },
4318 { &hf_ulp_arfcn_NR , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_ARFCN_NR },
4319 { &hf_ulp_cellGlobalId_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_CellGlobalIdNR },
4320 { &hf_ulp_trackingAreaCode_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_TrackingAreaCodeNR },
4321 { &hf_ulp_ssb_Measurements, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_NR_Measurements },
4322 { &hf_ulp_csi_rs_Measurements, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_NR_Measurements },
4323 { &hf_ulp_ta_03 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_3846 },
4324 { NULL, 0, 0, NULL }
4327 static int
4328 dissect_ulp_ServCellNR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4329 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4330 ett_ulp_ServCellNR, ServCellNR_sequence);
4332 return offset;
4336 static const per_sequence_t ServingCellInformationNR_sequence_of[1] = {
4337 { &hf_ulp_ServingCellInformationNR_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_ServCellNR },
4340 static int
4341 dissect_ulp_ServingCellInformationNR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4342 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
4343 ett_ulp_ServingCellInformationNR, ServingCellInformationNR_sequence_of,
4344 1, maxNRServingCell, false);
4346 return offset;
4350 static const per_sequence_t MeasResultNR_sequence[] = {
4351 { &hf_ulp_physCellId_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_PhysCellIdNR },
4352 { &hf_ulp_arfcn_NR , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_ARFCN_NR },
4353 { &hf_ulp_cellGlobalId_01 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_CellGlobalIdNR },
4354 { &hf_ulp_trackingAreaCode_01, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_TrackingAreaCodeNR },
4355 { &hf_ulp_ssb_Measurements, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_NR_Measurements },
4356 { &hf_ulp_csi_rs_Measurements, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_NR_Measurements },
4357 { NULL, 0, 0, NULL }
4360 static int
4361 dissect_ulp_MeasResultNR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4362 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4363 ett_ulp_MeasResultNR, MeasResultNR_sequence);
4365 return offset;
4369 static const per_sequence_t MeasResultListNR_sequence_of[1] = {
4370 { &hf_ulp_MeasResultListNR_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_MeasResultNR },
4373 static int
4374 dissect_ulp_MeasResultListNR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4375 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
4376 ett_ulp_MeasResultListNR, MeasResultListNR_sequence_of,
4377 1, maxCellReportNR, false);
4379 return offset;
4383 static const per_sequence_t NRCellInformation_sequence[] = {
4384 { &hf_ulp_servingCellInformation, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_ServingCellInformationNR },
4385 { &hf_ulp_measuredResultsListNR, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_MeasResultListNR },
4386 { NULL, 0, 0, NULL }
4389 static int
4390 dissect_ulp_NRCellInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4391 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4392 ett_ulp_NRCellInformation, NRCellInformation_sequence);
4394 return offset;
4398 static const value_string ulp_Ver2_CellInfo_extension_vals[] = {
4399 { 0, "hrpdCell" },
4400 { 1, "umbCell" },
4401 { 2, "lteCell" },
4402 { 3, "wlanAP" },
4403 { 4, "wimaxBS" },
4404 { 5, "nrCell" },
4405 { 0, NULL }
4408 static const per_choice_t Ver2_CellInfo_extension_choice[] = {
4409 { 0, &hf_ulp_hrpdCell , ASN1_EXTENSION_ROOT , dissect_ulp_HrpdCellInformation },
4410 { 1, &hf_ulp_umbCell , ASN1_EXTENSION_ROOT , dissect_ulp_UmbCellInformation },
4411 { 2, &hf_ulp_lteCell , ASN1_EXTENSION_ROOT , dissect_ulp_LteCellInformation },
4412 { 3, &hf_ulp_wlanAP , ASN1_EXTENSION_ROOT , dissect_ulp_WlanAPInformation },
4413 { 4, &hf_ulp_wimaxBS , ASN1_EXTENSION_ROOT , dissect_ulp_WimaxBSInformation },
4414 { 5, &hf_ulp_nrCell , ASN1_NOT_EXTENSION_ROOT, dissect_ulp_NRCellInformation },
4415 { 0, NULL, 0, NULL }
4418 static int
4419 dissect_ulp_Ver2_CellInfo_extension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4420 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
4421 ett_ulp_Ver2_CellInfo_extension, Ver2_CellInfo_extension_choice,
4422 NULL);
4424 return offset;
4428 static const value_string ulp_CellInfo_vals[] = {
4429 { 0, "gsmCell" },
4430 { 1, "wcdmaCell" },
4431 { 2, "cdmaCell" },
4432 { 3, "ver2-CellInfo-extension" },
4433 { 0, NULL }
4436 static const per_choice_t CellInfo_choice[] = {
4437 { 0, &hf_ulp_gsmCell , ASN1_EXTENSION_ROOT , dissect_ulp_GsmCellInformation },
4438 { 1, &hf_ulp_wcdmaCell , ASN1_EXTENSION_ROOT , dissect_ulp_WcdmaCellInformation },
4439 { 2, &hf_ulp_cdmaCell , ASN1_EXTENSION_ROOT , dissect_ulp_CdmaCellInformation },
4440 { 3, &hf_ulp_ver2_CellInfo_extension, ASN1_NOT_EXTENSION_ROOT, dissect_ulp_Ver2_CellInfo_extension },
4441 { 0, NULL, 0, NULL }
4444 static int
4445 dissect_ulp_CellInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4446 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
4447 ett_ulp_CellInfo, CellInfo_choice,
4448 NULL);
4450 return offset;
4454 static const value_string ulp_Status_vals[] = {
4455 { 0, "stale" },
4456 { 1, "current" },
4457 { 2, "unknown" },
4458 { 0, NULL }
4462 static int
4463 dissect_ulp_Status(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4464 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4465 3, NULL, true, 0, NULL);
4467 return offset;
4471 static const per_sequence_t LocationId_sequence[] = {
4472 { &hf_ulp_cellInfo , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_CellInfo },
4473 { &hf_ulp_status , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_Status },
4474 { NULL, 0, 0, NULL }
4477 static int
4478 dissect_ulp_LocationId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4479 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4480 ett_ulp_LocationId, LocationId_sequence);
4482 return offset;
4487 static int
4488 dissect_ulp_RelativeTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4489 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4490 0U, 65535U, NULL, false);
4492 return offset;
4496 static const per_sequence_t LocationIdData_sequence[] = {
4497 { &hf_ulp_locationId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_LocationId },
4498 { &hf_ulp_relativetimestamp, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_RelativeTime },
4499 { &hf_ulp_servingFlag , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
4500 { NULL, 0, 0, NULL }
4503 static int
4504 dissect_ulp_LocationIdData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4505 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4506 ett_ulp_LocationIdData, LocationIdData_sequence);
4508 return offset;
4512 static const per_sequence_t MultipleLocationIds_sequence_of[1] = {
4513 { &hf_ulp_MultipleLocationIds_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_LocationIdData },
4516 static int
4517 dissect_ulp_MultipleLocationIds(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4518 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
4519 ett_ulp_MultipleLocationIds, MultipleLocationIds_sequence_of,
4520 1, maxLidSize, false);
4522 return offset;
4527 static int
4528 dissect_ulp_T_msisdn_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4529 tvbuff_t *msisdn_tvb;
4530 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
4531 8, 8, false, &msisdn_tvb);
4533 if (msisdn_tvb) {
4534 proto_tree *subtree;
4536 subtree = proto_item_add_subtree(actx->created_item, ett_ulp_thirdPartyId);
4537 dissect_e164_msisdn(msisdn_tvb, subtree, 0, 8, E164_ENC_BCD);
4541 return offset;
4546 static int
4547 dissect_ulp_T_sip_uri(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4548 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,
4549 1, 255, false, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789:./-_~%#@?", 72,
4550 NULL);
4552 return offset;
4557 static int
4558 dissect_ulp_T_ims_public_identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4559 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,
4560 1, 255, false, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789:./-_~%#@?", 72,
4561 NULL);
4563 return offset;
4568 static int
4569 dissect_ulp_T_mdn_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4570 tvbuff_t *mdn_tvb;
4571 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
4572 8, 8, false, &mdn_tvb);
4574 if (mdn_tvb) {
4575 proto_tree *subtree;
4577 subtree = proto_item_add_subtree(actx->created_item, ett_ulp_thirdPartyId);
4578 proto_tree_add_string(subtree, hf_ulp_mobile_directory_number, mdn_tvb, 0, 8, tvb_bcd_dig_to_str(actx->pinfo->pool, mdn_tvb, 0, 8, NULL, false));
4582 return offset;
4587 static int
4588 dissect_ulp_T_uri(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4589 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,
4590 1, 255, false, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./-_~%#", 69,
4591 NULL);
4594 return offset;
4598 static const value_string ulp_ThirdPartyID_vals[] = {
4599 { 0, "logicalName" },
4600 { 1, "msisdn" },
4601 { 2, "emailaddr" },
4602 { 3, "sip-uri" },
4603 { 4, "ims-public-identity" },
4604 { 5, "min" },
4605 { 6, "mdn" },
4606 { 7, "uri" },
4607 { 0, NULL }
4610 static const per_choice_t ThirdPartyID_choice[] = {
4611 { 0, &hf_ulp_logicalName , ASN1_EXTENSION_ROOT , dissect_ulp_IA5String_SIZE_1_1000 },
4612 { 1, &hf_ulp_msisdn_01 , ASN1_EXTENSION_ROOT , dissect_ulp_T_msisdn_01 },
4613 { 2, &hf_ulp_emailaddr , ASN1_EXTENSION_ROOT , dissect_ulp_IA5String_SIZE_1_1000 },
4614 { 3, &hf_ulp_sip_uri , ASN1_EXTENSION_ROOT , dissect_ulp_T_sip_uri },
4615 { 4, &hf_ulp_ims_public_identity, ASN1_EXTENSION_ROOT , dissect_ulp_T_ims_public_identity },
4616 { 5, &hf_ulp_min_01 , ASN1_EXTENSION_ROOT , dissect_ulp_BIT_STRING_SIZE_34 },
4617 { 6, &hf_ulp_mdn_01 , ASN1_EXTENSION_ROOT , dissect_ulp_T_mdn_01 },
4618 { 7, &hf_ulp_uri , ASN1_EXTENSION_ROOT , dissect_ulp_T_uri },
4619 { 0, NULL, 0, NULL }
4622 static int
4623 dissect_ulp_ThirdPartyID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4624 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
4625 ett_ulp_ThirdPartyID, ThirdPartyID_choice,
4626 NULL);
4628 return offset;
4632 static const per_sequence_t ThirdParty_sequence_of[1] = {
4633 { &hf_ulp_ThirdParty_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_ThirdPartyID },
4636 static int
4637 dissect_ulp_ThirdParty(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4638 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
4639 ett_ulp_ThirdParty, ThirdParty_sequence_of,
4640 1, 64, false);
4642 return offset;
4647 static int
4648 dissect_ulp_IA5String_SIZE_1_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4649 offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index,
4650 1, 24, false,
4651 NULL);
4653 return offset;
4658 static int
4659 dissect_ulp_IA5String_SIZE_1_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4660 offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index,
4661 1, 32, false,
4662 NULL);
4664 return offset;
4669 static int
4670 dissect_ulp_IA5String_SIZE_1_8(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4671 offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index,
4672 1, 8, false,
4673 NULL);
4675 return offset;
4679 static const per_sequence_t ApplicationID_sequence[] = {
4680 { &hf_ulp_appProvider , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_IA5String_SIZE_1_24 },
4681 { &hf_ulp_appName , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_IA5String_SIZE_1_32 },
4682 { &hf_ulp_appVersion , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_IA5String_SIZE_1_8 },
4683 { NULL, 0, 0, NULL }
4686 static int
4687 dissect_ulp_ApplicationID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4688 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4689 ett_ulp_ApplicationID, ApplicationID_sequence);
4691 return offset;
4696 static int
4697 dissect_ulp_UTCTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4698 offset = dissect_per_VisibleString(tvb, offset, actx, tree, hf_index,
4699 NO_BOUND, NO_BOUND, false,
4700 NULL);
4702 return offset;
4706 static const value_string ulp_T_latitudeSign_vals[] = {
4707 { 0, "north" },
4708 { 1, "south" },
4709 { 0, NULL }
4713 static int
4714 dissect_ulp_T_latitudeSign(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4715 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4716 2, NULL, false, 0, NULL);
4718 return offset;
4723 static int
4724 dissect_ulp_INTEGER_M8388608_8388607(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4725 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4726 -8388608, 8388607U, NULL, false);
4728 return offset;
4733 static int
4734 dissect_ulp_INTEGER_0_180(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4735 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4736 0U, 180U, NULL, false);
4738 return offset;
4742 static const per_sequence_t T_uncertainty_sequence[] = {
4743 { &hf_ulp_uncertaintySemiMajor, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_127 },
4744 { &hf_ulp_uncertaintySemiMinor, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_127 },
4745 { &hf_ulp_orientationMajorAxis, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_180 },
4746 { NULL, 0, 0, NULL }
4749 static int
4750 dissect_ulp_T_uncertainty(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4751 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4752 ett_ulp_T_uncertainty, T_uncertainty_sequence);
4754 return offset;
4759 static int
4760 dissect_ulp_INTEGER_0_100(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4761 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4762 0U, 100U, NULL, false);
4764 return offset;
4768 static const value_string ulp_T_altitudeDirection_vals[] = {
4769 { 0, "height" },
4770 { 1, "depth" },
4771 { 0, NULL }
4775 static int
4776 dissect_ulp_T_altitudeDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4777 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4778 2, NULL, false, 0, NULL);
4780 return offset;
4784 static const per_sequence_t AltitudeInfo_sequence[] = {
4785 { &hf_ulp_altitudeDirection, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_altitudeDirection },
4786 { &hf_ulp_altitude , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_32767 },
4787 { &hf_ulp_altUncertainty , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_127 },
4788 { NULL, 0, 0, NULL }
4791 static int
4792 dissect_ulp_AltitudeInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4793 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4794 ett_ulp_AltitudeInfo, AltitudeInfo_sequence);
4796 return offset;
4800 static const per_sequence_t PositionEstimate_sequence[] = {
4801 { &hf_ulp_latitudeSign , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_latitudeSign },
4802 { &hf_ulp_latitude , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_8388607 },
4803 { &hf_ulp_longitude , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_M8388608_8388607 },
4804 { &hf_ulp_uncertainty , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_uncertainty },
4805 { &hf_ulp_confidence , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_100 },
4806 { &hf_ulp_altitudeInfo , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_AltitudeInfo },
4807 { NULL, 0, 0, NULL }
4810 static int
4811 dissect_ulp_PositionEstimate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4812 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4813 ett_ulp_PositionEstimate, PositionEstimate_sequence);
4815 return offset;
4820 static int
4821 dissect_ulp_T_bearing(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4822 tvbuff_t *val_tvb;
4824 offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
4825 9, 9, false, NULL, 0, &val_tvb, NULL);
4827 if (val_tvb) {
4828 actx->created_item = proto_tree_add_bits_item(tree, hf_index, val_tvb, 0, 9, ENC_BIG_ENDIAN);
4832 return offset;
4837 static int
4838 dissect_ulp_T_horspeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4839 tvbuff_t *val_tvb;
4841 offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
4842 16, 16, false, NULL, 0, &val_tvb, NULL);
4844 if (val_tvb) {
4845 actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, 2, ENC_BIG_ENDIAN);
4849 return offset;
4853 static const per_sequence_t Horvel_sequence[] = {
4854 { &hf_ulp_bearing , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_bearing },
4855 { &hf_ulp_horspeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_horspeed },
4856 { NULL, 0, 0, NULL }
4859 static int
4860 dissect_ulp_Horvel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4861 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4862 ett_ulp_Horvel, Horvel_sequence);
4864 return offset;
4869 static int
4870 dissect_ulp_T_verdirect(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4871 tvbuff_t *val_tvb;
4873 offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
4874 1, 1, false, NULL, 0, &val_tvb, NULL);
4876 if (val_tvb) {
4877 actx->created_item = proto_tree_add_bits_item(tree, hf_index, val_tvb, 0, 1, ENC_NA);
4881 return offset;
4886 static int
4887 dissect_ulp_T_bearing_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4888 tvbuff_t *val_tvb;
4890 offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
4891 9, 9, false, NULL, 0, &val_tvb, NULL);
4893 if (val_tvb) {
4894 actx->created_item = proto_tree_add_bits_item(tree, hf_index, val_tvb, 0, 9, ENC_BIG_ENDIAN);
4898 return offset;
4903 static int
4904 dissect_ulp_T_horspeed_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4905 tvbuff_t *val_tvb;
4907 offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
4908 16, 16, false, NULL, 0, &val_tvb, NULL);
4910 if (val_tvb) {
4911 actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, 2, ENC_BIG_ENDIAN);
4915 return offset;
4920 static int
4921 dissect_ulp_T_verspeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4922 tvbuff_t *val_tvb;
4924 offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
4925 8, 8, false, NULL, 0, &val_tvb, NULL);
4927 if (val_tvb) {
4928 actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, 1, ENC_BIG_ENDIAN);
4932 return offset;
4936 static const per_sequence_t Horandvervel_sequence[] = {
4937 { &hf_ulp_verdirect , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_verdirect },
4938 { &hf_ulp_bearing_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_bearing_01 },
4939 { &hf_ulp_horspeed_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_horspeed_01 },
4940 { &hf_ulp_verspeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_verspeed },
4941 { NULL, 0, 0, NULL }
4944 static int
4945 dissect_ulp_Horandvervel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4946 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4947 ett_ulp_Horandvervel, Horandvervel_sequence);
4949 return offset;
4954 static int
4955 dissect_ulp_T_bearing_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4956 tvbuff_t *val_tvb;
4958 offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
4959 9, 9, false, NULL, 0, &val_tvb, NULL);
4961 if (val_tvb) {
4962 actx->created_item = proto_tree_add_bits_item(tree, hf_index, val_tvb, 0, 9, ENC_BIG_ENDIAN);
4966 return offset;
4971 static int
4972 dissect_ulp_T_horspeed_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4973 tvbuff_t *val_tvb;
4975 offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
4976 16, 16, false, NULL, 0, &val_tvb, NULL);
4978 if (val_tvb) {
4979 actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, 2, ENC_BIG_ENDIAN);
4983 return offset;
4988 static int
4989 dissect_ulp_T_uncertspeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4990 tvbuff_t *val_tvb;
4992 offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
4993 8, 8, false, NULL, 0, &val_tvb, NULL);
4995 if (val_tvb) {
4996 actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, 1, ENC_BIG_ENDIAN);
5000 return offset;
5004 static const per_sequence_t Horveluncert_sequence[] = {
5005 { &hf_ulp_bearing_02 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_bearing_02 },
5006 { &hf_ulp_horspeed_02 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_horspeed_02 },
5007 { &hf_ulp_uncertspeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_uncertspeed },
5008 { NULL, 0, 0, NULL }
5011 static int
5012 dissect_ulp_Horveluncert(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5013 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5014 ett_ulp_Horveluncert, Horveluncert_sequence);
5016 return offset;
5021 static int
5022 dissect_ulp_T_verdirect_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5023 tvbuff_t *val_tvb;
5025 offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
5026 1, 1, false, NULL, 0, &val_tvb, NULL);
5028 if (val_tvb) {
5029 actx->created_item = proto_tree_add_bits_item(tree, hf_index, val_tvb, 0, 1, ENC_NA);
5033 return offset;
5038 static int
5039 dissect_ulp_T_bearing_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5040 tvbuff_t *val_tvb;
5042 offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
5043 9, 9, false, NULL, 0, &val_tvb, NULL);
5045 if (val_tvb) {
5046 actx->created_item = proto_tree_add_bits_item(tree, hf_index, val_tvb, 0, 9, ENC_BIG_ENDIAN);
5050 return offset;
5055 static int
5056 dissect_ulp_T_horspeed_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5057 tvbuff_t *val_tvb;
5059 offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
5060 16, 16, false, NULL, 0, &val_tvb, NULL);
5062 if (val_tvb) {
5063 actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, 2, ENC_BIG_ENDIAN);
5067 return offset;
5072 static int
5073 dissect_ulp_T_verspeed_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5074 tvbuff_t *val_tvb;
5076 offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
5077 8, 8, false, NULL, 0, &val_tvb, NULL);
5079 if (val_tvb) {
5080 actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, 1, ENC_BIG_ENDIAN);
5084 return offset;
5089 static int
5090 dissect_ulp_T_horuncertspeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5091 tvbuff_t *val_tvb;
5093 offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
5094 8, 8, false, NULL, 0, &val_tvb, NULL);
5096 if (val_tvb) {
5097 actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, 1, ENC_BIG_ENDIAN);
5101 return offset;
5106 static int
5107 dissect_ulp_T_veruncertspeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5108 tvbuff_t *val_tvb;
5110 offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
5111 8, 8, false, NULL, 0, &val_tvb, NULL);
5113 if (val_tvb) {
5114 actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, 1, ENC_BIG_ENDIAN);
5118 return offset;
5122 static const per_sequence_t Horandveruncert_sequence[] = {
5123 { &hf_ulp_verdirect_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_verdirect_01 },
5124 { &hf_ulp_bearing_03 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_bearing_03 },
5125 { &hf_ulp_horspeed_03 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_horspeed_03 },
5126 { &hf_ulp_verspeed_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_verspeed_01 },
5127 { &hf_ulp_horuncertspeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_horuncertspeed },
5128 { &hf_ulp_veruncertspeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_veruncertspeed },
5129 { NULL, 0, 0, NULL }
5132 static int
5133 dissect_ulp_Horandveruncert(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5134 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5135 ett_ulp_Horandveruncert, Horandveruncert_sequence);
5137 return offset;
5141 static const value_string ulp_Velocity_vals[] = {
5142 { 0, "horvel" },
5143 { 1, "horandvervel" },
5144 { 2, "horveluncert" },
5145 { 3, "horandveruncert" },
5146 { 0, NULL }
5149 static const per_choice_t Velocity_choice[] = {
5150 { 0, &hf_ulp_horvel , ASN1_EXTENSION_ROOT , dissect_ulp_Horvel },
5151 { 1, &hf_ulp_horandvervel , ASN1_EXTENSION_ROOT , dissect_ulp_Horandvervel },
5152 { 2, &hf_ulp_horveluncert , ASN1_EXTENSION_ROOT , dissect_ulp_Horveluncert },
5153 { 3, &hf_ulp_horandveruncert , ASN1_EXTENSION_ROOT , dissect_ulp_Horandveruncert },
5154 { 0, NULL, 0, NULL }
5157 static int
5158 dissect_ulp_Velocity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5159 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5160 ett_ulp_Velocity, Velocity_choice,
5161 NULL);
5163 return offset;
5167 static const per_sequence_t Position_sequence[] = {
5168 { &hf_ulp_timestamp_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_UTCTime },
5169 { &hf_ulp_positionEstimate, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_PositionEstimate },
5170 { &hf_ulp_velocity , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_Velocity },
5171 { NULL, 0, 0, NULL }
5174 static int
5175 dissect_ulp_Position(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5176 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5177 ett_ulp_Position, Position_sequence);
5179 return offset;
5183 static const per_sequence_t Ver2_SUPL_START_extension_sequence[] = {
5184 { &hf_ulp_multipleLocationIds, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_MultipleLocationIds },
5185 { &hf_ulp_thirdParty , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_ThirdParty },
5186 { &hf_ulp_applicationID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_ApplicationID },
5187 { &hf_ulp_position , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_Position },
5188 { NULL, 0, 0, NULL }
5191 static int
5192 dissect_ulp_Ver2_SUPL_START_extension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5193 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5194 ett_ulp_Ver2_SUPL_START_extension, Ver2_SUPL_START_extension_sequence);
5196 return offset;
5200 static const per_sequence_t SUPLSTART_sequence[] = {
5201 { &hf_ulp_sETCapabilities , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_SETCapabilities },
5202 { &hf_ulp_locationId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_LocationId },
5203 { &hf_ulp_qoP , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_QoP },
5204 { &hf_ulp_ver2_SUPL_START_extension, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_Ver2_SUPL_START_extension },
5205 { NULL, 0, 0, NULL }
5208 static int
5209 dissect_ulp_SUPLSTART(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5210 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5211 ett_ulp_SUPLSTART, SUPLSTART_sequence);
5213 return offset;
5218 static int
5219 dissect_ulp_BIT_STRING_SIZE_256(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5220 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
5221 256, 256, false, NULL, 0, NULL, NULL);
5223 return offset;
5227 static const value_string ulp_SETAuthKey_vals[] = {
5228 { 0, "shortKey" },
5229 { 1, "longKey" },
5230 { 0, NULL }
5233 static const per_choice_t SETAuthKey_choice[] = {
5234 { 0, &hf_ulp_shortKey , ASN1_EXTENSION_ROOT , dissect_ulp_BIT_STRING_SIZE_128 },
5235 { 1, &hf_ulp_longKey , ASN1_EXTENSION_ROOT , dissect_ulp_BIT_STRING_SIZE_256 },
5236 { 0, NULL, 0, NULL }
5239 static int
5240 dissect_ulp_SETAuthKey(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5241 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5242 ett_ulp_SETAuthKey, SETAuthKey_choice,
5243 NULL);
5245 return offset;
5250 static int
5251 dissect_ulp_KeyIdentity4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5252 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
5253 128, 128, false, NULL, 0, NULL, NULL);
5255 return offset;
5260 static int
5261 dissect_ulp_SPCSETKey(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5262 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
5263 128, 128, false, NULL, 0, NULL, NULL);
5265 return offset;
5269 static const per_sequence_t SPCTID_sequence[] = {
5270 { &hf_ulp_rand , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_128 },
5271 { &hf_ulp_slpFQDN , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_FQDN },
5272 { NULL, 0, 0, NULL }
5275 static int
5276 dissect_ulp_SPCTID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5277 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5278 ett_ulp_SPCTID, SPCTID_sequence);
5280 return offset;
5285 static int
5286 dissect_ulp_SPCSETKeylifetime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5287 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5288 1U, 24U, NULL, false);
5290 return offset;
5294 static const per_sequence_t Ver2_SUPL_RESPONSE_extension_sequence[] = {
5295 { &hf_ulp_supportedNetworkInformation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SupportedNetworkInformation },
5296 { &hf_ulp_sPCSETKey , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SPCSETKey },
5297 { &hf_ulp_spctid , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SPCTID },
5298 { &hf_ulp_sPCSETKeylifetime, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SPCSETKeylifetime },
5299 { &hf_ulp_initialApproximateposition, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_Position },
5300 { &hf_ulp_gnssPosTechnology, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_GNSSPosTechnology },
5301 { NULL, 0, 0, NULL }
5304 static int
5305 dissect_ulp_Ver2_SUPL_RESPONSE_extension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5306 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5307 ett_ulp_Ver2_SUPL_RESPONSE_extension, Ver2_SUPL_RESPONSE_extension_sequence);
5309 return offset;
5313 static const per_sequence_t SUPLRESPONSE_sequence[] = {
5314 { &hf_ulp_posMethod , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_PosMethod },
5315 { &hf_ulp_sLPAddress , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SLPAddress },
5316 { &hf_ulp_sETAuthKey , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SETAuthKey },
5317 { &hf_ulp_keyIdentity4 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_KeyIdentity4 },
5318 { &hf_ulp_ver2_SUPL_RESPONSE_extension, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_Ver2_SUPL_RESPONSE_extension },
5319 { NULL, 0, 0, NULL }
5322 static int
5323 dissect_ulp_SUPLRESPONSE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5324 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5325 ett_ulp_SUPLRESPONSE, SUPLRESPONSE_sequence);
5327 return offset;
5332 static int
5333 dissect_ulp_INTEGER_0_167(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5334 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5335 0U, 167U, NULL, false);
5337 return offset;
5342 static int
5343 dissect_ulp_INTEGER_0_31(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5344 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5345 0U, 31U, NULL, false);
5347 return offset;
5352 static int
5353 dissect_ulp_INTEGER_0_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5354 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5355 0U, 10U, NULL, false);
5357 return offset;
5361 static const per_sequence_t SatelliteInfoElement_sequence[] = {
5362 { &hf_ulp_satId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_63 },
5363 { &hf_ulp_iode , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_255 },
5364 { NULL, 0, 0, NULL }
5367 static int
5368 dissect_ulp_SatelliteInfoElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5369 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5370 ett_ulp_SatelliteInfoElement, SatelliteInfoElement_sequence);
5372 return offset;
5376 static const per_sequence_t SatelliteInfo_sequence_of[1] = {
5377 { &hf_ulp_SatelliteInfo_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_SatelliteInfoElement },
5380 static int
5381 dissect_ulp_SatelliteInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5382 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
5383 ett_ulp_SatelliteInfo, SatelliteInfo_sequence_of,
5384 1, 31, false);
5386 return offset;
5390 static const per_sequence_t NavigationModel_sequence[] = {
5391 { &hf_ulp_gpsWeek , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_1023 },
5392 { &hf_ulp_gpsToe , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_167 },
5393 { &hf_ulp_nsat , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_31 },
5394 { &hf_ulp_toeLimit , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_10 },
5395 { &hf_ulp_satInfo , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SatelliteInfo },
5396 { NULL, 0, 0, NULL }
5399 static int
5400 dissect_ulp_NavigationModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5401 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5402 ett_ulp_NavigationModel, NavigationModel_sequence);
5404 return offset;
5408 static const per_sequence_t GanssRequestedCommonAssistanceDataList_sequence[] = {
5409 { &hf_ulp_ganssReferenceTime, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
5410 { &hf_ulp_ganssIonosphericModel, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
5411 { &hf_ulp_ganssAdditionalIonosphericModelForDataID00, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
5412 { &hf_ulp_ganssAdditionalIonosphericModelForDataID11, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
5413 { &hf_ulp_ganssEarthOrientationParameters, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
5414 { &hf_ulp_ganssAdditionalIonosphericModelForDataID01, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_BOOLEAN },
5415 { NULL, 0, 0, NULL }
5418 static int
5419 dissect_ulp_GanssRequestedCommonAssistanceDataList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5420 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5421 ett_ulp_GanssRequestedCommonAssistanceDataList, GanssRequestedCommonAssistanceDataList_sequence);
5423 return offset;
5428 static int
5429 dissect_ulp_T_ganssId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5430 uint32_t val;
5431 ulp_private_data_t *ulp_priv = ulp_get_private_data(actx);
5433 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5434 0U, 15U, &val, false);
5436 ulp_priv->ganss_req_gen_data_ganss_id = (uint8_t) val;
5439 return offset;
5444 static int
5445 dissect_ulp_T_ganssSBASid_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5446 tvbuff_t *val_tvb;
5448 offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
5449 3, 3, false, NULL, 0, &val_tvb, NULL);
5451 if (val_tvb) {
5452 proto_tree_add_bits_item(tree, hf_index, val_tvb, 0, 3, ENC_NA);
5456 return offset;
5461 static int
5462 dissect_ulp_DGANSS_Sig_Id_Req(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5463 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
5464 8, 8, false, NULL, 0, NULL, NULL);
5466 return offset;
5471 static int
5472 dissect_ulp_T_ganssWeek(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5473 ulp_private_data_t *ulp_priv = ulp_get_private_data(actx);
5475 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5476 0U, 4095U, NULL, false);
5478 if (ulp_priv->ganss_req_gen_data_ganss_id != 4) {
5479 /* Not GLONASS */
5480 proto_item_append_text(actx->created_item, "wk");
5481 } else {
5482 proto_item_append_text(actx->created_item, "d");
5486 return offset;
5491 static int
5492 dissect_ulp_T_ganssToe(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5493 uint32_t val;
5494 ulp_private_data_t *ulp_priv = ulp_get_private_data(actx);
5496 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5497 0U, 167U, &val, false);
5501 if (ulp_priv->ganss_req_gen_data_ganss_id != 4) {
5502 /* Not GLONASS */
5503 proto_item_append_text(actx->created_item, "h");
5504 } else {
5505 proto_item_set_text(actx->created_item, "%umin (%u)", 15*val, val);
5508 return offset;
5513 static int
5514 dissect_ulp_T_t_toeLimit(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5515 uint32_t val;
5516 ulp_private_data_t *ulp_priv = ulp_get_private_data(actx);
5518 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5519 0U, 15U, &val, false);
5523 if (ulp_priv->ganss_req_gen_data_ganss_id != 4) {
5524 /* Not GLONASS */
5525 proto_item_append_text(actx->created_item, "h");
5526 } else {
5527 proto_item_set_text(actx->created_item, "%umin (%u)", 30*val, val);
5530 return offset;
5534 static const per_sequence_t SatellitesListRelatedData_sequence[] = {
5535 { &hf_ulp_satId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_63 },
5536 { &hf_ulp_iod , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_1023 },
5537 { NULL, 0, 0, NULL }
5540 static int
5541 dissect_ulp_SatellitesListRelatedData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5542 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5543 ett_ulp_SatellitesListRelatedData, SatellitesListRelatedData_sequence);
5545 return offset;
5549 static const per_sequence_t SatellitesListRelatedDataList_sequence_of[1] = {
5550 { &hf_ulp_SatellitesListRelatedDataList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_SatellitesListRelatedData },
5553 static int
5554 dissect_ulp_SatellitesListRelatedDataList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5555 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
5556 ett_ulp_SatellitesListRelatedDataList, SatellitesListRelatedDataList_sequence_of,
5557 0, maxGANSSSat, false);
5559 return offset;
5563 static const per_sequence_t GanssNavigationModelData_sequence[] = {
5564 { &hf_ulp_ganssWeek , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_ganssWeek },
5565 { &hf_ulp_ganssToe , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_ganssToe },
5566 { &hf_ulp_t_toeLimit , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_t_toeLimit },
5567 { &hf_ulp_satellitesListRelatedDataList, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SatellitesListRelatedDataList },
5568 { NULL, 0, 0, NULL }
5571 static int
5572 dissect_ulp_GanssNavigationModelData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5573 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5574 ett_ulp_GanssNavigationModelData, GanssNavigationModelData_sequence);
5576 return offset;
5581 static int
5582 dissect_ulp_T_ganssTimeModels(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5583 tvbuff_t *val_tvb;
5584 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
5585 16, 16, false, NULL, 0, &val_tvb, NULL);
5587 if (val_tvb) {
5588 proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_ulp_ganssTimeModels);
5589 proto_tree_add_item(subtree, hf_ulp_ganssTimeModels_bit0, val_tvb, 0, 2, ENC_BIG_ENDIAN);
5590 proto_tree_add_item(subtree, hf_ulp_ganssTimeModels_bit1, val_tvb, 0, 2, ENC_BIG_ENDIAN);
5591 proto_tree_add_item(subtree, hf_ulp_ganssTimeModels_bit2, val_tvb, 0, 2, ENC_BIG_ENDIAN);
5592 proto_tree_add_item(subtree, hf_ulp_ganssTimeModels_bit3, val_tvb, 0, 2, ENC_BIG_ENDIAN);
5593 proto_tree_add_item(subtree, hf_ulp_ganssTimeModels_bit4, val_tvb, 0, 2, ENC_BIG_ENDIAN);
5594 proto_tree_add_item(subtree, hf_ulp_ganssTimeModels_spare, val_tvb, 0, 2, ENC_BIG_ENDIAN);
5598 return offset;
5603 static int
5604 dissect_ulp_INTEGER_0_59(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5605 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5606 0U, 59U, NULL, false);
5608 return offset;
5612 static const per_sequence_t T_ganssDataBitSatList_sequence_of[1] = {
5613 { &hf_ulp_ganssDataBitSatList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_63 },
5616 static int
5617 dissect_ulp_T_ganssDataBitSatList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5618 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
5619 ett_ulp_T_ganssDataBitSatList, T_ganssDataBitSatList_sequence_of,
5620 1, maxGANSSSat, false);
5622 return offset;
5626 static const per_sequence_t ReqDataBitAssistanceList_sequence[] = {
5627 { &hf_ulp_gnssSignals , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_GANSSSignals },
5628 { &hf_ulp_ganssDataBitInterval, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_15 },
5629 { &hf_ulp_ganssDataBitSatList, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_ganssDataBitSatList },
5630 { NULL, 0, 0, NULL }
5633 static int
5634 dissect_ulp_ReqDataBitAssistanceList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5635 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5636 ett_ulp_ReqDataBitAssistanceList, ReqDataBitAssistanceList_sequence);
5638 return offset;
5642 static const per_sequence_t GanssDataBits_sequence[] = {
5643 { &hf_ulp_ganssTODmin , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_59 },
5644 { &hf_ulp_reqDataBitAssistanceList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_ReqDataBitAssistanceList },
5645 { NULL, 0, 0, NULL }
5648 static int
5649 dissect_ulp_GanssDataBits(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5650 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5651 ett_ulp_GanssDataBits, GanssDataBits_sequence);
5653 return offset;
5657 static const per_sequence_t GanssAdditionalDataChoices_sequence[] = {
5658 { &hf_ulp_orbitModelID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_7 },
5659 { &hf_ulp_clockModelID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_7 },
5660 { &hf_ulp_utcModelID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_7 },
5661 { &hf_ulp_almanacModelID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_7 },
5662 { NULL, 0, 0, NULL }
5665 static int
5666 dissect_ulp_GanssAdditionalDataChoices(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5667 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5668 ett_ulp_GanssAdditionalDataChoices, GanssAdditionalDataChoices_sequence);
5670 return offset;
5675 static int
5676 dissect_ulp_INTEGER_1_256(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5677 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5678 1U, 256U, NULL, false);
5680 return offset;
5684 static const per_sequence_t ExtendedEphemeris_sequence[] = {
5685 { &hf_ulp_validity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_1_256 },
5686 { NULL, 0, 0, NULL }
5689 static int
5690 dissect_ulp_ExtendedEphemeris(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5691 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5692 ett_ulp_ExtendedEphemeris, ExtendedEphemeris_sequence);
5694 return offset;
5699 static int
5700 dissect_ulp_INTEGER_0_23(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5701 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5702 0U, 23U, NULL, false);
5704 return offset;
5708 static const per_sequence_t GANSSextEphTime_sequence[] = {
5709 { &hf_ulp_gANSSday , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_8191 },
5710 { &hf_ulp_gANSSTODhour , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_23 },
5711 { NULL, 0, 0, NULL }
5714 static int
5715 dissect_ulp_GANSSextEphTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5716 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5717 ett_ulp_GANSSextEphTime, GANSSextEphTime_sequence);
5719 return offset;
5723 static const per_sequence_t GanssExtendedEphCheck_sequence[] = {
5724 { &hf_ulp_beginTime_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_GANSSextEphTime },
5725 { &hf_ulp_endTime_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_GANSSextEphTime },
5726 { NULL, 0, 0, NULL }
5729 static int
5730 dissect_ulp_GanssExtendedEphCheck(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5731 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5732 ett_ulp_GanssExtendedEphCheck, GanssExtendedEphCheck_sequence);
5734 return offset;
5739 static int
5740 dissect_ulp_BDS_Sig_Id_Req(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5741 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
5742 8, 8, false, NULL, 0, NULL, NULL);
5744 return offset;
5748 static const per_sequence_t GanssReqGenericData_sequence[] = {
5749 { &hf_ulp_ganssId_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_ganssId },
5750 { &hf_ulp_ganssSBASid_01 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_ganssSBASid_01 },
5751 { &hf_ulp_ganssRealTimeIntegrity, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
5752 { &hf_ulp_ganssDifferentialCorrection, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_DGANSS_Sig_Id_Req },
5753 { &hf_ulp_ganssAlmanac , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
5754 { &hf_ulp_ganssNavigationModelData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_GanssNavigationModelData },
5755 { &hf_ulp_ganssTimeModels , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_ganssTimeModels },
5756 { &hf_ulp_ganssReferenceMeasurementInfo, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
5757 { &hf_ulp_ganssDataBits , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_GanssDataBits },
5758 { &hf_ulp_ganssUTCModel , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
5759 { &hf_ulp_ganssAdditionalDataChoices, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_GanssAdditionalDataChoices },
5760 { &hf_ulp_ganssAuxiliaryInformation, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
5761 { &hf_ulp_ganssExtendedEphemeris, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_ExtendedEphemeris },
5762 { &hf_ulp_ganssExtendedEphemerisCheck, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_GanssExtendedEphCheck },
5763 { &hf_ulp_bds_DifferentialCorrection, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_BDS_Sig_Id_Req },
5764 { &hf_ulp_bds_GridModelReq, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_BOOLEAN },
5765 { NULL, 0, 0, NULL }
5768 static int
5769 dissect_ulp_GanssReqGenericData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5770 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5771 ett_ulp_GanssReqGenericData, GanssReqGenericData_sequence);
5773 return offset;
5777 static const per_sequence_t GanssRequestedGenericAssistanceDataList_sequence_of[1] = {
5778 { &hf_ulp_GanssRequestedGenericAssistanceDataList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_GanssReqGenericData },
5781 static int
5782 dissect_ulp_GanssRequestedGenericAssistanceDataList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5783 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
5784 ett_ulp_GanssRequestedGenericAssistanceDataList, GanssRequestedGenericAssistanceDataList_sequence_of,
5785 1, maxGANSS, false);
5787 return offset;
5791 static const per_sequence_t GPSTime_sequence[] = {
5792 { &hf_ulp_gPSWeek , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_1023 },
5793 { &hf_ulp_gPSTOWhour , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_167 },
5794 { NULL, 0, 0, NULL }
5797 static int
5798 dissect_ulp_GPSTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5799 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5800 ett_ulp_GPSTime, GPSTime_sequence);
5802 return offset;
5806 static const per_sequence_t ExtendedEphCheck_sequence[] = {
5807 { &hf_ulp_beginTime , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_GPSTime },
5808 { &hf_ulp_endTime , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_GPSTime },
5809 { NULL, 0, 0, NULL }
5812 static int
5813 dissect_ulp_ExtendedEphCheck(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5814 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5815 ett_ulp_ExtendedEphCheck, ExtendedEphCheck_sequence);
5817 return offset;
5821 static const per_sequence_t Ver2_RequestedAssistData_extension_sequence[] = {
5822 { &hf_ulp_ganssRequestedCommonAssistanceDataList, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_GanssRequestedCommonAssistanceDataList },
5823 { &hf_ulp_ganssRequestedGenericAssistanceDataList, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_GanssRequestedGenericAssistanceDataList },
5824 { &hf_ulp_extendedEphemeris, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_ExtendedEphemeris },
5825 { &hf_ulp_extendedEphemerisCheck, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_ExtendedEphCheck },
5826 { NULL, 0, 0, NULL }
5829 static int
5830 dissect_ulp_Ver2_RequestedAssistData_extension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5831 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5832 ett_ulp_Ver2_RequestedAssistData_extension, Ver2_RequestedAssistData_extension_sequence);
5834 return offset;
5838 static const per_sequence_t RequestedAssistData_sequence[] = {
5839 { &hf_ulp_almanacRequested, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
5840 { &hf_ulp_utcModelRequested, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
5841 { &hf_ulp_ionosphericModelRequested, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
5842 { &hf_ulp_dgpsCorrectionsRequested, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
5843 { &hf_ulp_referenceLocationRequested, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
5844 { &hf_ulp_referenceTimeRequested, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
5845 { &hf_ulp_acquisitionAssistanceRequested, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
5846 { &hf_ulp_realTimeIntegrityRequested, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
5847 { &hf_ulp_navigationModelRequested, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
5848 { &hf_ulp_navigationModelData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_NavigationModel },
5849 { &hf_ulp_ver2_RequestedAssistData_extension, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_Ver2_RequestedAssistData_extension },
5850 { NULL, 0, 0, NULL }
5853 static int
5854 dissect_ulp_RequestedAssistData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5855 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5856 ett_ulp_RequestedAssistData, RequestedAssistData_sequence);
5858 return offset;
5863 static int
5864 dissect_ulp_OCTET_STRING_SIZE_1_8192(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5865 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
5866 1, 8192, false, NULL);
5868 return offset;
5873 static int
5874 dissect_ulp_T_rrlpPayload(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5875 tvbuff_t *rrlp_tvb;
5877 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
5878 1, 8192, false, &rrlp_tvb);
5881 if (rrlp_tvb && rrlp_handle) {
5882 call_dissector(rrlp_handle, rrlp_tvb, actx->pinfo, tree);
5886 return offset;
5891 static int
5892 dissect_ulp_T_lPPPayload_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5893 tvbuff_t *lpp_tvb;
5895 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
5896 1, 60000, false, &lpp_tvb);
5899 if (lpp_tvb && lpp_handle) {
5900 call_dissector(lpp_handle, lpp_tvb, actx->pinfo, tree);
5904 return offset;
5908 static const per_sequence_t T_lPPPayload_sequence_of[1] = {
5909 { &hf_ulp_lPPPayload_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_T_lPPPayload_item },
5912 static int
5913 dissect_ulp_T_lPPPayload(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5914 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
5915 ett_ulp_T_lPPPayload, T_lPPPayload_sequence_of,
5916 1, 3, false);
5918 return offset;
5923 static int
5924 dissect_ulp_OCTET_STRING_SIZE_1_60000(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5925 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
5926 1, 60000, false, NULL);
5928 return offset;
5932 static const per_sequence_t T_tia801Payload_sequence_of[1] = {
5933 { &hf_ulp_tia801Payload_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_OCTET_STRING_SIZE_1_60000 },
5936 static int
5937 dissect_ulp_T_tia801Payload(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5938 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
5939 ett_ulp_T_tia801Payload, T_tia801Payload_sequence_of,
5940 1, 3, false);
5942 return offset;
5946 static const per_sequence_t Ver2_PosPayLoad_extension_sequence[] = {
5947 { &hf_ulp_lPPPayload , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_lPPPayload },
5948 { &hf_ulp_tia801Payload , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_tia801Payload },
5949 { NULL, 0, 0, NULL }
5952 static int
5953 dissect_ulp_Ver2_PosPayLoad_extension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5954 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5955 ett_ulp_Ver2_PosPayLoad_extension, Ver2_PosPayLoad_extension_sequence);
5957 return offset;
5961 static const value_string ulp_PosPayLoad_vals[] = {
5962 { 0, "tia801payload" },
5963 { 1, "rrcPayload" },
5964 { 2, "rrlpPayload" },
5965 { 3, "ver2-PosPayLoad-extension" },
5966 { 0, NULL }
5969 static const per_choice_t PosPayLoad_choice[] = {
5970 { 0, &hf_ulp_tia801payload , ASN1_EXTENSION_ROOT , dissect_ulp_OCTET_STRING_SIZE_1_8192 },
5971 { 1, &hf_ulp_rrcPayload , ASN1_EXTENSION_ROOT , dissect_ulp_OCTET_STRING_SIZE_1_8192 },
5972 { 2, &hf_ulp_rrlpPayload , ASN1_EXTENSION_ROOT , dissect_ulp_T_rrlpPayload },
5973 { 3, &hf_ulp_ver2_PosPayLoad_extension, ASN1_NOT_EXTENSION_ROOT, dissect_ulp_Ver2_PosPayLoad_extension },
5974 { 0, NULL, 0, NULL }
5977 static int
5978 dissect_ulp_PosPayLoad(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5979 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5980 ett_ulp_PosPayLoad, PosPayLoad_choice,
5981 NULL);
5983 return offset;
5987 static const per_sequence_t T_utran_GPSTimingOfCell_sequence[] = {
5988 { &hf_ulp_ms_part , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_1023 },
5989 { &hf_ulp_ls_part , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_4294967295 },
5990 { NULL, 0, 0, NULL }
5993 static int
5994 dissect_ulp_T_utran_GPSTimingOfCell(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5995 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5996 ett_ulp_T_utran_GPSTimingOfCell, T_utran_GPSTimingOfCell_sequence);
5998 return offset;
6002 static const per_sequence_t T_fdd_01_sequence[] = {
6003 { &hf_ulp_referenceIdentity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_PrimaryCPICH_Info },
6004 { NULL, 0, 0, NULL }
6007 static int
6008 dissect_ulp_T_fdd_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6009 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6010 ett_ulp_T_fdd_01, T_fdd_01_sequence);
6012 return offset;
6016 static const per_sequence_t T_tdd_01_sequence[] = {
6017 { &hf_ulp_referenceIdentity_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_CellParametersID },
6018 { NULL, 0, 0, NULL }
6021 static int
6022 dissect_ulp_T_tdd_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6023 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6024 ett_ulp_T_tdd_01, T_tdd_01_sequence);
6026 return offset;
6030 static const value_string ulp_T_modeSpecificInfo_01_vals[] = {
6031 { 0, "fdd" },
6032 { 1, "tdd" },
6033 { 0, NULL }
6036 static const per_choice_t T_modeSpecificInfo_01_choice[] = {
6037 { 0, &hf_ulp_fdd_01 , ASN1_NO_EXTENSIONS , dissect_ulp_T_fdd_01 },
6038 { 1, &hf_ulp_tdd_01 , ASN1_NO_EXTENSIONS , dissect_ulp_T_tdd_01 },
6039 { 0, NULL, 0, NULL }
6042 static int
6043 dissect_ulp_T_modeSpecificInfo_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6044 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6045 ett_ulp_T_modeSpecificInfo_01, T_modeSpecificInfo_01_choice,
6046 NULL);
6048 return offset;
6053 static int
6054 dissect_ulp_INTEGER_0_4095(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6055 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
6056 0U, 4095U, NULL, false);
6058 return offset;
6062 static const per_sequence_t UTRAN_GPSReferenceTime_sequence[] = {
6063 { &hf_ulp_utran_GPSTimingOfCell, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_T_utran_GPSTimingOfCell },
6064 { &hf_ulp_modeSpecificInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_T_modeSpecificInfo_01 },
6065 { &hf_ulp_sfn , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_4095 },
6066 { NULL, 0, 0, NULL }
6069 static int
6070 dissect_ulp_UTRAN_GPSReferenceTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6071 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6072 ett_ulp_UTRAN_GPSReferenceTime, UTRAN_GPSReferenceTime_sequence);
6074 return offset;
6078 static const value_string ulp_UTRANGPSDriftRate_vals[] = {
6079 { 0, "utran-GPSDrift0" },
6080 { 1, "utran-GPSDrift1" },
6081 { 2, "utran-GPSDrift2" },
6082 { 3, "utran-GPSDrift5" },
6083 { 4, "utran-GPSDrift10" },
6084 { 5, "utran-GPSDrift15" },
6085 { 6, "utran-GPSDrift25" },
6086 { 7, "utran-GPSDrift50" },
6087 { 8, "utran-GPSDrift-1" },
6088 { 9, "utran-GPSDrift-2" },
6089 { 10, "utran-GPSDrift-5" },
6090 { 11, "utran-GPSDrift-10" },
6091 { 12, "utran-GPSDrift-15" },
6092 { 13, "utran-GPSDrift-25" },
6093 { 14, "utran-GPSDrift-50" },
6094 { 0, NULL }
6098 static int
6099 dissect_ulp_UTRANGPSDriftRate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6100 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
6101 15, NULL, false, 0, NULL);
6103 return offset;
6107 static const per_sequence_t UTRAN_GPSReferenceTimeAssistance_sequence[] = {
6108 { &hf_ulp_utran_GPSReferenceTime, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_UTRAN_GPSReferenceTime },
6109 { &hf_ulp_gpsReferenceTimeUncertainty, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_127 },
6110 { &hf_ulp_utranGPSDriftRate, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_UTRANGPSDriftRate },
6111 { NULL, 0, 0, NULL }
6114 static int
6115 dissect_ulp_UTRAN_GPSReferenceTimeAssistance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6116 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6117 ett_ulp_UTRAN_GPSReferenceTimeAssistance, UTRAN_GPSReferenceTimeAssistance_sequence);
6119 return offset;
6124 static int
6125 dissect_ulp_INTEGER_0_16383(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6126 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
6127 0U, 16383U, NULL, false);
6129 return offset;
6133 static const per_sequence_t T_set_GPSTimingOfCell_sequence[] = {
6134 { &hf_ulp_ms_part_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_16383 },
6135 { &hf_ulp_ls_part , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_4294967295 },
6136 { NULL, 0, 0, NULL }
6139 static int
6140 dissect_ulp_T_set_GPSTimingOfCell(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6141 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6142 ett_ulp_T_set_GPSTimingOfCell, T_set_GPSTimingOfCell_sequence);
6144 return offset;
6148 static const per_sequence_t T_fdd_02_sequence[] = {
6149 { &hf_ulp_referenceIdentity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_PrimaryCPICH_Info },
6150 { NULL, 0, 0, NULL }
6153 static int
6154 dissect_ulp_T_fdd_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6155 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6156 ett_ulp_T_fdd_02, T_fdd_02_sequence);
6158 return offset;
6162 static const per_sequence_t T_tdd_02_sequence[] = {
6163 { &hf_ulp_referenceIdentity_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_CellParametersID },
6164 { NULL, 0, 0, NULL }
6167 static int
6168 dissect_ulp_T_tdd_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6169 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6170 ett_ulp_T_tdd_02, T_tdd_02_sequence);
6172 return offset;
6176 static const value_string ulp_T_modeSpecificInfo_02_vals[] = {
6177 { 0, "fdd" },
6178 { 1, "tdd" },
6179 { 0, NULL }
6182 static const per_choice_t T_modeSpecificInfo_02_choice[] = {
6183 { 0, &hf_ulp_fdd_02 , ASN1_NO_EXTENSIONS , dissect_ulp_T_fdd_02 },
6184 { 1, &hf_ulp_tdd_02 , ASN1_NO_EXTENSIONS , dissect_ulp_T_tdd_02 },
6185 { 0, NULL, 0, NULL }
6188 static int
6189 dissect_ulp_T_modeSpecificInfo_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6190 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6191 ett_ulp_T_modeSpecificInfo_02, T_modeSpecificInfo_02_choice,
6192 NULL);
6194 return offset;
6198 static const per_sequence_t UTRAN_GPSReferenceTimeResult_sequence[] = {
6199 { &hf_ulp_set_GPSTimingOfCell, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_set_GPSTimingOfCell },
6200 { &hf_ulp_modeSpecificInfo_02, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_modeSpecificInfo_02 },
6201 { &hf_ulp_sfn , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_4095 },
6202 { &hf_ulp_gpsReferenceTimeUncertainty, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_127 },
6203 { NULL, 0, 0, NULL }
6206 static int
6207 dissect_ulp_UTRAN_GPSReferenceTimeResult(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6208 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6209 ett_ulp_UTRAN_GPSReferenceTimeResult, UTRAN_GPSReferenceTimeResult_sequence);
6211 return offset;
6216 static int
6217 dissect_ulp_INTEGER_0_86399(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6218 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
6219 0U, 86399U, NULL, false);
6221 return offset;
6226 static int
6227 dissect_ulp_INTEGER_0_3999999(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6228 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
6229 0U, 3999999U, NULL, false);
6231 return offset;
6235 static const per_sequence_t T_fdd_03_sequence[] = {
6236 { &hf_ulp_referenceIdentity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_PrimaryCPICH_Info },
6237 { NULL, 0, 0, NULL }
6240 static int
6241 dissect_ulp_T_fdd_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6242 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6243 ett_ulp_T_fdd_03, T_fdd_03_sequence);
6245 return offset;
6249 static const per_sequence_t T_tdd_03_sequence[] = {
6250 { &hf_ulp_referenceIdentity_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_CellParametersID },
6251 { NULL, 0, 0, NULL }
6254 static int
6255 dissect_ulp_T_tdd_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6256 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6257 ett_ulp_T_tdd_03, T_tdd_03_sequence);
6259 return offset;
6263 static const value_string ulp_T_modeSpecificInfo_03_vals[] = {
6264 { 0, "fdd" },
6265 { 1, "tdd" },
6266 { 0, NULL }
6269 static const per_choice_t T_modeSpecificInfo_03_choice[] = {
6270 { 0, &hf_ulp_fdd_03 , ASN1_NO_EXTENSIONS , dissect_ulp_T_fdd_03 },
6271 { 1, &hf_ulp_tdd_03 , ASN1_NO_EXTENSIONS , dissect_ulp_T_tdd_03 },
6272 { 0, NULL, 0, NULL }
6275 static int
6276 dissect_ulp_T_modeSpecificInfo_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6277 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6278 ett_ulp_T_modeSpecificInfo_03, T_modeSpecificInfo_03_choice,
6279 NULL);
6281 return offset;
6285 static const per_sequence_t UTRAN_GANSSReferenceTime_sequence[] = {
6286 { &hf_ulp_ganssTOD , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_86399 },
6287 { &hf_ulp_utran_GANSSTimingOfCell, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_3999999 },
6288 { &hf_ulp_modeSpecificInfo_03, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_modeSpecificInfo_03 },
6289 { &hf_ulp_sfn , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_4095 },
6290 { &hf_ulp_ganss_TODUncertainty, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_127 },
6291 { NULL, 0, 0, NULL }
6294 static int
6295 dissect_ulp_UTRAN_GANSSReferenceTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6296 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6297 ett_ulp_UTRAN_GANSSReferenceTime, UTRAN_GANSSReferenceTime_sequence);
6299 return offset;
6303 static const value_string ulp_UTRANGANSSDriftRate_vals[] = {
6304 { 0, "utran-GANSSDrift0" },
6305 { 1, "utran-GANSSDrift1" },
6306 { 2, "utran-GANSSDrift2" },
6307 { 3, "utran-GANSSDrift5" },
6308 { 4, "utran-GANSSDrift10" },
6309 { 5, "utran-GANSSDrift15" },
6310 { 6, "utran-GANSSDrift25" },
6311 { 7, "utran-GANSSDrift50" },
6312 { 8, "utran-GANSSDrift-1" },
6313 { 9, "utran-GANSSDrift-2" },
6314 { 10, "utran-GANSSDrift-5" },
6315 { 11, "utran-GANSSDrift-10" },
6316 { 12, "utran-GANSSDrift-15" },
6317 { 13, "utran-GANSSDrift-25" },
6318 { 14, "utran-GANSSDrift-50" },
6319 { 0, NULL }
6323 static int
6324 dissect_ulp_UTRANGANSSDriftRate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6325 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
6326 15, NULL, false, 0, NULL);
6328 return offset;
6332 static const per_sequence_t UTRAN_GANSSReferenceTimeAssistance_sequence[] = {
6333 { &hf_ulp_ganssDay , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_8191 },
6334 { &hf_ulp_ganssTimeID , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_15 },
6335 { &hf_ulp_utran_GANSSReferenceTime, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_UTRAN_GANSSReferenceTime },
6336 { &hf_ulp_utranGANSSDriftRate, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_UTRANGANSSDriftRate },
6337 { NULL, 0, 0, NULL }
6340 static int
6341 dissect_ulp_UTRAN_GANSSReferenceTimeAssistance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6342 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6343 ett_ulp_UTRAN_GANSSReferenceTimeAssistance, UTRAN_GANSSReferenceTimeAssistance_sequence);
6345 return offset;
6350 static int
6351 dissect_ulp_INTEGER_0_80(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6352 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
6353 0U, 80U, NULL, false);
6355 return offset;
6359 static const per_sequence_t T_set_GANSSTimingOfCell_sequence[] = {
6360 { &hf_ulp_ms_part_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_80 },
6361 { &hf_ulp_ls_part , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_4294967295 },
6362 { NULL, 0, 0, NULL }
6365 static int
6366 dissect_ulp_T_set_GANSSTimingOfCell(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6367 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6368 ett_ulp_T_set_GANSSTimingOfCell, T_set_GANSSTimingOfCell_sequence);
6370 return offset;
6374 static const per_sequence_t T_fdd_04_sequence[] = {
6375 { &hf_ulp_referenceIdentity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_PrimaryCPICH_Info },
6376 { NULL, 0, 0, NULL }
6379 static int
6380 dissect_ulp_T_fdd_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6381 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6382 ett_ulp_T_fdd_04, T_fdd_04_sequence);
6384 return offset;
6388 static const per_sequence_t T_tdd_04_sequence[] = {
6389 { &hf_ulp_referenceIdentity_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_CellParametersID },
6390 { NULL, 0, 0, NULL }
6393 static int
6394 dissect_ulp_T_tdd_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6395 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6396 ett_ulp_T_tdd_04, T_tdd_04_sequence);
6398 return offset;
6402 static const value_string ulp_T_modeSpecificInfo_04_vals[] = {
6403 { 0, "fdd" },
6404 { 1, "tdd" },
6405 { 0, NULL }
6408 static const per_choice_t T_modeSpecificInfo_04_choice[] = {
6409 { 0, &hf_ulp_fdd_04 , ASN1_NO_EXTENSIONS , dissect_ulp_T_fdd_04 },
6410 { 1, &hf_ulp_tdd_04 , ASN1_NO_EXTENSIONS , dissect_ulp_T_tdd_04 },
6411 { 0, NULL, 0, NULL }
6414 static int
6415 dissect_ulp_T_modeSpecificInfo_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6416 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6417 ett_ulp_T_modeSpecificInfo_04, T_modeSpecificInfo_04_choice,
6418 NULL);
6420 return offset;
6424 static const per_sequence_t SET_GANSSReferenceTime_sequence[] = {
6425 { &hf_ulp_set_GANSSTimingOfCell, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_set_GANSSTimingOfCell },
6426 { &hf_ulp_modeSpecificInfo_04, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_modeSpecificInfo_04 },
6427 { &hf_ulp_sfn , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_4095 },
6428 { &hf_ulp_ganss_TODUncertainty, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_127 },
6429 { NULL, 0, 0, NULL }
6432 static int
6433 dissect_ulp_SET_GANSSReferenceTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6434 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6435 ett_ulp_SET_GANSSReferenceTime, SET_GANSSReferenceTime_sequence);
6437 return offset;
6441 static const per_sequence_t UTRAN_GANSSReferenceTimeResult_sequence[] = {
6442 { &hf_ulp_ganssTimeID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_15 },
6443 { &hf_ulp_set_GANSSReferenceTime, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_SET_GANSSReferenceTime },
6444 { NULL, 0, 0, NULL }
6447 static int
6448 dissect_ulp_UTRAN_GANSSReferenceTimeResult(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6449 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6450 ett_ulp_UTRAN_GANSSReferenceTimeResult, UTRAN_GANSSReferenceTimeResult_sequence);
6452 return offset;
6456 static const per_sequence_t Ver2_SUPL_POS_extension_sequence[] = {
6457 { &hf_ulp_utran_GPSReferenceTimeAssistance, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_UTRAN_GPSReferenceTimeAssistance },
6458 { &hf_ulp_utran_GPSReferenceTimeResult, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_UTRAN_GPSReferenceTimeResult },
6459 { &hf_ulp_utran_GANSSReferenceTimeAssistance, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_UTRAN_GANSSReferenceTimeAssistance },
6460 { &hf_ulp_utran_GANSSReferenceTimeResult, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_UTRAN_GANSSReferenceTimeResult },
6461 { NULL, 0, 0, NULL }
6464 static int
6465 dissect_ulp_Ver2_SUPL_POS_extension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6466 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6467 ett_ulp_Ver2_SUPL_POS_extension, Ver2_SUPL_POS_extension_sequence);
6469 return offset;
6473 static const per_sequence_t SUPLPOS_sequence[] = {
6474 { &hf_ulp_posPayLoad , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_PosPayLoad },
6475 { &hf_ulp_velocity , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_Velocity },
6476 { &hf_ulp_ver2_SUPL_POS_extension, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_Ver2_SUPL_POS_extension },
6477 { NULL, 0, 0, NULL }
6480 static int
6481 dissect_ulp_SUPLPOS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6482 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6483 ett_ulp_SUPLPOS, SUPLPOS_sequence);
6485 return offset;
6490 static int
6491 dissect_ulp_Ver(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6492 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
6493 64, 64, false, NULL, 0, NULL, NULL);
6495 return offset;
6499 static const per_sequence_t Ver2_SUPL_POS_INIT_extension_sequence[] = {
6500 { &hf_ulp_multipleLocationIds, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_MultipleLocationIds },
6501 { &hf_ulp_utran_GPSReferenceTimeResult, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_UTRAN_GPSReferenceTimeResult },
6502 { &hf_ulp_utran_GANSSReferenceTimeResult, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_UTRAN_GANSSReferenceTimeResult },
6503 { NULL, 0, 0, NULL }
6506 static int
6507 dissect_ulp_Ver2_SUPL_POS_INIT_extension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6508 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6509 ett_ulp_Ver2_SUPL_POS_INIT_extension, Ver2_SUPL_POS_INIT_extension_sequence);
6511 return offset;
6515 static const per_sequence_t SUPLPOSINIT_sequence[] = {
6516 { &hf_ulp_sETCapabilities , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_SETCapabilities },
6517 { &hf_ulp_requestedAssistData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_RequestedAssistData },
6518 { &hf_ulp_locationId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_LocationId },
6519 { &hf_ulp_position , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_Position },
6520 { &hf_ulp_suplpos , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SUPLPOS },
6521 { &hf_ulp_ver , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_Ver },
6522 { &hf_ulp_ver2_SUPL_POS_INIT_extension, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_Ver2_SUPL_POS_INIT_extension },
6523 { NULL, 0, 0, NULL }
6526 static int
6527 dissect_ulp_SUPLPOSINIT(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6528 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6529 ett_ulp_SUPLPOSINIT, SUPLPOSINIT_sequence);
6531 return offset;
6535 static const value_string ulp_StatusCode_vals[] = {
6536 { 0, "unspecified" },
6537 { 1, "systemFailure" },
6538 { 2, "unexpectedMessage" },
6539 { 3, "protocolError" },
6540 { 4, "dataMissing" },
6541 { 5, "unexpectedDataValue" },
6542 { 6, "posMethodFailure" },
6543 { 7, "posMethodMismatch" },
6544 { 8, "posProtocolMismatch" },
6545 { 9, "targetSETnotReachable" },
6546 { 10, "versionNotSupported" },
6547 { 11, "resourceShortage" },
6548 { 12, "invalidSessionId" },
6549 { 13, "nonProxyModeNotSupported" },
6550 { 14, "proxyModeNotSupported" },
6551 { 15, "positioningNotPermitted" },
6552 { 16, "authNetFailure" },
6553 { 17, "authSuplinitFailure" },
6554 { 100, "consentDeniedByUser" },
6555 { 101, "consentGrantedByUser" },
6556 { 18, "ver2-incompatibleProtectionLevel" },
6557 { 19, "ver2-serviceNotSupported" },
6558 { 20, "ver2-insufficientInterval" },
6559 { 21, "ver2-noSUPLCoverage" },
6560 { 102, "ver2-sessionStopped" },
6561 { 103, "ver2-appIdDenied" },
6562 { 0, NULL }
6565 static uint32_t StatusCode_value_map[20+6] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 100, 101, 18, 19, 20, 21, 102, 103};
6567 static int
6568 dissect_ulp_StatusCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6569 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
6570 20, NULL, true, 6, StatusCode_value_map);
6572 return offset;
6577 static int
6578 dissect_ulp_INTEGER_M2147483648_2147483647(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6579 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
6580 INT32_MIN, 2147483647U, NULL, false);
6582 return offset;
6587 static int
6588 dissect_ulp_INTEGER_0_179(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6589 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
6590 0U, 179U, NULL, false);
6592 return offset;
6597 static int
6598 dissect_ulp_INTEGER_64000_1280000(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6599 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
6600 64000U, 1280000U, NULL, false);
6602 return offset;
6606 static const per_sequence_t HighAccuracyAltitudeInfo_sequence[] = {
6607 { &hf_ulp_altitude_02 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_64000_1280000 },
6608 { &hf_ulp_uncertaintyAltitude, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_255 },
6609 { &hf_ulp_verticalConfidence, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_100 },
6610 { NULL, 0, 0, NULL }
6613 static int
6614 dissect_ulp_HighAccuracyAltitudeInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6615 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6616 ett_ulp_HighAccuracyAltitudeInfo, HighAccuracyAltitudeInfo_sequence);
6618 return offset;
6622 static const per_sequence_t HighAccuracyPositionEstimate_sequence[] = {
6623 { &hf_ulp_degreesLatitude , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_M2147483648_2147483647 },
6624 { &hf_ulp_degreesLongitude, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_M2147483648_2147483647 },
6625 { &hf_ulp_uncertaintySemiMajor_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_255 },
6626 { &hf_ulp_uncertaintySemiMinor_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_255 },
6627 { &hf_ulp_orientationMajorAxis_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_179 },
6628 { &hf_ulp_horizontalConfidence, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_100 },
6629 { &hf_ulp_highAccuracyAltitudeInfo, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_HighAccuracyAltitudeInfo },
6630 { NULL, 0, 0, NULL }
6633 static int
6634 dissect_ulp_HighAccuracyPositionEstimate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6635 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6636 ett_ulp_HighAccuracyPositionEstimate, HighAccuracyPositionEstimate_sequence);
6638 return offset;
6642 static const per_sequence_t Ver2_HighAccuracyPosition_sequence[] = {
6643 { &hf_ulp_timestamp_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_UTCTime },
6644 { &hf_ulp_highAccuracyPositionEstimate, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_HighAccuracyPositionEstimate },
6645 { &hf_ulp_velocity , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_Velocity },
6646 { NULL, 0, 0, NULL }
6649 static int
6650 dissect_ulp_Ver2_HighAccuracyPosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6651 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6652 ett_ulp_Ver2_HighAccuracyPosition, Ver2_HighAccuracyPosition_sequence);
6654 return offset;
6658 static const per_sequence_t Ver2_SUPL_END_extension_sequence[] = {
6659 { &hf_ulp_sETCapabilities , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SETCapabilities },
6660 { &hf_ulp_ver2_HighAccuracyPosition, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_Ver2_HighAccuracyPosition },
6661 { NULL, 0, 0, NULL }
6664 static int
6665 dissect_ulp_Ver2_SUPL_END_extension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6666 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6667 ett_ulp_Ver2_SUPL_END_extension, Ver2_SUPL_END_extension_sequence);
6669 return offset;
6673 static const per_sequence_t SUPLEND_sequence[] = {
6674 { &hf_ulp_position , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_Position },
6675 { &hf_ulp_statusCode , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_StatusCode },
6676 { &hf_ulp_ver , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_Ver },
6677 { &hf_ulp_ver2_SUPL_END_extension, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_Ver2_SUPL_END_extension },
6678 { NULL, 0, 0, NULL }
6681 static int
6682 dissect_ulp_SUPLEND(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6683 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6684 ett_ulp_SUPLEND, SUPLEND_sequence);
6686 return offset;
6690 static const per_sequence_t SUPLAUTHREQ_sequence[] = {
6691 { &hf_ulp_ver , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_Ver },
6692 { &hf_ulp_sETCapabilities , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SETCapabilities },
6693 { NULL, 0, 0, NULL }
6696 static int
6697 dissect_ulp_SUPLAUTHREQ(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6698 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6699 ett_ulp_SUPLAUTHREQ, SUPLAUTHREQ_sequence);
6701 return offset;
6705 static const per_sequence_t SUPLAUTHRESP_sequence[] = {
6706 { &hf_ulp_sPCSETKey , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_SPCSETKey },
6707 { &hf_ulp_spctid , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_SPCTID },
6708 { &hf_ulp_sPCSETKeylifetime, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SPCSETKeylifetime },
6709 { NULL, 0, 0, NULL }
6712 static int
6713 dissect_ulp_SUPLAUTHRESP(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6714 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6715 ett_ulp_SUPLAUTHRESP, SUPLAUTHRESP_sequence);
6717 return offset;
6722 static int
6723 dissect_ulp_INTEGER_1_8639999(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6724 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
6725 1U, 8639999U, NULL, false);
6727 return offset;
6732 static int
6733 dissect_ulp_INTEGER_0_2678400(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6734 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
6735 0U, 2678400U, NULL, false);
6737 return offset;
6741 static const per_sequence_t PeriodicParams_sequence[] = {
6742 { &hf_ulp_numberOfFixes , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_1_8639999 },
6743 { &hf_ulp_intervalBetweenFixes, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_1_8639999 },
6744 { &hf_ulp_startTime , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_2678400 },
6745 { NULL, 0, 0, NULL }
6748 static int
6749 dissect_ulp_PeriodicParams(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6750 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6751 ett_ulp_PeriodicParams, PeriodicParams_sequence);
6753 return offset;
6757 static const value_string ulp_AreaEventType_vals[] = {
6758 { 0, "enteringArea" },
6759 { 1, "insideArea" },
6760 { 2, "outsideArea" },
6761 { 3, "leavingArea" },
6762 { 0, NULL }
6766 static int
6767 dissect_ulp_AreaEventType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6768 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
6769 4, NULL, true, 0, NULL);
6771 return offset;
6776 static int
6777 dissect_ulp_INTEGER_1_604800(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6778 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
6779 1U, 604800U, NULL, false);
6781 return offset;
6785 static const per_sequence_t RepeatedReportingParams_sequence[] = {
6786 { &hf_ulp_minimumIntervalTime, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_1_604800 },
6787 { &hf_ulp_maximumNumberOfReports, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_1_1024 },
6788 { NULL, 0, 0, NULL }
6791 static int
6792 dissect_ulp_RepeatedReportingParams(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6793 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6794 ett_ulp_RepeatedReportingParams, RepeatedReportingParams_sequence);
6796 return offset;
6801 static int
6802 dissect_ulp_INTEGER_0_11318399(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6803 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
6804 0U, 11318399U, NULL, false);
6806 return offset;
6810 static const value_string ulp_T_latitudeSign_01_vals[] = {
6811 { 0, "north" },
6812 { 1, "south" },
6813 { 0, NULL }
6817 static int
6818 dissect_ulp_T_latitudeSign_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6819 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
6820 2, NULL, false, 0, NULL);
6822 return offset;
6826 static const per_sequence_t Coordinate_sequence[] = {
6827 { &hf_ulp_latitudeSign_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_T_latitudeSign_01 },
6828 { &hf_ulp_coordinateLatitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_8388607 },
6829 { &hf_ulp_coordinateLongitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_M8388608_8388607 },
6830 { NULL, 0, 0, NULL }
6833 static int
6834 dissect_ulp_Coordinate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6835 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6836 ett_ulp_Coordinate, Coordinate_sequence);
6838 return offset;
6843 static int
6844 dissect_ulp_INTEGER_1_1000000(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6845 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
6846 1U, 1000000U, NULL, false);
6848 return offset;
6853 static int
6854 dissect_ulp_INTEGER_1_1500000(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6855 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
6856 1U, 1500000U, NULL, false);
6858 return offset;
6862 static const per_sequence_t CircularArea_sequence[] = {
6863 { &hf_ulp_coordinate , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_Coordinate },
6864 { &hf_ulp_radius , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_1_1000000 },
6865 { &hf_ulp_radius_min , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_INTEGER_1_1000000 },
6866 { &hf_ulp_radius_max , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_INTEGER_1_1500000 },
6867 { NULL, 0, 0, NULL }
6870 static int
6871 dissect_ulp_CircularArea(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6872 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6873 ett_ulp_CircularArea, CircularArea_sequence);
6875 return offset;
6879 static const per_sequence_t EllipticalArea_sequence[] = {
6880 { &hf_ulp_coordinate , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_Coordinate },
6881 { &hf_ulp_semiMajor , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_1_1000000 },
6882 { &hf_ulp_semiMajor_min , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_INTEGER_1_1000000 },
6883 { &hf_ulp_semiMajor_max , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_INTEGER_1_1500000 },
6884 { &hf_ulp_semiMinor , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_1_1000000 },
6885 { &hf_ulp_semiMinor_min , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_INTEGER_1_1000000 },
6886 { &hf_ulp_semiMinor_max , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_INTEGER_1_1500000 },
6887 { &hf_ulp_angle , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_179 },
6888 { NULL, 0, 0, NULL }
6891 static int
6892 dissect_ulp_EllipticalArea(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6893 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6894 ett_ulp_EllipticalArea, EllipticalArea_sequence);
6896 return offset;
6900 static const per_sequence_t PolygonDescription_sequence_of[1] = {
6901 { &hf_ulp_PolygonDescription_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_Coordinate },
6904 static int
6905 dissect_ulp_PolygonDescription(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6906 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
6907 ett_ulp_PolygonDescription, PolygonDescription_sequence_of,
6908 3, 15, false);
6910 return offset;
6915 static int
6916 dissect_ulp_INTEGER_1_100000(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6917 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
6918 1U, 100000U, NULL, false);
6920 return offset;
6924 static const per_sequence_t PolygonArea_sequence[] = {
6925 { &hf_ulp_polygonDescription, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_PolygonDescription },
6926 { &hf_ulp_polygonHysteresis, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_INTEGER_1_100000 },
6927 { NULL, 0, 0, NULL }
6930 static int
6931 dissect_ulp_PolygonArea(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6932 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6933 ett_ulp_PolygonArea, PolygonArea_sequence);
6935 return offset;
6939 static const value_string ulp_GeographicTargetArea_vals[] = {
6940 { 0, "circularArea" },
6941 { 1, "ellipticalArea" },
6942 { 2, "polygonArea" },
6943 { 0, NULL }
6946 static const per_choice_t GeographicTargetArea_choice[] = {
6947 { 0, &hf_ulp_circularArea , ASN1_EXTENSION_ROOT , dissect_ulp_CircularArea },
6948 { 1, &hf_ulp_ellipticalArea , ASN1_EXTENSION_ROOT , dissect_ulp_EllipticalArea },
6949 { 2, &hf_ulp_polygonArea , ASN1_EXTENSION_ROOT , dissect_ulp_PolygonArea },
6950 { 0, NULL, 0, NULL }
6953 static int
6954 dissect_ulp_GeographicTargetArea(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6955 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6956 ett_ulp_GeographicTargetArea, GeographicTargetArea_choice,
6957 NULL);
6959 return offset;
6963 static const per_sequence_t GeographicTargetAreaList_sequence_of[1] = {
6964 { &hf_ulp_GeographicTargetAreaList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_GeographicTargetArea },
6967 static int
6968 dissect_ulp_GeographicTargetAreaList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6969 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
6970 ett_ulp_GeographicTargetAreaList, GeographicTargetAreaList_sequence_of,
6971 1, maxNumGeoArea, false);
6973 return offset;
6977 static const per_sequence_t GSMAreaId_sequence[] = {
6978 { &hf_ulp_refMCC , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_999 },
6979 { &hf_ulp_refMNC , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_999 },
6980 { &hf_ulp_refLAC , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_65535 },
6981 { &hf_ulp_refCI , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_65535 },
6982 { NULL, 0, 0, NULL }
6985 static int
6986 dissect_ulp_GSMAreaId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6987 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6988 ett_ulp_GSMAreaId, GSMAreaId_sequence);
6990 return offset;
6994 static const per_sequence_t WCDMAAreaId_sequence[] = {
6995 { &hf_ulp_refMCC , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_999 },
6996 { &hf_ulp_refMNC , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_999 },
6997 { &hf_ulp_refLAC , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_65535 },
6998 { &hf_ulp_refUC , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_268435455 },
6999 { NULL, 0, 0, NULL }
7002 static int
7003 dissect_ulp_WCDMAAreaId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7004 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7005 ett_ulp_WCDMAAreaId, WCDMAAreaId_sequence);
7007 return offset;
7011 static const per_sequence_t CDMAAreaId_sequence[] = {
7012 { &hf_ulp_refSID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_65535 },
7013 { &hf_ulp_refNID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_32767 },
7014 { &hf_ulp_refBASEID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_65535 },
7015 { NULL, 0, 0, NULL }
7018 static int
7019 dissect_ulp_CDMAAreaId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7020 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7021 ett_ulp_CDMAAreaId, CDMAAreaId_sequence);
7023 return offset;
7027 static const per_sequence_t HRPDAreaId_sequence[] = {
7028 { &hf_ulp_refSECTORID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_128 },
7029 { NULL, 0, 0, NULL }
7032 static int
7033 dissect_ulp_HRPDAreaId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7034 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7035 ett_ulp_HRPDAreaId, HRPDAreaId_sequence);
7037 return offset;
7041 static const per_sequence_t UMBAreaId_sequence[] = {
7042 { &hf_ulp_refMCC , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_999 },
7043 { &hf_ulp_refMNC , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_999 },
7044 { &hf_ulp_refSECTORID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_BIT_STRING_SIZE_128 },
7045 { NULL, 0, 0, NULL }
7048 static int
7049 dissect_ulp_UMBAreaId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7050 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7051 ett_ulp_UMBAreaId, UMBAreaId_sequence);
7053 return offset;
7058 static int
7059 dissect_ulp_BIT_STRING_SIZE_29(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7060 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
7061 29, 29, false, NULL, 0, NULL, NULL);
7063 return offset;
7067 static const per_sequence_t LTEAreaId_sequence[] = {
7068 { &hf_ulp_refMCC , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_999 },
7069 { &hf_ulp_refMNC , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_999 },
7070 { &hf_ulp_refCI_01 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_BIT_STRING_SIZE_29 },
7071 { NULL, 0, 0, NULL }
7074 static int
7075 dissect_ulp_LTEAreaId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7076 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7077 ett_ulp_LTEAreaId, LTEAreaId_sequence);
7079 return offset;
7084 static int
7085 dissect_ulp_T_apMACAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7086 tvbuff_t *val_tvb;
7088 offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
7089 48, 48, false, NULL, 0, &val_tvb, NULL);
7091 if (val_tvb) {
7092 proto_tree_add_item(tree, hf_index, val_tvb, 0, 6, ENC_NA);
7096 return offset;
7100 static const per_sequence_t WLANAreaId_sequence[] = {
7101 { &hf_ulp_apMACAddress , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_apMACAddress },
7102 { NULL, 0, 0, NULL }
7105 static int
7106 dissect_ulp_WLANAreaId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7107 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7108 ett_ulp_WLANAreaId, WLANAreaId_sequence);
7110 return offset;
7114 static const per_sequence_t WimaxAreaId_sequence[] = {
7115 { &hf_ulp_bsID_MSB , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_BIT_STRING_SIZE_24 },
7116 { &hf_ulp_bsID_LSB , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_24 },
7117 { NULL, 0, 0, NULL }
7120 static int
7121 dissect_ulp_WimaxAreaId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7122 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7123 ett_ulp_WimaxAreaId, WimaxAreaId_sequence);
7125 return offset;
7130 static int
7131 dissect_ulp_BIT_STRING_SIZE_36(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7132 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
7133 36, 36, false, NULL, 0, NULL, NULL);
7135 return offset;
7139 static const per_sequence_t NRAreaId_sequence[] = {
7140 { &hf_ulp_refMCC , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_999 },
7141 { &hf_ulp_refMNC , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_999 },
7142 { &hf_ulp_refCI_02 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_BIT_STRING_SIZE_36 },
7143 { NULL, 0, 0, NULL }
7146 static int
7147 dissect_ulp_NRAreaId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7148 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7149 ett_ulp_NRAreaId, NRAreaId_sequence);
7151 return offset;
7155 static const value_string ulp_AreaId_vals[] = {
7156 { 0, "gSMAreaId" },
7157 { 1, "wCDMAAreaId" },
7158 { 2, "cDMAAreaId" },
7159 { 3, "hRPDAreaId" },
7160 { 4, "uMBAreaId" },
7161 { 5, "lTEAreaId" },
7162 { 6, "wLANAreaId" },
7163 { 7, "wiMAXAreaId" },
7164 { 8, "nRAreaId" },
7165 { 0, NULL }
7168 static const per_choice_t AreaId_choice[] = {
7169 { 0, &hf_ulp_gSMAreaId , ASN1_EXTENSION_ROOT , dissect_ulp_GSMAreaId },
7170 { 1, &hf_ulp_wCDMAAreaId , ASN1_EXTENSION_ROOT , dissect_ulp_WCDMAAreaId },
7171 { 2, &hf_ulp_cDMAAreaId , ASN1_EXTENSION_ROOT , dissect_ulp_CDMAAreaId },
7172 { 3, &hf_ulp_hRPDAreaId , ASN1_EXTENSION_ROOT , dissect_ulp_HRPDAreaId },
7173 { 4, &hf_ulp_uMBAreaId , ASN1_EXTENSION_ROOT , dissect_ulp_UMBAreaId },
7174 { 5, &hf_ulp_lTEAreaId , ASN1_EXTENSION_ROOT , dissect_ulp_LTEAreaId },
7175 { 6, &hf_ulp_wLANAreaId , ASN1_EXTENSION_ROOT , dissect_ulp_WLANAreaId },
7176 { 7, &hf_ulp_wiMAXAreaId , ASN1_EXTENSION_ROOT , dissect_ulp_WimaxAreaId },
7177 { 8, &hf_ulp_nRAreaId , ASN1_NOT_EXTENSION_ROOT, dissect_ulp_NRAreaId },
7178 { 0, NULL, 0, NULL }
7181 static int
7182 dissect_ulp_AreaId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7183 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7184 ett_ulp_AreaId, AreaId_choice,
7185 NULL);
7187 return offset;
7191 static const per_sequence_t AreaIdSet_sequence_of[1] = {
7192 { &hf_ulp_AreaIdSet_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_AreaId },
7195 static int
7196 dissect_ulp_AreaIdSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7197 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
7198 ett_ulp_AreaIdSet, AreaIdSet_sequence_of,
7199 1, maxAreaId, false);
7201 return offset;
7205 static const value_string ulp_AreaIdSetType_vals[] = {
7206 { 0, "border" },
7207 { 1, "within" },
7208 { 0, NULL }
7212 static int
7213 dissect_ulp_AreaIdSetType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7214 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
7215 2, NULL, true, 0, NULL);
7217 return offset;
7222 static int
7223 dissect_ulp_GeoAreaIndex(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7224 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
7225 1U, maxNumGeoArea, NULL, false);
7227 return offset;
7231 static const per_sequence_t GeoAreaMappingList_sequence_of[1] = {
7232 { &hf_ulp_GeoAreaMappingList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_GeoAreaIndex },
7235 static int
7236 dissect_ulp_GeoAreaMappingList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7237 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
7238 ett_ulp_GeoAreaMappingList, GeoAreaMappingList_sequence_of,
7239 1, maxNumGeoArea, false);
7241 return offset;
7245 static const per_sequence_t AreaIdList_sequence[] = {
7246 { &hf_ulp_areaIdSet , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_AreaIdSet },
7247 { &hf_ulp_areaIdSetType , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_AreaIdSetType },
7248 { &hf_ulp_geoAreaMappingList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_GeoAreaMappingList },
7249 { NULL, 0, 0, NULL }
7252 static int
7253 dissect_ulp_AreaIdList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7254 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7255 ett_ulp_AreaIdList, AreaIdList_sequence);
7257 return offset;
7261 static const per_sequence_t SEQUENCE_SIZE_1_maxAreaIdList_OF_AreaIdList_sequence_of[1] = {
7262 { &hf_ulp_areaIdLists_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_AreaIdList },
7265 static int
7266 dissect_ulp_SEQUENCE_SIZE_1_maxAreaIdList_OF_AreaIdList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7267 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
7268 ett_ulp_SEQUENCE_SIZE_1_maxAreaIdList_OF_AreaIdList, SEQUENCE_SIZE_1_maxAreaIdList_OF_AreaIdList_sequence_of,
7269 1, maxAreaIdList, false);
7271 return offset;
7275 static const per_sequence_t AreaEventParams_sequence[] = {
7276 { &hf_ulp_areaEventType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_AreaEventType },
7277 { &hf_ulp_locationEstimate, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
7278 { &hf_ulp_repeatedReportingParams, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_RepeatedReportingParams },
7279 { &hf_ulp_startTime , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_2678400 },
7280 { &hf_ulp_stopTime , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_11318399 },
7281 { &hf_ulp_geographicTargetAreaList, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_GeographicTargetAreaList },
7282 { &hf_ulp_areaIdLists , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SEQUENCE_SIZE_1_maxAreaIdList_OF_AreaIdList },
7283 { NULL, 0, 0, NULL }
7286 static int
7287 dissect_ulp_AreaEventParams(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7288 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7289 ett_ulp_AreaEventParams, AreaEventParams_sequence);
7291 return offset;
7295 static const value_string ulp_TriggerParams_vals[] = {
7296 { 0, "periodicParams" },
7297 { 1, "areaEventParams" },
7298 { 0, NULL }
7301 static const per_choice_t TriggerParams_choice[] = {
7302 { 0, &hf_ulp_periodicParams , ASN1_EXTENSION_ROOT , dissect_ulp_PeriodicParams },
7303 { 1, &hf_ulp_areaEventParams , ASN1_EXTENSION_ROOT , dissect_ulp_AreaEventParams },
7304 { 0, NULL, 0, NULL }
7307 static int
7308 dissect_ulp_TriggerParams(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7309 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7310 ett_ulp_TriggerParams, TriggerParams_choice,
7311 NULL);
7313 return offset;
7317 static const value_string ulp_CauseCode_vals[] = {
7318 { 0, "servingNetWorkNotInAreaIdList" },
7319 { 1, "sETCapabilitiesChanged" },
7320 { 2, "noSUPLCoverage" },
7321 { 0, NULL }
7325 static int
7326 dissect_ulp_CauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7327 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
7328 3, NULL, true, 0, NULL);
7330 return offset;
7334 static const per_sequence_t Ver2_SUPLTRIGGEREDSTART_sequence[] = {
7335 { &hf_ulp_sETCapabilities , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_SETCapabilities },
7336 { &hf_ulp_locationId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_LocationId },
7337 { &hf_ulp_ver , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_Ver },
7338 { &hf_ulp_qoP , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_QoP },
7339 { &hf_ulp_multipleLocationIds, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_MultipleLocationIds },
7340 { &hf_ulp_thirdParty , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_ThirdParty },
7341 { &hf_ulp_applicationID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_ApplicationID },
7342 { &hf_ulp_triggerType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_TriggerType },
7343 { &hf_ulp_triggerParams , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_TriggerParams },
7344 { &hf_ulp_position , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_Position },
7345 { &hf_ulp_reportingCap , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_ReportingCap },
7346 { &hf_ulp_causeCode , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_CauseCode },
7347 { NULL, 0, 0, NULL }
7350 static int
7351 dissect_ulp_Ver2_SUPLTRIGGEREDSTART(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7352 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7353 ett_ulp_Ver2_SUPLTRIGGEREDSTART, Ver2_SUPLTRIGGEREDSTART_sequence);
7355 return offset;
7359 static const value_string ulp_RepModee_vals[] = {
7360 { 1, "realtime" },
7361 { 2, "quasirealtime" },
7362 { 3, "batch" },
7363 { 0, NULL }
7366 static uint32_t RepModee_value_map[3+0] = {1, 2, 3};
7368 static int
7369 dissect_ulp_RepModee(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7370 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
7371 3, NULL, true, 0, RepModee_value_map);
7373 return offset;
7378 static int
7379 dissect_ulp_INTEGER_1_2048(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7380 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
7381 1U, 2048U, NULL, false);
7383 return offset;
7387 static const value_string ulp_BatchRepConditions_vals[] = {
7388 { 0, "num-interval" },
7389 { 1, "num-minutes" },
7390 { 2, "endofsession" },
7391 { 0, NULL }
7394 static const per_choice_t BatchRepConditions_choice[] = {
7395 { 0, &hf_ulp_num_interval , ASN1_EXTENSION_ROOT , dissect_ulp_INTEGER_1_1024 },
7396 { 1, &hf_ulp_num_minutes , ASN1_EXTENSION_ROOT , dissect_ulp_INTEGER_1_2048 },
7397 { 2, &hf_ulp_endofsession , ASN1_EXTENSION_ROOT , dissect_ulp_NULL },
7398 { 0, NULL, 0, NULL }
7401 static int
7402 dissect_ulp_BatchRepConditions(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7403 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7404 ett_ulp_BatchRepConditions, BatchRepConditions_choice,
7405 NULL);
7407 return offset;
7411 static const per_sequence_t BatchRepType_sequence[] = {
7412 { &hf_ulp_reportPosition , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
7413 { &hf_ulp_reportMeasurements, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
7414 { &hf_ulp_intermediateReports, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
7415 { &hf_ulp_discardOldest , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_BOOLEAN },
7416 { NULL, 0, 0, NULL }
7419 static int
7420 dissect_ulp_BatchRepType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7421 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7422 ett_ulp_BatchRepType, BatchRepType_sequence);
7424 return offset;
7428 static const per_sequence_t ReportingMode_sequence[] = {
7429 { &hf_ulp_repMode , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_RepModee },
7430 { &hf_ulp_batchRepConditions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_BatchRepConditions },
7431 { &hf_ulp_batchRepType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_BatchRepType },
7432 { NULL, 0, 0, NULL }
7435 static int
7436 dissect_ulp_ReportingMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7437 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7438 ett_ulp_ReportingMode, ReportingMode_sequence);
7440 return offset;
7444 static const per_sequence_t Ver2_SUPLTRIGGEREDRESPONSE_sequence[] = {
7445 { &hf_ulp_posMethod , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_PosMethod },
7446 { &hf_ulp_triggerParams , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_TriggerParams },
7447 { &hf_ulp_sLPAddress , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SLPAddress },
7448 { &hf_ulp_supportedNetworkInformation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SupportedNetworkInformation },
7449 { &hf_ulp_reportingMode , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_ReportingMode },
7450 { &hf_ulp_sPCSETKey , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SPCSETKey },
7451 { &hf_ulp_spctid , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SPCTID },
7452 { &hf_ulp_sPCSETKeylifetime, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SPCSETKeylifetime },
7453 { &hf_ulp_gnssPosTechnology, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_GNSSPosTechnology },
7454 { NULL, 0, 0, NULL }
7457 static int
7458 dissect_ulp_Ver2_SUPLTRIGGEREDRESPONSE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7459 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7460 ett_ulp_Ver2_SUPLTRIGGEREDRESPONSE, Ver2_SUPLTRIGGEREDRESPONSE_sequence);
7462 return offset;
7466 static const per_sequence_t Ver2_SUPLTRIGGEREDSTOP_sequence[] = {
7467 { &hf_ulp_statusCode , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_StatusCode },
7468 { NULL, 0, 0, NULL }
7471 static int
7472 dissect_ulp_Ver2_SUPLTRIGGEREDSTOP(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7473 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7474 ett_ulp_Ver2_SUPLTRIGGEREDSTOP, Ver2_SUPLTRIGGEREDSTOP_sequence);
7476 return offset;
7480 static const per_sequence_t Ver2_SUPLNOTIFY_sequence[] = {
7481 { &hf_ulp_notification , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_Notification },
7482 { NULL, 0, 0, NULL }
7485 static int
7486 dissect_ulp_Ver2_SUPLNOTIFY(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7487 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7488 ett_ulp_Ver2_SUPLNOTIFY, Ver2_SUPLNOTIFY_sequence);
7490 return offset;
7494 static const value_string ulp_NotificationResponse_vals[] = {
7495 { 0, "allowed" },
7496 { 1, "notAllowed" },
7497 { 0, NULL }
7501 static int
7502 dissect_ulp_NotificationResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7503 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
7504 2, NULL, true, 0, NULL);
7506 return offset;
7510 static const per_sequence_t Ver2_SUPLNOTIFYRESPONSE_sequence[] = {
7511 { &hf_ulp_notificationResponse, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_NotificationResponse },
7512 { NULL, 0, 0, NULL }
7515 static int
7516 dissect_ulp_Ver2_SUPLNOTIFYRESPONSE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7517 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7518 ett_ulp_Ver2_SUPLNOTIFYRESPONSE, Ver2_SUPLNOTIFYRESPONSE_sequence);
7520 return offset;
7524 static const per_sequence_t Ver2_SUPLSETINIT_sequence[] = {
7525 { &hf_ulp_targetSETID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_SETId },
7526 { &hf_ulp_qoP , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_QoP },
7527 { &hf_ulp_applicationID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_ApplicationID },
7528 { NULL, 0, 0, NULL }
7531 static int
7532 dissect_ulp_Ver2_SUPLSETINIT(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7533 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7534 ett_ulp_Ver2_SUPLSETINIT, Ver2_SUPLSETINIT_sequence);
7536 return offset;
7540 static const per_sequence_t SessionInformation_sequence[] = {
7541 { &hf_ulp_sessionID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_SessionID },
7542 { NULL, 0, 0, NULL }
7545 static int
7546 dissect_ulp_SessionInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7547 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7548 ett_ulp_SessionInformation, SessionInformation_sequence);
7550 return offset;
7554 static const per_sequence_t SessionList_sequence_of[1] = {
7555 { &hf_ulp_SessionList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_SessionInformation },
7558 static int
7559 dissect_ulp_SessionList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7560 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
7561 ett_ulp_SessionList, SessionList_sequence_of,
7562 1, maxnumSessions, false);
7564 return offset;
7568 static const per_sequence_t GANSSSignalsDescription_sequence[] = {
7569 { &hf_ulp_ganssId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_15 },
7570 { &hf_ulp_gANSSSignals , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_GANSSSignals },
7571 { NULL, 0, 0, NULL }
7574 static int
7575 dissect_ulp_GANSSSignalsDescription(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7576 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7577 ett_ulp_GANSSSignalsDescription, GANSSSignalsDescription_sequence);
7579 return offset;
7583 static const per_sequence_t GANSSsignalsInfo_sequence_of[1] = {
7584 { &hf_ulp_GANSSsignalsInfo_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_GANSSSignalsDescription },
7587 static int
7588 dissect_ulp_GANSSsignalsInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7589 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
7590 ett_ulp_GANSSsignalsInfo, GANSSsignalsInfo_sequence_of,
7591 1, maxGANSS, false);
7593 return offset;
7597 static const per_sequence_t PositionData_sequence[] = {
7598 { &hf_ulp_position , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_Position },
7599 { &hf_ulp_posMethod , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_PosMethod },
7600 { &hf_ulp_gnssPosTechnology, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_GNSSPosTechnology },
7601 { &hf_ulp_ganssSignalsInfo, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_GANSSsignalsInfo },
7602 { NULL, 0, 0, NULL }
7605 static int
7606 dissect_ulp_PositionData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7607 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7608 ett_ulp_PositionData, PositionData_sequence);
7610 return offset;
7614 static const value_string ulp_ResultCode_vals[] = {
7615 { 1, "outofradiocoverage" },
7616 { 2, "noposition" },
7617 { 3, "nomeasurement" },
7618 { 4, "nopositionnomeasurement" },
7619 { 5, "outofmemory" },
7620 { 6, "outofmemoryintermediatereporting" },
7621 { 7, "other" },
7622 { 0, NULL }
7625 static uint32_t ResultCode_value_map[7+0] = {1, 2, 3, 4, 5, 6, 7};
7627 static int
7628 dissect_ulp_ResultCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7629 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
7630 7, NULL, true, 0, ResultCode_value_map);
7632 return offset;
7637 static int
7638 dissect_ulp_INTEGER_0_31536000(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7639 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
7640 0U, 31536000U, NULL, false);
7642 return offset;
7646 static const value_string ulp_TimeStamp_vals[] = {
7647 { 0, "absoluteTime" },
7648 { 1, "relativeTime" },
7649 { 0, NULL }
7652 static const per_choice_t TimeStamp_choice[] = {
7653 { 0, &hf_ulp_absoluteTime , ASN1_NO_EXTENSIONS , dissect_ulp_UTCTime },
7654 { 1, &hf_ulp_relativeTime , ASN1_NO_EXTENSIONS , dissect_ulp_INTEGER_0_31536000 },
7655 { 0, NULL, 0, NULL }
7658 static int
7659 dissect_ulp_TimeStamp(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7660 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7661 ett_ulp_TimeStamp, TimeStamp_choice,
7662 NULL);
7664 return offset;
7668 static const per_sequence_t ReportData_sequence[] = {
7669 { &hf_ulp_positionData , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_PositionData },
7670 { &hf_ulp_multipleLocationIds, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_MultipleLocationIds },
7671 { &hf_ulp_resultCode , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_ResultCode },
7672 { &hf_ulp_timestamp , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_TimeStamp },
7673 { NULL, 0, 0, NULL }
7676 static int
7677 dissect_ulp_ReportData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7678 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7679 ett_ulp_ReportData, ReportData_sequence);
7681 return offset;
7685 static const per_sequence_t ReportDataList_sequence_of[1] = {
7686 { &hf_ulp_ReportDataList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_ReportData },
7689 static int
7690 dissect_ulp_ReportDataList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7691 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
7692 ett_ulp_ReportDataList, ReportDataList_sequence_of,
7693 1, 1024, false);
7695 return offset;
7699 static const per_sequence_t Ver2_SUPLREPORT_sequence[] = {
7700 { &hf_ulp_sessionList , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SessionList },
7701 { &hf_ulp_sETCapabilities , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SETCapabilities },
7702 { &hf_ulp_reportDataList , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_ReportDataList },
7703 { &hf_ulp_ver , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_Ver },
7704 { &hf_ulp_moreComponents , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_NULL },
7705 { NULL, 0, 0, NULL }
7708 static int
7709 dissect_ulp_Ver2_SUPLREPORT(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7710 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7711 ett_ulp_Ver2_SUPLREPORT, Ver2_SUPLREPORT_sequence);
7713 return offset;
7717 static const value_string ulp_UlpMessage_vals[] = {
7718 { 0, "msSUPLINIT" },
7719 { 1, "msSUPLSTART" },
7720 { 2, "msSUPLRESPONSE" },
7721 { 3, "msSUPLPOSINIT" },
7722 { 4, "msSUPLPOS" },
7723 { 5, "msSUPLEND" },
7724 { 6, "msSUPLAUTHREQ" },
7725 { 7, "msSUPLAUTHRESP" },
7726 { 8, "msSUPLTRIGGEREDSTART" },
7727 { 9, "msSUPLTRIGGEREDRESPONSE" },
7728 { 10, "msSUPLTRIGGEREDSTOP" },
7729 { 11, "msSUPLNOTIFY" },
7730 { 12, "msSUPLNOTIFYRESPONSE" },
7731 { 13, "msSUPLSETINIT" },
7732 { 14, "msSUPLREPORT" },
7733 { 0, NULL }
7736 static const per_choice_t UlpMessage_choice[] = {
7737 { 0, &hf_ulp_msSUPLINIT , ASN1_EXTENSION_ROOT , dissect_ulp_SUPLINIT },
7738 { 1, &hf_ulp_msSUPLSTART , ASN1_EXTENSION_ROOT , dissect_ulp_SUPLSTART },
7739 { 2, &hf_ulp_msSUPLRESPONSE , ASN1_EXTENSION_ROOT , dissect_ulp_SUPLRESPONSE },
7740 { 3, &hf_ulp_msSUPLPOSINIT , ASN1_EXTENSION_ROOT , dissect_ulp_SUPLPOSINIT },
7741 { 4, &hf_ulp_msSUPLPOS , ASN1_EXTENSION_ROOT , dissect_ulp_SUPLPOS },
7742 { 5, &hf_ulp_msSUPLEND , ASN1_EXTENSION_ROOT , dissect_ulp_SUPLEND },
7743 { 6, &hf_ulp_msSUPLAUTHREQ , ASN1_EXTENSION_ROOT , dissect_ulp_SUPLAUTHREQ },
7744 { 7, &hf_ulp_msSUPLAUTHRESP , ASN1_EXTENSION_ROOT , dissect_ulp_SUPLAUTHRESP },
7745 { 8, &hf_ulp_msSUPLTRIGGEREDSTART, ASN1_NOT_EXTENSION_ROOT, dissect_ulp_Ver2_SUPLTRIGGEREDSTART },
7746 { 9, &hf_ulp_msSUPLTRIGGEREDRESPONSE, ASN1_NOT_EXTENSION_ROOT, dissect_ulp_Ver2_SUPLTRIGGEREDRESPONSE },
7747 { 10, &hf_ulp_msSUPLTRIGGEREDSTOP, ASN1_NOT_EXTENSION_ROOT, dissect_ulp_Ver2_SUPLTRIGGEREDSTOP },
7748 { 11, &hf_ulp_msSUPLNOTIFY , ASN1_NOT_EXTENSION_ROOT, dissect_ulp_Ver2_SUPLNOTIFY },
7749 { 12, &hf_ulp_msSUPLNOTIFYRESPONSE, ASN1_NOT_EXTENSION_ROOT, dissect_ulp_Ver2_SUPLNOTIFYRESPONSE },
7750 { 13, &hf_ulp_msSUPLSETINIT , ASN1_NOT_EXTENSION_ROOT, dissect_ulp_Ver2_SUPLSETINIT },
7751 { 14, &hf_ulp_msSUPLREPORT , ASN1_NOT_EXTENSION_ROOT, dissect_ulp_Ver2_SUPLREPORT },
7752 { 0, NULL, 0, NULL }
7755 static int
7756 dissect_ulp_UlpMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7758 uint32_t UlpMessage;
7760 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7761 ett_ulp_UlpMessage, UlpMessage_choice,
7762 &UlpMessage);
7765 col_prepend_fstr(actx->pinfo->cinfo, COL_INFO, "%s ", val_to_str_const(UlpMessage,ulp_UlpMessage_vals,"Unknown"));
7768 return offset;
7772 static const per_sequence_t ULP_PDU_sequence[] = {
7773 { &hf_ulp_length , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_65535 },
7774 { &hf_ulp_version , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_Version },
7775 { &hf_ulp_sessionID , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_SessionID },
7776 { &hf_ulp_message , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_UlpMessage },
7777 { NULL, 0, 0, NULL }
7780 static int
7781 dissect_ulp_ULP_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7782 proto_item *it;
7783 proto_tree *ulp_tree;
7785 it = proto_tree_add_item(tree, proto_ulp, tvb, 0, -1, ENC_NA);
7786 ulp_tree = proto_item_add_subtree(it, ett_ulp);
7788 col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, PSNAME);
7789 col_clear(actx->pinfo->cinfo, COL_INFO);
7790 offset = dissect_per_sequence(tvb, offset, actx, ulp_tree, hf_index,
7791 ett_ulp_ULP_PDU, ULP_PDU_sequence);
7794 return offset;
7797 /*--- PDUs ---*/
7799 static int dissect_ULP_PDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
7800 int offset = 0;
7801 asn1_ctx_t asn1_ctx;
7802 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
7803 offset = dissect_ulp_ULP_PDU(tvb, offset, &asn1_ctx, tree, hf_ulp_ULP_PDU_PDU);
7804 offset += 7; offset >>= 3;
7805 return offset;
7810 static unsigned
7811 get_ulp_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset, void *data _U_)
7813 /* PDU length = Message length */
7814 return tvb_get_ntohs(tvb,offset);
7817 static int
7818 dissect_ulp_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
7820 tcp_dissect_pdus(tvb, pinfo, tree, ulp_desegment, ULP_HEADER_SIZE,
7821 get_ulp_pdu_len, dissect_ULP_PDU_PDU, data);
7822 return tvb_captured_length(tvb);
7825 void proto_reg_handoff_ulp(void);
7827 /*--- proto_register_ulp -------------------------------------------*/
7828 void proto_register_ulp(void) {
7830 /* List of fields */
7831 static hf_register_info hf[] = {
7833 { &hf_ulp_ULP_PDU_PDU,
7834 { "ULP-PDU", "ulp.ULP_PDU_element",
7835 FT_NONE, BASE_NONE, NULL, 0,
7836 NULL, HFILL }},
7837 { &hf_ulp_length,
7838 { "length", "ulp.length",
7839 FT_UINT32, BASE_DEC, NULL, 0,
7840 "INTEGER_0_65535", HFILL }},
7841 { &hf_ulp_version,
7842 { "version", "ulp.version_element",
7843 FT_NONE, BASE_NONE, NULL, 0,
7844 NULL, HFILL }},
7845 { &hf_ulp_sessionID,
7846 { "sessionID", "ulp.sessionID_element",
7847 FT_NONE, BASE_NONE, NULL, 0,
7848 NULL, HFILL }},
7849 { &hf_ulp_message,
7850 { "message", "ulp.message",
7851 FT_UINT32, BASE_DEC, VALS(ulp_UlpMessage_vals), 0,
7852 "UlpMessage", HFILL }},
7853 { &hf_ulp_msSUPLINIT,
7854 { "msSUPLINIT", "ulp.msSUPLINIT_element",
7855 FT_NONE, BASE_NONE, NULL, 0,
7856 "SUPLINIT", HFILL }},
7857 { &hf_ulp_msSUPLSTART,
7858 { "msSUPLSTART", "ulp.msSUPLSTART_element",
7859 FT_NONE, BASE_NONE, NULL, 0,
7860 "SUPLSTART", HFILL }},
7861 { &hf_ulp_msSUPLRESPONSE,
7862 { "msSUPLRESPONSE", "ulp.msSUPLRESPONSE_element",
7863 FT_NONE, BASE_NONE, NULL, 0,
7864 "SUPLRESPONSE", HFILL }},
7865 { &hf_ulp_msSUPLPOSINIT,
7866 { "msSUPLPOSINIT", "ulp.msSUPLPOSINIT_element",
7867 FT_NONE, BASE_NONE, NULL, 0,
7868 "SUPLPOSINIT", HFILL }},
7869 { &hf_ulp_msSUPLPOS,
7870 { "msSUPLPOS", "ulp.msSUPLPOS_element",
7871 FT_NONE, BASE_NONE, NULL, 0,
7872 "SUPLPOS", HFILL }},
7873 { &hf_ulp_msSUPLEND,
7874 { "msSUPLEND", "ulp.msSUPLEND_element",
7875 FT_NONE, BASE_NONE, NULL, 0,
7876 "SUPLEND", HFILL }},
7877 { &hf_ulp_msSUPLAUTHREQ,
7878 { "msSUPLAUTHREQ", "ulp.msSUPLAUTHREQ_element",
7879 FT_NONE, BASE_NONE, NULL, 0,
7880 "SUPLAUTHREQ", HFILL }},
7881 { &hf_ulp_msSUPLAUTHRESP,
7882 { "msSUPLAUTHRESP", "ulp.msSUPLAUTHRESP_element",
7883 FT_NONE, BASE_NONE, NULL, 0,
7884 "SUPLAUTHRESP", HFILL }},
7885 { &hf_ulp_msSUPLTRIGGEREDSTART,
7886 { "msSUPLTRIGGEREDSTART", "ulp.msSUPLTRIGGEREDSTART_element",
7887 FT_NONE, BASE_NONE, NULL, 0,
7888 "Ver2_SUPLTRIGGEREDSTART", HFILL }},
7889 { &hf_ulp_msSUPLTRIGGEREDRESPONSE,
7890 { "msSUPLTRIGGEREDRESPONSE", "ulp.msSUPLTRIGGEREDRESPONSE_element",
7891 FT_NONE, BASE_NONE, NULL, 0,
7892 "Ver2_SUPLTRIGGEREDRESPONSE", HFILL }},
7893 { &hf_ulp_msSUPLTRIGGEREDSTOP,
7894 { "msSUPLTRIGGEREDSTOP", "ulp.msSUPLTRIGGEREDSTOP_element",
7895 FT_NONE, BASE_NONE, NULL, 0,
7896 "Ver2_SUPLTRIGGEREDSTOP", HFILL }},
7897 { &hf_ulp_msSUPLNOTIFY,
7898 { "msSUPLNOTIFY", "ulp.msSUPLNOTIFY_element",
7899 FT_NONE, BASE_NONE, NULL, 0,
7900 "Ver2_SUPLNOTIFY", HFILL }},
7901 { &hf_ulp_msSUPLNOTIFYRESPONSE,
7902 { "msSUPLNOTIFYRESPONSE", "ulp.msSUPLNOTIFYRESPONSE_element",
7903 FT_NONE, BASE_NONE, NULL, 0,
7904 "Ver2_SUPLNOTIFYRESPONSE", HFILL }},
7905 { &hf_ulp_msSUPLSETINIT,
7906 { "msSUPLSETINIT", "ulp.msSUPLSETINIT_element",
7907 FT_NONE, BASE_NONE, NULL, 0,
7908 "Ver2_SUPLSETINIT", HFILL }},
7909 { &hf_ulp_msSUPLREPORT,
7910 { "msSUPLREPORT", "ulp.msSUPLREPORT_element",
7911 FT_NONE, BASE_NONE, NULL, 0,
7912 "Ver2_SUPLREPORT", HFILL }},
7913 { &hf_ulp_posMethod,
7914 { "posMethod", "ulp.posMethod",
7915 FT_UINT32, BASE_DEC, VALS(ulp_PosMethod_vals), 0,
7916 NULL, HFILL }},
7917 { &hf_ulp_notification,
7918 { "notification", "ulp.notification_element",
7919 FT_NONE, BASE_NONE, NULL, 0,
7920 NULL, HFILL }},
7921 { &hf_ulp_sLPAddress,
7922 { "sLPAddress", "ulp.sLPAddress",
7923 FT_UINT32, BASE_DEC, VALS(ulp_SLPAddress_vals), 0,
7924 NULL, HFILL }},
7925 { &hf_ulp_qoP,
7926 { "qoP", "ulp.qoP_element",
7927 FT_NONE, BASE_NONE, NULL, 0,
7928 NULL, HFILL }},
7929 { &hf_ulp_sLPMode,
7930 { "sLPMode", "ulp.sLPMode",
7931 FT_UINT32, BASE_DEC, VALS(ulp_SLPMode_vals), 0,
7932 NULL, HFILL }},
7933 { &hf_ulp_mac,
7934 { "mac", "ulp.mac",
7935 FT_BYTES, BASE_NONE, NULL, 0,
7936 NULL, HFILL }},
7937 { &hf_ulp_keyIdentity,
7938 { "keyIdentity", "ulp.keyIdentity",
7939 FT_BYTES, BASE_NONE, NULL, 0,
7940 NULL, HFILL }},
7941 { &hf_ulp_ver2_SUPL_INIT_extension,
7942 { "ver2-SUPL-INIT-extension", "ulp.ver2_SUPL_INIT_extension_element",
7943 FT_NONE, BASE_NONE, NULL, 0,
7944 NULL, HFILL }},
7945 { &hf_ulp_notificationType,
7946 { "notificationType", "ulp.notificationType",
7947 FT_UINT32, BASE_DEC, VALS(ulp_NotificationType_vals), 0,
7948 NULL, HFILL }},
7949 { &hf_ulp_encodingType,
7950 { "encodingType", "ulp.encodingType",
7951 FT_UINT32, BASE_DEC, VALS(ulp_EncodingType_vals), 0,
7952 NULL, HFILL }},
7953 { &hf_ulp_requestorId,
7954 { "requestorId", "ulp.requestorId",
7955 FT_STRING, BASE_NONE, NULL, 0,
7956 NULL, HFILL }},
7957 { &hf_ulp_requestorIdType,
7958 { "requestorIdType", "ulp.requestorIdType",
7959 FT_UINT32, BASE_DEC, VALS(ulp_FormatIndicator_vals), 0,
7960 "FormatIndicator", HFILL }},
7961 { &hf_ulp_clientName,
7962 { "clientName", "ulp.clientName",
7963 FT_STRING, BASE_NONE, NULL, 0,
7964 NULL, HFILL }},
7965 { &hf_ulp_clientNameType,
7966 { "clientNameType", "ulp.clientNameType",
7967 FT_UINT32, BASE_DEC, VALS(ulp_FormatIndicator_vals), 0,
7968 "FormatIndicator", HFILL }},
7969 { &hf_ulp_ver2_Notification_extension,
7970 { "ver2-Notification-extension", "ulp.ver2_Notification_extension_element",
7971 FT_NONE, BASE_NONE, NULL, 0,
7972 NULL, HFILL }},
7973 { &hf_ulp_sETCapabilities,
7974 { "sETCapabilities", "ulp.sETCapabilities_element",
7975 FT_NONE, BASE_NONE, NULL, 0,
7976 NULL, HFILL }},
7977 { &hf_ulp_locationId,
7978 { "locationId", "ulp.locationId_element",
7979 FT_NONE, BASE_NONE, NULL, 0,
7980 NULL, HFILL }},
7981 { &hf_ulp_ver2_SUPL_START_extension,
7982 { "ver2-SUPL-START-extension", "ulp.ver2_SUPL_START_extension_element",
7983 FT_NONE, BASE_NONE, NULL, 0,
7984 NULL, HFILL }},
7985 { &hf_ulp_posTechnology,
7986 { "posTechnology", "ulp.posTechnology_element",
7987 FT_NONE, BASE_NONE, NULL, 0,
7988 NULL, HFILL }},
7989 { &hf_ulp_prefMethod,
7990 { "prefMethod", "ulp.prefMethod",
7991 FT_UINT32, BASE_DEC, VALS(ulp_PrefMethod_vals), 0,
7992 NULL, HFILL }},
7993 { &hf_ulp_posProtocol,
7994 { "posProtocol", "ulp.posProtocol_element",
7995 FT_NONE, BASE_NONE, NULL, 0,
7996 NULL, HFILL }},
7997 { &hf_ulp_ver2_SETCapabilities_extension,
7998 { "ver2-SETCapabilities-extension", "ulp.ver2_SETCapabilities_extension_element",
7999 FT_NONE, BASE_NONE, NULL, 0,
8000 NULL, HFILL }},
8001 { &hf_ulp_agpsSETassisted,
8002 { "agpsSETassisted", "ulp.agpsSETassisted",
8003 FT_BOOLEAN, BASE_NONE, NULL, 0,
8004 "BOOLEAN", HFILL }},
8005 { &hf_ulp_agpsSETBased,
8006 { "agpsSETBased", "ulp.agpsSETBased",
8007 FT_BOOLEAN, BASE_NONE, NULL, 0,
8008 "BOOLEAN", HFILL }},
8009 { &hf_ulp_autonomousGPS,
8010 { "autonomousGPS", "ulp.autonomousGPS",
8011 FT_BOOLEAN, BASE_NONE, NULL, 0,
8012 "BOOLEAN", HFILL }},
8013 { &hf_ulp_aflt,
8014 { "aflt", "ulp.aflt",
8015 FT_BOOLEAN, BASE_NONE, NULL, 0,
8016 "BOOLEAN", HFILL }},
8017 { &hf_ulp_ecid,
8018 { "ecid", "ulp.ecid",
8019 FT_BOOLEAN, BASE_NONE, NULL, 0,
8020 "BOOLEAN", HFILL }},
8021 { &hf_ulp_eotd,
8022 { "eotd", "ulp.eotd",
8023 FT_BOOLEAN, BASE_NONE, NULL, 0,
8024 "BOOLEAN", HFILL }},
8025 { &hf_ulp_otdoa,
8026 { "otdoa", "ulp.otdoa",
8027 FT_BOOLEAN, BASE_NONE, NULL, 0,
8028 "BOOLEAN", HFILL }},
8029 { &hf_ulp_ver2_PosTechnology_extension,
8030 { "ver2-PosTechnology-extension", "ulp.ver2_PosTechnology_extension_element",
8031 FT_NONE, BASE_NONE, NULL, 0,
8032 NULL, HFILL }},
8033 { &hf_ulp_tia801,
8034 { "tia801", "ulp.tia801",
8035 FT_BOOLEAN, BASE_NONE, NULL, 0,
8036 "BOOLEAN", HFILL }},
8037 { &hf_ulp_rrlp,
8038 { "rrlp", "ulp.rrlp",
8039 FT_BOOLEAN, BASE_NONE, NULL, 0,
8040 "BOOLEAN", HFILL }},
8041 { &hf_ulp_rrc,
8042 { "rrc", "ulp.rrc",
8043 FT_BOOLEAN, BASE_NONE, NULL, 0,
8044 "BOOLEAN", HFILL }},
8045 { &hf_ulp_ver2_PosProtocol_extension,
8046 { "ver2-PosProtocol-extension", "ulp.ver2_PosProtocol_extension_element",
8047 FT_NONE, BASE_NONE, NULL, 0,
8048 NULL, HFILL }},
8049 { &hf_ulp_sETAuthKey,
8050 { "sETAuthKey", "ulp.sETAuthKey",
8051 FT_UINT32, BASE_DEC, VALS(ulp_SETAuthKey_vals), 0,
8052 NULL, HFILL }},
8053 { &hf_ulp_keyIdentity4,
8054 { "keyIdentity4", "ulp.keyIdentity4",
8055 FT_BYTES, BASE_NONE, NULL, 0,
8056 NULL, HFILL }},
8057 { &hf_ulp_ver2_SUPL_RESPONSE_extension,
8058 { "ver2-SUPL-RESPONSE-extension", "ulp.ver2_SUPL_RESPONSE_extension_element",
8059 FT_NONE, BASE_NONE, NULL, 0,
8060 NULL, HFILL }},
8061 { &hf_ulp_shortKey,
8062 { "shortKey", "ulp.shortKey",
8063 FT_BYTES, BASE_NONE, NULL, 0,
8064 "BIT_STRING_SIZE_128", HFILL }},
8065 { &hf_ulp_longKey,
8066 { "longKey", "ulp.longKey",
8067 FT_BYTES, BASE_NONE, NULL, 0,
8068 "BIT_STRING_SIZE_256", HFILL }},
8069 { &hf_ulp_requestedAssistData,
8070 { "requestedAssistData", "ulp.requestedAssistData_element",
8071 FT_NONE, BASE_NONE, NULL, 0,
8072 NULL, HFILL }},
8073 { &hf_ulp_position,
8074 { "position", "ulp.position_element",
8075 FT_NONE, BASE_NONE, NULL, 0,
8076 NULL, HFILL }},
8077 { &hf_ulp_suplpos,
8078 { "suplpos", "ulp.suplpos_element",
8079 FT_NONE, BASE_NONE, NULL, 0,
8080 NULL, HFILL }},
8081 { &hf_ulp_ver,
8082 { "ver", "ulp.ver",
8083 FT_BYTES, BASE_NONE, NULL, 0,
8084 NULL, HFILL }},
8085 { &hf_ulp_ver2_SUPL_POS_INIT_extension,
8086 { "ver2-SUPL-POS-INIT-extension", "ulp.ver2_SUPL_POS_INIT_extension_element",
8087 FT_NONE, BASE_NONE, NULL, 0,
8088 NULL, HFILL }},
8089 { &hf_ulp_almanacRequested,
8090 { "almanacRequested", "ulp.almanacRequested",
8091 FT_BOOLEAN, BASE_NONE, NULL, 0,
8092 "BOOLEAN", HFILL }},
8093 { &hf_ulp_utcModelRequested,
8094 { "utcModelRequested", "ulp.utcModelRequested",
8095 FT_BOOLEAN, BASE_NONE, NULL, 0,
8096 "BOOLEAN", HFILL }},
8097 { &hf_ulp_ionosphericModelRequested,
8098 { "ionosphericModelRequested", "ulp.ionosphericModelRequested",
8099 FT_BOOLEAN, BASE_NONE, NULL, 0,
8100 "BOOLEAN", HFILL }},
8101 { &hf_ulp_dgpsCorrectionsRequested,
8102 { "dgpsCorrectionsRequested", "ulp.dgpsCorrectionsRequested",
8103 FT_BOOLEAN, BASE_NONE, NULL, 0,
8104 "BOOLEAN", HFILL }},
8105 { &hf_ulp_referenceLocationRequested,
8106 { "referenceLocationRequested", "ulp.referenceLocationRequested",
8107 FT_BOOLEAN, BASE_NONE, NULL, 0,
8108 "BOOLEAN", HFILL }},
8109 { &hf_ulp_referenceTimeRequested,
8110 { "referenceTimeRequested", "ulp.referenceTimeRequested",
8111 FT_BOOLEAN, BASE_NONE, NULL, 0,
8112 "BOOLEAN", HFILL }},
8113 { &hf_ulp_acquisitionAssistanceRequested,
8114 { "acquisitionAssistanceRequested", "ulp.acquisitionAssistanceRequested",
8115 FT_BOOLEAN, BASE_NONE, NULL, 0,
8116 "BOOLEAN", HFILL }},
8117 { &hf_ulp_realTimeIntegrityRequested,
8118 { "realTimeIntegrityRequested", "ulp.realTimeIntegrityRequested",
8119 FT_BOOLEAN, BASE_NONE, NULL, 0,
8120 "BOOLEAN", HFILL }},
8121 { &hf_ulp_navigationModelRequested,
8122 { "navigationModelRequested", "ulp.navigationModelRequested",
8123 FT_BOOLEAN, BASE_NONE, NULL, 0,
8124 "BOOLEAN", HFILL }},
8125 { &hf_ulp_navigationModelData,
8126 { "navigationModelData", "ulp.navigationModelData_element",
8127 FT_NONE, BASE_NONE, NULL, 0,
8128 "NavigationModel", HFILL }},
8129 { &hf_ulp_ver2_RequestedAssistData_extension,
8130 { "ver2-RequestedAssistData-extension", "ulp.ver2_RequestedAssistData_extension_element",
8131 FT_NONE, BASE_NONE, NULL, 0,
8132 NULL, HFILL }},
8133 { &hf_ulp_gpsWeek,
8134 { "gpsWeek", "ulp.gpsWeek",
8135 FT_UINT32, BASE_DEC, NULL, 0,
8136 "INTEGER_0_1023", HFILL }},
8137 { &hf_ulp_gpsToe,
8138 { "gpsToe", "ulp.gpsToe",
8139 FT_UINT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_hours), 0,
8140 "INTEGER_0_167", HFILL }},
8141 { &hf_ulp_nsat,
8142 { "nsat", "ulp.nsat",
8143 FT_UINT32, BASE_DEC, NULL, 0,
8144 "INTEGER_0_31", HFILL }},
8145 { &hf_ulp_toeLimit,
8146 { "toeLimit", "ulp.toeLimit",
8147 FT_UINT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_hours), 0,
8148 "INTEGER_0_10", HFILL }},
8149 { &hf_ulp_satInfo,
8150 { "satInfo", "ulp.satInfo",
8151 FT_UINT32, BASE_DEC, NULL, 0,
8152 "SatelliteInfo", HFILL }},
8153 { &hf_ulp_SatelliteInfo_item,
8154 { "SatelliteInfoElement", "ulp.SatelliteInfoElement_element",
8155 FT_NONE, BASE_NONE, NULL, 0,
8156 NULL, HFILL }},
8157 { &hf_ulp_satId,
8158 { "satId", "ulp.satId",
8159 FT_UINT32, BASE_DEC, NULL, 0,
8160 "INTEGER_0_63", HFILL }},
8161 { &hf_ulp_iode,
8162 { "iode", "ulp.iode",
8163 FT_UINT32, BASE_DEC, NULL, 0,
8164 "INTEGER_0_255", HFILL }},
8165 { &hf_ulp_posPayLoad,
8166 { "posPayLoad", "ulp.posPayLoad",
8167 FT_UINT32, BASE_DEC, VALS(ulp_PosPayLoad_vals), 0,
8168 NULL, HFILL }},
8169 { &hf_ulp_velocity,
8170 { "velocity", "ulp.velocity",
8171 FT_UINT32, BASE_DEC, VALS(ulp_Velocity_vals), 0,
8172 NULL, HFILL }},
8173 { &hf_ulp_ver2_SUPL_POS_extension,
8174 { "ver2-SUPL-POS-extension", "ulp.ver2_SUPL_POS_extension_element",
8175 FT_NONE, BASE_NONE, NULL, 0,
8176 NULL, HFILL }},
8177 { &hf_ulp_tia801payload,
8178 { "tia801payload", "ulp.tia801payload",
8179 FT_BYTES, BASE_NONE, NULL, 0,
8180 "OCTET_STRING_SIZE_1_8192", HFILL }},
8181 { &hf_ulp_rrcPayload,
8182 { "rrcPayload", "ulp.rrcPayload",
8183 FT_BYTES, BASE_NONE, NULL, 0,
8184 "OCTET_STRING_SIZE_1_8192", HFILL }},
8185 { &hf_ulp_rrlpPayload,
8186 { "rrlpPayload", "ulp.rrlpPayload",
8187 FT_BYTES, BASE_NONE, NULL, 0,
8188 NULL, HFILL }},
8189 { &hf_ulp_ver2_PosPayLoad_extension,
8190 { "ver2-PosPayLoad-extension", "ulp.ver2_PosPayLoad_extension_element",
8191 FT_NONE, BASE_NONE, NULL, 0,
8192 NULL, HFILL }},
8193 { &hf_ulp_statusCode,
8194 { "statusCode", "ulp.statusCode",
8195 FT_UINT32, BASE_DEC, VALS(ulp_StatusCode_vals), 0,
8196 NULL, HFILL }},
8197 { &hf_ulp_ver2_SUPL_END_extension,
8198 { "ver2-SUPL-END-extension", "ulp.ver2_SUPL_END_extension_element",
8199 FT_NONE, BASE_NONE, NULL, 0,
8200 NULL, HFILL }},
8201 { &hf_ulp_sPCSETKey,
8202 { "sPCSETKey", "ulp.sPCSETKey",
8203 FT_BYTES, BASE_NONE, NULL, 0,
8204 NULL, HFILL }},
8205 { &hf_ulp_spctid,
8206 { "spctid", "ulp.spctid_element",
8207 FT_NONE, BASE_NONE, NULL, 0,
8208 NULL, HFILL }},
8209 { &hf_ulp_sPCSETKeylifetime,
8210 { "sPCSETKeylifetime", "ulp.sPCSETKeylifetime",
8211 FT_UINT32, BASE_DEC, NULL, 0,
8212 NULL, HFILL }},
8213 { &hf_ulp_notificationResponse,
8214 { "notificationResponse", "ulp.notificationResponse",
8215 FT_UINT32, BASE_DEC, VALS(ulp_NotificationResponse_vals), 0,
8216 NULL, HFILL }},
8217 { &hf_ulp_targetSETID,
8218 { "targetSETID", "ulp.targetSETID",
8219 FT_UINT32, BASE_DEC, VALS(ulp_SETId_vals), 0,
8220 "SETId", HFILL }},
8221 { &hf_ulp_applicationID,
8222 { "applicationID", "ulp.applicationID_element",
8223 FT_NONE, BASE_NONE, NULL, 0,
8224 NULL, HFILL }},
8225 { &hf_ulp_multipleLocationIds,
8226 { "multipleLocationIds", "ulp.multipleLocationIds",
8227 FT_UINT32, BASE_DEC, NULL, 0,
8228 NULL, HFILL }},
8229 { &hf_ulp_thirdParty,
8230 { "thirdParty", "ulp.thirdParty",
8231 FT_UINT32, BASE_DEC, NULL, 0,
8232 NULL, HFILL }},
8233 { &hf_ulp_triggerType,
8234 { "triggerType", "ulp.triggerType",
8235 FT_UINT32, BASE_DEC, VALS(ulp_TriggerType_vals), 0,
8236 NULL, HFILL }},
8237 { &hf_ulp_triggerParams,
8238 { "triggerParams", "ulp.triggerParams",
8239 FT_UINT32, BASE_DEC, VALS(ulp_TriggerParams_vals), 0,
8240 NULL, HFILL }},
8241 { &hf_ulp_reportingCap,
8242 { "reportingCap", "ulp.reportingCap_element",
8243 FT_NONE, BASE_NONE, NULL, 0,
8244 NULL, HFILL }},
8245 { &hf_ulp_causeCode,
8246 { "causeCode", "ulp.causeCode",
8247 FT_UINT32, BASE_DEC, VALS(ulp_CauseCode_vals), 0,
8248 NULL, HFILL }},
8249 { &hf_ulp_periodicParams,
8250 { "periodicParams", "ulp.periodicParams_element",
8251 FT_NONE, BASE_NONE, NULL, 0,
8252 NULL, HFILL }},
8253 { &hf_ulp_areaEventParams,
8254 { "areaEventParams", "ulp.areaEventParams_element",
8255 FT_NONE, BASE_NONE, NULL, 0,
8256 NULL, HFILL }},
8257 { &hf_ulp_numberOfFixes,
8258 { "numberOfFixes", "ulp.numberOfFixes",
8259 FT_UINT32, BASE_DEC, NULL, 0,
8260 "INTEGER_1_8639999", HFILL }},
8261 { &hf_ulp_intervalBetweenFixes,
8262 { "intervalBetweenFixes", "ulp.intervalBetweenFixes",
8263 FT_UINT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_seconds), 0,
8264 "INTEGER_1_8639999", HFILL }},
8265 { &hf_ulp_startTime,
8266 { "startTime", "ulp.startTime",
8267 FT_UINT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_seconds), 0,
8268 "INTEGER_0_2678400", HFILL }},
8269 { &hf_ulp_areaEventType,
8270 { "areaEventType", "ulp.areaEventType",
8271 FT_UINT32, BASE_DEC, VALS(ulp_AreaEventType_vals), 0,
8272 NULL, HFILL }},
8273 { &hf_ulp_locationEstimate,
8274 { "locationEstimate", "ulp.locationEstimate",
8275 FT_BOOLEAN, BASE_NONE, NULL, 0,
8276 "BOOLEAN", HFILL }},
8277 { &hf_ulp_repeatedReportingParams,
8278 { "repeatedReportingParams", "ulp.repeatedReportingParams_element",
8279 FT_NONE, BASE_NONE, NULL, 0,
8280 NULL, HFILL }},
8281 { &hf_ulp_stopTime,
8282 { "stopTime", "ulp.stopTime",
8283 FT_UINT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_seconds), 0,
8284 "INTEGER_0_11318399", HFILL }},
8285 { &hf_ulp_geographicTargetAreaList,
8286 { "geographicTargetAreaList", "ulp.geographicTargetAreaList",
8287 FT_UINT32, BASE_DEC, NULL, 0,
8288 NULL, HFILL }},
8289 { &hf_ulp_areaIdLists,
8290 { "areaIdLists", "ulp.areaIdLists",
8291 FT_UINT32, BASE_DEC, NULL, 0,
8292 "SEQUENCE_SIZE_1_maxAreaIdList_OF_AreaIdList", HFILL }},
8293 { &hf_ulp_areaIdLists_item,
8294 { "AreaIdList", "ulp.AreaIdList_element",
8295 FT_NONE, BASE_NONE, NULL, 0,
8296 NULL, HFILL }},
8297 { &hf_ulp_minimumIntervalTime,
8298 { "minimumIntervalTime", "ulp.minimumIntervalTime",
8299 FT_UINT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_seconds), 0,
8300 "INTEGER_1_604800", HFILL }},
8301 { &hf_ulp_maximumNumberOfReports,
8302 { "maximumNumberOfReports", "ulp.maximumNumberOfReports",
8303 FT_UINT32, BASE_DEC, NULL, 0,
8304 "INTEGER_1_1024", HFILL }},
8305 { &hf_ulp_GeographicTargetAreaList_item,
8306 { "GeographicTargetArea", "ulp.GeographicTargetArea",
8307 FT_UINT32, BASE_DEC, VALS(ulp_GeographicTargetArea_vals), 0,
8308 NULL, HFILL }},
8309 { &hf_ulp_circularArea,
8310 { "circularArea", "ulp.circularArea_element",
8311 FT_NONE, BASE_NONE, NULL, 0,
8312 NULL, HFILL }},
8313 { &hf_ulp_ellipticalArea,
8314 { "ellipticalArea", "ulp.ellipticalArea_element",
8315 FT_NONE, BASE_NONE, NULL, 0,
8316 NULL, HFILL }},
8317 { &hf_ulp_polygonArea,
8318 { "polygonArea", "ulp.polygonArea_element",
8319 FT_NONE, BASE_NONE, NULL, 0,
8320 NULL, HFILL }},
8321 { &hf_ulp_areaIdSet,
8322 { "areaIdSet", "ulp.areaIdSet",
8323 FT_UINT32, BASE_DEC, NULL, 0,
8324 NULL, HFILL }},
8325 { &hf_ulp_areaIdSetType,
8326 { "areaIdSetType", "ulp.areaIdSetType",
8327 FT_UINT32, BASE_DEC, VALS(ulp_AreaIdSetType_vals), 0,
8328 NULL, HFILL }},
8329 { &hf_ulp_geoAreaMappingList,
8330 { "geoAreaMappingList", "ulp.geoAreaMappingList",
8331 FT_UINT32, BASE_DEC, NULL, 0,
8332 NULL, HFILL }},
8333 { &hf_ulp_AreaIdSet_item,
8334 { "AreaId", "ulp.AreaId",
8335 FT_UINT32, BASE_DEC, VALS(ulp_AreaId_vals), 0,
8336 NULL, HFILL }},
8337 { &hf_ulp_gSMAreaId,
8338 { "gSMAreaId", "ulp.gSMAreaId_element",
8339 FT_NONE, BASE_NONE, NULL, 0,
8340 NULL, HFILL }},
8341 { &hf_ulp_wCDMAAreaId,
8342 { "wCDMAAreaId", "ulp.wCDMAAreaId_element",
8343 FT_NONE, BASE_NONE, NULL, 0,
8344 NULL, HFILL }},
8345 { &hf_ulp_cDMAAreaId,
8346 { "cDMAAreaId", "ulp.cDMAAreaId_element",
8347 FT_NONE, BASE_NONE, NULL, 0,
8348 NULL, HFILL }},
8349 { &hf_ulp_hRPDAreaId,
8350 { "hRPDAreaId", "ulp.hRPDAreaId_element",
8351 FT_NONE, BASE_NONE, NULL, 0,
8352 NULL, HFILL }},
8353 { &hf_ulp_uMBAreaId,
8354 { "uMBAreaId", "ulp.uMBAreaId_element",
8355 FT_NONE, BASE_NONE, NULL, 0,
8356 NULL, HFILL }},
8357 { &hf_ulp_lTEAreaId,
8358 { "lTEAreaId", "ulp.lTEAreaId_element",
8359 FT_NONE, BASE_NONE, NULL, 0,
8360 NULL, HFILL }},
8361 { &hf_ulp_wLANAreaId,
8362 { "wLANAreaId", "ulp.wLANAreaId_element",
8363 FT_NONE, BASE_NONE, NULL, 0,
8364 NULL, HFILL }},
8365 { &hf_ulp_wiMAXAreaId,
8366 { "wiMAXAreaId", "ulp.wiMAXAreaId_element",
8367 FT_NONE, BASE_NONE, NULL, 0,
8368 NULL, HFILL }},
8369 { &hf_ulp_nRAreaId,
8370 { "nRAreaId", "ulp.nRAreaId_element",
8371 FT_NONE, BASE_NONE, NULL, 0,
8372 NULL, HFILL }},
8373 { &hf_ulp_refMCC,
8374 { "refMCC", "ulp.refMCC",
8375 FT_UINT32, BASE_DEC, NULL, 0,
8376 "INTEGER_0_999", HFILL }},
8377 { &hf_ulp_refMNC,
8378 { "refMNC", "ulp.refMNC",
8379 FT_UINT32, BASE_DEC, NULL, 0,
8380 "INTEGER_0_999", HFILL }},
8381 { &hf_ulp_refLAC,
8382 { "refLAC", "ulp.refLAC",
8383 FT_UINT32, BASE_DEC, NULL, 0,
8384 "INTEGER_0_65535", HFILL }},
8385 { &hf_ulp_refCI,
8386 { "refCI", "ulp.refCI",
8387 FT_UINT32, BASE_DEC, NULL, 0,
8388 "INTEGER_0_65535", HFILL }},
8389 { &hf_ulp_refUC,
8390 { "refUC", "ulp.refUC",
8391 FT_UINT32, BASE_DEC, NULL, 0,
8392 "INTEGER_0_268435455", HFILL }},
8393 { &hf_ulp_refSID,
8394 { "refSID", "ulp.refSID",
8395 FT_UINT32, BASE_DEC, NULL, 0,
8396 "INTEGER_0_65535", HFILL }},
8397 { &hf_ulp_refNID,
8398 { "refNID", "ulp.refNID",
8399 FT_UINT32, BASE_DEC, NULL, 0,
8400 "INTEGER_0_32767", HFILL }},
8401 { &hf_ulp_refBASEID,
8402 { "refBASEID", "ulp.refBASEID",
8403 FT_UINT32, BASE_DEC, NULL, 0,
8404 "INTEGER_0_65535", HFILL }},
8405 { &hf_ulp_refSECTORID,
8406 { "refSECTORID", "ulp.refSECTORID",
8407 FT_BYTES, BASE_NONE, NULL, 0,
8408 "BIT_STRING_SIZE_128", HFILL }},
8409 { &hf_ulp_refCI_01,
8410 { "refCI", "ulp.refCI",
8411 FT_BYTES, BASE_NONE, NULL, 0,
8412 "BIT_STRING_SIZE_29", HFILL }},
8413 { &hf_ulp_apMACAddress,
8414 { "apMACAddress", "ulp.apMACAddress",
8415 FT_ETHER, BASE_NONE, NULL, 0,
8416 NULL, HFILL }},
8417 { &hf_ulp_bsID_MSB,
8418 { "bsID-MSB", "ulp.bsID_MSB",
8419 FT_BYTES, BASE_NONE, NULL, 0,
8420 "BIT_STRING_SIZE_24", HFILL }},
8421 { &hf_ulp_bsID_LSB,
8422 { "bsID-LSB", "ulp.bsID_LSB",
8423 FT_BYTES, BASE_NONE, NULL, 0,
8424 "BIT_STRING_SIZE_24", HFILL }},
8425 { &hf_ulp_refCI_02,
8426 { "refCI", "ulp.refCI",
8427 FT_BYTES, BASE_NONE, NULL, 0,
8428 "BIT_STRING_SIZE_36", HFILL }},
8429 { &hf_ulp_GeoAreaMappingList_item,
8430 { "GeoAreaIndex", "ulp.GeoAreaIndex",
8431 FT_UINT32, BASE_DEC, NULL, 0,
8432 NULL, HFILL }},
8433 { &hf_ulp_supportedNetworkInformation,
8434 { "supportedNetworkInformation", "ulp.supportedNetworkInformation_element",
8435 FT_NONE, BASE_NONE, NULL, 0,
8436 NULL, HFILL }},
8437 { &hf_ulp_reportingMode,
8438 { "reportingMode", "ulp.reportingMode_element",
8439 FT_NONE, BASE_NONE, NULL, 0,
8440 NULL, HFILL }},
8441 { &hf_ulp_gnssPosTechnology,
8442 { "gnssPosTechnology", "ulp.gnssPosTechnology_element",
8443 FT_NONE, BASE_NONE, NULL, 0,
8444 NULL, HFILL }},
8445 { &hf_ulp_repMode,
8446 { "repMode", "ulp.repMode",
8447 FT_UINT32, BASE_DEC, VALS(ulp_RepModee_vals), 0,
8448 "RepModee", HFILL }},
8449 { &hf_ulp_batchRepConditions,
8450 { "batchRepConditions", "ulp.batchRepConditions",
8451 FT_UINT32, BASE_DEC, VALS(ulp_BatchRepConditions_vals), 0,
8452 NULL, HFILL }},
8453 { &hf_ulp_batchRepType,
8454 { "batchRepType", "ulp.batchRepType_element",
8455 FT_NONE, BASE_NONE, NULL, 0,
8456 NULL, HFILL }},
8457 { &hf_ulp_num_interval,
8458 { "num-interval", "ulp.num_interval",
8459 FT_UINT32, BASE_DEC, NULL, 0,
8460 "INTEGER_1_1024", HFILL }},
8461 { &hf_ulp_num_minutes,
8462 { "num-minutes", "ulp.num_minutes",
8463 FT_UINT32, BASE_DEC, NULL, 0,
8464 "INTEGER_1_2048", HFILL }},
8465 { &hf_ulp_endofsession,
8466 { "endofsession", "ulp.endofsession_element",
8467 FT_NONE, BASE_NONE, NULL, 0,
8468 NULL, HFILL }},
8469 { &hf_ulp_reportPosition,
8470 { "reportPosition", "ulp.reportPosition",
8471 FT_BOOLEAN, BASE_NONE, NULL, 0,
8472 "BOOLEAN", HFILL }},
8473 { &hf_ulp_reportMeasurements,
8474 { "reportMeasurements", "ulp.reportMeasurements",
8475 FT_BOOLEAN, BASE_NONE, NULL, 0,
8476 "BOOLEAN", HFILL }},
8477 { &hf_ulp_intermediateReports,
8478 { "intermediateReports", "ulp.intermediateReports",
8479 FT_BOOLEAN, BASE_NONE, NULL, 0,
8480 "BOOLEAN", HFILL }},
8481 { &hf_ulp_discardOldest,
8482 { "discardOldest", "ulp.discardOldest",
8483 FT_BOOLEAN, BASE_NONE, NULL, 0,
8484 "BOOLEAN", HFILL }},
8485 { &hf_ulp_sessionList,
8486 { "sessionList", "ulp.sessionList",
8487 FT_UINT32, BASE_DEC, NULL, 0,
8488 NULL, HFILL }},
8489 { &hf_ulp_reportDataList,
8490 { "reportDataList", "ulp.reportDataList",
8491 FT_UINT32, BASE_DEC, NULL, 0,
8492 NULL, HFILL }},
8493 { &hf_ulp_moreComponents,
8494 { "moreComponents", "ulp.moreComponents_element",
8495 FT_NONE, BASE_NONE, NULL, 0,
8496 NULL, HFILL }},
8497 { &hf_ulp_SessionList_item,
8498 { "SessionInformation", "ulp.SessionInformation_element",
8499 FT_NONE, BASE_NONE, NULL, 0,
8500 NULL, HFILL }},
8501 { &hf_ulp_ReportDataList_item,
8502 { "ReportData", "ulp.ReportData_element",
8503 FT_NONE, BASE_NONE, NULL, 0,
8504 NULL, HFILL }},
8505 { &hf_ulp_positionData,
8506 { "positionData", "ulp.positionData_element",
8507 FT_NONE, BASE_NONE, NULL, 0,
8508 NULL, HFILL }},
8509 { &hf_ulp_resultCode,
8510 { "resultCode", "ulp.resultCode",
8511 FT_UINT32, BASE_DEC, VALS(ulp_ResultCode_vals), 0,
8512 NULL, HFILL }},
8513 { &hf_ulp_timestamp,
8514 { "timestamp", "ulp.timestamp",
8515 FT_UINT32, BASE_DEC, VALS(ulp_TimeStamp_vals), 0,
8516 NULL, HFILL }},
8517 { &hf_ulp_ganssSignalsInfo,
8518 { "ganssSignalsInfo", "ulp.ganssSignalsInfo",
8519 FT_UINT32, BASE_DEC, NULL, 0,
8520 NULL, HFILL }},
8521 { &hf_ulp_GANSSsignalsInfo_item,
8522 { "GANSSSignalsDescription", "ulp.GANSSSignalsDescription_element",
8523 FT_NONE, BASE_NONE, NULL, 0,
8524 NULL, HFILL }},
8525 { &hf_ulp_ganssId,
8526 { "ganssId", "ulp.ganssId",
8527 FT_UINT32, BASE_DEC, VALS(ulp_ganss_id_vals), 0,
8528 "INTEGER_0_15", HFILL }},
8529 { &hf_ulp_gANSSSignals,
8530 { "gANSSSignals", "ulp.gANSSSignals",
8531 FT_BYTES, BASE_NONE, NULL, 0,
8532 NULL, HFILL }},
8533 { &hf_ulp_absoluteTime,
8534 { "absoluteTime", "ulp.absoluteTime",
8535 FT_STRING, BASE_NONE, NULL, 0,
8536 "UTCTime", HFILL }},
8537 { &hf_ulp_relativeTime,
8538 { "relativeTime", "ulp.relativeTime",
8539 FT_UINT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_seconds), 0,
8540 "INTEGER_0_31536000", HFILL }},
8541 { &hf_ulp_notificationMode,
8542 { "notificationMode", "ulp.notificationMode",
8543 FT_UINT32, BASE_DEC, VALS(ulp_NotificationMode_vals), 0,
8544 NULL, HFILL }},
8545 { &hf_ulp_e_SLPAddress,
8546 { "e-SLPAddress", "ulp.e_SLPAddress",
8547 FT_UINT32, BASE_DEC, VALS(ulp_SLPAddress_vals), 0,
8548 "SLPAddress", HFILL }},
8549 { &hf_ulp_historicReporting,
8550 { "historicReporting", "ulp.historicReporting_element",
8551 FT_NONE, BASE_NONE, NULL, 0,
8552 NULL, HFILL }},
8553 { &hf_ulp_protectionLevel,
8554 { "protectionLevel", "ulp.protectionLevel_element",
8555 FT_NONE, BASE_NONE, NULL, 0,
8556 NULL, HFILL }},
8557 { &hf_ulp_minimumMajorVersion,
8558 { "minimumMajorVersion", "ulp.minimumMajorVersion",
8559 FT_UINT32, BASE_DEC, NULL, 0,
8560 "INTEGER_0_255", HFILL }},
8561 { &hf_ulp_allowedReportingType,
8562 { "allowedReportingType", "ulp.allowedReportingType",
8563 FT_UINT32, BASE_DEC, VALS(ulp_AllowedReportingType_vals), 0,
8564 NULL, HFILL }},
8565 { &hf_ulp_reportingCriteria,
8566 { "reportingCriteria", "ulp.reportingCriteria_element",
8567 FT_NONE, BASE_NONE, NULL, 0,
8568 NULL, HFILL }},
8569 { &hf_ulp_timeWindow,
8570 { "timeWindow", "ulp.timeWindow_element",
8571 FT_NONE, BASE_NONE, NULL, 0,
8572 NULL, HFILL }},
8573 { &hf_ulp_maxNumberofReports,
8574 { "maxNumberofReports", "ulp.maxNumberofReports",
8575 FT_UINT32, BASE_DEC, NULL, 0,
8576 "INTEGER_1_65536", HFILL }},
8577 { &hf_ulp_minTimeInterval,
8578 { "minTimeInterval", "ulp.minTimeInterval",
8579 FT_UINT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_seconds), 0,
8580 "INTEGER_1_86400", HFILL }},
8581 { &hf_ulp_startTime_01,
8582 { "startTime", "ulp.startTime",
8583 FT_INT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_minutes), 0,
8584 "INTEGER_M525600_M1", HFILL }},
8585 { &hf_ulp_stopTime_01,
8586 { "stopTime", "ulp.stopTime",
8587 FT_INT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_minutes), 0,
8588 "INTEGER_M525599_0", HFILL }},
8589 { &hf_ulp_protlevel,
8590 { "protlevel", "ulp.protlevel",
8591 FT_UINT32, BASE_DEC, VALS(ulp_ProtLevel_vals), 0,
8592 NULL, HFILL }},
8593 { &hf_ulp_basicProtectionParams,
8594 { "basicProtectionParams", "ulp.basicProtectionParams_element",
8595 FT_NONE, BASE_NONE, NULL, 0,
8596 NULL, HFILL }},
8597 { &hf_ulp_keyIdentifier,
8598 { "keyIdentifier", "ulp.keyIdentifier",
8599 FT_BYTES, BASE_NONE, NULL, 0,
8600 "OCTET_STRING_SIZE_8", HFILL }},
8601 { &hf_ulp_basicReplayCounter,
8602 { "basicReplayCounter", "ulp.basicReplayCounter",
8603 FT_UINT32, BASE_DEC, NULL, 0,
8604 "INTEGER_0_65535", HFILL }},
8605 { &hf_ulp_basicMAC,
8606 { "basicMAC", "ulp.basicMAC",
8607 FT_BYTES, BASE_NONE, NULL, 0,
8608 "BIT_STRING_SIZE_32", HFILL }},
8609 { &hf_ulp_initialApproximateposition,
8610 { "initialApproximateposition", "ulp.initialApproximateposition_element",
8611 FT_NONE, BASE_NONE, NULL, 0,
8612 "Position", HFILL }},
8613 { &hf_ulp_utran_GPSReferenceTimeResult,
8614 { "utran-GPSReferenceTimeResult", "ulp.utran_GPSReferenceTimeResult_element",
8615 FT_NONE, BASE_NONE, NULL, 0,
8616 NULL, HFILL }},
8617 { &hf_ulp_utran_GANSSReferenceTimeResult,
8618 { "utran-GANSSReferenceTimeResult", "ulp.utran_GANSSReferenceTimeResult_element",
8619 FT_NONE, BASE_NONE, NULL, 0,
8620 NULL, HFILL }},
8621 { &hf_ulp_utran_GPSReferenceTimeAssistance,
8622 { "utran-GPSReferenceTimeAssistance", "ulp.utran_GPSReferenceTimeAssistance_element",
8623 FT_NONE, BASE_NONE, NULL, 0,
8624 NULL, HFILL }},
8625 { &hf_ulp_utran_GANSSReferenceTimeAssistance,
8626 { "utran-GANSSReferenceTimeAssistance", "ulp.utran_GANSSReferenceTimeAssistance_element",
8627 FT_NONE, BASE_NONE, NULL, 0,
8628 NULL, HFILL }},
8629 { &hf_ulp_ver2_HighAccuracyPosition,
8630 { "ver2-HighAccuracyPosition", "ulp.ver2_HighAccuracyPosition_element",
8631 FT_NONE, BASE_NONE, NULL, 0,
8632 NULL, HFILL }},
8633 { &hf_ulp_emergencyCallLocation,
8634 { "emergencyCallLocation", "ulp.emergencyCallLocation_element",
8635 FT_NONE, BASE_NONE, NULL, 0,
8636 NULL, HFILL }},
8637 { &hf_ulp_serviceCapabilities,
8638 { "serviceCapabilities", "ulp.serviceCapabilities_element",
8639 FT_NONE, BASE_NONE, NULL, 0,
8640 NULL, HFILL }},
8641 { &hf_ulp_supportedBearers,
8642 { "supportedBearers", "ulp.supportedBearers_element",
8643 FT_NONE, BASE_NONE, NULL, 0,
8644 NULL, HFILL }},
8645 { &hf_ulp_servicesSupported,
8646 { "servicesSupported", "ulp.servicesSupported_element",
8647 FT_NONE, BASE_NONE, NULL, 0,
8648 NULL, HFILL }},
8649 { &hf_ulp_reportingCapabilities,
8650 { "reportingCapabilities", "ulp.reportingCapabilities_element",
8651 FT_NONE, BASE_NONE, NULL, 0,
8652 "ReportingCap", HFILL }},
8653 { &hf_ulp_eventTriggerCapabilities,
8654 { "eventTriggerCapabilities", "ulp.eventTriggerCapabilities_element",
8655 FT_NONE, BASE_NONE, NULL, 0,
8656 NULL, HFILL }},
8657 { &hf_ulp_sessionCapabilities,
8658 { "sessionCapabilities", "ulp.sessionCapabilities_element",
8659 FT_NONE, BASE_NONE, NULL, 0,
8660 NULL, HFILL }},
8661 { &hf_ulp_periodicTrigger,
8662 { "periodicTrigger", "ulp.periodicTrigger",
8663 FT_BOOLEAN, BASE_NONE, NULL, 0,
8664 "BOOLEAN", HFILL }},
8665 { &hf_ulp_areaEventTrigger,
8666 { "areaEventTrigger", "ulp.areaEventTrigger",
8667 FT_BOOLEAN, BASE_NONE, NULL, 0,
8668 "BOOLEAN", HFILL }},
8669 { &hf_ulp_geoAreaShapesSupported,
8670 { "geoAreaShapesSupported", "ulp.geoAreaShapesSupported_element",
8671 FT_NONE, BASE_NONE, NULL, 0,
8672 NULL, HFILL }},
8673 { &hf_ulp_maxNumGeoAreaSupported,
8674 { "maxNumGeoAreaSupported", "ulp.maxNumGeoAreaSupported",
8675 FT_UINT32, BASE_DEC, NULL, 0,
8676 "INTEGER_0_maxNumGeoArea", HFILL }},
8677 { &hf_ulp_maxAreaIdListSupported,
8678 { "maxAreaIdListSupported", "ulp.maxAreaIdListSupported",
8679 FT_UINT32, BASE_DEC, NULL, 0,
8680 "INTEGER_0_maxAreaIdList", HFILL }},
8681 { &hf_ulp_maxAreaIdSupportedPerList,
8682 { "maxAreaIdSupportedPerList", "ulp.maxAreaIdSupportedPerList",
8683 FT_UINT32, BASE_DEC, NULL, 0,
8684 "INTEGER_0_maxAreaId", HFILL }},
8685 { &hf_ulp_ellipticalArea_01,
8686 { "ellipticalArea", "ulp.ellipticalArea",
8687 FT_BOOLEAN, BASE_NONE, NULL, 0,
8688 "BOOLEAN", HFILL }},
8689 { &hf_ulp_polygonArea_01,
8690 { "polygonArea", "ulp.polygonArea",
8691 FT_BOOLEAN, BASE_NONE, NULL, 0,
8692 "BOOLEAN", HFILL }},
8693 { &hf_ulp_maxNumberTotalSessions,
8694 { "maxNumberTotalSessions", "ulp.maxNumberTotalSessions",
8695 FT_UINT32, BASE_DEC, NULL, 0,
8696 "INTEGER_1_128", HFILL }},
8697 { &hf_ulp_maxNumberPeriodicSessions,
8698 { "maxNumberPeriodicSessions", "ulp.maxNumberPeriodicSessions",
8699 FT_UINT32, BASE_DEC, NULL, 0,
8700 "INTEGER_1_32", HFILL }},
8701 { &hf_ulp_maxNumberTriggeredSessions,
8702 { "maxNumberTriggeredSessions", "ulp.maxNumberTriggeredSessions",
8703 FT_UINT32, BASE_DEC, NULL, 0,
8704 "INTEGER_1_32", HFILL }},
8705 { &hf_ulp_gsm,
8706 { "gsm", "ulp.gsm",
8707 FT_BOOLEAN, BASE_NONE, NULL, 0,
8708 "BOOLEAN", HFILL }},
8709 { &hf_ulp_wcdma,
8710 { "wcdma", "ulp.wcdma",
8711 FT_BOOLEAN, BASE_NONE, NULL, 0,
8712 "BOOLEAN", HFILL }},
8713 { &hf_ulp_lte,
8714 { "lte", "ulp.lte",
8715 FT_BOOLEAN, BASE_NONE, NULL, 0,
8716 "BOOLEAN", HFILL }},
8717 { &hf_ulp_cdma,
8718 { "cdma", "ulp.cdma",
8719 FT_BOOLEAN, BASE_NONE, NULL, 0,
8720 "BOOLEAN", HFILL }},
8721 { &hf_ulp_hprd,
8722 { "hprd", "ulp.hprd",
8723 FT_BOOLEAN, BASE_NONE, NULL, 0,
8724 "BOOLEAN", HFILL }},
8725 { &hf_ulp_umb,
8726 { "umb", "ulp.umb",
8727 FT_BOOLEAN, BASE_NONE, NULL, 0,
8728 "BOOLEAN", HFILL }},
8729 { &hf_ulp_wlan,
8730 { "wlan", "ulp.wlan",
8731 FT_BOOLEAN, BASE_NONE, NULL, 0,
8732 "BOOLEAN", HFILL }},
8733 { &hf_ulp_wiMAX,
8734 { "wiMAX", "ulp.wiMAX",
8735 FT_BOOLEAN, BASE_NONE, NULL, 0,
8736 "BOOLEAN", HFILL }},
8737 { &hf_ulp_nr,
8738 { "nr", "ulp.nr",
8739 FT_BOOLEAN, BASE_NONE, NULL, 0,
8740 "BOOLEAN", HFILL }},
8741 { &hf_ulp_lpp,
8742 { "lpp", "ulp.lpp",
8743 FT_BOOLEAN, BASE_NONE, NULL, 0,
8744 "BOOLEAN", HFILL }},
8745 { &hf_ulp_posProtocolVersionRRLP,
8746 { "posProtocolVersionRRLP", "ulp.posProtocolVersionRRLP_element",
8747 FT_NONE, BASE_NONE, NULL, 0,
8748 "PosProtocolVersion3GPP", HFILL }},
8749 { &hf_ulp_posProtocolVersionRRC,
8750 { "posProtocolVersionRRC", "ulp.posProtocolVersionRRC_element",
8751 FT_NONE, BASE_NONE, NULL, 0,
8752 "PosProtocolVersion3GPP", HFILL }},
8753 { &hf_ulp_posProtocolVersionTIA801,
8754 { "posProtocolVersionTIA801", "ulp.posProtocolVersionTIA801",
8755 FT_UINT32, BASE_DEC, NULL, 0,
8756 "PosProtocolVersion3GPP2", HFILL }},
8757 { &hf_ulp_posProtocolVersionLPP,
8758 { "posProtocolVersionLPP", "ulp.posProtocolVersionLPP_element",
8759 FT_NONE, BASE_NONE, NULL, 0,
8760 "PosProtocolVersion3GPP", HFILL }},
8761 { &hf_ulp_lppe,
8762 { "lppe", "ulp.lppe",
8763 FT_BOOLEAN, BASE_NONE, NULL, 0,
8764 "BOOLEAN", HFILL }},
8765 { &hf_ulp_posProtocolVersionLPPe,
8766 { "posProtocolVersionLPPe", "ulp.posProtocolVersionLPPe_element",
8767 FT_NONE, BASE_NONE, NULL, 0,
8768 "PosProtocolVersionOMA", HFILL }},
8769 { &hf_ulp_majorVersionField,
8770 { "majorVersionField", "ulp.majorVersionField",
8771 FT_UINT32, BASE_DEC, NULL, 0,
8772 "INTEGER_0_255", HFILL }},
8773 { &hf_ulp_technicalVersionField,
8774 { "technicalVersionField", "ulp.technicalVersionField",
8775 FT_UINT32, BASE_DEC, NULL, 0,
8776 "INTEGER_0_255", HFILL }},
8777 { &hf_ulp_editorialVersionField,
8778 { "editorialVersionField", "ulp.editorialVersionField",
8779 FT_UINT32, BASE_DEC, NULL, 0,
8780 "INTEGER_0_255", HFILL }},
8781 { &hf_ulp_PosProtocolVersion3GPP2_item,
8782 { "Supported3GPP2PosProtocolVersion", "ulp.Supported3GPP2PosProtocolVersion_element",
8783 FT_NONE, BASE_NONE, NULL, 0,
8784 NULL, HFILL }},
8785 { &hf_ulp_revisionNumber,
8786 { "revisionNumber", "ulp.revisionNumber",
8787 FT_BYTES, BASE_NONE, NULL, 0,
8788 "BIT_STRING_SIZE_6", HFILL }},
8789 { &hf_ulp_pointReleaseNumber,
8790 { "pointReleaseNumber", "ulp.pointReleaseNumber",
8791 FT_UINT32, BASE_DEC, NULL, 0,
8792 "INTEGER_0_255", HFILL }},
8793 { &hf_ulp_internalEditLevel,
8794 { "internalEditLevel", "ulp.internalEditLevel",
8795 FT_UINT32, BASE_DEC, NULL, 0,
8796 "INTEGER_0_255", HFILL }},
8797 { &hf_ulp_minorVersionField,
8798 { "minorVersionField", "ulp.minorVersionField",
8799 FT_UINT32, BASE_DEC, NULL, 0,
8800 "INTEGER_0_255", HFILL }},
8801 { &hf_ulp_gANSSPositionMethods,
8802 { "gANSSPositionMethods", "ulp.gANSSPositionMethods",
8803 FT_UINT32, BASE_DEC, NULL, 0,
8804 NULL, HFILL }},
8805 { &hf_ulp_additionalPositioningMethods,
8806 { "additionalPositioningMethods", "ulp.additionalPositioningMethods",
8807 FT_UINT32, BASE_DEC, NULL, 0,
8808 NULL, HFILL }},
8809 { &hf_ulp_GANSSPositionMethods_item,
8810 { "GANSSPositionMethod", "ulp.GANSSPositionMethod_element",
8811 FT_NONE, BASE_NONE, NULL, 0,
8812 NULL, HFILL }},
8813 { &hf_ulp_ganssSBASid,
8814 { "ganssSBASid", "ulp.ganssSBASid",
8815 FT_UINT8, BASE_DEC, VALS(ulp_ganss_sbas_id_vals), 0,
8816 NULL, HFILL }},
8817 { &hf_ulp_gANSSPositioningMethodTypes,
8818 { "gANSSPositioningMethodTypes", "ulp.gANSSPositioningMethodTypes_element",
8819 FT_NONE, BASE_NONE, NULL, 0,
8820 NULL, HFILL }},
8821 { &hf_ulp_rtk,
8822 { "rtk", "ulp.rtk_element",
8823 FT_NONE, BASE_NONE, NULL, 0,
8824 NULL, HFILL }},
8825 { &hf_ulp_osr,
8826 { "osr", "ulp.osr",
8827 FT_BOOLEAN, BASE_NONE, NULL, 0,
8828 "BOOLEAN", HFILL }},
8829 { &hf_ulp_setAssisted,
8830 { "setAssisted", "ulp.setAssisted",
8831 FT_BOOLEAN, BASE_NONE, NULL, 0,
8832 "BOOLEAN", HFILL }},
8833 { &hf_ulp_setBased,
8834 { "setBased", "ulp.setBased",
8835 FT_BOOLEAN, BASE_NONE, NULL, 0,
8836 "BOOLEAN", HFILL }},
8837 { &hf_ulp_autonomous,
8838 { "autonomous", "ulp.autonomous",
8839 FT_BOOLEAN, BASE_NONE, NULL, 0,
8840 "BOOLEAN", HFILL }},
8841 { &hf_ulp_AdditionalPositioningMethods_item,
8842 { "AddPosSupport-Element", "ulp.AddPosSupport_Element_element",
8843 FT_NONE, BASE_NONE, NULL, 0,
8844 NULL, HFILL }},
8845 { &hf_ulp_addPosID,
8846 { "addPosID", "ulp.addPosID",
8847 FT_UINT32, BASE_DEC, VALS(ulp_T_addPosID_vals), 0,
8848 NULL, HFILL }},
8849 { &hf_ulp_addPosMode,
8850 { "addPosMode", "ulp.addPosMode",
8851 FT_BYTES, BASE_NONE, NULL, 0,
8852 NULL, HFILL }},
8853 { &hf_ulp_ganssRequestedCommonAssistanceDataList,
8854 { "ganssRequestedCommonAssistanceDataList", "ulp.ganssRequestedCommonAssistanceDataList_element",
8855 FT_NONE, BASE_NONE, NULL, 0,
8856 NULL, HFILL }},
8857 { &hf_ulp_ganssRequestedGenericAssistanceDataList,
8858 { "ganssRequestedGenericAssistanceDataList", "ulp.ganssRequestedGenericAssistanceDataList",
8859 FT_UINT32, BASE_DEC, NULL, 0,
8860 NULL, HFILL }},
8861 { &hf_ulp_extendedEphemeris,
8862 { "extendedEphemeris", "ulp.extendedEphemeris_element",
8863 FT_NONE, BASE_NONE, NULL, 0,
8864 NULL, HFILL }},
8865 { &hf_ulp_extendedEphemerisCheck,
8866 { "extendedEphemerisCheck", "ulp.extendedEphemerisCheck_element",
8867 FT_NONE, BASE_NONE, NULL, 0,
8868 "ExtendedEphCheck", HFILL }},
8869 { &hf_ulp_ganssReferenceTime,
8870 { "ganssReferenceTime", "ulp.ganssReferenceTime",
8871 FT_BOOLEAN, BASE_NONE, NULL, 0,
8872 "BOOLEAN", HFILL }},
8873 { &hf_ulp_ganssIonosphericModel,
8874 { "ganssIonosphericModel", "ulp.ganssIonosphericModel",
8875 FT_BOOLEAN, BASE_NONE, NULL, 0,
8876 "BOOLEAN", HFILL }},
8877 { &hf_ulp_ganssAdditionalIonosphericModelForDataID00,
8878 { "ganssAdditionalIonosphericModelForDataID00", "ulp.ganssAdditionalIonosphericModelForDataID00",
8879 FT_BOOLEAN, BASE_NONE, NULL, 0,
8880 "BOOLEAN", HFILL }},
8881 { &hf_ulp_ganssAdditionalIonosphericModelForDataID11,
8882 { "ganssAdditionalIonosphericModelForDataID11", "ulp.ganssAdditionalIonosphericModelForDataID11",
8883 FT_BOOLEAN, BASE_NONE, NULL, 0,
8884 "BOOLEAN", HFILL }},
8885 { &hf_ulp_ganssEarthOrientationParameters,
8886 { "ganssEarthOrientationParameters", "ulp.ganssEarthOrientationParameters",
8887 FT_BOOLEAN, BASE_NONE, NULL, 0,
8888 "BOOLEAN", HFILL }},
8889 { &hf_ulp_ganssAdditionalIonosphericModelForDataID01,
8890 { "ganssAdditionalIonosphericModelForDataID01", "ulp.ganssAdditionalIonosphericModelForDataID01",
8891 FT_BOOLEAN, BASE_NONE, NULL, 0,
8892 "BOOLEAN", HFILL }},
8893 { &hf_ulp_GanssRequestedGenericAssistanceDataList_item,
8894 { "GanssReqGenericData", "ulp.GanssReqGenericData_element",
8895 FT_NONE, BASE_NONE, NULL, 0,
8896 NULL, HFILL }},
8897 { &hf_ulp_ganssId_01,
8898 { "ganssId", "ulp.ganssId",
8899 FT_UINT32, BASE_DEC, VALS(ulp_ganss_id_vals), 0,
8900 NULL, HFILL }},
8901 { &hf_ulp_ganssSBASid_01,
8902 { "ganssSBASid", "ulp.ganssSBASid",
8903 FT_UINT8, BASE_DEC, VALS(ulp_ganss_sbas_id_vals), 0,
8904 "T_ganssSBASid_01", HFILL }},
8905 { &hf_ulp_ganssRealTimeIntegrity,
8906 { "ganssRealTimeIntegrity", "ulp.ganssRealTimeIntegrity",
8907 FT_BOOLEAN, BASE_NONE, NULL, 0,
8908 "BOOLEAN", HFILL }},
8909 { &hf_ulp_ganssDifferentialCorrection,
8910 { "ganssDifferentialCorrection", "ulp.ganssDifferentialCorrection",
8911 FT_BYTES, BASE_NONE, NULL, 0,
8912 "DGANSS_Sig_Id_Req", HFILL }},
8913 { &hf_ulp_ganssAlmanac,
8914 { "ganssAlmanac", "ulp.ganssAlmanac",
8915 FT_BOOLEAN, BASE_NONE, NULL, 0,
8916 "BOOLEAN", HFILL }},
8917 { &hf_ulp_ganssNavigationModelData,
8918 { "ganssNavigationModelData", "ulp.ganssNavigationModelData_element",
8919 FT_NONE, BASE_NONE, NULL, 0,
8920 NULL, HFILL }},
8921 { &hf_ulp_ganssTimeModels,
8922 { "ganssTimeModels", "ulp.ganssTimeModels",
8923 FT_BYTES, BASE_NONE, NULL, 0,
8924 NULL, HFILL }},
8925 { &hf_ulp_ganssReferenceMeasurementInfo,
8926 { "ganssReferenceMeasurementInfo", "ulp.ganssReferenceMeasurementInfo",
8927 FT_BOOLEAN, BASE_NONE, NULL, 0,
8928 "BOOLEAN", HFILL }},
8929 { &hf_ulp_ganssDataBits,
8930 { "ganssDataBits", "ulp.ganssDataBits_element",
8931 FT_NONE, BASE_NONE, NULL, 0,
8932 NULL, HFILL }},
8933 { &hf_ulp_ganssUTCModel,
8934 { "ganssUTCModel", "ulp.ganssUTCModel",
8935 FT_BOOLEAN, BASE_NONE, NULL, 0,
8936 "BOOLEAN", HFILL }},
8937 { &hf_ulp_ganssAdditionalDataChoices,
8938 { "ganssAdditionalDataChoices", "ulp.ganssAdditionalDataChoices_element",
8939 FT_NONE, BASE_NONE, NULL, 0,
8940 NULL, HFILL }},
8941 { &hf_ulp_ganssAuxiliaryInformation,
8942 { "ganssAuxiliaryInformation", "ulp.ganssAuxiliaryInformation",
8943 FT_BOOLEAN, BASE_NONE, NULL, 0,
8944 "BOOLEAN", HFILL }},
8945 { &hf_ulp_ganssExtendedEphemeris,
8946 { "ganssExtendedEphemeris", "ulp.ganssExtendedEphemeris_element",
8947 FT_NONE, BASE_NONE, NULL, 0,
8948 "ExtendedEphemeris", HFILL }},
8949 { &hf_ulp_ganssExtendedEphemerisCheck,
8950 { "ganssExtendedEphemerisCheck", "ulp.ganssExtendedEphemerisCheck_element",
8951 FT_NONE, BASE_NONE, NULL, 0,
8952 "GanssExtendedEphCheck", HFILL }},
8953 { &hf_ulp_bds_DifferentialCorrection,
8954 { "bds-DifferentialCorrection", "ulp.bds_DifferentialCorrection",
8955 FT_BYTES, BASE_NONE, NULL, 0,
8956 "BDS_Sig_Id_Req", HFILL }},
8957 { &hf_ulp_bds_GridModelReq,
8958 { "bds-GridModelReq", "ulp.bds_GridModelReq",
8959 FT_BOOLEAN, BASE_NONE, NULL, 0,
8960 "BOOLEAN", HFILL }},
8961 { &hf_ulp_ganssWeek,
8962 { "ganssWeek", "ulp.ganssWeek",
8963 FT_UINT32, BASE_DEC, NULL, 0,
8964 NULL, HFILL }},
8965 { &hf_ulp_ganssToe,
8966 { "ganssToe", "ulp.ganssToe",
8967 FT_UINT32, BASE_DEC, NULL, 0,
8968 NULL, HFILL }},
8969 { &hf_ulp_t_toeLimit,
8970 { "t-toeLimit", "ulp.t_toeLimit",
8971 FT_UINT32, BASE_DEC, NULL, 0,
8972 "T_t_toeLimit", HFILL }},
8973 { &hf_ulp_satellitesListRelatedDataList,
8974 { "satellitesListRelatedDataList", "ulp.satellitesListRelatedDataList",
8975 FT_UINT32, BASE_DEC, NULL, 0,
8976 NULL, HFILL }},
8977 { &hf_ulp_SatellitesListRelatedDataList_item,
8978 { "SatellitesListRelatedData", "ulp.SatellitesListRelatedData_element",
8979 FT_NONE, BASE_NONE, NULL, 0,
8980 NULL, HFILL }},
8981 { &hf_ulp_iod,
8982 { "iod", "ulp.iod",
8983 FT_UINT32, BASE_DEC, NULL, 0,
8984 "INTEGER_0_1023", HFILL }},
8985 { &hf_ulp_ganssTODmin,
8986 { "ganssTODmin", "ulp.ganssTODmin",
8987 FT_UINT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_seconds), 0,
8988 "INTEGER_0_59", HFILL }},
8989 { &hf_ulp_reqDataBitAssistanceList,
8990 { "reqDataBitAssistanceList", "ulp.reqDataBitAssistanceList_element",
8991 FT_NONE, BASE_NONE, NULL, 0,
8992 NULL, HFILL }},
8993 { &hf_ulp_gnssSignals,
8994 { "gnssSignals", "ulp.gnssSignals",
8995 FT_BYTES, BASE_NONE, NULL, 0,
8996 "GANSSSignals", HFILL }},
8997 { &hf_ulp_ganssDataBitInterval,
8998 { "ganssDataBitInterval", "ulp.ganssDataBitInterval",
8999 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_ganssDataBitInterval_fmt), 0,
9000 "INTEGER_0_15", HFILL }},
9001 { &hf_ulp_ganssDataBitSatList,
9002 { "ganssDataBitSatList", "ulp.ganssDataBitSatList",
9003 FT_UINT32, BASE_DEC, NULL, 0,
9004 NULL, HFILL }},
9005 { &hf_ulp_ganssDataBitSatList_item,
9006 { "ganssDataBitSatList item", "ulp.ganssDataBitSatList_item",
9007 FT_UINT32, BASE_DEC, NULL, 0,
9008 "INTEGER_0_63", HFILL }},
9009 { &hf_ulp_orbitModelID,
9010 { "orbitModelID", "ulp.orbitModelID",
9011 FT_UINT32, BASE_DEC, NULL, 0,
9012 "INTEGER_0_7", HFILL }},
9013 { &hf_ulp_clockModelID,
9014 { "clockModelID", "ulp.clockModelID",
9015 FT_UINT32, BASE_DEC, NULL, 0,
9016 "INTEGER_0_7", HFILL }},
9017 { &hf_ulp_utcModelID,
9018 { "utcModelID", "ulp.utcModelID",
9019 FT_UINT32, BASE_DEC, NULL, 0,
9020 "INTEGER_0_7", HFILL }},
9021 { &hf_ulp_almanacModelID,
9022 { "almanacModelID", "ulp.almanacModelID",
9023 FT_UINT32, BASE_DEC, NULL, 0,
9024 "INTEGER_0_7", HFILL }},
9025 { &hf_ulp_validity,
9026 { "validity", "ulp.validity",
9027 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_ExtendedEphemeris_validity_fmt), 0,
9028 "INTEGER_1_256", HFILL }},
9029 { &hf_ulp_beginTime,
9030 { "beginTime", "ulp.beginTime_element",
9031 FT_NONE, BASE_NONE, NULL, 0,
9032 "GPSTime", HFILL }},
9033 { &hf_ulp_endTime,
9034 { "endTime", "ulp.endTime_element",
9035 FT_NONE, BASE_NONE, NULL, 0,
9036 "GPSTime", HFILL }},
9037 { &hf_ulp_beginTime_01,
9038 { "beginTime", "ulp.beginTime_element",
9039 FT_NONE, BASE_NONE, NULL, 0,
9040 "GANSSextEphTime", HFILL }},
9041 { &hf_ulp_endTime_01,
9042 { "endTime", "ulp.endTime_element",
9043 FT_NONE, BASE_NONE, NULL, 0,
9044 "GANSSextEphTime", HFILL }},
9045 { &hf_ulp_gPSWeek,
9046 { "gPSWeek", "ulp.gPSWeek",
9047 FT_UINT32, BASE_DEC, NULL, 0,
9048 "INTEGER_0_1023", HFILL }},
9049 { &hf_ulp_gPSTOWhour,
9050 { "gPSTOWhour", "ulp.gPSTOWhour",
9051 FT_UINT32, BASE_DEC, NULL, 0,
9052 "INTEGER_0_167", HFILL }},
9053 { &hf_ulp_gANSSday,
9054 { "gANSSday", "ulp.gANSSday",
9055 FT_UINT32, BASE_DEC, NULL, 0,
9056 "INTEGER_0_8191", HFILL }},
9057 { &hf_ulp_gANSSTODhour,
9058 { "gANSSTODhour", "ulp.gANSSTODhour",
9059 FT_UINT32, BASE_DEC, NULL, 0,
9060 "INTEGER_0_23", HFILL }},
9061 { &hf_ulp_lPPPayload,
9062 { "lPPPayload", "ulp.lPPPayload",
9063 FT_UINT32, BASE_DEC, NULL, 0,
9064 NULL, HFILL }},
9065 { &hf_ulp_lPPPayload_item,
9066 { "lPPPayload item", "ulp.lPPPayload_item",
9067 FT_BYTES, BASE_NONE, NULL, 0,
9068 NULL, HFILL }},
9069 { &hf_ulp_tia801Payload,
9070 { "tia801Payload", "ulp.tia801Payload",
9071 FT_UINT32, BASE_DEC, NULL, 0,
9072 NULL, HFILL }},
9073 { &hf_ulp_tia801Payload_item,
9074 { "tia801Payload item", "ulp.tia801Payload_item",
9075 FT_BYTES, BASE_NONE, NULL, 0,
9076 "OCTET_STRING_SIZE_1_60000", HFILL }},
9077 { &hf_ulp_maj,
9078 { "maj", "ulp.maj",
9079 FT_UINT32, BASE_DEC, NULL, 0,
9080 "INTEGER_0_255", HFILL }},
9081 { &hf_ulp_min,
9082 { "min", "ulp.min",
9083 FT_UINT32, BASE_DEC, NULL, 0,
9084 "INTEGER_0_255", HFILL }},
9085 { &hf_ulp_servind,
9086 { "servind", "ulp.servind",
9087 FT_UINT32, BASE_DEC, NULL, 0,
9088 "INTEGER_0_255", HFILL }},
9089 { &hf_ulp_setSessionID,
9090 { "setSessionID", "ulp.setSessionID_element",
9091 FT_NONE, BASE_NONE, NULL, 0,
9092 NULL, HFILL }},
9093 { &hf_ulp_slpSessionID,
9094 { "slpSessionID", "ulp.slpSessionID_element",
9095 FT_NONE, BASE_NONE, NULL, 0,
9096 NULL, HFILL }},
9097 { &hf_ulp_sessionId,
9098 { "sessionId", "ulp.sessionId",
9099 FT_UINT32, BASE_DEC, NULL, 0,
9100 "INTEGER_0_65535", HFILL }},
9101 { &hf_ulp_setId,
9102 { "setId", "ulp.setId",
9103 FT_UINT32, BASE_DEC, VALS(ulp_SETId_vals), 0,
9104 NULL, HFILL }},
9105 { &hf_ulp_msisdn,
9106 { "msisdn", "ulp.msisdn",
9107 FT_BYTES, BASE_NONE, NULL, 0,
9108 NULL, HFILL }},
9109 { &hf_ulp_mdn,
9110 { "mdn", "ulp.mdn",
9111 FT_BYTES, BASE_NONE, NULL, 0,
9112 NULL, HFILL }},
9113 { &hf_ulp_minsi,
9114 { "min", "ulp.min",
9115 FT_BYTES, BASE_NONE, NULL, 0,
9116 "BIT_STRING_SIZE_34", HFILL }},
9117 { &hf_ulp_imsi,
9118 { "imsi", "ulp.imsi",
9119 FT_BYTES, BASE_NONE, NULL, 0,
9120 NULL, HFILL }},
9121 { &hf_ulp_nai,
9122 { "nai", "ulp.nai",
9123 FT_STRING, BASE_NONE, NULL, 0,
9124 "IA5String_SIZE_1_1000", HFILL }},
9125 { &hf_ulp_iPAddress,
9126 { "iPAddress", "ulp.iPAddress",
9127 FT_UINT32, BASE_DEC, VALS(ulp_IPAddress_vals), 0,
9128 NULL, HFILL }},
9129 { &hf_ulp_ver2_imei,
9130 { "ver2-imei", "ulp.ver2_imei",
9131 FT_BYTES, BASE_NONE, NULL, 0,
9132 "OCTET_STRING_SIZE_8", HFILL }},
9133 { &hf_ulp_sessionSlpID,
9134 { "sessionID", "ulp.sessionID",
9135 FT_BYTES, BASE_NONE, NULL, 0,
9136 "OCTET_STRING_SIZE_4", HFILL }},
9137 { &hf_ulp_slpId,
9138 { "slpId", "ulp.slpId",
9139 FT_UINT32, BASE_DEC, VALS(ulp_SLPAddress_vals), 0,
9140 "SLPAddress", HFILL }},
9141 { &hf_ulp_ipv4Address,
9142 { "ipv4Address", "ulp.ipv4Address",
9143 FT_IPv4, BASE_NONE, NULL, 0,
9144 "OCTET_STRING_SIZE_4", HFILL }},
9145 { &hf_ulp_ipv6Address,
9146 { "ipv6Address", "ulp.ipv6Address",
9147 FT_IPv6, BASE_NONE, NULL, 0,
9148 "OCTET_STRING_SIZE_16", HFILL }},
9149 { &hf_ulp_fqdn,
9150 { "fqdn", "ulp.fqdn",
9151 FT_STRING, BASE_NONE, NULL, 0,
9152 NULL, HFILL }},
9153 { &hf_ulp_cellInfo,
9154 { "cellInfo", "ulp.cellInfo",
9155 FT_UINT32, BASE_DEC, VALS(ulp_CellInfo_vals), 0,
9156 NULL, HFILL }},
9157 { &hf_ulp_status,
9158 { "status", "ulp.status",
9159 FT_UINT32, BASE_DEC, VALS(ulp_Status_vals), 0,
9160 NULL, HFILL }},
9161 { &hf_ulp_gsmCell,
9162 { "gsmCell", "ulp.gsmCell_element",
9163 FT_NONE, BASE_NONE, NULL, 0,
9164 "GsmCellInformation", HFILL }},
9165 { &hf_ulp_wcdmaCell,
9166 { "wcdmaCell", "ulp.wcdmaCell_element",
9167 FT_NONE, BASE_NONE, NULL, 0,
9168 "WcdmaCellInformation", HFILL }},
9169 { &hf_ulp_cdmaCell,
9170 { "cdmaCell", "ulp.cdmaCell_element",
9171 FT_NONE, BASE_NONE, NULL, 0,
9172 "CdmaCellInformation", HFILL }},
9173 { &hf_ulp_ver2_CellInfo_extension,
9174 { "ver2-CellInfo-extension", "ulp.ver2_CellInfo_extension",
9175 FT_UINT32, BASE_DEC, VALS(ulp_Ver2_CellInfo_extension_vals), 0,
9176 NULL, HFILL }},
9177 { &hf_ulp_timestamp_01,
9178 { "timestamp", "ulp.timestamp",
9179 FT_STRING, BASE_NONE, NULL, 0,
9180 "UTCTime", HFILL }},
9181 { &hf_ulp_positionEstimate,
9182 { "positionEstimate", "ulp.positionEstimate_element",
9183 FT_NONE, BASE_NONE, NULL, 0,
9184 NULL, HFILL }},
9185 { &hf_ulp_latitudeSign,
9186 { "latitudeSign", "ulp.latitudeSign",
9187 FT_UINT32, BASE_DEC, VALS(ulp_T_latitudeSign_vals), 0,
9188 NULL, HFILL }},
9189 { &hf_ulp_latitude,
9190 { "latitude", "ulp.latitude",
9191 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_PositionEstimate_latitude_fmt), 0,
9192 "INTEGER_0_8388607", HFILL }},
9193 { &hf_ulp_longitude,
9194 { "longitude", "ulp.longitude",
9195 FT_INT32, BASE_CUSTOM, CF_FUNC(ulp_PositionEstimate_longitude_fmt), 0,
9196 "INTEGER_M8388608_8388607", HFILL }},
9197 { &hf_ulp_uncertainty,
9198 { "uncertainty", "ulp.uncertainty_element",
9199 FT_NONE, BASE_NONE, NULL, 0,
9200 NULL, HFILL }},
9201 { &hf_ulp_uncertaintySemiMajor,
9202 { "uncertaintySemiMajor", "ulp.uncertaintySemiMajor",
9203 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_QoP_horacc_fmt), 0,
9204 "INTEGER_0_127", HFILL }},
9205 { &hf_ulp_uncertaintySemiMinor,
9206 { "uncertaintySemiMinor", "ulp.uncertaintySemiMinor",
9207 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_QoP_horacc_fmt), 0,
9208 "INTEGER_0_127", HFILL }},
9209 { &hf_ulp_orientationMajorAxis,
9210 { "orientationMajorAxis", "ulp.orientationMajorAxis",
9211 FT_UINT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_degree_degrees), 0,
9212 "INTEGER_0_180", HFILL }},
9213 { &hf_ulp_confidence,
9214 { "confidence", "ulp.confidence",
9215 FT_UINT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_percent), 0,
9216 "INTEGER_0_100", HFILL }},
9217 { &hf_ulp_altitudeInfo,
9218 { "altitudeInfo", "ulp.altitudeInfo_element",
9219 FT_NONE, BASE_NONE, NULL, 0,
9220 NULL, HFILL }},
9221 { &hf_ulp_altitudeDirection,
9222 { "altitudeDirection", "ulp.altitudeDirection",
9223 FT_UINT32, BASE_DEC, VALS(ulp_T_altitudeDirection_vals), 0,
9224 NULL, HFILL }},
9225 { &hf_ulp_altitude,
9226 { "altitude", "ulp.altitude",
9227 FT_UINT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_meters), 0,
9228 "INTEGER_0_32767", HFILL }},
9229 { &hf_ulp_altUncertainty,
9230 { "altUncertainty", "ulp.altUncertainty",
9231 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_QoP_veracc_fmt), 0,
9232 "INTEGER_0_127", HFILL }},
9233 { &hf_ulp_refNID_01,
9234 { "refNID", "ulp.refNID",
9235 FT_UINT32, BASE_DEC, NULL, 0,
9236 "INTEGER_0_65535", HFILL }},
9237 { &hf_ulp_refSID_01,
9238 { "refSID", "ulp.refSID",
9239 FT_UINT32, BASE_DEC, NULL, 0,
9240 "INTEGER_0_32767", HFILL }},
9241 { &hf_ulp_refBASELAT,
9242 { "refBASELAT", "ulp.refBASELAT",
9243 FT_UINT32, BASE_DEC, NULL, 0,
9244 "INTEGER_0_4194303", HFILL }},
9245 { &hf_ulp_reBASELONG,
9246 { "reBASELONG", "ulp.reBASELONG",
9247 FT_UINT32, BASE_DEC, NULL, 0,
9248 "INTEGER_0_8388607", HFILL }},
9249 { &hf_ulp_refREFPN,
9250 { "refREFPN", "ulp.refREFPN",
9251 FT_UINT32, BASE_DEC, NULL, 0,
9252 "INTEGER_0_511", HFILL }},
9253 { &hf_ulp_refWeekNumber,
9254 { "refWeekNumber", "ulp.refWeekNumber",
9255 FT_UINT32, BASE_DEC, NULL, 0,
9256 "INTEGER_0_65535", HFILL }},
9257 { &hf_ulp_refSeconds,
9258 { "refSeconds", "ulp.refSeconds",
9259 FT_UINT32, BASE_DEC, NULL, 0,
9260 "INTEGER_0_4194303", HFILL }},
9261 { &hf_ulp_nmr,
9262 { "nmr", "ulp.nmr",
9263 FT_UINT32, BASE_DEC, NULL, 0,
9264 NULL, HFILL }},
9265 { &hf_ulp_ta,
9266 { "ta", "ulp.ta",
9267 FT_UINT32, BASE_DEC, NULL, 0,
9268 "INTEGER_0_255", HFILL }},
9269 { &hf_ulp_frequencyInfo,
9270 { "frequencyInfo", "ulp.frequencyInfo_element",
9271 FT_NONE, BASE_NONE, NULL, 0,
9272 NULL, HFILL }},
9273 { &hf_ulp_primaryScramblingCode,
9274 { "primaryScramblingCode", "ulp.primaryScramblingCode",
9275 FT_UINT32, BASE_DEC, NULL, 0,
9276 "INTEGER_0_511", HFILL }},
9277 { &hf_ulp_measuredResultsList,
9278 { "measuredResultsList", "ulp.measuredResultsList",
9279 FT_UINT32, BASE_DEC, NULL, 0,
9280 NULL, HFILL }},
9281 { &hf_ulp_cellParametersId,
9282 { "cellParametersId", "ulp.cellParametersId",
9283 FT_UINT32, BASE_DEC, NULL, 0,
9284 "INTEGER_0_127", HFILL }},
9285 { &hf_ulp_timingAdvance,
9286 { "timingAdvance", "ulp.timingAdvance_element",
9287 FT_NONE, BASE_NONE, NULL, 0,
9288 NULL, HFILL }},
9289 { &hf_ulp_ta_01,
9290 { "ta", "ulp.ta",
9291 FT_UINT32, BASE_DEC, NULL, 0,
9292 "INTEGER_0_8191", HFILL }},
9293 { &hf_ulp_tAResolution,
9294 { "tAResolution", "ulp.tAResolution",
9295 FT_UINT32, BASE_DEC, VALS(ulp_TAResolution_vals), 0,
9296 NULL, HFILL }},
9297 { &hf_ulp_chipRate,
9298 { "chipRate", "ulp.chipRate",
9299 FT_UINT32, BASE_DEC, VALS(ulp_ChipRate_vals), 0,
9300 NULL, HFILL }},
9301 { &hf_ulp_modeSpecificFrequencyInfo,
9302 { "modeSpecificInfo", "ulp.modeSpecificInfo",
9303 FT_UINT32, BASE_DEC, VALS(ulp_FrequencySpecificInfo_vals), 0,
9304 "FrequencySpecificInfo", HFILL }},
9305 { &hf_ulp_fdd_fr,
9306 { "fdd", "ulp.fdd_element",
9307 FT_NONE, BASE_NONE, NULL, 0,
9308 "FrequencyInfoFDD", HFILL }},
9309 { &hf_ulp_tdd_fr,
9310 { "tdd", "ulp.tdd_element",
9311 FT_NONE, BASE_NONE, NULL, 0,
9312 "FrequencyInfoTDD", HFILL }},
9313 { &hf_ulp_uarfcn_UL,
9314 { "uarfcn-UL", "ulp.uarfcn_UL",
9315 FT_UINT32, BASE_DEC, NULL, 0,
9316 "UARFCN", HFILL }},
9317 { &hf_ulp_uarfcn_DL,
9318 { "uarfcn-DL", "ulp.uarfcn_DL",
9319 FT_UINT32, BASE_DEC, NULL, 0,
9320 "UARFCN", HFILL }},
9321 { &hf_ulp_uarfcn_Nt,
9322 { "uarfcn-Nt", "ulp.uarfcn_Nt",
9323 FT_UINT32, BASE_DEC, NULL, 0,
9324 "UARFCN", HFILL }},
9325 { &hf_ulp_NMR_item,
9326 { "NMRelement", "ulp.NMRelement_element",
9327 FT_NONE, BASE_NONE, NULL, 0,
9328 NULL, HFILL }},
9329 { &hf_ulp_arfcn,
9330 { "arfcn", "ulp.arfcn",
9331 FT_UINT32, BASE_DEC, NULL, 0,
9332 "INTEGER_0_1023", HFILL }},
9333 { &hf_ulp_bsic,
9334 { "bsic", "ulp.bsic",
9335 FT_UINT32, BASE_DEC, NULL, 0,
9336 "INTEGER_0_63", HFILL }},
9337 { &hf_ulp_rxLev,
9338 { "rxLev", "ulp.rxLev",
9339 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_NMRelement_rxLev_fmt), 0,
9340 "INTEGER_0_63", HFILL }},
9341 { &hf_ulp_MeasuredResultsList_item,
9342 { "MeasuredResults", "ulp.MeasuredResults_element",
9343 FT_NONE, BASE_NONE, NULL, 0,
9344 NULL, HFILL }},
9345 { &hf_ulp_utra_CarrierRSSI,
9346 { "utra-CarrierRSSI", "ulp.utra_CarrierRSSI",
9347 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_UTRA_CarrierRSSI_fmt), 0,
9348 NULL, HFILL }},
9349 { &hf_ulp_cellMeasuredResultsList,
9350 { "cellMeasuredResultsList", "ulp.cellMeasuredResultsList",
9351 FT_UINT32, BASE_DEC, NULL, 0,
9352 NULL, HFILL }},
9353 { &hf_ulp_CellMeasuredResultsList_item,
9354 { "CellMeasuredResults", "ulp.CellMeasuredResults_element",
9355 FT_NONE, BASE_NONE, NULL, 0,
9356 NULL, HFILL }},
9357 { &hf_ulp_cellIdentity,
9358 { "cellIdentity", "ulp.cellIdentity",
9359 FT_UINT32, BASE_DEC, NULL, 0,
9360 "INTEGER_0_268435455", HFILL }},
9361 { &hf_ulp_modeSpecificInfo,
9362 { "modeSpecificInfo", "ulp.modeSpecificInfo",
9363 FT_UINT32, BASE_DEC, VALS(ulp_T_modeSpecificInfo_vals), 0,
9364 NULL, HFILL }},
9365 { &hf_ulp_fdd,
9366 { "fdd", "ulp.fdd_element",
9367 FT_NONE, BASE_NONE, NULL, 0,
9368 NULL, HFILL }},
9369 { &hf_ulp_primaryCPICH_Info,
9370 { "primaryCPICH-Info", "ulp.primaryCPICH_Info_element",
9371 FT_NONE, BASE_NONE, NULL, 0,
9372 NULL, HFILL }},
9373 { &hf_ulp_cpich_Ec_N0,
9374 { "cpich-Ec-N0", "ulp.cpich_Ec_N0",
9375 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_CPICH_Ec_N0_fmt), 0,
9376 NULL, HFILL }},
9377 { &hf_ulp_cpich_RSCP,
9378 { "cpich-RSCP", "ulp.cpich_RSCP",
9379 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_CPICH_RSCP_fmt), 0,
9380 NULL, HFILL }},
9381 { &hf_ulp_pathloss,
9382 { "pathloss", "ulp.pathloss",
9383 FT_UINT32, BASE_DEC, NULL, 0,
9384 NULL, HFILL }},
9385 { &hf_ulp_tdd,
9386 { "tdd", "ulp.tdd_element",
9387 FT_NONE, BASE_NONE, NULL, 0,
9388 NULL, HFILL }},
9389 { &hf_ulp_cellParametersID,
9390 { "cellParametersID", "ulp.cellParametersID",
9391 FT_UINT32, BASE_DEC, NULL, 0,
9392 NULL, HFILL }},
9393 { &hf_ulp_proposedTGSN,
9394 { "proposedTGSN", "ulp.proposedTGSN",
9395 FT_UINT32, BASE_DEC, NULL, 0,
9396 "TGSN", HFILL }},
9397 { &hf_ulp_primaryCCPCH_RSCP,
9398 { "primaryCCPCH-RSCP", "ulp.primaryCCPCH_RSCP",
9399 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_PrimaryCCPCH_RSCP_fmt), 0,
9400 NULL, HFILL }},
9401 { &hf_ulp_timeslotISCP_List,
9402 { "timeslotISCP-List", "ulp.timeslotISCP_List",
9403 FT_UINT32, BASE_DEC, NULL, 0,
9404 NULL, HFILL }},
9405 { &hf_ulp_TimeslotISCP_List_item,
9406 { "TimeslotISCP", "ulp.TimeslotISCP",
9407 FT_UINT32, BASE_DEC, NULL, 0,
9408 NULL, HFILL }},
9409 { &hf_ulp_horacc,
9410 { "horacc", "ulp.horacc",
9411 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_QoP_horacc_fmt), 0,
9412 "INTEGER_0_127", HFILL }},
9413 { &hf_ulp_veracc,
9414 { "veracc", "ulp.veracc",
9415 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_QoP_veracc_fmt), 0,
9416 "INTEGER_0_127", HFILL }},
9417 { &hf_ulp_maxLocAge,
9418 { "maxLocAge", "ulp.maxLocAge",
9419 FT_UINT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_seconds), 0,
9420 "INTEGER_0_65535", HFILL }},
9421 { &hf_ulp_delay,
9422 { "delay", "ulp.delay",
9423 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_QoP_delay_fmt), 0,
9424 "INTEGER_0_7", HFILL }},
9425 { &hf_ulp_ver2_responseTime,
9426 { "ver2-responseTime", "ulp.ver2_responseTime",
9427 FT_UINT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_seconds), 0,
9428 "INTEGER_1_128", HFILL }},
9429 { &hf_ulp_horvel,
9430 { "horvel", "ulp.horvel_element",
9431 FT_NONE, BASE_NONE, NULL, 0,
9432 NULL, HFILL }},
9433 { &hf_ulp_horandvervel,
9434 { "horandvervel", "ulp.horandvervel_element",
9435 FT_NONE, BASE_NONE, NULL, 0,
9436 NULL, HFILL }},
9437 { &hf_ulp_horveluncert,
9438 { "horveluncert", "ulp.horveluncert_element",
9439 FT_NONE, BASE_NONE, NULL, 0,
9440 NULL, HFILL }},
9441 { &hf_ulp_horandveruncert,
9442 { "horandveruncert", "ulp.horandveruncert_element",
9443 FT_NONE, BASE_NONE, NULL, 0,
9444 NULL, HFILL }},
9445 { &hf_ulp_bearing,
9446 { "bearing", "ulp.bearing",
9447 FT_UINT16, BASE_DEC|BASE_UNIT_STRING, UNS(&units_degree_degrees), 0,
9448 NULL, HFILL }},
9449 { &hf_ulp_horspeed,
9450 { "horspeed", "ulp.horspeed",
9451 FT_UINT16, BASE_DEC|BASE_UNIT_STRING, UNS(&units_kmh), 0,
9452 NULL, HFILL }},
9453 { &hf_ulp_verdirect,
9454 { "verdirect", "ulp.verdirect",
9455 FT_BOOLEAN, BASE_NONE, TFS(&ulp_vertical_dir_val), 0,
9456 NULL, HFILL }},
9457 { &hf_ulp_bearing_01,
9458 { "bearing", "ulp.bearing",
9459 FT_UINT16, BASE_DEC|BASE_UNIT_STRING, UNS(&units_degree_degrees), 0,
9460 "T_bearing_01", HFILL }},
9461 { &hf_ulp_horspeed_01,
9462 { "horspeed", "ulp.horspeed",
9463 FT_UINT16, BASE_DEC|BASE_UNIT_STRING, UNS(&units_kmh), 0,
9464 "T_horspeed_01", HFILL }},
9465 { &hf_ulp_verspeed,
9466 { "verspeed", "ulp.verspeed",
9467 FT_UINT8, BASE_DEC|BASE_UNIT_STRING, UNS(&units_kmh), 0,
9468 NULL, HFILL }},
9469 { &hf_ulp_bearing_02,
9470 { "bearing", "ulp.bearing",
9471 FT_UINT16, BASE_DEC|BASE_UNIT_STRING, UNS(&units_degree_degrees), 0,
9472 "T_bearing_02", HFILL }},
9473 { &hf_ulp_horspeed_02,
9474 { "horspeed", "ulp.horspeed",
9475 FT_UINT16, BASE_DEC|BASE_UNIT_STRING, UNS(&units_kmh), 0,
9476 "T_horspeed_02", HFILL }},
9477 { &hf_ulp_uncertspeed,
9478 { "uncertspeed", "ulp.uncertspeed",
9479 FT_UINT8, BASE_DEC|BASE_UNIT_STRING, UNS(&units_kmh), 0,
9480 NULL, HFILL }},
9481 { &hf_ulp_verdirect_01,
9482 { "verdirect", "ulp.verdirect",
9483 FT_BOOLEAN, BASE_NONE, TFS(&ulp_vertical_dir_val), 0,
9484 "T_verdirect_01", HFILL }},
9485 { &hf_ulp_bearing_03,
9486 { "bearing", "ulp.bearing",
9487 FT_UINT16, BASE_DEC|BASE_UNIT_STRING, UNS(&units_degree_degrees), 0,
9488 "T_bearing_03", HFILL }},
9489 { &hf_ulp_horspeed_03,
9490 { "horspeed", "ulp.horspeed",
9491 FT_UINT16, BASE_DEC|BASE_UNIT_STRING, UNS(&units_kmh), 0,
9492 "T_horspeed_03", HFILL }},
9493 { &hf_ulp_verspeed_01,
9494 { "verspeed", "ulp.verspeed",
9495 FT_UINT8, BASE_DEC|BASE_UNIT_STRING, UNS(&units_kmh), 0,
9496 "T_verspeed_01", HFILL }},
9497 { &hf_ulp_horuncertspeed,
9498 { "horuncertspeed", "ulp.horuncertspeed",
9499 FT_UINT8, BASE_DEC|BASE_UNIT_STRING, UNS(&units_kmh), 0,
9500 NULL, HFILL }},
9501 { &hf_ulp_veruncertspeed,
9502 { "veruncertspeed", "ulp.veruncertspeed",
9503 FT_UINT8, BASE_DEC|BASE_UNIT_STRING, UNS(&units_kmh), 0,
9504 NULL, HFILL }},
9505 { &hf_ulp_MultipleLocationIds_item,
9506 { "LocationIdData", "ulp.LocationIdData_element",
9507 FT_NONE, BASE_NONE, NULL, 0,
9508 NULL, HFILL }},
9509 { &hf_ulp_relativetimestamp,
9510 { "relativetimestamp", "ulp.relativetimestamp",
9511 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_RelativeTime_fmt), 0,
9512 "RelativeTime", HFILL }},
9513 { &hf_ulp_servingFlag,
9514 { "servingFlag", "ulp.servingFlag",
9515 FT_BOOLEAN, BASE_NONE, NULL, 0,
9516 "BOOLEAN", HFILL }},
9517 { &hf_ulp_supportedWLANInfo,
9518 { "supportedWLANInfo", "ulp.supportedWLANInfo_element",
9519 FT_NONE, BASE_NONE, NULL, 0,
9520 NULL, HFILL }},
9521 { &hf_ulp_supportedWLANApsList,
9522 { "supportedWLANApsList", "ulp.supportedWLANApsList_element",
9523 FT_NONE, BASE_NONE, NULL, 0,
9524 NULL, HFILL }},
9525 { &hf_ulp_supportedWCDMAInfo,
9526 { "supportedWCDMAInfo", "ulp.supportedWCDMAInfo_element",
9527 FT_NONE, BASE_NONE, NULL, 0,
9528 NULL, HFILL }},
9529 { &hf_ulp_hrdp,
9530 { "hrdp", "ulp.hrdp",
9531 FT_BOOLEAN, BASE_NONE, NULL, 0,
9532 "BOOLEAN", HFILL }},
9533 { &hf_ulp_wimax,
9534 { "wimax", "ulp.wimax",
9535 FT_BOOLEAN, BASE_NONE, NULL, 0,
9536 "BOOLEAN", HFILL }},
9537 { &hf_ulp_historic,
9538 { "historic", "ulp.historic",
9539 FT_BOOLEAN, BASE_NONE, NULL, 0,
9540 "BOOLEAN", HFILL }},
9541 { &hf_ulp_nonServing,
9542 { "nonServing", "ulp.nonServing",
9543 FT_BOOLEAN, BASE_NONE, NULL, 0,
9544 "BOOLEAN", HFILL }},
9545 { &hf_ulp_uTRANGPSReferenceTime,
9546 { "uTRANGPSReferenceTime", "ulp.uTRANGPSReferenceTime",
9547 FT_BOOLEAN, BASE_NONE, NULL, 0,
9548 "BOOLEAN", HFILL }},
9549 { &hf_ulp_uTRANGANSSReferenceTime,
9550 { "uTRANGANSSReferenceTime", "ulp.uTRANGANSSReferenceTime",
9551 FT_BOOLEAN, BASE_NONE, NULL, 0,
9552 "BOOLEAN", HFILL }},
9553 { &hf_ulp_apTP,
9554 { "apTP", "ulp.apTP",
9555 FT_BOOLEAN, BASE_NONE, NULL, 0,
9556 "BOOLEAN", HFILL }},
9557 { &hf_ulp_apAG,
9558 { "apAG", "ulp.apAG",
9559 FT_BOOLEAN, BASE_NONE, NULL, 0,
9560 "BOOLEAN", HFILL }},
9561 { &hf_ulp_apSN,
9562 { "apSN", "ulp.apSN",
9563 FT_BOOLEAN, BASE_NONE, NULL, 0,
9564 "BOOLEAN", HFILL }},
9565 { &hf_ulp_apDevType,
9566 { "apDevType", "ulp.apDevType",
9567 FT_BOOLEAN, BASE_NONE, NULL, 0,
9568 "BOOLEAN", HFILL }},
9569 { &hf_ulp_apRSSI,
9570 { "apRSSI", "ulp.apRSSI",
9571 FT_BOOLEAN, BASE_NONE, NULL, 0,
9572 "BOOLEAN", HFILL }},
9573 { &hf_ulp_apChanFreq,
9574 { "apChanFreq", "ulp.apChanFreq",
9575 FT_BOOLEAN, BASE_NONE, NULL, 0,
9576 "BOOLEAN", HFILL }},
9577 { &hf_ulp_apRTD,
9578 { "apRTD", "ulp.apRTD",
9579 FT_BOOLEAN, BASE_NONE, NULL, 0,
9580 "BOOLEAN", HFILL }},
9581 { &hf_ulp_setTP,
9582 { "setTP", "ulp.setTP",
9583 FT_BOOLEAN, BASE_NONE, NULL, 0,
9584 "BOOLEAN", HFILL }},
9585 { &hf_ulp_setAG,
9586 { "setAG", "ulp.setAG",
9587 FT_BOOLEAN, BASE_NONE, NULL, 0,
9588 "BOOLEAN", HFILL }},
9589 { &hf_ulp_setSN,
9590 { "setSN", "ulp.setSN",
9591 FT_BOOLEAN, BASE_NONE, NULL, 0,
9592 "BOOLEAN", HFILL }},
9593 { &hf_ulp_setRSSI,
9594 { "setRSSI", "ulp.setRSSI",
9595 FT_BOOLEAN, BASE_NONE, NULL, 0,
9596 "BOOLEAN", HFILL }},
9597 { &hf_ulp_apRepLoc,
9598 { "apRepLoc", "ulp.apRepLoc",
9599 FT_BOOLEAN, BASE_NONE, NULL, 0,
9600 "BOOLEAN", HFILL }},
9601 { &hf_ulp_apRL,
9602 { "apRL", "ulp.apRL",
9603 FT_BOOLEAN, BASE_NONE, NULL, 0,
9604 "BOOLEAN", HFILL }},
9605 { &hf_ulp_opClass,
9606 { "opClass", "ulp.opClass",
9607 FT_BOOLEAN, BASE_NONE, NULL, 0,
9608 "BOOLEAN", HFILL }},
9609 { &hf_ulp_apSSID,
9610 { "apSSID", "ulp.apSSID",
9611 FT_BOOLEAN, BASE_NONE, NULL, 0,
9612 "BOOLEAN", HFILL }},
9613 { &hf_ulp_apPHYType,
9614 { "apPHYType", "ulp.apPHYType",
9615 FT_BOOLEAN, BASE_NONE, NULL, 0,
9616 "BOOLEAN", HFILL }},
9617 { &hf_ulp_setMACAddress,
9618 { "setMACAddress", "ulp.setMACAddress",
9619 FT_BOOLEAN, BASE_NONE, NULL, 0,
9620 "BOOLEAN", HFILL }},
9621 { &hf_ulp_supportedWLANApDataList,
9622 { "supportedWLANApDataList", "ulp.supportedWLANApDataList",
9623 FT_UINT32, BASE_DEC, NULL, 0,
9624 "SEQUENCE_SIZE_1_maxWLANApDataSize_OF_SupportedWLANApData", HFILL }},
9625 { &hf_ulp_supportedWLANApDataList_item,
9626 { "SupportedWLANApData", "ulp.SupportedWLANApData_element",
9627 FT_NONE, BASE_NONE, NULL, 0,
9628 NULL, HFILL }},
9629 { &hf_ulp_supportedWLANapsChannel11a,
9630 { "supportedWLANapsChannel11a", "ulp.supportedWLANapsChannel11a_element",
9631 FT_NONE, BASE_NONE, NULL, 0,
9632 NULL, HFILL }},
9633 { &hf_ulp_supportedWLANapsChannel11bg,
9634 { "supportedWLANapsChannel11bg", "ulp.supportedWLANapsChannel11bg_element",
9635 FT_NONE, BASE_NONE, NULL, 0,
9636 NULL, HFILL }},
9637 { &hf_ulp_ch34,
9638 { "ch34", "ulp.ch34",
9639 FT_BOOLEAN, BASE_NONE, NULL, 0,
9640 "BOOLEAN", HFILL }},
9641 { &hf_ulp_ch36,
9642 { "ch36", "ulp.ch36",
9643 FT_BOOLEAN, BASE_NONE, NULL, 0,
9644 "BOOLEAN", HFILL }},
9645 { &hf_ulp_ch38,
9646 { "ch38", "ulp.ch38",
9647 FT_BOOLEAN, BASE_NONE, NULL, 0,
9648 "BOOLEAN", HFILL }},
9649 { &hf_ulp_ch40,
9650 { "ch40", "ulp.ch40",
9651 FT_BOOLEAN, BASE_NONE, NULL, 0,
9652 "BOOLEAN", HFILL }},
9653 { &hf_ulp_ch42,
9654 { "ch42", "ulp.ch42",
9655 FT_BOOLEAN, BASE_NONE, NULL, 0,
9656 "BOOLEAN", HFILL }},
9657 { &hf_ulp_ch44,
9658 { "ch44", "ulp.ch44",
9659 FT_BOOLEAN, BASE_NONE, NULL, 0,
9660 "BOOLEAN", HFILL }},
9661 { &hf_ulp_ch46,
9662 { "ch46", "ulp.ch46",
9663 FT_BOOLEAN, BASE_NONE, NULL, 0,
9664 "BOOLEAN", HFILL }},
9665 { &hf_ulp_ch48,
9666 { "ch48", "ulp.ch48",
9667 FT_BOOLEAN, BASE_NONE, NULL, 0,
9668 "BOOLEAN", HFILL }},
9669 { &hf_ulp_ch52,
9670 { "ch52", "ulp.ch52",
9671 FT_BOOLEAN, BASE_NONE, NULL, 0,
9672 "BOOLEAN", HFILL }},
9673 { &hf_ulp_ch56,
9674 { "ch56", "ulp.ch56",
9675 FT_BOOLEAN, BASE_NONE, NULL, 0,
9676 "BOOLEAN", HFILL }},
9677 { &hf_ulp_ch60,
9678 { "ch60", "ulp.ch60",
9679 FT_BOOLEAN, BASE_NONE, NULL, 0,
9680 "BOOLEAN", HFILL }},
9681 { &hf_ulp_ch64,
9682 { "ch64", "ulp.ch64",
9683 FT_BOOLEAN, BASE_NONE, NULL, 0,
9684 "BOOLEAN", HFILL }},
9685 { &hf_ulp_ch149,
9686 { "ch149", "ulp.ch149",
9687 FT_BOOLEAN, BASE_NONE, NULL, 0,
9688 "BOOLEAN", HFILL }},
9689 { &hf_ulp_ch153,
9690 { "ch153", "ulp.ch153",
9691 FT_BOOLEAN, BASE_NONE, NULL, 0,
9692 "BOOLEAN", HFILL }},
9693 { &hf_ulp_ch157,
9694 { "ch157", "ulp.ch157",
9695 FT_BOOLEAN, BASE_NONE, NULL, 0,
9696 "BOOLEAN", HFILL }},
9697 { &hf_ulp_ch161,
9698 { "ch161", "ulp.ch161",
9699 FT_BOOLEAN, BASE_NONE, NULL, 0,
9700 "BOOLEAN", HFILL }},
9701 { &hf_ulp_ch1,
9702 { "ch1", "ulp.ch1",
9703 FT_BOOLEAN, BASE_NONE, NULL, 0,
9704 "BOOLEAN", HFILL }},
9705 { &hf_ulp_ch2,
9706 { "ch2", "ulp.ch2",
9707 FT_BOOLEAN, BASE_NONE, NULL, 0,
9708 "BOOLEAN", HFILL }},
9709 { &hf_ulp_ch3,
9710 { "ch3", "ulp.ch3",
9711 FT_BOOLEAN, BASE_NONE, NULL, 0,
9712 "BOOLEAN", HFILL }},
9713 { &hf_ulp_ch4,
9714 { "ch4", "ulp.ch4",
9715 FT_BOOLEAN, BASE_NONE, NULL, 0,
9716 "BOOLEAN", HFILL }},
9717 { &hf_ulp_ch5,
9718 { "ch5", "ulp.ch5",
9719 FT_BOOLEAN, BASE_NONE, NULL, 0,
9720 "BOOLEAN", HFILL }},
9721 { &hf_ulp_ch6,
9722 { "ch6", "ulp.ch6",
9723 FT_BOOLEAN, BASE_NONE, NULL, 0,
9724 "BOOLEAN", HFILL }},
9725 { &hf_ulp_ch7,
9726 { "ch7", "ulp.ch7",
9727 FT_BOOLEAN, BASE_NONE, NULL, 0,
9728 "BOOLEAN", HFILL }},
9729 { &hf_ulp_ch8,
9730 { "ch8", "ulp.ch8",
9731 FT_BOOLEAN, BASE_NONE, NULL, 0,
9732 "BOOLEAN", HFILL }},
9733 { &hf_ulp_ch9,
9734 { "ch9", "ulp.ch9",
9735 FT_BOOLEAN, BASE_NONE, NULL, 0,
9736 "BOOLEAN", HFILL }},
9737 { &hf_ulp_ch10,
9738 { "ch10", "ulp.ch10",
9739 FT_BOOLEAN, BASE_NONE, NULL, 0,
9740 "BOOLEAN", HFILL }},
9741 { &hf_ulp_ch11,
9742 { "ch11", "ulp.ch11",
9743 FT_BOOLEAN, BASE_NONE, NULL, 0,
9744 "BOOLEAN", HFILL }},
9745 { &hf_ulp_ch12,
9746 { "ch12", "ulp.ch12",
9747 FT_BOOLEAN, BASE_NONE, NULL, 0,
9748 "BOOLEAN", HFILL }},
9749 { &hf_ulp_ch13,
9750 { "ch13", "ulp.ch13",
9751 FT_BOOLEAN, BASE_NONE, NULL, 0,
9752 "BOOLEAN", HFILL }},
9753 { &hf_ulp_ch14,
9754 { "ch14", "ulp.ch14",
9755 FT_BOOLEAN, BASE_NONE, NULL, 0,
9756 "BOOLEAN", HFILL }},
9757 { &hf_ulp_apMACAddress_01,
9758 { "apMACAddress", "ulp.apMACAddress",
9759 FT_ETHER, BASE_NONE, NULL, 0,
9760 "T_apMACAddress_01", HFILL }},
9761 { &hf_ulp_apDevType_01,
9762 { "apDevType", "ulp.apDevType",
9763 FT_UINT32, BASE_DEC, VALS(ulp_T_apDevType_vals), 0,
9764 NULL, HFILL }},
9765 { &hf_ulp_mrl,
9766 { "mrl", "ulp.mrl",
9767 FT_BOOLEAN, BASE_NONE, NULL, 0,
9768 "BOOLEAN", HFILL }},
9769 { &hf_ulp_hrpdCell,
9770 { "hrpdCell", "ulp.hrpdCell_element",
9771 FT_NONE, BASE_NONE, NULL, 0,
9772 "HrpdCellInformation", HFILL }},
9773 { &hf_ulp_umbCell,
9774 { "umbCell", "ulp.umbCell_element",
9775 FT_NONE, BASE_NONE, NULL, 0,
9776 "UmbCellInformation", HFILL }},
9777 { &hf_ulp_lteCell,
9778 { "lteCell", "ulp.lteCell_element",
9779 FT_NONE, BASE_NONE, NULL, 0,
9780 "LteCellInformation", HFILL }},
9781 { &hf_ulp_wlanAP,
9782 { "wlanAP", "ulp.wlanAP_element",
9783 FT_NONE, BASE_NONE, NULL, 0,
9784 "WlanAPInformation", HFILL }},
9785 { &hf_ulp_wimaxBS,
9786 { "wimaxBS", "ulp.wimaxBS_element",
9787 FT_NONE, BASE_NONE, NULL, 0,
9788 "WimaxBSInformation", HFILL }},
9789 { &hf_ulp_nrCell,
9790 { "nrCell", "ulp.nrCell_element",
9791 FT_NONE, BASE_NONE, NULL, 0,
9792 "NRCellInformation", HFILL }},
9793 { &hf_ulp_cellGlobalIdEUTRA,
9794 { "cellGlobalIdEUTRA", "ulp.cellGlobalIdEUTRA_element",
9795 FT_NONE, BASE_NONE, NULL, 0,
9796 NULL, HFILL }},
9797 { &hf_ulp_physCellId,
9798 { "physCellId", "ulp.physCellId",
9799 FT_UINT32, BASE_DEC, NULL, 0,
9800 NULL, HFILL }},
9801 { &hf_ulp_trackingAreaCode,
9802 { "trackingAreaCode", "ulp.trackingAreaCode",
9803 FT_BYTES, BASE_NONE, NULL, 0,
9804 NULL, HFILL }},
9805 { &hf_ulp_rsrpResult,
9806 { "rsrpResult", "ulp.rsrpResult",
9807 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_RSRP_Range_fmt), 0,
9808 "RSRP_Range", HFILL }},
9809 { &hf_ulp_rsrqResult,
9810 { "rsrqResult", "ulp.rsrqResult",
9811 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_RSRQ_Range_fmt), 0,
9812 "RSRQ_Range", HFILL }},
9813 { &hf_ulp_ta_02,
9814 { "ta", "ulp.ta",
9815 FT_UINT32, BASE_DEC, NULL, 0,
9816 "INTEGER_0_1282", HFILL }},
9817 { &hf_ulp_measResultListEUTRA,
9818 { "measResultListEUTRA", "ulp.measResultListEUTRA",
9819 FT_UINT32, BASE_DEC, NULL, 0,
9820 NULL, HFILL }},
9821 { &hf_ulp_earfcn,
9822 { "earfcn", "ulp.earfcn",
9823 FT_UINT32, BASE_DEC, NULL, 0,
9824 "INTEGER_0_65535", HFILL }},
9825 { &hf_ulp_earfcn_ext,
9826 { "earfcn-ext", "ulp.earfcn_ext",
9827 FT_UINT32, BASE_DEC, NULL, 0,
9828 "INTEGER_65536_262143", HFILL }},
9829 { &hf_ulp_rsrpResult_ext,
9830 { "rsrpResult-ext", "ulp.rsrpResult_ext",
9831 FT_INT32, BASE_DEC, NULL, 0,
9832 "RSRP_Range_Ext", HFILL }},
9833 { &hf_ulp_rsrqResult_ext,
9834 { "rsrqResult-ext", "ulp.rsrqResult_ext",
9835 FT_INT32, BASE_DEC, NULL, 0,
9836 "RSRQ_Range_Ext", HFILL }},
9837 { &hf_ulp_rs_sinrResult,
9838 { "rs-sinrResult", "ulp.rs_sinrResult",
9839 FT_UINT32, BASE_DEC, NULL, 0,
9840 "RS_SINR_Range", HFILL }},
9841 { &hf_ulp_servingInformation5G,
9842 { "servingInformation5G", "ulp.servingInformation5G_element",
9843 FT_NONE, BASE_NONE, NULL, 0,
9844 NULL, HFILL }},
9845 { &hf_ulp_MeasResultListEUTRA_item,
9846 { "MeasResultEUTRA", "ulp.MeasResultEUTRA_element",
9847 FT_NONE, BASE_NONE, NULL, 0,
9848 NULL, HFILL }},
9849 { &hf_ulp_cgi_Info,
9850 { "cgi-Info", "ulp.cgi_Info_element",
9851 FT_NONE, BASE_NONE, NULL, 0,
9852 NULL, HFILL }},
9853 { &hf_ulp_cellGlobalId,
9854 { "cellGlobalId", "ulp.cellGlobalId_element",
9855 FT_NONE, BASE_NONE, NULL, 0,
9856 "CellGlobalIdEUTRA", HFILL }},
9857 { &hf_ulp_measResult,
9858 { "measResult", "ulp.measResult_element",
9859 FT_NONE, BASE_NONE, NULL, 0,
9860 NULL, HFILL }},
9861 { &hf_ulp_neighbourInformation5G,
9862 { "neighbourInformation5G", "ulp.neighbourInformation5G_element",
9863 FT_NONE, BASE_NONE, NULL, 0,
9864 NULL, HFILL }},
9865 { &hf_ulp_plmn_Identity,
9866 { "plmn-Identity", "ulp.plmn_Identity_element",
9867 FT_NONE, BASE_NONE, NULL, 0,
9868 NULL, HFILL }},
9869 { &hf_ulp_cellIdentity_01,
9870 { "cellIdentity", "ulp.cellIdentity",
9871 FT_BYTES, BASE_NONE, NULL, 0,
9872 NULL, HFILL }},
9873 { &hf_ulp_mcc,
9874 { "mcc", "ulp.mcc",
9875 FT_UINT32, BASE_DEC, NULL, 0,
9876 NULL, HFILL }},
9877 { &hf_ulp_mnc,
9878 { "mnc", "ulp.mnc",
9879 FT_UINT32, BASE_DEC, NULL, 0,
9880 NULL, HFILL }},
9881 { &hf_ulp_MCC_item,
9882 { "MCC-MNC-Digit", "ulp.MCC_MNC_Digit",
9883 FT_UINT32, BASE_DEC, NULL, 0,
9884 NULL, HFILL }},
9885 { &hf_ulp_MNC_item,
9886 { "MCC-MNC-Digit", "ulp.MCC_MNC_Digit",
9887 FT_UINT32, BASE_DEC, NULL, 0,
9888 NULL, HFILL }},
9889 { &hf_ulp_trackingAreaCode_01,
9890 { "trackingAreaCode", "ulp.trackingAreaCode",
9891 FT_BYTES, BASE_NONE, NULL, 0,
9892 "TrackingAreaCodeNR", HFILL }},
9893 { &hf_ulp_apMACAddress_02,
9894 { "apMACAddress", "ulp.apMACAddress",
9895 FT_ETHER, BASE_NONE, NULL, 0,
9896 "T_apMACAddress_02", HFILL }},
9897 { &hf_ulp_apTransmitPower,
9898 { "apTransmitPower", "ulp.apTransmitPower",
9899 FT_INT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_dbm), 0,
9900 "INTEGER_M127_128", HFILL }},
9901 { &hf_ulp_apAntennaGain,
9902 { "apAntennaGain", "ulp.apAntennaGain",
9903 FT_INT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_dbi), 0,
9904 "INTEGER_M127_128", HFILL }},
9905 { &hf_ulp_apSignaltoNoise,
9906 { "apSignaltoNoise", "ulp.apSignaltoNoise",
9907 FT_INT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_decibels), 0,
9908 "INTEGER_M127_128", HFILL }},
9909 { &hf_ulp_apDeviceType,
9910 { "apDeviceType", "ulp.apDeviceType",
9911 FT_UINT32, BASE_DEC, VALS(ulp_T_apDeviceType_vals), 0,
9912 NULL, HFILL }},
9913 { &hf_ulp_apSignalStrength,
9914 { "apSignalStrength", "ulp.apSignalStrength",
9915 FT_INT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_dbm), 0,
9916 "INTEGER_M127_128", HFILL }},
9917 { &hf_ulp_apChannelFrequency,
9918 { "apChannelFrequency", "ulp.apChannelFrequency",
9919 FT_UINT32, BASE_DEC, NULL, 0,
9920 "INTEGER_0_256", HFILL }},
9921 { &hf_ulp_apRoundTripDelay,
9922 { "apRoundTripDelay", "ulp.apRoundTripDelay_element",
9923 FT_NONE, BASE_NONE, NULL, 0,
9924 "RTD", HFILL }},
9925 { &hf_ulp_setTransmitPower,
9926 { "setTransmitPower", "ulp.setTransmitPower",
9927 FT_INT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_dbm), 0,
9928 "INTEGER_M127_128", HFILL }},
9929 { &hf_ulp_setAntennaGain,
9930 { "setAntennaGain", "ulp.setAntennaGain",
9931 FT_INT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_dbi), 0,
9932 "INTEGER_M127_128", HFILL }},
9933 { &hf_ulp_setSignaltoNoise,
9934 { "setSignaltoNoise", "ulp.setSignaltoNoise",
9935 FT_INT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_decibels), 0,
9936 "INTEGER_M127_128", HFILL }},
9937 { &hf_ulp_setSignalStrength,
9938 { "setSignalStrength", "ulp.setSignalStrength",
9939 FT_INT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_dbm), 0,
9940 "INTEGER_M127_128", HFILL }},
9941 { &hf_ulp_apReportedLocation,
9942 { "apReportedLocation", "ulp.apReportedLocation_element",
9943 FT_NONE, BASE_NONE, NULL, 0,
9944 "ReportedLocation", HFILL }},
9945 { &hf_ulp_apRepLocation,
9946 { "apRepLocation", "ulp.apRepLocation",
9947 FT_UINT32, BASE_DEC, VALS(ulp_RepLocation_vals), 0,
9948 "RepLocation", HFILL }},
9949 { &hf_ulp_apSignalStrengthDelta,
9950 { "apSignalStrengthDelta", "ulp.apSignalStrengthDelta",
9951 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_SignalDelta_fmt), 0,
9952 "INTEGER_0_1", HFILL }},
9953 { &hf_ulp_apSignaltoNoiseDelta,
9954 { "apSignaltoNoiseDelta", "ulp.apSignaltoNoiseDelta",
9955 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_SignalDelta_fmt), 0,
9956 "INTEGER_0_1", HFILL }},
9957 { &hf_ulp_setSignalStrengthDelta,
9958 { "setSignalStrengthDelta", "ulp.setSignalStrengthDelta",
9959 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_SignalDelta_fmt), 0,
9960 "INTEGER_0_1", HFILL }},
9961 { &hf_ulp_setSignaltoNoiseDelta,
9962 { "setSignaltoNoiseDelta", "ulp.setSignaltoNoiseDelta",
9963 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_SignalDelta_fmt), 0,
9964 "INTEGER_0_1", HFILL }},
9965 { &hf_ulp_operatingClass,
9966 { "operatingClass", "ulp.operatingClass",
9967 FT_UINT32, BASE_DEC, NULL, 0,
9968 "INTEGER_0_255", HFILL }},
9969 { &hf_ulp_apSSID_01,
9970 { "apSSID", "ulp.apSSID",
9971 FT_STRING, BASE_NONE, NULL, 0,
9972 NULL, HFILL }},
9973 { &hf_ulp_apPHYType_01,
9974 { "apPHYType", "ulp.apPHYType",
9975 FT_UINT32, BASE_DEC, VALS(ulp_T_apPHYType_vals), 0,
9976 NULL, HFILL }},
9977 { &hf_ulp_setMACAddress_01,
9978 { "setMACAddress", "ulp.setMACAddress",
9979 FT_ETHER, BASE_NONE, NULL, 0,
9980 NULL, HFILL }},
9981 { &hf_ulp_rTDValue,
9982 { "rTDValue", "ulp.rTDValue",
9983 FT_UINT32, BASE_DEC, NULL, 0,
9984 "INTEGER_0_16777216", HFILL }},
9985 { &hf_ulp_rTDUnits,
9986 { "rTDUnits", "ulp.rTDUnits",
9987 FT_UINT32, BASE_DEC, VALS(ulp_RTDUnits_vals), 0,
9988 NULL, HFILL }},
9989 { &hf_ulp_rTDAccuracy,
9990 { "rTDAccuracy", "ulp.rTDAccuracy",
9991 FT_UINT32, BASE_DEC, NULL, 0,
9992 "INTEGER_0_255", HFILL }},
9993 { &hf_ulp_locationEncodingDescriptor,
9994 { "locationEncodingDescriptor", "ulp.locationEncodingDescriptor",
9995 FT_UINT32, BASE_DEC, VALS(ulp_LocationEncodingDescriptor_vals), 0,
9996 NULL, HFILL }},
9997 { &hf_ulp_locationData,
9998 { "locationData", "ulp.locationData_element",
9999 FT_NONE, BASE_NONE, NULL, 0,
10000 NULL, HFILL }},
10001 { &hf_ulp_locationAccuracy,
10002 { "locationAccuracy", "ulp.locationAccuracy",
10003 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_locationAccuracy_fmt), 0,
10004 "INTEGER_0_4294967295", HFILL }},
10005 { &hf_ulp_locationValue,
10006 { "locationValue", "ulp.locationValue",
10007 FT_BYTES, BASE_NONE, NULL, 0,
10008 "OCTET_STRING_SIZE_1_128", HFILL }},
10009 { &hf_ulp_lciLocData,
10010 { "lciLocData", "ulp.lciLocData_element",
10011 FT_NONE, BASE_NONE, NULL, 0,
10012 NULL, HFILL }},
10013 { &hf_ulp_locationDataLCI,
10014 { "locationDataLCI", "ulp.locationDataLCI_element",
10015 FT_NONE, BASE_NONE, NULL, 0,
10016 NULL, HFILL }},
10017 { &hf_ulp_latitudeResolution,
10018 { "latitudeResolution", "ulp.latitudeResolution",
10019 FT_BYTES, BASE_NONE, NULL, 0,
10020 "BIT_STRING_SIZE_6", HFILL }},
10021 { &hf_ulp_latitude_01,
10022 { "latitude", "ulp.latitude",
10023 FT_BYTES, BASE_NONE, NULL, 0,
10024 "BIT_STRING_SIZE_34", HFILL }},
10025 { &hf_ulp_longitudeResolution,
10026 { "longitudeResolution", "ulp.longitudeResolution",
10027 FT_BYTES, BASE_NONE, NULL, 0,
10028 "BIT_STRING_SIZE_6", HFILL }},
10029 { &hf_ulp_longitude_01,
10030 { "longitude", "ulp.longitude",
10031 FT_BYTES, BASE_NONE, NULL, 0,
10032 "BIT_STRING_SIZE_34", HFILL }},
10033 { &hf_ulp_altitudeType,
10034 { "altitudeType", "ulp.altitudeType",
10035 FT_BYTES, BASE_NONE, NULL, 0,
10036 "BIT_STRING_SIZE_4", HFILL }},
10037 { &hf_ulp_altitudeResolution,
10038 { "altitudeResolution", "ulp.altitudeResolution",
10039 FT_BYTES, BASE_NONE, NULL, 0,
10040 "BIT_STRING_SIZE_6", HFILL }},
10041 { &hf_ulp_altitude_01,
10042 { "altitude", "ulp.altitude",
10043 FT_BYTES, BASE_NONE, NULL, 0,
10044 "BIT_STRING_SIZE_30", HFILL }},
10045 { &hf_ulp_datum,
10046 { "datum", "ulp.datum",
10047 FT_BYTES, BASE_NONE, NULL, 0,
10048 "BIT_STRING_SIZE_8", HFILL }},
10049 { &hf_ulp_wimaxBsID,
10050 { "wimaxBsID", "ulp.wimaxBsID_element",
10051 FT_NONE, BASE_NONE, NULL, 0,
10052 NULL, HFILL }},
10053 { &hf_ulp_wimaxRTD,
10054 { "wimaxRTD", "ulp.wimaxRTD_element",
10055 FT_NONE, BASE_NONE, NULL, 0,
10056 NULL, HFILL }},
10057 { &hf_ulp_wimaxNMRList,
10058 { "wimaxNMRList", "ulp.wimaxNMRList",
10059 FT_UINT32, BASE_DEC, NULL, 0,
10060 NULL, HFILL }},
10061 { &hf_ulp_rtd,
10062 { "rtd", "ulp.rtd",
10063 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_WimaxRTD_fmt), 0,
10064 "INTEGER_0_65535", HFILL }},
10065 { &hf_ulp_rTDstd,
10066 { "rTDstd", "ulp.rTDstd",
10067 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_WimaxRTD_fmt), 0,
10068 "INTEGER_0_1023", HFILL }},
10069 { &hf_ulp_WimaxNMRList_item,
10070 { "WimaxNMR", "ulp.WimaxNMR_element",
10071 FT_NONE, BASE_NONE, NULL, 0,
10072 NULL, HFILL }},
10073 { &hf_ulp_relDelay,
10074 { "relDelay", "ulp.relDelay",
10075 FT_INT32, BASE_CUSTOM, CF_FUNC(ulp_WimaxRTD_fmt), 0,
10076 "INTEGER_M32768_32767", HFILL }},
10077 { &hf_ulp_relDelaystd,
10078 { "relDelaystd", "ulp.relDelaystd",
10079 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_WimaxRTD_fmt), 0,
10080 "INTEGER_0_1023", HFILL }},
10081 { &hf_ulp_rssi,
10082 { "rssi", "ulp.rssi",
10083 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_WimaxNMR_rssi_fmt), 0,
10084 "INTEGER_0_255", HFILL }},
10085 { &hf_ulp_rSSIstd,
10086 { "rSSIstd", "ulp.rSSIstd",
10087 FT_UINT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_decibels), 0,
10088 "INTEGER_0_63", HFILL }},
10089 { &hf_ulp_bSTxPower,
10090 { "bSTxPower", "ulp.bSTxPower",
10091 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_WimaxNMR_rssi_fmt), 0,
10092 "INTEGER_0_255", HFILL }},
10093 { &hf_ulp_cinr,
10094 { "cinr", "ulp.cinr",
10095 FT_UINT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_decibels), 0,
10096 "INTEGER_0_255", HFILL }},
10097 { &hf_ulp_cINRstd,
10098 { "cINRstd", "ulp.cINRstd",
10099 FT_UINT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_decibels), 0,
10100 "INTEGER_0_63", HFILL }},
10101 { &hf_ulp_bSLocation,
10102 { "bSLocation", "ulp.bSLocation_element",
10103 FT_NONE, BASE_NONE, NULL, 0,
10104 "ReportedLocation", HFILL }},
10105 { &hf_ulp_servingCellInformation,
10106 { "servingCellInformation", "ulp.servingCellInformation",
10107 FT_UINT32, BASE_DEC, NULL, 0,
10108 "ServingCellInformationNR", HFILL }},
10109 { &hf_ulp_measuredResultsListNR,
10110 { "measuredResultsListNR", "ulp.measuredResultsListNR",
10111 FT_UINT32, BASE_DEC, NULL, 0,
10112 "MeasResultListNR", HFILL }},
10113 { &hf_ulp_ServingCellInformationNR_item,
10114 { "ServCellNR", "ulp.ServCellNR_element",
10115 FT_NONE, BASE_NONE, NULL, 0,
10116 NULL, HFILL }},
10117 { &hf_ulp_physCellId_01,
10118 { "physCellId", "ulp.physCellId",
10119 FT_UINT32, BASE_DEC, NULL, 0,
10120 "PhysCellIdNR", HFILL }},
10121 { &hf_ulp_arfcn_NR,
10122 { "arfcn-NR", "ulp.arfcn_NR",
10123 FT_UINT32, BASE_DEC, NULL, 0,
10124 NULL, HFILL }},
10125 { &hf_ulp_cellGlobalId_01,
10126 { "cellGlobalId", "ulp.cellGlobalId_element",
10127 FT_NONE, BASE_NONE, NULL, 0,
10128 "CellGlobalIdNR", HFILL }},
10129 { &hf_ulp_ssb_Measurements,
10130 { "ssb-Measurements", "ulp.ssb_Measurements_element",
10131 FT_NONE, BASE_NONE, NULL, 0,
10132 "NR_Measurements", HFILL }},
10133 { &hf_ulp_csi_rs_Measurements,
10134 { "csi-rs-Measurements", "ulp.csi_rs_Measurements_element",
10135 FT_NONE, BASE_NONE, NULL, 0,
10136 "NR_Measurements", HFILL }},
10137 { &hf_ulp_ta_03,
10138 { "ta", "ulp.ta",
10139 FT_UINT32, BASE_DEC, NULL, 0,
10140 "INTEGER_0_3846", HFILL }},
10141 { &hf_ulp_MeasResultListNR_item,
10142 { "MeasResultNR", "ulp.MeasResultNR_element",
10143 FT_NONE, BASE_NONE, NULL, 0,
10144 NULL, HFILL }},
10145 { &hf_ulp_cellIdentityNR,
10146 { "cellIdentityNR", "ulp.cellIdentityNR",
10147 FT_BYTES, BASE_NONE, NULL, 0,
10148 NULL, HFILL }},
10149 { &hf_ulp_rsrp_Range,
10150 { "rsrp-Range", "ulp.rsrp_Range",
10151 FT_UINT32, BASE_DEC, NULL, 0,
10152 "INTEGER_0_127", HFILL }},
10153 { &hf_ulp_rsrq_Range,
10154 { "rsrq-Range", "ulp.rsrq_Range",
10155 FT_UINT32, BASE_DEC, NULL, 0,
10156 "INTEGER_0_127", HFILL }},
10157 { &hf_ulp_sinr_Range,
10158 { "sinr-Range", "ulp.sinr_Range",
10159 FT_UINT32, BASE_DEC, NULL, 0,
10160 "INTEGER_0_127", HFILL }},
10161 { &hf_ulp_utran_GPSReferenceTime,
10162 { "utran-GPSReferenceTime", "ulp.utran_GPSReferenceTime_element",
10163 FT_NONE, BASE_NONE, NULL, 0,
10164 NULL, HFILL }},
10165 { &hf_ulp_gpsReferenceTimeUncertainty,
10166 { "gpsReferenceTimeUncertainty", "ulp.gpsReferenceTimeUncertainty",
10167 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_UTRAN_gpsReferenceTimeUncertainty_fmt), 0,
10168 "INTEGER_0_127", HFILL }},
10169 { &hf_ulp_utranGPSDriftRate,
10170 { "utranGPSDriftRate", "ulp.utranGPSDriftRate",
10171 FT_UINT32, BASE_DEC, VALS(ulp_UTRANGPSDriftRate_vals), 0,
10172 NULL, HFILL }},
10173 { &hf_ulp_utran_GPSTimingOfCell,
10174 { "utran-GPSTimingOfCell", "ulp.utran_GPSTimingOfCell_element",
10175 FT_NONE, BASE_NONE, NULL, 0,
10176 NULL, HFILL }},
10177 { &hf_ulp_ms_part,
10178 { "ms-part", "ulp.ms_part",
10179 FT_UINT32, BASE_DEC, NULL, 0,
10180 "INTEGER_0_1023", HFILL }},
10181 { &hf_ulp_ls_part,
10182 { "ls-part", "ulp.ls_part",
10183 FT_UINT32, BASE_DEC, NULL, 0,
10184 "INTEGER_0_4294967295", HFILL }},
10185 { &hf_ulp_modeSpecificInfo_01,
10186 { "modeSpecificInfo", "ulp.modeSpecificInfo",
10187 FT_UINT32, BASE_DEC, VALS(ulp_T_modeSpecificInfo_01_vals), 0,
10188 "T_modeSpecificInfo_01", HFILL }},
10189 { &hf_ulp_fdd_01,
10190 { "fdd", "ulp.fdd_element",
10191 FT_NONE, BASE_NONE, NULL, 0,
10192 "T_fdd_01", HFILL }},
10193 { &hf_ulp_referenceIdentity,
10194 { "referenceIdentity", "ulp.referenceIdentity_element",
10195 FT_NONE, BASE_NONE, NULL, 0,
10196 "PrimaryCPICH_Info", HFILL }},
10197 { &hf_ulp_tdd_01,
10198 { "tdd", "ulp.tdd_element",
10199 FT_NONE, BASE_NONE, NULL, 0,
10200 "T_tdd_01", HFILL }},
10201 { &hf_ulp_referenceIdentity_01,
10202 { "referenceIdentity", "ulp.referenceIdentity",
10203 FT_UINT32, BASE_DEC, NULL, 0,
10204 "CellParametersID", HFILL }},
10205 { &hf_ulp_sfn,
10206 { "sfn", "ulp.sfn",
10207 FT_UINT32, BASE_DEC, NULL, 0,
10208 "INTEGER_0_4095", HFILL }},
10209 { &hf_ulp_set_GPSTimingOfCell,
10210 { "set-GPSTimingOfCell", "ulp.set_GPSTimingOfCell_element",
10211 FT_NONE, BASE_NONE, NULL, 0,
10212 "T_set_GPSTimingOfCell", HFILL }},
10213 { &hf_ulp_ms_part_01,
10214 { "ms-part", "ulp.ms_part",
10215 FT_UINT32, BASE_DEC, NULL, 0,
10216 "INTEGER_0_16383", HFILL }},
10217 { &hf_ulp_modeSpecificInfo_02,
10218 { "modeSpecificInfo", "ulp.modeSpecificInfo",
10219 FT_UINT32, BASE_DEC, VALS(ulp_T_modeSpecificInfo_02_vals), 0,
10220 "T_modeSpecificInfo_02", HFILL }},
10221 { &hf_ulp_fdd_02,
10222 { "fdd", "ulp.fdd_element",
10223 FT_NONE, BASE_NONE, NULL, 0,
10224 "T_fdd_02", HFILL }},
10225 { &hf_ulp_tdd_02,
10226 { "tdd", "ulp.tdd_element",
10227 FT_NONE, BASE_NONE, NULL, 0,
10228 "T_tdd_02", HFILL }},
10229 { &hf_ulp_ganssDay,
10230 { "ganssDay", "ulp.ganssDay",
10231 FT_UINT32, BASE_DEC, NULL, 0,
10232 "INTEGER_0_8191", HFILL }},
10233 { &hf_ulp_ganssTimeID,
10234 { "ganssTimeID", "ulp.ganssTimeID",
10235 FT_UINT32, BASE_DEC, VALS(ulp_ganss_time_id_vals), 0,
10236 "INTEGER_0_15", HFILL }},
10237 { &hf_ulp_utran_GANSSReferenceTime,
10238 { "utran-GANSSReferenceTime", "ulp.utran_GANSSReferenceTime_element",
10239 FT_NONE, BASE_NONE, NULL, 0,
10240 NULL, HFILL }},
10241 { &hf_ulp_utranGANSSDriftRate,
10242 { "utranGANSSDriftRate", "ulp.utranGANSSDriftRate",
10243 FT_UINT32, BASE_DEC, VALS(ulp_UTRANGANSSDriftRate_vals), 0,
10244 NULL, HFILL }},
10245 { &hf_ulp_ganssTOD,
10246 { "ganssTOD", "ulp.ganssTOD",
10247 FT_UINT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_seconds), 0,
10248 "INTEGER_0_86399", HFILL }},
10249 { &hf_ulp_utran_GANSSTimingOfCell,
10250 { "utran-GANSSTimingOfCell", "ulp.utran_GANSSTimingOfCell",
10251 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_utran_GANSSTimingOfCell_fmt), 0,
10252 "INTEGER_0_3999999", HFILL }},
10253 { &hf_ulp_modeSpecificInfo_03,
10254 { "modeSpecificInfo", "ulp.modeSpecificInfo",
10255 FT_UINT32, BASE_DEC, VALS(ulp_T_modeSpecificInfo_03_vals), 0,
10256 "T_modeSpecificInfo_03", HFILL }},
10257 { &hf_ulp_fdd_03,
10258 { "fdd", "ulp.fdd_element",
10259 FT_NONE, BASE_NONE, NULL, 0,
10260 "T_fdd_03", HFILL }},
10261 { &hf_ulp_tdd_03,
10262 { "tdd", "ulp.tdd_element",
10263 FT_NONE, BASE_NONE, NULL, 0,
10264 "T_tdd_03", HFILL }},
10265 { &hf_ulp_ganss_TODUncertainty,
10266 { "ganss-TODUncertainty", "ulp.ganss_TODUncertainty",
10267 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_UTRAN_gpsReferenceTimeUncertainty_fmt), 0,
10268 "INTEGER_0_127", HFILL }},
10269 { &hf_ulp_set_GANSSReferenceTime,
10270 { "set-GANSSReferenceTime", "ulp.set_GANSSReferenceTime_element",
10271 FT_NONE, BASE_NONE, NULL, 0,
10272 NULL, HFILL }},
10273 { &hf_ulp_set_GANSSTimingOfCell,
10274 { "set-GANSSTimingOfCell", "ulp.set_GANSSTimingOfCell_element",
10275 FT_NONE, BASE_NONE, NULL, 0,
10276 "T_set_GANSSTimingOfCell", HFILL }},
10277 { &hf_ulp_ms_part_02,
10278 { "ms-part", "ulp.ms_part",
10279 FT_UINT32, BASE_DEC, NULL, 0,
10280 "INTEGER_0_80", HFILL }},
10281 { &hf_ulp_modeSpecificInfo_04,
10282 { "modeSpecificInfo", "ulp.modeSpecificInfo",
10283 FT_UINT32, BASE_DEC, VALS(ulp_T_modeSpecificInfo_04_vals), 0,
10284 "T_modeSpecificInfo_04", HFILL }},
10285 { &hf_ulp_fdd_04,
10286 { "fdd", "ulp.fdd_element",
10287 FT_NONE, BASE_NONE, NULL, 0,
10288 "T_fdd_04", HFILL }},
10289 { &hf_ulp_tdd_04,
10290 { "tdd", "ulp.tdd_element",
10291 FT_NONE, BASE_NONE, NULL, 0,
10292 "T_tdd_04", HFILL }},
10293 { &hf_ulp_gps,
10294 { "gps", "ulp.gps",
10295 FT_BOOLEAN, BASE_NONE, NULL, 0,
10296 "BOOLEAN", HFILL }},
10297 { &hf_ulp_galileo,
10298 { "galileo", "ulp.galileo",
10299 FT_BOOLEAN, BASE_NONE, NULL, 0,
10300 "BOOLEAN", HFILL }},
10301 { &hf_ulp_sbas,
10302 { "sbas", "ulp.sbas",
10303 FT_BOOLEAN, BASE_NONE, NULL, 0,
10304 "BOOLEAN", HFILL }},
10305 { &hf_ulp_modernized_gps,
10306 { "modernized-gps", "ulp.modernized_gps",
10307 FT_BOOLEAN, BASE_NONE, NULL, 0,
10308 "BOOLEAN", HFILL }},
10309 { &hf_ulp_qzss,
10310 { "qzss", "ulp.qzss",
10311 FT_BOOLEAN, BASE_NONE, NULL, 0,
10312 "BOOLEAN", HFILL }},
10313 { &hf_ulp_glonass,
10314 { "glonass", "ulp.glonass",
10315 FT_BOOLEAN, BASE_NONE, NULL, 0,
10316 "BOOLEAN", HFILL }},
10317 { &hf_ulp_bds,
10318 { "bds", "ulp.bds",
10319 FT_BOOLEAN, BASE_NONE, NULL, 0,
10320 "BOOLEAN", HFILL }},
10321 { &hf_ulp_rtk_osr,
10322 { "rtk-osr", "ulp.rtk_osr",
10323 FT_BOOLEAN, BASE_NONE, NULL, 0,
10324 "BOOLEAN", HFILL }},
10325 { &hf_ulp_rand,
10326 { "rand", "ulp.rand",
10327 FT_BYTES, BASE_NONE, NULL, 0,
10328 "BIT_STRING_SIZE_128", HFILL }},
10329 { &hf_ulp_slpFQDN,
10330 { "slpFQDN", "ulp.slpFQDN",
10331 FT_STRING, BASE_NONE, NULL, 0,
10332 "FQDN", HFILL }},
10333 { &hf_ulp_ThirdParty_item,
10334 { "ThirdPartyID", "ulp.ThirdPartyID",
10335 FT_UINT32, BASE_DEC, VALS(ulp_ThirdPartyID_vals), 0,
10336 NULL, HFILL }},
10337 { &hf_ulp_logicalName,
10338 { "logicalName", "ulp.logicalName",
10339 FT_STRING, BASE_NONE, NULL, 0,
10340 "IA5String_SIZE_1_1000", HFILL }},
10341 { &hf_ulp_msisdn_01,
10342 { "msisdn", "ulp.msisdn",
10343 FT_BYTES, BASE_NONE, NULL, 0,
10344 "T_msisdn_01", HFILL }},
10345 { &hf_ulp_emailaddr,
10346 { "emailaddr", "ulp.emailaddr",
10347 FT_STRING, BASE_NONE, NULL, 0,
10348 "IA5String_SIZE_1_1000", HFILL }},
10349 { &hf_ulp_sip_uri,
10350 { "sip-uri", "ulp.sip_uri",
10351 FT_STRING, BASE_NONE, NULL, 0,
10352 NULL, HFILL }},
10353 { &hf_ulp_ims_public_identity,
10354 { "ims-public-identity", "ulp.ims_public_identity",
10355 FT_STRING, BASE_NONE, NULL, 0,
10356 NULL, HFILL }},
10357 { &hf_ulp_min_01,
10358 { "min", "ulp.min",
10359 FT_BYTES, BASE_NONE, NULL, 0,
10360 "BIT_STRING_SIZE_34", HFILL }},
10361 { &hf_ulp_mdn_01,
10362 { "mdn", "ulp.mdn",
10363 FT_BYTES, BASE_NONE, NULL, 0,
10364 "T_mdn_01", HFILL }},
10365 { &hf_ulp_uri,
10366 { "uri", "ulp.uri",
10367 FT_STRING, BASE_NONE, NULL, 0,
10368 NULL, HFILL }},
10369 { &hf_ulp_appProvider,
10370 { "appProvider", "ulp.appProvider",
10371 FT_STRING, BASE_NONE, NULL, 0,
10372 "IA5String_SIZE_1_24", HFILL }},
10373 { &hf_ulp_appName,
10374 { "appName", "ulp.appName",
10375 FT_STRING, BASE_NONE, NULL, 0,
10376 "IA5String_SIZE_1_32", HFILL }},
10377 { &hf_ulp_appVersion,
10378 { "appVersion", "ulp.appVersion",
10379 FT_STRING, BASE_NONE, NULL, 0,
10380 "IA5String_SIZE_1_8", HFILL }},
10381 { &hf_ulp_minInt,
10382 { "minInt", "ulp.minInt",
10383 FT_UINT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_seconds), 0,
10384 "INTEGER_1_3600", HFILL }},
10385 { &hf_ulp_maxInt,
10386 { "maxInt", "ulp.maxInt",
10387 FT_UINT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_minutes), 0,
10388 "INTEGER_1_1440", HFILL }},
10389 { &hf_ulp_repMode_01,
10390 { "repMode", "ulp.repMode_element",
10391 FT_NONE, BASE_NONE, NULL, 0,
10392 NULL, HFILL }},
10393 { &hf_ulp_batchRepCap,
10394 { "batchRepCap", "ulp.batchRepCap_element",
10395 FT_NONE, BASE_NONE, NULL, 0,
10396 NULL, HFILL }},
10397 { &hf_ulp_realtime,
10398 { "realtime", "ulp.realtime",
10399 FT_BOOLEAN, BASE_NONE, NULL, 0,
10400 "BOOLEAN", HFILL }},
10401 { &hf_ulp_quasirealtime,
10402 { "quasirealtime", "ulp.quasirealtime",
10403 FT_BOOLEAN, BASE_NONE, NULL, 0,
10404 "BOOLEAN", HFILL }},
10405 { &hf_ulp_batch,
10406 { "batch", "ulp.batch",
10407 FT_BOOLEAN, BASE_NONE, NULL, 0,
10408 "BOOLEAN", HFILL }},
10409 { &hf_ulp_report_position,
10410 { "report-position", "ulp.report_position",
10411 FT_BOOLEAN, BASE_NONE, NULL, 0,
10412 "BOOLEAN", HFILL }},
10413 { &hf_ulp_report_measurements,
10414 { "report-measurements", "ulp.report_measurements",
10415 FT_BOOLEAN, BASE_NONE, NULL, 0,
10416 "BOOLEAN", HFILL }},
10417 { &hf_ulp_max_num_positions,
10418 { "max-num-positions", "ulp.max_num_positions",
10419 FT_UINT32, BASE_DEC, NULL, 0,
10420 "INTEGER_1_1024", HFILL }},
10421 { &hf_ulp_max_num_measurements,
10422 { "max-num-measurements", "ulp.max_num_measurements",
10423 FT_UINT32, BASE_DEC, NULL, 0,
10424 "INTEGER_1_1024", HFILL }},
10425 { &hf_ulp_latitudeSign_01,
10426 { "latitudeSign", "ulp.latitudeSign",
10427 FT_UINT32, BASE_DEC, VALS(ulp_T_latitudeSign_01_vals), 0,
10428 "T_latitudeSign_01", HFILL }},
10429 { &hf_ulp_coordinateLatitude,
10430 { "latitude", "ulp.latitude",
10431 FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_Coordinate_latitude_fmt), 0,
10432 "INTEGER_0_8388607", HFILL }},
10433 { &hf_ulp_coordinateLongitude,
10434 { "longitude", "ulp.longitude",
10435 FT_INT32, BASE_CUSTOM, CF_FUNC(ulp_Coordinate_longitude_fmt), 0,
10436 "INTEGER_M8388608_8388607", HFILL }},
10437 { &hf_ulp_coordinate,
10438 { "coordinate", "ulp.coordinate_element",
10439 FT_NONE, BASE_NONE, NULL, 0,
10440 NULL, HFILL }},
10441 { &hf_ulp_radius,
10442 { "radius", "ulp.radius",
10443 FT_UINT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_meters), 0,
10444 "INTEGER_1_1000000", HFILL }},
10445 { &hf_ulp_radius_min,
10446 { "radius-min", "ulp.radius_min",
10447 FT_UINT32, BASE_DEC, NULL, 0,
10448 "INTEGER_1_1000000", HFILL }},
10449 { &hf_ulp_radius_max,
10450 { "radius-max", "ulp.radius_max",
10451 FT_UINT32, BASE_DEC, NULL, 0,
10452 "INTEGER_1_1500000", HFILL }},
10453 { &hf_ulp_semiMajor,
10454 { "semiMajor", "ulp.semiMajor",
10455 FT_UINT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_meters), 0,
10456 "INTEGER_1_1000000", HFILL }},
10457 { &hf_ulp_semiMajor_min,
10458 { "semiMajor-min", "ulp.semiMajor_min",
10459 FT_UINT32, BASE_DEC, NULL, 0,
10460 "INTEGER_1_1000000", HFILL }},
10461 { &hf_ulp_semiMajor_max,
10462 { "semiMajor-max", "ulp.semiMajor_max",
10463 FT_UINT32, BASE_DEC, NULL, 0,
10464 "INTEGER_1_1500000", HFILL }},
10465 { &hf_ulp_semiMinor,
10466 { "semiMinor", "ulp.semiMinor",
10467 FT_UINT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_meters), 0,
10468 "INTEGER_1_1000000", HFILL }},
10469 { &hf_ulp_semiMinor_min,
10470 { "semiMinor-min", "ulp.semiMinor_min",
10471 FT_UINT32, BASE_DEC, NULL, 0,
10472 "INTEGER_1_1000000", HFILL }},
10473 { &hf_ulp_semiMinor_max,
10474 { "semiMinor-max", "ulp.semiMinor_max",
10475 FT_UINT32, BASE_DEC, NULL, 0,
10476 "INTEGER_1_1500000", HFILL }},
10477 { &hf_ulp_angle,
10478 { "angle", "ulp.angle",
10479 FT_UINT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_degree_degrees), 0,
10480 "INTEGER_0_179", HFILL }},
10481 { &hf_ulp_polygonDescription,
10482 { "polygonDescription", "ulp.polygonDescription",
10483 FT_UINT32, BASE_DEC, NULL, 0,
10484 NULL, HFILL }},
10485 { &hf_ulp_polygonHysteresis,
10486 { "polygonHysteresis", "ulp.polygonHysteresis",
10487 FT_UINT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_meters), 0,
10488 "INTEGER_1_100000", HFILL }},
10489 { &hf_ulp_PolygonDescription_item,
10490 { "Coordinate", "ulp.Coordinate_element",
10491 FT_NONE, BASE_NONE, NULL, 0,
10492 NULL, HFILL }},
10493 { &hf_ulp_highAccuracyPositionEstimate,
10494 { "highAccuracyPositionEstimate", "ulp.highAccuracyPositionEstimate_element",
10495 FT_NONE, BASE_NONE, NULL, 0,
10496 NULL, HFILL }},
10497 { &hf_ulp_degreesLatitude,
10498 { "degreesLatitude", "ulp.degreesLatitude",
10499 FT_INT32, BASE_DEC, NULL, 0,
10500 "INTEGER_M2147483648_2147483647", HFILL }},
10501 { &hf_ulp_degreesLongitude,
10502 { "degreesLongitude", "ulp.degreesLongitude",
10503 FT_INT32, BASE_DEC, NULL, 0,
10504 "INTEGER_M2147483648_2147483647", HFILL }},
10505 { &hf_ulp_uncertaintySemiMajor_01,
10506 { "uncertaintySemiMajor", "ulp.uncertaintySemiMajor",
10507 FT_UINT32, BASE_DEC, NULL, 0,
10508 "INTEGER_0_255", HFILL }},
10509 { &hf_ulp_uncertaintySemiMinor_01,
10510 { "uncertaintySemiMinor", "ulp.uncertaintySemiMinor",
10511 FT_UINT32, BASE_DEC, NULL, 0,
10512 "INTEGER_0_255", HFILL }},
10513 { &hf_ulp_orientationMajorAxis_01,
10514 { "orientationMajorAxis", "ulp.orientationMajorAxis",
10515 FT_UINT32, BASE_DEC, NULL, 0,
10516 "INTEGER_0_179", HFILL }},
10517 { &hf_ulp_horizontalConfidence,
10518 { "horizontalConfidence", "ulp.horizontalConfidence",
10519 FT_UINT32, BASE_DEC, NULL, 0,
10520 "INTEGER_0_100", HFILL }},
10521 { &hf_ulp_highAccuracyAltitudeInfo,
10522 { "highAccuracyAltitudeInfo", "ulp.highAccuracyAltitudeInfo_element",
10523 FT_NONE, BASE_NONE, NULL, 0,
10524 NULL, HFILL }},
10525 { &hf_ulp_altitude_02,
10526 { "altitude", "ulp.altitude",
10527 FT_UINT32, BASE_DEC, NULL, 0,
10528 "INTEGER_64000_1280000", HFILL }},
10529 { &hf_ulp_uncertaintyAltitude,
10530 { "uncertaintyAltitude", "ulp.uncertaintyAltitude",
10531 FT_UINT32, BASE_DEC, NULL, 0,
10532 "INTEGER_0_255", HFILL }},
10533 { &hf_ulp_verticalConfidence,
10534 { "verticalConfidence", "ulp.verticalConfidence",
10535 FT_UINT32, BASE_DEC, NULL, 0,
10536 "INTEGER_0_100", HFILL }},
10537 { &hf_ulp_T_addPosMode_standalone,
10538 { "standalone", "ulp.T.addPosMode.standalone",
10539 FT_BOOLEAN, 8, NULL, 0x80,
10540 NULL, HFILL }},
10541 { &hf_ulp_T_addPosMode_setBased,
10542 { "setBased", "ulp.T.addPosMode.setBased",
10543 FT_BOOLEAN, 8, NULL, 0x40,
10544 NULL, HFILL }},
10545 { &hf_ulp_T_addPosMode_setAssisted,
10546 { "setAssisted", "ulp.T.addPosMode.setAssisted",
10547 FT_BOOLEAN, 8, NULL, 0x20,
10548 NULL, HFILL }},
10549 { &hf_ulp_GANSSSignals_signal1,
10550 { "signal1", "ulp.GANSSSignals.signal1",
10551 FT_BOOLEAN, 8, NULL, 0x80,
10552 NULL, HFILL }},
10553 { &hf_ulp_GANSSSignals_signal2,
10554 { "signal2", "ulp.GANSSSignals.signal2",
10555 FT_BOOLEAN, 8, NULL, 0x40,
10556 NULL, HFILL }},
10557 { &hf_ulp_GANSSSignals_signal3,
10558 { "signal3", "ulp.GANSSSignals.signal3",
10559 FT_BOOLEAN, 8, NULL, 0x20,
10560 NULL, HFILL }},
10561 { &hf_ulp_GANSSSignals_signal4,
10562 { "signal4", "ulp.GANSSSignals.signal4",
10563 FT_BOOLEAN, 8, NULL, 0x10,
10564 NULL, HFILL }},
10565 { &hf_ulp_GANSSSignals_signal5,
10566 { "signal5", "ulp.GANSSSignals.signal5",
10567 FT_BOOLEAN, 8, NULL, 0x08,
10568 NULL, HFILL }},
10569 { &hf_ulp_GANSSSignals_signal6,
10570 { "signal6", "ulp.GANSSSignals.signal6",
10571 FT_BOOLEAN, 8, NULL, 0x04,
10572 NULL, HFILL }},
10573 { &hf_ulp_GANSSSignals_signal7,
10574 { "signal7", "ulp.GANSSSignals.signal7",
10575 FT_BOOLEAN, 8, NULL, 0x02,
10576 NULL, HFILL }},
10577 { &hf_ulp_GANSSSignals_signal8,
10578 { "signal8", "ulp.GANSSSignals.signal8",
10579 FT_BOOLEAN, 8, NULL, 0x01,
10580 NULL, HFILL }},
10581 { &hf_ulp_mobile_directory_number,
10582 { "Mobile Directory Number", "ulp.mobile_directory_number",
10583 FT_STRING, BASE_NONE, NULL, 0,
10584 NULL, HFILL }},
10585 { &hf_ulp_ganssTimeModels_bit0,
10586 { "GPS", "ulp.ganssTimeModels.gps",
10587 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x8000,
10588 NULL, HFILL }},
10589 { &hf_ulp_ganssTimeModels_bit1,
10590 { "Galileo", "ulp.ganssTimeModels.galileo",
10591 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x4000,
10592 NULL, HFILL }},
10593 { &hf_ulp_ganssTimeModels_bit2,
10594 { "QZSS", "ulp.ganssTimeModels.qzss",
10595 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x2000,
10596 NULL, HFILL }},
10597 { &hf_ulp_ganssTimeModels_bit3,
10598 { "GLONASS", "ulp.ganssTimeModels.glonass",
10599 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x1000,
10600 NULL, HFILL }},
10601 { &hf_ulp_ganssTimeModels_bit4,
10602 { "BDS", "ulp.ganssTimeModels.bds",
10603 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0800,
10604 NULL, HFILL }},
10605 { &hf_ulp_ganssTimeModels_spare,
10606 { "Spare", "ulp.ganssTimeModels.spare",
10607 FT_UINT16, BASE_HEX, NULL, 0x07ff,
10608 NULL, HFILL }},
10611 /* List of subtrees */
10612 static int *ett[] = {
10613 &ett_ulp,
10614 &ett_ulp_setid,
10615 &ett_ulp_thirdPartyId,
10616 &ett_ulp_ganssTimeModels,
10617 &ett_ulp_ULP_PDU,
10618 &ett_ulp_UlpMessage,
10619 &ett_ulp_SUPLINIT,
10620 &ett_ulp_Notification,
10621 &ett_ulp_SUPLSTART,
10622 &ett_ulp_SETCapabilities,
10623 &ett_ulp_PosTechnology,
10624 &ett_ulp_PosProtocol,
10625 &ett_ulp_SUPLRESPONSE,
10626 &ett_ulp_SETAuthKey,
10627 &ett_ulp_SUPLPOSINIT,
10628 &ett_ulp_RequestedAssistData,
10629 &ett_ulp_NavigationModel,
10630 &ett_ulp_SatelliteInfo,
10631 &ett_ulp_SatelliteInfoElement,
10632 &ett_ulp_SUPLPOS,
10633 &ett_ulp_PosPayLoad,
10634 &ett_ulp_SUPLEND,
10635 &ett_ulp_SUPLAUTHREQ,
10636 &ett_ulp_SUPLAUTHRESP,
10637 &ett_ulp_Ver2_SUPLNOTIFY,
10638 &ett_ulp_Ver2_SUPLNOTIFYRESPONSE,
10639 &ett_ulp_Ver2_SUPLSETINIT,
10640 &ett_ulp_Ver2_SUPLTRIGGEREDSTART,
10641 &ett_ulp_TriggerParams,
10642 &ett_ulp_PeriodicParams,
10643 &ett_ulp_AreaEventParams,
10644 &ett_ulp_SEQUENCE_SIZE_1_maxAreaIdList_OF_AreaIdList,
10645 &ett_ulp_RepeatedReportingParams,
10646 &ett_ulp_GeographicTargetAreaList,
10647 &ett_ulp_GeographicTargetArea,
10648 &ett_ulp_AreaIdList,
10649 &ett_ulp_AreaIdSet,
10650 &ett_ulp_AreaId,
10651 &ett_ulp_GSMAreaId,
10652 &ett_ulp_WCDMAAreaId,
10653 &ett_ulp_CDMAAreaId,
10654 &ett_ulp_HRPDAreaId,
10655 &ett_ulp_UMBAreaId,
10656 &ett_ulp_LTEAreaId,
10657 &ett_ulp_WLANAreaId,
10658 &ett_ulp_WimaxAreaId,
10659 &ett_ulp_NRAreaId,
10660 &ett_ulp_GeoAreaMappingList,
10661 &ett_ulp_Ver2_SUPLTRIGGEREDRESPONSE,
10662 &ett_ulp_ReportingMode,
10663 &ett_ulp_BatchRepConditions,
10664 &ett_ulp_BatchRepType,
10665 &ett_ulp_Ver2_SUPLREPORT,
10666 &ett_ulp_SessionList,
10667 &ett_ulp_SessionInformation,
10668 &ett_ulp_ReportDataList,
10669 &ett_ulp_ReportData,
10670 &ett_ulp_PositionData,
10671 &ett_ulp_GANSSsignalsInfo,
10672 &ett_ulp_GANSSSignalsDescription,
10673 &ett_ulp_TimeStamp,
10674 &ett_ulp_Ver2_SUPLTRIGGEREDSTOP,
10675 &ett_ulp_Ver2_SUPL_INIT_extension,
10676 &ett_ulp_HistoricReporting,
10677 &ett_ulp_ReportingCriteria,
10678 &ett_ulp_TimeWindow,
10679 &ett_ulp_ProtectionLevel,
10680 &ett_ulp_BasicProtectionParams,
10681 &ett_ulp_Ver2_SUPL_START_extension,
10682 &ett_ulp_Ver2_SUPL_RESPONSE_extension,
10683 &ett_ulp_Ver2_SUPL_POS_INIT_extension,
10684 &ett_ulp_Ver2_SUPL_POS_extension,
10685 &ett_ulp_Ver2_SUPL_END_extension,
10686 &ett_ulp_Ver2_Notification_extension,
10687 &ett_ulp_Ver2_SETCapabilities_extension,
10688 &ett_ulp_ServiceCapabilities,
10689 &ett_ulp_ServicesSupported,
10690 &ett_ulp_EventTriggerCapabilities,
10691 &ett_ulp_GeoAreaShapesSupported,
10692 &ett_ulp_SessionCapabilities,
10693 &ett_ulp_SupportedBearers,
10694 &ett_ulp_Ver2_PosProtocol_extension,
10695 &ett_ulp_PosProtocolVersion3GPP,
10696 &ett_ulp_PosProtocolVersion3GPP2,
10697 &ett_ulp_Supported3GPP2PosProtocolVersion,
10698 &ett_ulp_PosProtocolVersionOMA,
10699 &ett_ulp_Ver2_PosTechnology_extension,
10700 &ett_ulp_GANSSPositionMethods,
10701 &ett_ulp_GANSSPositionMethod,
10702 &ett_ulp_RTK,
10703 &ett_ulp_GANSSPositioningMethodTypes,
10704 &ett_ulp_AdditionalPositioningMethods,
10705 &ett_ulp_AddPosSupport_Element,
10706 &ett_ulp_T_addPosMode,
10707 &ett_ulp_Ver2_RequestedAssistData_extension,
10708 &ett_ulp_GanssRequestedCommonAssistanceDataList,
10709 &ett_ulp_GanssRequestedGenericAssistanceDataList,
10710 &ett_ulp_GanssReqGenericData,
10711 &ett_ulp_GanssNavigationModelData,
10712 &ett_ulp_SatellitesListRelatedDataList,
10713 &ett_ulp_SatellitesListRelatedData,
10714 &ett_ulp_GanssDataBits,
10715 &ett_ulp_ReqDataBitAssistanceList,
10716 &ett_ulp_T_ganssDataBitSatList,
10717 &ett_ulp_GanssAdditionalDataChoices,
10718 &ett_ulp_ExtendedEphemeris,
10719 &ett_ulp_ExtendedEphCheck,
10720 &ett_ulp_GanssExtendedEphCheck,
10721 &ett_ulp_GPSTime,
10722 &ett_ulp_GANSSextEphTime,
10723 &ett_ulp_Ver2_PosPayLoad_extension,
10724 &ett_ulp_T_lPPPayload,
10725 &ett_ulp_T_tia801Payload,
10726 &ett_ulp_Version,
10727 &ett_ulp_SessionID,
10728 &ett_ulp_SetSessionID,
10729 &ett_ulp_SETId,
10730 &ett_ulp_SlpSessionID,
10731 &ett_ulp_IPAddress,
10732 &ett_ulp_SLPAddress,
10733 &ett_ulp_LocationId,
10734 &ett_ulp_CellInfo,
10735 &ett_ulp_Position,
10736 &ett_ulp_PositionEstimate,
10737 &ett_ulp_T_uncertainty,
10738 &ett_ulp_AltitudeInfo,
10739 &ett_ulp_CdmaCellInformation,
10740 &ett_ulp_GsmCellInformation,
10741 &ett_ulp_WcdmaCellInformation,
10742 &ett_ulp_TimingAdvance,
10743 &ett_ulp_FrequencyInfo,
10744 &ett_ulp_FrequencySpecificInfo,
10745 &ett_ulp_FrequencyInfoFDD,
10746 &ett_ulp_FrequencyInfoTDD,
10747 &ett_ulp_NMR,
10748 &ett_ulp_NMRelement,
10749 &ett_ulp_MeasuredResultsList,
10750 &ett_ulp_MeasuredResults,
10751 &ett_ulp_CellMeasuredResultsList,
10752 &ett_ulp_CellMeasuredResults,
10753 &ett_ulp_T_modeSpecificInfo,
10754 &ett_ulp_T_fdd,
10755 &ett_ulp_T_tdd,
10756 &ett_ulp_TimeslotISCP_List,
10757 &ett_ulp_PrimaryCPICH_Info,
10758 &ett_ulp_QoP,
10759 &ett_ulp_Velocity,
10760 &ett_ulp_Horvel,
10761 &ett_ulp_Horandvervel,
10762 &ett_ulp_Horveluncert,
10763 &ett_ulp_Horandveruncert,
10764 &ett_ulp_MultipleLocationIds,
10765 &ett_ulp_LocationIdData,
10766 &ett_ulp_SupportedNetworkInformation,
10767 &ett_ulp_SupportedWLANInfo,
10768 &ett_ulp_SupportedWLANApsList,
10769 &ett_ulp_SEQUENCE_SIZE_1_maxWLANApDataSize_OF_SupportedWLANApData,
10770 &ett_ulp_SupportedWLANApsChannel11a,
10771 &ett_ulp_SupportedWLANApsChannel11bg,
10772 &ett_ulp_SupportedWLANApData,
10773 &ett_ulp_SupportedWCDMAInfo,
10774 &ett_ulp_Ver2_CellInfo_extension,
10775 &ett_ulp_HrpdCellInformation,
10776 &ett_ulp_UmbCellInformation,
10777 &ett_ulp_LteCellInformation,
10778 &ett_ulp_MeasResultListEUTRA,
10779 &ett_ulp_MeasResultEUTRA,
10780 &ett_ulp_T_cgi_Info,
10781 &ett_ulp_T_measResult,
10782 &ett_ulp_CellGlobalIdEUTRA,
10783 &ett_ulp_PLMN_Identity,
10784 &ett_ulp_MCC,
10785 &ett_ulp_MNC,
10786 &ett_ulp_ServingInformation5G,
10787 &ett_ulp_NeighbourInformation5G,
10788 &ett_ulp_WlanAPInformation,
10789 &ett_ulp_RTD,
10790 &ett_ulp_ReportedLocation,
10791 &ett_ulp_LocationData,
10792 &ett_ulp_RepLocation,
10793 &ett_ulp_LciLocData,
10794 &ett_ulp_LocationDataLCI,
10795 &ett_ulp_WimaxBSInformation,
10796 &ett_ulp_WimaxBsID,
10797 &ett_ulp_WimaxRTD,
10798 &ett_ulp_WimaxNMRList,
10799 &ett_ulp_WimaxNMR,
10800 &ett_ulp_NRCellInformation,
10801 &ett_ulp_ServingCellInformationNR,
10802 &ett_ulp_ServCellNR,
10803 &ett_ulp_MeasResultListNR,
10804 &ett_ulp_MeasResultNR,
10805 &ett_ulp_CellGlobalIdNR,
10806 &ett_ulp_NR_Measurements,
10807 &ett_ulp_UTRAN_GPSReferenceTimeAssistance,
10808 &ett_ulp_UTRAN_GPSReferenceTime,
10809 &ett_ulp_T_utran_GPSTimingOfCell,
10810 &ett_ulp_T_modeSpecificInfo_01,
10811 &ett_ulp_T_fdd_01,
10812 &ett_ulp_T_tdd_01,
10813 &ett_ulp_UTRAN_GPSReferenceTimeResult,
10814 &ett_ulp_T_set_GPSTimingOfCell,
10815 &ett_ulp_T_modeSpecificInfo_02,
10816 &ett_ulp_T_fdd_02,
10817 &ett_ulp_T_tdd_02,
10818 &ett_ulp_UTRAN_GANSSReferenceTimeAssistance,
10819 &ett_ulp_UTRAN_GANSSReferenceTime,
10820 &ett_ulp_T_modeSpecificInfo_03,
10821 &ett_ulp_T_fdd_03,
10822 &ett_ulp_T_tdd_03,
10823 &ett_ulp_UTRAN_GANSSReferenceTimeResult,
10824 &ett_ulp_SET_GANSSReferenceTime,
10825 &ett_ulp_T_set_GANSSTimingOfCell,
10826 &ett_ulp_T_modeSpecificInfo_04,
10827 &ett_ulp_T_fdd_04,
10828 &ett_ulp_T_tdd_04,
10829 &ett_ulp_GNSSPosTechnology,
10830 &ett_ulp_GANSSSignals,
10831 &ett_ulp_SPCTID,
10832 &ett_ulp_ThirdParty,
10833 &ett_ulp_ThirdPartyID,
10834 &ett_ulp_ApplicationID,
10835 &ett_ulp_ReportingCap,
10836 &ett_ulp_RepMode,
10837 &ett_ulp_BatchRepCap,
10838 &ett_ulp_Coordinate,
10839 &ett_ulp_CircularArea,
10840 &ett_ulp_EllipticalArea,
10841 &ett_ulp_PolygonArea,
10842 &ett_ulp_PolygonDescription,
10843 &ett_ulp_Ver2_HighAccuracyPosition,
10844 &ett_ulp_HighAccuracyPositionEstimate,
10845 &ett_ulp_HighAccuracyAltitudeInfo,
10848 module_t *ulp_module;
10851 /* Register protocol */
10852 proto_ulp = proto_register_protocol(PNAME, PSNAME, PFNAME);
10853 ulp_tcp_handle = register_dissector("ulp", dissect_ulp_tcp, proto_ulp);
10854 ulp_pdu_handle = register_dissector("ulp.pdu", dissect_ULP_PDU_PDU, proto_ulp);
10856 /* Register fields and subtrees */
10857 proto_register_field_array(proto_ulp, hf, array_length(hf));
10858 proto_register_subtree_array(ett, array_length(ett));
10860 ulp_module = prefs_register_protocol(proto_ulp, NULL);
10862 prefs_register_bool_preference(ulp_module, "desegment_ulp_messages",
10863 "Reassemble ULP messages spanning multiple TCP segments",
10864 "Whether the ULP dissector should reassemble messages spanning multiple TCP segments."
10865 " To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
10866 &ulp_desegment);
10870 /*--- proto_reg_handoff_ulp ---------------------------------------*/
10871 void
10872 proto_reg_handoff_ulp(void)
10874 rrlp_handle = find_dissector_add_dependency("rrlp", proto_ulp);
10875 lpp_handle = find_dissector_add_dependency("lpp", proto_ulp);
10877 dissector_add_string("media_type","application/oma-supl-ulp", ulp_pdu_handle);
10878 dissector_add_string("media_type","application/vnd.omaloc-supl-init", ulp_pdu_handle);
10879 dissector_add_uint_with_preference("tcp.port", ULP_PORT, ulp_tcp_handle);
10880 dissector_add_uint_with_preference("udp.port", ULP_PORT, ulp_pdu_handle);