1 /* Do not modify this file. */
2 /* It is created automatically by the ASN.1 to Wireshark dissector compiler */
4 /* ../../tools/asn2wrs.py -p lcsap -c ./lcsap.cnf -s ./packet-lcsap-template -D . -O ../../epan/dissectors 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 */
6 /* Input file: packet-lcsap-template.c */
8 #line 1 "../../asn1/lcsap/packet-lcsap-template.c"
10 * Routines for LCS-AP packet dissembly.
12 * Copyright (c) 2011 by Spenser Sheng <spenser.sheng@ericsson.com>
14 * $Id: packet-lcsap.c 28770 2011-06-18 21:30:42Z stig Spenser Sheng$
16 * Wireshark - Network traffic analyzer
17 * By Gerald Combs <gerald@wireshark.org>
18 * Copyright 1999 Gerald Combs
20 * This program is free software; you can redistribute it and/or
21 * modify it under the terms of the GNU General Public License
22 * as published by the Free Software Foundation; either version 2
23 * of the License, or (at your option) any later version.
25 * This program is distributed in the hope that it will be useful,
26 * but WITHOUT ANY WARRANTY; without even the implied warranty of
27 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28 * GNU General Public License for more details.
30 * You should have received a copy of the GNU General Public License
31 * along with this program; if not, write to the Free Software
32 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
34 * ETSI TS 129 171 V9.2.0 (2010-10)
42 #include <epan/packet.h>
47 #include <epan/strutil.h>
48 #include <epan/asn1.h>
49 #include <epan/prefs.h>
50 #include <epan/sctpppids.h>
52 #include "packet-ber.h"
53 #include "packet-per.h"
54 #include "packet-e212.h"
55 #include "packet-sccp.h"
58 /* disable: "warning C4146: unary minus operator applied to unsigned type, result still unsigned" */
59 #pragma warning(disable:4146)
62 #define PNAME "LCS Application Protocol"
63 #define PSNAME "LCSAP"
64 #define PFNAME "lcsap"
66 static dissector_handle_t lpp_handle;
67 static dissector_handle_t lppa_handle;
69 #define SCTP_PORT_LCSAP 9082
71 /*--- Included file: packet-lcsap-val.h ---*/
72 #line 1 "../../asn1/lcsap/packet-lcsap-val.h"
73 #define max_No_Of_Points 15
75 #define max_GNSS_Set 9
76 #define maxProtocolExtensions 65535
77 #define maxProtocolIEs 65535
79 typedef enum _ProcedureCode_enum {
80 id_Location_Service_Request = 0,
81 id_Connection_Oriented_Information_Transfer = 1,
82 id_Connectionless_Information_Transfer = 2,
83 id_Location_Abort = 3,
87 typedef enum _ProtocolIE_ID_enum {
88 id_Accuracy_Fulfillment_Indicator = 0,
90 id_Correlation_ID = 2,
91 id_Destination_ID = 3,
92 id_E_UTRAN_Cell_Identifier = 4,
93 id_Include_Velocity = 5,
96 id_LCS_Client_Type = 8,
100 id_Location_Estimate = 12,
101 id_Location_Type = 13,
102 id_MultipleAPDUs = 14,
103 id_Payload_Type = 15,
104 id_Positioning_Data = 16,
105 id_Return_Error_Request = 17,
106 id_Return_Error_Cause = 18,
107 id_Source_Identity = 19,
108 id_UE_Positioning_Capability = 20,
109 id_Velocity_Estimate = 21
110 } ProtocolIE_ID_enum;
112 /*--- End of included file: packet-lcsap-val.h ---*/
113 #line 63 "../../asn1/lcsap/packet-lcsap-template.c"
114 /* Strcture to hold ProcedureCode */
119 /* Initialize the protocol and registered fields */
120 static int proto_lcsap = -1;
122 /*--- Included file: packet-lcsap-hf.c ---*/
123 #line 1 "../../asn1/lcsap/packet-lcsap-hf.c"
124 static int hf_lcsap_APDU_PDU = -1; /* APDU */
125 static int hf_lcsap_Accuracy_Fulfillment_Indicator_PDU = -1; /* Accuracy_Fulfillment_Indicator */
126 static int hf_lcsap_lcsap_Correlation_ID_PDU = -1; /* Correlation_ID */
127 static int hf_lcsap_E_CGI_PDU = -1; /* E_CGI */
128 static int hf_lcsap_Geographical_Area_PDU = -1; /* Geographical_Area */
129 static int hf_lcsap_IMSI_PDU = -1; /* IMSI */
130 static int hf_lcsap_IMEI_PDU = -1; /* IMEI */
131 static int hf_lcsap_Include_Velocity_PDU = -1; /* Include_Velocity */
132 static int hf_lcsap_Location_Type_PDU = -1; /* Location_Type */
133 static int hf_lcsap_LCS_Cause_PDU = -1; /* LCS_Cause */
134 static int hf_lcsap_LCS_Client_Type_PDU = -1; /* LCS_Client_Type */
135 static int hf_lcsap_LCS_Priority_PDU = -1; /* LCS_Priority */
136 static int hf_lcsap_LCS_QoS_PDU = -1; /* LCS_QoS */
137 static int hf_lcsap_MultipleAPDUs_PDU = -1; /* MultipleAPDUs */
138 static int hf_lcsap_Network_Element_PDU = -1; /* Network_Element */
139 static int hf_lcsap_Payload_Type_PDU = -1; /* Payload_Type */
140 static int hf_lcsap_Positioning_Data_PDU = -1; /* Positioning_Data */
141 static int hf_lcsap_Return_Error_Type_PDU = -1; /* Return_Error_Type */
142 static int hf_lcsap_Return_Error_Cause_PDU = -1; /* Return_Error_Cause */
143 static int hf_lcsap_UE_Positioning_Capability_PDU = -1; /* UE_Positioning_Capability */
144 static int hf_lcsap_Velocity_Estimate_PDU = -1; /* Velocity_Estimate */
145 static int hf_lcsap_Location_Request_PDU = -1; /* Location_Request */
146 static int hf_lcsap_Location_Response_PDU = -1; /* Location_Response */
147 static int hf_lcsap_Location_Abort_Request_PDU = -1; /* Location_Abort_Request */
148 static int hf_lcsap_Connection_Oriented_Information_PDU = -1; /* Connection_Oriented_Information */
149 static int hf_lcsap_Connectionless_Information_PDU = -1; /* Connectionless_Information */
150 static int hf_lcsap_Reset_Request_PDU = -1; /* Reset_Request */
151 static int hf_lcsap_Reset_Acknowledge_PDU = -1; /* Reset_Acknowledge */
152 static int hf_lcsap_LCS_AP_PDU_PDU = -1; /* LCS_AP_PDU */
153 static int hf_lcsap_ProtocolIE_Container_item = -1; /* ProtocolIE_Field */
154 static int hf_lcsap_ieid = -1; /* ProtocolIE_ID */
155 static int hf_lcsap_criticality = -1; /* Criticality */
156 static int hf_lcsap_ie_field_value = -1; /* T_ie_field_value */
157 static int hf_lcsap_ProtocolExtensionContainer_item = -1; /* ProtocolExtensionField */
158 static int hf_lcsap_extid = -1; /* ProtocolExtensionID */
159 static int hf_lcsap_extensionValue = -1; /* T_extensionValue */
160 static int hf_lcsap_direction_Of_Altitude = -1; /* Direction_Of_Altitude */
161 static int hf_lcsap_altitude = -1; /* Altitude */
162 static int hf_lcsap_pLMNidentity = -1; /* PLMN_ID */
163 static int hf_lcsap_cell_ID = -1; /* CellIdentity */
164 static int hf_lcsap_iE_Extensions = -1; /* ProtocolExtensionContainer */
165 static int hf_lcsap_geographical_Coordinates = -1; /* Geographical_Coordinates */
166 static int hf_lcsap_uncertainty_Ellipse = -1; /* Uncertainty_Ellipse */
167 static int hf_lcsap_confidence = -1; /* Confidence */
168 static int hf_lcsap_altitude_And_Direction = -1; /* Altitude_And_Direction */
169 static int hf_lcsap_uncertainty_Altitude = -1; /* Uncertainty_Altitude */
170 static int hf_lcsap_inner_Radius = -1; /* Inner_Radius */
171 static int hf_lcsap_uncertainty_Radius = -1; /* Uncertainty_Code */
172 static int hf_lcsap_offset_Angle = -1; /* Angle */
173 static int hf_lcsap_included_Angle = -1; /* Angle */
174 static int hf_lcsap_macro_eNB_ID = -1; /* Macro_eNB_ID */
175 static int hf_lcsap_home_eNB_ID = -1; /* Home_eNB_ID */
176 static int hf_lcsap_point = -1; /* Point */
177 static int hf_lcsap_point_With_Uncertainty = -1; /* Point_With_Uncertainty */
178 static int hf_lcsap_ellipsoidPoint_With_Uncertainty_Ellipse = -1; /* Ellipsoid_Point_With_Uncertainty_Ellipse */
179 static int hf_lcsap_polygon = -1; /* Polygon */
180 static int hf_lcsap_ellipsoid_Point_With_Altitude = -1; /* Ellipsoid_Point_With_Altitude */
181 static int hf_lcsap_ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid = -1; /* Ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid */
182 static int hf_lcsap_ellipsoid_Arc = -1; /* Ellipsoid_Arc */
183 static int hf_lcsap_latitudeSign = -1; /* LatitudeSign */
184 static int hf_lcsap_degreesLatitude = -1; /* DegreesLatitude */
185 static int hf_lcsap_degreesLongitude = -1; /* DegreesLongitude */
186 static int hf_lcsap_pLMN_ID = -1; /* PLMN_ID */
187 static int hf_lcsap_eNB_ID = -1; /* ENB_ID */
188 static int hf_lcsap_GNSS_Positioning_Data_Set_item = -1; /* GNSS_Positioning_Method_And_Usage */
189 static int hf_lcsap_bearing = -1; /* Bearing */
190 static int hf_lcsap_horizontal_Speed = -1; /* INTEGER_0_2047 */
191 static int hf_lcsap_horizontal_Speed_And_Bearing = -1; /* Horizontal_Speed_And_Bearing */
192 static int hf_lcsap_vertical_Velocity = -1; /* Vertical_Velocity */
193 static int hf_lcsap_uncertainty_Speed = -1; /* INTEGER_0_255 */
194 static int hf_lcsap_horizontal_Uncertainty_Speed = -1; /* INTEGER_0_255 */
195 static int hf_lcsap_vertical_Uncertainty_Speed = -1; /* INTEGER_0_255 */
196 static int hf_lcsap_radio_Network_Layer = -1; /* Radio_Network_Layer_Cause */
197 static int hf_lcsap_transport_Layer = -1; /* Transport_Layer_Cause */
198 static int hf_lcsap_protocol = -1; /* Protocol_Cause */
199 static int hf_lcsap_misc = -1; /* Misc_Cause */
200 static int hf_lcsap_horizontal_Accuracy = -1; /* Horizontal_Accuracy */
201 static int hf_lcsap_vertical_Requested = -1; /* Vertical_Requested */
202 static int hf_lcsap_vertical_Accuracy = -1; /* Vertical_Accuracy */
203 static int hf_lcsap_response_Time = -1; /* Response_Time */
204 static int hf_lcsap_MultipleAPDUs_item = -1; /* APDU */
205 static int hf_lcsap_global_eNB_ID = -1; /* Global_eNB_ID */
206 static int hf_lcsap_e_SMLC_ID = -1; /* E_SMLC_ID */
207 static int hf_lcsap_uncertainty_Code = -1; /* Uncertainty_Code */
208 static int hf_lcsap_Polygon_item = -1; /* Polygon_Point */
209 static int hf_lcsap_positioning_Data_Set = -1; /* Positioning_Data_Set */
210 static int hf_lcsap_gNSS_Positioning_Data_Set = -1; /* GNSS_Positioning_Data_Set */
211 static int hf_lcsap_Positioning_Data_Set_item = -1; /* Positioning_Method_And_Usage */
212 static int hf_lcsap_uncertainty_SemiMajor = -1; /* Uncertainty_Code */
213 static int hf_lcsap_uncertainty_SemiMinor = -1; /* Uncertainty_Code */
214 static int hf_lcsap_orientation_Major_Axis = -1; /* Orientation_Major_Axis */
215 static int hf_lcsap_lPP = -1; /* BOOLEAN */
216 static int hf_lcsap_horizontal_Velocity = -1; /* Horizontal_Velocity */
217 static int hf_lcsap_horizontal_With_Vertical_Velocity = -1; /* Horizontal_With_Vertical_Velocity */
218 static int hf_lcsap_horizontal_Velocity_With_Uncertainty = -1; /* Horizontal_Velocity_With_Uncertainty */
219 static int hf_lcsap_horizontal_With_Vertical_Velocity_And_Uncertainty = -1; /* Horizontal_With_Vertical_Velocity_And_Uncertainty */
220 static int hf_lcsap_vertical_Speed = -1; /* INTEGER_0_255 */
221 static int hf_lcsap_vertical_Speed_Direction = -1; /* Vertical_Speed_Direction */
222 static int hf_lcsap_protocolIEs = -1; /* ProtocolIE_Container */
223 static int hf_lcsap_protocolExtensions = -1; /* ProtocolExtensionContainer */
224 static int hf_lcsap_initiatingMessage = -1; /* InitiatingMessage */
225 static int hf_lcsap_successfulOutcome = -1; /* SuccessfulOutcome */
226 static int hf_lcsap_unsuccessfulOutcome = -1; /* UnsuccessfulOutcome */
227 static int hf_lcsap_procedureCode = -1; /* ProcedureCode */
228 static int hf_lcsap_initiatingMessagevalue = -1; /* InitiatingMessage_value */
229 static int hf_lcsap_successfulOutcome_value = -1; /* SuccessfulOutcome_value */
230 static int hf_lcsap_unsuccessfulOutcome_value = -1; /* UnsuccessfulOutcome_value */
232 /*--- End of included file: packet-lcsap-hf.c ---*/
233 #line 71 "../../asn1/lcsap/packet-lcsap-template.c"
235 /* Initialize the subtree pointers */
236 static int ett_lcsap = -1;
239 /*--- Included file: packet-lcsap-ett.c ---*/
240 #line 1 "../../asn1/lcsap/packet-lcsap-ett.c"
241 static gint ett_lcsap_ProtocolIE_Container = -1;
242 static gint ett_lcsap_ProtocolIE_Field = -1;
243 static gint ett_lcsap_ProtocolExtensionContainer = -1;
244 static gint ett_lcsap_ProtocolExtensionField = -1;
245 static gint ett_lcsap_Altitude_And_Direction = -1;
246 static gint ett_lcsap_E_CGI = -1;
247 static gint ett_lcsap_Ellipsoid_Point_With_Uncertainty_Ellipse = -1;
248 static gint ett_lcsap_Ellipsoid_Point_With_Altitude = -1;
249 static gint ett_lcsap_Ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid = -1;
250 static gint ett_lcsap_Ellipsoid_Arc = -1;
251 static gint ett_lcsap_ENB_ID = -1;
252 static gint ett_lcsap_Geographical_Area = -1;
253 static gint ett_lcsap_Geographical_Coordinates = -1;
254 static gint ett_lcsap_Global_eNB_ID = -1;
255 static gint ett_lcsap_GNSS_Positioning_Data_Set = -1;
256 static gint ett_lcsap_Horizontal_Speed_And_Bearing = -1;
257 static gint ett_lcsap_Horizontal_Velocity = -1;
258 static gint ett_lcsap_Horizontal_With_Vertical_Velocity = -1;
259 static gint ett_lcsap_Horizontal_Velocity_With_Uncertainty = -1;
260 static gint ett_lcsap_Horizontal_With_Vertical_Velocity_And_Uncertainty = -1;
261 static gint ett_lcsap_LCS_Cause = -1;
262 static gint ett_lcsap_LCS_QoS = -1;
263 static gint ett_lcsap_MultipleAPDUs = -1;
264 static gint ett_lcsap_Network_Element = -1;
265 static gint ett_lcsap_Point = -1;
266 static gint ett_lcsap_Point_With_Uncertainty = -1;
267 static gint ett_lcsap_Polygon = -1;
268 static gint ett_lcsap_Polygon_Point = -1;
269 static gint ett_lcsap_Positioning_Data = -1;
270 static gint ett_lcsap_Positioning_Data_Set = -1;
271 static gint ett_lcsap_Uncertainty_Ellipse = -1;
272 static gint ett_lcsap_UE_Positioning_Capability = -1;
273 static gint ett_lcsap_Velocity_Estimate = -1;
274 static gint ett_lcsap_Vertical_Velocity = -1;
275 static gint ett_lcsap_Location_Request = -1;
276 static gint ett_lcsap_Location_Response = -1;
277 static gint ett_lcsap_Location_Abort_Request = -1;
278 static gint ett_lcsap_Connection_Oriented_Information = -1;
279 static gint ett_lcsap_Connectionless_Information = -1;
280 static gint ett_lcsap_Reset_Request = -1;
281 static gint ett_lcsap_Reset_Acknowledge = -1;
282 static gint ett_lcsap_LCS_AP_PDU = -1;
283 static gint ett_lcsap_InitiatingMessage = -1;
284 static gint ett_lcsap_SuccessfulOutcome = -1;
285 static gint ett_lcsap_UnsuccessfulOutcome = -1;
287 /*--- End of included file: packet-lcsap-ett.c ---*/
288 #line 76 "../../asn1/lcsap/packet-lcsap-template.c"
290 /* Global variables */
291 static guint32 ProcedureCode;
292 static guint32 ProtocolIE_ID;
293 static guint32 ProtocolExtensionID;
294 static guint32 PayloadType = -1;
295 static guint gbl_lcsapSctpPort=SCTP_PORT_LCSAP;
297 /* Dissector tables */
298 static dissector_table_t lcsap_ies_dissector_table;
300 static dissector_table_t lcsap_extension_dissector_table;
301 static dissector_table_t lcsap_proc_imsg_dissector_table;
302 static dissector_table_t lcsap_proc_sout_dissector_table;
303 static dissector_table_t lcsap_proc_uout_dissector_table;
305 static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
307 static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
308 static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
309 static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
310 static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
313 /*--- Included file: packet-lcsap-fn.c ---*/
314 #line 1 "../../asn1/lcsap/packet-lcsap-fn.c"
316 static const value_string lcsap_Criticality_vals[] = {
325 dissect_lcsap_Criticality(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
326 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
327 3, NULL, FALSE, 0, NULL);
333 static const value_string lcsap_ProcedureCode_vals[] = {
334 { id_Location_Service_Request, "id-Location-Service-Request" },
335 { id_Connection_Oriented_Information_Transfer, "id-Connection-Oriented-Information-Transfer" },
336 { id_Connectionless_Information_Transfer, "id-Connectionless-Information-Transfer" },
337 { id_Location_Abort, "id-Location-Abort" },
338 { id_Reset, "id-Reset" },
344 dissect_lcsap_ProcedureCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
345 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
346 0U, 255U, &ProcedureCode, FALSE);
348 #line 93 "../../asn1/lcsap/lcsap.cnf"
350 if (check_col(actx->pinfo->cinfo, COL_INFO))
352 guint8 tmp = tvb_get_guint8(tvb, 0);
356 col_add_fstr(actx->pinfo->cinfo, COL_INFO, "%sReq",
357 val_to_str(ProcedureCode, lcsap_ProcedureCode_vals,
361 col_add_fstr(actx->pinfo->cinfo, COL_INFO, "%sResp",
362 val_to_str(ProcedureCode, lcsap_ProcedureCode_vals,
365 col_add_fstr(actx->pinfo->cinfo, COL_INFO, "%s",
366 val_to_str(ProcedureCode, lcsap_ProcedureCode_vals,
371 if (ProcedureCode != 0)
374 _pro_code.code = ProcedureCode;
376 actx->pinfo->private_data = &_pro_code;
386 dissect_lcsap_ProtocolExtensionID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
387 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
388 0U, 65535U, &ProtocolExtensionID, FALSE);
394 static const value_string lcsap_ProtocolIE_ID_vals[] = {
395 { id_Accuracy_Fulfillment_Indicator, "id-Accuracy-Fulfillment-Indicator" },
396 { id_APDU, "id-APDU" },
397 { id_Correlation_ID, "id-Correlation-ID" },
398 { id_Destination_ID, "id-Destination-ID" },
399 { id_E_UTRAN_Cell_Identifier, "id-E-UTRAN-Cell-Identifier" },
400 { id_Include_Velocity, "id-Include-Velocity" },
401 { id_IMEI, "id-IMEI" },
402 { id_IMSI, "id-IMSI" },
403 { id_LCS_Client_Type, "id-LCS-Client-Type" },
404 { id_LCS_Priority, "id-LCS-Priority" },
405 { id_LCS_QOS, "id-LCS-QOS" },
406 { id_LCS_Cause, "id-LCS-Cause" },
407 { id_Location_Estimate, "id-Location-Estimate" },
408 { id_Location_Type, "id-Location-Type" },
409 { id_MultipleAPDUs, "id-MultipleAPDUs" },
410 { id_Payload_Type, "id-Payload-Type" },
411 { id_Positioning_Data, "id-Positioning-Data" },
412 { id_Return_Error_Request, "id-Return-Error-Request" },
413 { id_Return_Error_Cause, "id-Return-Error-Cause" },
414 { id_Source_Identity, "id-Source-Identity" },
415 { id_UE_Positioning_Capability, "id-UE-Positioning-Capability" },
416 { id_Velocity_Estimate, "id-Velocity-Estimate" },
422 dissect_lcsap_ProtocolIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
423 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
424 0U, 65535U, &ProtocolIE_ID, FALSE);
426 #line 53 "../../asn1/lcsap/lcsap.cnf"
428 proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str(ProtocolIE_ID, VALS(lcsap_ProtocolIE_ID_vals), "unknown (%d)"));
437 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_) {
438 offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
444 static const per_sequence_t ProtocolIE_Field_sequence[] = {
445 { &hf_lcsap_ieid , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_ProtocolIE_ID },
446 { &hf_lcsap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_Criticality },
447 { &hf_lcsap_ie_field_value, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_T_ie_field_value },
452 dissect_lcsap_ProtocolIE_Field(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
453 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
454 ett_lcsap_ProtocolIE_Field, ProtocolIE_Field_sequence);
460 static const per_sequence_t ProtocolIE_Container_sequence_of[1] = {
461 { &hf_lcsap_ProtocolIE_Container_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_ProtocolIE_Field },
465 dissect_lcsap_ProtocolIE_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
466 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
467 ett_lcsap_ProtocolIE_Container, ProtocolIE_Container_sequence_of,
468 0, maxProtocolIEs, FALSE);
476 dissect_lcsap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
477 offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue);
483 static const per_sequence_t ProtocolExtensionField_sequence[] = {
484 { &hf_lcsap_extid , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_ProtocolExtensionID },
485 { &hf_lcsap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_Criticality },
486 { &hf_lcsap_extensionValue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_T_extensionValue },
491 dissect_lcsap_ProtocolExtensionField(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
492 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
493 ett_lcsap_ProtocolExtensionField, ProtocolExtensionField_sequence);
499 static const per_sequence_t ProtocolExtensionContainer_sequence_of[1] = {
500 { &hf_lcsap_ProtocolExtensionContainer_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_ProtocolExtensionField },
504 dissect_lcsap_ProtocolExtensionContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
505 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
506 ett_lcsap_ProtocolExtensionContainer, ProtocolExtensionContainer_sequence_of,
507 1, maxProtocolExtensions, FALSE);
515 dissect_lcsap_APDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
516 #line 66 "../../asn1/lcsap/lcsap.cnf"
518 tvbuff_t *parameter_tvb=NULL;
520 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
521 NO_BOUND, NO_BOUND, FALSE, ¶meter_tvb);
525 switch (PayloadType) {
529 call_dissector(lpp_handle, parameter_tvb, actx->pinfo, tree);
535 call_dissector(lppa_handle, parameter_tvb, actx->pinfo, tree);
550 static const value_string lcsap_Accuracy_Fulfillment_Indicator_vals[] = {
551 { 0, "requested-accuracy-fulfilled" },
552 { 1, "requested-accuracy-not-fulfilled" },
558 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_) {
559 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
560 2, NULL, TRUE, 0, NULL);
568 dissect_lcsap_Altitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
569 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
570 1U, 65535U, NULL, FALSE);
576 static const value_string lcsap_Direction_Of_Altitude_vals[] = {
584 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_) {
585 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
586 2, NULL, FALSE, 0, NULL);
592 static const per_sequence_t Altitude_And_Direction_sequence[] = {
593 { &hf_lcsap_direction_Of_Altitude, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Direction_Of_Altitude },
594 { &hf_lcsap_altitude , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Altitude },
599 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_) {
600 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
601 ett_lcsap_Altitude_And_Direction, Altitude_And_Direction_sequence);
609 dissect_lcsap_Angle(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
610 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
611 0U, 179U, NULL, FALSE);
619 dissect_lcsap_Bearing(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
620 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
621 0U, 359U, NULL, FALSE);
629 dissect_lcsap_CellIdentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
630 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
631 28, 28, FALSE, NULL);
639 dissect_lcsap_Confidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
640 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
641 0U, 100U, NULL, FALSE);
649 dissect_lcsap_Correlation_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
650 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
659 dissect_lcsap_DegreesLatitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
660 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
661 0U, 8388607U, NULL, FALSE);
669 dissect_lcsap_DegreesLongitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
670 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
671 -8388608, 8388607U, NULL, FALSE);
680 dissect_lcsap_PLMN_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
681 #line 164 "../../asn1/lcsap/lcsap.cnf"
682 tvbuff_t *parameter_tvb=NULL;
683 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
684 3, 3, FALSE, ¶meter_tvb);
685 if(tvb_length(tvb)==0)
690 dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, tree, 0, FALSE);
697 static const per_sequence_t E_CGI_sequence[] = {
698 { &hf_lcsap_pLMNidentity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_PLMN_ID },
699 { &hf_lcsap_cell_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_CellIdentity },
700 { &hf_lcsap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lcsap_ProtocolExtensionContainer },
705 dissect_lcsap_E_CGI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
706 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
707 ett_lcsap_E_CGI, E_CGI_sequence);
713 static const value_string lcsap_LatitudeSign_vals[] = {
721 dissect_lcsap_LatitudeSign(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
722 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
723 2, NULL, FALSE, 0, NULL);
729 static const per_sequence_t Geographical_Coordinates_sequence[] = {
730 { &hf_lcsap_latitudeSign , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_LatitudeSign },
731 { &hf_lcsap_degreesLatitude, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_DegreesLatitude },
732 { &hf_lcsap_degreesLongitude, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_DegreesLongitude },
733 { &hf_lcsap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lcsap_ProtocolExtensionContainer },
738 dissect_lcsap_Geographical_Coordinates(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
739 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
740 ett_lcsap_Geographical_Coordinates, Geographical_Coordinates_sequence);
748 dissect_lcsap_Uncertainty_Code(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
749 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
750 0U, 127U, NULL, FALSE);
758 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_) {
759 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
760 0U, 89U, NULL, FALSE);
766 static const per_sequence_t Uncertainty_Ellipse_sequence[] = {
767 { &hf_lcsap_uncertainty_SemiMajor, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_Uncertainty_Code },
768 { &hf_lcsap_uncertainty_SemiMinor, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_Uncertainty_Code },
769 { &hf_lcsap_orientation_Major_Axis, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_Orientation_Major_Axis },
774 dissect_lcsap_Uncertainty_Ellipse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
775 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
776 ett_lcsap_Uncertainty_Ellipse, Uncertainty_Ellipse_sequence);
782 static const per_sequence_t Ellipsoid_Point_With_Uncertainty_Ellipse_sequence[] = {
783 { &hf_lcsap_geographical_Coordinates, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Geographical_Coordinates },
784 { &hf_lcsap_uncertainty_Ellipse, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Uncertainty_Ellipse },
785 { &hf_lcsap_confidence , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Confidence },
786 { &hf_lcsap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lcsap_ProtocolExtensionContainer },
791 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_) {
792 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
793 ett_lcsap_Ellipsoid_Point_With_Uncertainty_Ellipse, Ellipsoid_Point_With_Uncertainty_Ellipse_sequence);
799 static const per_sequence_t Ellipsoid_Point_With_Altitude_sequence[] = {
800 { &hf_lcsap_geographical_Coordinates, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Geographical_Coordinates },
801 { &hf_lcsap_altitude_And_Direction, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Altitude_And_Direction },
802 { &hf_lcsap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lcsap_ProtocolExtensionContainer },
807 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_) {
808 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
809 ett_lcsap_Ellipsoid_Point_With_Altitude, Ellipsoid_Point_With_Altitude_sequence);
817 dissect_lcsap_Uncertainty_Altitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
818 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
819 0U, 127U, NULL, FALSE);
825 static const per_sequence_t Ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid_sequence[] = {
826 { &hf_lcsap_geographical_Coordinates, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Geographical_Coordinates },
827 { &hf_lcsap_altitude_And_Direction, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Altitude_And_Direction },
828 { &hf_lcsap_uncertainty_Ellipse, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Uncertainty_Ellipse },
829 { &hf_lcsap_uncertainty_Altitude, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Uncertainty_Altitude },
830 { &hf_lcsap_confidence , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Confidence },
831 { &hf_lcsap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lcsap_ProtocolExtensionContainer },
836 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_) {
837 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
838 ett_lcsap_Ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid, Ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid_sequence);
846 dissect_lcsap_Inner_Radius(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
847 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
848 0U, 65535U, NULL, FALSE);
854 static const per_sequence_t Ellipsoid_Arc_sequence[] = {
855 { &hf_lcsap_geographical_Coordinates, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Geographical_Coordinates },
856 { &hf_lcsap_inner_Radius , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Inner_Radius },
857 { &hf_lcsap_uncertainty_Radius, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Uncertainty_Code },
858 { &hf_lcsap_offset_Angle , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Angle },
859 { &hf_lcsap_included_Angle, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Angle },
860 { &hf_lcsap_confidence , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Confidence },
861 { &hf_lcsap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lcsap_ProtocolExtensionContainer },
866 dissect_lcsap_Ellipsoid_Arc(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
867 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
868 ett_lcsap_Ellipsoid_Arc, Ellipsoid_Arc_sequence);
876 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_) {
877 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
878 20, 20, FALSE, NULL);
886 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_) {
887 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
888 28, 28, FALSE, NULL);
894 static const value_string lcsap_ENB_ID_vals[] = {
895 { 0, "macro-eNB-ID" },
896 { 1, "home-eNB-ID" },
900 static const per_choice_t ENB_ID_choice[] = {
901 { 0, &hf_lcsap_macro_eNB_ID , ASN1_EXTENSION_ROOT , dissect_lcsap_Macro_eNB_ID },
902 { 1, &hf_lcsap_home_eNB_ID , ASN1_EXTENSION_ROOT , dissect_lcsap_Home_eNB_ID },
907 dissect_lcsap_ENB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
908 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
909 ett_lcsap_ENB_ID, ENB_ID_choice,
918 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_) {
919 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
920 0U, 255U, NULL, FALSE);
926 static const per_sequence_t Point_sequence[] = {
927 { &hf_lcsap_geographical_Coordinates, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Geographical_Coordinates },
928 { &hf_lcsap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lcsap_ProtocolExtensionContainer },
933 dissect_lcsap_Point(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
934 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
935 ett_lcsap_Point, Point_sequence);
941 static const per_sequence_t Point_With_Uncertainty_sequence[] = {
942 { &hf_lcsap_geographical_Coordinates, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Geographical_Coordinates },
943 { &hf_lcsap_uncertainty_Code, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Uncertainty_Code },
944 { &hf_lcsap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lcsap_ProtocolExtensionContainer },
949 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_) {
950 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
951 ett_lcsap_Point_With_Uncertainty, Point_With_Uncertainty_sequence);
957 static const per_sequence_t Polygon_Point_sequence[] = {
958 { &hf_lcsap_geographical_Coordinates, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Geographical_Coordinates },
959 { &hf_lcsap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lcsap_ProtocolExtensionContainer },
964 dissect_lcsap_Polygon_Point(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
965 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
966 ett_lcsap_Polygon_Point, Polygon_Point_sequence);
972 static const per_sequence_t Polygon_sequence_of[1] = {
973 { &hf_lcsap_Polygon_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_Polygon_Point },
977 dissect_lcsap_Polygon(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
978 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
979 ett_lcsap_Polygon, Polygon_sequence_of,
980 1, max_No_Of_Points, FALSE);
986 static const value_string lcsap_Geographical_Area_vals[] = {
988 { 1, "point-With-Uncertainty" },
989 { 2, "ellipsoidPoint-With-Uncertainty-Ellipse" },
991 { 4, "ellipsoid-Point-With-Altitude" },
992 { 5, "ellipsoid-Point-With-Altitude-And-Uncertainty-Ellipsoid" },
993 { 6, "ellipsoid-Arc" },
997 static const per_choice_t Geographical_Area_choice[] = {
998 { 0, &hf_lcsap_point , ASN1_EXTENSION_ROOT , dissect_lcsap_Point },
999 { 1, &hf_lcsap_point_With_Uncertainty, ASN1_EXTENSION_ROOT , dissect_lcsap_Point_With_Uncertainty },
1000 { 2, &hf_lcsap_ellipsoidPoint_With_Uncertainty_Ellipse, ASN1_EXTENSION_ROOT , dissect_lcsap_Ellipsoid_Point_With_Uncertainty_Ellipse },
1001 { 3, &hf_lcsap_polygon , ASN1_EXTENSION_ROOT , dissect_lcsap_Polygon },
1002 { 4, &hf_lcsap_ellipsoid_Point_With_Altitude, ASN1_EXTENSION_ROOT , dissect_lcsap_Ellipsoid_Point_With_Altitude },
1003 { 5, &hf_lcsap_ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid, ASN1_EXTENSION_ROOT , dissect_lcsap_Ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid },
1004 { 6, &hf_lcsap_ellipsoid_Arc , ASN1_EXTENSION_ROOT , dissect_lcsap_Ellipsoid_Arc },
1005 { 0, NULL, 0, NULL }
1009 dissect_lcsap_Geographical_Area(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1010 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1011 ett_lcsap_Geographical_Area, Geographical_Area_choice,
1018 static const per_sequence_t Global_eNB_ID_sequence[] = {
1019 { &hf_lcsap_pLMN_ID , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_PLMN_ID },
1020 { &hf_lcsap_eNB_ID , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_ENB_ID },
1021 { NULL, 0, 0, NULL }
1025 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_) {
1026 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1027 ett_lcsap_Global_eNB_ID, Global_eNB_ID_sequence);
1035 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_) {
1036 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1043 static const per_sequence_t GNSS_Positioning_Data_Set_sequence_of[1] = {
1044 { &hf_lcsap_GNSS_Positioning_Data_Set_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_GNSS_Positioning_Method_And_Usage },
1048 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_) {
1049 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1050 ett_lcsap_GNSS_Positioning_Data_Set, GNSS_Positioning_Data_Set_sequence_of,
1051 1, max_GNSS_Set, FALSE);
1059 dissect_lcsap_Horizontal_Accuracy(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1060 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1061 0U, 127U, NULL, FALSE);
1069 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_) {
1070 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1071 0U, 2047U, NULL, FALSE);
1077 static const per_sequence_t Horizontal_Speed_And_Bearing_sequence[] = {
1078 { &hf_lcsap_bearing , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_Bearing },
1079 { &hf_lcsap_horizontal_Speed, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_INTEGER_0_2047 },
1080 { NULL, 0, 0, NULL }
1084 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_) {
1085 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1086 ett_lcsap_Horizontal_Speed_And_Bearing, Horizontal_Speed_And_Bearing_sequence);
1092 static const per_sequence_t Horizontal_Velocity_sequence[] = {
1093 { &hf_lcsap_horizontal_Speed_And_Bearing, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Horizontal_Speed_And_Bearing },
1094 { &hf_lcsap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lcsap_ProtocolExtensionContainer },
1095 { NULL, 0, 0, NULL }
1099 dissect_lcsap_Horizontal_Velocity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1100 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1101 ett_lcsap_Horizontal_Velocity, Horizontal_Velocity_sequence);
1109 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_) {
1110 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1111 0U, 255U, NULL, FALSE);
1117 static const value_string lcsap_Vertical_Speed_Direction_vals[] = {
1125 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_) {
1126 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1127 2, NULL, FALSE, 0, NULL);
1133 static const per_sequence_t Vertical_Velocity_sequence[] = {
1134 { &hf_lcsap_vertical_Speed, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_INTEGER_0_255 },
1135 { &hf_lcsap_vertical_Speed_Direction, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_Vertical_Speed_Direction },
1136 { NULL, 0, 0, NULL }
1140 dissect_lcsap_Vertical_Velocity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1141 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1142 ett_lcsap_Vertical_Velocity, Vertical_Velocity_sequence);
1148 static const per_sequence_t Horizontal_With_Vertical_Velocity_sequence[] = {
1149 { &hf_lcsap_horizontal_Speed_And_Bearing, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Horizontal_Speed_And_Bearing },
1150 { &hf_lcsap_vertical_Velocity, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Vertical_Velocity },
1151 { &hf_lcsap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lcsap_ProtocolExtensionContainer },
1152 { NULL, 0, 0, NULL }
1156 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_) {
1157 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1158 ett_lcsap_Horizontal_With_Vertical_Velocity, Horizontal_With_Vertical_Velocity_sequence);
1164 static const per_sequence_t Horizontal_Velocity_With_Uncertainty_sequence[] = {
1165 { &hf_lcsap_horizontal_Speed_And_Bearing, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Horizontal_Speed_And_Bearing },
1166 { &hf_lcsap_uncertainty_Speed, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_INTEGER_0_255 },
1167 { &hf_lcsap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lcsap_ProtocolExtensionContainer },
1168 { NULL, 0, 0, NULL }
1172 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_) {
1173 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1174 ett_lcsap_Horizontal_Velocity_With_Uncertainty, Horizontal_Velocity_With_Uncertainty_sequence);
1180 static const per_sequence_t Horizontal_With_Vertical_Velocity_And_Uncertainty_sequence[] = {
1181 { &hf_lcsap_horizontal_Speed_And_Bearing, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Horizontal_Speed_And_Bearing },
1182 { &hf_lcsap_vertical_Velocity, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Vertical_Velocity },
1183 { &hf_lcsap_horizontal_Uncertainty_Speed, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_INTEGER_0_255 },
1184 { &hf_lcsap_vertical_Uncertainty_Speed, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_INTEGER_0_255 },
1185 { &hf_lcsap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lcsap_ProtocolExtensionContainer },
1186 { NULL, 0, 0, NULL }
1190 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_) {
1191 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1192 ett_lcsap_Horizontal_With_Vertical_Velocity_And_Uncertainty, Horizontal_With_Vertical_Velocity_And_Uncertainty_sequence);
1200 dissect_lcsap_IMSI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1201 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1210 dissect_lcsap_IMEI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1211 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1218 static const value_string lcsap_Include_Velocity_vals[] = {
1220 { 1, "not-Requested" },
1226 dissect_lcsap_Include_Velocity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1227 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1228 2, NULL, TRUE, 0, NULL);
1234 static const value_string lcsap_Location_Type_vals[] = {
1235 { 0, "geographic-Information" },
1236 { 1, "assistance-Information" },
1242 dissect_lcsap_Location_Type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1243 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1244 2, NULL, TRUE, 0, NULL);
1250 static const value_string lcsap_Radio_Network_Layer_Cause_vals[] = {
1251 { 0, "unspecified" },
1257 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_) {
1258 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1259 1, NULL, TRUE, 0, NULL);
1265 static const value_string lcsap_Transport_Layer_Cause_vals[] = {
1266 { 0, "tranport-Resource-Unavailable" },
1267 { 1, "unspecified" },
1273 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_) {
1274 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1275 2, NULL, TRUE, 0, NULL);
1281 static const value_string lcsap_Protocol_Cause_vals[] = {
1282 { 0, "transfer-Syntax-Error" },
1283 { 1, "abstract-Syntax-Error-Reject" },
1284 { 2, "abstract-Syntax-Error-Ignore-And-Notify" },
1285 { 3, "message-Not-Compatible-With-Receiver-State" },
1286 { 4, "semantic-Error" },
1287 { 5, "unspecified" },
1288 { 6, "abstract-Syntax-Error" },
1294 dissect_lcsap_Protocol_Cause(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1295 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1296 7, NULL, TRUE, 0, NULL);
1302 static const value_string lcsap_Misc_Cause_vals[] = {
1303 { 0, "processing-Overload" },
1304 { 1, "hardware-Failure" },
1305 { 2, "o-And-M-Intervention" },
1306 { 3, "unspecified" },
1312 dissect_lcsap_Misc_Cause(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1313 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1314 4, NULL, TRUE, 0, NULL);
1320 static const value_string lcsap_LCS_Cause_vals[] = {
1321 { 0, "radio-Network-Layer" },
1322 { 1, "transport-Layer" },
1328 static const per_choice_t LCS_Cause_choice[] = {
1329 { 0, &hf_lcsap_radio_Network_Layer, ASN1_NO_EXTENSIONS , dissect_lcsap_Radio_Network_Layer_Cause },
1330 { 1, &hf_lcsap_transport_Layer, ASN1_NO_EXTENSIONS , dissect_lcsap_Transport_Layer_Cause },
1331 { 2, &hf_lcsap_protocol , ASN1_NO_EXTENSIONS , dissect_lcsap_Protocol_Cause },
1332 { 3, &hf_lcsap_misc , ASN1_NO_EXTENSIONS , dissect_lcsap_Misc_Cause },
1333 { 0, NULL, 0, NULL }
1337 dissect_lcsap_LCS_Cause(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1338 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1339 ett_lcsap_LCS_Cause, LCS_Cause_choice,
1346 static const value_string lcsap_LCS_Client_Type_vals[] = {
1347 { 0, "emergency-Services" },
1348 { 1, "value-Added-Services" },
1349 { 2, "pLMN-Operator-Services" },
1350 { 3, "lawful-Intercept-Services" },
1351 { 4, "pLMN-Operator-broadcast-Services" },
1352 { 5, "pLMN-Operator-OM" },
1353 { 6, "pLMN-Operator-Anonymous-Statistics" },
1354 { 7, "pLMN-Operator-Target-MS-Service-Support" },
1360 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_) {
1361 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1362 8, NULL, TRUE, 0, NULL);
1370 dissect_lcsap_LCS_Priority(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1371 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1378 static const value_string lcsap_Vertical_Requested_vals[] = {
1379 { 0, "vertical-coordinate-Is-Not-Requested" },
1380 { 1, "vertical-coordinate-Is-Requested" },
1386 dissect_lcsap_Vertical_Requested(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1387 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1388 2, NULL, FALSE, 0, NULL);
1396 dissect_lcsap_Vertical_Accuracy(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1397 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1398 0U, 127U, NULL, FALSE);
1404 static const value_string lcsap_Response_Time_vals[] = {
1406 { 1, "delay-Tolerant" },
1412 dissect_lcsap_Response_Time(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1413 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1414 2, NULL, TRUE, 0, NULL);
1420 static const per_sequence_t LCS_QoS_sequence[] = {
1421 { &hf_lcsap_horizontal_Accuracy, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lcsap_Horizontal_Accuracy },
1422 { &hf_lcsap_vertical_Requested, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lcsap_Vertical_Requested },
1423 { &hf_lcsap_vertical_Accuracy, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lcsap_Vertical_Accuracy },
1424 { &hf_lcsap_response_Time , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lcsap_Response_Time },
1425 { NULL, 0, 0, NULL }
1429 dissect_lcsap_LCS_QoS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1430 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1431 ett_lcsap_LCS_QoS, LCS_QoS_sequence);
1437 static const per_sequence_t MultipleAPDUs_sequence_of[1] = {
1438 { &hf_lcsap_MultipleAPDUs_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_APDU },
1442 dissect_lcsap_MultipleAPDUs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1443 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1444 ett_lcsap_MultipleAPDUs, MultipleAPDUs_sequence_of,
1451 static const value_string lcsap_Network_Element_vals[] = {
1452 { 0, "global-eNB-ID" },
1457 static const per_choice_t Network_Element_choice[] = {
1458 { 0, &hf_lcsap_global_eNB_ID , ASN1_NO_EXTENSIONS , dissect_lcsap_Global_eNB_ID },
1459 { 1, &hf_lcsap_e_SMLC_ID , ASN1_NO_EXTENSIONS , dissect_lcsap_E_SMLC_ID },
1460 { 0, NULL, 0, NULL }
1464 dissect_lcsap_Network_Element(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1465 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1466 ett_lcsap_Network_Element, Network_Element_choice,
1473 static const value_string lcsap_Payload_Type_vals[] = {
1481 dissect_lcsap_Payload_Type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1482 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1483 2, &PayloadType, TRUE, 0, NULL);
1491 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_) {
1492 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1499 static const per_sequence_t Positioning_Data_Set_sequence_of[1] = {
1500 { &hf_lcsap_Positioning_Data_Set_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_Positioning_Method_And_Usage },
1504 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_) {
1505 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1506 ett_lcsap_Positioning_Data_Set, Positioning_Data_Set_sequence_of,
1513 static const per_sequence_t Positioning_Data_sequence[] = {
1514 { &hf_lcsap_positioning_Data_Set, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lcsap_Positioning_Data_Set },
1515 { &hf_lcsap_gNSS_Positioning_Data_Set, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lcsap_GNSS_Positioning_Data_Set },
1516 { &hf_lcsap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lcsap_ProtocolExtensionContainer },
1517 { NULL, 0, 0, NULL }
1521 dissect_lcsap_Positioning_Data(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1522 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1523 ett_lcsap_Positioning_Data, Positioning_Data_sequence);
1529 static const value_string lcsap_Return_Error_Type_vals[] = {
1537 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_) {
1538 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1539 2, NULL, FALSE, 0, NULL);
1545 static const value_string lcsap_Return_Error_Cause_vals[] = {
1546 { 0, "system-Failure" },
1547 { 1, "protocol-Error" },
1548 { 2, "destination-Unknown" },
1549 { 3, "destination-Unreachable" },
1550 { 4, "congestion" },
1556 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_) {
1557 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1558 5, NULL, TRUE, 0, NULL);
1566 dissect_lcsap_BOOLEAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1567 offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
1573 static const per_sequence_t UE_Positioning_Capability_sequence[] = {
1574 { &hf_lcsap_lPP , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_BOOLEAN },
1575 { NULL, 0, 0, NULL }
1579 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_) {
1580 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1581 ett_lcsap_UE_Positioning_Capability, UE_Positioning_Capability_sequence);
1587 static const value_string lcsap_Velocity_Estimate_vals[] = {
1588 { 0, "horizontal-Velocity" },
1589 { 1, "horizontal-With-Vertical-Velocity" },
1590 { 2, "horizontal-Velocity-With-Uncertainty" },
1591 { 3, "horizontal-With-Vertical-Velocity-And-Uncertainty" },
1595 static const per_choice_t Velocity_Estimate_choice[] = {
1596 { 0, &hf_lcsap_horizontal_Velocity, ASN1_EXTENSION_ROOT , dissect_lcsap_Horizontal_Velocity },
1597 { 1, &hf_lcsap_horizontal_With_Vertical_Velocity, ASN1_EXTENSION_ROOT , dissect_lcsap_Horizontal_With_Vertical_Velocity },
1598 { 2, &hf_lcsap_horizontal_Velocity_With_Uncertainty, ASN1_EXTENSION_ROOT , dissect_lcsap_Horizontal_Velocity_With_Uncertainty },
1599 { 3, &hf_lcsap_horizontal_With_Vertical_Velocity_And_Uncertainty, ASN1_EXTENSION_ROOT , dissect_lcsap_Horizontal_With_Vertical_Velocity_And_Uncertainty },
1600 { 0, NULL, 0, NULL }
1604 dissect_lcsap_Velocity_Estimate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1605 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1606 ett_lcsap_Velocity_Estimate, Velocity_Estimate_choice,
1613 static const per_sequence_t Location_Request_sequence[] = {
1614 { &hf_lcsap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_ProtocolIE_Container },
1615 { &hf_lcsap_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lcsap_ProtocolExtensionContainer },
1616 { NULL, 0, 0, NULL }
1620 dissect_lcsap_Location_Request(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1621 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1622 ett_lcsap_Location_Request, Location_Request_sequence);
1628 static const per_sequence_t Location_Response_sequence[] = {
1629 { &hf_lcsap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_ProtocolIE_Container },
1630 { &hf_lcsap_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lcsap_ProtocolExtensionContainer },
1631 { NULL, 0, 0, NULL }
1635 dissect_lcsap_Location_Response(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1636 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1637 ett_lcsap_Location_Response, Location_Response_sequence);
1643 static const per_sequence_t Location_Abort_Request_sequence[] = {
1644 { &hf_lcsap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_ProtocolIE_Container },
1645 { &hf_lcsap_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lcsap_ProtocolExtensionContainer },
1646 { NULL, 0, 0, NULL }
1650 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_) {
1651 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1652 ett_lcsap_Location_Abort_Request, Location_Abort_Request_sequence);
1658 static const per_sequence_t Connection_Oriented_Information_sequence[] = {
1659 { &hf_lcsap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_ProtocolIE_Container },
1660 { &hf_lcsap_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lcsap_ProtocolExtensionContainer },
1661 { NULL, 0, 0, NULL }
1665 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_) {
1666 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1667 ett_lcsap_Connection_Oriented_Information, Connection_Oriented_Information_sequence);
1673 static const per_sequence_t Connectionless_Information_sequence[] = {
1674 { &hf_lcsap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_ProtocolIE_Container },
1675 { &hf_lcsap_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lcsap_ProtocolExtensionContainer },
1676 { NULL, 0, 0, NULL }
1680 dissect_lcsap_Connectionless_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1681 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1682 ett_lcsap_Connectionless_Information, Connectionless_Information_sequence);
1688 static const per_sequence_t Reset_Request_sequence[] = {
1689 { &hf_lcsap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_ProtocolIE_Container },
1690 { &hf_lcsap_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lcsap_ProtocolExtensionContainer },
1691 { NULL, 0, 0, NULL }
1695 dissect_lcsap_Reset_Request(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1696 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1697 ett_lcsap_Reset_Request, Reset_Request_sequence);
1703 static const per_sequence_t Reset_Acknowledge_sequence[] = {
1704 { &hf_lcsap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_ProtocolIE_Container },
1705 { &hf_lcsap_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lcsap_ProtocolExtensionContainer },
1706 { NULL, 0, 0, NULL }
1710 dissect_lcsap_Reset_Acknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1711 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1712 ett_lcsap_Reset_Acknowledge, Reset_Acknowledge_sequence);
1720 dissect_lcsap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1721 offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
1727 static const per_sequence_t InitiatingMessage_sequence[] = {
1728 { &hf_lcsap_procedureCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_ProcedureCode },
1729 { &hf_lcsap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_Criticality },
1730 { &hf_lcsap_initiatingMessagevalue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_InitiatingMessage_value },
1731 { NULL, 0, 0, NULL }
1735 dissect_lcsap_InitiatingMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1736 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1737 ett_lcsap_InitiatingMessage, InitiatingMessage_sequence);
1745 dissect_lcsap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1746 offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
1752 static const per_sequence_t SuccessfulOutcome_sequence[] = {
1753 { &hf_lcsap_procedureCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_ProcedureCode },
1754 { &hf_lcsap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_Criticality },
1755 { &hf_lcsap_successfulOutcome_value, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_SuccessfulOutcome_value },
1756 { NULL, 0, 0, NULL }
1760 dissect_lcsap_SuccessfulOutcome(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1761 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1762 ett_lcsap_SuccessfulOutcome, SuccessfulOutcome_sequence);
1770 dissect_lcsap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1771 offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue);
1777 static const per_sequence_t UnsuccessfulOutcome_sequence[] = {
1778 { &hf_lcsap_procedureCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_ProcedureCode },
1779 { &hf_lcsap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_Criticality },
1780 { &hf_lcsap_unsuccessfulOutcome_value, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_UnsuccessfulOutcome_value },
1781 { NULL, 0, 0, NULL }
1785 dissect_lcsap_UnsuccessfulOutcome(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1786 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1787 ett_lcsap_UnsuccessfulOutcome, UnsuccessfulOutcome_sequence);
1793 static const value_string lcsap_LCS_AP_PDU_vals[] = {
1794 { 0, "initiatingMessage" },
1795 { 1, "successfulOutcome" },
1796 { 2, "unsuccessfulOutcome" },
1800 static const per_choice_t LCS_AP_PDU_choice[] = {
1801 { 0, &hf_lcsap_initiatingMessage, ASN1_EXTENSION_ROOT , dissect_lcsap_InitiatingMessage },
1802 { 1, &hf_lcsap_successfulOutcome, ASN1_EXTENSION_ROOT , dissect_lcsap_SuccessfulOutcome },
1803 { 2, &hf_lcsap_unsuccessfulOutcome, ASN1_EXTENSION_ROOT , dissect_lcsap_UnsuccessfulOutcome },
1804 { 0, NULL, 0, NULL }
1808 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_) {
1809 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1810 ett_lcsap_LCS_AP_PDU, LCS_AP_PDU_choice,
1818 static int dissect_APDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1820 asn1_ctx_t asn1_ctx;
1821 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1822 offset = dissect_lcsap_APDU(tvb, offset, &asn1_ctx, tree, hf_lcsap_APDU_PDU);
1823 offset += 7; offset >>= 3;
1826 static int dissect_Accuracy_Fulfillment_Indicator_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1828 asn1_ctx_t asn1_ctx;
1829 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1830 offset = dissect_lcsap_Accuracy_Fulfillment_Indicator(tvb, offset, &asn1_ctx, tree, hf_lcsap_Accuracy_Fulfillment_Indicator_PDU);
1831 offset += 7; offset >>= 3;
1834 int dissect_lcsap_Correlation_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1836 asn1_ctx_t asn1_ctx;
1837 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1838 offset = dissect_lcsap_Correlation_ID(tvb, offset, &asn1_ctx, tree, hf_lcsap_lcsap_Correlation_ID_PDU);
1839 offset += 7; offset >>= 3;
1842 static int dissect_E_CGI_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1844 asn1_ctx_t asn1_ctx;
1845 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1846 offset = dissect_lcsap_E_CGI(tvb, offset, &asn1_ctx, tree, hf_lcsap_E_CGI_PDU);
1847 offset += 7; offset >>= 3;
1850 static int dissect_Geographical_Area_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1852 asn1_ctx_t asn1_ctx;
1853 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1854 offset = dissect_lcsap_Geographical_Area(tvb, offset, &asn1_ctx, tree, hf_lcsap_Geographical_Area_PDU);
1855 offset += 7; offset >>= 3;
1858 static int dissect_IMSI_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1860 asn1_ctx_t asn1_ctx;
1861 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1862 offset = dissect_lcsap_IMSI(tvb, offset, &asn1_ctx, tree, hf_lcsap_IMSI_PDU);
1863 offset += 7; offset >>= 3;
1866 static int dissect_IMEI_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1868 asn1_ctx_t asn1_ctx;
1869 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1870 offset = dissect_lcsap_IMEI(tvb, offset, &asn1_ctx, tree, hf_lcsap_IMEI_PDU);
1871 offset += 7; offset >>= 3;
1874 static int dissect_Include_Velocity_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1876 asn1_ctx_t asn1_ctx;
1877 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1878 offset = dissect_lcsap_Include_Velocity(tvb, offset, &asn1_ctx, tree, hf_lcsap_Include_Velocity_PDU);
1879 offset += 7; offset >>= 3;
1882 static int dissect_Location_Type_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1884 asn1_ctx_t asn1_ctx;
1885 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1886 offset = dissect_lcsap_Location_Type(tvb, offset, &asn1_ctx, tree, hf_lcsap_Location_Type_PDU);
1887 offset += 7; offset >>= 3;
1890 static int dissect_LCS_Cause_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1892 asn1_ctx_t asn1_ctx;
1893 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1894 offset = dissect_lcsap_LCS_Cause(tvb, offset, &asn1_ctx, tree, hf_lcsap_LCS_Cause_PDU);
1895 offset += 7; offset >>= 3;
1898 static int dissect_LCS_Client_Type_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1900 asn1_ctx_t asn1_ctx;
1901 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1902 offset = dissect_lcsap_LCS_Client_Type(tvb, offset, &asn1_ctx, tree, hf_lcsap_LCS_Client_Type_PDU);
1903 offset += 7; offset >>= 3;
1906 static int dissect_LCS_Priority_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1908 asn1_ctx_t asn1_ctx;
1909 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1910 offset = dissect_lcsap_LCS_Priority(tvb, offset, &asn1_ctx, tree, hf_lcsap_LCS_Priority_PDU);
1911 offset += 7; offset >>= 3;
1914 static int dissect_LCS_QoS_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1916 asn1_ctx_t asn1_ctx;
1917 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1918 offset = dissect_lcsap_LCS_QoS(tvb, offset, &asn1_ctx, tree, hf_lcsap_LCS_QoS_PDU);
1919 offset += 7; offset >>= 3;
1922 static int dissect_MultipleAPDUs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1924 asn1_ctx_t asn1_ctx;
1925 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1926 offset = dissect_lcsap_MultipleAPDUs(tvb, offset, &asn1_ctx, tree, hf_lcsap_MultipleAPDUs_PDU);
1927 offset += 7; offset >>= 3;
1930 static int dissect_Network_Element_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1932 asn1_ctx_t asn1_ctx;
1933 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1934 offset = dissect_lcsap_Network_Element(tvb, offset, &asn1_ctx, tree, hf_lcsap_Network_Element_PDU);
1935 offset += 7; offset >>= 3;
1938 static int dissect_Payload_Type_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1940 asn1_ctx_t asn1_ctx;
1941 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1942 offset = dissect_lcsap_Payload_Type(tvb, offset, &asn1_ctx, tree, hf_lcsap_Payload_Type_PDU);
1943 offset += 7; offset >>= 3;
1946 static int dissect_Positioning_Data_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1948 asn1_ctx_t asn1_ctx;
1949 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1950 offset = dissect_lcsap_Positioning_Data(tvb, offset, &asn1_ctx, tree, hf_lcsap_Positioning_Data_PDU);
1951 offset += 7; offset >>= 3;
1954 static int dissect_Return_Error_Type_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1956 asn1_ctx_t asn1_ctx;
1957 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1958 offset = dissect_lcsap_Return_Error_Type(tvb, offset, &asn1_ctx, tree, hf_lcsap_Return_Error_Type_PDU);
1959 offset += 7; offset >>= 3;
1962 static int dissect_Return_Error_Cause_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1964 asn1_ctx_t asn1_ctx;
1965 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1966 offset = dissect_lcsap_Return_Error_Cause(tvb, offset, &asn1_ctx, tree, hf_lcsap_Return_Error_Cause_PDU);
1967 offset += 7; offset >>= 3;
1970 static int dissect_UE_Positioning_Capability_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1972 asn1_ctx_t asn1_ctx;
1973 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1974 offset = dissect_lcsap_UE_Positioning_Capability(tvb, offset, &asn1_ctx, tree, hf_lcsap_UE_Positioning_Capability_PDU);
1975 offset += 7; offset >>= 3;
1978 static int dissect_Velocity_Estimate_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1980 asn1_ctx_t asn1_ctx;
1981 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1982 offset = dissect_lcsap_Velocity_Estimate(tvb, offset, &asn1_ctx, tree, hf_lcsap_Velocity_Estimate_PDU);
1983 offset += 7; offset >>= 3;
1986 static int dissect_Location_Request_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1988 asn1_ctx_t asn1_ctx;
1989 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1990 offset = dissect_lcsap_Location_Request(tvb, offset, &asn1_ctx, tree, hf_lcsap_Location_Request_PDU);
1991 offset += 7; offset >>= 3;
1994 static int dissect_Location_Response_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1996 asn1_ctx_t asn1_ctx;
1997 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1998 offset = dissect_lcsap_Location_Response(tvb, offset, &asn1_ctx, tree, hf_lcsap_Location_Response_PDU);
1999 offset += 7; offset >>= 3;
2002 static int dissect_Location_Abort_Request_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2004 asn1_ctx_t asn1_ctx;
2005 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2006 offset = dissect_lcsap_Location_Abort_Request(tvb, offset, &asn1_ctx, tree, hf_lcsap_Location_Abort_Request_PDU);
2007 offset += 7; offset >>= 3;
2010 static int dissect_Connection_Oriented_Information_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2012 asn1_ctx_t asn1_ctx;
2013 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2014 offset = dissect_lcsap_Connection_Oriented_Information(tvb, offset, &asn1_ctx, tree, hf_lcsap_Connection_Oriented_Information_PDU);
2015 offset += 7; offset >>= 3;
2018 static int dissect_Connectionless_Information_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2020 asn1_ctx_t asn1_ctx;
2021 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2022 offset = dissect_lcsap_Connectionless_Information(tvb, offset, &asn1_ctx, tree, hf_lcsap_Connectionless_Information_PDU);
2023 offset += 7; offset >>= 3;
2026 static int dissect_Reset_Request_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2028 asn1_ctx_t asn1_ctx;
2029 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2030 offset = dissect_lcsap_Reset_Request(tvb, offset, &asn1_ctx, tree, hf_lcsap_Reset_Request_PDU);
2031 offset += 7; offset >>= 3;
2034 static int dissect_Reset_Acknowledge_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2036 asn1_ctx_t asn1_ctx;
2037 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2038 offset = dissect_lcsap_Reset_Acknowledge(tvb, offset, &asn1_ctx, tree, hf_lcsap_Reset_Acknowledge_PDU);
2039 offset += 7; offset >>= 3;
2042 static int dissect_LCS_AP_PDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2044 asn1_ctx_t asn1_ctx;
2045 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2046 offset = dissect_lcsap_LCS_AP_PDU(tvb, offset, &asn1_ctx, tree, hf_lcsap_LCS_AP_PDU_PDU);
2047 offset += 7; offset >>= 3;
2052 /*--- End of included file: packet-lcsap-fn.c ---*/
2053 #line 100 "../../asn1/lcsap/packet-lcsap-template.c"
2055 static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
2057 return (dissector_try_uint(lcsap_ies_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
2061 static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
2063 return (dissector_try_uint(lcsap_extension_dissector_table, ProtocolExtensionID, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
2066 static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
2068 return (dissector_try_uint(lcsap_proc_imsg_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
2071 static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
2073 return (dissector_try_uint(lcsap_proc_sout_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
2076 static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
2078 return (dissector_try_uint(lcsap_proc_uout_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
2083 dissect_lcsap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
2085 proto_item *lcsap_item = NULL;
2086 proto_tree *lcsap_tree = NULL;
2088 /* make entry in the Protocol column on summary display */
2089 if (check_col(pinfo->cinfo, COL_PROTOCOL))
2090 col_set_str(pinfo->cinfo, COL_PROTOCOL, "LCSAP");
2092 /* create the lcsap protocol tree */
2093 lcsap_item = proto_tree_add_item(tree, proto_lcsap, tvb, 0, -1, ENC_NA);
2094 lcsap_tree = proto_item_add_subtree(lcsap_item, ett_lcsap);
2096 dissect_LCS_AP_PDU_PDU(tvb, pinfo, lcsap_tree);
2099 /*--- proto_reg_handoff_lcsap ---------------------------------------*/
2101 proto_reg_handoff_lcsap(void)
2103 static gboolean Initialized=FALSE;
2104 static dissector_handle_t lcsap_handle;
2105 static guint SctpPort;
2108 lcsap_handle = find_dissector("lcsap");
2109 lpp_handle = find_dissector("lpp");
2110 lppa_handle = find_dissector("lppa");
2111 dissector_add_handle("sctp.port", lcsap_handle); /* for "decode-as" */
2112 dissector_add_uint("sctp.ppi", LCS_AP_PAYLOAD_PROTOCOL_ID, lcsap_handle);
2115 /*--- Included file: packet-lcsap-dis-tab.c ---*/
2116 #line 1 "../../asn1/lcsap/packet-lcsap-dis-tab.c"
2117 dissector_add_uint("lcsap.ies", id_Accuracy_Fulfillment_Indicator, new_create_dissector_handle(dissect_Accuracy_Fulfillment_Indicator_PDU, proto_lcsap));
2118 dissector_add_uint("lcsap.ies", id_APDU, new_create_dissector_handle(dissect_APDU_PDU, proto_lcsap));
2119 dissector_add_uint("lcsap.ies", id_Correlation_ID, new_create_dissector_handle(dissect_lcsap_Correlation_ID_PDU, proto_lcsap));
2120 dissector_add_uint("lcsap.ies", id_Destination_ID, new_create_dissector_handle(dissect_Network_Element_PDU, proto_lcsap));
2121 dissector_add_uint("lcsap.ies", id_E_UTRAN_Cell_Identifier, new_create_dissector_handle(dissect_E_CGI_PDU, proto_lcsap));
2122 dissector_add_uint("lcsap.ies", id_Include_Velocity, new_create_dissector_handle(dissect_Include_Velocity_PDU, proto_lcsap));
2123 dissector_add_uint("lcsap.ies", id_IMEI, new_create_dissector_handle(dissect_IMEI_PDU, proto_lcsap));
2124 dissector_add_uint("lcsap.ies", id_IMSI, new_create_dissector_handle(dissect_IMSI_PDU, proto_lcsap));
2125 dissector_add_uint("lcsap.ies", id_LCS_Client_Type, new_create_dissector_handle(dissect_LCS_Client_Type_PDU, proto_lcsap));
2126 dissector_add_uint("lcsap.ies", id_LCS_Priority, new_create_dissector_handle(dissect_LCS_Priority_PDU, proto_lcsap));
2127 dissector_add_uint("lcsap.ies", id_LCS_QOS, new_create_dissector_handle(dissect_LCS_QoS_PDU, proto_lcsap));
2128 dissector_add_uint("lcsap.ies", id_LCS_Cause, new_create_dissector_handle(dissect_LCS_Cause_PDU, proto_lcsap));
2129 dissector_add_uint("lcsap.ies", id_Location_Estimate, new_create_dissector_handle(dissect_Geographical_Area_PDU, proto_lcsap));
2130 dissector_add_uint("lcsap.ies", id_Location_Type, new_create_dissector_handle(dissect_Location_Type_PDU, proto_lcsap));
2131 dissector_add_uint("lcsap.ies", id_MultipleAPDUs, new_create_dissector_handle(dissect_MultipleAPDUs_PDU, proto_lcsap));
2132 dissector_add_uint("lcsap.ies", id_Payload_Type, new_create_dissector_handle(dissect_Payload_Type_PDU, proto_lcsap));
2133 dissector_add_uint("lcsap.ies", id_Positioning_Data, new_create_dissector_handle(dissect_Positioning_Data_PDU, proto_lcsap));
2134 dissector_add_uint("lcsap.ies", id_Return_Error_Request, new_create_dissector_handle(dissect_Return_Error_Type_PDU, proto_lcsap));
2135 dissector_add_uint("lcsap.ies", id_Return_Error_Cause, new_create_dissector_handle(dissect_Return_Error_Cause_PDU, proto_lcsap));
2136 dissector_add_uint("lcsap.ies", id_Source_Identity, new_create_dissector_handle(dissect_Network_Element_PDU, proto_lcsap));
2137 dissector_add_uint("lcsap.ies", id_UE_Positioning_Capability, new_create_dissector_handle(dissect_UE_Positioning_Capability_PDU, proto_lcsap));
2138 dissector_add_uint("lcsap.ies", id_Velocity_Estimate, new_create_dissector_handle(dissect_Velocity_Estimate_PDU, proto_lcsap));
2139 dissector_add_uint("lcsap.proc.imsg", id_Location_Service_Request, new_create_dissector_handle(dissect_Location_Request_PDU, proto_lcsap));
2140 dissector_add_uint("lcsap.proc.sout", id_Location_Service_Request, new_create_dissector_handle(dissect_Location_Response_PDU, proto_lcsap));
2141 dissector_add_uint("lcsap.proc.uout", id_Location_Service_Request, new_create_dissector_handle(dissect_Location_Response_PDU, proto_lcsap));
2142 dissector_add_uint("lcsap.proc.imsg", id_Connection_Oriented_Information_Transfer, new_create_dissector_handle(dissect_Connection_Oriented_Information_PDU, proto_lcsap));
2143 dissector_add_uint("lcsap.proc.imsg", id_Connectionless_Information_Transfer, new_create_dissector_handle(dissect_Connectionless_Information_PDU, proto_lcsap));
2144 dissector_add_uint("lcsap.proc.uout", id_Connectionless_Information_Transfer, new_create_dissector_handle(dissect_Connectionless_Information_PDU, proto_lcsap));
2145 dissector_add_uint("lcsap.proc.imsg", id_Location_Abort, new_create_dissector_handle(dissect_Location_Abort_Request_PDU, proto_lcsap));
2146 dissector_add_uint("lcsap.proc.sout", id_Location_Abort, new_create_dissector_handle(dissect_Location_Response_PDU, proto_lcsap));
2147 dissector_add_uint("lcsap.proc.imsg", id_Reset, new_create_dissector_handle(dissect_Reset_Request_PDU, proto_lcsap));
2148 dissector_add_uint("lcsap.proc.sout", id_Reset, new_create_dissector_handle(dissect_Reset_Acknowledge_PDU, proto_lcsap));
2151 /*--- End of included file: packet-lcsap-dis-tab.c ---*/
2152 #line 161 "../../asn1/lcsap/packet-lcsap-template.c"
2154 if (SctpPort != 0) {
2155 dissector_delete_uint("sctp.port", SctpPort, lcsap_handle);
2159 SctpPort=gbl_lcsapSctpPort;
2160 if (SctpPort != 0) {
2161 dissector_add_uint("sctp.port", SctpPort, lcsap_handle);
2165 /*--- proto_register_lcsap -------------------------------------------*/
2166 void proto_register_lcsap(void) {
2168 /* List of fields */
2169 static hf_register_info hf[] = {
2171 /*--- Included file: packet-lcsap-hfarr.c ---*/
2172 #line 1 "../../asn1/lcsap/packet-lcsap-hfarr.c"
2173 { &hf_lcsap_APDU_PDU,
2174 { "APDU", "lcsap.APDU",
2175 FT_BYTES, BASE_NONE, NULL, 0,
2177 { &hf_lcsap_Accuracy_Fulfillment_Indicator_PDU,
2178 { "Accuracy-Fulfillment-Indicator", "lcsap.Accuracy_Fulfillment_Indicator",
2179 FT_UINT32, BASE_DEC, VALS(lcsap_Accuracy_Fulfillment_Indicator_vals), 0,
2181 { &hf_lcsap_lcsap_Correlation_ID_PDU,
2182 { "Correlation-ID", "lcsap.Correlation_ID",
2183 FT_BYTES, BASE_NONE, NULL, 0,
2185 { &hf_lcsap_E_CGI_PDU,
2186 { "E-CGI", "lcsap.E_CGI",
2187 FT_NONE, BASE_NONE, NULL, 0,
2189 { &hf_lcsap_Geographical_Area_PDU,
2190 { "Geographical-Area", "lcsap.Geographical_Area",
2191 FT_UINT32, BASE_DEC, VALS(lcsap_Geographical_Area_vals), 0,
2193 { &hf_lcsap_IMSI_PDU,
2194 { "IMSI", "lcsap.IMSI",
2195 FT_BYTES, BASE_NONE, NULL, 0,
2197 { &hf_lcsap_IMEI_PDU,
2198 { "IMEI", "lcsap.IMEI",
2199 FT_BYTES, BASE_NONE, NULL, 0,
2201 { &hf_lcsap_Include_Velocity_PDU,
2202 { "Include-Velocity", "lcsap.Include_Velocity",
2203 FT_UINT32, BASE_DEC, VALS(lcsap_Include_Velocity_vals), 0,
2205 { &hf_lcsap_Location_Type_PDU,
2206 { "Location-Type", "lcsap.Location_Type",
2207 FT_UINT32, BASE_DEC, VALS(lcsap_Location_Type_vals), 0,
2209 { &hf_lcsap_LCS_Cause_PDU,
2210 { "LCS-Cause", "lcsap.LCS_Cause",
2211 FT_UINT32, BASE_DEC, VALS(lcsap_LCS_Cause_vals), 0,
2213 { &hf_lcsap_LCS_Client_Type_PDU,
2214 { "LCS-Client-Type", "lcsap.LCS_Client_Type",
2215 FT_UINT32, BASE_DEC, VALS(lcsap_LCS_Client_Type_vals), 0,
2217 { &hf_lcsap_LCS_Priority_PDU,
2218 { "LCS-Priority", "lcsap.LCS_Priority",
2219 FT_BYTES, BASE_NONE, NULL, 0,
2221 { &hf_lcsap_LCS_QoS_PDU,
2222 { "LCS-QoS", "lcsap.LCS_QoS",
2223 FT_NONE, BASE_NONE, NULL, 0,
2225 { &hf_lcsap_MultipleAPDUs_PDU,
2226 { "MultipleAPDUs", "lcsap.MultipleAPDUs",
2227 FT_UINT32, BASE_DEC, NULL, 0,
2229 { &hf_lcsap_Network_Element_PDU,
2230 { "Network-Element", "lcsap.Network_Element",
2231 FT_UINT32, BASE_DEC, VALS(lcsap_Network_Element_vals), 0,
2233 { &hf_lcsap_Payload_Type_PDU,
2234 { "Payload-Type", "lcsap.Payload_Type",
2235 FT_UINT32, BASE_DEC, VALS(lcsap_Payload_Type_vals), 0,
2237 { &hf_lcsap_Positioning_Data_PDU,
2238 { "Positioning-Data", "lcsap.Positioning_Data",
2239 FT_NONE, BASE_NONE, NULL, 0,
2241 { &hf_lcsap_Return_Error_Type_PDU,
2242 { "Return-Error-Type", "lcsap.Return_Error_Type",
2243 FT_UINT32, BASE_DEC, VALS(lcsap_Return_Error_Type_vals), 0,
2245 { &hf_lcsap_Return_Error_Cause_PDU,
2246 { "Return-Error-Cause", "lcsap.Return_Error_Cause",
2247 FT_UINT32, BASE_DEC, VALS(lcsap_Return_Error_Cause_vals), 0,
2249 { &hf_lcsap_UE_Positioning_Capability_PDU,
2250 { "UE-Positioning-Capability", "lcsap.UE_Positioning_Capability",
2251 FT_NONE, BASE_NONE, NULL, 0,
2253 { &hf_lcsap_Velocity_Estimate_PDU,
2254 { "Velocity-Estimate", "lcsap.Velocity_Estimate",
2255 FT_UINT32, BASE_DEC, VALS(lcsap_Velocity_Estimate_vals), 0,
2257 { &hf_lcsap_Location_Request_PDU,
2258 { "Location-Request", "lcsap.Location_Request",
2259 FT_NONE, BASE_NONE, NULL, 0,
2261 { &hf_lcsap_Location_Response_PDU,
2262 { "Location-Response", "lcsap.Location_Response",
2263 FT_NONE, BASE_NONE, NULL, 0,
2265 { &hf_lcsap_Location_Abort_Request_PDU,
2266 { "Location-Abort-Request", "lcsap.Location_Abort_Request",
2267 FT_NONE, BASE_NONE, NULL, 0,
2269 { &hf_lcsap_Connection_Oriented_Information_PDU,
2270 { "Connection-Oriented-Information", "lcsap.Connection_Oriented_Information",
2271 FT_NONE, BASE_NONE, NULL, 0,
2273 { &hf_lcsap_Connectionless_Information_PDU,
2274 { "Connectionless-Information", "lcsap.Connectionless_Information",
2275 FT_NONE, BASE_NONE, NULL, 0,
2277 { &hf_lcsap_Reset_Request_PDU,
2278 { "Reset-Request", "lcsap.Reset_Request",
2279 FT_NONE, BASE_NONE, NULL, 0,
2281 { &hf_lcsap_Reset_Acknowledge_PDU,
2282 { "Reset-Acknowledge", "lcsap.Reset_Acknowledge",
2283 FT_NONE, BASE_NONE, NULL, 0,
2285 { &hf_lcsap_LCS_AP_PDU_PDU,
2286 { "LCS-AP-PDU", "lcsap.LCS_AP_PDU",
2287 FT_UINT32, BASE_DEC, VALS(lcsap_LCS_AP_PDU_vals), 0,
2289 { &hf_lcsap_ProtocolIE_Container_item,
2290 { "ProtocolIE-Field", "lcsap.ProtocolIE_Field",
2291 FT_NONE, BASE_NONE, NULL, 0,
2294 { "ieid", "lcsap.ieid",
2295 FT_UINT32, BASE_DEC, VALS(lcsap_ProtocolIE_ID_vals), 0,
2296 "ProtocolIE_ID", HFILL }},
2297 { &hf_lcsap_criticality,
2298 { "criticality", "lcsap.criticality",
2299 FT_UINT32, BASE_DEC, VALS(lcsap_Criticality_vals), 0,
2301 { &hf_lcsap_ie_field_value,
2302 { "value", "lcsap.value",
2303 FT_NONE, BASE_NONE, NULL, 0,
2304 "T_ie_field_value", HFILL }},
2305 { &hf_lcsap_ProtocolExtensionContainer_item,
2306 { "ProtocolExtensionField", "lcsap.ProtocolExtensionField",
2307 FT_NONE, BASE_NONE, NULL, 0,
2310 { "extid", "lcsap.extid",
2311 FT_UINT8, BASE_DEC, VALS(lcsap_ProtocolIE_ID_vals), 0,
2312 "ProtocolExtensionID", HFILL }},
2313 { &hf_lcsap_extensionValue,
2314 { "extensionValue", "lcsap.extensionValue",
2315 FT_NONE, BASE_NONE, NULL, 0,
2317 { &hf_lcsap_direction_Of_Altitude,
2318 { "direction-Of-Altitude", "lcsap.direction_Of_Altitude",
2319 FT_UINT32, BASE_DEC, VALS(lcsap_Direction_Of_Altitude_vals), 0,
2321 { &hf_lcsap_altitude,
2322 { "altitude", "lcsap.altitude",
2323 FT_UINT32, BASE_DEC, NULL, 0,
2325 { &hf_lcsap_pLMNidentity,
2326 { "pLMNidentity", "lcsap.pLMNidentity",
2327 FT_BYTES, BASE_NONE, NULL, 0,
2328 "PLMN_ID", HFILL }},
2329 { &hf_lcsap_cell_ID,
2330 { "cell-ID", "lcsap.cell_ID",
2331 FT_BYTES, BASE_NONE, NULL, 0,
2332 "CellIdentity", HFILL }},
2333 { &hf_lcsap_iE_Extensions,
2334 { "iE-Extensions", "lcsap.iE_Extensions",
2335 FT_UINT32, BASE_DEC, NULL, 0,
2336 "ProtocolExtensionContainer", HFILL }},
2337 { &hf_lcsap_geographical_Coordinates,
2338 { "geographical-Coordinates", "lcsap.geographical_Coordinates",
2339 FT_NONE, BASE_NONE, NULL, 0,
2341 { &hf_lcsap_uncertainty_Ellipse,
2342 { "uncertainty-Ellipse", "lcsap.uncertainty_Ellipse",
2343 FT_NONE, BASE_NONE, NULL, 0,
2345 { &hf_lcsap_confidence,
2346 { "confidence", "lcsap.confidence",
2347 FT_UINT32, BASE_DEC, NULL, 0,
2349 { &hf_lcsap_altitude_And_Direction,
2350 { "altitude-And-Direction", "lcsap.altitude_And_Direction",
2351 FT_NONE, BASE_NONE, NULL, 0,
2353 { &hf_lcsap_uncertainty_Altitude,
2354 { "uncertainty-Altitude", "lcsap.uncertainty_Altitude",
2355 FT_UINT32, BASE_DEC, NULL, 0,
2357 { &hf_lcsap_inner_Radius,
2358 { "inner-Radius", "lcsap.inner_Radius",
2359 FT_UINT32, BASE_DEC, NULL, 0,
2361 { &hf_lcsap_uncertainty_Radius,
2362 { "uncertainty-Radius", "lcsap.uncertainty_Radius",
2363 FT_UINT32, BASE_DEC, NULL, 0,
2364 "Uncertainty_Code", HFILL }},
2365 { &hf_lcsap_offset_Angle,
2366 { "offset-Angle", "lcsap.offset_Angle",
2367 FT_UINT32, BASE_DEC, NULL, 0,
2369 { &hf_lcsap_included_Angle,
2370 { "included-Angle", "lcsap.included_Angle",
2371 FT_UINT32, BASE_DEC, NULL, 0,
2373 { &hf_lcsap_macro_eNB_ID,
2374 { "macro-eNB-ID", "lcsap.macro_eNB_ID",
2375 FT_BYTES, BASE_NONE, NULL, 0,
2377 { &hf_lcsap_home_eNB_ID,
2378 { "home-eNB-ID", "lcsap.home_eNB_ID",
2379 FT_BYTES, BASE_NONE, NULL, 0,
2382 { "point", "lcsap.point",
2383 FT_NONE, BASE_NONE, NULL, 0,
2385 { &hf_lcsap_point_With_Uncertainty,
2386 { "point-With-Uncertainty", "lcsap.point_With_Uncertainty",
2387 FT_NONE, BASE_NONE, NULL, 0,
2389 { &hf_lcsap_ellipsoidPoint_With_Uncertainty_Ellipse,
2390 { "ellipsoidPoint-With-Uncertainty-Ellipse", "lcsap.ellipsoidPoint_With_Uncertainty_Ellipse",
2391 FT_NONE, BASE_NONE, NULL, 0,
2392 "Ellipsoid_Point_With_Uncertainty_Ellipse", HFILL }},
2393 { &hf_lcsap_polygon,
2394 { "polygon", "lcsap.polygon",
2395 FT_UINT32, BASE_DEC, NULL, 0,
2397 { &hf_lcsap_ellipsoid_Point_With_Altitude,
2398 { "ellipsoid-Point-With-Altitude", "lcsap.ellipsoid_Point_With_Altitude",
2399 FT_NONE, BASE_NONE, NULL, 0,
2401 { &hf_lcsap_ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid,
2402 { "ellipsoid-Point-With-Altitude-And-Uncertainty-Ellipsoid", "lcsap.ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid",
2403 FT_NONE, BASE_NONE, NULL, 0,
2405 { &hf_lcsap_ellipsoid_Arc,
2406 { "ellipsoid-Arc", "lcsap.ellipsoid_Arc",
2407 FT_NONE, BASE_NONE, NULL, 0,
2409 { &hf_lcsap_latitudeSign,
2410 { "latitudeSign", "lcsap.latitudeSign",
2411 FT_UINT32, BASE_DEC, VALS(lcsap_LatitudeSign_vals), 0,
2413 { &hf_lcsap_degreesLatitude,
2414 { "degreesLatitude", "lcsap.degreesLatitude",
2415 FT_UINT32, BASE_DEC, NULL, 0,
2417 { &hf_lcsap_degreesLongitude,
2418 { "degreesLongitude", "lcsap.degreesLongitude",
2419 FT_INT32, BASE_DEC, NULL, 0,
2421 { &hf_lcsap_pLMN_ID,
2422 { "pLMN-ID", "lcsap.pLMN_ID",
2423 FT_BYTES, BASE_NONE, NULL, 0,
2426 { "eNB-ID", "lcsap.eNB_ID",
2427 FT_UINT32, BASE_DEC, VALS(lcsap_ENB_ID_vals), 0,
2429 { &hf_lcsap_GNSS_Positioning_Data_Set_item,
2430 { "GNSS-Positioning-Method-And-Usage", "lcsap.GNSS_Positioning_Method_And_Usage",
2431 FT_BYTES, BASE_NONE, NULL, 0,
2433 { &hf_lcsap_bearing,
2434 { "bearing", "lcsap.bearing",
2435 FT_UINT32, BASE_DEC, NULL, 0,
2437 { &hf_lcsap_horizontal_Speed,
2438 { "horizontal-Speed", "lcsap.horizontal_Speed",
2439 FT_UINT32, BASE_DEC, NULL, 0,
2440 "INTEGER_0_2047", HFILL }},
2441 { &hf_lcsap_horizontal_Speed_And_Bearing,
2442 { "horizontal-Speed-And-Bearing", "lcsap.horizontal_Speed_And_Bearing",
2443 FT_NONE, BASE_NONE, NULL, 0,
2445 { &hf_lcsap_vertical_Velocity,
2446 { "vertical-Velocity", "lcsap.vertical_Velocity",
2447 FT_NONE, BASE_NONE, NULL, 0,
2449 { &hf_lcsap_uncertainty_Speed,
2450 { "uncertainty-Speed", "lcsap.uncertainty_Speed",
2451 FT_UINT32, BASE_DEC, NULL, 0,
2452 "INTEGER_0_255", HFILL }},
2453 { &hf_lcsap_horizontal_Uncertainty_Speed,
2454 { "horizontal-Uncertainty-Speed", "lcsap.horizontal_Uncertainty_Speed",
2455 FT_UINT32, BASE_DEC, NULL, 0,
2456 "INTEGER_0_255", HFILL }},
2457 { &hf_lcsap_vertical_Uncertainty_Speed,
2458 { "vertical-Uncertainty-Speed", "lcsap.vertical_Uncertainty_Speed",
2459 FT_UINT32, BASE_DEC, NULL, 0,
2460 "INTEGER_0_255", HFILL }},
2461 { &hf_lcsap_radio_Network_Layer,
2462 { "radio-Network-Layer", "lcsap.radio_Network_Layer",
2463 FT_UINT32, BASE_DEC, VALS(lcsap_Radio_Network_Layer_Cause_vals), 0,
2464 "Radio_Network_Layer_Cause", HFILL }},
2465 { &hf_lcsap_transport_Layer,
2466 { "transport-Layer", "lcsap.transport_Layer",
2467 FT_UINT32, BASE_DEC, VALS(lcsap_Transport_Layer_Cause_vals), 0,
2468 "Transport_Layer_Cause", HFILL }},
2469 { &hf_lcsap_protocol,
2470 { "protocol", "lcsap.protocol",
2471 FT_UINT32, BASE_DEC, VALS(lcsap_Protocol_Cause_vals), 0,
2472 "Protocol_Cause", HFILL }},
2474 { "misc", "lcsap.misc",
2475 FT_UINT32, BASE_DEC, VALS(lcsap_Misc_Cause_vals), 0,
2476 "Misc_Cause", HFILL }},
2477 { &hf_lcsap_horizontal_Accuracy,
2478 { "horizontal-Accuracy", "lcsap.horizontal_Accuracy",
2479 FT_UINT32, BASE_DEC, NULL, 0,
2481 { &hf_lcsap_vertical_Requested,
2482 { "vertical-Requested", "lcsap.vertical_Requested",
2483 FT_UINT32, BASE_DEC, VALS(lcsap_Vertical_Requested_vals), 0,
2485 { &hf_lcsap_vertical_Accuracy,
2486 { "vertical-Accuracy", "lcsap.vertical_Accuracy",
2487 FT_UINT32, BASE_DEC, NULL, 0,
2489 { &hf_lcsap_response_Time,
2490 { "response-Time", "lcsap.response_Time",
2491 FT_UINT32, BASE_DEC, VALS(lcsap_Response_Time_vals), 0,
2493 { &hf_lcsap_MultipleAPDUs_item,
2494 { "APDU", "lcsap.APDU",
2495 FT_BYTES, BASE_NONE, NULL, 0,
2497 { &hf_lcsap_global_eNB_ID,
2498 { "global-eNB-ID", "lcsap.global_eNB_ID",
2499 FT_NONE, BASE_NONE, NULL, 0,
2501 { &hf_lcsap_e_SMLC_ID,
2502 { "e-SMLC-ID", "lcsap.e_SMLC_ID",
2503 FT_UINT32, BASE_DEC, NULL, 0,
2505 { &hf_lcsap_uncertainty_Code,
2506 { "uncertainty-Code", "lcsap.uncertainty_Code",
2507 FT_UINT32, BASE_DEC, NULL, 0,
2509 { &hf_lcsap_Polygon_item,
2510 { "Polygon-Point", "lcsap.Polygon_Point",
2511 FT_NONE, BASE_NONE, NULL, 0,
2513 { &hf_lcsap_positioning_Data_Set,
2514 { "positioning-Data-Set", "lcsap.positioning_Data_Set",
2515 FT_UINT32, BASE_DEC, NULL, 0,
2517 { &hf_lcsap_gNSS_Positioning_Data_Set,
2518 { "gNSS-Positioning-Data-Set", "lcsap.gNSS_Positioning_Data_Set",
2519 FT_UINT32, BASE_DEC, NULL, 0,
2521 { &hf_lcsap_Positioning_Data_Set_item,
2522 { "Positioning-Method-And-Usage", "lcsap.Positioning_Method_And_Usage",
2523 FT_BYTES, BASE_NONE, NULL, 0,
2525 { &hf_lcsap_uncertainty_SemiMajor,
2526 { "uncertainty-SemiMajor", "lcsap.uncertainty_SemiMajor",
2527 FT_UINT32, BASE_DEC, NULL, 0,
2528 "Uncertainty_Code", HFILL }},
2529 { &hf_lcsap_uncertainty_SemiMinor,
2530 { "uncertainty-SemiMinor", "lcsap.uncertainty_SemiMinor",
2531 FT_UINT32, BASE_DEC, NULL, 0,
2532 "Uncertainty_Code", HFILL }},
2533 { &hf_lcsap_orientation_Major_Axis,
2534 { "orientation-Major-Axis", "lcsap.orientation_Major_Axis",
2535 FT_UINT32, BASE_DEC, NULL, 0,
2538 { "lPP", "lcsap.lPP",
2539 FT_BOOLEAN, BASE_NONE, NULL, 0,
2540 "BOOLEAN", HFILL }},
2541 { &hf_lcsap_horizontal_Velocity,
2542 { "horizontal-Velocity", "lcsap.horizontal_Velocity",
2543 FT_NONE, BASE_NONE, NULL, 0,
2545 { &hf_lcsap_horizontal_With_Vertical_Velocity,
2546 { "horizontal-With-Vertical-Velocity", "lcsap.horizontal_With_Vertical_Velocity",
2547 FT_NONE, BASE_NONE, NULL, 0,
2549 { &hf_lcsap_horizontal_Velocity_With_Uncertainty,
2550 { "horizontal-Velocity-With-Uncertainty", "lcsap.horizontal_Velocity_With_Uncertainty",
2551 FT_NONE, BASE_NONE, NULL, 0,
2553 { &hf_lcsap_horizontal_With_Vertical_Velocity_And_Uncertainty,
2554 { "horizontal-With-Vertical-Velocity-And-Uncertainty", "lcsap.horizontal_With_Vertical_Velocity_And_Uncertainty",
2555 FT_NONE, BASE_NONE, NULL, 0,
2557 { &hf_lcsap_vertical_Speed,
2558 { "vertical-Speed", "lcsap.vertical_Speed",
2559 FT_UINT32, BASE_DEC, NULL, 0,
2560 "INTEGER_0_255", HFILL }},
2561 { &hf_lcsap_vertical_Speed_Direction,
2562 { "vertical-Speed-Direction", "lcsap.vertical_Speed_Direction",
2563 FT_UINT32, BASE_DEC, VALS(lcsap_Vertical_Speed_Direction_vals), 0,
2565 { &hf_lcsap_protocolIEs,
2566 { "protocolIEs", "lcsap.protocolIEs",
2567 FT_UINT32, BASE_DEC, NULL, 0,
2568 "ProtocolIE_Container", HFILL }},
2569 { &hf_lcsap_protocolExtensions,
2570 { "protocolExtensions", "lcsap.protocolExtensions",
2571 FT_UINT32, BASE_DEC, NULL, 0,
2572 "ProtocolExtensionContainer", HFILL }},
2573 { &hf_lcsap_initiatingMessage,
2574 { "initiatingMessage", "lcsap.initiatingMessage",
2575 FT_NONE, BASE_NONE, NULL, 0,
2577 { &hf_lcsap_successfulOutcome,
2578 { "successfulOutcome", "lcsap.successfulOutcome",
2579 FT_NONE, BASE_NONE, NULL, 0,
2581 { &hf_lcsap_unsuccessfulOutcome,
2582 { "unsuccessfulOutcome", "lcsap.unsuccessfulOutcome",
2583 FT_NONE, BASE_NONE, NULL, 0,
2585 { &hf_lcsap_procedureCode,
2586 { "procedureCode", "lcsap.procedureCode",
2587 FT_UINT32, BASE_DEC, VALS(lcsap_ProcedureCode_vals), 0,
2589 { &hf_lcsap_initiatingMessagevalue,
2590 { "value", "lcsap.value",
2591 FT_NONE, BASE_NONE, NULL, 0,
2592 "InitiatingMessage_value", HFILL }},
2593 { &hf_lcsap_successfulOutcome_value,
2594 { "value", "lcsap.value",
2595 FT_NONE, BASE_NONE, NULL, 0,
2596 "SuccessfulOutcome_value", HFILL }},
2597 { &hf_lcsap_unsuccessfulOutcome_value,
2598 { "value", "lcsap.value",
2599 FT_NONE, BASE_NONE, NULL, 0,
2600 "UnsuccessfulOutcome_value", HFILL }},
2602 /*--- End of included file: packet-lcsap-hfarr.c ---*/
2603 #line 179 "../../asn1/lcsap/packet-lcsap-template.c"
2606 /* List of subtrees */
2607 static gint *ett[] = {
2610 /*--- Included file: packet-lcsap-ettarr.c ---*/
2611 #line 1 "../../asn1/lcsap/packet-lcsap-ettarr.c"
2612 &ett_lcsap_ProtocolIE_Container,
2613 &ett_lcsap_ProtocolIE_Field,
2614 &ett_lcsap_ProtocolExtensionContainer,
2615 &ett_lcsap_ProtocolExtensionField,
2616 &ett_lcsap_Altitude_And_Direction,
2618 &ett_lcsap_Ellipsoid_Point_With_Uncertainty_Ellipse,
2619 &ett_lcsap_Ellipsoid_Point_With_Altitude,
2620 &ett_lcsap_Ellipsoid_Point_With_Altitude_And_Uncertainty_Ellipsoid,
2621 &ett_lcsap_Ellipsoid_Arc,
2623 &ett_lcsap_Geographical_Area,
2624 &ett_lcsap_Geographical_Coordinates,
2625 &ett_lcsap_Global_eNB_ID,
2626 &ett_lcsap_GNSS_Positioning_Data_Set,
2627 &ett_lcsap_Horizontal_Speed_And_Bearing,
2628 &ett_lcsap_Horizontal_Velocity,
2629 &ett_lcsap_Horizontal_With_Vertical_Velocity,
2630 &ett_lcsap_Horizontal_Velocity_With_Uncertainty,
2631 &ett_lcsap_Horizontal_With_Vertical_Velocity_And_Uncertainty,
2632 &ett_lcsap_LCS_Cause,
2634 &ett_lcsap_MultipleAPDUs,
2635 &ett_lcsap_Network_Element,
2637 &ett_lcsap_Point_With_Uncertainty,
2639 &ett_lcsap_Polygon_Point,
2640 &ett_lcsap_Positioning_Data,
2641 &ett_lcsap_Positioning_Data_Set,
2642 &ett_lcsap_Uncertainty_Ellipse,
2643 &ett_lcsap_UE_Positioning_Capability,
2644 &ett_lcsap_Velocity_Estimate,
2645 &ett_lcsap_Vertical_Velocity,
2646 &ett_lcsap_Location_Request,
2647 &ett_lcsap_Location_Response,
2648 &ett_lcsap_Location_Abort_Request,
2649 &ett_lcsap_Connection_Oriented_Information,
2650 &ett_lcsap_Connectionless_Information,
2651 &ett_lcsap_Reset_Request,
2652 &ett_lcsap_Reset_Acknowledge,
2653 &ett_lcsap_LCS_AP_PDU,
2654 &ett_lcsap_InitiatingMessage,
2655 &ett_lcsap_SuccessfulOutcome,
2656 &ett_lcsap_UnsuccessfulOutcome,
2658 /*--- End of included file: packet-lcsap-ettarr.c ---*/
2659 #line 185 "../../asn1/lcsap/packet-lcsap-template.c"
2662 module_t *lcsap_module;
2664 /* Register protocol */
2665 proto_lcsap = proto_register_protocol(PNAME, PSNAME, PFNAME);
2667 /* Register fields and subtrees */
2668 proto_register_field_array(proto_lcsap, hf, array_length(hf));
2669 proto_register_subtree_array(ett, array_length(ett));
2670 register_dissector("lcsap", dissect_lcsap, proto_lcsap);
2672 /* Register dissector tables */
2673 lcsap_ies_dissector_table = register_dissector_table("lcsap.ies", "LCS-AP-PROTOCOL-IES", FT_UINT32, BASE_DEC);
2676 lcsap_extension_dissector_table = register_dissector_table("lcsap.extension", "LCS-AP-PROTOCOL-EXTENSION", FT_UINT32, BASE_DEC);
2677 lcsap_proc_imsg_dissector_table = register_dissector_table("lcsap.proc.imsg", "LCS-AP-ELEMENTARY-PROCEDURE InitiatingMessage", FT_UINT32, BASE_DEC);
2678 lcsap_proc_sout_dissector_table = register_dissector_table("lcsap.proc.sout", "LCS-AP-ELEMENTARY-PROCEDURE SuccessfulOutcome", FT_UINT32, BASE_DEC);
2679 lcsap_proc_uout_dissector_table = register_dissector_table("lcsap.proc.uout", "LCS-AP-ELEMENTARY-PROCEDURE UnsuccessfulOutcome", FT_UINT32, BASE_DEC);
2681 /* Register configuration options for ports */
2682 lcsap_module = prefs_register_protocol(proto_lcsap, proto_reg_handoff_lcsap);
2684 prefs_register_uint_preference(lcsap_module, "sctp.port",
2686 "Set the SCTP port for LCSAP messages",
2688 &gbl_lcsapSctpPort);