1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
4 /* asn2wrs.py -q -L -p lcsap -c ./lcsap.cnf -s ./packet-lcsap-template -D . -O ../.. LCS-AP-CommonDataTypes.asn LCS-AP-Constants.asn LCS-AP-Containers.asn LCS-AP-IEs.asn LCS-AP-PDU-Contents.asn LCS-AP-PDU-Descriptions.asn */
7 * Routines for LCS-AP packet dissembly.
9 * Copyright (c) 2011 by Spenser Sheng <spenser.sheng@ericsson.com>
11 * Wireshark - Network traffic analyzer
12 * By Gerald Combs <gerald@wireshark.org>
13 * Copyright 1999 Gerald Combs
15 * SPDX-License-Identifier: GPL-2.0-or-later
17 * ETSI TS 129 171 V9.2.0 (2010-10)
24 #include <epan/packet.h>
25 #include <epan/strutil.h>
26 #include <epan/asn1.h>
27 #include <epan/prefs.h>
28 #include <epan/sctpppids.h>
29 #include <epan/expert.h>
30 #include <wsutil/array.h>
32 #include "packet-ber.h"
33 #include "packet-per.h"
34 #include "packet-e212.h"
35 #include "packet-sccp.h"
36 #include "packet-lcsap.h"
39 /* disable: "warning C4146: unary minus operator applied to unsigned type, result still unsigned" */
40 #pragma warning(disable:4146)
43 #define PNAME "LCS Application Protocol"
44 #define PSNAME "LCSAP"
45 #define PFNAME "lcsap"
47 void proto_register_lcsap(void);
48 void proto_reg_handoff_lcsap(void);
50 #define SCTP_PORT_LCSAP 9082
51 #define max_No_Of_Points 15
53 #define max_GNSS_Set 9
54 #define max_Add_Pos_Set 8
55 #define max_Cipher_Set 16
56 #define maxProtocolExtensions 65535
57 #define maxProtocolIEs 65535
59 typedef enum _ProcedureCode_enum
{
60 id_Location_Service_Request
= 0,
61 id_Connection_Oriented_Information_Transfer
= 1,
62 id_Connectionless_Information_Transfer
= 2,
63 id_Location_Abort
= 3,
65 id_Ciphering_Key_Data_Delivery
= 5
68 typedef enum _ProtocolIE_ID_enum
{
69 id_Accuracy_Fulfillment_Indicator
= 0,
71 id_Correlation_ID
= 2,
72 id_Destination_ID
= 3,
73 id_E_UTRAN_Cell_Identifier
= 4,
74 id_Include_Velocity
= 5,
77 id_LCS_Client_Type
= 8,
81 id_Location_Estimate
= 12,
82 id_Location_Type
= 13,
83 id_MultipleAPDUs
= 14,
85 id_Positioning_Data
= 16,
86 id_Return_Error_Request
= 17,
87 id_Return_Error_Cause
= 18,
88 id_Source_Identity
= 19,
89 id_UE_Positioning_Capability
= 20,
90 id_Velocity_Estimate
= 21,
91 id_LCS_Service_Type_ID
= 22,
92 id_Cell_Portion_ID
= 23,
93 id_Civic_Address
= 24,
94 id_Barometric_Pressure
= 25,
95 id_Additional_PositioningDataSet
= 26,
97 id_Ciphering_Data
= 28,
98 id_Ciphering_Data_Ack
= 29,
99 id_Ciphering_Data_Error_Report
= 30,
100 id_Coverage_Level
= 31,
101 id_UE_Country_Determination_Indication
= 32,
102 id_UE_Area_Indication
= 33
103 } ProtocolIE_ID_enum
;
105 /* Initialize the protocol and registered fields */
106 static int proto_lcsap
;
108 static int hf_lcsap_pos_method
;
109 static int hf_lcsap_pos_usage
;
110 static int hf_lcsap_gnss_pos_method
;
111 static int hf_lcsap_gnss_id
;
112 static int hf_lcsap_gnss_pos_usage
;
113 static int hf_lcsap_APDU_PDU
; /* APDU */
114 static int hf_lcsap_Accuracy_Fulfillment_Indicator_PDU
; /* Accuracy_Fulfillment_Indicator */
115 static int hf_lcsap_Additional_PositioningDataSet_PDU
; /* Additional_PositioningDataSet */
116 static int hf_lcsap_Barometric_Pressure_PDU
; /* Barometric_Pressure */
117 static int hf_lcsap_Cell_Portion_ID_PDU
; /* Cell_Portion_ID */
118 static int hf_lcsap_Ciphering_Data_PDU
; /* Ciphering_Data */
119 static int hf_lcsap_Ciphering_Data_Ack_PDU
; /* Ciphering_Data_Ack */
120 static int hf_lcsap_Ciphering_Data_Error_Report_PDU
; /* Ciphering_Data_Error_Report */
121 static int hf_lcsap_Civic_Address_PDU
; /* Civic_Address */
122 static int hf_lcsap_lcsap_Correlation_ID_PDU
; /* Correlation_ID */
123 static int hf_lcsap_E_CGI_PDU
; /* E_CGI */
124 static int hf_lcsap_Coverage_Level_PDU
; /* Coverage_Level */
125 static int hf_lcsap_Geographical_Area_PDU
; /* Geographical_Area */
126 static int hf_lcsap_IMSI_PDU
; /* IMSI */
127 static int hf_lcsap_IMEI_PDU
; /* IMEI */
128 static int hf_lcsap_Include_Velocity_PDU
; /* Include_Velocity */
129 static int hf_lcsap_Location_Type_PDU
; /* Location_Type */
130 static int hf_lcsap_LCS_Cause_PDU
; /* LCS_Cause */
131 static int hf_lcsap_LCS_Client_Type_PDU
; /* LCS_Client_Type */
132 static int hf_lcsap_LCS_Priority_PDU
; /* LCS_Priority */
133 static int hf_lcsap_LCS_QoS_PDU
; /* LCS_QoS */
134 static int hf_lcsap_LCS_Service_Type_ID_PDU
; /* LCS_Service_Type_ID */
135 static int hf_lcsap_MultipleAPDUs_PDU
; /* MultipleAPDUs */
136 static int hf_lcsap_Network_Element_PDU
; /* Network_Element */
137 static int hf_lcsap_Payload_Type_PDU
; /* Payload_Type */
138 static int hf_lcsap_lcsap_Positioning_Data_PDU
; /* Positioning_Data */
139 static int hf_lcsap_RAT_Type_PDU
; /* RAT_Type */
140 static int hf_lcsap_Return_Error_Type_PDU
; /* Return_Error_Type */
141 static int hf_lcsap_Return_Error_Cause_PDU
; /* Return_Error_Cause */
142 static int hf_lcsap_UE_Positioning_Capability_PDU
; /* UE_Positioning_Capability */
143 static int hf_lcsap_UE_Country_Determination_Indication_PDU
; /* UE_Country_Determination_Indication */
144 static int hf_lcsap_UE_Area_Indication_PDU
; /* UE_Area_Indication */
145 static int hf_lcsap_Velocity_Estimate_PDU
; /* Velocity_Estimate */
146 static int hf_lcsap_Location_Request_PDU
; /* Location_Request */
147 static int hf_lcsap_Location_Response_PDU
; /* Location_Response */
148 static int hf_lcsap_Location_Abort_Request_PDU
; /* Location_Abort_Request */
149 static int hf_lcsap_Connection_Oriented_Information_PDU
; /* Connection_Oriented_Information */
150 static int hf_lcsap_Connectionless_Information_PDU
; /* Connectionless_Information */
151 static int hf_lcsap_Reset_Request_PDU
; /* Reset_Request */
152 static int hf_lcsap_Reset_Acknowledge_PDU
; /* Reset_Acknowledge */
153 static int hf_lcsap_Ciphering_Key_Data_PDU
; /* Ciphering_Key_Data */
154 static int hf_lcsap_Ciphering_Key_Data_Result_PDU
; /* Ciphering_Key_Data_Result */
155 static int hf_lcsap_LCS_AP_PDU_PDU
; /* LCS_AP_PDU */
156 static int hf_lcsap_ProtocolIE_Container_item
; /* ProtocolIE_Field */
157 static int hf_lcsap_id
; /* ProtocolIE_ID */
158 static int hf_lcsap_criticality
; /* Criticality */
159 static int hf_lcsap_ie_field_value
; /* T_ie_field_value */
160 static int hf_lcsap_ProtocolExtensionContainer_item
; /* ProtocolExtensionField */
161 static int hf_lcsap_ext_id
; /* ProtocolExtensionID */
162 static int hf_lcsap_extensionValue
; /* T_extensionValue */
163 static int hf_lcsap_Additional_PositioningDataSet_item
; /* Additional_PositioningMethodAndUsage */
164 static int hf_lcsap_direction_Of_Altitude
; /* Direction_Of_Altitude */
165 static int hf_lcsap_altitude
; /* Altitude */
166 static int hf_lcsap_Ciphering_Data_item
; /* Ciphering_Data_Set */
167 static int hf_lcsap_Ciphering_Data_Ack_item
; /* Ciphering_Set_ID */
168 static int hf_lcsap_Ciphering_Data_Error_Report_item
; /* Ciphering_Data_Error_Report_Contents */
169 static int hf_lcsap_ciphering_Set_ID
; /* Ciphering_Set_ID */
170 static int hf_lcsap_ciphering_Key
; /* Ciphering_Key */
171 static int hf_lcsap_c0
; /* C0 */
172 static int hf_lcsap_sib_Types
; /* SIB_Types */
173 static int hf_lcsap_validity_Start_Time
; /* Validity_Start_Time */
174 static int hf_lcsap_validity_Duration
; /* Validity_Duration */
175 static int hf_lcsap_tais_List
; /* TAIs_List */
176 static int hf_lcsap_storage_Outcome
; /* Storage_Outcome */
177 static int hf_lcsap_pLMNidentity
; /* PLMN_ID */
178 static int hf_lcsap_cell_ID
; /* CellIdentity */
179 static int hf_lcsap_iE_Extensions
; /* ProtocolExtensionContainer */
180 static int hf_lcsap_geographical_Coordinates
; /* Geographical_Coordinates */
181 static int hf_lcsap_uncertainty_Ellipse
; /* Uncertainty_Ellipse */
182 static int hf_lcsap_confidence
; /* Confidence */
183 static int hf_lcsap_altitude_And_Direction
; /* Altitude_And_Direction */
184 static int hf_lcsap_uncertainty_Altitude
; /* Uncertainty_Altitude */
185 static int hf_lcsap_inner_Radius
; /* Inner_Radius */
186 static int hf_lcsap_uncertainty_Radius
; /* Uncertainty_Code */
187 static int hf_lcsap_offset_Angle
; /* Angle */
188 static int hf_lcsap_included_Angle
; /* Angle */
189 static int hf_lcsap_macro_eNB_ID
; /* Macro_eNB_ID */
190 static int hf_lcsap_home_eNB_ID
; /* Home_eNB_ID */
191 static int hf_lcsap_short_macro_eNB_ID
; /* Short_Macro_eNB_ID */
192 static int hf_lcsap_long_macro_eNB_ID
; /* Long_Macro_eNB_ID */
193 static int hf_lcsap_point
; /* Point */
194 static int hf_lcsap_point_With_Uncertainty
; /* Point_With_Uncertainty */
195 static int hf_lcsap_ellipsoidPoint_With_Uncertainty_Ellipse
; /* Ellipsoid_Point_With_Uncertainty_Ellipse */
196 static int hf_lcsap_polygon
; /* Polygon */
197 static int hf_lcsap_ellipsoid_Point_With_Altitude
; /* Ellipsoid_Point_With_Altitude */
198 static int hf_lcsap_ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid
; /* Ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid */
199 static int hf_lcsap_ellipsoid_Arc
; /* Ellipsoid_Arc */
200 static int hf_lcsap_high_Accuracy_Ellipsoid_Point_With_Uncertainty_Ellipse
; /* High_Accuracy_Ellipsoid_Point_With_Uncertainty_Ellipse */
201 static int hf_lcsap_high_Accuracy_Ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid
; /* High_Accuracy_Ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid */
202 static int hf_lcsap_high_Accuracy_Ellipsoid_Point_With_Scalable_Uncertainty_Ellipse
; /* High_Accuracy_Ellipsoid_Point_With_Scalable_Uncertainty_Ellipse */
203 static int hf_lcsap_high_Accuracy_Ellipsoid_Point_With_Altitude_And_Scalable_Uncertainty_Ellipsoid
; /* High_Accuracy_Ellipsoid_Point_With_Altitude_And_Scalable_Uncertainty_Ellipsoid */
204 static int hf_lcsap_latitudeSign
; /* LatitudeSign */
205 static int hf_lcsap_degreesLatitude
; /* DegreesLatitude */
206 static int hf_lcsap_degreesLongitude
; /* DegreesLongitude */
207 static int hf_lcsap_pLMN_ID
; /* PLMN_ID */
208 static int hf_lcsap_eNB_ID
; /* ENB_ID */
209 static int hf_lcsap_GNSS_Positioning_Data_Set_item
; /* GNSS_Positioning_Method_And_Usage */
210 static int hf_lcsap_high_Accuracy_Geographical_Coordinates
; /* High_Accuracy_Geographical_Coordinates */
211 static int hf_lcsap_high_Accuracy_Uncertainty_Ellipse
; /* High_Accuracy_Uncertainty_Ellipse */
212 static int hf_lcsap_high_Accuracy_Scalable_Uncertainty_Ellipse
; /* High_Accuracy_Scalable_Uncertainty_Ellipse */
213 static int hf_lcsap_high_Accuracy_Altitude
; /* High_Accuracy_Altitude */
214 static int hf_lcsap_high_Accuracy_Uncertainty_Altitude
; /* High_Accuracy_Uncertainty_Code */
215 static int hf_lcsap_vertical_Confidence
; /* Confidence */
216 static int hf_lcsap_high_Accuracy_Scalable_Uncertainty_Altitude
; /* High_Accuracy_Scalable_Uncertainty_Altitude */
217 static int hf_lcsap_high_Accuracy_DegreesLatitude
; /* High_Accuracy_DegreesLatitude */
218 static int hf_lcsap_high_Accuracy_DegreesLongitude
; /* High_Accuracy_DegreesLongitude */
219 static int hf_lcsap_high_Accuracy_Uncertainty_SemiMajor
; /* High_Accuracy_Uncertainty_Code */
220 static int hf_lcsap_high_Accuracy_Uncertainty_SemiMinor
; /* High_Accuracy_Uncertainty_Code */
221 static int hf_lcsap_orientation_Major_Axis
; /* INTEGER_0_179 */
222 static int hf_lcsap_high_Accuracy_Extended_Uncertainty_SemiMajor
; /* High_Accuracy_Extended_Uncertainty_Code */
223 static int hf_lcsap_high_Accuracy_Extended_Uncertainty_SemiMinor
; /* High_Accuracy_Extended_Uncertainty_Code */
224 static int hf_lcsap_high_Accuracy_Extended_Uncertainty_Ellipse
; /* High_Accuracy_Extended_Uncertainty_Ellipse */
225 static int hf_lcsap_high_Accuracy_Extended_Uncertainty_Altitude
; /* High_Accuracy_Extended_Uncertainty_Code */
226 static int hf_lcsap_bearing
; /* INTEGER_0_359 */
227 static int hf_lcsap_horizontal_Speed
; /* INTEGER_0_2047 */
228 static int hf_lcsap_horizontal_Speed_And_Bearing
; /* Horizontal_Speed_And_Bearing */
229 static int hf_lcsap_vertical_Velocity
; /* Vertical_Velocity */
230 static int hf_lcsap_uncertainty_Speed
; /* INTEGER_0_255 */
231 static int hf_lcsap_horizontal_Uncertainty_Speed
; /* INTEGER_0_255 */
232 static int hf_lcsap_vertical_Uncertainty_Speed
; /* INTEGER_0_255 */
233 static int hf_lcsap_radio_Network_Layer
; /* Radio_Network_Layer_Cause */
234 static int hf_lcsap_transport_Layer
; /* Transport_Layer_Cause */
235 static int hf_lcsap_protocol
; /* Protocol_Cause */
236 static int hf_lcsap_misc
; /* Misc_Cause */
237 static int hf_lcsap_horizontal_Accuracy
; /* Horizontal_Accuracy */
238 static int hf_lcsap_vertical_Requested
; /* Vertical_Requested */
239 static int hf_lcsap_vertical_Accuracy
; /* Vertical_Accuracy */
240 static int hf_lcsap_response_Time
; /* Response_Time */
241 static int hf_lcsap_MultipleAPDUs_item
; /* APDU */
242 static int hf_lcsap_global_eNB_ID
; /* Global_eNB_ID */
243 static int hf_lcsap_e_SMLC_ID
; /* E_SMLC_ID */
244 static int hf_lcsap_uncertainty_Code
; /* Uncertainty_Code */
245 static int hf_lcsap_Polygon_item
; /* Polygon_Point */
246 static int hf_lcsap_positioning_Data_Set
; /* Positioning_Data_Set */
247 static int hf_lcsap_gNSS_Positioning_Data_Set
; /* GNSS_Positioning_Data_Set */
248 static int hf_lcsap_Positioning_Data_Set_item
; /* Positioning_Method_And_Usage */
249 static int hf_lcsap_uncertainty_SemiMajor
; /* Uncertainty_Code */
250 static int hf_lcsap_uncertainty_SemiMinor
; /* Uncertainty_Code */
251 static int hf_lcsap_orientation_Major_Axis_01
; /* Orientation_Major_Axis */
252 static int hf_lcsap_lPP
; /* BOOLEAN */
253 static int hf_lcsap_country
; /* Country */
254 static int hf_lcsap_international_area_indication
; /* International_Area_Indication */
255 static int hf_lcsap_horizontal_Velocity
; /* Horizontal_Velocity */
256 static int hf_lcsap_horizontal_With_Vertical_Velocity
; /* Horizontal_With_Vertical_Velocity */
257 static int hf_lcsap_horizontal_Velocity_With_Uncertainty
; /* Horizontal_Velocity_With_Uncertainty */
258 static int hf_lcsap_horizontal_With_Vertical_Velocity_And_Uncertainty
; /* Horizontal_With_Vertical_Velocity_And_Uncertainty */
259 static int hf_lcsap_vertical_Speed
; /* INTEGER_0_255 */
260 static int hf_lcsap_vertical_Speed_Direction
; /* Vertical_Speed_Direction */
261 static int hf_lcsap_protocolIEs
; /* ProtocolIE_Container */
262 static int hf_lcsap_protocolExtensions
; /* ProtocolExtensionContainer */
263 static int hf_lcsap_initiatingMessage
; /* InitiatingMessage */
264 static int hf_lcsap_successfulOutcome
; /* SuccessfulOutcome */
265 static int hf_lcsap_unsuccessfulOutcome
; /* UnsuccessfulOutcome */
266 static int hf_lcsap_procedureCode
; /* ProcedureCode */
267 static int hf_lcsap_initiatingMessagevalue
; /* InitiatingMessage_value */
268 static int hf_lcsap_successfulOutcome_value
; /* SuccessfulOutcome_value */
269 static int hf_lcsap_unsuccessfulOutcome_value
; /* UnsuccessfulOutcome_value */
271 /* Initialize the subtree pointers */
272 static int ett_lcsap
;
273 static int ett_lcsap_plmnd_id
;
274 static int ett_lcsap_imsi
;
275 static int ett_lcsap_civic_address
;
277 static int ett_lcsap_ProtocolIE_Container
;
278 static int ett_lcsap_ProtocolIE_Field
;
279 static int ett_lcsap_ProtocolExtensionContainer
;
280 static int ett_lcsap_ProtocolExtensionField
;
281 static int ett_lcsap_Additional_PositioningDataSet
;
282 static int ett_lcsap_Altitude_And_Direction
;
283 static int ett_lcsap_Ciphering_Data
;
284 static int ett_lcsap_Ciphering_Data_Ack
;
285 static int ett_lcsap_Ciphering_Data_Error_Report
;
286 static int ett_lcsap_Ciphering_Data_Set
;
287 static int ett_lcsap_Ciphering_Data_Error_Report_Contents
;
288 static int ett_lcsap_E_CGI
;
289 static int ett_lcsap_Ellipsoid_Point_With_Uncertainty_Ellipse
;
290 static int ett_lcsap_Ellipsoid_Point_With_Altitude
;
291 static int ett_lcsap_Ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid
;
292 static int ett_lcsap_Ellipsoid_Arc
;
293 static int ett_lcsap_ENB_ID
;
294 static int ett_lcsap_Geographical_Area
;
295 static int ett_lcsap_Geographical_Coordinates
;
296 static int ett_lcsap_Global_eNB_ID
;
297 static int ett_lcsap_GNSS_Positioning_Data_Set
;
298 static int ett_lcsap_High_Accuracy_Ellipsoid_Point_With_Uncertainty_Ellipse
;
299 static int ett_lcsap_High_Accuracy_Ellipsoid_Point_With_Scalable_Uncertainty_Ellipse
;
300 static int ett_lcsap_High_Accuracy_Ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid
;
301 static int ett_lcsap_High_Accuracy_Ellipsoid_Point_With_Altitude_And_Scalable_Uncertainty_Ellipsoid
;
302 static int ett_lcsap_High_Accuracy_Geographical_Coordinates
;
303 static int ett_lcsap_High_Accuracy_Uncertainty_Ellipse
;
304 static int ett_lcsap_High_Accuracy_Extended_Uncertainty_Ellipse
;
305 static int ett_lcsap_High_Accuracy_Scalable_Uncertainty_Ellipse
;
306 static int ett_lcsap_High_Accuracy_Scalable_Uncertainty_Altitude
;
307 static int ett_lcsap_Horizontal_Speed_And_Bearing
;
308 static int ett_lcsap_Horizontal_Velocity
;
309 static int ett_lcsap_Horizontal_With_Vertical_Velocity
;
310 static int ett_lcsap_Horizontal_Velocity_With_Uncertainty
;
311 static int ett_lcsap_Horizontal_With_Vertical_Velocity_And_Uncertainty
;
312 static int ett_lcsap_LCS_Cause
;
313 static int ett_lcsap_LCS_QoS
;
314 static int ett_lcsap_MultipleAPDUs
;
315 static int ett_lcsap_Network_Element
;
316 static int ett_lcsap_Point
;
317 static int ett_lcsap_Point_With_Uncertainty
;
318 static int ett_lcsap_Polygon
;
319 static int ett_lcsap_Polygon_Point
;
320 static int ett_lcsap_Positioning_Data
;
321 static int ett_lcsap_Positioning_Data_Set
;
322 static int ett_lcsap_Uncertainty_Ellipse
;
323 static int ett_lcsap_UE_Positioning_Capability
;
324 static int ett_lcsap_UE_Area_Indication
;
325 static int ett_lcsap_Velocity_Estimate
;
326 static int ett_lcsap_Vertical_Velocity
;
327 static int ett_lcsap_Location_Request
;
328 static int ett_lcsap_Location_Response
;
329 static int ett_lcsap_Location_Abort_Request
;
330 static int ett_lcsap_Connection_Oriented_Information
;
331 static int ett_lcsap_Connectionless_Information
;
332 static int ett_lcsap_Reset_Request
;
333 static int ett_lcsap_Reset_Acknowledge
;
334 static int ett_lcsap_Ciphering_Key_Data
;
335 static int ett_lcsap_Ciphering_Key_Data_Result
;
336 static int ett_lcsap_LCS_AP_PDU
;
337 static int ett_lcsap_InitiatingMessage
;
338 static int ett_lcsap_SuccessfulOutcome
;
339 static int ett_lcsap_UnsuccessfulOutcome
;
341 static expert_field ei_lcsap_civic_data_not_xml
;
343 /* Global variables */
344 static uint32_t ProcedureCode
;
345 static uint32_t ProtocolIE_ID
;
346 static uint32_t ProtocolExtensionID
;
347 static uint32_t PayloadType
= -1;
349 /* Dissector handles */
350 static dissector_handle_t lcsap_handle
;
351 static dissector_handle_t lpp_handle
;
352 static dissector_handle_t lppa_handle
;
353 static dissector_handle_t xml_handle
;
355 /* Dissector tables */
356 static dissector_table_t lcsap_ies_dissector_table
;
358 static dissector_table_t lcsap_extension_dissector_table
;
359 static dissector_table_t lcsap_proc_imsg_dissector_table
;
360 static dissector_table_t lcsap_proc_sout_dissector_table
;
361 static dissector_table_t lcsap_proc_uout_dissector_table
;
363 static int dissect_ProtocolIEFieldValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *);
365 static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *);
366 static int dissect_InitiatingMessageValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *);
367 static int dissect_SuccessfulOutcomeValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *);
368 static int dissect_UnsuccessfulOutcomeValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *);
371 /* 7.4.13 Positioning Data
372 * Coding of positioning method (bits 8-4)
374 static const value_string lcsap_pos_method_vals
[] = {
376 { 0x01, "Reserved" },
378 { 0x03, "Reserved" },
380 { 0x05, "Reserved" },
381 { 0x06, "Reserved" },
382 { 0x07, "Reserved" },
384 { 0x09, "Reserved" },
385 { 0x0a, "Reserved" },
386 { 0x0b, "Reserved" },
387 { 0x0c, "Reserved for other location technologies" },
388 { 0x0d, "Reserved for other location technologies" },
389 { 0x0e, "Reserved for other location technologies" },
390 { 0x0f, "Reserved for other location technologies" },
391 { 0x10, "Reserved for network specific positioning methods" },
392 { 0x11, "Reserved for network specific positioning methods" },
393 { 0x12, "Reserved for network specific positioning methods" },
394 { 0x13, "Reserved for network specific positioning methods" },
395 { 0x14, "Reserved for network specific positioning methods" },
396 { 0x15, "Reserved for network specific positioning methods" },
397 { 0x16, "Reserved for network specific positioning methods" },
398 { 0x17, "Reserved for network specific positioning methods" },
399 { 0x18, "Reserved for network specific positioning methods" },
400 { 0x19, "Reserved for network specific positioning methods" },
401 { 0x1a, "Reserved for network specific positioning methods" },
402 { 0x1b, "Reserved for network specific positioning methods" },
403 { 0x1c, "Reserved for network specific positioning methods" },
404 { 0x1d, "Reserved for network specific positioning methods" },
405 { 0x1e, "Reserved for network specific positioning methods" },
406 { 0x1f, "Reserved for network specific positioning methods" },
410 /* Coding of usage (bits 3-1)*/
411 static const value_string lcsap_pos_usage_vals
[] = {
412 { 0x00, "Attempted unsuccessfully due to failure or interruption - not used" },
413 { 0x01, "Attempted successfully: results not used to generate location - not used." },
414 { 0x02, "Attempted successfully: results used to verify but not generate location - not used." },
415 { 0x03, "Attempted successfully: results used to generate location" },
416 { 0x04, "Attempted successfully: case where UE supports multiple mobile based positioning methods and the actual method or methods used by the UE cannot be determined." },
417 { 0x05, "Reserved" },
418 { 0x06, "Reserved" },
419 { 0x07, "Reserved" },
423 /* Coding of Method (Bits 8-7) */
424 static const value_string lcsap_gnss_pos_method_vals
[] = {
425 { 0x00, "UE-Based" },
426 { 0x01, "UE-Assisted" },
427 { 0x02, "Conventional" },
428 { 0x03, "Reserved" },
432 /* Coding of GNSS ID (Bits 6-4) */
433 static const value_string lcsap_gnss_id_vals
[] = {
437 { 0x03, "Modernized GPS" },
440 { 0x06, "Reserved" },
441 { 0x07, "Reserved" },
445 /* Coding of usage (bits 3- 1) */
446 static const value_string lcsap_gnss_pos_usage_vals
[] = {
447 { 0x00, "Attempted unsuccessfully due to failure or interruption" },
448 { 0x01, "Attempted successfully: results not used to generate location" },
449 { 0x02, "Attempted successfully: results used to verify but not generate location" },
450 { 0x03, "Attempted successfully: results used to generate location" },
451 { 0x04, "Attempted successfully: case where UE supports multiple mobile based positioning methods and the actual method or methods used by the UE cannot be determined." },
452 { 0x05, "Reserved" },
453 { 0x06, "Reserved" },
454 { 0x07, "Reserved" },
460 static const value_string lcsap_Criticality_vals
[] = {
469 dissect_lcsap_Criticality(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
470 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
471 3, NULL
, false, 0, NULL
);
477 static const value_string lcsap_ProcedureCode_vals
[] = {
478 { id_Location_Service_Request
, "id-Location-Service-Request" },
479 { id_Connection_Oriented_Information_Transfer
, "id-Connection-Oriented-Information-Transfer" },
480 { id_Connectionless_Information_Transfer
, "id-Connectionless-Information-Transfer" },
481 { id_Location_Abort
, "id-Location-Abort" },
482 { id_Reset
, "id-Reset" },
483 { id_Ciphering_Key_Data_Delivery
, "id-Ciphering-Key-Data-Delivery" },
489 dissect_lcsap_ProcedureCode(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
490 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
491 0U, 255U, &ProcedureCode
, false);
495 uint8_t tmp
= tvb_get_uint8(tvb
, 0);
498 col_add_fstr(actx
->pinfo
->cinfo
, COL_INFO
, "%sReq",
499 val_to_str_const(ProcedureCode
, lcsap_ProcedureCode_vals
, "unknown message"));
501 col_add_fstr(actx
->pinfo
->cinfo
, COL_INFO
, "%sResp",
502 val_to_str_const(ProcedureCode
, lcsap_ProcedureCode_vals
, "unknown message"));
504 col_set_str(actx
->pinfo
->cinfo
, COL_INFO
,
505 val_to_str_const(ProcedureCode
, lcsap_ProcedureCode_vals
, "unknown message"));
514 dissect_lcsap_ProtocolExtensionID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
515 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
516 0U, 65535U, &ProtocolExtensionID
, false);
522 static const value_string lcsap_ProtocolIE_ID_vals
[] = {
523 { id_Accuracy_Fulfillment_Indicator
, "id-Accuracy-Fulfillment-Indicator" },
524 { id_APDU
, "id-APDU" },
525 { id_Correlation_ID
, "id-Correlation-ID" },
526 { id_Destination_ID
, "id-Destination-ID" },
527 { id_E_UTRAN_Cell_Identifier
, "id-E-UTRAN-Cell-Identifier" },
528 { id_Include_Velocity
, "id-Include-Velocity" },
529 { id_IMEI
, "id-IMEI" },
530 { id_IMSI
, "id-IMSI" },
531 { id_LCS_Client_Type
, "id-LCS-Client-Type" },
532 { id_LCS_Priority
, "id-LCS-Priority" },
533 { id_LCS_QOS
, "id-LCS-QOS" },
534 { id_LCS_Cause
, "id-LCS-Cause" },
535 { id_Location_Estimate
, "id-Location-Estimate" },
536 { id_Location_Type
, "id-Location-Type" },
537 { id_MultipleAPDUs
, "id-MultipleAPDUs" },
538 { id_Payload_Type
, "id-Payload-Type" },
539 { id_Positioning_Data
, "id-Positioning-Data" },
540 { id_Return_Error_Request
, "id-Return-Error-Request" },
541 { id_Return_Error_Cause
, "id-Return-Error-Cause" },
542 { id_Source_Identity
, "id-Source-Identity" },
543 { id_UE_Positioning_Capability
, "id-UE-Positioning-Capability" },
544 { id_Velocity_Estimate
, "id-Velocity-Estimate" },
545 { id_LCS_Service_Type_ID
, "id-LCS-Service-Type-ID" },
546 { id_Cell_Portion_ID
, "id-Cell-Portion-ID" },
547 { id_Civic_Address
, "id-Civic-Address" },
548 { id_Barometric_Pressure
, "id-Barometric-Pressure" },
549 { id_Additional_PositioningDataSet
, "id-Additional-PositioningDataSet" },
550 { id_RAT_Type
, "id-RAT-Type" },
551 { id_Ciphering_Data
, "id-Ciphering-Data" },
552 { id_Ciphering_Data_Ack
, "id-Ciphering-Data-Ack" },
553 { id_Ciphering_Data_Error_Report
, "id-Ciphering-Data-Error-Report" },
554 { id_Coverage_Level
, "id-Coverage-Level" },
555 { id_UE_Country_Determination_Indication
, "id-UE-Country-Determination-Indication" },
556 { id_UE_Area_Indication
, "id-UE-Area-Indication" },
562 dissect_lcsap_ProtocolIE_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
563 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
564 0U, 65535U, &ProtocolIE_ID
, false);
567 proto_item_append_text(proto_item_get_parent_nth(actx
->created_item
, 2), ": %s",
568 val_to_str(ProtocolIE_ID
, VALS(lcsap_ProtocolIE_ID_vals
), "unknown (%d)"));
576 dissect_lcsap_T_ie_field_value(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
577 offset
= dissect_per_open_type_pdu_new(tvb
, offset
, actx
, tree
, hf_index
, dissect_ProtocolIEFieldValue
);
583 static const per_sequence_t ProtocolIE_Field_sequence
[] = {
584 { &hf_lcsap_id
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_ProtocolIE_ID
},
585 { &hf_lcsap_criticality
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Criticality
},
586 { &hf_lcsap_ie_field_value
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_T_ie_field_value
},
591 dissect_lcsap_ProtocolIE_Field(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
592 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
593 ett_lcsap_ProtocolIE_Field
, ProtocolIE_Field_sequence
);
599 static const per_sequence_t ProtocolIE_Container_sequence_of
[1] = {
600 { &hf_lcsap_ProtocolIE_Container_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_ProtocolIE_Field
},
604 dissect_lcsap_ProtocolIE_Container(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
605 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
606 ett_lcsap_ProtocolIE_Container
, ProtocolIE_Container_sequence_of
,
607 0, maxProtocolIEs
, false);
615 dissect_lcsap_T_extensionValue(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
616 offset
= dissect_per_open_type_pdu_new(tvb
, offset
, actx
, tree
, hf_index
, dissect_ProtocolExtensionFieldExtensionValue
);
622 static const per_sequence_t ProtocolExtensionField_sequence
[] = {
623 { &hf_lcsap_ext_id
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_ProtocolExtensionID
},
624 { &hf_lcsap_criticality
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Criticality
},
625 { &hf_lcsap_extensionValue
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_T_extensionValue
},
630 dissect_lcsap_ProtocolExtensionField(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
631 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
632 ett_lcsap_ProtocolExtensionField
, ProtocolExtensionField_sequence
);
638 static const per_sequence_t ProtocolExtensionContainer_sequence_of
[1] = {
639 { &hf_lcsap_ProtocolExtensionContainer_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_ProtocolExtensionField
},
643 dissect_lcsap_ProtocolExtensionContainer(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
644 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
645 ett_lcsap_ProtocolExtensionContainer
, ProtocolExtensionContainer_sequence_of
,
646 1, maxProtocolExtensions
, false);
654 dissect_lcsap_APDU(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
656 tvbuff_t
*parameter_tvb
=NULL
;
658 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
659 NO_BOUND
, NO_BOUND
, false, ¶meter_tvb
);
663 switch (PayloadType
) {
667 call_dissector(lpp_handle
, parameter_tvb
, actx
->pinfo
, tree
);
673 call_dissector(lppa_handle
, parameter_tvb
, actx
->pinfo
, tree
);
687 static const value_string lcsap_Accuracy_Fulfillment_Indicator_vals
[] = {
688 { 0, "requested-accuracy-fulfilled" },
689 { 1, "requested-accuracy-not-fulfilled" },
695 dissect_lcsap_Accuracy_Fulfillment_Indicator(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
696 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
697 2, NULL
, true, 0, NULL
);
705 dissect_lcsap_Additional_PositioningMethodAndUsage(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
706 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
713 static const per_sequence_t Additional_PositioningDataSet_sequence_of
[1] = {
714 { &hf_lcsap_Additional_PositioningDataSet_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Additional_PositioningMethodAndUsage
},
718 dissect_lcsap_Additional_PositioningDataSet(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
719 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
720 ett_lcsap_Additional_PositioningDataSet
, Additional_PositioningDataSet_sequence_of
,
721 1, max_Add_Pos_Set
, false);
729 dissect_lcsap_Altitude(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
730 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
731 0U, 65535U, NULL
, false);
737 static const value_string lcsap_Direction_Of_Altitude_vals
[] = {
745 dissect_lcsap_Direction_Of_Altitude(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
746 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
747 2, NULL
, false, 0, NULL
);
753 static const per_sequence_t Altitude_And_Direction_sequence
[] = {
754 { &hf_lcsap_direction_Of_Altitude
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Direction_Of_Altitude
},
755 { &hf_lcsap_altitude
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Altitude
},
760 dissect_lcsap_Altitude_And_Direction(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
761 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
762 ett_lcsap_Altitude_And_Direction
, Altitude_And_Direction_sequence
);
770 dissect_lcsap_Angle(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
771 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
772 0U, 179U, NULL
, false);
780 dissect_lcsap_Barometric_Pressure(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
781 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
782 30000U, 115000U, NULL
, false);
790 dissect_lcsap_C0(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
791 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
792 1, 128, false, NULL
, 0, NULL
, NULL
);
800 dissect_lcsap_CellIdentity(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
801 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
802 28, 28, false, NULL
, 0, NULL
, NULL
);
810 dissect_lcsap_Cell_Portion_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
811 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
812 0U, 255U, NULL
, true);
820 dissect_lcsap_Ciphering_Set_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
821 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
822 0U, 65535U, NULL
, false);
830 dissect_lcsap_Ciphering_Key(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
831 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
832 16, 16, false, NULL
);
840 dissect_lcsap_SIB_Types(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
841 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
850 dissect_lcsap_Validity_Start_Time(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
851 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
860 dissect_lcsap_Validity_Duration(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
861 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
862 0U, 65535U, NULL
, false);
870 dissect_lcsap_TAIs_List(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
871 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
878 static const per_sequence_t Ciphering_Data_Set_sequence
[] = {
879 { &hf_lcsap_ciphering_Set_ID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Ciphering_Set_ID
},
880 { &hf_lcsap_ciphering_Key
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Ciphering_Key
},
881 { &hf_lcsap_c0
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_C0
},
882 { &hf_lcsap_sib_Types
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_SIB_Types
},
883 { &hf_lcsap_validity_Start_Time
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Validity_Start_Time
},
884 { &hf_lcsap_validity_Duration
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Validity_Duration
},
885 { &hf_lcsap_tais_List
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_TAIs_List
},
890 dissect_lcsap_Ciphering_Data_Set(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
891 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
892 ett_lcsap_Ciphering_Data_Set
, Ciphering_Data_Set_sequence
);
898 static const per_sequence_t Ciphering_Data_sequence_of
[1] = {
899 { &hf_lcsap_Ciphering_Data_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Ciphering_Data_Set
},
903 dissect_lcsap_Ciphering_Data(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
904 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
905 ett_lcsap_Ciphering_Data
, Ciphering_Data_sequence_of
,
906 1, max_Cipher_Set
, false);
912 static const per_sequence_t Ciphering_Data_Ack_sequence_of
[1] = {
913 { &hf_lcsap_Ciphering_Data_Ack_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Ciphering_Set_ID
},
917 dissect_lcsap_Ciphering_Data_Ack(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
918 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
919 ett_lcsap_Ciphering_Data_Ack
, Ciphering_Data_Ack_sequence_of
,
920 1, max_Cipher_Set
, false);
926 static const value_string lcsap_Storage_Outcome_vals
[] = {
934 dissect_lcsap_Storage_Outcome(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
935 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
936 2, NULL
, false, 0, NULL
);
942 static const per_sequence_t Ciphering_Data_Error_Report_Contents_sequence
[] = {
943 { &hf_lcsap_ciphering_Set_ID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Ciphering_Set_ID
},
944 { &hf_lcsap_storage_Outcome
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Storage_Outcome
},
949 dissect_lcsap_Ciphering_Data_Error_Report_Contents(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
950 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
951 ett_lcsap_Ciphering_Data_Error_Report_Contents
, Ciphering_Data_Error_Report_Contents_sequence
);
957 static const per_sequence_t Ciphering_Data_Error_Report_sequence_of
[1] = {
958 { &hf_lcsap_Ciphering_Data_Error_Report_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Ciphering_Data_Error_Report_Contents
},
962 dissect_lcsap_Ciphering_Data_Error_Report(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
963 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
964 ett_lcsap_Ciphering_Data_Error_Report
, Ciphering_Data_Error_Report_sequence_of
,
965 1, max_Cipher_Set
, false);
973 dissect_lcsap_Civic_Address(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
974 tvbuff_t
*parameter_tvb
=NULL
;
976 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
977 NO_BOUND
, NO_BOUND
, false, ¶meter_tvb
);
979 if (parameter_tvb
&& xml_handle
) {
982 subtree
= proto_item_add_subtree(actx
->created_item
, ett_lcsap_civic_address
);
983 if (tvb_strncaseeql(parameter_tvb
, 0, "<?xml", 5) == 0) {
984 call_dissector(xml_handle
, parameter_tvb
, actx
->pinfo
, subtree
);
986 proto_tree_add_expert(tree
, actx
->pinfo
, &ei_lcsap_civic_data_not_xml
, parameter_tvb
, 0, -1);
1000 dissect_lcsap_Confidence(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1001 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1002 0U, 100U, NULL
, false);
1010 dissect_lcsap_Correlation_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1011 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1020 dissect_lcsap_Country(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1021 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1022 NO_BOUND
, NO_BOUND
, false, NULL
);
1030 dissect_lcsap_DegreesLatitude(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1033 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1034 0U, 8388607U, °rees
, false);
1036 proto_item_append_text(actx
->created_item
, " (%.5f degrees)", (((double)degrees
/8388607) * 90));
1045 dissect_lcsap_DegreesLongitude(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1048 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1049 -8388608, 8388607U, °rees
, false);
1051 proto_item_append_text(actx
->created_item
, " (%.5f degrees)", (((double)degrees
/16777215) * 360));
1061 dissect_lcsap_PLMN_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1062 tvbuff_t
*parameter_tvb
=NULL
;
1063 proto_tree
*subtree
;
1064 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1065 3, 3, false, ¶meter_tvb
);
1066 if(tvb_reported_length(tvb
)==0)
1071 subtree
= proto_item_add_subtree(actx
->created_item
, ett_lcsap_plmnd_id
);
1072 dissect_e212_mcc_mnc(parameter_tvb
, actx
->pinfo
, subtree
, 0, E212_NONE
, false);
1078 static const per_sequence_t E_CGI_sequence
[] = {
1079 { &hf_lcsap_pLMNidentity
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_PLMN_ID
},
1080 { &hf_lcsap_cell_ID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_CellIdentity
},
1081 { &hf_lcsap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_ProtocolExtensionContainer
},
1082 { NULL
, 0, 0, NULL
}
1086 dissect_lcsap_E_CGI(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1087 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1088 ett_lcsap_E_CGI
, E_CGI_sequence
);
1094 static const value_string lcsap_Coverage_Level_vals
[] = {
1095 { 0, "extendedcoverage" },
1101 dissect_lcsap_Coverage_Level(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1102 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1103 1, NULL
, true, 0, NULL
);
1109 static const value_string lcsap_LatitudeSign_vals
[] = {
1117 dissect_lcsap_LatitudeSign(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1118 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1119 2, NULL
, false, 0, NULL
);
1125 static const per_sequence_t Geographical_Coordinates_sequence
[] = {
1126 { &hf_lcsap_latitudeSign
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_LatitudeSign
},
1127 { &hf_lcsap_degreesLatitude
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_DegreesLatitude
},
1128 { &hf_lcsap_degreesLongitude
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_DegreesLongitude
},
1129 { &hf_lcsap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_ProtocolExtensionContainer
},
1130 { NULL
, 0, 0, NULL
}
1134 dissect_lcsap_Geographical_Coordinates(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1135 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1136 ett_lcsap_Geographical_Coordinates
, Geographical_Coordinates_sequence
);
1144 dissect_lcsap_Uncertainty_Code(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1145 uint32_t uncertainty_code
;
1147 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1148 0U, 127U, &uncertainty_code
, false);
1150 proto_item_append_text(actx
->created_item
, " (%.1f m)", 10 * (pow(1.1, (double)uncertainty_code
) - 1));
1159 dissect_lcsap_Orientation_Major_Axis(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1160 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1161 0U, 89U, NULL
, false);
1167 static const per_sequence_t Uncertainty_Ellipse_sequence
[] = {
1168 { &hf_lcsap_uncertainty_SemiMajor
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Uncertainty_Code
},
1169 { &hf_lcsap_uncertainty_SemiMinor
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Uncertainty_Code
},
1170 { &hf_lcsap_orientation_Major_Axis_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Orientation_Major_Axis
},
1171 { NULL
, 0, 0, NULL
}
1175 dissect_lcsap_Uncertainty_Ellipse(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1176 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1177 ett_lcsap_Uncertainty_Ellipse
, Uncertainty_Ellipse_sequence
);
1183 static const per_sequence_t Ellipsoid_Point_With_Uncertainty_Ellipse_sequence
[] = {
1184 { &hf_lcsap_geographical_Coordinates
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Geographical_Coordinates
},
1185 { &hf_lcsap_uncertainty_Ellipse
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Uncertainty_Ellipse
},
1186 { &hf_lcsap_confidence
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Confidence
},
1187 { &hf_lcsap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_ProtocolExtensionContainer
},
1188 { NULL
, 0, 0, NULL
}
1192 dissect_lcsap_Ellipsoid_Point_With_Uncertainty_Ellipse(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1193 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1194 ett_lcsap_Ellipsoid_Point_With_Uncertainty_Ellipse
, Ellipsoid_Point_With_Uncertainty_Ellipse_sequence
);
1200 static const per_sequence_t Ellipsoid_Point_With_Altitude_sequence
[] = {
1201 { &hf_lcsap_geographical_Coordinates
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Geographical_Coordinates
},
1202 { &hf_lcsap_altitude_And_Direction
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Altitude_And_Direction
},
1203 { &hf_lcsap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_ProtocolExtensionContainer
},
1204 { NULL
, 0, 0, NULL
}
1208 dissect_lcsap_Ellipsoid_Point_With_Altitude(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1209 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1210 ett_lcsap_Ellipsoid_Point_With_Altitude
, Ellipsoid_Point_With_Altitude_sequence
);
1218 dissect_lcsap_Uncertainty_Altitude(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1219 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1220 0U, 127U, NULL
, false);
1226 static const per_sequence_t Ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid_sequence
[] = {
1227 { &hf_lcsap_geographical_Coordinates
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Geographical_Coordinates
},
1228 { &hf_lcsap_altitude_And_Direction
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Altitude_And_Direction
},
1229 { &hf_lcsap_uncertainty_Ellipse
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Uncertainty_Ellipse
},
1230 { &hf_lcsap_uncertainty_Altitude
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Uncertainty_Altitude
},
1231 { &hf_lcsap_confidence
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Confidence
},
1232 { &hf_lcsap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_ProtocolExtensionContainer
},
1233 { NULL
, 0, 0, NULL
}
1237 dissect_lcsap_Ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1238 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1239 ett_lcsap_Ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid
, Ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid_sequence
);
1247 dissect_lcsap_Inner_Radius(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1248 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1249 0U, 65535U, NULL
, false);
1255 static const per_sequence_t Ellipsoid_Arc_sequence
[] = {
1256 { &hf_lcsap_geographical_Coordinates
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Geographical_Coordinates
},
1257 { &hf_lcsap_inner_Radius
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Inner_Radius
},
1258 { &hf_lcsap_uncertainty_Radius
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Uncertainty_Code
},
1259 { &hf_lcsap_offset_Angle
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Angle
},
1260 { &hf_lcsap_included_Angle
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Angle
},
1261 { &hf_lcsap_confidence
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Confidence
},
1262 { &hf_lcsap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_ProtocolExtensionContainer
},
1263 { NULL
, 0, 0, NULL
}
1267 dissect_lcsap_Ellipsoid_Arc(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1268 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1269 ett_lcsap_Ellipsoid_Arc
, Ellipsoid_Arc_sequence
);
1277 dissect_lcsap_Macro_eNB_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1278 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
1279 20, 20, false, NULL
, 0, NULL
, NULL
);
1287 dissect_lcsap_Home_eNB_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1288 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
1289 28, 28, false, NULL
, 0, NULL
, NULL
);
1297 dissect_lcsap_Short_Macro_eNB_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1298 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
1299 18, 18, false, NULL
, 0, NULL
, NULL
);
1307 dissect_lcsap_Long_Macro_eNB_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1308 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
1309 21, 21, false, NULL
, 0, NULL
, NULL
);
1315 static const value_string lcsap_ENB_ID_vals
[] = {
1316 { 0, "macro-eNB-ID" },
1317 { 1, "home-eNB-ID" },
1318 { 2, "short-macro-eNB-ID" },
1319 { 3, "long-macro-eNB-ID" },
1323 static const per_choice_t ENB_ID_choice
[] = {
1324 { 0, &hf_lcsap_macro_eNB_ID
, ASN1_EXTENSION_ROOT
, dissect_lcsap_Macro_eNB_ID
},
1325 { 1, &hf_lcsap_home_eNB_ID
, ASN1_EXTENSION_ROOT
, dissect_lcsap_Home_eNB_ID
},
1326 { 2, &hf_lcsap_short_macro_eNB_ID
, ASN1_NOT_EXTENSION_ROOT
, dissect_lcsap_Short_Macro_eNB_ID
},
1327 { 3, &hf_lcsap_long_macro_eNB_ID
, ASN1_NOT_EXTENSION_ROOT
, dissect_lcsap_Long_Macro_eNB_ID
},
1328 { 0, NULL
, 0, NULL
}
1332 dissect_lcsap_ENB_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1333 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
1334 ett_lcsap_ENB_ID
, ENB_ID_choice
,
1343 dissect_lcsap_E_SMLC_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1344 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1345 0U, 255U, NULL
, false);
1351 static const per_sequence_t Point_sequence
[] = {
1352 { &hf_lcsap_geographical_Coordinates
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Geographical_Coordinates
},
1353 { &hf_lcsap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_ProtocolExtensionContainer
},
1354 { NULL
, 0, 0, NULL
}
1358 dissect_lcsap_Point(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1359 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1360 ett_lcsap_Point
, Point_sequence
);
1366 static const per_sequence_t Point_With_Uncertainty_sequence
[] = {
1367 { &hf_lcsap_geographical_Coordinates
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Geographical_Coordinates
},
1368 { &hf_lcsap_uncertainty_Code
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Uncertainty_Code
},
1369 { &hf_lcsap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_ProtocolExtensionContainer
},
1370 { NULL
, 0, 0, NULL
}
1374 dissect_lcsap_Point_With_Uncertainty(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1375 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1376 ett_lcsap_Point_With_Uncertainty
, Point_With_Uncertainty_sequence
);
1382 static const per_sequence_t Polygon_Point_sequence
[] = {
1383 { &hf_lcsap_geographical_Coordinates
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Geographical_Coordinates
},
1384 { &hf_lcsap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_ProtocolExtensionContainer
},
1385 { NULL
, 0, 0, NULL
}
1389 dissect_lcsap_Polygon_Point(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1390 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1391 ett_lcsap_Polygon_Point
, Polygon_Point_sequence
);
1397 static const per_sequence_t Polygon_sequence_of
[1] = {
1398 { &hf_lcsap_Polygon_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Polygon_Point
},
1402 dissect_lcsap_Polygon(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1403 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1404 ett_lcsap_Polygon
, Polygon_sequence_of
,
1405 1, max_No_Of_Points
, false);
1413 dissect_lcsap_High_Accuracy_DegreesLatitude(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1414 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1415 INT32_MIN
, 2147483647U, NULL
, false);
1423 dissect_lcsap_High_Accuracy_DegreesLongitude(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1424 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1425 INT32_MIN
, 2147483647U, NULL
, false);
1431 static const per_sequence_t High_Accuracy_Geographical_Coordinates_sequence
[] = {
1432 { &hf_lcsap_high_Accuracy_DegreesLatitude
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_High_Accuracy_DegreesLatitude
},
1433 { &hf_lcsap_high_Accuracy_DegreesLongitude
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_High_Accuracy_DegreesLongitude
},
1434 { &hf_lcsap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_ProtocolExtensionContainer
},
1435 { NULL
, 0, 0, NULL
}
1439 dissect_lcsap_High_Accuracy_Geographical_Coordinates(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1440 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1441 ett_lcsap_High_Accuracy_Geographical_Coordinates
, High_Accuracy_Geographical_Coordinates_sequence
);
1449 dissect_lcsap_High_Accuracy_Uncertainty_Code(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1450 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1451 0U, 255U, NULL
, false);
1459 dissect_lcsap_INTEGER_0_179(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1460 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1461 0U, 179U, NULL
, false);
1467 static const per_sequence_t High_Accuracy_Uncertainty_Ellipse_sequence
[] = {
1468 { &hf_lcsap_high_Accuracy_Uncertainty_SemiMajor
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_High_Accuracy_Uncertainty_Code
},
1469 { &hf_lcsap_high_Accuracy_Uncertainty_SemiMinor
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_High_Accuracy_Uncertainty_Code
},
1470 { &hf_lcsap_orientation_Major_Axis
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_INTEGER_0_179
},
1471 { &hf_lcsap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_ProtocolExtensionContainer
},
1472 { NULL
, 0, 0, NULL
}
1476 dissect_lcsap_High_Accuracy_Uncertainty_Ellipse(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1477 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1478 ett_lcsap_High_Accuracy_Uncertainty_Ellipse
, High_Accuracy_Uncertainty_Ellipse_sequence
);
1484 static const per_sequence_t High_Accuracy_Ellipsoid_Point_With_Uncertainty_Ellipse_sequence
[] = {
1485 { &hf_lcsap_high_Accuracy_Geographical_Coordinates
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_High_Accuracy_Geographical_Coordinates
},
1486 { &hf_lcsap_high_Accuracy_Uncertainty_Ellipse
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_High_Accuracy_Uncertainty_Ellipse
},
1487 { &hf_lcsap_confidence
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Confidence
},
1488 { &hf_lcsap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_ProtocolExtensionContainer
},
1489 { NULL
, 0, 0, NULL
}
1493 dissect_lcsap_High_Accuracy_Ellipsoid_Point_With_Uncertainty_Ellipse(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1494 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1495 ett_lcsap_High_Accuracy_Ellipsoid_Point_With_Uncertainty_Ellipse
, High_Accuracy_Ellipsoid_Point_With_Uncertainty_Ellipse_sequence
);
1503 dissect_lcsap_High_Accuracy_Altitude(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1504 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1505 -64000, 1280000U, NULL
, false);
1511 static const per_sequence_t High_Accuracy_Ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid_sequence
[] = {
1512 { &hf_lcsap_high_Accuracy_Geographical_Coordinates
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_High_Accuracy_Geographical_Coordinates
},
1513 { &hf_lcsap_high_Accuracy_Altitude
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_High_Accuracy_Altitude
},
1514 { &hf_lcsap_high_Accuracy_Uncertainty_Ellipse
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_High_Accuracy_Uncertainty_Ellipse
},
1515 { &hf_lcsap_confidence
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Confidence
},
1516 { &hf_lcsap_high_Accuracy_Uncertainty_Altitude
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_High_Accuracy_Uncertainty_Code
},
1517 { &hf_lcsap_vertical_Confidence
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Confidence
},
1518 { &hf_lcsap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_ProtocolExtensionContainer
},
1519 { NULL
, 0, 0, NULL
}
1523 dissect_lcsap_High_Accuracy_Ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1524 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1525 ett_lcsap_High_Accuracy_Ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid
, High_Accuracy_Ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid_sequence
);
1533 dissect_lcsap_High_Accuracy_Extended_Uncertainty_Code(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1534 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1535 0U, 255U, NULL
, false);
1541 static const per_sequence_t High_Accuracy_Extended_Uncertainty_Ellipse_sequence
[] = {
1542 { &hf_lcsap_high_Accuracy_Extended_Uncertainty_SemiMajor
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_High_Accuracy_Extended_Uncertainty_Code
},
1543 { &hf_lcsap_high_Accuracy_Extended_Uncertainty_SemiMinor
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_High_Accuracy_Extended_Uncertainty_Code
},
1544 { &hf_lcsap_orientation_Major_Axis
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_INTEGER_0_179
},
1545 { &hf_lcsap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_ProtocolExtensionContainer
},
1546 { NULL
, 0, 0, NULL
}
1550 dissect_lcsap_High_Accuracy_Extended_Uncertainty_Ellipse(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1551 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1552 ett_lcsap_High_Accuracy_Extended_Uncertainty_Ellipse
, High_Accuracy_Extended_Uncertainty_Ellipse_sequence
);
1558 static const value_string lcsap_High_Accuracy_Scalable_Uncertainty_Ellipse_vals
[] = {
1559 { 0, "high-Accuracy-Uncertainty-Ellipse" },
1560 { 1, "high-Accuracy-Extended-Uncertainty-Ellipse" },
1564 static const per_choice_t High_Accuracy_Scalable_Uncertainty_Ellipse_choice
[] = {
1565 { 0, &hf_lcsap_high_Accuracy_Uncertainty_Ellipse
, ASN1_NO_EXTENSIONS
, dissect_lcsap_High_Accuracy_Uncertainty_Ellipse
},
1566 { 1, &hf_lcsap_high_Accuracy_Extended_Uncertainty_Ellipse
, ASN1_NO_EXTENSIONS
, dissect_lcsap_High_Accuracy_Extended_Uncertainty_Ellipse
},
1567 { 0, NULL
, 0, NULL
}
1571 dissect_lcsap_High_Accuracy_Scalable_Uncertainty_Ellipse(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1572 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
1573 ett_lcsap_High_Accuracy_Scalable_Uncertainty_Ellipse
, High_Accuracy_Scalable_Uncertainty_Ellipse_choice
,
1580 static const per_sequence_t High_Accuracy_Ellipsoid_Point_With_Scalable_Uncertainty_Ellipse_sequence
[] = {
1581 { &hf_lcsap_high_Accuracy_Geographical_Coordinates
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_High_Accuracy_Geographical_Coordinates
},
1582 { &hf_lcsap_high_Accuracy_Scalable_Uncertainty_Ellipse
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_High_Accuracy_Scalable_Uncertainty_Ellipse
},
1583 { &hf_lcsap_confidence
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Confidence
},
1584 { &hf_lcsap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_ProtocolExtensionContainer
},
1585 { NULL
, 0, 0, NULL
}
1589 dissect_lcsap_High_Accuracy_Ellipsoid_Point_With_Scalable_Uncertainty_Ellipse(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1590 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1591 ett_lcsap_High_Accuracy_Ellipsoid_Point_With_Scalable_Uncertainty_Ellipse
, High_Accuracy_Ellipsoid_Point_With_Scalable_Uncertainty_Ellipse_sequence
);
1597 static const value_string lcsap_High_Accuracy_Scalable_Uncertainty_Altitude_vals
[] = {
1598 { 0, "high-Accuracy-Uncertainty-Altitude" },
1599 { 1, "high-Accuracy-Extended-Uncertainty-Altitude" },
1603 static const per_choice_t High_Accuracy_Scalable_Uncertainty_Altitude_choice
[] = {
1604 { 0, &hf_lcsap_high_Accuracy_Uncertainty_Altitude
, ASN1_NO_EXTENSIONS
, dissect_lcsap_High_Accuracy_Uncertainty_Code
},
1605 { 1, &hf_lcsap_high_Accuracy_Extended_Uncertainty_Altitude
, ASN1_NO_EXTENSIONS
, dissect_lcsap_High_Accuracy_Extended_Uncertainty_Code
},
1606 { 0, NULL
, 0, NULL
}
1610 dissect_lcsap_High_Accuracy_Scalable_Uncertainty_Altitude(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1611 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
1612 ett_lcsap_High_Accuracy_Scalable_Uncertainty_Altitude
, High_Accuracy_Scalable_Uncertainty_Altitude_choice
,
1619 static const per_sequence_t High_Accuracy_Ellipsoid_Point_With_Altitude_And_Scalable_Uncertainty_Ellipsoid_sequence
[] = {
1620 { &hf_lcsap_high_Accuracy_Geographical_Coordinates
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_High_Accuracy_Geographical_Coordinates
},
1621 { &hf_lcsap_high_Accuracy_Altitude
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_High_Accuracy_Altitude
},
1622 { &hf_lcsap_high_Accuracy_Scalable_Uncertainty_Ellipse
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_High_Accuracy_Scalable_Uncertainty_Ellipse
},
1623 { &hf_lcsap_confidence
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Confidence
},
1624 { &hf_lcsap_high_Accuracy_Scalable_Uncertainty_Altitude
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_High_Accuracy_Scalable_Uncertainty_Altitude
},
1625 { &hf_lcsap_vertical_Confidence
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Confidence
},
1626 { &hf_lcsap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_ProtocolExtensionContainer
},
1627 { NULL
, 0, 0, NULL
}
1631 dissect_lcsap_High_Accuracy_Ellipsoid_Point_With_Altitude_And_Scalable_Uncertainty_Ellipsoid(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1632 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1633 ett_lcsap_High_Accuracy_Ellipsoid_Point_With_Altitude_And_Scalable_Uncertainty_Ellipsoid
, High_Accuracy_Ellipsoid_Point_With_Altitude_And_Scalable_Uncertainty_Ellipsoid_sequence
);
1639 static const value_string lcsap_Geographical_Area_vals
[] = {
1641 { 1, "point-With-Uncertainty" },
1642 { 2, "ellipsoidPoint-With-Uncertainty-Ellipse" },
1644 { 4, "ellipsoid-Point-With-Altitude" },
1645 { 5, "ellipsoid-Point-With-Altitude-And-Uncertainty-Ellipsoid" },
1646 { 6, "ellipsoid-Arc" },
1647 { 7, "high-Accuracy-Ellipsoid-Point-With-Uncertainty-Ellipse" },
1648 { 8, "high-Accuracy-Ellipsoid-Point-With-Altitude-And-Uncertainty-Ellipsoid" },
1649 { 9, "high-Accuracy-Ellipsoid-Point-With-Scalable-Uncertainty-Ellipse" },
1650 { 10, "high-Accuracy-Ellipsoid-Point-With-Altitude-And-Scalable-Uncertainty-Ellipsoid" },
1654 static const per_choice_t Geographical_Area_choice
[] = {
1655 { 0, &hf_lcsap_point
, ASN1_EXTENSION_ROOT
, dissect_lcsap_Point
},
1656 { 1, &hf_lcsap_point_With_Uncertainty
, ASN1_EXTENSION_ROOT
, dissect_lcsap_Point_With_Uncertainty
},
1657 { 2, &hf_lcsap_ellipsoidPoint_With_Uncertainty_Ellipse
, ASN1_EXTENSION_ROOT
, dissect_lcsap_Ellipsoid_Point_With_Uncertainty_Ellipse
},
1658 { 3, &hf_lcsap_polygon
, ASN1_EXTENSION_ROOT
, dissect_lcsap_Polygon
},
1659 { 4, &hf_lcsap_ellipsoid_Point_With_Altitude
, ASN1_EXTENSION_ROOT
, dissect_lcsap_Ellipsoid_Point_With_Altitude
},
1660 { 5, &hf_lcsap_ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid
, ASN1_EXTENSION_ROOT
, dissect_lcsap_Ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid
},
1661 { 6, &hf_lcsap_ellipsoid_Arc
, ASN1_EXTENSION_ROOT
, dissect_lcsap_Ellipsoid_Arc
},
1662 { 7, &hf_lcsap_high_Accuracy_Ellipsoid_Point_With_Uncertainty_Ellipse
, ASN1_NOT_EXTENSION_ROOT
, dissect_lcsap_High_Accuracy_Ellipsoid_Point_With_Uncertainty_Ellipse
},
1663 { 8, &hf_lcsap_high_Accuracy_Ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid
, ASN1_NOT_EXTENSION_ROOT
, dissect_lcsap_High_Accuracy_Ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid
},
1664 { 9, &hf_lcsap_high_Accuracy_Ellipsoid_Point_With_Scalable_Uncertainty_Ellipse
, ASN1_NOT_EXTENSION_ROOT
, dissect_lcsap_High_Accuracy_Ellipsoid_Point_With_Scalable_Uncertainty_Ellipse
},
1665 { 10, &hf_lcsap_high_Accuracy_Ellipsoid_Point_With_Altitude_And_Scalable_Uncertainty_Ellipsoid
, ASN1_NOT_EXTENSION_ROOT
, dissect_lcsap_High_Accuracy_Ellipsoid_Point_With_Altitude_And_Scalable_Uncertainty_Ellipsoid
},
1666 { 0, NULL
, 0, NULL
}
1670 dissect_lcsap_Geographical_Area(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1671 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
1672 ett_lcsap_Geographical_Area
, Geographical_Area_choice
,
1679 static const per_sequence_t Global_eNB_ID_sequence
[] = {
1680 { &hf_lcsap_pLMN_ID
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_PLMN_ID
},
1681 { &hf_lcsap_eNB_ID
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_ENB_ID
},
1682 { NULL
, 0, 0, NULL
}
1686 dissect_lcsap_Global_eNB_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1687 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1688 ett_lcsap_Global_eNB_ID
, Global_eNB_ID_sequence
);
1696 dissect_lcsap_GNSS_Positioning_Method_And_Usage(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1697 tvbuff_t
*parameter_tvb
=NULL
;
1699 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1700 1, 1, false, ¶meter_tvb
);
1706 proto_tree_add_item(tree
, hf_lcsap_gnss_pos_method
, parameter_tvb
, 0, 1, ENC_BIG_ENDIAN
);
1707 proto_tree_add_item(tree
, hf_lcsap_gnss_id
, parameter_tvb
, 0, 1, ENC_BIG_ENDIAN
);
1708 proto_tree_add_item(tree
, hf_lcsap_gnss_pos_usage
, parameter_tvb
, 0, 1, ENC_BIG_ENDIAN
);
1715 static const per_sequence_t GNSS_Positioning_Data_Set_sequence_of
[1] = {
1716 { &hf_lcsap_GNSS_Positioning_Data_Set_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_GNSS_Positioning_Method_And_Usage
},
1720 dissect_lcsap_GNSS_Positioning_Data_Set(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1721 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1722 ett_lcsap_GNSS_Positioning_Data_Set
, GNSS_Positioning_Data_Set_sequence_of
,
1723 1, max_GNSS_Set
, false);
1731 dissect_lcsap_Horizontal_Accuracy(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1732 uint32_t uncertainty_code
;
1733 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1734 0U, 127U, &uncertainty_code
, false);
1738 proto_item_append_text(actx
->created_item
, " (%.1f m)", 10 * (pow(1.1, (double)uncertainty_code
) - 1));
1746 dissect_lcsap_INTEGER_0_359(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1747 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1748 0U, 359U, NULL
, false);
1756 dissect_lcsap_INTEGER_0_2047(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1757 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1758 0U, 2047U, NULL
, false);
1764 static const per_sequence_t Horizontal_Speed_And_Bearing_sequence
[] = {
1765 { &hf_lcsap_bearing
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_INTEGER_0_359
},
1766 { &hf_lcsap_horizontal_Speed
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_INTEGER_0_2047
},
1767 { NULL
, 0, 0, NULL
}
1771 dissect_lcsap_Horizontal_Speed_And_Bearing(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1772 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1773 ett_lcsap_Horizontal_Speed_And_Bearing
, Horizontal_Speed_And_Bearing_sequence
);
1779 static const per_sequence_t Horizontal_Velocity_sequence
[] = {
1780 { &hf_lcsap_horizontal_Speed_And_Bearing
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Horizontal_Speed_And_Bearing
},
1781 { &hf_lcsap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_ProtocolExtensionContainer
},
1782 { NULL
, 0, 0, NULL
}
1786 dissect_lcsap_Horizontal_Velocity(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1787 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1788 ett_lcsap_Horizontal_Velocity
, Horizontal_Velocity_sequence
);
1796 dissect_lcsap_INTEGER_0_255(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1797 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1798 0U, 255U, NULL
, false);
1804 static const value_string lcsap_Vertical_Speed_Direction_vals
[] = {
1812 dissect_lcsap_Vertical_Speed_Direction(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1813 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1814 2, NULL
, false, 0, NULL
);
1820 static const per_sequence_t Vertical_Velocity_sequence
[] = {
1821 { &hf_lcsap_vertical_Speed
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_INTEGER_0_255
},
1822 { &hf_lcsap_vertical_Speed_Direction
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Vertical_Speed_Direction
},
1823 { NULL
, 0, 0, NULL
}
1827 dissect_lcsap_Vertical_Velocity(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1828 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1829 ett_lcsap_Vertical_Velocity
, Vertical_Velocity_sequence
);
1835 static const per_sequence_t Horizontal_With_Vertical_Velocity_sequence
[] = {
1836 { &hf_lcsap_horizontal_Speed_And_Bearing
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Horizontal_Speed_And_Bearing
},
1837 { &hf_lcsap_vertical_Velocity
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Vertical_Velocity
},
1838 { &hf_lcsap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_ProtocolExtensionContainer
},
1839 { NULL
, 0, 0, NULL
}
1843 dissect_lcsap_Horizontal_With_Vertical_Velocity(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1844 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1845 ett_lcsap_Horizontal_With_Vertical_Velocity
, Horizontal_With_Vertical_Velocity_sequence
);
1851 static const per_sequence_t Horizontal_Velocity_With_Uncertainty_sequence
[] = {
1852 { &hf_lcsap_horizontal_Speed_And_Bearing
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Horizontal_Speed_And_Bearing
},
1853 { &hf_lcsap_uncertainty_Speed
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_INTEGER_0_255
},
1854 { &hf_lcsap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_ProtocolExtensionContainer
},
1855 { NULL
, 0, 0, NULL
}
1859 dissect_lcsap_Horizontal_Velocity_With_Uncertainty(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1860 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1861 ett_lcsap_Horizontal_Velocity_With_Uncertainty
, Horizontal_Velocity_With_Uncertainty_sequence
);
1867 static const per_sequence_t Horizontal_With_Vertical_Velocity_And_Uncertainty_sequence
[] = {
1868 { &hf_lcsap_horizontal_Speed_And_Bearing
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Horizontal_Speed_And_Bearing
},
1869 { &hf_lcsap_vertical_Velocity
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Vertical_Velocity
},
1870 { &hf_lcsap_horizontal_Uncertainty_Speed
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_INTEGER_0_255
},
1871 { &hf_lcsap_vertical_Uncertainty_Speed
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_INTEGER_0_255
},
1872 { &hf_lcsap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_ProtocolExtensionContainer
},
1873 { NULL
, 0, 0, NULL
}
1877 dissect_lcsap_Horizontal_With_Vertical_Velocity_And_Uncertainty(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1878 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1879 ett_lcsap_Horizontal_With_Vertical_Velocity_And_Uncertainty
, Horizontal_With_Vertical_Velocity_And_Uncertainty_sequence
);
1887 dissect_lcsap_IMSI(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1889 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1890 3, 8, false, &imsi_tvb
);
1893 proto_tree
*subtree
;
1895 subtree
= proto_item_add_subtree(actx
->created_item
, ett_lcsap_imsi
);
1896 dissect_e212_imsi(imsi_tvb
, actx
->pinfo
, subtree
, 0, tvb_reported_length(imsi_tvb
), false);
1906 dissect_lcsap_IMEI(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1907 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1914 static const value_string lcsap_Include_Velocity_vals
[] = {
1916 { 1, "not-Requested" },
1922 dissect_lcsap_Include_Velocity(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1923 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1924 2, NULL
, true, 0, NULL
);
1930 static const value_string lcsap_International_Area_Indication_vals
[] = {
1937 dissect_lcsap_International_Area_Indication(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1938 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1939 1, NULL
, true, 0, NULL
);
1945 static const value_string lcsap_Location_Type_vals
[] = {
1946 { 0, "geographic-Information" },
1947 { 1, "assistance-Information" },
1948 { 2, "last-known-location" },
1954 dissect_lcsap_Location_Type(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1955 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1956 2, NULL
, true, 1, NULL
);
1962 static const value_string lcsap_Radio_Network_Layer_Cause_vals
[] = {
1963 { 0, "unspecified" },
1969 dissect_lcsap_Radio_Network_Layer_Cause(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1970 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1971 1, NULL
, true, 0, NULL
);
1977 static const value_string lcsap_Transport_Layer_Cause_vals
[] = {
1978 { 0, "tranport-Resource-Unavailable" },
1979 { 1, "unspecified" },
1985 dissect_lcsap_Transport_Layer_Cause(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1986 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1987 2, NULL
, true, 0, NULL
);
1993 static const value_string lcsap_Protocol_Cause_vals
[] = {
1994 { 0, "transfer-Syntax-Error" },
1995 { 1, "abstract-Syntax-Error-Reject" },
1996 { 2, "abstract-Syntax-Error-Ignore-And-Notify" },
1997 { 3, "message-Not-Compatible-With-Receiver-State" },
1998 { 4, "semantic-Error" },
1999 { 5, "unspecified" },
2000 { 6, "abstract-Syntax-Error" },
2006 dissect_lcsap_Protocol_Cause(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2007 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
2008 7, NULL
, true, 0, NULL
);
2014 static const value_string lcsap_Misc_Cause_vals
[] = {
2015 { 0, "processing-Overload" },
2016 { 1, "hardware-Failure" },
2017 { 2, "o-And-M-Intervention" },
2018 { 3, "unspecified" },
2019 { 4, "ciphering-key-data-lost" },
2025 dissect_lcsap_Misc_Cause(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2026 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
2027 4, NULL
, true, 1, NULL
);
2033 static const value_string lcsap_LCS_Cause_vals
[] = {
2034 { 0, "radio-Network-Layer" },
2035 { 1, "transport-Layer" },
2041 static const per_choice_t LCS_Cause_choice
[] = {
2042 { 0, &hf_lcsap_radio_Network_Layer
, ASN1_NO_EXTENSIONS
, dissect_lcsap_Radio_Network_Layer_Cause
},
2043 { 1, &hf_lcsap_transport_Layer
, ASN1_NO_EXTENSIONS
, dissect_lcsap_Transport_Layer_Cause
},
2044 { 2, &hf_lcsap_protocol
, ASN1_NO_EXTENSIONS
, dissect_lcsap_Protocol_Cause
},
2045 { 3, &hf_lcsap_misc
, ASN1_NO_EXTENSIONS
, dissect_lcsap_Misc_Cause
},
2046 { 0, NULL
, 0, NULL
}
2050 dissect_lcsap_LCS_Cause(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2051 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2052 ett_lcsap_LCS_Cause
, LCS_Cause_choice
,
2059 static const value_string lcsap_LCS_Client_Type_vals
[] = {
2060 { 0, "emergency-Services" },
2061 { 1, "value-Added-Services" },
2062 { 2, "pLMN-Operator-Services" },
2063 { 3, "lawful-Intercept-Services" },
2064 { 4, "pLMN-Operator-broadcast-Services" },
2065 { 5, "pLMN-Operator-OM" },
2066 { 6, "pLMN-Operator-Anonymous-Statistics" },
2067 { 7, "pLMN-Operator-Target-MS-Service-Support" },
2073 dissect_lcsap_LCS_Client_Type(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2074 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
2075 8, NULL
, true, 0, NULL
);
2083 dissect_lcsap_LCS_Priority(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2084 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
2091 static const value_string lcsap_Vertical_Requested_vals
[] = {
2092 { 0, "vertical-coordinate-Is-Not-Requested" },
2093 { 1, "vertical-coordinate-Is-Requested" },
2099 dissect_lcsap_Vertical_Requested(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2100 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
2101 2, NULL
, false, 0, NULL
);
2109 dissect_lcsap_Vertical_Accuracy(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2110 uint32_t vertical_uncertainty
;
2111 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
2112 0U, 127U, &vertical_uncertainty
, false);
2116 proto_item_append_text(actx
->created_item
, " (%.1f m)", 45 * (pow(1.025, (double)vertical_uncertainty
) - 1));
2122 static const value_string lcsap_Response_Time_vals
[] = {
2124 { 1, "delay-Tolerant" },
2130 dissect_lcsap_Response_Time(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2131 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
2132 2, NULL
, true, 0, NULL
);
2138 static const per_sequence_t LCS_QoS_sequence
[] = {
2139 { &hf_lcsap_horizontal_Accuracy
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_Horizontal_Accuracy
},
2140 { &hf_lcsap_vertical_Requested
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_Vertical_Requested
},
2141 { &hf_lcsap_vertical_Accuracy
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_Vertical_Accuracy
},
2142 { &hf_lcsap_response_Time
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_Response_Time
},
2143 { NULL
, 0, 0, NULL
}
2147 dissect_lcsap_LCS_QoS(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_lcsap_LCS_QoS
, LCS_QoS_sequence
);
2157 dissect_lcsap_LCS_Service_Type_ID(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 0U, 127U, NULL
, false);
2165 static const per_sequence_t MultipleAPDUs_sequence_of
[1] = {
2166 { &hf_lcsap_MultipleAPDUs_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_APDU
},
2170 dissect_lcsap_MultipleAPDUs(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2171 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
2172 ett_lcsap_MultipleAPDUs
, MultipleAPDUs_sequence_of
,
2179 static const value_string lcsap_Network_Element_vals
[] = {
2180 { 0, "global-eNB-ID" },
2185 static const per_choice_t Network_Element_choice
[] = {
2186 { 0, &hf_lcsap_global_eNB_ID
, ASN1_NO_EXTENSIONS
, dissect_lcsap_Global_eNB_ID
},
2187 { 1, &hf_lcsap_e_SMLC_ID
, ASN1_NO_EXTENSIONS
, dissect_lcsap_E_SMLC_ID
},
2188 { 0, NULL
, 0, NULL
}
2192 dissect_lcsap_Network_Element(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2193 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2194 ett_lcsap_Network_Element
, Network_Element_choice
,
2201 static const value_string lcsap_Payload_Type_vals
[] = {
2209 dissect_lcsap_Payload_Type(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2210 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
2211 2, &PayloadType
, true, 0, NULL
);
2219 dissect_lcsap_Positioning_Method_And_Usage(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2220 tvbuff_t
*parameter_tvb
=NULL
;
2222 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
2223 1, 1, false, ¶meter_tvb
);
2229 proto_tree_add_item(tree
, hf_lcsap_pos_method
, parameter_tvb
, 0, 1, ENC_BIG_ENDIAN
);
2230 proto_tree_add_item(tree
, hf_lcsap_pos_usage
, parameter_tvb
, 0, 1, ENC_BIG_ENDIAN
);
2238 static const per_sequence_t Positioning_Data_Set_sequence_of
[1] = {
2239 { &hf_lcsap_Positioning_Data_Set_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Positioning_Method_And_Usage
},
2243 dissect_lcsap_Positioning_Data_Set(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2244 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
2245 ett_lcsap_Positioning_Data_Set
, Positioning_Data_Set_sequence_of
,
2252 static const per_sequence_t Positioning_Data_sequence
[] = {
2253 { &hf_lcsap_positioning_Data_Set
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_Positioning_Data_Set
},
2254 { &hf_lcsap_gNSS_Positioning_Data_Set
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_GNSS_Positioning_Data_Set
},
2255 { &hf_lcsap_iE_Extensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_ProtocolExtensionContainer
},
2256 { NULL
, 0, 0, NULL
}
2260 dissect_lcsap_Positioning_Data(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2261 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2262 ett_lcsap_Positioning_Data
, Positioning_Data_sequence
);
2268 static const value_string lcsap_RAT_Type_vals
[] = {
2277 dissect_lcsap_RAT_Type(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2278 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
2279 2, NULL
, true, 1, NULL
);
2285 static const value_string lcsap_Return_Error_Type_vals
[] = {
2293 dissect_lcsap_Return_Error_Type(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2294 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
2295 2, NULL
, false, 0, NULL
);
2301 static const value_string lcsap_Return_Error_Cause_vals
[] = {
2302 { 0, "system-Failure" },
2303 { 1, "protocol-Error" },
2304 { 2, "destination-Unknown" },
2305 { 3, "destination-Unreachable" },
2306 { 4, "congestion" },
2312 dissect_lcsap_Return_Error_Cause(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2313 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
2314 5, NULL
, true, 0, NULL
);
2322 dissect_lcsap_BOOLEAN(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2323 offset
= dissect_per_boolean(tvb
, offset
, actx
, tree
, hf_index
, NULL
);
2329 static const per_sequence_t UE_Positioning_Capability_sequence
[] = {
2330 { &hf_lcsap_lPP
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_BOOLEAN
},
2331 { NULL
, 0, 0, NULL
}
2335 dissect_lcsap_UE_Positioning_Capability(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2336 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2337 ett_lcsap_UE_Positioning_Capability
, UE_Positioning_Capability_sequence
);
2343 static const value_string lcsap_UE_Country_Determination_Indication_vals
[] = {
2345 { 1, "not-required" },
2351 dissect_lcsap_UE_Country_Determination_Indication(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2352 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
2353 2, NULL
, true, 0, NULL
);
2359 static const per_sequence_t UE_Area_Indication_sequence
[] = {
2360 { &hf_lcsap_country
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Country
},
2361 { &hf_lcsap_international_area_indication
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_International_Area_Indication
},
2362 { NULL
, 0, 0, NULL
}
2366 dissect_lcsap_UE_Area_Indication(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2367 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2368 ett_lcsap_UE_Area_Indication
, UE_Area_Indication_sequence
);
2374 static const value_string lcsap_Velocity_Estimate_vals
[] = {
2375 { 0, "horizontal-Velocity" },
2376 { 1, "horizontal-With-Vertical-Velocity" },
2377 { 2, "horizontal-Velocity-With-Uncertainty" },
2378 { 3, "horizontal-With-Vertical-Velocity-And-Uncertainty" },
2382 static const per_choice_t Velocity_Estimate_choice
[] = {
2383 { 0, &hf_lcsap_horizontal_Velocity
, ASN1_EXTENSION_ROOT
, dissect_lcsap_Horizontal_Velocity
},
2384 { 1, &hf_lcsap_horizontal_With_Vertical_Velocity
, ASN1_EXTENSION_ROOT
, dissect_lcsap_Horizontal_With_Vertical_Velocity
},
2385 { 2, &hf_lcsap_horizontal_Velocity_With_Uncertainty
, ASN1_EXTENSION_ROOT
, dissect_lcsap_Horizontal_Velocity_With_Uncertainty
},
2386 { 3, &hf_lcsap_horizontal_With_Vertical_Velocity_And_Uncertainty
, ASN1_EXTENSION_ROOT
, dissect_lcsap_Horizontal_With_Vertical_Velocity_And_Uncertainty
},
2387 { 0, NULL
, 0, NULL
}
2391 dissect_lcsap_Velocity_Estimate(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2392 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2393 ett_lcsap_Velocity_Estimate
, Velocity_Estimate_choice
,
2400 static const per_sequence_t Location_Request_sequence
[] = {
2401 { &hf_lcsap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_ProtocolIE_Container
},
2402 { &hf_lcsap_protocolExtensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_ProtocolExtensionContainer
},
2403 { NULL
, 0, 0, NULL
}
2407 dissect_lcsap_Location_Request(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2408 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2409 ett_lcsap_Location_Request
, Location_Request_sequence
);
2415 static const per_sequence_t Location_Response_sequence
[] = {
2416 { &hf_lcsap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_ProtocolIE_Container
},
2417 { &hf_lcsap_protocolExtensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_ProtocolExtensionContainer
},
2418 { NULL
, 0, 0, NULL
}
2422 dissect_lcsap_Location_Response(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2423 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2424 ett_lcsap_Location_Response
, Location_Response_sequence
);
2430 static const per_sequence_t Location_Abort_Request_sequence
[] = {
2431 { &hf_lcsap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_ProtocolIE_Container
},
2432 { &hf_lcsap_protocolExtensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_ProtocolExtensionContainer
},
2433 { NULL
, 0, 0, NULL
}
2437 dissect_lcsap_Location_Abort_Request(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2438 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2439 ett_lcsap_Location_Abort_Request
, Location_Abort_Request_sequence
);
2445 static const per_sequence_t Connection_Oriented_Information_sequence
[] = {
2446 { &hf_lcsap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_ProtocolIE_Container
},
2447 { &hf_lcsap_protocolExtensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_ProtocolExtensionContainer
},
2448 { NULL
, 0, 0, NULL
}
2452 dissect_lcsap_Connection_Oriented_Information(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2453 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2454 ett_lcsap_Connection_Oriented_Information
, Connection_Oriented_Information_sequence
);
2460 static const per_sequence_t Connectionless_Information_sequence
[] = {
2461 { &hf_lcsap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_ProtocolIE_Container
},
2462 { &hf_lcsap_protocolExtensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_ProtocolExtensionContainer
},
2463 { NULL
, 0, 0, NULL
}
2467 dissect_lcsap_Connectionless_Information(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2469 PayloadType
= 1; /* LPPa */
2471 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2472 ett_lcsap_Connectionless_Information
, Connectionless_Information_sequence
);
2478 static const per_sequence_t Reset_Request_sequence
[] = {
2479 { &hf_lcsap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_ProtocolIE_Container
},
2480 { &hf_lcsap_protocolExtensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_ProtocolExtensionContainer
},
2481 { NULL
, 0, 0, NULL
}
2485 dissect_lcsap_Reset_Request(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2486 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2487 ett_lcsap_Reset_Request
, Reset_Request_sequence
);
2493 static const per_sequence_t Reset_Acknowledge_sequence
[] = {
2494 { &hf_lcsap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_ProtocolIE_Container
},
2495 { &hf_lcsap_protocolExtensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_ProtocolExtensionContainer
},
2496 { NULL
, 0, 0, NULL
}
2500 dissect_lcsap_Reset_Acknowledge(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2501 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2502 ett_lcsap_Reset_Acknowledge
, Reset_Acknowledge_sequence
);
2508 static const per_sequence_t Ciphering_Key_Data_sequence
[] = {
2509 { &hf_lcsap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_ProtocolIE_Container
},
2510 { &hf_lcsap_protocolExtensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_ProtocolExtensionContainer
},
2511 { NULL
, 0, 0, NULL
}
2515 dissect_lcsap_Ciphering_Key_Data(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2516 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2517 ett_lcsap_Ciphering_Key_Data
, Ciphering_Key_Data_sequence
);
2523 static const per_sequence_t Ciphering_Key_Data_Result_sequence
[] = {
2524 { &hf_lcsap_protocolIEs
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_lcsap_ProtocolIE_Container
},
2525 { &hf_lcsap_protocolExtensions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_lcsap_ProtocolExtensionContainer
},
2526 { NULL
, 0, 0, NULL
}
2530 dissect_lcsap_Ciphering_Key_Data_Result(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2531 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2532 ett_lcsap_Ciphering_Key_Data_Result
, Ciphering_Key_Data_Result_sequence
);
2540 dissect_lcsap_InitiatingMessage_value(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2541 offset
= dissect_per_open_type_pdu_new(tvb
, offset
, actx
, tree
, hf_index
, dissect_InitiatingMessageValue
);
2547 static const per_sequence_t InitiatingMessage_sequence
[] = {
2548 { &hf_lcsap_procedureCode
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_ProcedureCode
},
2549 { &hf_lcsap_criticality
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Criticality
},
2550 { &hf_lcsap_initiatingMessagevalue
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_InitiatingMessage_value
},
2551 { NULL
, 0, 0, NULL
}
2555 dissect_lcsap_InitiatingMessage(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2556 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2557 ett_lcsap_InitiatingMessage
, InitiatingMessage_sequence
);
2565 dissect_lcsap_SuccessfulOutcome_value(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2566 offset
= dissect_per_open_type_pdu_new(tvb
, offset
, actx
, tree
, hf_index
, dissect_SuccessfulOutcomeValue
);
2572 static const per_sequence_t SuccessfulOutcome_sequence
[] = {
2573 { &hf_lcsap_procedureCode
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_ProcedureCode
},
2574 { &hf_lcsap_criticality
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Criticality
},
2575 { &hf_lcsap_successfulOutcome_value
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_SuccessfulOutcome_value
},
2576 { NULL
, 0, 0, NULL
}
2580 dissect_lcsap_SuccessfulOutcome(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2581 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2582 ett_lcsap_SuccessfulOutcome
, SuccessfulOutcome_sequence
);
2590 dissect_lcsap_UnsuccessfulOutcome_value(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2591 offset
= dissect_per_open_type_pdu_new(tvb
, offset
, actx
, tree
, hf_index
, dissect_UnsuccessfulOutcomeValue
);
2597 static const per_sequence_t UnsuccessfulOutcome_sequence
[] = {
2598 { &hf_lcsap_procedureCode
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_ProcedureCode
},
2599 { &hf_lcsap_criticality
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_Criticality
},
2600 { &hf_lcsap_unsuccessfulOutcome_value
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_lcsap_UnsuccessfulOutcome_value
},
2601 { NULL
, 0, 0, NULL
}
2605 dissect_lcsap_UnsuccessfulOutcome(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2606 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2607 ett_lcsap_UnsuccessfulOutcome
, UnsuccessfulOutcome_sequence
);
2613 static const value_string lcsap_LCS_AP_PDU_vals
[] = {
2614 { 0, "initiatingMessage" },
2615 { 1, "successfulOutcome" },
2616 { 2, "unsuccessfulOutcome" },
2620 static const per_choice_t LCS_AP_PDU_choice
[] = {
2621 { 0, &hf_lcsap_initiatingMessage
, ASN1_EXTENSION_ROOT
, dissect_lcsap_InitiatingMessage
},
2622 { 1, &hf_lcsap_successfulOutcome
, ASN1_EXTENSION_ROOT
, dissect_lcsap_SuccessfulOutcome
},
2623 { 2, &hf_lcsap_unsuccessfulOutcome
, ASN1_EXTENSION_ROOT
, dissect_lcsap_UnsuccessfulOutcome
},
2624 { 0, NULL
, 0, NULL
}
2628 dissect_lcsap_LCS_AP_PDU(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2629 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2630 ett_lcsap_LCS_AP_PDU
, LCS_AP_PDU_choice
,
2638 static int dissect_APDU_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2640 asn1_ctx_t asn1_ctx
;
2641 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2642 offset
= dissect_lcsap_APDU(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_APDU_PDU
);
2643 offset
+= 7; offset
>>= 3;
2646 static int dissect_Accuracy_Fulfillment_Indicator_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2648 asn1_ctx_t asn1_ctx
;
2649 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2650 offset
= dissect_lcsap_Accuracy_Fulfillment_Indicator(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_Accuracy_Fulfillment_Indicator_PDU
);
2651 offset
+= 7; offset
>>= 3;
2654 static int dissect_Additional_PositioningDataSet_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2656 asn1_ctx_t asn1_ctx
;
2657 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2658 offset
= dissect_lcsap_Additional_PositioningDataSet(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_Additional_PositioningDataSet_PDU
);
2659 offset
+= 7; offset
>>= 3;
2662 static int dissect_Barometric_Pressure_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2664 asn1_ctx_t asn1_ctx
;
2665 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2666 offset
= dissect_lcsap_Barometric_Pressure(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_Barometric_Pressure_PDU
);
2667 offset
+= 7; offset
>>= 3;
2670 static int dissect_Cell_Portion_ID_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2672 asn1_ctx_t asn1_ctx
;
2673 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2674 offset
= dissect_lcsap_Cell_Portion_ID(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_Cell_Portion_ID_PDU
);
2675 offset
+= 7; offset
>>= 3;
2678 static int dissect_Ciphering_Data_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2680 asn1_ctx_t asn1_ctx
;
2681 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2682 offset
= dissect_lcsap_Ciphering_Data(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_Ciphering_Data_PDU
);
2683 offset
+= 7; offset
>>= 3;
2686 static int dissect_Ciphering_Data_Ack_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2688 asn1_ctx_t asn1_ctx
;
2689 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2690 offset
= dissect_lcsap_Ciphering_Data_Ack(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_Ciphering_Data_Ack_PDU
);
2691 offset
+= 7; offset
>>= 3;
2694 static int dissect_Ciphering_Data_Error_Report_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2696 asn1_ctx_t asn1_ctx
;
2697 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2698 offset
= dissect_lcsap_Ciphering_Data_Error_Report(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_Ciphering_Data_Error_Report_PDU
);
2699 offset
+= 7; offset
>>= 3;
2702 static int dissect_Civic_Address_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2704 asn1_ctx_t asn1_ctx
;
2705 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2706 offset
= dissect_lcsap_Civic_Address(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_Civic_Address_PDU
);
2707 offset
+= 7; offset
>>= 3;
2710 int dissect_lcsap_Correlation_ID_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2712 asn1_ctx_t asn1_ctx
;
2713 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2714 offset
= dissect_lcsap_Correlation_ID(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_lcsap_Correlation_ID_PDU
);
2715 offset
+= 7; offset
>>= 3;
2718 static int dissect_E_CGI_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2720 asn1_ctx_t asn1_ctx
;
2721 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2722 offset
= dissect_lcsap_E_CGI(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_E_CGI_PDU
);
2723 offset
+= 7; offset
>>= 3;
2726 static int dissect_Coverage_Level_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2728 asn1_ctx_t asn1_ctx
;
2729 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2730 offset
= dissect_lcsap_Coverage_Level(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_Coverage_Level_PDU
);
2731 offset
+= 7; offset
>>= 3;
2734 static int dissect_Geographical_Area_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2736 asn1_ctx_t asn1_ctx
;
2737 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2738 offset
= dissect_lcsap_Geographical_Area(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_Geographical_Area_PDU
);
2739 offset
+= 7; offset
>>= 3;
2742 static int dissect_IMSI_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2744 asn1_ctx_t asn1_ctx
;
2745 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2746 offset
= dissect_lcsap_IMSI(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_IMSI_PDU
);
2747 offset
+= 7; offset
>>= 3;
2750 static int dissect_IMEI_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2752 asn1_ctx_t asn1_ctx
;
2753 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2754 offset
= dissect_lcsap_IMEI(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_IMEI_PDU
);
2755 offset
+= 7; offset
>>= 3;
2758 static int dissect_Include_Velocity_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2760 asn1_ctx_t asn1_ctx
;
2761 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2762 offset
= dissect_lcsap_Include_Velocity(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_Include_Velocity_PDU
);
2763 offset
+= 7; offset
>>= 3;
2766 static int dissect_Location_Type_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2768 asn1_ctx_t asn1_ctx
;
2769 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2770 offset
= dissect_lcsap_Location_Type(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_Location_Type_PDU
);
2771 offset
+= 7; offset
>>= 3;
2774 static int dissect_LCS_Cause_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2776 asn1_ctx_t asn1_ctx
;
2777 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2778 offset
= dissect_lcsap_LCS_Cause(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_LCS_Cause_PDU
);
2779 offset
+= 7; offset
>>= 3;
2782 static int dissect_LCS_Client_Type_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2784 asn1_ctx_t asn1_ctx
;
2785 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2786 offset
= dissect_lcsap_LCS_Client_Type(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_LCS_Client_Type_PDU
);
2787 offset
+= 7; offset
>>= 3;
2790 static int dissect_LCS_Priority_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2792 asn1_ctx_t asn1_ctx
;
2793 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2794 offset
= dissect_lcsap_LCS_Priority(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_LCS_Priority_PDU
);
2795 offset
+= 7; offset
>>= 3;
2798 static int dissect_LCS_QoS_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2800 asn1_ctx_t asn1_ctx
;
2801 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2802 offset
= dissect_lcsap_LCS_QoS(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_LCS_QoS_PDU
);
2803 offset
+= 7; offset
>>= 3;
2806 static int dissect_LCS_Service_Type_ID_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2808 asn1_ctx_t asn1_ctx
;
2809 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2810 offset
= dissect_lcsap_LCS_Service_Type_ID(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_LCS_Service_Type_ID_PDU
);
2811 offset
+= 7; offset
>>= 3;
2814 static int dissect_MultipleAPDUs_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2816 asn1_ctx_t asn1_ctx
;
2817 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2818 offset
= dissect_lcsap_MultipleAPDUs(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_MultipleAPDUs_PDU
);
2819 offset
+= 7; offset
>>= 3;
2822 static int dissect_Network_Element_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2824 asn1_ctx_t asn1_ctx
;
2825 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2826 offset
= dissect_lcsap_Network_Element(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_Network_Element_PDU
);
2827 offset
+= 7; offset
>>= 3;
2830 static int dissect_Payload_Type_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2832 asn1_ctx_t asn1_ctx
;
2833 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2834 offset
= dissect_lcsap_Payload_Type(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_Payload_Type_PDU
);
2835 offset
+= 7; offset
>>= 3;
2838 int dissect_lcsap_Positioning_Data_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2840 asn1_ctx_t asn1_ctx
;
2841 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2842 offset
= dissect_lcsap_Positioning_Data(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_lcsap_Positioning_Data_PDU
);
2843 offset
+= 7; offset
>>= 3;
2846 static int dissect_RAT_Type_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2848 asn1_ctx_t asn1_ctx
;
2849 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2850 offset
= dissect_lcsap_RAT_Type(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_RAT_Type_PDU
);
2851 offset
+= 7; offset
>>= 3;
2854 static int dissect_Return_Error_Type_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2856 asn1_ctx_t asn1_ctx
;
2857 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2858 offset
= dissect_lcsap_Return_Error_Type(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_Return_Error_Type_PDU
);
2859 offset
+= 7; offset
>>= 3;
2862 static int dissect_Return_Error_Cause_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2864 asn1_ctx_t asn1_ctx
;
2865 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2866 offset
= dissect_lcsap_Return_Error_Cause(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_Return_Error_Cause_PDU
);
2867 offset
+= 7; offset
>>= 3;
2870 static int dissect_UE_Positioning_Capability_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2872 asn1_ctx_t asn1_ctx
;
2873 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2874 offset
= dissect_lcsap_UE_Positioning_Capability(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_UE_Positioning_Capability_PDU
);
2875 offset
+= 7; offset
>>= 3;
2878 static int dissect_UE_Country_Determination_Indication_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2880 asn1_ctx_t asn1_ctx
;
2881 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2882 offset
= dissect_lcsap_UE_Country_Determination_Indication(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_UE_Country_Determination_Indication_PDU
);
2883 offset
+= 7; offset
>>= 3;
2886 static int dissect_UE_Area_Indication_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2888 asn1_ctx_t asn1_ctx
;
2889 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2890 offset
= dissect_lcsap_UE_Area_Indication(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_UE_Area_Indication_PDU
);
2891 offset
+= 7; offset
>>= 3;
2894 static int dissect_Velocity_Estimate_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2896 asn1_ctx_t asn1_ctx
;
2897 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2898 offset
= dissect_lcsap_Velocity_Estimate(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_Velocity_Estimate_PDU
);
2899 offset
+= 7; offset
>>= 3;
2902 static int dissect_Location_Request_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2904 asn1_ctx_t asn1_ctx
;
2905 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2906 offset
= dissect_lcsap_Location_Request(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_Location_Request_PDU
);
2907 offset
+= 7; offset
>>= 3;
2910 static int dissect_Location_Response_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2912 asn1_ctx_t asn1_ctx
;
2913 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2914 offset
= dissect_lcsap_Location_Response(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_Location_Response_PDU
);
2915 offset
+= 7; offset
>>= 3;
2918 static int dissect_Location_Abort_Request_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2920 asn1_ctx_t asn1_ctx
;
2921 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2922 offset
= dissect_lcsap_Location_Abort_Request(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_Location_Abort_Request_PDU
);
2923 offset
+= 7; offset
>>= 3;
2926 static int dissect_Connection_Oriented_Information_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2928 asn1_ctx_t asn1_ctx
;
2929 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2930 offset
= dissect_lcsap_Connection_Oriented_Information(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_Connection_Oriented_Information_PDU
);
2931 offset
+= 7; offset
>>= 3;
2934 static int dissect_Connectionless_Information_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2936 asn1_ctx_t asn1_ctx
;
2937 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2938 offset
= dissect_lcsap_Connectionless_Information(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_Connectionless_Information_PDU
);
2939 offset
+= 7; offset
>>= 3;
2942 static int dissect_Reset_Request_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2944 asn1_ctx_t asn1_ctx
;
2945 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2946 offset
= dissect_lcsap_Reset_Request(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_Reset_Request_PDU
);
2947 offset
+= 7; offset
>>= 3;
2950 static int dissect_Reset_Acknowledge_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2952 asn1_ctx_t asn1_ctx
;
2953 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2954 offset
= dissect_lcsap_Reset_Acknowledge(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_Reset_Acknowledge_PDU
);
2955 offset
+= 7; offset
>>= 3;
2958 static int dissect_Ciphering_Key_Data_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2960 asn1_ctx_t asn1_ctx
;
2961 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2962 offset
= dissect_lcsap_Ciphering_Key_Data(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_Ciphering_Key_Data_PDU
);
2963 offset
+= 7; offset
>>= 3;
2966 static int dissect_Ciphering_Key_Data_Result_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2968 asn1_ctx_t asn1_ctx
;
2969 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2970 offset
= dissect_lcsap_Ciphering_Key_Data_Result(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_Ciphering_Key_Data_Result_PDU
);
2971 offset
+= 7; offset
>>= 3;
2974 static int dissect_LCS_AP_PDU_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2976 asn1_ctx_t asn1_ctx
;
2977 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2978 offset
= dissect_lcsap_LCS_AP_PDU(tvb
, offset
, &asn1_ctx
, tree
, hf_lcsap_LCS_AP_PDU_PDU
);
2979 offset
+= 7; offset
>>= 3;
2984 static int dissect_ProtocolIEFieldValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
2986 return (dissector_try_uint(lcsap_ies_dissector_table
, ProtocolIE_ID
, tvb
, pinfo
, tree
)) ? tvb_captured_length(tvb
) : 0;
2990 static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
2992 return (dissector_try_uint(lcsap_extension_dissector_table
, ProtocolExtensionID
, tvb
, pinfo
, tree
)) ? tvb_captured_length(tvb
) : 0;
2995 static int dissect_InitiatingMessageValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
2997 return (dissector_try_uint(lcsap_proc_imsg_dissector_table
, ProcedureCode
, tvb
, pinfo
, tree
)) ? tvb_captured_length(tvb
) : 0;
3000 static int dissect_SuccessfulOutcomeValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
3002 return (dissector_try_uint(lcsap_proc_sout_dissector_table
, ProcedureCode
, tvb
, pinfo
, tree
)) ? tvb_captured_length(tvb
) : 0;
3005 static int dissect_UnsuccessfulOutcomeValue(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
3007 return (dissector_try_uint(lcsap_proc_uout_dissector_table
, ProcedureCode
, tvb
, pinfo
, tree
)) ? tvb_captured_length(tvb
) : 0;
3012 dissect_lcsap(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void* data _U_
)
3014 proto_item
*lcsap_item
= NULL
;
3015 proto_tree
*lcsap_tree
= NULL
;
3017 /* make entry in the Protocol column on summary display */
3018 col_set_str(pinfo
->cinfo
, COL_PROTOCOL
, "LCSAP");
3020 /* create the lcsap protocol tree */
3021 lcsap_item
= proto_tree_add_item(tree
, proto_lcsap
, tvb
, 0, -1, ENC_NA
);
3022 lcsap_tree
= proto_item_add_subtree(lcsap_item
, ett_lcsap
);
3024 dissect_LCS_AP_PDU_PDU(tvb
, pinfo
, lcsap_tree
, NULL
);
3025 return tvb_captured_length(tvb
);
3028 /*--- proto_reg_handoff_lcsap ---------------------------------------*/
3030 proto_reg_handoff_lcsap(void)
3032 lpp_handle
= find_dissector_add_dependency("lpp", proto_lcsap
);
3033 lppa_handle
= find_dissector_add_dependency("lppa", proto_lcsap
);
3034 xml_handle
= find_dissector_add_dependency("xml", proto_lcsap
);
3035 dissector_add_uint_with_preference("sctp.port", SCTP_PORT_LCSAP
, lcsap_handle
);
3036 dissector_add_uint("sctp.ppi", LCS_AP_PAYLOAD_PROTOCOL_ID
, lcsap_handle
);
3037 dissector_add_uint("lcsap.ies", id_Accuracy_Fulfillment_Indicator
, create_dissector_handle(dissect_Accuracy_Fulfillment_Indicator_PDU
, proto_lcsap
));
3038 dissector_add_uint("lcsap.ies", id_APDU
, create_dissector_handle(dissect_APDU_PDU
, proto_lcsap
));
3039 dissector_add_uint("lcsap.ies", id_Correlation_ID
, create_dissector_handle(dissect_lcsap_Correlation_ID_PDU
, proto_lcsap
));
3040 dissector_add_uint("lcsap.ies", id_Destination_ID
, create_dissector_handle(dissect_Network_Element_PDU
, proto_lcsap
));
3041 dissector_add_uint("lcsap.ies", id_E_UTRAN_Cell_Identifier
, create_dissector_handle(dissect_E_CGI_PDU
, proto_lcsap
));
3042 dissector_add_uint("lcsap.ies", id_Include_Velocity
, create_dissector_handle(dissect_Include_Velocity_PDU
, proto_lcsap
));
3043 dissector_add_uint("lcsap.ies", id_IMEI
, create_dissector_handle(dissect_IMEI_PDU
, proto_lcsap
));
3044 dissector_add_uint("lcsap.ies", id_IMSI
, create_dissector_handle(dissect_IMSI_PDU
, proto_lcsap
));
3045 dissector_add_uint("lcsap.ies", id_LCS_Client_Type
, create_dissector_handle(dissect_LCS_Client_Type_PDU
, proto_lcsap
));
3046 dissector_add_uint("lcsap.ies", id_LCS_Priority
, create_dissector_handle(dissect_LCS_Priority_PDU
, proto_lcsap
));
3047 dissector_add_uint("lcsap.ies", id_LCS_QOS
, create_dissector_handle(dissect_LCS_QoS_PDU
, proto_lcsap
));
3048 dissector_add_uint("lcsap.ies", id_LCS_Cause
, create_dissector_handle(dissect_LCS_Cause_PDU
, proto_lcsap
));
3049 dissector_add_uint("lcsap.ies", id_Location_Estimate
, create_dissector_handle(dissect_Geographical_Area_PDU
, proto_lcsap
));
3050 dissector_add_uint("lcsap.ies", id_Location_Type
, create_dissector_handle(dissect_Location_Type_PDU
, proto_lcsap
));
3051 dissector_add_uint("lcsap.ies", id_MultipleAPDUs
, create_dissector_handle(dissect_MultipleAPDUs_PDU
, proto_lcsap
));
3052 dissector_add_uint("lcsap.ies", id_Payload_Type
, create_dissector_handle(dissect_Payload_Type_PDU
, proto_lcsap
));
3053 dissector_add_uint("lcsap.ies", id_Positioning_Data
, create_dissector_handle(dissect_lcsap_Positioning_Data_PDU
, proto_lcsap
));
3054 dissector_add_uint("lcsap.ies", id_Return_Error_Request
, create_dissector_handle(dissect_Return_Error_Type_PDU
, proto_lcsap
));
3055 dissector_add_uint("lcsap.ies", id_Return_Error_Cause
, create_dissector_handle(dissect_Return_Error_Cause_PDU
, proto_lcsap
));
3056 dissector_add_uint("lcsap.ies", id_Source_Identity
, create_dissector_handle(dissect_Network_Element_PDU
, proto_lcsap
));
3057 dissector_add_uint("lcsap.ies", id_UE_Positioning_Capability
, create_dissector_handle(dissect_UE_Positioning_Capability_PDU
, proto_lcsap
));
3058 dissector_add_uint("lcsap.ies", id_Velocity_Estimate
, create_dissector_handle(dissect_Velocity_Estimate_PDU
, proto_lcsap
));
3059 dissector_add_uint("lcsap.extension", id_Barometric_Pressure
, create_dissector_handle(dissect_Barometric_Pressure_PDU
, proto_lcsap
));
3060 dissector_add_uint("lcsap.extension", id_Additional_PositioningDataSet
, create_dissector_handle(dissect_Additional_PositioningDataSet_PDU
, proto_lcsap
));
3061 dissector_add_uint("lcsap.ies", id_RAT_Type
, create_dissector_handle(dissect_RAT_Type_PDU
, proto_lcsap
));
3062 dissector_add_uint("lcsap.ies", id_Ciphering_Data
, create_dissector_handle(dissect_Ciphering_Data_PDU
, proto_lcsap
));
3063 dissector_add_uint("lcsap.ies", id_Ciphering_Data_Ack
, create_dissector_handle(dissect_Ciphering_Data_Ack_PDU
, proto_lcsap
));
3064 dissector_add_uint("lcsap.ies", id_Ciphering_Data_Error_Report
, create_dissector_handle(dissect_Ciphering_Data_Error_Report_PDU
, proto_lcsap
));
3065 dissector_add_uint("lcsap.ies", id_Coverage_Level
, create_dissector_handle(dissect_Coverage_Level_PDU
, proto_lcsap
));
3066 dissector_add_uint("lcsap.ies", id_UE_Country_Determination_Indication
, create_dissector_handle(dissect_UE_Country_Determination_Indication_PDU
, proto_lcsap
));
3067 dissector_add_uint("lcsap.ies", id_UE_Area_Indication
, create_dissector_handle(dissect_UE_Area_Indication_PDU
, proto_lcsap
));
3068 dissector_add_uint("lcsap.extension", id_LCS_Service_Type_ID
, create_dissector_handle(dissect_LCS_Service_Type_ID_PDU
, proto_lcsap
));
3069 dissector_add_uint("lcsap.extension", id_Cell_Portion_ID
, create_dissector_handle(dissect_Cell_Portion_ID_PDU
, proto_lcsap
));
3070 dissector_add_uint("lcsap.extension", id_Civic_Address
, create_dissector_handle(dissect_Civic_Address_PDU
, proto_lcsap
));
3071 dissector_add_uint("lcsap.extension", id_E_UTRAN_Cell_Identifier
, create_dissector_handle(dissect_E_CGI_PDU
, proto_lcsap
));
3072 dissector_add_uint("lcsap.proc.imsg", id_Location_Service_Request
, create_dissector_handle(dissect_Location_Request_PDU
, proto_lcsap
));
3073 dissector_add_uint("lcsap.proc.sout", id_Location_Service_Request
, create_dissector_handle(dissect_Location_Response_PDU
, proto_lcsap
));
3074 dissector_add_uint("lcsap.proc.uout", id_Location_Service_Request
, create_dissector_handle(dissect_Location_Response_PDU
, proto_lcsap
));
3075 dissector_add_uint("lcsap.proc.imsg", id_Connection_Oriented_Information_Transfer
, create_dissector_handle(dissect_Connection_Oriented_Information_PDU
, proto_lcsap
));
3076 dissector_add_uint("lcsap.proc.imsg", id_Connectionless_Information_Transfer
, create_dissector_handle(dissect_Connectionless_Information_PDU
, proto_lcsap
));
3077 dissector_add_uint("lcsap.proc.uout", id_Connectionless_Information_Transfer
, create_dissector_handle(dissect_Connectionless_Information_PDU
, proto_lcsap
));
3078 dissector_add_uint("lcsap.proc.imsg", id_Location_Abort
, create_dissector_handle(dissect_Location_Abort_Request_PDU
, proto_lcsap
));
3079 dissector_add_uint("lcsap.proc.sout", id_Location_Abort
, create_dissector_handle(dissect_Location_Response_PDU
, proto_lcsap
));
3080 dissector_add_uint("lcsap.proc.imsg", id_Reset
, create_dissector_handle(dissect_Reset_Request_PDU
, proto_lcsap
));
3081 dissector_add_uint("lcsap.proc.sout", id_Reset
, create_dissector_handle(dissect_Reset_Acknowledge_PDU
, proto_lcsap
));
3082 dissector_add_uint("lcsap.proc.imsg", id_Ciphering_Key_Data_Delivery
, create_dissector_handle(dissect_Ciphering_Key_Data_PDU
, proto_lcsap
));
3083 dissector_add_uint("lcsap.proc.sout", id_Ciphering_Key_Data_Delivery
, create_dissector_handle(dissect_Ciphering_Key_Data_Result_PDU
, proto_lcsap
));
3084 dissector_add_uint("lcsap.proc.uout", id_Ciphering_Key_Data_Delivery
, create_dissector_handle(dissect_Ciphering_Key_Data_Result_PDU
, proto_lcsap
));
3089 /*--- proto_register_lcsap -------------------------------------------*/
3090 void proto_register_lcsap(void) {
3092 /* List of fields */
3093 static hf_register_info hf
[] = {
3094 /* 7.4.13 Positioning Data */
3095 { &hf_lcsap_pos_method
,
3096 { "Positioning Method", "lcsap.pos_method",
3097 FT_UINT8
, BASE_DEC
, VALS(lcsap_pos_method_vals
), 0xf8,
3100 { &hf_lcsap_pos_usage
,
3101 { "Positioning usage", "lcsap.pos_usage",
3102 FT_UINT8
, BASE_DEC
, VALS(lcsap_pos_usage_vals
), 0x07,
3105 { &hf_lcsap_gnss_pos_method
,
3106 { "GNSS Positioning Method", "lcsap.gnss_pos_method",
3107 FT_UINT8
, BASE_DEC
, VALS(lcsap_gnss_pos_method_vals
), 0xc0,
3110 { &hf_lcsap_gnss_id
,
3111 { "GNSS ID", "lcsap.gnss_id",
3112 FT_UINT8
, BASE_DEC
, VALS(lcsap_gnss_id_vals
), 0x38,
3115 { &hf_lcsap_gnss_pos_usage
,
3116 { "GNSS Positioning usage", "lcsap.gnss_pos_usage",
3117 FT_UINT8
, BASE_DEC
, VALS(lcsap_gnss_pos_usage_vals
), 0x07,
3121 { &hf_lcsap_APDU_PDU
,
3122 { "APDU", "lcsap.APDU",
3123 FT_BYTES
, BASE_NONE
, NULL
, 0,
3125 { &hf_lcsap_Accuracy_Fulfillment_Indicator_PDU
,
3126 { "Accuracy-Fulfillment-Indicator", "lcsap.Accuracy_Fulfillment_Indicator",
3127 FT_UINT32
, BASE_DEC
, VALS(lcsap_Accuracy_Fulfillment_Indicator_vals
), 0,
3129 { &hf_lcsap_Additional_PositioningDataSet_PDU
,
3130 { "Additional-PositioningDataSet", "lcsap.Additional_PositioningDataSet",
3131 FT_UINT32
, BASE_DEC
, NULL
, 0,
3133 { &hf_lcsap_Barometric_Pressure_PDU
,
3134 { "Barometric-Pressure", "lcsap.Barometric_Pressure",
3135 FT_UINT32
, BASE_DEC
, NULL
, 0,
3137 { &hf_lcsap_Cell_Portion_ID_PDU
,
3138 { "Cell-Portion-ID", "lcsap.Cell_Portion_ID",
3139 FT_UINT32
, BASE_DEC
, NULL
, 0,
3141 { &hf_lcsap_Ciphering_Data_PDU
,
3142 { "Ciphering-Data", "lcsap.Ciphering_Data",
3143 FT_UINT32
, BASE_DEC
, NULL
, 0,
3145 { &hf_lcsap_Ciphering_Data_Ack_PDU
,
3146 { "Ciphering-Data-Ack", "lcsap.Ciphering_Data_Ack",
3147 FT_UINT32
, BASE_DEC
, NULL
, 0,
3149 { &hf_lcsap_Ciphering_Data_Error_Report_PDU
,
3150 { "Ciphering-Data-Error-Report", "lcsap.Ciphering_Data_Error_Report",
3151 FT_UINT32
, BASE_DEC
, NULL
, 0,
3153 { &hf_lcsap_Civic_Address_PDU
,
3154 { "Civic-Address", "lcsap.Civic_Address",
3155 FT_BYTES
, BASE_NONE
, NULL
, 0,
3157 { &hf_lcsap_lcsap_Correlation_ID_PDU
,
3158 { "Correlation-ID", "lcsap.Correlation_ID",
3159 FT_BYTES
, BASE_NONE
, NULL
, 0,
3161 { &hf_lcsap_E_CGI_PDU
,
3162 { "E-CGI", "lcsap.E_CGI_element",
3163 FT_NONE
, BASE_NONE
, NULL
, 0,
3165 { &hf_lcsap_Coverage_Level_PDU
,
3166 { "Coverage-Level", "lcsap.Coverage_Level",
3167 FT_UINT32
, BASE_DEC
, VALS(lcsap_Coverage_Level_vals
), 0,
3169 { &hf_lcsap_Geographical_Area_PDU
,
3170 { "Geographical-Area", "lcsap.Geographical_Area",
3171 FT_UINT32
, BASE_DEC
, VALS(lcsap_Geographical_Area_vals
), 0,
3173 { &hf_lcsap_IMSI_PDU
,
3174 { "IMSI", "lcsap.IMSI",
3175 FT_BYTES
, BASE_NONE
, NULL
, 0,
3177 { &hf_lcsap_IMEI_PDU
,
3178 { "IMEI", "lcsap.IMEI",
3179 FT_BYTES
, BASE_NONE
, NULL
, 0,
3181 { &hf_lcsap_Include_Velocity_PDU
,
3182 { "Include-Velocity", "lcsap.Include_Velocity",
3183 FT_UINT32
, BASE_DEC
, VALS(lcsap_Include_Velocity_vals
), 0,
3185 { &hf_lcsap_Location_Type_PDU
,
3186 { "Location-Type", "lcsap.Location_Type",
3187 FT_UINT32
, BASE_DEC
, VALS(lcsap_Location_Type_vals
), 0,
3189 { &hf_lcsap_LCS_Cause_PDU
,
3190 { "LCS-Cause", "lcsap.LCS_Cause",
3191 FT_UINT32
, BASE_DEC
, VALS(lcsap_LCS_Cause_vals
), 0,
3193 { &hf_lcsap_LCS_Client_Type_PDU
,
3194 { "LCS-Client-Type", "lcsap.LCS_Client_Type",
3195 FT_UINT32
, BASE_DEC
, VALS(lcsap_LCS_Client_Type_vals
), 0,
3197 { &hf_lcsap_LCS_Priority_PDU
,
3198 { "LCS-Priority", "lcsap.LCS_Priority",
3199 FT_BYTES
, BASE_NONE
, NULL
, 0,
3201 { &hf_lcsap_LCS_QoS_PDU
,
3202 { "LCS-QoS", "lcsap.LCS_QoS_element",
3203 FT_NONE
, BASE_NONE
, NULL
, 0,
3205 { &hf_lcsap_LCS_Service_Type_ID_PDU
,
3206 { "LCS-Service-Type-ID", "lcsap.LCS_Service_Type_ID",
3207 FT_UINT32
, BASE_DEC
, NULL
, 0,
3209 { &hf_lcsap_MultipleAPDUs_PDU
,
3210 { "MultipleAPDUs", "lcsap.MultipleAPDUs",
3211 FT_UINT32
, BASE_DEC
, NULL
, 0,
3213 { &hf_lcsap_Network_Element_PDU
,
3214 { "Network-Element", "lcsap.Network_Element",
3215 FT_UINT32
, BASE_DEC
, VALS(lcsap_Network_Element_vals
), 0,
3217 { &hf_lcsap_Payload_Type_PDU
,
3218 { "Payload-Type", "lcsap.Payload_Type",
3219 FT_UINT32
, BASE_DEC
, VALS(lcsap_Payload_Type_vals
), 0,
3221 { &hf_lcsap_lcsap_Positioning_Data_PDU
,
3222 { "Positioning-Data", "lcsap.Positioning_Data_element",
3223 FT_NONE
, BASE_NONE
, NULL
, 0,
3225 { &hf_lcsap_RAT_Type_PDU
,
3226 { "RAT-Type", "lcsap.RAT_Type",
3227 FT_UINT32
, BASE_DEC
, VALS(lcsap_RAT_Type_vals
), 0,
3229 { &hf_lcsap_Return_Error_Type_PDU
,
3230 { "Return-Error-Type", "lcsap.Return_Error_Type",
3231 FT_UINT32
, BASE_DEC
, VALS(lcsap_Return_Error_Type_vals
), 0,
3233 { &hf_lcsap_Return_Error_Cause_PDU
,
3234 { "Return-Error-Cause", "lcsap.Return_Error_Cause",
3235 FT_UINT32
, BASE_DEC
, VALS(lcsap_Return_Error_Cause_vals
), 0,
3237 { &hf_lcsap_UE_Positioning_Capability_PDU
,
3238 { "UE-Positioning-Capability", "lcsap.UE_Positioning_Capability_element",
3239 FT_NONE
, BASE_NONE
, NULL
, 0,
3241 { &hf_lcsap_UE_Country_Determination_Indication_PDU
,
3242 { "UE-Country-Determination-Indication", "lcsap.UE_Country_Determination_Indication",
3243 FT_UINT32
, BASE_DEC
, VALS(lcsap_UE_Country_Determination_Indication_vals
), 0,
3245 { &hf_lcsap_UE_Area_Indication_PDU
,
3246 { "UE-Area-Indication", "lcsap.UE_Area_Indication_element",
3247 FT_NONE
, BASE_NONE
, NULL
, 0,
3249 { &hf_lcsap_Velocity_Estimate_PDU
,
3250 { "Velocity-Estimate", "lcsap.Velocity_Estimate",
3251 FT_UINT32
, BASE_DEC
, VALS(lcsap_Velocity_Estimate_vals
), 0,
3253 { &hf_lcsap_Location_Request_PDU
,
3254 { "Location-Request", "lcsap.Location_Request_element",
3255 FT_NONE
, BASE_NONE
, NULL
, 0,
3257 { &hf_lcsap_Location_Response_PDU
,
3258 { "Location-Response", "lcsap.Location_Response_element",
3259 FT_NONE
, BASE_NONE
, NULL
, 0,
3261 { &hf_lcsap_Location_Abort_Request_PDU
,
3262 { "Location-Abort-Request", "lcsap.Location_Abort_Request_element",
3263 FT_NONE
, BASE_NONE
, NULL
, 0,
3265 { &hf_lcsap_Connection_Oriented_Information_PDU
,
3266 { "Connection-Oriented-Information", "lcsap.Connection_Oriented_Information_element",
3267 FT_NONE
, BASE_NONE
, NULL
, 0,
3269 { &hf_lcsap_Connectionless_Information_PDU
,
3270 { "Connectionless-Information", "lcsap.Connectionless_Information_element",
3271 FT_NONE
, BASE_NONE
, NULL
, 0,
3273 { &hf_lcsap_Reset_Request_PDU
,
3274 { "Reset-Request", "lcsap.Reset_Request_element",
3275 FT_NONE
, BASE_NONE
, NULL
, 0,
3277 { &hf_lcsap_Reset_Acknowledge_PDU
,
3278 { "Reset-Acknowledge", "lcsap.Reset_Acknowledge_element",
3279 FT_NONE
, BASE_NONE
, NULL
, 0,
3281 { &hf_lcsap_Ciphering_Key_Data_PDU
,
3282 { "Ciphering-Key-Data", "lcsap.Ciphering_Key_Data_element",
3283 FT_NONE
, BASE_NONE
, NULL
, 0,
3285 { &hf_lcsap_Ciphering_Key_Data_Result_PDU
,
3286 { "Ciphering-Key-Data-Result", "lcsap.Ciphering_Key_Data_Result_element",
3287 FT_NONE
, BASE_NONE
, NULL
, 0,
3289 { &hf_lcsap_LCS_AP_PDU_PDU
,
3290 { "LCS-AP-PDU", "lcsap.LCS_AP_PDU",
3291 FT_UINT32
, BASE_DEC
, VALS(lcsap_LCS_AP_PDU_vals
), 0,
3293 { &hf_lcsap_ProtocolIE_Container_item
,
3294 { "ProtocolIE-Field", "lcsap.ProtocolIE_Field_element",
3295 FT_NONE
, BASE_NONE
, NULL
, 0,
3299 FT_UINT32
, BASE_DEC
, VALS(lcsap_ProtocolIE_ID_vals
), 0,
3300 "ProtocolIE_ID", HFILL
}},
3301 { &hf_lcsap_criticality
,
3302 { "criticality", "lcsap.criticality",
3303 FT_UINT32
, BASE_DEC
, VALS(lcsap_Criticality_vals
), 0,
3305 { &hf_lcsap_ie_field_value
,
3306 { "value", "lcsap.value_element",
3307 FT_NONE
, BASE_NONE
, NULL
, 0,
3308 "T_ie_field_value", HFILL
}},
3309 { &hf_lcsap_ProtocolExtensionContainer_item
,
3310 { "ProtocolExtensionField", "lcsap.ProtocolExtensionField_element",
3311 FT_NONE
, BASE_NONE
, NULL
, 0,
3315 FT_UINT8
, BASE_DEC
, VALS(lcsap_ProtocolIE_ID_vals
), 0,
3316 "ProtocolExtensionID", HFILL
}},
3317 { &hf_lcsap_extensionValue
,
3318 { "extensionValue", "lcsap.extensionValue_element",
3319 FT_NONE
, BASE_NONE
, NULL
, 0,
3321 { &hf_lcsap_Additional_PositioningDataSet_item
,
3322 { "Additional-PositioningMethodAndUsage", "lcsap.Additional_PositioningMethodAndUsage",
3323 FT_BYTES
, BASE_NONE
, NULL
, 0,
3325 { &hf_lcsap_direction_Of_Altitude
,
3326 { "direction-Of-Altitude", "lcsap.direction_Of_Altitude",
3327 FT_UINT32
, BASE_DEC
, VALS(lcsap_Direction_Of_Altitude_vals
), 0,
3329 { &hf_lcsap_altitude
,
3330 { "altitude", "lcsap.altitude",
3331 FT_UINT32
, BASE_DEC
, NULL
, 0,
3333 { &hf_lcsap_Ciphering_Data_item
,
3334 { "Ciphering-Data-Set", "lcsap.Ciphering_Data_Set_element",
3335 FT_NONE
, BASE_NONE
, NULL
, 0,
3337 { &hf_lcsap_Ciphering_Data_Ack_item
,
3338 { "Ciphering-Set-ID", "lcsap.Ciphering_Set_ID",
3339 FT_UINT32
, BASE_DEC
, NULL
, 0,
3341 { &hf_lcsap_Ciphering_Data_Error_Report_item
,
3342 { "Ciphering-Data-Error-Report-Contents", "lcsap.Ciphering_Data_Error_Report_Contents_element",
3343 FT_NONE
, BASE_NONE
, NULL
, 0,
3345 { &hf_lcsap_ciphering_Set_ID
,
3346 { "ciphering-Set-ID", "lcsap.ciphering_Set_ID",
3347 FT_UINT32
, BASE_DEC
, NULL
, 0,
3349 { &hf_lcsap_ciphering_Key
,
3350 { "ciphering-Key", "lcsap.ciphering_Key",
3351 FT_BYTES
, BASE_NONE
, NULL
, 0,
3355 FT_BYTES
, BASE_NONE
, NULL
, 0,
3357 { &hf_lcsap_sib_Types
,
3358 { "sib-Types", "lcsap.sib_Types",
3359 FT_BYTES
, BASE_NONE
, NULL
, 0,
3361 { &hf_lcsap_validity_Start_Time
,
3362 { "validity-Start-Time", "lcsap.validity_Start_Time",
3363 FT_BYTES
, BASE_NONE
, NULL
, 0,
3365 { &hf_lcsap_validity_Duration
,
3366 { "validity-Duration", "lcsap.validity_Duration",
3367 FT_UINT32
, BASE_DEC
, NULL
, 0,
3369 { &hf_lcsap_tais_List
,
3370 { "tais-List", "lcsap.tais_List",
3371 FT_BYTES
, BASE_NONE
, NULL
, 0,
3373 { &hf_lcsap_storage_Outcome
,
3374 { "storage-Outcome", "lcsap.storage_Outcome",
3375 FT_UINT32
, BASE_DEC
, VALS(lcsap_Storage_Outcome_vals
), 0,
3377 { &hf_lcsap_pLMNidentity
,
3378 { "pLMNidentity", "lcsap.pLMNidentity",
3379 FT_BYTES
, BASE_NONE
, NULL
, 0,
3380 "PLMN_ID", HFILL
}},
3381 { &hf_lcsap_cell_ID
,
3382 { "cell-ID", "lcsap.cell_ID",
3383 FT_BYTES
, BASE_NONE
, NULL
, 0,
3384 "CellIdentity", HFILL
}},
3385 { &hf_lcsap_iE_Extensions
,
3386 { "iE-Extensions", "lcsap.iE_Extensions",
3387 FT_UINT32
, BASE_DEC
, NULL
, 0,
3388 "ProtocolExtensionContainer", HFILL
}},
3389 { &hf_lcsap_geographical_Coordinates
,
3390 { "geographical-Coordinates", "lcsap.geographical_Coordinates_element",
3391 FT_NONE
, BASE_NONE
, NULL
, 0,
3393 { &hf_lcsap_uncertainty_Ellipse
,
3394 { "uncertainty-Ellipse", "lcsap.uncertainty_Ellipse_element",
3395 FT_NONE
, BASE_NONE
, NULL
, 0,
3397 { &hf_lcsap_confidence
,
3398 { "confidence", "lcsap.confidence",
3399 FT_UINT32
, BASE_DEC
, NULL
, 0,
3401 { &hf_lcsap_altitude_And_Direction
,
3402 { "altitude-And-Direction", "lcsap.altitude_And_Direction_element",
3403 FT_NONE
, BASE_NONE
, NULL
, 0,
3405 { &hf_lcsap_uncertainty_Altitude
,
3406 { "uncertainty-Altitude", "lcsap.uncertainty_Altitude",
3407 FT_UINT32
, BASE_DEC
, NULL
, 0,
3409 { &hf_lcsap_inner_Radius
,
3410 { "inner-Radius", "lcsap.inner_Radius",
3411 FT_UINT32
, BASE_DEC
, NULL
, 0,
3413 { &hf_lcsap_uncertainty_Radius
,
3414 { "uncertainty-Radius", "lcsap.uncertainty_Radius",
3415 FT_UINT32
, BASE_DEC
, NULL
, 0,
3416 "Uncertainty_Code", HFILL
}},
3417 { &hf_lcsap_offset_Angle
,
3418 { "offset-Angle", "lcsap.offset_Angle",
3419 FT_UINT32
, BASE_DEC
, NULL
, 0,
3421 { &hf_lcsap_included_Angle
,
3422 { "included-Angle", "lcsap.included_Angle",
3423 FT_UINT32
, BASE_DEC
, NULL
, 0,
3425 { &hf_lcsap_macro_eNB_ID
,
3426 { "macro-eNB-ID", "lcsap.macro_eNB_ID",
3427 FT_BYTES
, BASE_NONE
, NULL
, 0,
3429 { &hf_lcsap_home_eNB_ID
,
3430 { "home-eNB-ID", "lcsap.home_eNB_ID",
3431 FT_BYTES
, BASE_NONE
, NULL
, 0,
3433 { &hf_lcsap_short_macro_eNB_ID
,
3434 { "short-macro-eNB-ID", "lcsap.short_macro_eNB_ID",
3435 FT_BYTES
, BASE_NONE
, NULL
, 0,
3437 { &hf_lcsap_long_macro_eNB_ID
,
3438 { "long-macro-eNB-ID", "lcsap.long_macro_eNB_ID",
3439 FT_BYTES
, BASE_NONE
, NULL
, 0,
3442 { "point", "lcsap.point_element",
3443 FT_NONE
, BASE_NONE
, NULL
, 0,
3445 { &hf_lcsap_point_With_Uncertainty
,
3446 { "point-With-Uncertainty", "lcsap.point_With_Uncertainty_element",
3447 FT_NONE
, BASE_NONE
, NULL
, 0,
3449 { &hf_lcsap_ellipsoidPoint_With_Uncertainty_Ellipse
,
3450 { "ellipsoidPoint-With-Uncertainty-Ellipse", "lcsap.ellipsoidPoint_With_Uncertainty_Ellipse_element",
3451 FT_NONE
, BASE_NONE
, NULL
, 0,
3452 "Ellipsoid_Point_With_Uncertainty_Ellipse", HFILL
}},
3453 { &hf_lcsap_polygon
,
3454 { "polygon", "lcsap.polygon",
3455 FT_UINT32
, BASE_DEC
, NULL
, 0,
3457 { &hf_lcsap_ellipsoid_Point_With_Altitude
,
3458 { "ellipsoid-Point-With-Altitude", "lcsap.ellipsoid_Point_With_Altitude_element",
3459 FT_NONE
, BASE_NONE
, NULL
, 0,
3461 { &hf_lcsap_ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid
,
3462 { "ellipsoid-Point-With-Altitude-And-Uncertainty-Ellipsoid", "lcsap.ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid_element",
3463 FT_NONE
, BASE_NONE
, NULL
, 0,
3465 { &hf_lcsap_ellipsoid_Arc
,
3466 { "ellipsoid-Arc", "lcsap.ellipsoid_Arc_element",
3467 FT_NONE
, BASE_NONE
, NULL
, 0,
3469 { &hf_lcsap_high_Accuracy_Ellipsoid_Point_With_Uncertainty_Ellipse
,
3470 { "high-Accuracy-Ellipsoid-Point-With-Uncertainty-Ellipse", "lcsap.high_Accuracy_Ellipsoid_Point_With_Uncertainty_Ellipse_element",
3471 FT_NONE
, BASE_NONE
, NULL
, 0,
3473 { &hf_lcsap_high_Accuracy_Ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid
,
3474 { "high-Accuracy-Ellipsoid-Point-With-Altitude-And-Uncertainty-Ellipsoid", "lcsap.high_Accuracy_Ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid_element",
3475 FT_NONE
, BASE_NONE
, NULL
, 0,
3477 { &hf_lcsap_high_Accuracy_Ellipsoid_Point_With_Scalable_Uncertainty_Ellipse
,
3478 { "high-Accuracy-Ellipsoid-Point-With-Scalable-Uncertainty-Ellipse", "lcsap.high_Accuracy_Ellipsoid_Point_With_Scalable_Uncertainty_Ellipse_element",
3479 FT_NONE
, BASE_NONE
, NULL
, 0,
3481 { &hf_lcsap_high_Accuracy_Ellipsoid_Point_With_Altitude_And_Scalable_Uncertainty_Ellipsoid
,
3482 { "high-Accuracy-Ellipsoid-Point-With-Altitude-And-Scalable-Uncertainty-Ellipsoid", "lcsap.high_Accuracy_Ellipsoid_Point_With_Altitude_And_Scalable_Uncertainty_Ellipsoid_element",
3483 FT_NONE
, BASE_NONE
, NULL
, 0,
3485 { &hf_lcsap_latitudeSign
,
3486 { "latitudeSign", "lcsap.latitudeSign",
3487 FT_UINT32
, BASE_DEC
, VALS(lcsap_LatitudeSign_vals
), 0,
3489 { &hf_lcsap_degreesLatitude
,
3490 { "degreesLatitude", "lcsap.degreesLatitude",
3491 FT_UINT32
, BASE_DEC
, NULL
, 0,
3493 { &hf_lcsap_degreesLongitude
,
3494 { "degreesLongitude", "lcsap.degreesLongitude",
3495 FT_INT32
, BASE_DEC
, NULL
, 0,
3497 { &hf_lcsap_pLMN_ID
,
3498 { "pLMN-ID", "lcsap.pLMN_ID",
3499 FT_BYTES
, BASE_NONE
, NULL
, 0,
3502 { "eNB-ID", "lcsap.eNB_ID",
3503 FT_UINT32
, BASE_DEC
, VALS(lcsap_ENB_ID_vals
), 0,
3505 { &hf_lcsap_GNSS_Positioning_Data_Set_item
,
3506 { "GNSS-Positioning-Method-And-Usage", "lcsap.GNSS_Positioning_Method_And_Usage",
3507 FT_BYTES
, BASE_NONE
, NULL
, 0,
3509 { &hf_lcsap_high_Accuracy_Geographical_Coordinates
,
3510 { "high-Accuracy-Geographical-Coordinates", "lcsap.high_Accuracy_Geographical_Coordinates_element",
3511 FT_NONE
, BASE_NONE
, NULL
, 0,
3513 { &hf_lcsap_high_Accuracy_Uncertainty_Ellipse
,
3514 { "high-Accuracy-Uncertainty-Ellipse", "lcsap.high_Accuracy_Uncertainty_Ellipse_element",
3515 FT_NONE
, BASE_NONE
, NULL
, 0,
3517 { &hf_lcsap_high_Accuracy_Scalable_Uncertainty_Ellipse
,
3518 { "high-Accuracy-Scalable-Uncertainty-Ellipse", "lcsap.high_Accuracy_Scalable_Uncertainty_Ellipse",
3519 FT_UINT32
, BASE_DEC
, VALS(lcsap_High_Accuracy_Scalable_Uncertainty_Ellipse_vals
), 0,
3521 { &hf_lcsap_high_Accuracy_Altitude
,
3522 { "high-Accuracy-Altitude", "lcsap.high_Accuracy_Altitude",
3523 FT_INT32
, BASE_DEC
, NULL
, 0,
3525 { &hf_lcsap_high_Accuracy_Uncertainty_Altitude
,
3526 { "high-Accuracy-Uncertainty-Altitude", "lcsap.high_Accuracy_Uncertainty_Altitude",
3527 FT_UINT32
, BASE_DEC
, NULL
, 0,
3528 "High_Accuracy_Uncertainty_Code", HFILL
}},
3529 { &hf_lcsap_vertical_Confidence
,
3530 { "vertical-Confidence", "lcsap.vertical_Confidence",
3531 FT_UINT32
, BASE_DEC
, NULL
, 0,
3532 "Confidence", HFILL
}},
3533 { &hf_lcsap_high_Accuracy_Scalable_Uncertainty_Altitude
,
3534 { "high-Accuracy-Scalable-Uncertainty-Altitude", "lcsap.high_Accuracy_Scalable_Uncertainty_Altitude",
3535 FT_UINT32
, BASE_DEC
, VALS(lcsap_High_Accuracy_Scalable_Uncertainty_Altitude_vals
), 0,
3537 { &hf_lcsap_high_Accuracy_DegreesLatitude
,
3538 { "high-Accuracy-DegreesLatitude", "lcsap.high_Accuracy_DegreesLatitude",
3539 FT_INT32
, BASE_DEC
, NULL
, 0,
3541 { &hf_lcsap_high_Accuracy_DegreesLongitude
,
3542 { "high-Accuracy-DegreesLongitude", "lcsap.high_Accuracy_DegreesLongitude",
3543 FT_INT32
, BASE_DEC
, NULL
, 0,
3545 { &hf_lcsap_high_Accuracy_Uncertainty_SemiMajor
,
3546 { "high-Accuracy-Uncertainty-SemiMajor", "lcsap.high_Accuracy_Uncertainty_SemiMajor",
3547 FT_UINT32
, BASE_DEC
, NULL
, 0,
3548 "High_Accuracy_Uncertainty_Code", HFILL
}},
3549 { &hf_lcsap_high_Accuracy_Uncertainty_SemiMinor
,
3550 { "high-Accuracy-Uncertainty-SemiMinor", "lcsap.high_Accuracy_Uncertainty_SemiMinor",
3551 FT_UINT32
, BASE_DEC
, NULL
, 0,
3552 "High_Accuracy_Uncertainty_Code", HFILL
}},
3553 { &hf_lcsap_orientation_Major_Axis
,
3554 { "orientation-Major-Axis", "lcsap.orientation_Major_Axis",
3555 FT_UINT32
, BASE_DEC
, NULL
, 0,
3556 "INTEGER_0_179", HFILL
}},
3557 { &hf_lcsap_high_Accuracy_Extended_Uncertainty_SemiMajor
,
3558 { "high-Accuracy-Extended-Uncertainty-SemiMajor", "lcsap.high_Accuracy_Extended_Uncertainty_SemiMajor",
3559 FT_UINT32
, BASE_DEC
, NULL
, 0,
3560 "High_Accuracy_Extended_Uncertainty_Code", HFILL
}},
3561 { &hf_lcsap_high_Accuracy_Extended_Uncertainty_SemiMinor
,
3562 { "high-Accuracy-Extended-Uncertainty-SemiMinor", "lcsap.high_Accuracy_Extended_Uncertainty_SemiMinor",
3563 FT_UINT32
, BASE_DEC
, NULL
, 0,
3564 "High_Accuracy_Extended_Uncertainty_Code", HFILL
}},
3565 { &hf_lcsap_high_Accuracy_Extended_Uncertainty_Ellipse
,
3566 { "high-Accuracy-Extended-Uncertainty-Ellipse", "lcsap.high_Accuracy_Extended_Uncertainty_Ellipse_element",
3567 FT_NONE
, BASE_NONE
, NULL
, 0,
3569 { &hf_lcsap_high_Accuracy_Extended_Uncertainty_Altitude
,
3570 { "high-Accuracy-Extended-Uncertainty-Altitude", "lcsap.high_Accuracy_Extended_Uncertainty_Altitude",
3571 FT_UINT32
, BASE_DEC
, NULL
, 0,
3572 "High_Accuracy_Extended_Uncertainty_Code", HFILL
}},
3573 { &hf_lcsap_bearing
,
3574 { "bearing", "lcsap.bearing",
3575 FT_UINT32
, BASE_DEC
, NULL
, 0,
3576 "INTEGER_0_359", HFILL
}},
3577 { &hf_lcsap_horizontal_Speed
,
3578 { "horizontal-Speed", "lcsap.horizontal_Speed",
3579 FT_UINT32
, BASE_DEC
, NULL
, 0,
3580 "INTEGER_0_2047", HFILL
}},
3581 { &hf_lcsap_horizontal_Speed_And_Bearing
,
3582 { "horizontal-Speed-And-Bearing", "lcsap.horizontal_Speed_And_Bearing_element",
3583 FT_NONE
, BASE_NONE
, NULL
, 0,
3585 { &hf_lcsap_vertical_Velocity
,
3586 { "vertical-Velocity", "lcsap.vertical_Velocity_element",
3587 FT_NONE
, BASE_NONE
, NULL
, 0,
3589 { &hf_lcsap_uncertainty_Speed
,
3590 { "uncertainty-Speed", "lcsap.uncertainty_Speed",
3591 FT_UINT32
, BASE_DEC
, NULL
, 0,
3592 "INTEGER_0_255", HFILL
}},
3593 { &hf_lcsap_horizontal_Uncertainty_Speed
,
3594 { "horizontal-Uncertainty-Speed", "lcsap.horizontal_Uncertainty_Speed",
3595 FT_UINT32
, BASE_DEC
, NULL
, 0,
3596 "INTEGER_0_255", HFILL
}},
3597 { &hf_lcsap_vertical_Uncertainty_Speed
,
3598 { "vertical-Uncertainty-Speed", "lcsap.vertical_Uncertainty_Speed",
3599 FT_UINT32
, BASE_DEC
, NULL
, 0,
3600 "INTEGER_0_255", HFILL
}},
3601 { &hf_lcsap_radio_Network_Layer
,
3602 { "radio-Network-Layer", "lcsap.radio_Network_Layer",
3603 FT_UINT32
, BASE_DEC
, VALS(lcsap_Radio_Network_Layer_Cause_vals
), 0,
3604 "Radio_Network_Layer_Cause", HFILL
}},
3605 { &hf_lcsap_transport_Layer
,
3606 { "transport-Layer", "lcsap.transport_Layer",
3607 FT_UINT32
, BASE_DEC
, VALS(lcsap_Transport_Layer_Cause_vals
), 0,
3608 "Transport_Layer_Cause", HFILL
}},
3609 { &hf_lcsap_protocol
,
3610 { "protocol", "lcsap.protocol",
3611 FT_UINT32
, BASE_DEC
, VALS(lcsap_Protocol_Cause_vals
), 0,
3612 "Protocol_Cause", HFILL
}},
3614 { "misc", "lcsap.misc",
3615 FT_UINT32
, BASE_DEC
, VALS(lcsap_Misc_Cause_vals
), 0,
3616 "Misc_Cause", HFILL
}},
3617 { &hf_lcsap_horizontal_Accuracy
,
3618 { "horizontal-Accuracy", "lcsap.horizontal_Accuracy",
3619 FT_UINT32
, BASE_DEC
, NULL
, 0,
3621 { &hf_lcsap_vertical_Requested
,
3622 { "vertical-Requested", "lcsap.vertical_Requested",
3623 FT_UINT32
, BASE_DEC
, VALS(lcsap_Vertical_Requested_vals
), 0,
3625 { &hf_lcsap_vertical_Accuracy
,
3626 { "vertical-Accuracy", "lcsap.vertical_Accuracy",
3627 FT_UINT32
, BASE_DEC
, NULL
, 0,
3629 { &hf_lcsap_response_Time
,
3630 { "response-Time", "lcsap.response_Time",
3631 FT_UINT32
, BASE_DEC
, VALS(lcsap_Response_Time_vals
), 0,
3633 { &hf_lcsap_MultipleAPDUs_item
,
3634 { "APDU", "lcsap.APDU",
3635 FT_BYTES
, BASE_NONE
, NULL
, 0,
3637 { &hf_lcsap_global_eNB_ID
,
3638 { "global-eNB-ID", "lcsap.global_eNB_ID_element",
3639 FT_NONE
, BASE_NONE
, NULL
, 0,
3641 { &hf_lcsap_e_SMLC_ID
,
3642 { "e-SMLC-ID", "lcsap.e_SMLC_ID",
3643 FT_UINT32
, BASE_DEC
, NULL
, 0,
3645 { &hf_lcsap_uncertainty_Code
,
3646 { "uncertainty-Code", "lcsap.uncertainty_Code",
3647 FT_UINT32
, BASE_DEC
, NULL
, 0,
3649 { &hf_lcsap_Polygon_item
,
3650 { "Polygon-Point", "lcsap.Polygon_Point_element",
3651 FT_NONE
, BASE_NONE
, NULL
, 0,
3653 { &hf_lcsap_positioning_Data_Set
,
3654 { "positioning-Data-Set", "lcsap.positioning_Data_Set",
3655 FT_UINT32
, BASE_DEC
, NULL
, 0,
3657 { &hf_lcsap_gNSS_Positioning_Data_Set
,
3658 { "gNSS-Positioning-Data-Set", "lcsap.gNSS_Positioning_Data_Set",
3659 FT_UINT32
, BASE_DEC
, NULL
, 0,
3661 { &hf_lcsap_Positioning_Data_Set_item
,
3662 { "Positioning-Method-And-Usage", "lcsap.Positioning_Method_And_Usage",
3663 FT_BYTES
, BASE_NONE
, NULL
, 0,
3665 { &hf_lcsap_uncertainty_SemiMajor
,
3666 { "uncertainty-SemiMajor", "lcsap.uncertainty_SemiMajor",
3667 FT_UINT32
, BASE_DEC
, NULL
, 0,
3668 "Uncertainty_Code", HFILL
}},
3669 { &hf_lcsap_uncertainty_SemiMinor
,
3670 { "uncertainty-SemiMinor", "lcsap.uncertainty_SemiMinor",
3671 FT_UINT32
, BASE_DEC
, NULL
, 0,
3672 "Uncertainty_Code", HFILL
}},
3673 { &hf_lcsap_orientation_Major_Axis_01
,
3674 { "orientation-Major-Axis", "lcsap.orientation_Major_Axis",
3675 FT_UINT32
, BASE_DEC
, NULL
, 0,
3678 { "lPP", "lcsap.lPP",
3679 FT_BOOLEAN
, BASE_NONE
, NULL
, 0,
3680 "BOOLEAN", HFILL
}},
3681 { &hf_lcsap_country
,
3682 { "country", "lcsap.country",
3683 FT_BYTES
, BASE_NONE
, NULL
, 0,
3685 { &hf_lcsap_international_area_indication
,
3686 { "international-area-indication", "lcsap.international_area_indication",
3687 FT_UINT32
, BASE_DEC
, VALS(lcsap_International_Area_Indication_vals
), 0,
3689 { &hf_lcsap_horizontal_Velocity
,
3690 { "horizontal-Velocity", "lcsap.horizontal_Velocity_element",
3691 FT_NONE
, BASE_NONE
, NULL
, 0,
3693 { &hf_lcsap_horizontal_With_Vertical_Velocity
,
3694 { "horizontal-With-Vertical-Velocity", "lcsap.horizontal_With_Vertical_Velocity_element",
3695 FT_NONE
, BASE_NONE
, NULL
, 0,
3697 { &hf_lcsap_horizontal_Velocity_With_Uncertainty
,
3698 { "horizontal-Velocity-With-Uncertainty", "lcsap.horizontal_Velocity_With_Uncertainty_element",
3699 FT_NONE
, BASE_NONE
, NULL
, 0,
3701 { &hf_lcsap_horizontal_With_Vertical_Velocity_And_Uncertainty
,
3702 { "horizontal-With-Vertical-Velocity-And-Uncertainty", "lcsap.horizontal_With_Vertical_Velocity_And_Uncertainty_element",
3703 FT_NONE
, BASE_NONE
, NULL
, 0,
3705 { &hf_lcsap_vertical_Speed
,
3706 { "vertical-Speed", "lcsap.vertical_Speed",
3707 FT_UINT32
, BASE_DEC
, NULL
, 0,
3708 "INTEGER_0_255", HFILL
}},
3709 { &hf_lcsap_vertical_Speed_Direction
,
3710 { "vertical-Speed-Direction", "lcsap.vertical_Speed_Direction",
3711 FT_UINT32
, BASE_DEC
, VALS(lcsap_Vertical_Speed_Direction_vals
), 0,
3713 { &hf_lcsap_protocolIEs
,
3714 { "protocolIEs", "lcsap.protocolIEs",
3715 FT_UINT32
, BASE_DEC
, NULL
, 0,
3716 "ProtocolIE_Container", HFILL
}},
3717 { &hf_lcsap_protocolExtensions
,
3718 { "protocolExtensions", "lcsap.protocolExtensions",
3719 FT_UINT32
, BASE_DEC
, NULL
, 0,
3720 "ProtocolExtensionContainer", HFILL
}},
3721 { &hf_lcsap_initiatingMessage
,
3722 { "initiatingMessage", "lcsap.initiatingMessage_element",
3723 FT_NONE
, BASE_NONE
, NULL
, 0,
3725 { &hf_lcsap_successfulOutcome
,
3726 { "successfulOutcome", "lcsap.successfulOutcome_element",
3727 FT_NONE
, BASE_NONE
, NULL
, 0,
3729 { &hf_lcsap_unsuccessfulOutcome
,
3730 { "unsuccessfulOutcome", "lcsap.unsuccessfulOutcome_element",
3731 FT_NONE
, BASE_NONE
, NULL
, 0,
3733 { &hf_lcsap_procedureCode
,
3734 { "procedureCode", "lcsap.procedureCode",
3735 FT_UINT32
, BASE_DEC
, VALS(lcsap_ProcedureCode_vals
), 0,
3737 { &hf_lcsap_initiatingMessagevalue
,
3738 { "value", "lcsap.value_element",
3739 FT_NONE
, BASE_NONE
, NULL
, 0,
3740 "InitiatingMessage_value", HFILL
}},
3741 { &hf_lcsap_successfulOutcome_value
,
3742 { "value", "lcsap.value_element",
3743 FT_NONE
, BASE_NONE
, NULL
, 0,
3744 "SuccessfulOutcome_value", HFILL
}},
3745 { &hf_lcsap_unsuccessfulOutcome_value
,
3746 { "value", "lcsap.value_element",
3747 FT_NONE
, BASE_NONE
, NULL
, 0,
3748 "UnsuccessfulOutcome_value", HFILL
}},
3751 /* List of subtrees */
3752 static int *ett
[] = {
3754 &ett_lcsap_plmnd_id
,
3756 &ett_lcsap_civic_address
,
3757 &ett_lcsap_ProtocolIE_Container
,
3758 &ett_lcsap_ProtocolIE_Field
,
3759 &ett_lcsap_ProtocolExtensionContainer
,
3760 &ett_lcsap_ProtocolExtensionField
,
3761 &ett_lcsap_Additional_PositioningDataSet
,
3762 &ett_lcsap_Altitude_And_Direction
,
3763 &ett_lcsap_Ciphering_Data
,
3764 &ett_lcsap_Ciphering_Data_Ack
,
3765 &ett_lcsap_Ciphering_Data_Error_Report
,
3766 &ett_lcsap_Ciphering_Data_Set
,
3767 &ett_lcsap_Ciphering_Data_Error_Report_Contents
,
3769 &ett_lcsap_Ellipsoid_Point_With_Uncertainty_Ellipse
,
3770 &ett_lcsap_Ellipsoid_Point_With_Altitude
,
3771 &ett_lcsap_Ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid
,
3772 &ett_lcsap_Ellipsoid_Arc
,
3774 &ett_lcsap_Geographical_Area
,
3775 &ett_lcsap_Geographical_Coordinates
,
3776 &ett_lcsap_Global_eNB_ID
,
3777 &ett_lcsap_GNSS_Positioning_Data_Set
,
3778 &ett_lcsap_High_Accuracy_Ellipsoid_Point_With_Uncertainty_Ellipse
,
3779 &ett_lcsap_High_Accuracy_Ellipsoid_Point_With_Scalable_Uncertainty_Ellipse
,
3780 &ett_lcsap_High_Accuracy_Ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid
,
3781 &ett_lcsap_High_Accuracy_Ellipsoid_Point_With_Altitude_And_Scalable_Uncertainty_Ellipsoid
,
3782 &ett_lcsap_High_Accuracy_Geographical_Coordinates
,
3783 &ett_lcsap_High_Accuracy_Uncertainty_Ellipse
,
3784 &ett_lcsap_High_Accuracy_Extended_Uncertainty_Ellipse
,
3785 &ett_lcsap_High_Accuracy_Scalable_Uncertainty_Ellipse
,
3786 &ett_lcsap_High_Accuracy_Scalable_Uncertainty_Altitude
,
3787 &ett_lcsap_Horizontal_Speed_And_Bearing
,
3788 &ett_lcsap_Horizontal_Velocity
,
3789 &ett_lcsap_Horizontal_With_Vertical_Velocity
,
3790 &ett_lcsap_Horizontal_Velocity_With_Uncertainty
,
3791 &ett_lcsap_Horizontal_With_Vertical_Velocity_And_Uncertainty
,
3792 &ett_lcsap_LCS_Cause
,
3794 &ett_lcsap_MultipleAPDUs
,
3795 &ett_lcsap_Network_Element
,
3797 &ett_lcsap_Point_With_Uncertainty
,
3799 &ett_lcsap_Polygon_Point
,
3800 &ett_lcsap_Positioning_Data
,
3801 &ett_lcsap_Positioning_Data_Set
,
3802 &ett_lcsap_Uncertainty_Ellipse
,
3803 &ett_lcsap_UE_Positioning_Capability
,
3804 &ett_lcsap_UE_Area_Indication
,
3805 &ett_lcsap_Velocity_Estimate
,
3806 &ett_lcsap_Vertical_Velocity
,
3807 &ett_lcsap_Location_Request
,
3808 &ett_lcsap_Location_Response
,
3809 &ett_lcsap_Location_Abort_Request
,
3810 &ett_lcsap_Connection_Oriented_Information
,
3811 &ett_lcsap_Connectionless_Information
,
3812 &ett_lcsap_Reset_Request
,
3813 &ett_lcsap_Reset_Acknowledge
,
3814 &ett_lcsap_Ciphering_Key_Data
,
3815 &ett_lcsap_Ciphering_Key_Data_Result
,
3816 &ett_lcsap_LCS_AP_PDU
,
3817 &ett_lcsap_InitiatingMessage
,
3818 &ett_lcsap_SuccessfulOutcome
,
3819 &ett_lcsap_UnsuccessfulOutcome
,
3822 /* module_t *lcsap_module; */
3823 expert_module_t
*expert_lcsap
;
3825 static ei_register_info ei
[] = {
3826 { &ei_lcsap_civic_data_not_xml
,
3827 { "lcsap.civic_data_not_xml", PI_PROTOCOL
, PI_ERROR
, "Should contain a UTF-8 encoded PIDF - LO XML document as defined in IETF RFC 4119", EXPFILL
} },
3831 /* Register protocol */
3832 proto_lcsap
= proto_register_protocol(PNAME
, PSNAME
, PFNAME
);
3834 /* Register fields and subtrees */
3835 proto_register_field_array(proto_lcsap
, hf
, array_length(hf
));
3836 proto_register_subtree_array(ett
, array_length(ett
));
3837 lcsap_handle
= register_dissector("lcsap", dissect_lcsap
, proto_lcsap
);
3839 /* Register dissector tables */
3840 lcsap_ies_dissector_table
= register_dissector_table("lcsap.ies", "LCS-AP-PROTOCOL-IES", proto_lcsap
, FT_UINT32
, BASE_DEC
);
3842 expert_lcsap
= expert_register_protocol(proto_lcsap
);
3843 expert_register_field_array(expert_lcsap
, ei
, array_length(ei
));
3845 lcsap_extension_dissector_table
= register_dissector_table("lcsap.extension", "LCS-AP-PROTOCOL-EXTENSION", proto_lcsap
, FT_UINT32
, BASE_DEC
);
3846 lcsap_proc_imsg_dissector_table
= register_dissector_table("lcsap.proc.imsg", "LCS-AP-ELEMENTARY-PROCEDURE InitiatingMessage", proto_lcsap
, FT_UINT32
, BASE_DEC
);
3847 lcsap_proc_sout_dissector_table
= register_dissector_table("lcsap.proc.sout", "LCS-AP-ELEMENTARY-PROCEDURE SuccessfulOutcome", proto_lcsap
, FT_UINT32
, BASE_DEC
);
3848 lcsap_proc_uout_dissector_table
= register_dissector_table("lcsap.proc.uout", "LCS-AP-ELEMENTARY-PROCEDURE UnsuccessfulOutcome", proto_lcsap
, FT_UINT32
, BASE_DEC
);
3850 /* lcsap_module = prefs_register_protocol(proto_lcsap, NULL); */
3860 * indent-tabs-mode: nil
3863 * ex: set shiftwidth=2 tabstop=8 expandtab:
3864 * :indentSize=2:tabSize=8:noTabs=true: