1 /* Do not modify this file. */
2 /* It is created automatically by the ASN.1 to Wireshark dissector compiler */
4 /* ../../tools/asn2wrs.py -u -p tetra -c ./tetra.cnf -s ./packet-tetra-template -D . -O ../../epan/dissectors tetra.asn */
6 /* Input file: packet-tetra-template.c */
8 #line 1 "../../asn1/tetra/packet-tetra-template.c"
10 * Routines for TETRA packet dissection
14 * Copyright (c) 2007 - 2011 Professional Mobile Communication Research Group,
15 * Beijing Institute of Technology, China
16 * Copyright (c) 2011 Holger Hans Peter Freyther
18 * Wireshark - Network traffic analyzer
19 * By Gerald Combs <gerald@wireshark.org>
20 * Copyright 1998 Gerald Combs
22 * This program is free software; you can redistribute it and/or
23 * modify it under the terms of the GNU General Public License
24 * as published by the Free Software Foundation; either version 2
25 * of the License, or (at your option) any later version.
27 * This program is distributed in the hope that it will be useful,
28 * but WITHOUT ANY WARRANTY; without even the implied warranty of
29 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30 * GNU General Public License for more details.
32 * You should have received a copy of the GNU General Public License
33 * along with this program; if not, write to the Free Software
34 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
36 * REF: ETSI EN 300 392-2 V3.2.1
42 #include <epan/packet.h>
43 #include <epan/prefs.h>
44 #include <epan/oids.h>
45 #include <epan/conversation.h>
46 #include <epan/asn1.h>
51 #include <epan/dissectors/packet-per.h>
52 #include "packet-tetra.h"
54 #define PROTO_TAG_tetra "TETRA"
56 /* Wireshark ID of the tetra protocol */
57 static int proto_tetra = -1;
59 /* These are the handles of our subdissectors */
60 static dissector_handle_t data_handle = NULL;
62 static dissector_handle_t tetra_handle;
63 static void dissect_tetra(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
65 static int global_tetra_port = 7074;
67 /* Whether the capture data include carrier numbers */
68 static gboolean include_carrier_number = TRUE;
70 /* The following hf_* variables are used to hold the Wireshark IDs of
71 * our header fields; they are filled out when we call
72 * proto_register_field_array() in proto_register_tetra()
74 /** Kts attempt at defining the protocol */
75 static gint hf_tetra = -1;
76 static gint hf_tetra_header = -1;
77 static gint hf_tetra_channels = -1;
78 static gint hf_tetra_channel1 = -1;
79 static gint hf_tetra_channel2 = -1;
80 static gint hf_tetra_channel3 = -1;
81 static gint hf_tetra_txreg = -1;
82 static gint hf_tetra_timer = -1;
83 static gint hf_tetra_pdu = -1;
84 static gint hf_tetra_rvstr = -1;
85 static gint hf_tetra_carriernumber = -1;
86 static gint hf_tetra_rxchannel1 = -1;
87 static gint hf_tetra_rxchannel2 = -1;
88 static gint hf_tetra_rxchannel3 = -1;
89 static gint hf_tetra_crc = -1;
90 static gint hf_tetra_len0 = -1;
93 /*--- Included file: packet-tetra-hf.c ---*/
94 #line 1 "../../asn1/tetra/packet-tetra-hf.c"
95 static int hf_tetra_AACH_PDU = -1; /* AACH */
96 static int hf_tetra_BSCH_PDU = -1; /* BSCH */
97 static int hf_tetra_BNCH_PDU = -1; /* BNCH */
98 static int hf_tetra_MAC_ACCESS_PDU = -1; /* MAC_ACCESS */
99 static int hf_tetra_MAC_FRAG_PDU = -1; /* MAC_FRAG */
100 static int hf_tetra_MAC_FRAG120_PDU = -1; /* MAC_FRAG120 */
101 static int hf_tetra_MAC_END_UPLINK_PDU = -1; /* MAC_END_UPLINK */
102 static int hf_tetra_MAC_END_UP114_PDU = -1; /* MAC_END_UP114 */
103 static int hf_tetra_MAC_END_HU_PDU = -1; /* MAC_END_HU */
104 static int hf_tetra_MAC_END_DOWNLINK_PDU = -1; /* MAC_END_DOWNLINK */
105 static int hf_tetra_MAC_END_DOWN111_PDU = -1; /* MAC_END_DOWN111 */
106 static int hf_tetra_MAC_RESOURCE_PDU = -1; /* MAC_RESOURCE */
107 static int hf_tetra_MAC_ACCESS_DEFINE_PDU = -1; /* MAC_ACCESS_DEFINE */
108 static int hf_tetra_function = -1; /* INTEGER_0_3 */
109 static int hf_tetra_field1 = -1; /* INTEGER_0_63 */
110 static int hf_tetra_field2 = -1; /* INTEGER_0_63 */
111 static int hf_tetra_system_code = -1; /* System_Code */
112 static int hf_tetra_colour_code = -1; /* Colour_Code */
113 static int hf_tetra_timeslot_number = -1; /* Timeslot_Number */
114 static int hf_tetra_frame_number = -1; /* Frame_Number */
115 static int hf_tetra_multiple_frame_number = -1; /* Multiple_Frame_Number */
116 static int hf_tetra_sharing_mod = -1; /* Sharing_Mod */
117 static int hf_tetra_ts_reserved_frames = -1; /* TS_Reserved_Frames */
118 static int hf_tetra_u_plane_dtx = -1; /* U_Plane_DTX */
119 static int hf_tetra_frame_18_extension = -1; /* Frame_18_Extension */
120 static int hf_tetra_reserved = -1; /* Reserved */
121 static int hf_tetra_tm_sdu = -1; /* MLE_Sync */
122 static int hf_tetra_mcc = -1; /* INTEGER_0_1023 */
123 static int hf_tetra_mnc = -1; /* INTEGER_0_16383 */
124 static int hf_tetra_neighbour_cell_broadcast = -1; /* INTEGER_0_3 */
125 static int hf_tetra_cell_service_level = -1; /* INTEGER_0_3 */
126 static int hf_tetra_late_entry_information = -1; /* INTEGER_0_1 */
127 static int hf_tetra_pdu_type = -1; /* INTEGER_0_3 */
128 static int hf_tetra_broadcast_type = -1; /* INTEGER_0_3 */
129 static int hf_tetra_main_carrier = -1; /* INTEGER_0_4095 */
130 static int hf_tetra_frequency_band = -1; /* INTEGER_0_15 */
131 static int hf_tetra_offset = -1; /* Offset */
132 static int hf_tetra_duplex_spacing = -1; /* INTEGER_0_7 */
133 static int hf_tetra_reverse_operation = -1; /* Reverse_Operation */
134 static int hf_tetra_sencond_ctl_carrier = -1; /* Sencond_Ctl_Carrier */
135 static int hf_tetra_ms_txpwr_max_cell = -1; /* MS_TXPWR_MAX_CELL */
136 static int hf_tetra_rxlev_access_min = -1; /* RXLEV_ACCESS_MIN */
137 static int hf_tetra_access_parameter = -1; /* ACCESS_PARAMETER */
138 static int hf_tetra_radio_downlink_timeout = -1; /* RADIO_DOWNLINK_TIMEOUT */
139 static int hf_tetra_hyperframe_or_cck = -1; /* T_hyperframe_or_cck */
140 static int hf_tetra_hyperframe = -1; /* INTEGER_0_65535 */
141 static int hf_tetra_cckid = -1; /* INTEGER_0_65535 */
142 static int hf_tetra_optional_params = -1; /* T_optional_params */
143 static int hf_tetra_even_multiframe = -1; /* TS_COMMON_FRAMES */
144 static int hf_tetra_odd_multiframe = -1; /* TS_COMMON_FRAMES */
145 static int hf_tetra_access_a_code = -1; /* Default_Code_A */
146 static int hf_tetra_extend_service = -1; /* Extended_Services_Broadcast */
147 static int hf_tetra_la = -1; /* INTEGER_0_16383 */
148 static int hf_tetra_subscriber_class = -1; /* INTEGER_0_65535 */
149 static int hf_tetra_registriation = -1; /* INTEGER_0_1 */
150 static int hf_tetra_de_registration = -1; /* INTEGER_0_1 */
151 static int hf_tetra_priority_cell = -1; /* INTEGER_0_1 */
152 static int hf_tetra_minimum_mode_service = -1; /* INTEGER_0_1 */
153 static int hf_tetra_migration = -1; /* INTEGER_0_1 */
154 static int hf_tetra_system_wide_service = -1; /* INTEGER_0_1 */
155 static int hf_tetra_tetra_voice_service = -1; /* INTEGER_0_1 */
156 static int hf_tetra_circuit_mode_data_service = -1; /* INTEGER_0_1 */
157 static int hf_tetra_reserved_01 = -1; /* INTEGER_0_1 */
158 static int hf_tetra_sndcp_service = -1; /* INTEGER_0_1 */
159 static int hf_tetra_air_interface_encryption = -1; /* INTEGER_0_1 */
160 static int hf_tetra_advanced_link_support = -1; /* INTEGER_0_1 */
161 static int hf_tetra_frame1 = -1; /* FRAME */
162 static int hf_tetra_frame2 = -1; /* FRAME */
163 static int hf_tetra_frame3 = -1; /* FRAME */
164 static int hf_tetra_frame4 = -1; /* FRAME */
165 static int hf_tetra_frame5 = -1; /* FRAME */
166 static int hf_tetra_frame6 = -1; /* FRAME */
167 static int hf_tetra_frame7 = -1; /* FRAME */
168 static int hf_tetra_frame8 = -1; /* FRAME */
169 static int hf_tetra_frame9 = -1; /* FRAME */
170 static int hf_tetra_frame10 = -1; /* FRAME */
171 static int hf_tetra_frame11 = -1; /* FRAME */
172 static int hf_tetra_frame12 = -1; /* FRAME */
173 static int hf_tetra_frame13 = -1; /* FRAME */
174 static int hf_tetra_frame14 = -1; /* FRAME */
175 static int hf_tetra_frame15 = -1; /* FRAME */
176 static int hf_tetra_frame16 = -1; /* FRAME */
177 static int hf_tetra_frame17 = -1; /* FRAME */
178 static int hf_tetra_frame18 = -1; /* FRAME */
179 static int hf_tetra_imm = -1; /* IMM */
180 static int hf_tetra_wt = -1; /* WT */
181 static int hf_tetra_nu = -1; /* NU */
182 static int hf_tetra_frame_len_factor = -1; /* Frame_Len_Factor */
183 static int hf_tetra_timeslot_pointer = -1; /* Timeslot_Pointer */
184 static int hf_tetra_min_pdu_priority = -1; /* Min_Pdu_Priority */
185 static int hf_tetra_security_information = -1; /* INTEGER_0_255 */
186 static int hf_tetra_sds_tl_addressing_method = -1; /* SDS_TL_Addressing_Method */
187 static int hf_tetra_gck_supported = -1; /* INTEGER_0_1 */
188 static int hf_tetra_section = -1; /* T_section */
189 static int hf_tetra_present_1 = -1; /* PRESENT1 */
190 static int hf_tetra_present_2 = -1; /* INTEGER_0_127 */
191 static int hf_tetra_present_3 = -1; /* INTEGER_0_127 */
192 static int hf_tetra_present_4 = -1; /* INTEGER_0_127 */
193 static int hf_tetra_data_priority_supported = -1; /* Data_Priority_Supported */
194 static int hf_tetra_reserved_02 = -1; /* INTEGER_0_7 */
195 static int hf_tetra_section_2_information = -1; /* Section_Information */
196 static int hf_tetra_section_3_information = -1; /* Section_Information */
197 static int hf_tetra_section_4_information = -1; /* Section_Information */
198 static int hf_tetra_pdu_type_01 = -1; /* INTEGER_0_1 */
199 static int hf_tetra_fill_bit_indication = -1; /* Fill_Bit_Indication */
200 static int hf_tetra_encrypted_flag = -1; /* Encrypted_Flag */
201 static int hf_tetra_address = -1; /* Address */
202 static int hf_tetra_data = -1; /* T_data */
203 static int hf_tetra_sdu1 = -1; /* U_LLC_PDU */
204 static int hf_tetra_sdu2 = -1; /* ComplexSDU */
205 static int hf_tetra_ssi = -1; /* INTEGER_0_16777215 */
206 static int hf_tetra_eventLabel = -1; /* INTEGER_0_1023 */
207 static int hf_tetra_ussi = -1; /* INTEGER_0_16777215 */
208 static int hf_tetra_smi = -1; /* INTEGER_0_16777215 */
209 static int hf_tetra_bl_adata = -1; /* U_BL_ADATA */
210 static int hf_tetra_bl_data = -1; /* U_BL_DATA */
211 static int hf_tetra_bl_udata = -1; /* U_MLE_PDU */
212 static int hf_tetra_bl_ack = -1; /* U_BL_ACK */
213 static int hf_tetra_bl_adata_fcs = -1; /* U_BL_ADATA_FCS */
214 static int hf_tetra_bl_data_fcs = -1; /* U_BL_DATA_FCS */
215 static int hf_tetra_bl_udata_fcs = -1; /* U_MLE_PDU_FCS */
216 static int hf_tetra_bl_ack_fcs = -1; /* U_BL_ACK_FCS */
217 static int hf_tetra_al_setup = -1; /* NULL */
218 static int hf_tetra_al_data = -1; /* NULL */
219 static int hf_tetra_al_udata = -1; /* NULL */
220 static int hf_tetra_al_ack = -1; /* NULL */
221 static int hf_tetra_al_reconnect = -1; /* NULL */
222 static int hf_tetra_reserve1 = -1; /* NULL */
223 static int hf_tetra_reserve2 = -1; /* NULL */
224 static int hf_tetra_al_disc = -1; /* NULL */
225 static int hf_tetra_nr = -1; /* INTEGER_0_1 */
226 static int hf_tetra_tl_sdu = -1; /* U_MLE_PDU */
227 static int hf_tetra_fcs = -1; /* OCTET_STRING_SIZE_4 */
228 static int hf_tetra_u_mle_pdu = -1; /* U_MLE_PDU */
229 static int hf_tetra_ns = -1; /* INTEGER_0_1 */
230 static int hf_tetra_u_mle_reserved1 = -1; /* NULL */
231 static int hf_tetra_mm = -1; /* U_MM_PDU */
232 static int hf_tetra_cmce = -1; /* U_CMCE_PDU */
233 static int hf_tetra_u_mle_reserved2 = -1; /* NULL */
234 static int hf_tetra_sndcp = -1; /* NULL */
235 static int hf_tetra_mle = -1; /* UMLE_PDU */
236 static int hf_tetra_tetra_management_entity_protocol = -1; /* NULL */
237 static int hf_tetra_u_mle_reserved3 = -1; /* NULL */
238 static int hf_tetra_lengthIndicationOrCapacityRequest = -1; /* T_lengthIndicationOrCapacityRequest */
239 static int hf_tetra_lengthIndication = -1; /* LengthIndication */
240 static int hf_tetra_capacityRequest = -1; /* FRAG */
241 static int hf_tetra_tm_sdu_01 = -1; /* U_LLC_PDU */
242 static int hf_tetra_frag = -1; /* Frag1 */
243 static int hf_tetra_reservation_requirement = -1; /* SLOT_APPLY */
244 static int hf_tetra_sub_type = -1; /* INTEGER_0_1 */
245 static int hf_tetra_tm_sdu_02 = -1; /* BIT_STRING_SIZE_264 */
246 static int hf_tetra_tm_sdu_03 = -1; /* BIT_STRING_SIZE_120 */
247 static int hf_tetra_lengthInd_ReservationReq = -1; /* LengthIndOrReservationReq */
248 static int hf_tetra_tm_sdu_04 = -1; /* BIT_STRING_SIZE_258 */
249 static int hf_tetra_pdu_subtype = -1; /* INTEGER_0_1 */
250 static int hf_tetra_tm_sdu_05 = -1; /* BIT_STRING_SIZE_114 */
251 static int hf_tetra_lengthInd_ReservationReq_01 = -1; /* T_lengthInd_ReservationReq */
252 static int hf_tetra_lengthInd = -1; /* LengthIndMacHu */
253 static int hf_tetra_tm_sdu_06 = -1; /* BIT_STRING_SIZE_85 */
254 static int hf_tetra_position_of_grant = -1; /* Position_Of_Grant */
255 static int hf_tetra_lengthIndication_01 = -1; /* LengthIndicationMacEndDl */
256 static int hf_tetra_slot_granting = -1; /* T_slot_granting */
257 static int hf_tetra_none = -1; /* NULL */
258 static int hf_tetra_slot_granting_param = -1; /* SlotGranting */
259 static int hf_tetra_channel_allocation = -1; /* T_channel_allocation */
260 static int hf_tetra_channel_allocation_element = -1; /* ChannelAllocation */
261 static int hf_tetra_tm_sdu_07 = -1; /* BIT_STRING_SIZE_255 */
262 static int hf_tetra_capacity_allocation = -1; /* Capacity_Allocation */
263 static int hf_tetra_granting_delay = -1; /* Granting_delay */
264 static int hf_tetra_allocation_type = -1; /* T_allocation_type */
265 static int hf_tetra_timeslot_assigned = -1; /* Timeslot_Assigned */
266 static int hf_tetra_up_down_assigned = -1; /* T_up_down_assigned */
267 static int hf_tetra_clch_permission = -1; /* CLCH_permission */
268 static int hf_tetra_cell_change = -1; /* Cell_change_flag */
269 static int hf_tetra_carrier_number = -1; /* INTEGER_0_4095 */
270 static int hf_tetra_extend_carrier_flag = -1; /* T_extend_carrier_flag */
271 static int hf_tetra_extended = -1; /* Extended_carrier_flag */
272 static int hf_tetra_monitoring_pattern = -1; /* T_monitoring_pattern */
273 static int hf_tetra_one = -1; /* Monitoring_pattern */
274 static int hf_tetra_none1 = -1; /* NULL */
275 static int hf_tetra_none2 = -1; /* NULL */
276 static int hf_tetra_none3 = -1; /* NULL */
277 static int hf_tetra_offset_01 = -1; /* INTEGER_0_3 */
278 static int hf_tetra_reverse_operation_01 = -1; /* T_reverse_operation */
279 static int hf_tetra_pdu_type_02 = -1; /* INTEGER_0_7 */
280 static int hf_tetra_fill_bit_ind = -1; /* BOOLEAN */
281 static int hf_tetra_position_of_grant_01 = -1; /* INTEGER_0_1 */
282 static int hf_tetra_slot_granting_01 = -1; /* T_slot_granting_01 */
283 static int hf_tetra_channel_allocation_01 = -1; /* T_channel_allocation_01 */
284 static int hf_tetra_tm_sdu_08 = -1; /* BIT_STRING_SIZE_111 */
285 static int hf_tetra_encryption_mode = -1; /* INTEGER_0_3 */
286 static int hf_tetra_access_ack = -1; /* T_access_ack */
287 static int hf_tetra_lengthIndication_02 = -1; /* LengthIndicationMacResource */
288 static int hf_tetra_address_01 = -1; /* AddressMacResource */
289 static int hf_tetra_power_control = -1; /* T_power_control */
290 static int hf_tetra_powerParameters = -1; /* PowerControl */
291 static int hf_tetra_slot_granting_02 = -1; /* T_slot_granting_02 */
292 static int hf_tetra_channel_allocation_02 = -1; /* T_channel_allocation_02 */
293 static int hf_tetra_tm_sdu_09 = -1; /* D_LLC_PDU */
294 static int hf_tetra_null_pdu = -1; /* NULL */
295 static int hf_tetra_ssi_01 = -1; /* SSI_NEED */
296 static int hf_tetra_eventLabel_01 = -1; /* EVENT_NEED */
297 static int hf_tetra_ussi_01 = -1; /* USSI_NEED */
298 static int hf_tetra_smi_01 = -1; /* SMI_NEED */
299 static int hf_tetra_ssi_eventLabel = -1; /* SSI_EVENT_NEED */
300 static int hf_tetra_ssi_usage_maker = -1; /* SSI_USAGE_NEED */
301 static int hf_tetra_smi_eventLabel = -1; /* SMI_EVENT_NEED */
302 static int hf_tetra_other = -1; /* OTHER_DATA */
303 static int hf_tetra_eventlabel = -1; /* INTEGER_0_1023 */
304 static int hf_tetra_ventlabel = -1; /* INTEGER_0_1023 */
305 static int hf_tetra_usage_maker = -1; /* INTEGER_0_63 */
306 static int hf_tetra_smi_eventlabel = -1; /* BIT_STRING_SIZE_34 */
307 static int hf_tetra_broadcast_channel = -1; /* INTEGER_0_1 */
308 static int hf_tetra_access_code = -1; /* INTEGER_0_3 */
309 static int hf_tetra_imm_01 = -1; /* INTEGER_0_15 */
310 static int hf_tetra_wt_01 = -1; /* INTEGER_0_15 */
311 static int hf_tetra_nu_01 = -1; /* INTEGER_0_15 */
312 static int hf_tetra_frame_len_factor_01 = -1; /* INTEGER_0_1 */
313 static int hf_tetra_timeslot_pointer_01 = -1; /* INTEGER_0_15 */
314 static int hf_tetra_min_priority = -1; /* INTEGER_0_7 */
315 static int hf_tetra_optional_field = -1; /* T_optional_field */
316 static int hf_tetra_class_bitmap = -1; /* INTEGER_0_65535 */
317 static int hf_tetra_gssi = -1; /* INTEGER_0_33554431 */
318 static int hf_tetra_reserved_03 = -1; /* NULL */
319 static int hf_tetra_filler_bits = -1; /* INTEGER_0_7 */
320 static int hf_tetra_bl_adata_01 = -1; /* D_BL_ADATA */
321 static int hf_tetra_bl_data_01 = -1; /* D_BL_DATA */
322 static int hf_tetra_bl_udata_01 = -1; /* D_MLE_PDU */
323 static int hf_tetra_bl_ack_01 = -1; /* D_BL_ACK */
324 static int hf_tetra_bl_adata_fcs_01 = -1; /* D_BL_ADATA_FCS */
325 static int hf_tetra_bl_data_fcs_01 = -1; /* D_BL_DATA_FCS */
326 static int hf_tetra_bl_udata_fcs_01 = -1; /* D_MLE_PDU_FCS */
327 static int hf_tetra_bl_ack_fcs_01 = -1; /* D_BL_ACK_FCS */
328 static int hf_tetra_tl_sdu_01 = -1; /* D_MLE_PDU */
329 static int hf_tetra_d_mle_pdu = -1; /* D_MLE_PDU */
330 static int hf_tetra_mm_01 = -1; /* D_MM_PDU */
331 static int hf_tetra_cmce_01 = -1; /* D_CMCE_PDU */
332 static int hf_tetra_mle_01 = -1; /* DMLE_PDU */
333 static int hf_tetra_u_prepare = -1; /* U_PREPARE */
334 static int hf_tetra_umle_reserved1 = -1; /* NULL */
335 static int hf_tetra_umle_reserved2 = -1; /* NULL */
336 static int hf_tetra_umle_reserved3 = -1; /* NULL */
337 static int hf_tetra_u_restore = -1; /* U_RESTORE */
338 static int hf_tetra_umle_reserved4 = -1; /* NULL */
339 static int hf_tetra_umle_reserved5 = -1; /* NULL */
340 static int hf_tetra_umle_reserved6 = -1; /* NULL */
341 static int hf_tetra_d_new_cell = -1; /* D_NEW_CELL */
342 static int hf_tetra_d_prepare_fail = -1; /* D_PREPARE_FAIL */
343 static int hf_tetra_d_nwrk_broadcast = -1; /* D_NWRK_BRDADCAST */
344 static int hf_tetra_dmle_reserved1 = -1; /* NULL */
345 static int hf_tetra_d_restore_ack = -1; /* D_RESTORE_ACK */
346 static int hf_tetra_d_restore_fail = -1; /* D_RESTORE_FAIL */
347 static int hf_tetra_dmle_reserved2 = -1; /* NULL */
348 static int hf_tetra_dmle_reserved3 = -1; /* NULL */
349 static int hf_tetra_optional_elements = -1; /* T_optional_elements */
350 static int hf_tetra_no_type2 = -1; /* NULL */
351 static int hf_tetra_type2_parameters = -1; /* T_type2_parameters */
352 static int hf_tetra_cell_number = -1; /* T_cell_number */
353 static int hf_tetra_cell_number_01 = -1; /* INTEGER_0_65535 */
354 static int hf_tetra_sdu = -1; /* BIT_STRING */
355 static int hf_tetra_optional_elements_01 = -1; /* T_optional_elements_01 */
356 static int hf_tetra_type2_parameters_01 = -1; /* T_type2_parameters_01 */
357 static int hf_tetra_mcc_01 = -1; /* T_mcc */
358 static int hf_tetra_mnc_01 = -1; /* T_mnc */
359 static int hf_tetra_la_01 = -1; /* T_la */
360 static int hf_tetra_channel_command_valid = -1; /* INTEGER_0_3 */
361 static int hf_tetra_optional_elements_02 = -1; /* T_optional_elements_02 */
362 static int hf_tetra_fail_cause = -1; /* INTEGER_0_3 */
363 static int hf_tetra_optional_elements_03 = -1; /* T_optional_elements_03 */
364 static int hf_tetra_cell_re_select_parameters = -1; /* INTEGER_0_65535 */
365 static int hf_tetra_optional_elements_04 = -1; /* T_optional_elements_04 */
366 static int hf_tetra_type2_parameters_02 = -1; /* T_type2_parameters_02 */
367 static int hf_tetra_tetra_network_time = -1; /* T_tetra_network_time */
368 static int hf_tetra_tetra_network_time_01 = -1; /* TETRA_NETWORK_TIME */
369 static int hf_tetra_number_of_neighbour_cells = -1; /* T_number_of_neighbour_cells */
370 static int hf_tetra_number_of_neighbour_cells_01 = -1; /* INTEGER_0_7 */
371 static int hf_tetra_network_time = -1; /* T_network_time */
372 static int hf_tetra_local_time_offset_sign = -1; /* INTEGER_0_1 */
373 static int hf_tetra_local_time_offset = -1; /* INTEGER_0_63 */
374 static int hf_tetra_year = -1; /* INTEGER_0_63 */
375 static int hf_tetra_reserved_04 = -1; /* T_reserved */
376 static int hf_tetra_u_Authentication = -1; /* NULL */
377 static int hf_tetra_u_Itsi_Detach = -1; /* NULL */
378 static int hf_tetra_u_Location_Update_Demand = -1; /* U_LOCATION_UPDATE_DEMAND */
379 static int hf_tetra_u_MM_Status = -1; /* U_MM_STATUS */
380 static int hf_tetra_u_MM_reserved1 = -1; /* NULL */
381 static int hf_tetra_u_WK = -1; /* NULL */
382 static int hf_tetra_u_MM_reserved3 = -1; /* NULL */
383 static int hf_tetra_u_Attach_Detach_Group_Identity = -1; /* U_ATTACH_DETACH_GROUP_IDENTITY */
384 static int hf_tetra_u_Attach_Detach_Group_Identity_Ack = -1; /* U_ATTACH_DETACH_GROUP_IDENTITY_ACK */
385 static int hf_tetra_u_TEI_Provide = -1; /* NULL */
386 static int hf_tetra_u_MM_reserved6 = -1; /* NULL */
387 static int hf_tetra_u_Disabled_Status = -1; /* NULL */
388 static int hf_tetra_u_MM_reserved7 = -1; /* NULL */
389 static int hf_tetra_u_MM_reserved8 = -1; /* NULL */
390 static int hf_tetra_u_MM_reserved9 = -1; /* NULL */
391 static int hf_tetra_u_MM_Function_Not_Support = -1; /* NULL */
392 static int hf_tetra_d_Otar = -1; /* NULL */
393 static int hf_tetra_d_Authentication = -1; /* NULL */
394 static int hf_tetra_d_Authentication_Reject = -1; /* NULL */
395 static int hf_tetra_d_Disable = -1; /* NULL */
396 static int hf_tetra_d_Enable = -1; /* NULL */
397 static int hf_tetra_d_Location_Update_Accept = -1; /* D_LOCATION_UPDATE_ACCEPT */
398 static int hf_tetra_d_Location_Update_Command = -1; /* NULL */
399 static int hf_tetra_d_Location_Update_Reject = -1; /* D_LOCATION_UPDATE_REJECT */
400 static int hf_tetra_d_MM_reserved2 = -1; /* NULL */
401 static int hf_tetra_d_Location_Update_Proceeding = -1; /* NULL */
402 static int hf_tetra_d_Attach_Detach_Group_Identity = -1; /* D_ATTACH_DETACH_GROUP_IDENTITY */
403 static int hf_tetra_d_Attach_Detach_Group_Identity_Ack = -1; /* D_ATTACH_DETACH_GROUP_IDENTITY_ACK */
404 static int hf_tetra_d_MM_Status = -1; /* D_MM_STATUS */
405 static int hf_tetra_d_MM_reserved5 = -1; /* NULL */
406 static int hf_tetra_d_MM_reserved6 = -1; /* NULL */
407 static int hf_tetra_d_MM_Function_Not_Support = -1; /* NULL */
408 static int hf_tetra_attach_detach_identifiet = -1; /* T_attach_detach_identifiet */
409 static int hf_tetra_attach = -1; /* T_attach */
410 static int hf_tetra_lifetime = -1; /* INTEGER_0_3 */
411 static int hf_tetra_class_of_usage = -1; /* INTEGER_0_7 */
412 static int hf_tetra_detach = -1; /* T_detach */
413 static int hf_tetra_detach_downlike = -1; /* T_detach_downlike */
414 static int hf_tetra_address_type = -1; /* T_address_type */
415 static int hf_tetra_gssi_01 = -1; /* OCTET_STRING_SIZE_3 */
416 static int hf_tetra_gssi_extension = -1; /* T_gssi_extension */
417 static int hf_tetra_extension = -1; /* OCTET_STRING_SIZE_3 */
418 static int hf_tetra_vgssi = -1; /* OCTET_STRING_SIZE_3 */
419 static int hf_tetra_attach_detach_identifiet_01 = -1; /* T_attach_detach_identifiet_01 */
420 static int hf_tetra_attach_01 = -1; /* T_attach_01 */
421 static int hf_tetra_detach_01 = -1; /* T_detach_01 */
422 static int hf_tetra_detach_uplike = -1; /* T_detach_uplike */
423 static int hf_tetra_address_type_01 = -1; /* T_address_type_01 */
424 static int hf_tetra_gssi_extension_01 = -1; /* T_gssi_extension_01 */
425 static int hf_tetra_location_update_type = -1; /* UPDATE_TYPE */
426 static int hf_tetra_optional_elements_05 = -1; /* T_optional_elements_05 */
427 static int hf_tetra_type2_parameters_03 = -1; /* T_type2_parameters_03 */
428 static int hf_tetra_ssi_02 = -1; /* T_ssi */
429 static int hf_tetra_ssi_03 = -1; /* OCTET_STRING_SIZE_3 */
430 static int hf_tetra_address_extension = -1; /* T_address_extension */
431 static int hf_tetra_address_extension_01 = -1; /* OCTET_STRING_SIZE_3 */
432 static int hf_tetra_suscriber_class = -1; /* T_suscriber_class */
433 static int hf_tetra_suscriber_class_01 = -1; /* INTEGER_0_32767 */
434 static int hf_tetra_energy_saving_mode = -1; /* T_energy_saving_mode */
435 static int hf_tetra_energy_saving_mode_01 = -1; /* INTEGER_0_7 */
436 static int hf_tetra_scch_info = -1; /* T_scch_info */
437 static int hf_tetra_scch_info_01 = -1; /* INTEGER_0_16383 */
438 static int hf_tetra_type3 = -1; /* T_type3 */
439 static int hf_tetra_no_type3 = -1; /* NULL */
440 static int hf_tetra_type3_elements = -1; /* T_type3_elements */
441 static int hf_tetra_type2_existance = -1; /* BOOLEAN */
442 static int hf_tetra_type3_identifier = -1; /* TYPE3_IDENTIFIER */
443 static int hf_tetra_new_ra = -1; /* T_new_ra */
444 static int hf_tetra_new_ra_01 = -1; /* INTEGER_0_3 */
445 static int hf_tetra_group_identity_location_accept = -1; /* T_group_identity_location_accept */
446 static int hf_tetra_group_identity_location_accept_01 = -1; /* INTEGER_0_3 */
447 static int hf_tetra_group_predefined_lifetime = -1; /* T_group_predefined_lifetime */
448 static int hf_tetra_group_predefined_lifetime_01 = -1; /* INTEGER_0_3 */
449 static int hf_tetra_group_identity_downlink = -1; /* T_group_identity_downlink */
450 static int hf_tetra_group_identity_downlink_01 = -1; /* INTEGER_0_15 */
451 static int hf_tetra_proprietary = -1; /* T_proprietary */
452 static int hf_tetra_proprietary_01 = -1; /* INTEGER_0_7 */
453 static int hf_tetra_reject_cause = -1; /* INTEGER_0_31 */
454 static int hf_tetra_cipher_control = -1; /* BOOLEAN */
455 static int hf_tetra_status_uplink = -1; /* INTEGER_0_63 */
456 static int hf_tetra_scanning_on_off = -1; /* T_scanning_on_off */
457 static int hf_tetra_status_downlink = -1; /* INTEGER_0_63 */
458 static int hf_tetra_u_Alert = -1; /* U_ALERT */
459 static int hf_tetra_reserved1 = -1; /* NULL */
460 static int hf_tetra_u_Connect = -1; /* U_CONNECT */
461 static int hf_tetra_reserved2 = -1; /* NULL */
462 static int hf_tetra_u_Disconnect = -1; /* U_DISCONNECT */
463 static int hf_tetra_u_Info = -1; /* U_INFO */
464 static int hf_tetra_u_Release = -1; /* U_RELEASE */
465 static int hf_tetra_u_Setup = -1; /* U_SETUP */
466 static int hf_tetra_u_Status = -1; /* U_STATUS */
467 static int hf_tetra_u_Tx_Ceased = -1; /* U_TX_CEASED */
468 static int hf_tetra_u_Tx_Demand = -1; /* U_TX_DEMAND */
469 static int hf_tetra_reserved3 = -1; /* NULL */
470 static int hf_tetra_reserved4 = -1; /* NULL */
471 static int hf_tetra_reserved5 = -1; /* NULL */
472 static int hf_tetra_u_Call_Restore = -1; /* U_CALL_RESTORE */
473 static int hf_tetra_u_SDS_Data = -1; /* U_SDS_DATA */
474 static int hf_tetra_u_Facility = -1; /* NULL */
475 static int hf_tetra_call_identifier = -1; /* INTEGER_0_16383 */
476 static int hf_tetra_disconnect_cause = -1; /* INTEGER_0_31 */
477 static int hf_tetra_area_selection = -1; /* INTEGER_0_15 */
478 static int hf_tetra_called_party_type_identifier = -1; /* T_called_party_type_identifier */
479 static int hf_tetra_sna = -1; /* INTEGER_0_255 */
480 static int hf_tetra_ssi_extension = -1; /* BIT_STRING_SIZE_48 */
481 static int hf_tetra_short_data_type_identifier = -1; /* T_short_data_type_identifier */
482 static int hf_tetra_data_1 = -1; /* INTEGER_0_65535 */
483 static int hf_tetra_data_2 = -1; /* OCTET_STRING_SIZE_4 */
484 static int hf_tetra_data_3 = -1; /* BIT_STRING_SIZE_64 */
485 static int hf_tetra_length_indicator_data_4 = -1; /* INTEGER_0_4194304 */
486 static int hf_tetra_called_party_type_identifier_01 = -1; /* T_called_party_type_identifier_01 */
487 static int hf_tetra_short_number_address = -1; /* INTEGER_0_255 */
488 static int hf_tetra_called_ssi_called_extension = -1; /* BIT_STRING_SIZE_48 */
489 static int hf_tetra_pre_coded_status = -1; /* INTEGER_0_65535 */
490 static int hf_tetra_call_id = -1; /* INTEGER_0_16383 */
491 static int hf_tetra_poll_response = -1; /* INTEGER_0_1 */
492 static int hf_tetra_d_Alert = -1; /* D_ALERT */
493 static int hf_tetra_d_Call_Proceeding = -1; /* D_CALL_PROCEEDING */
494 static int hf_tetra_d_Connect = -1; /* D_CONNECT */
495 static int hf_tetra_d_Connect_Ack = -1; /* D_CONNECT_ACK */
496 static int hf_tetra_d_Disconnect = -1; /* D_DISCONNECT */
497 static int hf_tetra_d_Info = -1; /* D_INFO */
498 static int hf_tetra_d_Release = -1; /* D_RELEASE */
499 static int hf_tetra_d_Setup = -1; /* D_SETUP */
500 static int hf_tetra_d_Status = -1; /* D_STATUS */
501 static int hf_tetra_d_Tx_Ceased = -1; /* D_TX_CEASED */
502 static int hf_tetra_d_Tx_Continue = -1; /* D_TX_CONTINUE */
503 static int hf_tetra_d_Tx_Granted = -1; /* D_TX_GRANTED */
504 static int hf_tetra_d_Tx_Wait = -1; /* D_TX_WAIT */
505 static int hf_tetra_d_Tx_Interrupt = -1; /* NULL */
506 static int hf_tetra_d_Call_Restore = -1; /* D_CALL_RESTORE */
507 static int hf_tetra_d_SDS_Data = -1; /* D_SDS_DATA */
508 static int hf_tetra_d_Facility = -1; /* NULL */
509 static int hf_tetra_calling_party_type_identifier = -1; /* T_calling_party_type_identifier */
510 static int hf_tetra_ssi_extension_01 = -1; /* OCTET_STRING_SIZE_6 */
511 static int hf_tetra_short_data_type_identifier_01 = -1; /* T_short_data_type_identifier_01 */
512 static int hf_tetra_data_3_01 = -1; /* OCTET_STRING_SIZE_8 */
513 static int hf_tetra_calling_party_type_identifier_01 = -1; /* T_calling_party_type_identifier_01 */
514 static int hf_tetra_calling_party_address_SSI = -1; /* INTEGER_0_16777215 */
515 static int hf_tetra_reset_call_time_out_timer = -1; /* INTEGER_0_1 */
516 static int hf_tetra_poll_request = -1; /* INTEGER_0_1 */
517 static int hf_tetra_transmission_request_permission = -1; /* INTEGER_0_1 */
518 static int hf_tetra_continue = -1; /* INTEGER_0_1 */
519 static int hf_tetra_request_to_append_LA = -1; /* BOOLEAN */
520 static int hf_tetra_cipher_control_01 = -1; /* T_cipher_control */
521 static int hf_tetra_no_cipher = -1; /* NULL */
522 static int hf_tetra_ciphering_parameters = -1; /* INTEGER_0_1023 */
523 static int hf_tetra_class_of_MS = -1; /* OCTET_STRING_SIZE_4 */
524 static int hf_tetra_optional_elements_06 = -1; /* T_optional_elements_06 */
525 static int hf_tetra_type2_parameters_04 = -1; /* T_type2_parameters_04 */
526 static int hf_tetra_energy_saving_mode_02 = -1; /* T_energy_saving_mode_01 */
527 static int hf_tetra_la_information = -1; /* T_la_information */
528 static int hf_tetra_la_information_01 = -1; /* INTEGER_0_16383 */
529 static int hf_tetra_ssi_04 = -1; /* T_ssi_01 */
530 static int hf_tetra_address_extension_02 = -1; /* T_address_extension_01 */
531 static int hf_tetra_type3_01 = -1; /* T_type3_01 */
532 static int hf_tetra_type3_elements_01 = -1; /* T_type3_elements_01 */
533 static int hf_tetra_group_identity_location_demand = -1; /* T_group_identity_location_demand */
534 static int hf_tetra_group_identity_location_demand_01 = -1; /* INTEGER_0_3 */
535 static int hf_tetra_group_report_response = -1; /* T_group_report_response */
536 static int hf_tetra_group_report_response_01 = -1; /* BOOLEAN */
537 static int hf_tetra_group_identity_uplink = -1; /* T_group_identity_uplink */
538 static int hf_tetra_group_identity_uplink_01 = -1; /* INTEGER_0_15 */
539 static int hf_tetra_proprietary_02 = -1; /* T_proprietary_01 */
540 static int hf_tetra_group_identity_report = -1; /* BOOLEAN */
541 static int hf_tetra_group_identity_attach_detach_mode = -1; /* BOOLEAN */
542 static int hf_tetra_optional_elements_07 = -1; /* T_optional_elements_07 */
543 static int hf_tetra_type2_element = -1; /* T_type2_element */
544 static int hf_tetra_type3_02 = -1; /* T_type3_02 */
545 static int hf_tetra_type3_elements_02 = -1; /* T_type3_elements_02 */
546 static int hf_tetra_length = -1; /* INTEGER_0_2047 */
547 static int hf_tetra_repeat_num = -1; /* INTEGER_0_63 */
548 static int hf_tetra_group_identity_uplink_02 = -1; /* GROUP_IDENTITY_UPLINK */
549 static int hf_tetra_group_identity_ack_type = -1; /* BOOLEAN */
550 static int hf_tetra_optional_elements_08 = -1; /* T_optional_elements_08 */
551 static int hf_tetra_type2_element_01 = -1; /* T_type2_element_01 */
552 static int hf_tetra_type3_03 = -1; /* T_type3_03 */
553 static int hf_tetra_type3_elements_03 = -1; /* T_type3_elements_03 */
554 static int hf_tetra_hook_method_selection = -1; /* BOOLEAN */
555 static int hf_tetra_simple_duplex_selection = -1; /* T_simple_duplex_selection */
556 static int hf_tetra_basic_service_information = -1; /* Basic_service_information */
557 static int hf_tetra_request_transmit_send_data = -1; /* INTEGER_0_1 */
558 static int hf_tetra_call_priority = -1; /* INTEGER_0_15 */
559 static int hf_tetra_clir_control = -1; /* INTEGER_0_3 */
560 static int hf_tetra_called_party_address = -1; /* Called_party_address_type */
561 static int hf_tetra_optional_elements_09 = -1; /* T_optional_elements_09 */
562 static int hf_tetra_type2_parameters_05 = -1; /* T_type2_parameters_05 */
563 static int hf_tetra_external_subscriber_number = -1; /* T_external_subscriber_number */
564 static int hf_tetra_external_subscriber_number_01 = -1; /* INTEGER_0_31 */
565 static int hf_tetra_prop = -1; /* T_prop */
566 static int hf_tetra_prop_01 = -1; /* Proprietary */
567 static int hf_tetra_circuit_mode = -1; /* CIRCUIT */
568 static int hf_tetra_encryption = -1; /* INTEGER_0_1 */
569 static int hf_tetra_communication = -1; /* INTEGER_0_3 */
570 static int hf_tetra_slots_or_speech = -1; /* INTEGER_0_3 */
571 static int hf_tetra_call_identifier_01 = -1; /* INTEGER_0_1023 */
572 static int hf_tetra_simplex_duplex_selection = -1; /* T_simplex_duplex_selection */
573 static int hf_tetra_optional_elements_10 = -1; /* T_optional_elements_10 */
574 static int hf_tetra_type2_parameters_06 = -1; /* T_type2_parameters_06 */
575 static int hf_tetra_basic_service_information_01 = -1; /* T_basic_service_information */
576 static int hf_tetra_prop_02 = -1; /* T_prop_01 */
577 static int hf_tetra_simplex_duplex_selection_01 = -1; /* T_simplex_duplex_selection_01 */
578 static int hf_tetra_optional_elements_11 = -1; /* T_optional_elements_11 */
579 static int hf_tetra_type2_parameters_07 = -1; /* T_type2_parameters_07 */
580 static int hf_tetra_basic_service_information_02 = -1; /* T_basic_service_information_01 */
581 static int hf_tetra_prop_03 = -1; /* T_prop_02 */
582 static int hf_tetra_optional_elements_12 = -1; /* T_optional_elements_12 */
583 static int hf_tetra_type2_parameters_08 = -1; /* T_type2_parameters_08 */
584 static int hf_tetra_prop_04 = -1; /* T_prop_03 */
585 static int hf_tetra_tx_demand_priority = -1; /* INTEGER_0_3 */
586 static int hf_tetra_encryption_control = -1; /* INTEGER_0_1 */
587 static int hf_tetra_optional_elements_13 = -1; /* T_optional_elements_13 */
588 static int hf_tetra_type2_parameters_09 = -1; /* T_type2_parameters_09 */
589 static int hf_tetra_prop_05 = -1; /* T_prop_04 */
590 static int hf_tetra_optional_elements_14 = -1; /* T_optional_elements_14 */
591 static int hf_tetra_type2_parameters_10 = -1; /* T_type2_parameters_10 */
592 static int hf_tetra_prop_06 = -1; /* T_prop_05 */
593 static int hf_tetra_request_to_transmit_send_data = -1; /* INTEGER_0_1 */
594 static int hf_tetra_other_party_address = -1; /* Other_party_address_type */
595 static int hf_tetra_optional_elements_15 = -1; /* T_optional_elements_15 */
596 static int hf_tetra_type2_parameters_11 = -1; /* T_type2_parameters_11 */
597 static int hf_tetra_prop_07 = -1; /* T_prop_06 */
598 static int hf_tetra_call_time_out = -1; /* INTEGER_0_15 */
599 static int hf_tetra_hook_method_selection_01 = -1; /* INTEGER_0_1 */
600 static int hf_tetra_simplex_duplex_selection_02 = -1; /* T_simplex_duplex_selection_02 */
601 static int hf_tetra_transmission_grant = -1; /* INTEGER_0_3 */
602 static int hf_tetra_optional_elements_16 = -1; /* T_optional_elements_16 */
603 static int hf_tetra_type2_parameters_12 = -1; /* T_type2_parameters_12 */
604 static int hf_tetra_calling_party_address = -1; /* T_calling_party_address */
605 static int hf_tetra_calling_party_address_01 = -1; /* Calling_party_address_type */
606 static int hf_tetra_external_subscriber_number_02 = -1; /* T_external_subscriber_number_01 */
607 static int hf_tetra_external_subscriber_number_03 = -1; /* INTEGER_0_15 */
608 static int hf_tetra_prop_08 = -1; /* T_prop_07 */
609 static int hf_tetra_call_time_out_setup_phase = -1; /* INTEGER_0_7 */
610 static int hf_tetra_simplex_duplex_selection_03 = -1; /* INTEGER_0_1 */
611 static int hf_tetra_optional_elements_17 = -1; /* T_optional_elements_17 */
612 static int hf_tetra_type2_parameters_13 = -1; /* T_type2_parameters_13 */
613 static int hf_tetra_basic_service_information_03 = -1; /* T_basic_service_information_02 */
614 static int hf_tetra_call_status = -1; /* T_call_status */
615 static int hf_tetra_call_status_01 = -1; /* INTEGER_0_7 */
616 static int hf_tetra_notification_indicator = -1; /* T_notification_indicator */
617 static int hf_tetra_notification_indicator_01 = -1; /* INTEGER_0_63 */
618 static int hf_tetra_prop_09 = -1; /* T_prop_08 */
619 static int hf_tetra_simplex_duplex_selection_04 = -1; /* T_simplex_duplex_selection_03 */
620 static int hf_tetra_call_queued = -1; /* BOOLEAN */
621 static int hf_tetra_optional_elements_18 = -1; /* T_optional_elements_18 */
622 static int hf_tetra_type2_parameters_14 = -1; /* T_type2_parameters_14 */
623 static int hf_tetra_basic_service_infomation = -1; /* T_basic_service_infomation */
624 static int hf_tetra_basic_service_infomation_01 = -1; /* Basic_service_information */
625 static int hf_tetra_notification_indicator_02 = -1; /* T_notification_indicator_01 */
626 static int hf_tetra_prop_10 = -1; /* T_prop_09 */
627 static int hf_tetra_call_time_out_01 = -1; /* INTEGER_0_31 */
628 static int hf_tetra_simplex_duplex_selection_05 = -1; /* T_simplex_duplex_selection_04 */
629 static int hf_tetra_call_ownership = -1; /* INTEGER_0_1 */
630 static int hf_tetra_optional_elements_19 = -1; /* T_optional_elements_19 */
631 static int hf_tetra_type2_parameters_15 = -1; /* T_type2_parameters_15 */
632 static int hf_tetra_call_priority_01 = -1; /* T_call_priority */
633 static int hf_tetra_basic_service_information_04 = -1; /* T_basic_service_information_03 */
634 static int hf_tetra_temporary_address = -1; /* T_temporary_address */
635 static int hf_tetra_temporary_address_01 = -1; /* Calling_party_address_type */
636 static int hf_tetra_notification_indicator_03 = -1; /* T_notification_indicator_02 */
637 static int hf_tetra_prop_11 = -1; /* T_prop_10 */
638 static int hf_tetra_optional_elements_20 = -1; /* T_optional_elements_20 */
639 static int hf_tetra_type2_parameters_16 = -1; /* T_type2_parameters_16 */
640 static int hf_tetra_notification_indicator_04 = -1; /* T_notification_indicator_03 */
641 static int hf_tetra_prop_12 = -1; /* T_prop_11 */
642 static int hf_tetra_optional_elements_21 = -1; /* T_optional_elements_21 */
643 static int hf_tetra_type2_parameters_17 = -1; /* T_type2_parameters_17 */
644 static int hf_tetra_notification_indicator_05 = -1; /* T_notification_indicator_04 */
645 static int hf_tetra_prop_13 = -1; /* T_prop_12 */
646 static int hf_tetra_reset_call_time_out = -1; /* INTEGER_0_1 */
647 static int hf_tetra_optional_elements_22 = -1; /* T_optional_elements_22 */
648 static int hf_tetra_type2_parameters_18 = -1; /* T_type2_parameters_18 */
649 static int hf_tetra_new_call_identifier = -1; /* T_new_call_identifier */
650 static int hf_tetra_new_call_identifier_01 = -1; /* INTEGER_0_1023 */
651 static int hf_tetra_call_time_out_02 = -1; /* T_call_time_out */
652 static int hf_tetra_call_time_out_03 = -1; /* INTEGER_0_7 */
653 static int hf_tetra_call_status_02 = -1; /* T_call_status_01 */
654 static int hf_tetra_modify = -1; /* T_modify */
655 static int hf_tetra_modify_01 = -1; /* Modify_type */
656 static int hf_tetra_notification_indicator_06 = -1; /* T_notification_indicator_05 */
657 static int hf_tetra_prop_14 = -1; /* T_prop_13 */
658 static int hf_tetra_optional_elements_23 = -1; /* T_optional_elements_23 */
659 static int hf_tetra_type2_parameters_19 = -1; /* T_type2_parameters_19 */
660 static int hf_tetra_notification_indicator_07 = -1; /* T_notification_indicator_06 */
661 static int hf_tetra_prop_15 = -1; /* T_prop_14 */
662 static int hf_tetra_group_identity_ack_request = -1; /* BOOLEAN */
663 static int hf_tetra_optional_elements_24 = -1; /* T_optional_elements_24 */
664 static int hf_tetra_type2_element_02 = -1; /* T_type2_element_02 */
665 static int hf_tetra_type3_04 = -1; /* T_type3_04 */
666 static int hf_tetra_type3_elements_04 = -1; /* T_type3_elements_04 */
667 static int hf_tetra_group_identity_downlink_02 = -1; /* GROUP_IDENTITY_DOWNLINK */
668 static int hf_tetra_group_identity_attach_detach_accept = -1; /* BOOLEAN */
669 static int hf_tetra_optional_elements_25 = -1; /* T_optional_elements_25 */
670 static int hf_tetra_type2_element_03 = -1; /* T_type2_element_03 */
671 static int hf_tetra_type3_05 = -1; /* T_type3_05 */
672 static int hf_tetra_type3_elements_05 = -1; /* T_type3_elements_05 */
673 static int hf_tetra_called_party_sna = -1; /* INTEGER_0_255 */
674 static int hf_tetra_called_party_ssi = -1; /* INTEGER_0_16777215 */
675 static int hf_tetra_called_party_ssi_extention = -1; /* T_called_party_ssi_extention */
676 static int hf_tetra_called_party_extention = -1; /* INTEGER_0_16777215 */
677 static int hf_tetra_data_01 = -1; /* T_data_01 */
678 static int hf_tetra_element1 = -1; /* Type1 */
679 static int hf_tetra_element = -1; /* Type2 */
680 static int hf_tetra_proprietary_element_owner = -1; /* Proprietary_element_owner */
681 static int hf_tetra_proprietary_element_owner_extension = -1; /* BIT_STRING */
682 static int hf_tetra_simplex_duplex_selection_06 = -1; /* T_simplex_duplex_selection_05 */
684 /*--- End of included file: packet-tetra-hf.c ---*/
685 #line 85 "../../asn1/tetra/packet-tetra-template.c"
687 /* Initialize the subtree pointers */
688 /* These are the ids of the subtrees that we may be creating */
689 static gint ett_tetra = -1;
690 static gint ett_tetra_header = -1;
691 static gint ett_tetra_length = -1;
692 static gint ett_tetra_txreg = -1;
693 static gint ett_tetra_text = -1;
696 /*--- Included file: packet-tetra-ett.c ---*/
697 #line 1 "../../asn1/tetra/packet-tetra-ett.c"
698 static gint ett_tetra_AACH = -1;
699 static gint ett_tetra_BSCH = -1;
700 static gint ett_tetra_MLE_Sync = -1;
701 static gint ett_tetra_BNCH = -1;
702 static gint ett_tetra_T_hyperframe_or_cck = -1;
703 static gint ett_tetra_T_optional_params = -1;
704 static gint ett_tetra_TS_COMMON_FRAMES = -1;
705 static gint ett_tetra_Default_Code_A = -1;
706 static gint ett_tetra_Extended_Services_Broadcast = -1;
707 static gint ett_tetra_T_section = -1;
708 static gint ett_tetra_PRESENT1 = -1;
709 static gint ett_tetra_MAC_ACCESS = -1;
710 static gint ett_tetra_T_data = -1;
711 static gint ett_tetra_Address = -1;
712 static gint ett_tetra_U_LLC_PDU = -1;
713 static gint ett_tetra_U_BL_ACK_FCS = -1;
714 static gint ett_tetra_U_MLE_PDU_FCS = -1;
715 static gint ett_tetra_U_BL_DATA_FCS = -1;
716 static gint ett_tetra_U_BL_ADATA_FCS = -1;
717 static gint ett_tetra_U_MLE_PDU = -1;
718 static gint ett_tetra_ComplexSDU = -1;
719 static gint ett_tetra_T_lengthIndicationOrCapacityRequest = -1;
720 static gint ett_tetra_FRAG = -1;
721 static gint ett_tetra_MAC_FRAG = -1;
722 static gint ett_tetra_MAC_FRAG120 = -1;
723 static gint ett_tetra_MAC_END_UPLINK = -1;
724 static gint ett_tetra_MAC_END_UP114 = -1;
725 static gint ett_tetra_MAC_END_HU = -1;
726 static gint ett_tetra_T_lengthInd_ReservationReq = -1;
727 static gint ett_tetra_MAC_END_DOWNLINK = -1;
728 static gint ett_tetra_T_slot_granting = -1;
729 static gint ett_tetra_T_channel_allocation = -1;
730 static gint ett_tetra_SlotGranting = -1;
731 static gint ett_tetra_ChannelAllocation = -1;
732 static gint ett_tetra_T_extend_carrier_flag = -1;
733 static gint ett_tetra_T_monitoring_pattern = -1;
734 static gint ett_tetra_Extended_carrier_flag = -1;
735 static gint ett_tetra_MAC_END_DOWN111 = -1;
736 static gint ett_tetra_T_slot_granting_01 = -1;
737 static gint ett_tetra_T_channel_allocation_01 = -1;
738 static gint ett_tetra_MAC_RESOURCE = -1;
739 static gint ett_tetra_OTHER_DATA = -1;
740 static gint ett_tetra_T_power_control = -1;
741 static gint ett_tetra_T_slot_granting_02 = -1;
742 static gint ett_tetra_T_channel_allocation_02 = -1;
743 static gint ett_tetra_AddressMacResource = -1;
744 static gint ett_tetra_SSI_NEED = -1;
745 static gint ett_tetra_EVENT_NEED = -1;
746 static gint ett_tetra_USSI_NEED = -1;
747 static gint ett_tetra_SMI_NEED = -1;
748 static gint ett_tetra_SSI_EVENT_NEED = -1;
749 static gint ett_tetra_SSI_USAGE_NEED = -1;
750 static gint ett_tetra_SMI_EVENT_NEED = -1;
751 static gint ett_tetra_MAC_ACCESS_DEFINE = -1;
752 static gint ett_tetra_T_optional_field = -1;
753 static gint ett_tetra_D_LLC_PDU = -1;
754 static gint ett_tetra_D_BL_ACK_FCS = -1;
755 static gint ett_tetra_D_MLE_PDU_FCS = -1;
756 static gint ett_tetra_D_BL_ADATA_FCS = -1;
757 static gint ett_tetra_D_BL_DATA_FCS = -1;
758 static gint ett_tetra_U_BL_ACK = -1;
759 static gint ett_tetra_D_BL_ACK = -1;
760 static gint ett_tetra_U_BL_DATA = -1;
761 static gint ett_tetra_D_BL_DATA = -1;
762 static gint ett_tetra_U_BL_ADATA = -1;
763 static gint ett_tetra_D_BL_ADATA = -1;
764 static gint ett_tetra_D_MLE_PDU = -1;
765 static gint ett_tetra_UMLE_PDU = -1;
766 static gint ett_tetra_DMLE_PDU = -1;
767 static gint ett_tetra_U_PREPARE = -1;
768 static gint ett_tetra_T_optional_elements = -1;
769 static gint ett_tetra_T_type2_parameters = -1;
770 static gint ett_tetra_T_cell_number = -1;
771 static gint ett_tetra_U_RESTORE = -1;
772 static gint ett_tetra_T_optional_elements_01 = -1;
773 static gint ett_tetra_T_type2_parameters_01 = -1;
774 static gint ett_tetra_T_mcc = -1;
775 static gint ett_tetra_T_mnc = -1;
776 static gint ett_tetra_T_la = -1;
777 static gint ett_tetra_D_NEW_CELL = -1;
778 static gint ett_tetra_T_optional_elements_02 = -1;
779 static gint ett_tetra_D_PREPARE_FAIL = -1;
780 static gint ett_tetra_T_optional_elements_03 = -1;
781 static gint ett_tetra_D_NWRK_BRDADCAST = -1;
782 static gint ett_tetra_T_optional_elements_04 = -1;
783 static gint ett_tetra_T_type2_parameters_02 = -1;
784 static gint ett_tetra_T_tetra_network_time = -1;
785 static gint ett_tetra_T_number_of_neighbour_cells = -1;
786 static gint ett_tetra_TETRA_NETWORK_TIME = -1;
787 static gint ett_tetra_D_RESTORE_ACK = -1;
788 static gint ett_tetra_D_RESTORE_FAIL = -1;
789 static gint ett_tetra_U_MM_PDU = -1;
790 static gint ett_tetra_D_MM_PDU = -1;
791 static gint ett_tetra_GROUP_IDENTITY_DOWNLINK = -1;
792 static gint ett_tetra_T_attach_detach_identifiet = -1;
793 static gint ett_tetra_T_attach = -1;
794 static gint ett_tetra_T_detach = -1;
795 static gint ett_tetra_T_address_type = -1;
796 static gint ett_tetra_T_gssi_extension = -1;
797 static gint ett_tetra_GROUP_IDENTITY_UPLINK = -1;
798 static gint ett_tetra_T_attach_detach_identifiet_01 = -1;
799 static gint ett_tetra_T_attach_01 = -1;
800 static gint ett_tetra_T_detach_01 = -1;
801 static gint ett_tetra_T_address_type_01 = -1;
802 static gint ett_tetra_T_gssi_extension_01 = -1;
803 static gint ett_tetra_D_LOCATION_UPDATE_ACCEPT = -1;
804 static gint ett_tetra_T_optional_elements_05 = -1;
805 static gint ett_tetra_T_type2_parameters_03 = -1;
806 static gint ett_tetra_T_ssi = -1;
807 static gint ett_tetra_T_address_extension = -1;
808 static gint ett_tetra_T_suscriber_class = -1;
809 static gint ett_tetra_T_energy_saving_mode = -1;
810 static gint ett_tetra_T_scch_info = -1;
811 static gint ett_tetra_T_type3 = -1;
812 static gint ett_tetra_T_type3_elements = -1;
813 static gint ett_tetra_T_new_ra = -1;
814 static gint ett_tetra_T_group_identity_location_accept = -1;
815 static gint ett_tetra_T_group_predefined_lifetime = -1;
816 static gint ett_tetra_T_group_identity_downlink = -1;
817 static gint ett_tetra_T_proprietary = -1;
818 static gint ett_tetra_D_LOCATION_UPDATE_REJECT = -1;
819 static gint ett_tetra_U_MM_STATUS = -1;
820 static gint ett_tetra_D_MM_STATUS = -1;
821 static gint ett_tetra_U_CMCE_PDU = -1;
822 static gint ett_tetra_U_RELEASE = -1;
823 static gint ett_tetra_U_SDS_DATA = -1;
824 static gint ett_tetra_T_called_party_type_identifier = -1;
825 static gint ett_tetra_T_short_data_type_identifier = -1;
826 static gint ett_tetra_U_STATUS = -1;
827 static gint ett_tetra_T_called_party_type_identifier_01 = -1;
828 static gint ett_tetra_U_INFO = -1;
829 static gint ett_tetra_D_CMCE_PDU = -1;
830 static gint ett_tetra_D_SDS_DATA = -1;
831 static gint ett_tetra_T_calling_party_type_identifier = -1;
832 static gint ett_tetra_T_short_data_type_identifier_01 = -1;
833 static gint ett_tetra_D_STATUS = -1;
834 static gint ett_tetra_T_calling_party_type_identifier_01 = -1;
835 static gint ett_tetra_D_DISCONNECT = -1;
836 static gint ett_tetra_D_INFO = -1;
837 static gint ett_tetra_D_TX_WAIT = -1;
838 static gint ett_tetra_D_TX_CONTINUE = -1;
839 static gint ett_tetra_U_LOCATION_UPDATE_DEMAND = -1;
840 static gint ett_tetra_T_cipher_control = -1;
841 static gint ett_tetra_T_optional_elements_06 = -1;
842 static gint ett_tetra_T_type2_parameters_04 = -1;
843 static gint ett_tetra_T_energy_saving_mode_01 = -1;
844 static gint ett_tetra_T_la_information = -1;
845 static gint ett_tetra_T_ssi_01 = -1;
846 static gint ett_tetra_T_address_extension_01 = -1;
847 static gint ett_tetra_T_type3_01 = -1;
848 static gint ett_tetra_T_type3_elements_01 = -1;
849 static gint ett_tetra_T_group_identity_location_demand = -1;
850 static gint ett_tetra_T_group_report_response = -1;
851 static gint ett_tetra_T_group_identity_uplink = -1;
852 static gint ett_tetra_T_proprietary_01 = -1;
853 static gint ett_tetra_U_ATTACH_DETACH_GROUP_IDENTITY = -1;
854 static gint ett_tetra_T_optional_elements_07 = -1;
855 static gint ett_tetra_T_type2_element = -1;
856 static gint ett_tetra_T_type3_02 = -1;
857 static gint ett_tetra_T_type3_elements_02 = -1;
858 static gint ett_tetra_U_ATTACH_DETACH_GROUP_IDENTITY_ACK = -1;
859 static gint ett_tetra_T_optional_elements_08 = -1;
860 static gint ett_tetra_T_type2_element_01 = -1;
861 static gint ett_tetra_T_type3_03 = -1;
862 static gint ett_tetra_T_type3_elements_03 = -1;
863 static gint ett_tetra_U_SETUP = -1;
864 static gint ett_tetra_T_optional_elements_09 = -1;
865 static gint ett_tetra_T_type2_parameters_05 = -1;
866 static gint ett_tetra_T_external_subscriber_number = -1;
867 static gint ett_tetra_T_prop = -1;
868 static gint ett_tetra_Basic_service_information = -1;
869 static gint ett_tetra_U_ALERT = -1;
870 static gint ett_tetra_T_optional_elements_10 = -1;
871 static gint ett_tetra_T_type2_parameters_06 = -1;
872 static gint ett_tetra_T_basic_service_information = -1;
873 static gint ett_tetra_T_prop_01 = -1;
874 static gint ett_tetra_U_CONNECT = -1;
875 static gint ett_tetra_T_optional_elements_11 = -1;
876 static gint ett_tetra_T_type2_parameters_07 = -1;
877 static gint ett_tetra_T_basic_service_information_01 = -1;
878 static gint ett_tetra_T_prop_02 = -1;
879 static gint ett_tetra_U_TX_CEASED = -1;
880 static gint ett_tetra_T_optional_elements_12 = -1;
881 static gint ett_tetra_T_type2_parameters_08 = -1;
882 static gint ett_tetra_T_prop_03 = -1;
883 static gint ett_tetra_U_TX_DEMAND = -1;
884 static gint ett_tetra_T_optional_elements_13 = -1;
885 static gint ett_tetra_T_type2_parameters_09 = -1;
886 static gint ett_tetra_T_prop_04 = -1;
887 static gint ett_tetra_U_DISCONNECT = -1;
888 static gint ett_tetra_T_optional_elements_14 = -1;
889 static gint ett_tetra_T_type2_parameters_10 = -1;
890 static gint ett_tetra_T_prop_05 = -1;
891 static gint ett_tetra_U_CALL_RESTORE = -1;
892 static gint ett_tetra_T_optional_elements_15 = -1;
893 static gint ett_tetra_T_type2_parameters_11 = -1;
894 static gint ett_tetra_T_prop_06 = -1;
895 static gint ett_tetra_D_SETUP = -1;
896 static gint ett_tetra_T_optional_elements_16 = -1;
897 static gint ett_tetra_T_type2_parameters_12 = -1;
898 static gint ett_tetra_T_calling_party_address = -1;
899 static gint ett_tetra_T_external_subscriber_number_01 = -1;
900 static gint ett_tetra_T_prop_07 = -1;
901 static gint ett_tetra_D_CALL_PROCEEDING = -1;
902 static gint ett_tetra_T_optional_elements_17 = -1;
903 static gint ett_tetra_T_type2_parameters_13 = -1;
904 static gint ett_tetra_T_basic_service_information_02 = -1;
905 static gint ett_tetra_T_call_status = -1;
906 static gint ett_tetra_T_notification_indicator = -1;
907 static gint ett_tetra_T_prop_08 = -1;
908 static gint ett_tetra_D_ALERT = -1;
909 static gint ett_tetra_T_optional_elements_18 = -1;
910 static gint ett_tetra_T_type2_parameters_14 = -1;
911 static gint ett_tetra_T_basic_service_infomation = -1;
912 static gint ett_tetra_T_notification_indicator_01 = -1;
913 static gint ett_tetra_T_prop_09 = -1;
914 static gint ett_tetra_D_CONNECT = -1;
915 static gint ett_tetra_T_optional_elements_19 = -1;
916 static gint ett_tetra_T_type2_parameters_15 = -1;
917 static gint ett_tetra_T_call_priority = -1;
918 static gint ett_tetra_T_basic_service_information_03 = -1;
919 static gint ett_tetra_T_temporary_address = -1;
920 static gint ett_tetra_T_notification_indicator_02 = -1;
921 static gint ett_tetra_T_prop_10 = -1;
922 static gint ett_tetra_D_CONNECT_ACK = -1;
923 static gint ett_tetra_T_optional_elements_20 = -1;
924 static gint ett_tetra_T_type2_parameters_16 = -1;
925 static gint ett_tetra_T_notification_indicator_03 = -1;
926 static gint ett_tetra_T_prop_11 = -1;
927 static gint ett_tetra_D_RELEASE = -1;
928 static gint ett_tetra_T_optional_elements_21 = -1;
929 static gint ett_tetra_T_type2_parameters_17 = -1;
930 static gint ett_tetra_T_notification_indicator_04 = -1;
931 static gint ett_tetra_T_prop_12 = -1;
932 static gint ett_tetra_D_CALL_RESTORE = -1;
933 static gint ett_tetra_T_optional_elements_22 = -1;
934 static gint ett_tetra_T_type2_parameters_18 = -1;
935 static gint ett_tetra_T_new_call_identifier = -1;
936 static gint ett_tetra_T_call_time_out = -1;
937 static gint ett_tetra_T_call_status_01 = -1;
938 static gint ett_tetra_T_modify = -1;
939 static gint ett_tetra_T_notification_indicator_05 = -1;
940 static gint ett_tetra_T_prop_13 = -1;
941 static gint ett_tetra_D_TX_CEASED = -1;
942 static gint ett_tetra_T_optional_elements_23 = -1;
943 static gint ett_tetra_T_type2_parameters_19 = -1;
944 static gint ett_tetra_T_notification_indicator_06 = -1;
945 static gint ett_tetra_T_prop_14 = -1;
946 static gint ett_tetra_D_TX_GRANTED = -1;
947 static gint ett_tetra_D_ATTACH_DETACH_GROUP_IDENTITY = -1;
948 static gint ett_tetra_T_optional_elements_24 = -1;
949 static gint ett_tetra_T_type2_element_02 = -1;
950 static gint ett_tetra_T_type3_04 = -1;
951 static gint ett_tetra_T_type3_elements_04 = -1;
952 static gint ett_tetra_D_ATTACH_DETACH_GROUP_IDENTITY_ACK = -1;
953 static gint ett_tetra_T_optional_elements_25 = -1;
954 static gint ett_tetra_T_type2_element_03 = -1;
955 static gint ett_tetra_T_type3_05 = -1;
956 static gint ett_tetra_T_type3_elements_05 = -1;
957 static gint ett_tetra_Calling_party_address_type = -1;
958 static gint ett_tetra_T_called_party_ssi_extention = -1;
959 static gint ett_tetra_Proprietary = -1;
960 static gint ett_tetra_T_data_01 = -1;
961 static gint ett_tetra_Type1 = -1;
962 static gint ett_tetra_Type2 = -1;
963 static gint ett_tetra_Modify_type = -1;
965 /*--- End of included file: packet-tetra-ett.c ---*/
966 #line 95 "../../asn1/tetra/packet-tetra-template.c"
969 /*--- Included file: packet-tetra-fn.c ---*/
970 #line 1 "../../asn1/tetra/packet-tetra-fn.c"
974 dissect_tetra_INTEGER_0_3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
975 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
976 0U, 3U, NULL, FALSE);
984 dissect_tetra_INTEGER_0_63(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
985 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
986 0U, 63U, NULL, FALSE);
992 static const per_sequence_t AACH_sequence[] = {
993 { &hf_tetra_function , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_3 },
994 { &hf_tetra_field1 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_63 },
995 { &hf_tetra_field2 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_63 },
1000 dissect_tetra_AACH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1001 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1002 ett_tetra_AACH, AACH_sequence);
1008 static const value_string tetra_System_Code_vals[] = {
1009 { 0, "ets-300-392-2" },
1010 { 1, "ets-300-392-2anden-300-392-7" },
1011 { 2, "en-300-392-2-v2-3-2orlateranden-300-392-7" },
1012 { 3, "v-d-reserved" },
1013 { 4, "v-d-reserved" },
1014 { 5, "v-d-reserved" },
1015 { 6, "v-d-reserved" },
1016 { 7, "v-d-reserved" },
1019 { 10, "direct-mode-operation" },
1020 { 11, "direct-mode-operation" },
1021 { 12, "direct-mode-operation" },
1022 { 13, "direct-mode-operation" },
1023 { 14, "direct-mode-operation" },
1024 { 15, "direct-mode-operation" },
1030 dissect_tetra_System_Code(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1031 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1032 16, NULL, FALSE, 0, NULL);
1038 static const value_string tetra_Colour_Code_vals[] = {
1039 { 0, "pre-defined" },
1040 { 1, "operator-defined" },
1041 { 2, "operator-defined" },
1042 { 3, "operator-defined" },
1043 { 4, "operator-defined" },
1044 { 5, "operator-defined" },
1045 { 6, "operator-defined" },
1046 { 7, "operator-defined" },
1047 { 8, "operator-defined" },
1048 { 9, "operator-defined" },
1049 { 10, "operator-defined" },
1050 { 11, "operator-defined" },
1051 { 12, "operator-defined" },
1052 { 13, "operator-defined" },
1053 { 14, "operator-defined" },
1054 { 15, "operator-defined" },
1055 { 16, "operator-defined" },
1056 { 17, "operator-defined" },
1057 { 18, "operator-defined" },
1058 { 19, "operator-defined" },
1059 { 20, "operator-defined" },
1060 { 21, "operator-defined" },
1061 { 22, "operator-defined" },
1062 { 23, "operator-defined" },
1063 { 24, "operator-defined" },
1064 { 25, "operator-defined" },
1065 { 26, "operator-defined" },
1066 { 27, "operator-defined" },
1067 { 28, "operator-defined" },
1068 { 29, "operator-defined" },
1069 { 30, "operator-defined" },
1070 { 31, "operator-defined" },
1071 { 32, "operator-defined" },
1072 { 33, "operator-defined" },
1073 { 34, "operator-defined" },
1074 { 35, "operator-defined" },
1075 { 36, "operator-defined" },
1076 { 37, "operator-defined" },
1077 { 38, "operator-defined" },
1078 { 39, "operator-defined" },
1079 { 40, "operator-defined" },
1080 { 41, "operator-defined" },
1081 { 42, "operator-defined" },
1082 { 43, "operator-defined" },
1083 { 44, "operator-defined" },
1084 { 45, "operator-defined" },
1085 { 46, "operator-defined" },
1086 { 47, "operator-defined" },
1087 { 48, "operator-defined" },
1088 { 49, "operator-defined" },
1089 { 50, "operator-defined" },
1090 { 51, "operator-defined" },
1091 { 52, "operator-defined" },
1092 { 53, "operator-defined" },
1093 { 54, "operator-defined" },
1094 { 55, "operator-defined" },
1095 { 56, "operator-defined" },
1096 { 57, "operator-defined" },
1097 { 58, "operator-defined" },
1098 { 59, "operator-defined" },
1099 { 60, "operator-defined" },
1100 { 61, "operator-defined" },
1101 { 62, "operator-defined" },
1102 { 63, "operator-defined" },
1108 dissect_tetra_Colour_Code(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1109 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1110 64, NULL, FALSE, 0, NULL);
1116 static const value_string tetra_Timeslot_Number_vals[] = {
1117 { 0, "timeslot-1" },
1118 { 1, "timeslot-2" },
1119 { 2, "timeslot-3" },
1120 { 3, "timeslot-4" },
1126 dissect_tetra_Timeslot_Number(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1127 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1128 4, NULL, FALSE, 0, NULL);
1134 static const value_string tetra_Frame_Number_vals[] = {
1172 dissect_tetra_Frame_Number(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1173 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1174 32, NULL, FALSE, 0, NULL);
1180 static const value_string tetra_Multiple_Frame_Number_vals[] = {
1182 { 1, "multiframe-1" },
1183 { 2, "multiframe-2" },
1184 { 3, "multiframe-3" },
1185 { 4, "multiframe-4" },
1186 { 5, "multiframe-5" },
1187 { 6, "multiframe-6" },
1188 { 7, "multiframe-7" },
1189 { 8, "multiframe-8" },
1190 { 9, "multiframe-9" },
1191 { 10, "multiframe-10" },
1192 { 11, "multiframe-11" },
1193 { 12, "multiframe-12" },
1194 { 13, "multiframe-13" },
1195 { 14, "multiframe-14" },
1196 { 15, "multiframe-15" },
1197 { 16, "multiframe-16" },
1198 { 17, "multiframe-17" },
1199 { 18, "multiframe-18" },
1200 { 19, "multiframe-19" },
1201 { 20, "multiframe-20" },
1202 { 21, "multiframe-21" },
1203 { 22, "multiframe-22" },
1204 { 23, "multiframe-23" },
1205 { 24, "multiframe-24" },
1206 { 25, "multiframe-25" },
1207 { 26, "multiframe-26" },
1208 { 27, "multiframe-27" },
1209 { 28, "multiframe-28" },
1210 { 29, "multiframe-29" },
1211 { 30, "multiframe-30" },
1212 { 31, "multiframe-31" },
1213 { 32, "multiframe-32" },
1214 { 33, "multiframe-33" },
1215 { 34, "multiframe-34" },
1216 { 35, "multiframe-35" },
1217 { 36, "multiframe-36" },
1218 { 37, "multiframe-37" },
1219 { 38, "multiframe-38" },
1220 { 39, "multiframe-39" },
1221 { 40, "multiframe-40" },
1222 { 41, "multiframe-41" },
1223 { 42, "multiframe-42" },
1224 { 43, "multiframe-43" },
1225 { 44, "multiframe-44" },
1226 { 45, "multiframe-45" },
1227 { 46, "multiframe-46" },
1228 { 47, "multiframe-47" },
1229 { 48, "multiframe-48" },
1230 { 49, "multiframe-49" },
1231 { 50, "multiframe-50" },
1232 { 51, "multiframe-51" },
1233 { 52, "multiframe-52" },
1234 { 53, "multiframe-53" },
1235 { 54, "multiframe-54" },
1236 { 55, "multiframe-55" },
1237 { 56, "multiframe-56" },
1238 { 57, "multiframe-57" },
1239 { 58, "multiframe-58" },
1240 { 59, "multiframe-59" },
1241 { 60, "multiframe-60" },
1250 dissect_tetra_Multiple_Frame_Number(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1251 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1252 64, NULL, FALSE, 0, NULL);
1258 static const value_string tetra_Sharing_Mod_vals[] = {
1259 { 0, "continuous-transmission" },
1260 { 1, "carrier-sharing" },
1261 { 2, "mcch-sharing" },
1262 { 3, "traffic-carrier-sharing" },
1268 dissect_tetra_Sharing_Mod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1269 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1270 4, NULL, FALSE, 0, NULL);
1276 static const value_string tetra_TS_Reserved_Frames_vals[] = {
1277 { 0, "frame-reserved-1" },
1278 { 1, "frames-reserved-2" },
1279 { 2, "frames-reserved-3" },
1280 { 3, "frames-reserved-4" },
1281 { 4, "frames-reserved-6" },
1282 { 5, "frames-reserved-9" },
1283 { 6, "frames-reserved-12" },
1284 { 7, "frames-reserved-18" },
1290 dissect_tetra_TS_Reserved_Frames(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1291 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1292 8, NULL, FALSE, 0, NULL);
1298 static const value_string tetra_U_Plane_DTX_vals[] = {
1299 { 0, "not-allowed" },
1306 dissect_tetra_U_Plane_DTX(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1307 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1308 2, NULL, FALSE, 0, NULL);
1314 static const value_string tetra_Frame_18_Extension_vals[] = {
1315 { 0, "not-allowed" },
1322 dissect_tetra_Frame_18_Extension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1323 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1324 2, NULL, FALSE, 0, NULL);
1330 static const value_string tetra_Reserved_vals[] = {
1338 dissect_tetra_Reserved(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1339 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1340 2, NULL, FALSE, 0, NULL);
1348 dissect_tetra_INTEGER_0_1023(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1349 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1350 0U, 1023U, NULL, FALSE);
1358 dissect_tetra_INTEGER_0_16383(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1359 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1360 0U, 16383U, NULL, FALSE);
1368 dissect_tetra_INTEGER_0_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1369 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1370 0U, 1U, NULL, FALSE);
1376 static const per_sequence_t MLE_Sync_sequence[] = {
1377 { &hf_tetra_mcc , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1023 },
1378 { &hf_tetra_mnc , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_16383 },
1379 { &hf_tetra_neighbour_cell_broadcast, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_3 },
1380 { &hf_tetra_cell_service_level, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_3 },
1381 { &hf_tetra_late_entry_information, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
1382 { NULL, 0, 0, NULL }
1386 dissect_tetra_MLE_Sync(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1387 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1388 ett_tetra_MLE_Sync, MLE_Sync_sequence);
1394 static const per_sequence_t BSCH_sequence[] = {
1395 { &hf_tetra_system_code , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_System_Code },
1396 { &hf_tetra_colour_code , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Colour_Code },
1397 { &hf_tetra_timeslot_number, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Timeslot_Number },
1398 { &hf_tetra_frame_number , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Frame_Number },
1399 { &hf_tetra_multiple_frame_number, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Multiple_Frame_Number },
1400 { &hf_tetra_sharing_mod , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Sharing_Mod },
1401 { &hf_tetra_ts_reserved_frames, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_TS_Reserved_Frames },
1402 { &hf_tetra_u_plane_dtx , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_U_Plane_DTX },
1403 { &hf_tetra_frame_18_extension, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Frame_18_Extension },
1404 { &hf_tetra_reserved , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Reserved },
1405 { &hf_tetra_tm_sdu , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_MLE_Sync },
1406 { NULL, 0, 0, NULL }
1410 dissect_tetra_BSCH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1411 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1412 ett_tetra_BSCH, BSCH_sequence);
1420 dissect_tetra_INTEGER_0_4095(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1421 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1422 0U, 4095U, NULL, FALSE);
1430 dissect_tetra_INTEGER_0_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1431 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1432 0U, 15U, NULL, FALSE);
1438 static const value_string tetra_Offset_vals[] = {
1440 { 1, "offset-positive-6-point-25" },
1441 { 2, "offset-minus-6-point-25" },
1442 { 3, "offset-12-point-5" },
1448 dissect_tetra_Offset(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1449 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1450 4, NULL, FALSE, 0, NULL);
1458 dissect_tetra_INTEGER_0_7(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1459 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1460 0U, 7U, NULL, FALSE);
1466 static const value_string tetra_Reverse_Operation_vals[] = {
1474 dissect_tetra_Reverse_Operation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1475 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1476 2, NULL, FALSE, 0, NULL);
1482 static const value_string tetra_Sencond_Ctl_Carrier_vals[] = {
1484 { 1, "timeslot-2" },
1485 { 2, "timeslots-2and3" },
1486 { 3, "timeslots-2and3and4" },
1492 dissect_tetra_Sencond_Ctl_Carrier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1493 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1494 4, NULL, FALSE, 0, NULL);
1500 static const value_string tetra_MS_TXPWR_MAX_CELL_vals[] = {
1514 dissect_tetra_MS_TXPWR_MAX_CELL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1515 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1516 8, NULL, FALSE, 0, NULL);
1522 static const value_string tetra_RXLEV_ACCESS_MIN_vals[] = {
1544 dissect_tetra_RXLEV_ACCESS_MIN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1545 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1546 16, NULL, FALSE, 0, NULL);
1552 static const value_string tetra_ACCESS_PARAMETER_vals[] = {
1574 dissect_tetra_ACCESS_PARAMETER(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1575 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1576 16, NULL, FALSE, 0, NULL);
1582 static const value_string tetra_RADIO_DOWNLINK_TIMEOUT_vals[] = {
1584 { 1, "timeslots-144" },
1585 { 2, "timeslots-288" },
1586 { 3, "timeslots-432" },
1587 { 4, "timeslots-576" },
1588 { 5, "timeslots-720" },
1589 { 6, "timeslots-864" },
1590 { 7, "timeslots-1008" },
1591 { 8, "timeslots-1152" },
1592 { 9, "timeslots-1296" },
1593 { 10, "timeslots-1440" },
1594 { 11, "timeslots-1584" },
1595 { 12, "timeslots-1728" },
1596 { 13, "timeslots-1872" },
1597 { 14, "timeslots-2016" },
1598 { 15, "timeslots-2160" },
1604 dissect_tetra_RADIO_DOWNLINK_TIMEOUT(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1605 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1606 16, NULL, FALSE, 0, NULL);
1614 dissect_tetra_INTEGER_0_65535(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1615 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1616 0U, 65535U, NULL, FALSE);
1622 static const value_string tetra_T_hyperframe_or_cck_vals[] = {
1623 { 0, "hyperframe" },
1628 static const per_choice_t T_hyperframe_or_cck_choice[] = {
1629 { 0, &hf_tetra_hyperframe , ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_65535 },
1630 { 1, &hf_tetra_cckid , ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_65535 },
1631 { 0, NULL, 0, NULL }
1635 dissect_tetra_T_hyperframe_or_cck(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1636 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1637 ett_tetra_T_hyperframe_or_cck, T_hyperframe_or_cck_choice,
1644 static const value_string tetra_FRAME_vals[] = {
1645 { 0, "not-common" },
1652 dissect_tetra_FRAME(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1653 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1654 2, NULL, FALSE, 0, NULL);
1660 static const per_sequence_t TS_COMMON_FRAMES_sequence[] = {
1661 { &hf_tetra_frame1 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_FRAME },
1662 { &hf_tetra_frame2 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_FRAME },
1663 { &hf_tetra_frame3 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_FRAME },
1664 { &hf_tetra_frame4 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_FRAME },
1665 { &hf_tetra_frame5 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_FRAME },
1666 { &hf_tetra_frame6 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_FRAME },
1667 { &hf_tetra_frame7 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_FRAME },
1668 { &hf_tetra_frame8 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_FRAME },
1669 { &hf_tetra_frame9 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_FRAME },
1670 { &hf_tetra_frame10 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_FRAME },
1671 { &hf_tetra_frame11 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_FRAME },
1672 { &hf_tetra_frame12 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_FRAME },
1673 { &hf_tetra_frame13 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_FRAME },
1674 { &hf_tetra_frame14 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_FRAME },
1675 { &hf_tetra_frame15 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_FRAME },
1676 { &hf_tetra_frame16 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_FRAME },
1677 { &hf_tetra_frame17 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_FRAME },
1678 { &hf_tetra_frame18 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_FRAME },
1679 { NULL, 0, 0, NULL }
1683 dissect_tetra_TS_COMMON_FRAMES(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1684 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1685 ett_tetra_TS_COMMON_FRAMES, TS_COMMON_FRAMES_sequence);
1691 static const value_string tetra_IMM_vals[] = {
1692 { 0, "always-randomize" },
1693 { 1, "randomize-after-imm-tdma" },
1694 { 2, "randomize-after-imm-tdma" },
1695 { 3, "randomize-after-imm-tdma" },
1696 { 4, "randomize-after-imm-tdma" },
1697 { 5, "randomize-after-imm-tdma" },
1698 { 6, "randomize-after-imm-tdma" },
1699 { 7, "randomize-after-imm-tdma" },
1700 { 8, "randomize-after-imm-tdma" },
1701 { 9, "randomize-after-imm-tdma" },
1702 { 10, "randomize-after-imm-tdma" },
1703 { 11, "randomize-after-imm-tdma" },
1704 { 12, "randomize-after-imm-tdma" },
1705 { 13, "randomize-after-imm-tdma" },
1706 { 14, "randomize-after-imm-tdma" },
1707 { 15, "immediate-access-allowed" },
1713 dissect_tetra_IMM(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1714 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1715 16, NULL, FALSE, 0, NULL);
1721 static const value_string tetra_WT_vals[] = {
1723 { 1, "response-within-wt-downlink" },
1724 { 2, "response-within-wt-downlink" },
1725 { 3, "response-within-wt-downlink" },
1726 { 4, "response-within-wt-downlink" },
1727 { 5, "response-within-wt-downlink" },
1728 { 6, "response-within-wt-downlink" },
1729 { 7, "response-within-wt-downlink" },
1730 { 8, "response-within-wt-downlink" },
1731 { 9, "response-within-wt-downlink" },
1732 { 10, "response-within-wt-downlink" },
1733 { 11, "response-within-wt-downlink" },
1734 { 12, "response-within-wt-downlink" },
1735 { 13, "response-within-wt-downlink" },
1736 { 14, "response-within-wt-downlink" },
1737 { 15, "response-within-wt-downlink" },
1743 dissect_tetra_WT(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1744 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1745 16, NULL, FALSE, 0, NULL);
1751 static const value_string tetra_NU_vals[] = {
1762 { 10, "random-10" },
1763 { 11, "random-11" },
1764 { 12, "random-12" },
1765 { 13, "random-13" },
1766 { 14, "random-14" },
1767 { 15, "random-15" },
1773 dissect_tetra_NU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1774 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1775 16, NULL, FALSE, 0, NULL);
1781 static const value_string tetra_Frame_Len_Factor_vals[] = {
1782 { 0, "multiply-1" },
1783 { 1, "multiply-4" },
1789 dissect_tetra_Frame_Len_Factor(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1790 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1791 2, NULL, FALSE, 0, NULL);
1797 static const value_string tetra_Timeslot_Pointer_vals[] = {
1798 { 0, "same-as-downlink" },
1799 { 1, "timeslot-4" },
1800 { 2, "timeslot-bit-map" },
1801 { 3, "timeslot-bit-map" },
1802 { 4, "timeslot-bit-map" },
1803 { 5, "timeslot-bit-map" },
1804 { 6, "timeslot-bit-map" },
1805 { 7, "timeslot-bit-map" },
1806 { 8, "timeslot-bit-map" },
1807 { 9, "timeslot-bit-map" },
1808 { 10, "timeslot-bit-map" },
1809 { 11, "timeslot-bit-map" },
1810 { 12, "timeslot-bit-map" },
1811 { 13, "timeslot-bit-map" },
1812 { 14, "timeslot-bit-map" },
1813 { 15, "all-four-timeslots" },
1819 dissect_tetra_Timeslot_Pointer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1820 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1821 16, NULL, FALSE, 0, NULL);
1827 static const value_string tetra_Min_Pdu_Priority_vals[] = {
1828 { 0, "priority-0" },
1829 { 1, "priority-1" },
1830 { 2, "priority-2" },
1831 { 3, "priority-3" },
1832 { 4, "priority-4" },
1833 { 5, "priority-5" },
1834 { 6, "priority-6" },
1835 { 7, "priority-7" },
1841 dissect_tetra_Min_Pdu_Priority(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1842 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1843 8, NULL, FALSE, 0, NULL);
1849 static const per_sequence_t Default_Code_A_sequence[] = {
1850 { &hf_tetra_imm , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_IMM },
1851 { &hf_tetra_wt , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_WT },
1852 { &hf_tetra_nu , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_NU },
1853 { &hf_tetra_frame_len_factor, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Frame_Len_Factor },
1854 { &hf_tetra_timeslot_pointer, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Timeslot_Pointer },
1855 { &hf_tetra_min_pdu_priority, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Min_Pdu_Priority },
1856 { NULL, 0, 0, NULL }
1860 dissect_tetra_Default_Code_A(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1861 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1862 ett_tetra_Default_Code_A, Default_Code_A_sequence);
1870 dissect_tetra_INTEGER_0_255(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1871 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1872 0U, 255U, NULL, FALSE);
1878 static const value_string tetra_SDS_TL_Addressing_Method_vals[] = {
1880 { 1, "service-centre" },
1881 { 2, "never-use-service-centre" },
1882 { 3, "ms-choice-to-use-service-centre" },
1888 dissect_tetra_SDS_TL_Addressing_Method(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1889 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1890 4, NULL, FALSE, 0, NULL);
1896 static const value_string tetra_Data_Priority_Supported_vals[] = {
1897 { 0, "not-supported" },
1904 dissect_tetra_Data_Priority_Supported(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1905 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1906 2, NULL, FALSE, 0, NULL);
1912 static const value_string tetra_Section_Information_vals[] = {
1913 { 0, "no-information" },
1914 { 1, "futher-information" },
1920 dissect_tetra_Section_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1921 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1922 2, NULL, FALSE, 0, NULL);
1928 static const per_sequence_t PRESENT1_sequence[] = {
1929 { &hf_tetra_data_priority_supported, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Data_Priority_Supported },
1930 { &hf_tetra_reserved_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_7 },
1931 { &hf_tetra_section_2_information, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Section_Information },
1932 { &hf_tetra_section_3_information, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Section_Information },
1933 { &hf_tetra_section_4_information, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Section_Information },
1934 { NULL, 0, 0, NULL }
1938 dissect_tetra_PRESENT1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1939 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1940 ett_tetra_PRESENT1, PRESENT1_sequence);
1948 dissect_tetra_INTEGER_0_127(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1949 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1950 0U, 127U, NULL, FALSE);
1956 static const value_string tetra_T_section_vals[] = {
1964 static const per_choice_t T_section_choice[] = {
1965 { 0, &hf_tetra_present_1 , ASN1_NO_EXTENSIONS , dissect_tetra_PRESENT1 },
1966 { 1, &hf_tetra_present_2 , ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_127 },
1967 { 2, &hf_tetra_present_3 , ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_127 },
1968 { 3, &hf_tetra_present_4 , ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_127 },
1969 { 0, NULL, 0, NULL }
1973 dissect_tetra_T_section(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1974 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1975 ett_tetra_T_section, T_section_choice,
1982 static const per_sequence_t Extended_Services_Broadcast_sequence[] = {
1983 { &hf_tetra_security_information, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_255 },
1984 { &hf_tetra_sds_tl_addressing_method, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_SDS_TL_Addressing_Method },
1985 { &hf_tetra_gck_supported , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
1986 { &hf_tetra_section , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_section },
1987 { NULL, 0, 0, NULL }
1991 dissect_tetra_Extended_Services_Broadcast(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1992 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1993 ett_tetra_Extended_Services_Broadcast, Extended_Services_Broadcast_sequence);
1999 static const value_string tetra_T_optional_params_vals[] = {
2000 { 0, "even-multiframe" },
2001 { 1, "odd-multiframe" },
2002 { 2, "access-a-code" },
2003 { 3, "extend-service" },
2007 static const per_choice_t T_optional_params_choice[] = {
2008 { 0, &hf_tetra_even_multiframe, ASN1_NO_EXTENSIONS , dissect_tetra_TS_COMMON_FRAMES },
2009 { 1, &hf_tetra_odd_multiframe, ASN1_NO_EXTENSIONS , dissect_tetra_TS_COMMON_FRAMES },
2010 { 2, &hf_tetra_access_a_code , ASN1_NO_EXTENSIONS , dissect_tetra_Default_Code_A },
2011 { 3, &hf_tetra_extend_service, ASN1_NO_EXTENSIONS , dissect_tetra_Extended_Services_Broadcast },
2012 { 0, NULL, 0, NULL }
2016 dissect_tetra_T_optional_params(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2017 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2018 ett_tetra_T_optional_params, T_optional_params_choice,
2025 static const per_sequence_t BNCH_sequence[] = {
2026 { &hf_tetra_pdu_type , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_3 },
2027 { &hf_tetra_broadcast_type, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_3 },
2028 { &hf_tetra_main_carrier , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_4095 },
2029 { &hf_tetra_frequency_band, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_15 },
2030 { &hf_tetra_offset , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Offset },
2031 { &hf_tetra_duplex_spacing, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_7 },
2032 { &hf_tetra_reverse_operation, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Reverse_Operation },
2033 { &hf_tetra_sencond_ctl_carrier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Sencond_Ctl_Carrier },
2034 { &hf_tetra_ms_txpwr_max_cell, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_MS_TXPWR_MAX_CELL },
2035 { &hf_tetra_rxlev_access_min, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_RXLEV_ACCESS_MIN },
2036 { &hf_tetra_access_parameter, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_ACCESS_PARAMETER },
2037 { &hf_tetra_radio_downlink_timeout, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_RADIO_DOWNLINK_TIMEOUT },
2038 { &hf_tetra_hyperframe_or_cck, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_hyperframe_or_cck },
2039 { &hf_tetra_optional_params, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_optional_params },
2040 { &hf_tetra_la , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_16383 },
2041 { &hf_tetra_subscriber_class, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_65535 },
2042 { &hf_tetra_registriation , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
2043 { &hf_tetra_de_registration, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
2044 { &hf_tetra_priority_cell , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
2045 { &hf_tetra_minimum_mode_service, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
2046 { &hf_tetra_migration , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
2047 { &hf_tetra_system_wide_service, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
2048 { &hf_tetra_tetra_voice_service, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
2049 { &hf_tetra_circuit_mode_data_service, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
2050 { &hf_tetra_reserved_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
2051 { &hf_tetra_sndcp_service , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
2052 { &hf_tetra_air_interface_encryption, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
2053 { &hf_tetra_advanced_link_support, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
2054 { NULL, 0, 0, NULL }
2058 dissect_tetra_BNCH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2059 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2060 ett_tetra_BNCH, BNCH_sequence);
2066 static const value_string tetra_Fill_Bit_Indication_vals[] = {
2067 { 0, "no-present" },
2074 dissect_tetra_Fill_Bit_Indication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2075 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2076 2, NULL, FALSE, 0, NULL);
2082 static const value_string tetra_Encrypted_Flag_vals[] = {
2083 { 0, "not-encrypted" },
2090 dissect_tetra_Encrypted_Flag(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2091 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2092 2, NULL, FALSE, 0, NULL);
2100 dissect_tetra_INTEGER_0_16777215(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2101 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2102 0U, 16777215U, NULL, FALSE);
2108 static const value_string tetra_Address_vals[] = {
2110 { 1, "eventLabel" },
2116 static const per_choice_t Address_choice[] = {
2117 { 0, &hf_tetra_ssi , ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_16777215 },
2118 { 1, &hf_tetra_eventLabel , ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_1023 },
2119 { 2, &hf_tetra_ussi , ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_16777215 },
2120 { 3, &hf_tetra_smi , ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_16777215 },
2121 { 0, NULL, 0, NULL }
2125 dissect_tetra_Address(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2126 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2127 ett_tetra_Address, Address_choice,
2136 dissect_tetra_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2137 offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
2143 static const value_string tetra_UPDATE_TYPE_vals[] = {
2144 { 0, "roaming-location-updating" },
2145 { 1, "temporary-registration" },
2146 { 2, "periodic-location-updating" },
2147 { 3, "itsi-attach" },
2148 { 4, "call-restoration-roaming" },
2149 { 5, "migrating-or-call-restoration-migrating" },
2150 { 6, "demand-location-updating" },
2151 { 7, "disabled-MS-updating" },
2157 dissect_tetra_UPDATE_TYPE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2158 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2159 8, NULL, FALSE, 0, NULL);
2167 dissect_tetra_BOOLEAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2168 offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
2174 static const value_string tetra_T_cipher_control_vals[] = {
2176 { 1, "ciphering-parameters" },
2180 static const per_choice_t T_cipher_control_choice[] = {
2181 { 0, &hf_tetra_no_cipher , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
2182 { 1, &hf_tetra_ciphering_parameters, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_1023 },
2183 { 0, NULL, 0, NULL }
2187 dissect_tetra_T_cipher_control(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2188 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2189 ett_tetra_T_cipher_control, T_cipher_control_choice,
2198 dissect_tetra_OCTET_STRING_SIZE_4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2199 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
2206 static const value_string tetra_T_energy_saving_mode_01_vals[] = {
2208 { 1, "energy-saving-mode" },
2212 static const per_choice_t T_energy_saving_mode_01_choice[] = {
2213 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
2214 { 1, &hf_tetra_energy_saving_mode_01, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_7 },
2215 { 0, NULL, 0, NULL }
2219 dissect_tetra_T_energy_saving_mode_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2220 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2221 ett_tetra_T_energy_saving_mode_01, T_energy_saving_mode_01_choice,
2228 static const value_string tetra_T_la_information_vals[] = {
2230 { 1, "la-information" },
2234 static const per_choice_t T_la_information_choice[] = {
2235 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
2236 { 1, &hf_tetra_la_information_01, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_16383 },
2237 { 0, NULL, 0, NULL }
2241 dissect_tetra_T_la_information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2242 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2243 ett_tetra_T_la_information, T_la_information_choice,
2252 dissect_tetra_OCTET_STRING_SIZE_3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2253 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
2260 static const value_string tetra_T_ssi_01_vals[] = {
2266 static const per_choice_t T_ssi_01_choice[] = {
2267 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
2268 { 1, &hf_tetra_ssi_03 , ASN1_NO_EXTENSIONS , dissect_tetra_OCTET_STRING_SIZE_3 },
2269 { 0, NULL, 0, NULL }
2273 dissect_tetra_T_ssi_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2274 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2275 ett_tetra_T_ssi_01, T_ssi_01_choice,
2282 static const value_string tetra_T_address_extension_01_vals[] = {
2284 { 1, "address-extension" },
2288 static const per_choice_t T_address_extension_01_choice[] = {
2289 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
2290 { 1, &hf_tetra_address_extension_01, ASN1_NO_EXTENSIONS , dissect_tetra_OCTET_STRING_SIZE_3 },
2291 { 0, NULL, 0, NULL }
2295 dissect_tetra_T_address_extension_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2296 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2297 ett_tetra_T_address_extension_01, T_address_extension_01_choice,
2304 static const value_string tetra_TYPE3_IDENTIFIER_vals[] = {
2306 { 1, "default-group-attachment-lifetime" },
2307 { 2, "new-registered-area" },
2308 { 3, "group-identity-location-demand" },
2309 { 4, "group-report-response" },
2310 { 5, "group-identity-location-accept" },
2311 { 6, "dm-ms-address" },
2312 { 7, "group-identity-downlink" },
2313 { 8, "group-identity-uplink" },
2314 { 9, "authentication-uplink" },
2315 { 10, "authentication-downlink" },
2317 { 12, "reserved1" },
2318 { 13, "reserved2" },
2319 { 14, "reserved3" },
2320 { 15, "proprietary" },
2326 dissect_tetra_TYPE3_IDENTIFIER(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2327 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2328 16, NULL, FALSE, 0, NULL);
2334 static const value_string tetra_T_group_identity_location_demand_vals[] = {
2336 { 1, "group-identity-location-demand" },
2340 static const per_choice_t T_group_identity_location_demand_choice[] = {
2341 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
2342 { 1, &hf_tetra_group_identity_location_demand_01, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_3 },
2343 { 0, NULL, 0, NULL }
2347 dissect_tetra_T_group_identity_location_demand(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2348 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2349 ett_tetra_T_group_identity_location_demand, T_group_identity_location_demand_choice,
2356 static const value_string tetra_T_group_report_response_vals[] = {
2358 { 1, "group-report-response" },
2362 static const per_choice_t T_group_report_response_choice[] = {
2363 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
2364 { 1, &hf_tetra_group_report_response_01, ASN1_NO_EXTENSIONS , dissect_tetra_BOOLEAN },
2365 { 0, NULL, 0, NULL }
2369 dissect_tetra_T_group_report_response(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2370 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2371 ett_tetra_T_group_report_response, T_group_report_response_choice,
2378 static const value_string tetra_T_group_identity_uplink_vals[] = {
2380 { 1, "group-identity-uplink" },
2384 static const per_choice_t T_group_identity_uplink_choice[] = {
2385 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
2386 { 1, &hf_tetra_group_identity_uplink_01, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_15 },
2387 { 0, NULL, 0, NULL }
2391 dissect_tetra_T_group_identity_uplink(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2392 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2393 ett_tetra_T_group_identity_uplink, T_group_identity_uplink_choice,
2400 static const value_string tetra_T_proprietary_01_vals[] = {
2402 { 1, "proprietary" },
2406 static const per_choice_t T_proprietary_01_choice[] = {
2407 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
2408 { 1, &hf_tetra_proprietary_01, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_7 },
2409 { 0, NULL, 0, NULL }
2413 dissect_tetra_T_proprietary_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2414 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2415 ett_tetra_T_proprietary_01, T_proprietary_01_choice,
2422 static const per_sequence_t T_type3_elements_01_sequence[] = {
2423 { &hf_tetra_type3_identifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_TYPE3_IDENTIFIER },
2424 { &hf_tetra_group_identity_location_demand, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_group_identity_location_demand },
2425 { &hf_tetra_group_report_response, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_group_report_response },
2426 { &hf_tetra_group_identity_uplink, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_group_identity_uplink },
2427 { &hf_tetra_proprietary_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_proprietary_01 },
2428 { NULL, 0, 0, NULL }
2432 dissect_tetra_T_type3_elements_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2433 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2434 ett_tetra_T_type3_elements_01, T_type3_elements_01_sequence);
2440 static const value_string tetra_T_type3_01_vals[] = {
2442 { 1, "type3-elements" },
2446 static const per_choice_t T_type3_01_choice[] = {
2447 { 0, &hf_tetra_no_type3 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
2448 { 1, &hf_tetra_type3_elements_01, ASN1_NO_EXTENSIONS , dissect_tetra_T_type3_elements_01 },
2449 { 0, NULL, 0, NULL }
2453 dissect_tetra_T_type3_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2454 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2455 ett_tetra_T_type3_01, T_type3_01_choice,
2462 static const per_sequence_t T_type2_parameters_04_sequence[] = {
2463 { &hf_tetra_energy_saving_mode_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_energy_saving_mode_01 },
2464 { &hf_tetra_la_information, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_la_information },
2465 { &hf_tetra_ssi_04 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_ssi_01 },
2466 { &hf_tetra_address_extension_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_address_extension_01 },
2467 { &hf_tetra_type3_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_type3_01 },
2468 { NULL, 0, 0, NULL }
2472 dissect_tetra_T_type2_parameters_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2473 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2474 ett_tetra_T_type2_parameters_04, T_type2_parameters_04_sequence);
2480 static const value_string tetra_T_optional_elements_06_vals[] = {
2482 { 1, "type2-parameters" },
2486 static const per_choice_t T_optional_elements_06_choice[] = {
2487 { 0, &hf_tetra_no_type2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
2488 { 1, &hf_tetra_type2_parameters_04, ASN1_NO_EXTENSIONS , dissect_tetra_T_type2_parameters_04 },
2489 { 0, NULL, 0, NULL }
2493 dissect_tetra_T_optional_elements_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2494 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2495 ett_tetra_T_optional_elements_06, T_optional_elements_06_choice,
2502 static const per_sequence_t U_LOCATION_UPDATE_DEMAND_sequence[] = {
2503 { &hf_tetra_location_update_type, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_UPDATE_TYPE },
2504 { &hf_tetra_request_to_append_LA, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_BOOLEAN },
2505 { &hf_tetra_cipher_control_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_cipher_control },
2506 { &hf_tetra_class_of_MS , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_OCTET_STRING_SIZE_4 },
2507 { &hf_tetra_optional_elements_06, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_optional_elements_06 },
2508 { NULL, 0, 0, NULL }
2512 dissect_tetra_U_LOCATION_UPDATE_DEMAND(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2513 #line 102 "../../asn1/tetra/tetra.cnf"
2514 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2515 ett_tetra_U_LOCATION_UPDATE_DEMAND, U_LOCATION_UPDATE_DEMAND_sequence);
2517 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "U-LOCATION-UPDATE-DEMAND");
2524 static const value_string tetra_T_scanning_on_off_vals[] = {
2532 dissect_tetra_T_scanning_on_off(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2533 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2534 2, NULL, FALSE, 0, NULL);
2540 static const per_sequence_t U_MM_STATUS_sequence[] = {
2541 { &hf_tetra_status_uplink , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_63 },
2542 { &hf_tetra_scanning_on_off, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_scanning_on_off },
2543 { NULL, 0, 0, NULL }
2547 dissect_tetra_U_MM_STATUS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2548 #line 233 "../../asn1/tetra/tetra.cnf"
2549 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2550 ett_tetra_U_MM_STATUS, U_MM_STATUS_sequence);
2552 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "U-MM-STATUS");
2561 dissect_tetra_INTEGER_0_2047(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2562 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2563 0U, 2047U, NULL, FALSE);
2569 static const per_sequence_t T_attach_01_sequence[] = {
2570 { &hf_tetra_class_of_usage, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_7 },
2571 { NULL, 0, 0, NULL }
2575 dissect_tetra_T_attach_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2576 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2577 ett_tetra_T_attach_01, T_attach_01_sequence);
2583 static const value_string tetra_T_detach_uplike_vals[] = {
2584 { 0, "unknow-gssi" },
2585 { 1, "unvaild-cipher" },
2586 { 2, "user-intitial" },
2593 dissect_tetra_T_detach_uplike(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2594 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2595 4, NULL, FALSE, 0, NULL);
2601 static const per_sequence_t T_detach_01_sequence[] = {
2602 { &hf_tetra_detach_uplike , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_detach_uplike },
2603 { NULL, 0, 0, NULL }
2607 dissect_tetra_T_detach_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2608 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2609 ett_tetra_T_detach_01, T_detach_01_sequence);
2615 static const value_string tetra_T_attach_detach_identifiet_01_vals[] = {
2621 static const per_choice_t T_attach_detach_identifiet_01_choice[] = {
2622 { 0, &hf_tetra_attach_01 , ASN1_NO_EXTENSIONS , dissect_tetra_T_attach_01 },
2623 { 1, &hf_tetra_detach_01 , ASN1_NO_EXTENSIONS , dissect_tetra_T_detach_01 },
2624 { 0, NULL, 0, NULL }
2628 dissect_tetra_T_attach_detach_identifiet_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2629 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2630 ett_tetra_T_attach_detach_identifiet_01, T_attach_detach_identifiet_01_choice,
2637 static const per_sequence_t T_gssi_extension_01_sequence[] = {
2638 { &hf_tetra_gssi_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_OCTET_STRING_SIZE_3 },
2639 { &hf_tetra_extension , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_OCTET_STRING_SIZE_3 },
2640 { NULL, 0, 0, NULL }
2644 dissect_tetra_T_gssi_extension_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2645 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2646 ett_tetra_T_gssi_extension_01, T_gssi_extension_01_sequence);
2652 static const value_string tetra_T_address_type_01_vals[] = {
2654 { 1, "gssi-extension" },
2659 static const per_choice_t T_address_type_01_choice[] = {
2660 { 0, &hf_tetra_gssi_01 , ASN1_NO_EXTENSIONS , dissect_tetra_OCTET_STRING_SIZE_3 },
2661 { 1, &hf_tetra_gssi_extension_01, ASN1_NO_EXTENSIONS , dissect_tetra_T_gssi_extension_01 },
2662 { 2, &hf_tetra_vgssi , ASN1_NO_EXTENSIONS , dissect_tetra_OCTET_STRING_SIZE_3 },
2663 { 0, NULL, 0, NULL }
2667 dissect_tetra_T_address_type_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2668 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2669 ett_tetra_T_address_type_01, T_address_type_01_choice,
2676 static const per_sequence_t GROUP_IDENTITY_UPLINK_sequence[] = {
2677 { &hf_tetra_attach_detach_identifiet_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_attach_detach_identifiet_01 },
2678 { &hf_tetra_address_type_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_address_type_01 },
2679 { NULL, 0, 0, NULL }
2683 dissect_tetra_GROUP_IDENTITY_UPLINK(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2684 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2685 ett_tetra_GROUP_IDENTITY_UPLINK, GROUP_IDENTITY_UPLINK_sequence);
2691 static const per_sequence_t T_type3_elements_02_sequence[] = {
2692 { &hf_tetra_type3_identifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_TYPE3_IDENTIFIER },
2693 { &hf_tetra_length , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_2047 },
2694 { &hf_tetra_repeat_num , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_63 },
2695 { &hf_tetra_group_identity_uplink_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_GROUP_IDENTITY_UPLINK },
2696 { NULL, 0, 0, NULL }
2700 dissect_tetra_T_type3_elements_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2701 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2702 ett_tetra_T_type3_elements_02, T_type3_elements_02_sequence);
2708 static const value_string tetra_T_type3_02_vals[] = {
2710 { 1, "type3-elements" },
2714 static const per_choice_t T_type3_02_choice[] = {
2715 { 0, &hf_tetra_no_type3 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
2716 { 1, &hf_tetra_type3_elements_02, ASN1_NO_EXTENSIONS , dissect_tetra_T_type3_elements_02 },
2717 { 0, NULL, 0, NULL }
2721 dissect_tetra_T_type3_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2722 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2723 ett_tetra_T_type3_02, T_type3_02_choice,
2730 static const per_sequence_t T_type2_element_sequence[] = {
2731 { &hf_tetra_type3_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_type3_02 },
2732 { NULL, 0, 0, NULL }
2736 dissect_tetra_T_type2_element(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2737 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2738 ett_tetra_T_type2_element, T_type2_element_sequence);
2744 static const value_string tetra_T_optional_elements_07_vals[] = {
2746 { 1, "type2-element" },
2750 static const per_choice_t T_optional_elements_07_choice[] = {
2751 { 0, &hf_tetra_no_type2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
2752 { 1, &hf_tetra_type2_element , ASN1_NO_EXTENSIONS , dissect_tetra_T_type2_element },
2753 { 0, NULL, 0, NULL }
2757 dissect_tetra_T_optional_elements_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2758 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2759 ett_tetra_T_optional_elements_07, T_optional_elements_07_choice,
2766 static const per_sequence_t U_ATTACH_DETACH_GROUP_IDENTITY_sequence[] = {
2767 { &hf_tetra_group_identity_report, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_BOOLEAN },
2768 { &hf_tetra_group_identity_attach_detach_mode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_BOOLEAN },
2769 { &hf_tetra_optional_elements_07, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_optional_elements_07 },
2770 { NULL, 0, 0, NULL }
2774 dissect_tetra_U_ATTACH_DETACH_GROUP_IDENTITY(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2775 #line 243 "../../asn1/tetra/tetra.cnf"
2776 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2777 ett_tetra_U_ATTACH_DETACH_GROUP_IDENTITY, U_ATTACH_DETACH_GROUP_IDENTITY_sequence);
2779 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "U-ATTACH-DETACH-GROUP-IDENTITY");
2786 static const per_sequence_t T_type3_elements_03_sequence[] = {
2787 { &hf_tetra_type3_identifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_TYPE3_IDENTIFIER },
2788 { &hf_tetra_length , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_2047 },
2789 { &hf_tetra_repeat_num , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_63 },
2790 { &hf_tetra_group_identity_uplink_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_GROUP_IDENTITY_UPLINK },
2791 { NULL, 0, 0, NULL }
2795 dissect_tetra_T_type3_elements_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2796 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2797 ett_tetra_T_type3_elements_03, T_type3_elements_03_sequence);
2803 static const value_string tetra_T_type3_03_vals[] = {
2805 { 1, "type3-elements" },
2809 static const per_choice_t T_type3_03_choice[] = {
2810 { 0, &hf_tetra_no_type3 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
2811 { 1, &hf_tetra_type3_elements_03, ASN1_NO_EXTENSIONS , dissect_tetra_T_type3_elements_03 },
2812 { 0, NULL, 0, NULL }
2816 dissect_tetra_T_type3_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2817 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2818 ett_tetra_T_type3_03, T_type3_03_choice,
2825 static const per_sequence_t T_type2_element_01_sequence[] = {
2826 { &hf_tetra_type3_03 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_type3_03 },
2827 { NULL, 0, 0, NULL }
2831 dissect_tetra_T_type2_element_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2832 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2833 ett_tetra_T_type2_element_01, T_type2_element_01_sequence);
2839 static const value_string tetra_T_optional_elements_08_vals[] = {
2841 { 1, "type2-element" },
2845 static const per_choice_t T_optional_elements_08_choice[] = {
2846 { 0, &hf_tetra_no_type2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
2847 { 1, &hf_tetra_type2_element_01, ASN1_NO_EXTENSIONS , dissect_tetra_T_type2_element_01 },
2848 { 0, NULL, 0, NULL }
2852 dissect_tetra_T_optional_elements_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2853 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2854 ett_tetra_T_optional_elements_08, T_optional_elements_08_choice,
2861 static const per_sequence_t U_ATTACH_DETACH_GROUP_IDENTITY_ACK_sequence[] = {
2862 { &hf_tetra_group_identity_ack_type, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_BOOLEAN },
2863 { &hf_tetra_group_identity_attach_detach_mode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_BOOLEAN },
2864 { &hf_tetra_optional_elements_08, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_optional_elements_08 },
2865 { NULL, 0, 0, NULL }
2869 dissect_tetra_U_ATTACH_DETACH_GROUP_IDENTITY_ACK(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2870 #line 248 "../../asn1/tetra/tetra.cnf"
2871 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2872 ett_tetra_U_ATTACH_DETACH_GROUP_IDENTITY_ACK, U_ATTACH_DETACH_GROUP_IDENTITY_ACK_sequence);
2874 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "U-ATTACH-DETACH-GROUP-IDENTITY-ACK");
2881 static const value_string tetra_U_MM_PDU_vals[] = {
2882 { 0, "u-Authentication" },
2883 { 1, "u-Itsi-Detach" },
2884 { 2, "u-Location-Update-Demand" },
2885 { 3, "u-MM-Status" },
2886 { 4, "u-MM-reserved1" },
2888 { 6, "u-MM-reserved3" },
2889 { 7, "u-Attach-Detach-Group-Identity" },
2890 { 8, "u-Attach-Detach-Group-Identity-Ack" },
2891 { 9, "u-TEI-Provide" },
2892 { 10, "u-MM-reserved6" },
2893 { 11, "u-Disabled-Status" },
2894 { 12, "u-MM-reserved7" },
2895 { 13, "u-MM-reserved8" },
2896 { 14, "u-MM-reserved9" },
2897 { 15, "u-MM-Function-Not-Support" },
2901 static const per_choice_t U_MM_PDU_choice[] = {
2902 { 0, &hf_tetra_u_Authentication, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
2903 { 1, &hf_tetra_u_Itsi_Detach , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
2904 { 2, &hf_tetra_u_Location_Update_Demand, ASN1_NO_EXTENSIONS , dissect_tetra_U_LOCATION_UPDATE_DEMAND },
2905 { 3, &hf_tetra_u_MM_Status , ASN1_NO_EXTENSIONS , dissect_tetra_U_MM_STATUS },
2906 { 4, &hf_tetra_u_MM_reserved1, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
2907 { 5, &hf_tetra_u_WK , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
2908 { 6, &hf_tetra_u_MM_reserved3, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
2909 { 7, &hf_tetra_u_Attach_Detach_Group_Identity, ASN1_NO_EXTENSIONS , dissect_tetra_U_ATTACH_DETACH_GROUP_IDENTITY },
2910 { 8, &hf_tetra_u_Attach_Detach_Group_Identity_Ack, ASN1_NO_EXTENSIONS , dissect_tetra_U_ATTACH_DETACH_GROUP_IDENTITY_ACK },
2911 { 9, &hf_tetra_u_TEI_Provide , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
2912 { 10, &hf_tetra_u_MM_reserved6, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
2913 { 11, &hf_tetra_u_Disabled_Status, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
2914 { 12, &hf_tetra_u_MM_reserved7, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
2915 { 13, &hf_tetra_u_MM_reserved8, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
2916 { 14, &hf_tetra_u_MM_reserved9, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
2917 { 15, &hf_tetra_u_MM_Function_Not_Support, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
2918 { 0, NULL, 0, NULL }
2922 dissect_tetra_U_MM_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2923 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2924 ett_tetra_U_MM_PDU, U_MM_PDU_choice,
2931 static const value_string tetra_T_simplex_duplex_selection_vals[] = {
2939 dissect_tetra_T_simplex_duplex_selection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2940 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2941 2, NULL, FALSE, 0, NULL);
2947 static const value_string tetra_CIRCUIT_vals[] = {
2948 { 0, "speech-tch-s" },
2949 { 1, "unprotected-tch-7-2" },
2950 { 2, "low-protection-tch-4-8" },
2951 { 3, "low-protection-tch-4-8" },
2952 { 4, "low-protection-tch-4-8" },
2953 { 5, "high-protection-tch-2-4" },
2954 { 6, "high-protection-tch-2-4" },
2955 { 7, "high-protection-tch-2-4" },
2961 dissect_tetra_CIRCUIT(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2962 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2963 8, NULL, FALSE, 0, NULL);
2969 static const per_sequence_t Basic_service_information_sequence[] = {
2970 { &hf_tetra_circuit_mode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_CIRCUIT },
2971 { &hf_tetra_encryption , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
2972 { &hf_tetra_communication , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_3 },
2973 { &hf_tetra_slots_or_speech, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_3 },
2974 { NULL, 0, 0, NULL }
2978 dissect_tetra_Basic_service_information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2979 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2980 ett_tetra_Basic_service_information, Basic_service_information_sequence);
2986 static const value_string tetra_T_basic_service_information_vals[] = {
2988 { 1, "basic-service-information" },
2992 static const per_choice_t T_basic_service_information_choice[] = {
2993 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
2994 { 1, &hf_tetra_basic_service_information, ASN1_NO_EXTENSIONS , dissect_tetra_Basic_service_information },
2995 { 0, NULL, 0, NULL }
2999 dissect_tetra_T_basic_service_information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3000 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3001 ett_tetra_T_basic_service_information, T_basic_service_information_choice,
3010 dissect_tetra_Proprietary_element_owner(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3011 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3012 0U, 255U, NULL, FALSE);
3020 dissect_tetra_BIT_STRING(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3021 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
3022 NO_BOUND, NO_BOUND, FALSE, NULL);
3028 static const per_sequence_t Type1_sequence[] = {
3029 { &hf_tetra_proprietary_element_owner, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Proprietary_element_owner },
3030 { &hf_tetra_proprietary_element_owner_extension, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_BIT_STRING },
3031 { NULL, 0, 0, NULL }
3035 dissect_tetra_Type1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3036 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3037 ett_tetra_Type1, Type1_sequence);
3043 static const per_sequence_t Type2_sequence[] = {
3044 { &hf_tetra_proprietary_element_owner, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Proprietary_element_owner },
3045 { NULL, 0, 0, NULL }
3049 dissect_tetra_Type2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3050 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3051 ett_tetra_Type2, Type2_sequence);
3057 static const value_string tetra_T_data_01_vals[] = {
3063 static const per_choice_t T_data_01_choice[] = {
3064 { 0, &hf_tetra_element1 , ASN1_NO_EXTENSIONS , dissect_tetra_Type1 },
3065 { 1, &hf_tetra_element , ASN1_NO_EXTENSIONS , dissect_tetra_Type2 },
3066 { 0, NULL, 0, NULL }
3070 dissect_tetra_T_data_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3071 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3072 ett_tetra_T_data_01, T_data_01_choice,
3079 static const per_sequence_t Proprietary_sequence[] = {
3080 { &hf_tetra_data_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_data_01 },
3081 { NULL, 0, 0, NULL }
3085 dissect_tetra_Proprietary(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3086 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3087 ett_tetra_Proprietary, Proprietary_sequence);
3093 static const value_string tetra_T_prop_01_vals[] = {
3099 static const per_choice_t T_prop_01_choice[] = {
3100 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
3101 { 1, &hf_tetra_prop_01 , ASN1_NO_EXTENSIONS , dissect_tetra_Proprietary },
3102 { 0, NULL, 0, NULL }
3106 dissect_tetra_T_prop_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3107 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3108 ett_tetra_T_prop_01, T_prop_01_choice,
3115 static const per_sequence_t T_type2_parameters_06_sequence[] = {
3116 { &hf_tetra_basic_service_information_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_basic_service_information },
3117 { &hf_tetra_prop_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_prop_01 },
3118 { NULL, 0, 0, NULL }
3122 dissect_tetra_T_type2_parameters_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3123 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3124 ett_tetra_T_type2_parameters_06, T_type2_parameters_06_sequence);
3130 static const value_string tetra_T_optional_elements_10_vals[] = {
3132 { 1, "type2-parameters" },
3136 static const per_choice_t T_optional_elements_10_choice[] = {
3137 { 0, &hf_tetra_no_type2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
3138 { 1, &hf_tetra_type2_parameters_06, ASN1_NO_EXTENSIONS , dissect_tetra_T_type2_parameters_06 },
3139 { 0, NULL, 0, NULL }
3143 dissect_tetra_T_optional_elements_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3144 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3145 ett_tetra_T_optional_elements_10, T_optional_elements_10_choice,
3152 static const per_sequence_t U_ALERT_sequence[] = {
3153 { &hf_tetra_call_identifier_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1023 },
3154 { &hf_tetra_reserved_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
3155 { &hf_tetra_simplex_duplex_selection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_simplex_duplex_selection },
3156 { &hf_tetra_optional_elements_10, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_optional_elements_10 },
3157 { NULL, 0, 0, NULL }
3161 dissect_tetra_U_ALERT(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3162 #line 182 "../../asn1/tetra/tetra.cnf"
3163 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3164 ett_tetra_U_ALERT, U_ALERT_sequence);
3166 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "U-ALERT");
3173 static const value_string tetra_T_simplex_duplex_selection_01_vals[] = {
3181 dissect_tetra_T_simplex_duplex_selection_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3182 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
3183 2, NULL, FALSE, 0, NULL);
3189 static const value_string tetra_T_basic_service_information_01_vals[] = {
3191 { 1, "basic-service-information" },
3195 static const per_choice_t T_basic_service_information_01_choice[] = {
3196 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
3197 { 1, &hf_tetra_basic_service_information, ASN1_NO_EXTENSIONS , dissect_tetra_Basic_service_information },
3198 { 0, NULL, 0, NULL }
3202 dissect_tetra_T_basic_service_information_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3203 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3204 ett_tetra_T_basic_service_information_01, T_basic_service_information_01_choice,
3211 static const value_string tetra_T_prop_02_vals[] = {
3217 static const per_choice_t T_prop_02_choice[] = {
3218 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
3219 { 1, &hf_tetra_prop_01 , ASN1_NO_EXTENSIONS , dissect_tetra_Proprietary },
3220 { 0, NULL, 0, NULL }
3224 dissect_tetra_T_prop_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3225 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3226 ett_tetra_T_prop_02, T_prop_02_choice,
3233 static const per_sequence_t T_type2_parameters_07_sequence[] = {
3234 { &hf_tetra_basic_service_information_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_basic_service_information_01 },
3235 { &hf_tetra_prop_03 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_prop_02 },
3236 { NULL, 0, 0, NULL }
3240 dissect_tetra_T_type2_parameters_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3241 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3242 ett_tetra_T_type2_parameters_07, T_type2_parameters_07_sequence);
3248 static const value_string tetra_T_optional_elements_11_vals[] = {
3250 { 1, "type2-parameters" },
3254 static const per_choice_t T_optional_elements_11_choice[] = {
3255 { 0, &hf_tetra_no_type2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
3256 { 1, &hf_tetra_type2_parameters_07, ASN1_NO_EXTENSIONS , dissect_tetra_T_type2_parameters_07 },
3257 { 0, NULL, 0, NULL }
3261 dissect_tetra_T_optional_elements_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3262 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3263 ett_tetra_T_optional_elements_11, T_optional_elements_11_choice,
3270 static const per_sequence_t U_CONNECT_sequence[] = {
3271 { &hf_tetra_call_identifier_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1023 },
3272 { &hf_tetra_hook_method_selection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_BOOLEAN },
3273 { &hf_tetra_simplex_duplex_selection_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_simplex_duplex_selection_01 },
3274 { &hf_tetra_optional_elements_11, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_optional_elements_11 },
3275 { NULL, 0, 0, NULL }
3279 dissect_tetra_U_CONNECT(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3280 #line 187 "../../asn1/tetra/tetra.cnf"
3281 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3282 ett_tetra_U_CONNECT, U_CONNECT_sequence);
3284 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "U-CONNECT");
3293 dissect_tetra_INTEGER_0_31(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3294 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3295 0U, 31U, NULL, FALSE);
3301 static const value_string tetra_T_prop_05_vals[] = {
3307 static const per_choice_t T_prop_05_choice[] = {
3308 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
3309 { 1, &hf_tetra_prop_01 , ASN1_NO_EXTENSIONS , dissect_tetra_Proprietary },
3310 { 0, NULL, 0, NULL }
3314 dissect_tetra_T_prop_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3315 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3316 ett_tetra_T_prop_05, T_prop_05_choice,
3323 static const per_sequence_t T_type2_parameters_10_sequence[] = {
3324 { &hf_tetra_prop_06 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_prop_05 },
3325 { NULL, 0, 0, NULL }
3329 dissect_tetra_T_type2_parameters_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3330 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3331 ett_tetra_T_type2_parameters_10, T_type2_parameters_10_sequence);
3337 static const value_string tetra_T_optional_elements_14_vals[] = {
3339 { 1, "type2-parameters" },
3343 static const per_choice_t T_optional_elements_14_choice[] = {
3344 { 0, &hf_tetra_no_type2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
3345 { 1, &hf_tetra_type2_parameters_10, ASN1_NO_EXTENSIONS , dissect_tetra_T_type2_parameters_10 },
3346 { 0, NULL, 0, NULL }
3350 dissect_tetra_T_optional_elements_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3351 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3352 ett_tetra_T_optional_elements_14, T_optional_elements_14_choice,
3359 static const per_sequence_t U_DISCONNECT_sequence[] = {
3360 { &hf_tetra_call_identifier_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1023 },
3361 { &hf_tetra_disconnect_cause, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_31 },
3362 { &hf_tetra_optional_elements_14, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_optional_elements_14 },
3363 { NULL, 0, 0, NULL }
3367 dissect_tetra_U_DISCONNECT(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3368 #line 192 "../../asn1/tetra/tetra.cnf"
3369 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3370 ett_tetra_U_DISCONNECT, U_DISCONNECT_sequence);
3372 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "U-DISCONNECT");
3379 static const per_sequence_t U_INFO_sequence[] = {
3380 { &hf_tetra_call_id , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_16383 },
3381 { &hf_tetra_poll_response , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
3382 { NULL, 0, 0, NULL }
3386 dissect_tetra_U_INFO(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3387 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3388 ett_tetra_U_INFO, U_INFO_sequence);
3394 static const per_sequence_t U_RELEASE_sequence[] = {
3395 { &hf_tetra_call_identifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_16383 },
3396 { &hf_tetra_disconnect_cause, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_31 },
3397 { NULL, 0, 0, NULL }
3401 dissect_tetra_U_RELEASE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3402 #line 79 "../../asn1/tetra/tetra.cnf"
3403 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3404 ett_tetra_U_RELEASE, U_RELEASE_sequence);
3406 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "U-RELEASE");
3407 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3408 ett_tetra_U_RELEASE, U_RELEASE_sequence);
3410 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "U-RELEASE");
3417 static const value_string tetra_T_simple_duplex_selection_vals[] = {
3425 dissect_tetra_T_simple_duplex_selection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3426 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
3427 2, NULL, FALSE, 0, NULL);
3433 static const per_sequence_t T_called_party_ssi_extention_sequence[] = {
3434 { &hf_tetra_called_party_ssi, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_16777215 },
3435 { &hf_tetra_called_party_extention, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_16777215 },
3436 { NULL, 0, 0, NULL }
3440 dissect_tetra_T_called_party_ssi_extention(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3441 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3442 ett_tetra_T_called_party_ssi_extention, T_called_party_ssi_extention_sequence);
3448 static const value_string tetra_Calling_party_address_type_vals[] = {
3449 { 0, "called-party-sna" },
3450 { 1, "called-party-ssi" },
3451 { 2, "called-party-ssi-extention" },
3455 static const per_choice_t Calling_party_address_type_choice[] = {
3456 { 0, &hf_tetra_called_party_sna, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_255 },
3457 { 1, &hf_tetra_called_party_ssi, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_16777215 },
3458 { 2, &hf_tetra_called_party_ssi_extention, ASN1_NO_EXTENSIONS , dissect_tetra_T_called_party_ssi_extention },
3459 { 0, NULL, 0, NULL }
3463 dissect_tetra_Calling_party_address_type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3464 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3465 ett_tetra_Calling_party_address_type, Calling_party_address_type_choice,
3474 dissect_tetra_Called_party_address_type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3475 offset = dissect_tetra_Calling_party_address_type(tvb, offset, actx, tree, hf_index);
3481 static const value_string tetra_T_external_subscriber_number_vals[] = {
3483 { 1, "external-subscriber-number" },
3487 static const per_choice_t T_external_subscriber_number_choice[] = {
3488 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
3489 { 1, &hf_tetra_external_subscriber_number_01, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_31 },
3490 { 0, NULL, 0, NULL }
3494 dissect_tetra_T_external_subscriber_number(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3495 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3496 ett_tetra_T_external_subscriber_number, T_external_subscriber_number_choice,
3503 static const value_string tetra_T_prop_vals[] = {
3509 static const per_choice_t T_prop_choice[] = {
3510 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
3511 { 1, &hf_tetra_prop_01 , ASN1_NO_EXTENSIONS , dissect_tetra_Proprietary },
3512 { 0, NULL, 0, NULL }
3516 dissect_tetra_T_prop(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3517 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3518 ett_tetra_T_prop, T_prop_choice,
3525 static const per_sequence_t T_type2_parameters_05_sequence[] = {
3526 { &hf_tetra_external_subscriber_number, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_external_subscriber_number },
3527 { &hf_tetra_prop , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_prop },
3528 { NULL, 0, 0, NULL }
3532 dissect_tetra_T_type2_parameters_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3533 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3534 ett_tetra_T_type2_parameters_05, T_type2_parameters_05_sequence);
3540 static const value_string tetra_T_optional_elements_09_vals[] = {
3542 { 1, "type2-parameters" },
3546 static const per_choice_t T_optional_elements_09_choice[] = {
3547 { 0, &hf_tetra_no_type2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
3548 { 1, &hf_tetra_type2_parameters_05, ASN1_NO_EXTENSIONS , dissect_tetra_T_type2_parameters_05 },
3549 { 0, NULL, 0, NULL }
3553 dissect_tetra_T_optional_elements_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3554 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3555 ett_tetra_T_optional_elements_09, T_optional_elements_09_choice,
3562 static const per_sequence_t U_SETUP_sequence[] = {
3563 { &hf_tetra_area_selection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_15 },
3564 { &hf_tetra_hook_method_selection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_BOOLEAN },
3565 { &hf_tetra_simple_duplex_selection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_simple_duplex_selection },
3566 { &hf_tetra_basic_service_information, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Basic_service_information },
3567 { &hf_tetra_request_transmit_send_data, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
3568 { &hf_tetra_call_priority , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_15 },
3569 { &hf_tetra_clir_control , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_3 },
3570 { &hf_tetra_called_party_address, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Called_party_address_type },
3571 { &hf_tetra_optional_elements_09, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_optional_elements_09 },
3572 { NULL, 0, 0, NULL }
3576 dissect_tetra_U_SETUP(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3577 #line 202 "../../asn1/tetra/tetra.cnf"
3578 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3579 ett_tetra_U_SETUP, U_SETUP_sequence);
3581 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "U-SETUP");
3590 dissect_tetra_BIT_STRING_SIZE_48(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3591 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
3592 48, 48, FALSE, NULL);
3598 static const value_string tetra_T_called_party_type_identifier_01_vals[] = {
3599 { 0, "short-number-address" },
3601 { 2, "called-ssi-called-extension" },
3606 static const per_choice_t T_called_party_type_identifier_01_choice[] = {
3607 { 0, &hf_tetra_short_number_address, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_255 },
3608 { 1, &hf_tetra_ssi , ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_16777215 },
3609 { 2, &hf_tetra_called_ssi_called_extension, ASN1_NO_EXTENSIONS , dissect_tetra_BIT_STRING_SIZE_48 },
3610 { 3, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
3611 { 0, NULL, 0, NULL }
3615 dissect_tetra_T_called_party_type_identifier_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3616 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3617 ett_tetra_T_called_party_type_identifier_01, T_called_party_type_identifier_01_choice,
3624 static const per_sequence_t U_STATUS_sequence[] = {
3625 { &hf_tetra_area_selection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_15 },
3626 { &hf_tetra_called_party_type_identifier_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_called_party_type_identifier_01 },
3627 { &hf_tetra_pre_coded_status, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_65535 },
3628 { NULL, 0, 0, NULL }
3632 dissect_tetra_U_STATUS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3633 #line 207 "../../asn1/tetra/tetra.cnf"
3634 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3635 ett_tetra_U_STATUS, U_STATUS_sequence);
3637 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "U-STATUS");
3644 static const value_string tetra_T_prop_03_vals[] = {
3650 static const per_choice_t T_prop_03_choice[] = {
3651 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
3652 { 1, &hf_tetra_prop_01 , ASN1_NO_EXTENSIONS , dissect_tetra_Proprietary },
3653 { 0, NULL, 0, NULL }
3657 dissect_tetra_T_prop_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3658 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3659 ett_tetra_T_prop_03, T_prop_03_choice,
3666 static const per_sequence_t T_type2_parameters_08_sequence[] = {
3667 { &hf_tetra_prop_04 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_prop_03 },
3668 { NULL, 0, 0, NULL }
3672 dissect_tetra_T_type2_parameters_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3673 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3674 ett_tetra_T_type2_parameters_08, T_type2_parameters_08_sequence);
3680 static const value_string tetra_T_optional_elements_12_vals[] = {
3682 { 1, "type2-parameters" },
3686 static const per_choice_t T_optional_elements_12_choice[] = {
3687 { 0, &hf_tetra_no_type2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
3688 { 1, &hf_tetra_type2_parameters_08, ASN1_NO_EXTENSIONS , dissect_tetra_T_type2_parameters_08 },
3689 { 0, NULL, 0, NULL }
3693 dissect_tetra_T_optional_elements_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3694 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3695 ett_tetra_T_optional_elements_12, T_optional_elements_12_choice,
3702 static const per_sequence_t U_TX_CEASED_sequence[] = {
3703 { &hf_tetra_call_identifier_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1023 },
3704 { &hf_tetra_optional_elements_12, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_optional_elements_12 },
3705 { NULL, 0, 0, NULL }
3709 dissect_tetra_U_TX_CEASED(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3710 #line 227 "../../asn1/tetra/tetra.cnf"
3711 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3712 ett_tetra_U_TX_CEASED, U_TX_CEASED_sequence);
3714 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "U-TX-CEASED");
3721 static const value_string tetra_T_prop_04_vals[] = {
3727 static const per_choice_t T_prop_04_choice[] = {
3728 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
3729 { 1, &hf_tetra_prop_01 , ASN1_NO_EXTENSIONS , dissect_tetra_Proprietary },
3730 { 0, NULL, 0, NULL }
3734 dissect_tetra_T_prop_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3735 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3736 ett_tetra_T_prop_04, T_prop_04_choice,
3743 static const per_sequence_t T_type2_parameters_09_sequence[] = {
3744 { &hf_tetra_prop_05 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_prop_04 },
3745 { NULL, 0, 0, NULL }
3749 dissect_tetra_T_type2_parameters_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3750 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3751 ett_tetra_T_type2_parameters_09, T_type2_parameters_09_sequence);
3757 static const value_string tetra_T_optional_elements_13_vals[] = {
3759 { 1, "type2-parameters" },
3763 static const per_choice_t T_optional_elements_13_choice[] = {
3764 { 0, &hf_tetra_no_type2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
3765 { 1, &hf_tetra_type2_parameters_09, ASN1_NO_EXTENSIONS , dissect_tetra_T_type2_parameters_09 },
3766 { 0, NULL, 0, NULL }
3770 dissect_tetra_T_optional_elements_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3771 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3772 ett_tetra_T_optional_elements_13, T_optional_elements_13_choice,
3779 static const per_sequence_t U_TX_DEMAND_sequence[] = {
3780 { &hf_tetra_call_identifier_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1023 },
3781 { &hf_tetra_tx_demand_priority, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_3 },
3782 { &hf_tetra_encryption_control, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
3783 { &hf_tetra_reserved_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
3784 { &hf_tetra_optional_elements_13, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_optional_elements_13 },
3785 { NULL, 0, 0, NULL }
3789 dissect_tetra_U_TX_DEMAND(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3790 #line 222 "../../asn1/tetra/tetra.cnf"
3791 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3792 ett_tetra_U_TX_DEMAND, U_TX_DEMAND_sequence);
3794 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "U-TX-DEMAND");
3803 dissect_tetra_Other_party_address_type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3804 offset = dissect_tetra_Calling_party_address_type(tvb, offset, actx, tree, hf_index);
3810 static const value_string tetra_T_prop_06_vals[] = {
3816 static const per_choice_t T_prop_06_choice[] = {
3817 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
3818 { 1, &hf_tetra_prop_01 , ASN1_NO_EXTENSIONS , dissect_tetra_Proprietary },
3819 { 0, NULL, 0, NULL }
3823 dissect_tetra_T_prop_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3824 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3825 ett_tetra_T_prop_06, T_prop_06_choice,
3832 static const per_sequence_t T_type2_parameters_11_sequence[] = {
3833 { &hf_tetra_prop_07 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_prop_06 },
3834 { NULL, 0, 0, NULL }
3838 dissect_tetra_T_type2_parameters_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3839 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3840 ett_tetra_T_type2_parameters_11, T_type2_parameters_11_sequence);
3846 static const value_string tetra_T_optional_elements_15_vals[] = {
3848 { 1, "type2-parameters" },
3852 static const per_choice_t T_optional_elements_15_choice[] = {
3853 { 0, &hf_tetra_no_type2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
3854 { 1, &hf_tetra_type2_parameters_11, ASN1_NO_EXTENSIONS , dissect_tetra_T_type2_parameters_11 },
3855 { 0, NULL, 0, NULL }
3859 dissect_tetra_T_optional_elements_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3860 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3861 ett_tetra_T_optional_elements_15, T_optional_elements_15_choice,
3868 static const per_sequence_t U_CALL_RESTORE_sequence[] = {
3869 { &hf_tetra_call_identifier_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1023 },
3870 { &hf_tetra_request_to_transmit_send_data, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
3871 { &hf_tetra_other_party_address, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Other_party_address_type },
3872 { &hf_tetra_basic_service_information, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Basic_service_information },
3873 { &hf_tetra_optional_elements_15, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_optional_elements_15 },
3874 { NULL, 0, 0, NULL }
3878 dissect_tetra_U_CALL_RESTORE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3879 #line 217 "../../asn1/tetra/tetra.cnf"
3880 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3881 ett_tetra_U_CALL_RESTORE, U_CALL_RESTORE_sequence);
3883 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "U-CALL-RESTORE");
3890 static const value_string tetra_T_called_party_type_identifier_vals[] = {
3893 { 2, "ssi-extension" },
3898 static const per_choice_t T_called_party_type_identifier_choice[] = {
3899 { 0, &hf_tetra_sna , ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_255 },
3900 { 1, &hf_tetra_ssi , ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_16777215 },
3901 { 2, &hf_tetra_ssi_extension , ASN1_NO_EXTENSIONS , dissect_tetra_BIT_STRING_SIZE_48 },
3902 { 3, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
3903 { 0, NULL, 0, NULL }
3907 dissect_tetra_T_called_party_type_identifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3908 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3909 ett_tetra_T_called_party_type_identifier, T_called_party_type_identifier_choice,
3918 dissect_tetra_BIT_STRING_SIZE_64(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3919 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
3920 64, 64, FALSE, NULL);
3928 dissect_tetra_INTEGER_0_4194304(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3929 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3930 0U, 4194304U, NULL, FALSE);
3936 static const value_string tetra_T_short_data_type_identifier_vals[] = {
3940 { 3, "length-indicator-data-4" },
3944 static const per_choice_t T_short_data_type_identifier_choice[] = {
3945 { 0, &hf_tetra_data_1 , ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_65535 },
3946 { 1, &hf_tetra_data_2 , ASN1_NO_EXTENSIONS , dissect_tetra_OCTET_STRING_SIZE_4 },
3947 { 2, &hf_tetra_data_3 , ASN1_NO_EXTENSIONS , dissect_tetra_BIT_STRING_SIZE_64 },
3948 { 3, &hf_tetra_length_indicator_data_4, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_4194304 },
3949 { 0, NULL, 0, NULL }
3953 dissect_tetra_T_short_data_type_identifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3954 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3955 ett_tetra_T_short_data_type_identifier, T_short_data_type_identifier_choice,
3962 static const per_sequence_t U_SDS_DATA_sequence[] = {
3963 { &hf_tetra_area_selection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_15 },
3964 { &hf_tetra_called_party_type_identifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_called_party_type_identifier },
3965 { &hf_tetra_short_data_type_identifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_short_data_type_identifier },
3966 { NULL, 0, 0, NULL }
3970 dissect_tetra_U_SDS_DATA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3971 #line 212 "../../asn1/tetra/tetra.cnf"
3972 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3973 ett_tetra_U_SDS_DATA, U_SDS_DATA_sequence);
3975 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "U-SDS-DATA");
3982 static const value_string tetra_U_CMCE_PDU_vals[] = {
3987 { 4, "u-Disconnect" },
3992 { 9, "u-Tx-Ceased" },
3993 { 10, "u-Tx-Demand" },
3994 { 11, "reserved3" },
3995 { 12, "reserved4" },
3996 { 13, "reserved5" },
3997 { 14, "u-Call-Restore" },
3998 { 15, "u-SDS-Data" },
3999 { 16, "u-Facility" },
4003 static const per_choice_t U_CMCE_PDU_choice[] = {
4004 { 0, &hf_tetra_u_Alert , ASN1_NO_EXTENSIONS , dissect_tetra_U_ALERT },
4005 { 1, &hf_tetra_reserved1 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4006 { 2, &hf_tetra_u_Connect , ASN1_NO_EXTENSIONS , dissect_tetra_U_CONNECT },
4007 { 3, &hf_tetra_reserved2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4008 { 4, &hf_tetra_u_Disconnect , ASN1_NO_EXTENSIONS , dissect_tetra_U_DISCONNECT },
4009 { 5, &hf_tetra_u_Info , ASN1_NO_EXTENSIONS , dissect_tetra_U_INFO },
4010 { 6, &hf_tetra_u_Release , ASN1_NO_EXTENSIONS , dissect_tetra_U_RELEASE },
4011 { 7, &hf_tetra_u_Setup , ASN1_NO_EXTENSIONS , dissect_tetra_U_SETUP },
4012 { 8, &hf_tetra_u_Status , ASN1_NO_EXTENSIONS , dissect_tetra_U_STATUS },
4013 { 9, &hf_tetra_u_Tx_Ceased , ASN1_NO_EXTENSIONS , dissect_tetra_U_TX_CEASED },
4014 { 10, &hf_tetra_u_Tx_Demand , ASN1_NO_EXTENSIONS , dissect_tetra_U_TX_DEMAND },
4015 { 11, &hf_tetra_reserved3 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4016 { 12, &hf_tetra_reserved4 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4017 { 13, &hf_tetra_reserved5 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4018 { 14, &hf_tetra_u_Call_Restore, ASN1_NO_EXTENSIONS , dissect_tetra_U_CALL_RESTORE },
4019 { 15, &hf_tetra_u_SDS_Data , ASN1_NO_EXTENSIONS , dissect_tetra_U_SDS_DATA },
4020 { 16, &hf_tetra_u_Facility , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4021 { 0, NULL, 0, NULL }
4025 dissect_tetra_U_CMCE_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4026 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
4027 ett_tetra_U_CMCE_PDU, U_CMCE_PDU_choice,
4034 static const value_string tetra_T_cell_number_vals[] = {
4036 { 1, "cell-number" },
4040 static const per_choice_t T_cell_number_choice[] = {
4041 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4042 { 1, &hf_tetra_cell_number_01, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_65535 },
4043 { 0, NULL, 0, NULL }
4047 dissect_tetra_T_cell_number(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4048 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
4049 ett_tetra_T_cell_number, T_cell_number_choice,
4056 static const per_sequence_t T_type2_parameters_sequence[] = {
4057 { &hf_tetra_cell_number , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_cell_number },
4058 { &hf_tetra_sdu , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_BIT_STRING },
4059 { NULL, 0, 0, NULL }
4063 dissect_tetra_T_type2_parameters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4064 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4065 ett_tetra_T_type2_parameters, T_type2_parameters_sequence);
4071 static const value_string tetra_T_optional_elements_vals[] = {
4073 { 1, "type2-parameters" },
4077 static const per_choice_t T_optional_elements_choice[] = {
4078 { 0, &hf_tetra_no_type2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4079 { 1, &hf_tetra_type2_parameters, ASN1_NO_EXTENSIONS , dissect_tetra_T_type2_parameters },
4080 { 0, NULL, 0, NULL }
4084 dissect_tetra_T_optional_elements(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4085 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
4086 ett_tetra_T_optional_elements, T_optional_elements_choice,
4093 static const per_sequence_t U_PREPARE_sequence[] = {
4094 { &hf_tetra_pdu_type_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_7 },
4095 { &hf_tetra_optional_elements, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_optional_elements },
4096 { NULL, 0, 0, NULL }
4100 dissect_tetra_U_PREPARE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4101 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4102 ett_tetra_U_PREPARE, U_PREPARE_sequence);
4108 static const value_string tetra_T_mcc_vals[] = {
4114 static const per_choice_t T_mcc_choice[] = {
4115 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4116 { 1, &hf_tetra_mcc , ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_1023 },
4117 { 0, NULL, 0, NULL }
4121 dissect_tetra_T_mcc(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4122 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
4123 ett_tetra_T_mcc, T_mcc_choice,
4130 static const value_string tetra_T_mnc_vals[] = {
4136 static const per_choice_t T_mnc_choice[] = {
4137 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4138 { 1, &hf_tetra_mnc , ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_16383 },
4139 { 0, NULL, 0, NULL }
4143 dissect_tetra_T_mnc(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4144 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
4145 ett_tetra_T_mnc, T_mnc_choice,
4152 static const value_string tetra_T_la_vals[] = {
4158 static const per_choice_t T_la_choice[] = {
4159 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4160 { 1, &hf_tetra_la , ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_16383 },
4161 { 0, NULL, 0, NULL }
4165 dissect_tetra_T_la(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4166 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
4167 ett_tetra_T_la, T_la_choice,
4174 static const per_sequence_t T_type2_parameters_01_sequence[] = {
4175 { &hf_tetra_mcc_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_mcc },
4176 { &hf_tetra_mnc_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_mnc },
4177 { &hf_tetra_la_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_la },
4178 { &hf_tetra_sdu , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_BIT_STRING },
4179 { NULL, 0, 0, NULL }
4183 dissect_tetra_T_type2_parameters_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4184 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4185 ett_tetra_T_type2_parameters_01, T_type2_parameters_01_sequence);
4191 static const value_string tetra_T_optional_elements_01_vals[] = {
4193 { 1, "type2-parameters" },
4197 static const per_choice_t T_optional_elements_01_choice[] = {
4198 { 0, &hf_tetra_no_type2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4199 { 1, &hf_tetra_type2_parameters_01, ASN1_NO_EXTENSIONS , dissect_tetra_T_type2_parameters_01 },
4200 { 0, NULL, 0, NULL }
4204 dissect_tetra_T_optional_elements_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4205 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
4206 ett_tetra_T_optional_elements_01, T_optional_elements_01_choice,
4213 static const per_sequence_t U_RESTORE_sequence[] = {
4214 { &hf_tetra_pdu_type_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_7 },
4215 { &hf_tetra_optional_elements_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_optional_elements_01 },
4216 { NULL, 0, 0, NULL }
4220 dissect_tetra_U_RESTORE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4221 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4222 ett_tetra_U_RESTORE, U_RESTORE_sequence);
4228 static const value_string tetra_UMLE_PDU_vals[] = {
4230 { 1, "umle-reserved1" },
4231 { 2, "umle-reserved2" },
4232 { 3, "umle-reserved3" },
4234 { 5, "umle-reserved4" },
4235 { 6, "umle-reserved5" },
4236 { 7, "umle-reserved6" },
4240 static const per_choice_t UMLE_PDU_choice[] = {
4241 { 0, &hf_tetra_u_prepare , ASN1_NO_EXTENSIONS , dissect_tetra_U_PREPARE },
4242 { 1, &hf_tetra_umle_reserved1, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4243 { 2, &hf_tetra_umle_reserved2, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4244 { 3, &hf_tetra_umle_reserved3, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4245 { 4, &hf_tetra_u_restore , ASN1_NO_EXTENSIONS , dissect_tetra_U_RESTORE },
4246 { 5, &hf_tetra_umle_reserved4, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4247 { 6, &hf_tetra_umle_reserved5, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4248 { 7, &hf_tetra_umle_reserved6, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4249 { 0, NULL, 0, NULL }
4253 dissect_tetra_UMLE_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4254 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
4255 ett_tetra_UMLE_PDU, UMLE_PDU_choice,
4262 static const value_string tetra_U_MLE_PDU_vals[] = {
4263 { 0, "u-mle-reserved1" },
4266 { 3, "u-mle-reserved2" },
4269 { 6, "tetra-management-entity-protocol" },
4270 { 7, "u-mle-reserved3" },
4274 static const per_choice_t U_MLE_PDU_choice[] = {
4275 { 0, &hf_tetra_u_mle_reserved1, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4276 { 1, &hf_tetra_mm , ASN1_NO_EXTENSIONS , dissect_tetra_U_MM_PDU },
4277 { 2, &hf_tetra_cmce , ASN1_NO_EXTENSIONS , dissect_tetra_U_CMCE_PDU },
4278 { 3, &hf_tetra_u_mle_reserved2, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4279 { 4, &hf_tetra_sndcp , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4280 { 5, &hf_tetra_mle , ASN1_NO_EXTENSIONS , dissect_tetra_UMLE_PDU },
4281 { 6, &hf_tetra_tetra_management_entity_protocol, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4282 { 7, &hf_tetra_u_mle_reserved3, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4283 { 0, NULL, 0, NULL }
4287 dissect_tetra_U_MLE_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4288 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
4289 ett_tetra_U_MLE_PDU, U_MLE_PDU_choice,
4296 static const per_sequence_t U_BL_ADATA_sequence[] = {
4297 { &hf_tetra_nr , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
4298 { &hf_tetra_ns , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
4299 { &hf_tetra_tl_sdu , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_U_MLE_PDU },
4300 { NULL, 0, 0, NULL }
4304 dissect_tetra_U_BL_ADATA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4305 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4306 ett_tetra_U_BL_ADATA, U_BL_ADATA_sequence);
4312 static const per_sequence_t U_BL_DATA_sequence[] = {
4313 { &hf_tetra_ns , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
4314 { &hf_tetra_tl_sdu , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_U_MLE_PDU },
4315 { NULL, 0, 0, NULL }
4319 dissect_tetra_U_BL_DATA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4320 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4321 ett_tetra_U_BL_DATA, U_BL_DATA_sequence);
4327 static const per_sequence_t U_BL_ACK_sequence[] = {
4328 { &hf_tetra_nr , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
4329 { &hf_tetra_tl_sdu , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_U_MLE_PDU },
4330 { NULL, 0, 0, NULL }
4334 dissect_tetra_U_BL_ACK(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4335 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4336 ett_tetra_U_BL_ACK, U_BL_ACK_sequence);
4342 static const per_sequence_t U_BL_ADATA_FCS_sequence[] = {
4343 { &hf_tetra_nr , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
4344 { &hf_tetra_ns , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
4345 { &hf_tetra_tl_sdu , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_U_MLE_PDU },
4346 { &hf_tetra_fcs , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_OCTET_STRING_SIZE_4 },
4347 { NULL, 0, 0, NULL }
4351 dissect_tetra_U_BL_ADATA_FCS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4352 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4353 ett_tetra_U_BL_ADATA_FCS, U_BL_ADATA_FCS_sequence);
4359 static const per_sequence_t U_BL_DATA_FCS_sequence[] = {
4360 { &hf_tetra_ns , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
4361 { &hf_tetra_tl_sdu , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_U_MLE_PDU },
4362 { &hf_tetra_fcs , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_OCTET_STRING_SIZE_4 },
4363 { NULL, 0, 0, NULL }
4367 dissect_tetra_U_BL_DATA_FCS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4368 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4369 ett_tetra_U_BL_DATA_FCS, U_BL_DATA_FCS_sequence);
4375 static const per_sequence_t U_MLE_PDU_FCS_sequence[] = {
4376 { &hf_tetra_u_mle_pdu , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_U_MLE_PDU },
4377 { &hf_tetra_fcs , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_OCTET_STRING_SIZE_4 },
4378 { NULL, 0, 0, NULL }
4382 dissect_tetra_U_MLE_PDU_FCS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4383 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4384 ett_tetra_U_MLE_PDU_FCS, U_MLE_PDU_FCS_sequence);
4390 static const per_sequence_t U_BL_ACK_FCS_sequence[] = {
4391 { &hf_tetra_nr , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
4392 { &hf_tetra_tl_sdu , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_U_MLE_PDU },
4393 { &hf_tetra_fcs , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_OCTET_STRING_SIZE_4 },
4394 { NULL, 0, 0, NULL }
4398 dissect_tetra_U_BL_ACK_FCS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4399 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4400 ett_tetra_U_BL_ACK_FCS, U_BL_ACK_FCS_sequence);
4406 static const value_string tetra_U_LLC_PDU_vals[] = {
4411 { 4, "bl-adata-fcs" },
4412 { 5, "bl-data-fcs" },
4413 { 6, "bl-udata-fcs" },
4414 { 7, "bl-ack-fcs" },
4419 { 12, "al-reconnect" },
4426 static const per_choice_t U_LLC_PDU_choice[] = {
4427 { 0, &hf_tetra_bl_adata , ASN1_NO_EXTENSIONS , dissect_tetra_U_BL_ADATA },
4428 { 1, &hf_tetra_bl_data , ASN1_NO_EXTENSIONS , dissect_tetra_U_BL_DATA },
4429 { 2, &hf_tetra_bl_udata , ASN1_NO_EXTENSIONS , dissect_tetra_U_MLE_PDU },
4430 { 3, &hf_tetra_bl_ack , ASN1_NO_EXTENSIONS , dissect_tetra_U_BL_ACK },
4431 { 4, &hf_tetra_bl_adata_fcs , ASN1_NO_EXTENSIONS , dissect_tetra_U_BL_ADATA_FCS },
4432 { 5, &hf_tetra_bl_data_fcs , ASN1_NO_EXTENSIONS , dissect_tetra_U_BL_DATA_FCS },
4433 { 6, &hf_tetra_bl_udata_fcs , ASN1_NO_EXTENSIONS , dissect_tetra_U_MLE_PDU_FCS },
4434 { 7, &hf_tetra_bl_ack_fcs , ASN1_NO_EXTENSIONS , dissect_tetra_U_BL_ACK_FCS },
4435 { 8, &hf_tetra_al_setup , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4436 { 9, &hf_tetra_al_data , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4437 { 10, &hf_tetra_al_udata , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4438 { 11, &hf_tetra_al_ack , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4439 { 12, &hf_tetra_al_reconnect , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4440 { 13, &hf_tetra_reserve1 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4441 { 14, &hf_tetra_reserve2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4442 { 15, &hf_tetra_al_disc , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
4443 { 0, NULL, 0, NULL }
4447 dissect_tetra_U_LLC_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4448 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
4449 ett_tetra_U_LLC_PDU, U_LLC_PDU_choice,
4456 static const value_string tetra_LengthIndication_vals[] = {
4458 { 1, "reserved-1" },
4459 { 2, "reserved-2" },
4470 { 13, "reserved-13" },
4471 { 14, "reserved-14" },
4472 { 15, "reserved-15" },
4473 { 16, "reserved-16" },
4474 { 17, "reserved-17" },
4475 { 18, "reserved-18" },
4476 { 19, "reserved-19" },
4477 { 20, "reserved-20" },
4478 { 21, "reserved-21" },
4479 { 22, "reserved-22" },
4480 { 23, "reserved-23" },
4481 { 24, "reserved-24" },
4482 { 25, "reserved-25" },
4483 { 26, "reserved-26" },
4484 { 27, "reserved-27" },
4485 { 28, "reserved-28" },
4486 { 29, "reserved-29" },
4487 { 30, "reserved-30" },
4488 { 31, "reserved-31" },
4494 dissect_tetra_LengthIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4495 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4496 32, NULL, FALSE, 0, NULL);
4502 static const value_string tetra_Frag1_vals[] = {
4503 { 0, "not-fragmented" },
4504 { 1, "start-of-fragmentation" },
4510 dissect_tetra_Frag1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4511 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4512 2, NULL, FALSE, 0, NULL);
4518 static const value_string tetra_SLOT_APPLY_vals[] = {
4534 { 15, "more-than-68" },
4540 dissect_tetra_SLOT_APPLY(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4541 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4542 16, NULL, FALSE, 0, NULL);
4548 static const per_sequence_t FRAG_sequence[] = {
4549 { &hf_tetra_frag , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Frag1 },
4550 { &hf_tetra_reservation_requirement, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_SLOT_APPLY },
4551 { NULL, 0, 0, NULL }
4555 dissect_tetra_FRAG(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4556 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4557 ett_tetra_FRAG, FRAG_sequence);
4563 static const value_string tetra_T_lengthIndicationOrCapacityRequest_vals[] = {
4564 { 0, "lengthIndication" },
4565 { 1, "capacityRequest" },
4569 static const per_choice_t T_lengthIndicationOrCapacityRequest_choice[] = {
4570 { 0, &hf_tetra_lengthIndication, ASN1_NO_EXTENSIONS , dissect_tetra_LengthIndication },
4571 { 1, &hf_tetra_capacityRequest, ASN1_NO_EXTENSIONS , dissect_tetra_FRAG },
4572 { 0, NULL, 0, NULL }
4576 dissect_tetra_T_lengthIndicationOrCapacityRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4577 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
4578 ett_tetra_T_lengthIndicationOrCapacityRequest, T_lengthIndicationOrCapacityRequest_choice,
4585 static const per_sequence_t ComplexSDU_sequence[] = {
4586 { &hf_tetra_lengthIndicationOrCapacityRequest, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_lengthIndicationOrCapacityRequest },
4587 { &hf_tetra_tm_sdu_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_U_LLC_PDU },
4588 { NULL, 0, 0, NULL }
4592 dissect_tetra_ComplexSDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4593 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4594 ett_tetra_ComplexSDU, ComplexSDU_sequence);
4600 static const value_string tetra_T_data_vals[] = {
4606 static const per_choice_t T_data_choice[] = {
4607 { 0, &hf_tetra_sdu1 , ASN1_NO_EXTENSIONS , dissect_tetra_U_LLC_PDU },
4608 { 1, &hf_tetra_sdu2 , ASN1_NO_EXTENSIONS , dissect_tetra_ComplexSDU },
4609 { 0, NULL, 0, NULL }
4613 dissect_tetra_T_data(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4614 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
4615 ett_tetra_T_data, T_data_choice,
4622 static const per_sequence_t MAC_ACCESS_sequence[] = {
4623 { &hf_tetra_pdu_type_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
4624 { &hf_tetra_fill_bit_indication, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Fill_Bit_Indication },
4625 { &hf_tetra_encrypted_flag, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Encrypted_Flag },
4626 { &hf_tetra_address , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Address },
4627 { &hf_tetra_data , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_data },
4628 { NULL, 0, 0, NULL }
4632 dissect_tetra_MAC_ACCESS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4633 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4634 ett_tetra_MAC_ACCESS, MAC_ACCESS_sequence);
4642 dissect_tetra_BIT_STRING_SIZE_264(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4643 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
4644 264, 264, FALSE, NULL);
4650 static const per_sequence_t MAC_FRAG_sequence[] = {
4651 { &hf_tetra_pdu_type , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_3 },
4652 { &hf_tetra_sub_type , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
4653 { &hf_tetra_fill_bit_indication, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Fill_Bit_Indication },
4654 { &hf_tetra_tm_sdu_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_BIT_STRING_SIZE_264 },
4655 { NULL, 0, 0, NULL }
4659 dissect_tetra_MAC_FRAG(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4660 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4661 ett_tetra_MAC_FRAG, MAC_FRAG_sequence);
4669 dissect_tetra_BIT_STRING_SIZE_120(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4670 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
4671 120, 120, FALSE, NULL);
4677 static const per_sequence_t MAC_FRAG120_sequence[] = {
4678 { &hf_tetra_pdu_type , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_3 },
4679 { &hf_tetra_sub_type , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
4680 { &hf_tetra_fill_bit_indication, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Fill_Bit_Indication },
4681 { &hf_tetra_tm_sdu_03 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_BIT_STRING_SIZE_120 },
4682 { NULL, 0, 0, NULL }
4686 dissect_tetra_MAC_FRAG120(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4687 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4688 ett_tetra_MAC_FRAG120, MAC_FRAG120_sequence);
4694 static const value_string tetra_LengthIndOrReservationReq_vals[] = {
4695 { 0, "reserved-0" },
4696 { 1, "reserved-1" },
4730 { 35, "reserved-35" },
4731 { 36, "reserved-36" },
4732 { 37, "reserved-37" },
4733 { 38, "reserved-38" },
4734 { 39, "reserved-39" },
4735 { 40, "reserved-40" },
4736 { 41, "reserved-41" },
4737 { 42, "reserved-42" },
4738 { 43, "reserved-43" },
4739 { 44, "reserved-44" },
4740 { 45, "reserved-45" },
4741 { 46, "reserved-46" },
4742 { 47, "reserved-47" },
4758 { 63, "more-than-68" },
4764 dissect_tetra_LengthIndOrReservationReq(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4765 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4766 64, NULL, FALSE, 0, NULL);
4774 dissect_tetra_BIT_STRING_SIZE_258(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4775 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
4776 258, 258, FALSE, NULL);
4782 static const per_sequence_t MAC_END_UPLINK_sequence[] = {
4783 { &hf_tetra_pdu_type , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_3 },
4784 { &hf_tetra_sub_type , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
4785 { &hf_tetra_fill_bit_indication, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Fill_Bit_Indication },
4786 { &hf_tetra_lengthInd_ReservationReq, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_LengthIndOrReservationReq },
4787 { &hf_tetra_tm_sdu_04 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_BIT_STRING_SIZE_258 },
4788 { NULL, 0, 0, NULL }
4792 dissect_tetra_MAC_END_UPLINK(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4793 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4794 ett_tetra_MAC_END_UPLINK, MAC_END_UPLINK_sequence);
4802 dissect_tetra_BIT_STRING_SIZE_114(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4803 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
4804 114, 114, FALSE, NULL);
4810 static const per_sequence_t MAC_END_UP114_sequence[] = {
4811 { &hf_tetra_pdu_type , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_3 },
4812 { &hf_tetra_pdu_subtype , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
4813 { &hf_tetra_fill_bit_indication, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Fill_Bit_Indication },
4814 { &hf_tetra_lengthInd_ReservationReq, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_LengthIndOrReservationReq },
4815 { &hf_tetra_tm_sdu_05 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_BIT_STRING_SIZE_114 },
4816 { NULL, 0, 0, NULL }
4820 dissect_tetra_MAC_END_UP114(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4821 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4822 ett_tetra_MAC_END_UP114, MAC_END_UP114_sequence);
4828 static const value_string tetra_LengthIndMacHu_vals[] = {
4829 { 0, "reserved-0" },
4842 { 13, "reserved-13" },
4843 { 14, "reserved-14" },
4844 { 15, "reserved-15" },
4850 dissect_tetra_LengthIndMacHu(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4851 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4852 16, NULL, FALSE, 0, NULL);
4858 static const value_string tetra_T_lengthInd_ReservationReq_vals[] = {
4860 { 1, "reservation-requirement" },
4864 static const per_choice_t T_lengthInd_ReservationReq_choice[] = {
4865 { 0, &hf_tetra_lengthInd , ASN1_NO_EXTENSIONS , dissect_tetra_LengthIndMacHu },
4866 { 1, &hf_tetra_reservation_requirement, ASN1_NO_EXTENSIONS , dissect_tetra_SLOT_APPLY },
4867 { 0, NULL, 0, NULL }
4871 dissect_tetra_T_lengthInd_ReservationReq(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4872 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
4873 ett_tetra_T_lengthInd_ReservationReq, T_lengthInd_ReservationReq_choice,
4882 dissect_tetra_BIT_STRING_SIZE_85(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4883 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
4884 85, 85, FALSE, NULL);
4890 static const per_sequence_t MAC_END_HU_sequence[] = {
4891 { &hf_tetra_pdu_type_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
4892 { &hf_tetra_fill_bit_indication, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Fill_Bit_Indication },
4893 { &hf_tetra_lengthInd_ReservationReq_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_lengthInd_ReservationReq },
4894 { &hf_tetra_tm_sdu_06 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_BIT_STRING_SIZE_85 },
4895 { NULL, 0, 0, NULL }
4899 dissect_tetra_MAC_END_HU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4900 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4901 ett_tetra_MAC_END_HU, MAC_END_HU_sequence);
4907 static const value_string tetra_Position_Of_Grant_vals[] = {
4908 { 0, "on-current" },
4909 { 1, "on-allocated" },
4915 dissect_tetra_Position_Of_Grant(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4916 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4917 2, NULL, FALSE, 0, NULL);
4923 static const value_string tetra_LengthIndicationMacEndDl_vals[] = {
4924 { 0, "reserved-0" },
4925 { 1, "reserved-1" },
4959 { 35, "reserved-35" },
4960 { 36, "reserved-36" },
4961 { 37, "reserved-37" },
4962 { 38, "reserved-38" },
4963 { 39, "reserved-39" },
4964 { 40, "reserved-40" },
4965 { 41, "reserved-41" },
4966 { 42, "reserved-42" },
4967 { 43, "reserved-43" },
4968 { 44, "reserved-44" },
4969 { 45, "reserved-45" },
4970 { 46, "reserved-46" },
4971 { 47, "reserved-47" },
4972 { 48, "reserved-48" },
4973 { 49, "reserved-49" },
4974 { 50, "reserved-50" },
4975 { 51, "reserved-51" },
4976 { 52, "reserved-52" },
4977 { 53, "reserved-53" },
4978 { 54, "reserved-54" },
4979 { 55, "reserved-55" },
4980 { 56, "reserved-56" },
4981 { 57, "reserved-57" },
4982 { 58, "reserved-58" },
4983 { 59, "reserved-59" },
4984 { 60, "reserved-60" },
4985 { 61, "reserved-61" },
4986 { 62, "reserved-62" },
4987 { 63, "reserved-63" },
4993 dissect_tetra_LengthIndicationMacEndDl(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4994 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4995 64, NULL, FALSE, 0, NULL);
5001 static const value_string tetra_Capacity_Allocation_vals[] = {
5002 { 0, "first-subslot" },
5003 { 1, "slot-allocated-1" },
5004 { 2, "slot-allocated-2" },
5005 { 3, "slot-allocated-3" },
5006 { 4, "slot-allocated-4" },
5007 { 5, "slot-allocated-5" },
5008 { 6, "slot-allocated-6" },
5009 { 7, "slot-allocated-8" },
5010 { 8, "slot-allocated-10" },
5011 { 9, "slot-allocated-13" },
5012 { 10, "slot-allocated-17" },
5013 { 11, "slot-allocated-24" },
5014 { 12, "slot-allocated-34" },
5015 { 13, "lot-allocated-51" },
5016 { 14, "slot-allocated-68" },
5017 { 15, "second-subslot" },
5023 dissect_tetra_Capacity_Allocation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5024 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
5025 16, NULL, FALSE, 0, NULL);
5031 static const value_string tetra_Granting_delay_vals[] = {
5032 { 0, "capacity-allocation-at-next-opportunity" },
5033 { 1, "number-of-opportunities-delay" },
5034 { 2, "number-of-opportunities-delay" },
5035 { 3, "number-of-opportunities-delay" },
5036 { 4, "number-of-opportunities-delay" },
5037 { 5, "number-of-opportunities-delay" },
5038 { 6, "number-of-opportunities-delay" },
5039 { 7, "number-of-opportunities-delay" },
5040 { 8, "number-of-opportunities-delay" },
5041 { 9, "number-of-opportunities-delay" },
5042 { 10, "number-of-opportunities-delay" },
5043 { 11, "number-of-opportunities-delay" },
5044 { 12, "number-of-opportunities-delay" },
5045 { 13, "number-of-opportunities-delay" },
5046 { 14, "allocation-starts-at-frame-18" },
5053 dissect_tetra_Granting_delay(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5054 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
5055 16, NULL, FALSE, 0, NULL);
5061 static const per_sequence_t SlotGranting_sequence[] = {
5062 { &hf_tetra_capacity_allocation, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Capacity_Allocation },
5063 { &hf_tetra_granting_delay, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Granting_delay },
5064 { NULL, 0, 0, NULL }
5068 dissect_tetra_SlotGranting(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5069 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5070 ett_tetra_SlotGranting, SlotGranting_sequence);
5076 static const value_string tetra_T_slot_granting_vals[] = {
5078 { 1, "slot-granting-param" },
5082 static const per_choice_t T_slot_granting_choice[] = {
5083 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
5084 { 1, &hf_tetra_slot_granting_param, ASN1_NO_EXTENSIONS , dissect_tetra_SlotGranting },
5085 { 0, NULL, 0, NULL }
5089 dissect_tetra_T_slot_granting(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5090 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5091 ett_tetra_T_slot_granting, T_slot_granting_choice,
5098 static const value_string tetra_T_allocation_type_vals[] = {
5108 dissect_tetra_T_allocation_type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5109 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
5110 4, NULL, FALSE, 0, NULL);
5116 static const value_string tetra_Timeslot_Assigned_vals[] = {
5117 { 0, "go-to-control-channel" },
5118 { 1, "timeslot-4" },
5119 { 2, "timeslot-bit-map" },
5120 { 3, "timeslot-bit-map" },
5121 { 4, "timeslot-bit-map" },
5122 { 5, "timeslot-bit-map" },
5123 { 6, "timeslot-bit-map" },
5124 { 7, "timeslot-bit-map" },
5125 { 8, "timeslot-bit-map" },
5126 { 9, "timeslot-bit-map" },
5127 { 10, "timeslot-bit-map" },
5128 { 11, "timeslot-bit-map" },
5129 { 12, "timeslot-bit-map" },
5130 { 13, "timeslot-bit-map" },
5131 { 14, "timeslot-bit-map" },
5132 { 15, "all-four-timeslots" },
5138 dissect_tetra_Timeslot_Assigned(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5139 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
5140 16, NULL, FALSE, 0, NULL);
5146 static const value_string tetra_T_up_down_assigned_vals[] = {
5148 { 1, "downlink-only" },
5149 { 2, "uplink-only" },
5150 { 3, "uplink-downlink" },
5156 dissect_tetra_T_up_down_assigned(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5157 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
5158 4, NULL, FALSE, 0, NULL);
5164 static const value_string tetra_CLCH_permission_vals[] = {
5165 { 0, "no-permission" },
5166 { 1, "permission" },
5172 dissect_tetra_CLCH_permission(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5173 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
5174 2, NULL, FALSE, 0, NULL);
5180 static const value_string tetra_Cell_change_flag_vals[] = {
5188 dissect_tetra_Cell_change_flag(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5189 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
5190 2, NULL, FALSE, 0, NULL);
5196 static const value_string tetra_T_reverse_operation_vals[] = {
5204 dissect_tetra_T_reverse_operation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5205 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
5206 2, NULL, FALSE, 0, NULL);
5212 static const per_sequence_t Extended_carrier_flag_sequence[] = {
5213 { &hf_tetra_frequency_band, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_15 },
5214 { &hf_tetra_offset_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_3 },
5215 { &hf_tetra_duplex_spacing, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_7 },
5216 { &hf_tetra_reverse_operation_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_reverse_operation },
5217 { NULL, 0, 0, NULL }
5221 dissect_tetra_Extended_carrier_flag(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5222 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5223 ett_tetra_Extended_carrier_flag, Extended_carrier_flag_sequence);
5229 static const value_string tetra_T_extend_carrier_flag_vals[] = {
5235 static const per_choice_t T_extend_carrier_flag_choice[] = {
5236 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
5237 { 1, &hf_tetra_extended , ASN1_NO_EXTENSIONS , dissect_tetra_Extended_carrier_flag },
5238 { 0, NULL, 0, NULL }
5242 dissect_tetra_T_extend_carrier_flag(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5243 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5244 ett_tetra_T_extend_carrier_flag, T_extend_carrier_flag_choice,
5251 static const value_string tetra_Monitoring_pattern_vals[] = {
5261 dissect_tetra_Monitoring_pattern(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5262 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
5263 4, NULL, FALSE, 0, NULL);
5269 static const value_string tetra_T_monitoring_pattern_vals[] = {
5277 static const per_choice_t T_monitoring_pattern_choice[] = {
5278 { 0, &hf_tetra_one , ASN1_NO_EXTENSIONS , dissect_tetra_Monitoring_pattern },
5279 { 1, &hf_tetra_none1 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
5280 { 2, &hf_tetra_none2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
5281 { 3, &hf_tetra_none3 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
5282 { 0, NULL, 0, NULL }
5286 dissect_tetra_T_monitoring_pattern(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5287 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5288 ett_tetra_T_monitoring_pattern, T_monitoring_pattern_choice,
5295 static const per_sequence_t ChannelAllocation_sequence[] = {
5296 { &hf_tetra_allocation_type, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_allocation_type },
5297 { &hf_tetra_timeslot_assigned, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Timeslot_Assigned },
5298 { &hf_tetra_up_down_assigned, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_up_down_assigned },
5299 { &hf_tetra_clch_permission, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_CLCH_permission },
5300 { &hf_tetra_cell_change , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Cell_change_flag },
5301 { &hf_tetra_carrier_number, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_4095 },
5302 { &hf_tetra_extend_carrier_flag, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_extend_carrier_flag },
5303 { &hf_tetra_monitoring_pattern, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_monitoring_pattern },
5304 { NULL, 0, 0, NULL }
5308 dissect_tetra_ChannelAllocation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5309 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5310 ett_tetra_ChannelAllocation, ChannelAllocation_sequence);
5316 static const value_string tetra_T_channel_allocation_vals[] = {
5318 { 1, "channel-allocation-element" },
5322 static const per_choice_t T_channel_allocation_choice[] = {
5323 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
5324 { 1, &hf_tetra_channel_allocation_element, ASN1_NO_EXTENSIONS , dissect_tetra_ChannelAllocation },
5325 { 0, NULL, 0, NULL }
5329 dissect_tetra_T_channel_allocation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5330 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5331 ett_tetra_T_channel_allocation, T_channel_allocation_choice,
5340 dissect_tetra_BIT_STRING_SIZE_255(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5341 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
5342 255, 255, FALSE, NULL);
5348 static const per_sequence_t MAC_END_DOWNLINK_sequence[] = {
5349 { &hf_tetra_pdu_type , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_3 },
5350 { &hf_tetra_sub_type , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
5351 { &hf_tetra_fill_bit_indication, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Fill_Bit_Indication },
5352 { &hf_tetra_position_of_grant, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Position_Of_Grant },
5353 { &hf_tetra_lengthIndication_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_LengthIndicationMacEndDl },
5354 { &hf_tetra_slot_granting , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_slot_granting },
5355 { &hf_tetra_channel_allocation, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_channel_allocation },
5356 { &hf_tetra_tm_sdu_07 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_BIT_STRING_SIZE_255 },
5357 { NULL, 0, 0, NULL }
5361 dissect_tetra_MAC_END_DOWNLINK(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5362 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5363 ett_tetra_MAC_END_DOWNLINK, MAC_END_DOWNLINK_sequence);
5369 static const value_string tetra_T_slot_granting_01_vals[] = {
5371 { 1, "slot-granting-param" },
5375 static const per_choice_t T_slot_granting_01_choice[] = {
5376 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
5377 { 1, &hf_tetra_slot_granting_param, ASN1_NO_EXTENSIONS , dissect_tetra_SlotGranting },
5378 { 0, NULL, 0, NULL }
5382 dissect_tetra_T_slot_granting_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5383 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5384 ett_tetra_T_slot_granting_01, T_slot_granting_01_choice,
5391 static const value_string tetra_T_channel_allocation_01_vals[] = {
5393 { 1, "channel-allocation-element" },
5397 static const per_choice_t T_channel_allocation_01_choice[] = {
5398 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
5399 { 1, &hf_tetra_channel_allocation_element, ASN1_NO_EXTENSIONS , dissect_tetra_ChannelAllocation },
5400 { 0, NULL, 0, NULL }
5404 dissect_tetra_T_channel_allocation_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5405 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5406 ett_tetra_T_channel_allocation_01, T_channel_allocation_01_choice,
5415 dissect_tetra_BIT_STRING_SIZE_111(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5416 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
5417 111, 111, FALSE, NULL);
5423 static const per_sequence_t MAC_END_DOWN111_sequence[] = {
5424 { &hf_tetra_pdu_type_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_7 },
5425 { &hf_tetra_fill_bit_ind , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_BOOLEAN },
5426 { &hf_tetra_position_of_grant_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
5427 { &hf_tetra_lengthIndication_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_LengthIndicationMacEndDl },
5428 { &hf_tetra_slot_granting_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_slot_granting_01 },
5429 { &hf_tetra_channel_allocation_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_channel_allocation_01 },
5430 { &hf_tetra_tm_sdu_08 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_BIT_STRING_SIZE_111 },
5431 { NULL, 0, 0, NULL }
5435 dissect_tetra_MAC_END_DOWN111(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5436 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5437 ett_tetra_MAC_END_DOWN111, MAC_END_DOWN111_sequence);
5443 static const value_string tetra_T_access_ack_vals[] = {
5445 { 1, "random-access-acknowledged" },
5451 dissect_tetra_T_access_ack(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5452 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
5453 2, NULL, FALSE, 0, NULL);
5459 static const value_string tetra_LengthIndicationMacResource_vals[] = {
5460 { 0, "reserved-0" },
5461 { 1, "reserved-1" },
5495 { 35, "reserved-35" },
5496 { 36, "reserved-36" },
5497 { 37, "reserved-37" },
5498 { 38, "reserved-38" },
5499 { 39, "reserved-39" },
5500 { 40, "reserved-40" },
5501 { 41, "reserved-41" },
5502 { 42, "reserved-42" },
5503 { 43, "reserved-43" },
5504 { 44, "reserved-44" },
5505 { 45, "reserved-45" },
5506 { 46, "reserved-46" },
5507 { 47, "reserved-47" },
5508 { 48, "reserved-48" },
5509 { 49, "reserved-49" },
5510 { 50, "reserved-50" },
5511 { 51, "reserved-51" },
5512 { 52, "reserved-52" },
5513 { 53, "reserved-53" },
5514 { 54, "reserved-54" },
5515 { 55, "reserved-55" },
5516 { 56, "reserved-56" },
5517 { 57, "reserved-57" },
5518 { 58, "reserved-58" },
5519 { 59, "reserved-59" },
5520 { 60, "reserved-60" },
5521 { 61, "reserved-61" },
5522 { 62, "second-halfslot-stolen" },
5523 { 63, "start-frag" },
5529 dissect_tetra_LengthIndicationMacResource(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5530 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
5531 64, NULL, FALSE, 0, NULL);
5537 static const value_string tetra_PowerControl_vals[] = {
5539 { 1, "increase-1" },
5540 { 2, "increase-2" },
5541 { 3, "increase-3" },
5542 { 4, "increase-4" },
5543 { 5, "increase-5" },
5544 { 6, "increase-6" },
5545 { 7, "maximum-xceeded" },
5546 { 8, "revert-open-loop-control" },
5547 { 9, "decrease-1" },
5548 { 10, "decrease-2" },
5549 { 11, "decrease-3" },
5550 { 12, "decrease-4" },
5551 { 13, "decrease-5" },
5552 { 14, "decrease-6" },
5553 { 15, "radio-uplink-failure" },
5559 dissect_tetra_PowerControl(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5560 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
5561 16, NULL, FALSE, 0, NULL);
5567 static const value_string tetra_T_power_control_vals[] = {
5569 { 1, "powerParameters" },
5573 static const per_choice_t T_power_control_choice[] = {
5574 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
5575 { 1, &hf_tetra_powerParameters, ASN1_NO_EXTENSIONS , dissect_tetra_PowerControl },
5576 { 0, NULL, 0, NULL }
5580 dissect_tetra_T_power_control(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5581 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5582 ett_tetra_T_power_control, T_power_control_choice,
5589 static const value_string tetra_T_slot_granting_02_vals[] = {
5591 { 1, "slot-granting-param" },
5595 static const per_choice_t T_slot_granting_02_choice[] = {
5596 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
5597 { 1, &hf_tetra_slot_granting_param, ASN1_NO_EXTENSIONS , dissect_tetra_SlotGranting },
5598 { 0, NULL, 0, NULL }
5602 dissect_tetra_T_slot_granting_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5603 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5604 ett_tetra_T_slot_granting_02, T_slot_granting_02_choice,
5611 static const value_string tetra_T_channel_allocation_02_vals[] = {
5613 { 1, "channel-allocation-element" },
5617 static const per_choice_t T_channel_allocation_02_choice[] = {
5618 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
5619 { 1, &hf_tetra_channel_allocation_element, ASN1_NO_EXTENSIONS , dissect_tetra_ChannelAllocation },
5620 { 0, NULL, 0, NULL }
5624 dissect_tetra_T_channel_allocation_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5625 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5626 ett_tetra_T_channel_allocation_02, T_channel_allocation_02_choice,
5633 static const value_string tetra_T_ssi_vals[] = {
5639 static const per_choice_t T_ssi_choice[] = {
5640 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
5641 { 1, &hf_tetra_ssi_03 , ASN1_NO_EXTENSIONS , dissect_tetra_OCTET_STRING_SIZE_3 },
5642 { 0, NULL, 0, NULL }
5646 dissect_tetra_T_ssi(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5647 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5648 ett_tetra_T_ssi, T_ssi_choice,
5655 static const value_string tetra_T_address_extension_vals[] = {
5657 { 1, "address-extension" },
5661 static const per_choice_t T_address_extension_choice[] = {
5662 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
5663 { 1, &hf_tetra_address_extension_01, ASN1_NO_EXTENSIONS , dissect_tetra_OCTET_STRING_SIZE_3 },
5664 { 0, NULL, 0, NULL }
5668 dissect_tetra_T_address_extension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5669 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5670 ett_tetra_T_address_extension, T_address_extension_choice,
5679 dissect_tetra_INTEGER_0_32767(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5680 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5681 0U, 32767U, NULL, FALSE);
5687 static const value_string tetra_T_suscriber_class_vals[] = {
5689 { 1, "suscriber-class" },
5693 static const per_choice_t T_suscriber_class_choice[] = {
5694 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
5695 { 1, &hf_tetra_suscriber_class_01, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_32767 },
5696 { 0, NULL, 0, NULL }
5700 dissect_tetra_T_suscriber_class(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5701 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5702 ett_tetra_T_suscriber_class, T_suscriber_class_choice,
5709 static const value_string tetra_T_energy_saving_mode_vals[] = {
5711 { 1, "energy-saving-mode" },
5715 static const per_choice_t T_energy_saving_mode_choice[] = {
5716 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
5717 { 1, &hf_tetra_energy_saving_mode_01, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_7 },
5718 { 0, NULL, 0, NULL }
5722 dissect_tetra_T_energy_saving_mode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5723 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5724 ett_tetra_T_energy_saving_mode, T_energy_saving_mode_choice,
5731 static const value_string tetra_T_scch_info_vals[] = {
5737 static const per_choice_t T_scch_info_choice[] = {
5738 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
5739 { 1, &hf_tetra_scch_info_01 , ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_16383 },
5740 { 0, NULL, 0, NULL }
5744 dissect_tetra_T_scch_info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5745 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5746 ett_tetra_T_scch_info, T_scch_info_choice,
5753 static const value_string tetra_T_new_ra_vals[] = {
5759 static const per_choice_t T_new_ra_choice[] = {
5760 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
5761 { 1, &hf_tetra_new_ra_01 , ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_3 },
5762 { 0, NULL, 0, NULL }
5766 dissect_tetra_T_new_ra(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5767 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5768 ett_tetra_T_new_ra, T_new_ra_choice,
5775 static const value_string tetra_T_group_identity_location_accept_vals[] = {
5777 { 1, "group-identity-location-accept" },
5781 static const per_choice_t T_group_identity_location_accept_choice[] = {
5782 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
5783 { 1, &hf_tetra_group_identity_location_accept_01, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_3 },
5784 { 0, NULL, 0, NULL }
5788 dissect_tetra_T_group_identity_location_accept(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5789 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5790 ett_tetra_T_group_identity_location_accept, T_group_identity_location_accept_choice,
5797 static const value_string tetra_T_group_predefined_lifetime_vals[] = {
5799 { 1, "group-predefined-lifetime" },
5803 static const per_choice_t T_group_predefined_lifetime_choice[] = {
5804 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
5805 { 1, &hf_tetra_group_predefined_lifetime_01, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_3 },
5806 { 0, NULL, 0, NULL }
5810 dissect_tetra_T_group_predefined_lifetime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5811 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5812 ett_tetra_T_group_predefined_lifetime, T_group_predefined_lifetime_choice,
5819 static const value_string tetra_T_group_identity_downlink_vals[] = {
5821 { 1, "group-identity-downlink" },
5825 static const per_choice_t T_group_identity_downlink_choice[] = {
5826 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
5827 { 1, &hf_tetra_group_identity_downlink_01, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_15 },
5828 { 0, NULL, 0, NULL }
5832 dissect_tetra_T_group_identity_downlink(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5833 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5834 ett_tetra_T_group_identity_downlink, T_group_identity_downlink_choice,
5841 static const value_string tetra_T_proprietary_vals[] = {
5843 { 1, "proprietary" },
5847 static const per_choice_t T_proprietary_choice[] = {
5848 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
5849 { 1, &hf_tetra_proprietary_01, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_7 },
5850 { 0, NULL, 0, NULL }
5854 dissect_tetra_T_proprietary(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5855 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5856 ett_tetra_T_proprietary, T_proprietary_choice,
5863 static const per_sequence_t T_type3_elements_sequence[] = {
5864 { &hf_tetra_type2_existance, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_BOOLEAN },
5865 { &hf_tetra_type3_identifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_TYPE3_IDENTIFIER },
5866 { &hf_tetra_new_ra , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_new_ra },
5867 { &hf_tetra_group_identity_location_accept, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_group_identity_location_accept },
5868 { &hf_tetra_group_predefined_lifetime, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_group_predefined_lifetime },
5869 { &hf_tetra_group_identity_downlink, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_group_identity_downlink },
5870 { &hf_tetra_proprietary , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_proprietary },
5871 { NULL, 0, 0, NULL }
5875 dissect_tetra_T_type3_elements(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5876 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5877 ett_tetra_T_type3_elements, T_type3_elements_sequence);
5883 static const value_string tetra_T_type3_vals[] = {
5885 { 1, "type3-elements" },
5889 static const per_choice_t T_type3_choice[] = {
5890 { 0, &hf_tetra_no_type3 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
5891 { 1, &hf_tetra_type3_elements, ASN1_NO_EXTENSIONS , dissect_tetra_T_type3_elements },
5892 { 0, NULL, 0, NULL }
5896 dissect_tetra_T_type3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5897 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5898 ett_tetra_T_type3, T_type3_choice,
5905 static const per_sequence_t T_type2_parameters_03_sequence[] = {
5906 { &hf_tetra_ssi_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_ssi },
5907 { &hf_tetra_address_extension, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_address_extension },
5908 { &hf_tetra_suscriber_class, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_suscriber_class },
5909 { &hf_tetra_energy_saving_mode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_energy_saving_mode },
5910 { &hf_tetra_scch_info , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_scch_info },
5911 { &hf_tetra_type3 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_type3 },
5912 { NULL, 0, 0, NULL }
5916 dissect_tetra_T_type2_parameters_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5917 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5918 ett_tetra_T_type2_parameters_03, T_type2_parameters_03_sequence);
5924 static const value_string tetra_T_optional_elements_05_vals[] = {
5926 { 1, "type2-parameters" },
5930 static const per_choice_t T_optional_elements_05_choice[] = {
5931 { 0, &hf_tetra_no_type2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
5932 { 1, &hf_tetra_type2_parameters_03, ASN1_NO_EXTENSIONS , dissect_tetra_T_type2_parameters_03 },
5933 { 0, NULL, 0, NULL }
5937 dissect_tetra_T_optional_elements_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5938 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5939 ett_tetra_T_optional_elements_05, T_optional_elements_05_choice,
5946 static const per_sequence_t D_LOCATION_UPDATE_ACCEPT_sequence[] = {
5947 { &hf_tetra_location_update_type, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_UPDATE_TYPE },
5948 { &hf_tetra_optional_elements_05, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_optional_elements_05 },
5949 { NULL, 0, 0, NULL }
5953 dissect_tetra_D_LOCATION_UPDATE_ACCEPT(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5954 #line 108 "../../asn1/tetra/tetra.cnf"
5955 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5956 ett_tetra_D_LOCATION_UPDATE_ACCEPT, D_LOCATION_UPDATE_ACCEPT_sequence);
5958 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "D-LOCATION-UPDATE-ACCEPT");
5965 static const per_sequence_t D_LOCATION_UPDATE_REJECT_sequence[] = {
5966 { &hf_tetra_location_update_type, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_UPDATE_TYPE },
5967 { &hf_tetra_reject_cause , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_31 },
5968 { &hf_tetra_cipher_control, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_BOOLEAN },
5969 { NULL, 0, 0, NULL }
5973 dissect_tetra_D_LOCATION_UPDATE_REJECT(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5974 #line 253 "../../asn1/tetra/tetra.cnf"
5975 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5976 ett_tetra_D_LOCATION_UPDATE_REJECT, D_LOCATION_UPDATE_REJECT_sequence);
5978 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "D-LOCATION-UPDATE-REJECT");
5985 static const per_sequence_t T_attach_sequence[] = {
5986 { &hf_tetra_lifetime , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_3 },
5987 { &hf_tetra_class_of_usage, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_7 },
5988 { NULL, 0, 0, NULL }
5992 dissect_tetra_T_attach(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5993 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5994 ett_tetra_T_attach, T_attach_sequence);
6000 static const value_string tetra_T_detach_downlike_vals[] = {
6001 { 0, "unknow-gssi" },
6002 { 1, "temporary-detachment1" },
6003 { 2, "temporary-detachment2" },
6004 { 3, "permanent-detachment" },
6010 dissect_tetra_T_detach_downlike(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6011 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
6012 4, NULL, FALSE, 0, NULL);
6018 static const per_sequence_t T_detach_sequence[] = {
6019 { &hf_tetra_detach_downlike, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_detach_downlike },
6020 { NULL, 0, 0, NULL }
6024 dissect_tetra_T_detach(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6025 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6026 ett_tetra_T_detach, T_detach_sequence);
6032 static const value_string tetra_T_attach_detach_identifiet_vals[] = {
6038 static const per_choice_t T_attach_detach_identifiet_choice[] = {
6039 { 0, &hf_tetra_attach , ASN1_NO_EXTENSIONS , dissect_tetra_T_attach },
6040 { 1, &hf_tetra_detach , ASN1_NO_EXTENSIONS , dissect_tetra_T_detach },
6041 { 0, NULL, 0, NULL }
6045 dissect_tetra_T_attach_detach_identifiet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6046 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6047 ett_tetra_T_attach_detach_identifiet, T_attach_detach_identifiet_choice,
6054 static const per_sequence_t T_gssi_extension_sequence[] = {
6055 { &hf_tetra_gssi_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_OCTET_STRING_SIZE_3 },
6056 { &hf_tetra_extension , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_OCTET_STRING_SIZE_3 },
6057 { NULL, 0, 0, NULL }
6061 dissect_tetra_T_gssi_extension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6062 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6063 ett_tetra_T_gssi_extension, T_gssi_extension_sequence);
6069 static const value_string tetra_T_address_type_vals[] = {
6071 { 1, "gssi-extension" },
6076 static const per_choice_t T_address_type_choice[] = {
6077 { 0, &hf_tetra_gssi_01 , ASN1_NO_EXTENSIONS , dissect_tetra_OCTET_STRING_SIZE_3 },
6078 { 1, &hf_tetra_gssi_extension, ASN1_NO_EXTENSIONS , dissect_tetra_T_gssi_extension },
6079 { 2, &hf_tetra_vgssi , ASN1_NO_EXTENSIONS , dissect_tetra_OCTET_STRING_SIZE_3 },
6080 { 0, NULL, 0, NULL }
6084 dissect_tetra_T_address_type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6085 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6086 ett_tetra_T_address_type, T_address_type_choice,
6093 static const per_sequence_t GROUP_IDENTITY_DOWNLINK_sequence[] = {
6094 { &hf_tetra_attach_detach_identifiet, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_attach_detach_identifiet },
6095 { &hf_tetra_address_type , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_address_type },
6096 { NULL, 0, 0, NULL }
6100 dissect_tetra_GROUP_IDENTITY_DOWNLINK(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6101 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6102 ett_tetra_GROUP_IDENTITY_DOWNLINK, GROUP_IDENTITY_DOWNLINK_sequence);
6108 static const per_sequence_t T_type3_elements_04_sequence[] = {
6109 { &hf_tetra_type3_identifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_TYPE3_IDENTIFIER },
6110 { &hf_tetra_length , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_2047 },
6111 { &hf_tetra_repeat_num , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_63 },
6112 { &hf_tetra_group_identity_downlink_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_GROUP_IDENTITY_DOWNLINK },
6113 { NULL, 0, 0, NULL }
6117 dissect_tetra_T_type3_elements_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6118 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6119 ett_tetra_T_type3_elements_04, T_type3_elements_04_sequence);
6125 static const value_string tetra_T_type3_04_vals[] = {
6127 { 1, "type3-elements" },
6131 static const per_choice_t T_type3_04_choice[] = {
6132 { 0, &hf_tetra_no_type3 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6133 { 1, &hf_tetra_type3_elements_04, ASN1_NO_EXTENSIONS , dissect_tetra_T_type3_elements_04 },
6134 { 0, NULL, 0, NULL }
6138 dissect_tetra_T_type3_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6139 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6140 ett_tetra_T_type3_04, T_type3_04_choice,
6147 static const per_sequence_t T_type2_element_02_sequence[] = {
6148 { &hf_tetra_type3_04 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_type3_04 },
6149 { NULL, 0, 0, NULL }
6153 dissect_tetra_T_type2_element_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6154 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6155 ett_tetra_T_type2_element_02, T_type2_element_02_sequence);
6161 static const value_string tetra_T_optional_elements_24_vals[] = {
6163 { 1, "type2-element" },
6167 static const per_choice_t T_optional_elements_24_choice[] = {
6168 { 0, &hf_tetra_no_type2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6169 { 1, &hf_tetra_type2_element_02, ASN1_NO_EXTENSIONS , dissect_tetra_T_type2_element_02 },
6170 { 0, NULL, 0, NULL }
6174 dissect_tetra_T_optional_elements_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6175 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6176 ett_tetra_T_optional_elements_24, T_optional_elements_24_choice,
6183 static const per_sequence_t D_ATTACH_DETACH_GROUP_IDENTITY_sequence[] = {
6184 { &hf_tetra_group_identity_report, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_BOOLEAN },
6185 { &hf_tetra_group_identity_ack_request, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_BOOLEAN },
6186 { &hf_tetra_group_identity_attach_detach_mode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_BOOLEAN },
6187 { &hf_tetra_optional_elements_24, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_optional_elements_24 },
6188 { NULL, 0, 0, NULL }
6192 dissect_tetra_D_ATTACH_DETACH_GROUP_IDENTITY(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6193 #line 258 "../../asn1/tetra/tetra.cnf"
6194 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6195 ett_tetra_D_ATTACH_DETACH_GROUP_IDENTITY, D_ATTACH_DETACH_GROUP_IDENTITY_sequence);
6197 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "U-ATTACH-DETACH-GROUP-IDENTITY");
6204 static const per_sequence_t T_type3_elements_05_sequence[] = {
6205 { &hf_tetra_type3_identifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_TYPE3_IDENTIFIER },
6206 { &hf_tetra_length , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_2047 },
6207 { &hf_tetra_repeat_num , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_63 },
6208 { &hf_tetra_group_identity_downlink_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_GROUP_IDENTITY_DOWNLINK },
6209 { NULL, 0, 0, NULL }
6213 dissect_tetra_T_type3_elements_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6214 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6215 ett_tetra_T_type3_elements_05, T_type3_elements_05_sequence);
6221 static const value_string tetra_T_type3_05_vals[] = {
6223 { 1, "type3-elements" },
6227 static const per_choice_t T_type3_05_choice[] = {
6228 { 0, &hf_tetra_no_type3 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6229 { 1, &hf_tetra_type3_elements_05, ASN1_NO_EXTENSIONS , dissect_tetra_T_type3_elements_05 },
6230 { 0, NULL, 0, NULL }
6234 dissect_tetra_T_type3_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6235 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6236 ett_tetra_T_type3_05, T_type3_05_choice,
6243 static const per_sequence_t T_type2_element_03_sequence[] = {
6244 { &hf_tetra_type3_05 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_type3_05 },
6245 { NULL, 0, 0, NULL }
6249 dissect_tetra_T_type2_element_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6250 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6251 ett_tetra_T_type2_element_03, T_type2_element_03_sequence);
6257 static const value_string tetra_T_optional_elements_25_vals[] = {
6259 { 1, "type2-element" },
6263 static const per_choice_t T_optional_elements_25_choice[] = {
6264 { 0, &hf_tetra_no_type2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6265 { 1, &hf_tetra_type2_element_03, ASN1_NO_EXTENSIONS , dissect_tetra_T_type2_element_03 },
6266 { 0, NULL, 0, NULL }
6270 dissect_tetra_T_optional_elements_25(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6271 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6272 ett_tetra_T_optional_elements_25, T_optional_elements_25_choice,
6279 static const per_sequence_t D_ATTACH_DETACH_GROUP_IDENTITY_ACK_sequence[] = {
6280 { &hf_tetra_group_identity_attach_detach_accept, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_BOOLEAN },
6281 { &hf_tetra_reserved_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
6282 { &hf_tetra_optional_elements_25, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_optional_elements_25 },
6283 { NULL, 0, 0, NULL }
6287 dissect_tetra_D_ATTACH_DETACH_GROUP_IDENTITY_ACK(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6288 #line 263 "../../asn1/tetra/tetra.cnf"
6289 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6290 ett_tetra_D_ATTACH_DETACH_GROUP_IDENTITY_ACK, D_ATTACH_DETACH_GROUP_IDENTITY_ACK_sequence);
6292 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "U-ATTACH-DETACH-GROUP-IDENTITY-ACK");
6299 static const per_sequence_t D_MM_STATUS_sequence[] = {
6300 { &hf_tetra_status_downlink, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_63 },
6301 { NULL, 0, 0, NULL }
6305 dissect_tetra_D_MM_STATUS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6306 #line 238 "../../asn1/tetra/tetra.cnf"
6307 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6308 ett_tetra_D_MM_STATUS, D_MM_STATUS_sequence);
6310 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "U-MM-STATUS");
6317 static const value_string tetra_D_MM_PDU_vals[] = {
6319 { 1, "d-Authentication" },
6320 { 2, "d-Authentication-Reject" },
6323 { 5, "d-Location-Update-Accept" },
6324 { 6, "d-Location-Update-Command" },
6325 { 7, "d-Location-Update-Reject" },
6326 { 8, "d-MM-reserved2" },
6327 { 9, "d-Location-Update-Proceeding" },
6328 { 10, "d-Attach-Detach-Group-Identity" },
6329 { 11, "d-Attach-Detach-Group-Identity-Ack" },
6330 { 12, "d-MM-Status" },
6331 { 13, "d-MM-reserved5" },
6332 { 14, "d-MM-reserved6" },
6333 { 15, "d-MM-Function-Not-Support" },
6337 static const per_choice_t D_MM_PDU_choice[] = {
6338 { 0, &hf_tetra_d_Otar , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6339 { 1, &hf_tetra_d_Authentication, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6340 { 2, &hf_tetra_d_Authentication_Reject, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6341 { 3, &hf_tetra_d_Disable , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6342 { 4, &hf_tetra_d_Enable , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6343 { 5, &hf_tetra_d_Location_Update_Accept, ASN1_NO_EXTENSIONS , dissect_tetra_D_LOCATION_UPDATE_ACCEPT },
6344 { 6, &hf_tetra_d_Location_Update_Command, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6345 { 7, &hf_tetra_d_Location_Update_Reject, ASN1_NO_EXTENSIONS , dissect_tetra_D_LOCATION_UPDATE_REJECT },
6346 { 8, &hf_tetra_d_MM_reserved2, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6347 { 9, &hf_tetra_d_Location_Update_Proceeding, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6348 { 10, &hf_tetra_d_Attach_Detach_Group_Identity, ASN1_NO_EXTENSIONS , dissect_tetra_D_ATTACH_DETACH_GROUP_IDENTITY },
6349 { 11, &hf_tetra_d_Attach_Detach_Group_Identity_Ack, ASN1_NO_EXTENSIONS , dissect_tetra_D_ATTACH_DETACH_GROUP_IDENTITY_ACK },
6350 { 12, &hf_tetra_d_MM_Status , ASN1_NO_EXTENSIONS , dissect_tetra_D_MM_STATUS },
6351 { 13, &hf_tetra_d_MM_reserved5, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6352 { 14, &hf_tetra_d_MM_reserved6, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6353 { 15, &hf_tetra_d_MM_Function_Not_Support, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6354 { 0, NULL, 0, NULL }
6358 dissect_tetra_D_MM_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6359 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6360 ett_tetra_D_MM_PDU, D_MM_PDU_choice,
6367 static const value_string tetra_T_simplex_duplex_selection_03_vals[] = {
6375 dissect_tetra_T_simplex_duplex_selection_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6376 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
6377 2, NULL, FALSE, 0, NULL);
6383 static const value_string tetra_T_basic_service_infomation_vals[] = {
6385 { 1, "basic-service-infomation" },
6389 static const per_choice_t T_basic_service_infomation_choice[] = {
6390 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6391 { 1, &hf_tetra_basic_service_infomation_01, ASN1_NO_EXTENSIONS , dissect_tetra_Basic_service_information },
6392 { 0, NULL, 0, NULL }
6396 dissect_tetra_T_basic_service_infomation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6397 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6398 ett_tetra_T_basic_service_infomation, T_basic_service_infomation_choice,
6405 static const value_string tetra_T_notification_indicator_01_vals[] = {
6407 { 1, "notification-indicator" },
6411 static const per_choice_t T_notification_indicator_01_choice[] = {
6412 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6413 { 1, &hf_tetra_notification_indicator_01, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_63 },
6414 { 0, NULL, 0, NULL }
6418 dissect_tetra_T_notification_indicator_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6419 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6420 ett_tetra_T_notification_indicator_01, T_notification_indicator_01_choice,
6427 static const value_string tetra_T_prop_09_vals[] = {
6433 static const per_choice_t T_prop_09_choice[] = {
6434 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6435 { 1, &hf_tetra_prop_01 , ASN1_NO_EXTENSIONS , dissect_tetra_Proprietary },
6436 { 0, NULL, 0, NULL }
6440 dissect_tetra_T_prop_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6441 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6442 ett_tetra_T_prop_09, T_prop_09_choice,
6449 static const per_sequence_t T_type2_parameters_14_sequence[] = {
6450 { &hf_tetra_basic_service_infomation, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_basic_service_infomation },
6451 { &hf_tetra_notification_indicator_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_notification_indicator_01 },
6452 { &hf_tetra_prop_10 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_prop_09 },
6453 { NULL, 0, 0, NULL }
6457 dissect_tetra_T_type2_parameters_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6458 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6459 ett_tetra_T_type2_parameters_14, T_type2_parameters_14_sequence);
6465 static const value_string tetra_T_optional_elements_18_vals[] = {
6467 { 1, "type2-parameters" },
6471 static const per_choice_t T_optional_elements_18_choice[] = {
6472 { 0, &hf_tetra_no_type2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6473 { 1, &hf_tetra_type2_parameters_14, ASN1_NO_EXTENSIONS , dissect_tetra_T_type2_parameters_14 },
6474 { 0, NULL, 0, NULL }
6478 dissect_tetra_T_optional_elements_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6479 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6480 ett_tetra_T_optional_elements_18, T_optional_elements_18_choice,
6487 static const per_sequence_t D_ALERT_sequence[] = {
6488 { &hf_tetra_call_identifier_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1023 },
6489 { &hf_tetra_call_time_out_setup_phase, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_7 },
6490 { &hf_tetra_reserved_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
6491 { &hf_tetra_simplex_duplex_selection_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_simplex_duplex_selection_03 },
6492 { &hf_tetra_call_queued , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_BOOLEAN },
6493 { &hf_tetra_optional_elements_18, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_optional_elements_18 },
6494 { NULL, 0, 0, NULL }
6498 dissect_tetra_D_ALERT(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6499 #line 134 "../../asn1/tetra/tetra.cnf"
6500 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6501 ett_tetra_D_ALERT, D_ALERT_sequence);
6503 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "D-ALERT");
6510 static const value_string tetra_T_basic_service_information_02_vals[] = {
6512 { 1, "basic-service-information" },
6516 static const per_choice_t T_basic_service_information_02_choice[] = {
6517 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6518 { 1, &hf_tetra_basic_service_information, ASN1_NO_EXTENSIONS , dissect_tetra_Basic_service_information },
6519 { 0, NULL, 0, NULL }
6523 dissect_tetra_T_basic_service_information_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6524 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6525 ett_tetra_T_basic_service_information_02, T_basic_service_information_02_choice,
6532 static const value_string tetra_T_call_status_vals[] = {
6534 { 1, "call-status" },
6538 static const per_choice_t T_call_status_choice[] = {
6539 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6540 { 1, &hf_tetra_call_status_01, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_7 },
6541 { 0, NULL, 0, NULL }
6545 dissect_tetra_T_call_status(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6546 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6547 ett_tetra_T_call_status, T_call_status_choice,
6554 static const value_string tetra_T_notification_indicator_vals[] = {
6556 { 1, "notification-indicator" },
6560 static const per_choice_t T_notification_indicator_choice[] = {
6561 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6562 { 1, &hf_tetra_notification_indicator_01, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_63 },
6563 { 0, NULL, 0, NULL }
6567 dissect_tetra_T_notification_indicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6568 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6569 ett_tetra_T_notification_indicator, T_notification_indicator_choice,
6576 static const value_string tetra_T_prop_08_vals[] = {
6582 static const per_choice_t T_prop_08_choice[] = {
6583 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6584 { 1, &hf_tetra_prop_01 , ASN1_NO_EXTENSIONS , dissect_tetra_Proprietary },
6585 { 0, NULL, 0, NULL }
6589 dissect_tetra_T_prop_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6590 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6591 ett_tetra_T_prop_08, T_prop_08_choice,
6598 static const per_sequence_t T_type2_parameters_13_sequence[] = {
6599 { &hf_tetra_basic_service_information_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_basic_service_information_02 },
6600 { &hf_tetra_call_status , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_call_status },
6601 { &hf_tetra_notification_indicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_notification_indicator },
6602 { &hf_tetra_prop_09 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_prop_08 },
6603 { NULL, 0, 0, NULL }
6607 dissect_tetra_T_type2_parameters_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6608 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6609 ett_tetra_T_type2_parameters_13, T_type2_parameters_13_sequence);
6615 static const value_string tetra_T_optional_elements_17_vals[] = {
6617 { 1, "type2-parameters" },
6621 static const per_choice_t T_optional_elements_17_choice[] = {
6622 { 0, &hf_tetra_no_type2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6623 { 1, &hf_tetra_type2_parameters_13, ASN1_NO_EXTENSIONS , dissect_tetra_T_type2_parameters_13 },
6624 { 0, NULL, 0, NULL }
6628 dissect_tetra_T_optional_elements_17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6629 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6630 ett_tetra_T_optional_elements_17, T_optional_elements_17_choice,
6637 static const per_sequence_t D_CALL_PROCEEDING_sequence[] = {
6638 { &hf_tetra_call_identifier_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1023 },
6639 { &hf_tetra_call_time_out_setup_phase, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_7 },
6640 { &hf_tetra_hook_method_selection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_BOOLEAN },
6641 { &hf_tetra_simplex_duplex_selection_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
6642 { &hf_tetra_optional_elements_17, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_optional_elements_17 },
6643 { NULL, 0, 0, NULL }
6647 dissect_tetra_D_CALL_PROCEEDING(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6648 #line 91 "../../asn1/tetra/tetra.cnf"
6649 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6650 ett_tetra_D_CALL_PROCEEDING, D_CALL_PROCEEDING_sequence);
6652 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "D-CALL-PROCEEDING");
6659 static const value_string tetra_T_simplex_duplex_selection_04_vals[] = {
6667 dissect_tetra_T_simplex_duplex_selection_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6668 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
6669 2, NULL, FALSE, 0, NULL);
6675 static const value_string tetra_T_call_priority_vals[] = {
6677 { 1, "call-priority" },
6681 static const per_choice_t T_call_priority_choice[] = {
6682 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6683 { 1, &hf_tetra_call_priority , ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_15 },
6684 { 0, NULL, 0, NULL }
6688 dissect_tetra_T_call_priority(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6689 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6690 ett_tetra_T_call_priority, T_call_priority_choice,
6697 static const value_string tetra_T_basic_service_information_03_vals[] = {
6699 { 1, "basic-service-information" },
6703 static const per_choice_t T_basic_service_information_03_choice[] = {
6704 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6705 { 1, &hf_tetra_basic_service_information, ASN1_NO_EXTENSIONS , dissect_tetra_Basic_service_information },
6706 { 0, NULL, 0, NULL }
6710 dissect_tetra_T_basic_service_information_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6711 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6712 ett_tetra_T_basic_service_information_03, T_basic_service_information_03_choice,
6719 static const value_string tetra_T_temporary_address_vals[] = {
6721 { 1, "temporary-address" },
6725 static const per_choice_t T_temporary_address_choice[] = {
6726 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6727 { 1, &hf_tetra_temporary_address_01, ASN1_NO_EXTENSIONS , dissect_tetra_Calling_party_address_type },
6728 { 0, NULL, 0, NULL }
6732 dissect_tetra_T_temporary_address(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6733 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6734 ett_tetra_T_temporary_address, T_temporary_address_choice,
6741 static const value_string tetra_T_notification_indicator_02_vals[] = {
6743 { 1, "notification-indicator" },
6747 static const per_choice_t T_notification_indicator_02_choice[] = {
6748 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6749 { 1, &hf_tetra_notification_indicator_01, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_63 },
6750 { 0, NULL, 0, NULL }
6754 dissect_tetra_T_notification_indicator_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6755 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6756 ett_tetra_T_notification_indicator_02, T_notification_indicator_02_choice,
6763 static const value_string tetra_T_prop_10_vals[] = {
6769 static const per_choice_t T_prop_10_choice[] = {
6770 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6771 { 1, &hf_tetra_prop_01 , ASN1_NO_EXTENSIONS , dissect_tetra_Proprietary },
6772 { 0, NULL, 0, NULL }
6776 dissect_tetra_T_prop_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6777 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6778 ett_tetra_T_prop_10, T_prop_10_choice,
6785 static const per_sequence_t T_type2_parameters_15_sequence[] = {
6786 { &hf_tetra_call_priority_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_call_priority },
6787 { &hf_tetra_basic_service_information_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_basic_service_information_03 },
6788 { &hf_tetra_temporary_address, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_temporary_address },
6789 { &hf_tetra_notification_indicator_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_notification_indicator_02 },
6790 { &hf_tetra_prop_11 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_prop_10 },
6791 { NULL, 0, 0, NULL }
6795 dissect_tetra_T_type2_parameters_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6796 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6797 ett_tetra_T_type2_parameters_15, T_type2_parameters_15_sequence);
6803 static const value_string tetra_T_optional_elements_19_vals[] = {
6805 { 1, "type2-parameters" },
6809 static const per_choice_t T_optional_elements_19_choice[] = {
6810 { 0, &hf_tetra_no_type2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6811 { 1, &hf_tetra_type2_parameters_15, ASN1_NO_EXTENSIONS , dissect_tetra_T_type2_parameters_15 },
6812 { 0, NULL, 0, NULL }
6816 dissect_tetra_T_optional_elements_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6817 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6818 ett_tetra_T_optional_elements_19, T_optional_elements_19_choice,
6825 static const per_sequence_t D_CONNECT_sequence[] = {
6826 { &hf_tetra_call_identifier_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1023 },
6827 { &hf_tetra_call_time_out_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_31 },
6828 { &hf_tetra_hook_method_selection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_BOOLEAN },
6829 { &hf_tetra_simplex_duplex_selection_05, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_simplex_duplex_selection_04 },
6830 { &hf_tetra_transmission_grant, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_3 },
6831 { &hf_tetra_transmission_request_permission, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
6832 { &hf_tetra_call_ownership, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
6833 { &hf_tetra_optional_elements_19, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_optional_elements_19 },
6834 { NULL, 0, 0, NULL }
6838 dissect_tetra_D_CONNECT(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6839 #line 114 "../../asn1/tetra/tetra.cnf"
6840 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6841 ett_tetra_D_CONNECT, D_CONNECT_sequence);
6843 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "D-CONNECT");
6850 static const value_string tetra_T_notification_indicator_03_vals[] = {
6852 { 1, "notification-indicator" },
6856 static const per_choice_t T_notification_indicator_03_choice[] = {
6857 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6858 { 1, &hf_tetra_notification_indicator_01, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_63 },
6859 { 0, NULL, 0, NULL }
6863 dissect_tetra_T_notification_indicator_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6864 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6865 ett_tetra_T_notification_indicator_03, T_notification_indicator_03_choice,
6872 static const value_string tetra_T_prop_11_vals[] = {
6878 static const per_choice_t T_prop_11_choice[] = {
6879 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6880 { 1, &hf_tetra_prop_01 , ASN1_NO_EXTENSIONS , dissect_tetra_Proprietary },
6881 { 0, NULL, 0, NULL }
6885 dissect_tetra_T_prop_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6886 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6887 ett_tetra_T_prop_11, T_prop_11_choice,
6894 static const per_sequence_t T_type2_parameters_16_sequence[] = {
6895 { &hf_tetra_notification_indicator_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_notification_indicator_03 },
6896 { &hf_tetra_prop_12 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_prop_11 },
6897 { NULL, 0, 0, NULL }
6901 dissect_tetra_T_type2_parameters_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6902 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6903 ett_tetra_T_type2_parameters_16, T_type2_parameters_16_sequence);
6909 static const value_string tetra_T_optional_elements_20_vals[] = {
6911 { 1, "type2-parameters" },
6915 static const per_choice_t T_optional_elements_20_choice[] = {
6916 { 0, &hf_tetra_no_type2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
6917 { 1, &hf_tetra_type2_parameters_16, ASN1_NO_EXTENSIONS , dissect_tetra_T_type2_parameters_16 },
6918 { 0, NULL, 0, NULL }
6922 dissect_tetra_T_optional_elements_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6923 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6924 ett_tetra_T_optional_elements_20, T_optional_elements_20_choice,
6931 static const per_sequence_t D_CONNECT_ACK_sequence[] = {
6932 { &hf_tetra_call_identifier_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1023 },
6933 { &hf_tetra_call_time_out , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_15 },
6934 { &hf_tetra_transmission_grant, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_3 },
6935 { &hf_tetra_transmission_request_permission, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
6936 { &hf_tetra_optional_elements_20, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_optional_elements_20 },
6937 { NULL, 0, 0, NULL }
6941 dissect_tetra_D_CONNECT_ACK(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6942 #line 119 "../../asn1/tetra/tetra.cnf"
6943 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6944 ett_tetra_D_CONNECT_ACK, D_CONNECT_ACK_sequence);
6946 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "D-CONNECT-ACK");
6953 static const per_sequence_t D_DISCONNECT_sequence[] = {
6954 { &hf_tetra_call_identifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_16383 },
6955 { &hf_tetra_disconnect_cause, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_31 },
6956 { NULL, 0, 0, NULL }
6960 dissect_tetra_D_DISCONNECT(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6961 #line 129 "../../asn1/tetra/tetra.cnf"
6962 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6963 ett_tetra_D_DISCONNECT, D_DISCONNECT_sequence);
6965 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "D-DISCONNECT");
6972 static const per_sequence_t D_INFO_sequence[] = {
6973 { &hf_tetra_call_identifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_16383 },
6974 { &hf_tetra_reset_call_time_out_timer, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
6975 { &hf_tetra_poll_request , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
6976 { NULL, 0, 0, NULL }
6980 dissect_tetra_D_INFO(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6981 #line 124 "../../asn1/tetra/tetra.cnf"
6982 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6983 ett_tetra_D_INFO, D_INFO_sequence);
6985 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "D-INFO");
6992 static const value_string tetra_T_notification_indicator_04_vals[] = {
6994 { 1, "notification-indicator" },
6998 static const per_choice_t T_notification_indicator_04_choice[] = {
6999 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
7000 { 1, &hf_tetra_notification_indicator_01, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_63 },
7001 { 0, NULL, 0, NULL }
7005 dissect_tetra_T_notification_indicator_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7006 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7007 ett_tetra_T_notification_indicator_04, T_notification_indicator_04_choice,
7014 static const value_string tetra_T_prop_12_vals[] = {
7020 static const per_choice_t T_prop_12_choice[] = {
7021 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
7022 { 1, &hf_tetra_prop_01 , ASN1_NO_EXTENSIONS , dissect_tetra_Proprietary },
7023 { 0, NULL, 0, NULL }
7027 dissect_tetra_T_prop_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7028 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7029 ett_tetra_T_prop_12, T_prop_12_choice,
7036 static const per_sequence_t T_type2_parameters_17_sequence[] = {
7037 { &hf_tetra_notification_indicator_05, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_notification_indicator_04 },
7038 { &hf_tetra_prop_13 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_prop_12 },
7039 { NULL, 0, 0, NULL }
7043 dissect_tetra_T_type2_parameters_17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7044 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7045 ett_tetra_T_type2_parameters_17, T_type2_parameters_17_sequence);
7051 static const value_string tetra_T_optional_elements_21_vals[] = {
7053 { 1, "type2-parameters" },
7057 static const per_choice_t T_optional_elements_21_choice[] = {
7058 { 0, &hf_tetra_no_type2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
7059 { 1, &hf_tetra_type2_parameters_17, ASN1_NO_EXTENSIONS , dissect_tetra_T_type2_parameters_17 },
7060 { 0, NULL, 0, NULL }
7064 dissect_tetra_T_optional_elements_21(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7065 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7066 ett_tetra_T_optional_elements_21, T_optional_elements_21_choice,
7073 static const per_sequence_t D_RELEASE_sequence[] = {
7074 { &hf_tetra_call_identifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_16383 },
7075 { &hf_tetra_disconnect_cause, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_31 },
7076 { &hf_tetra_optional_elements_21, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_optional_elements_21 },
7077 { NULL, 0, 0, NULL }
7081 dissect_tetra_D_RELEASE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7082 #line 84 "../../asn1/tetra/tetra.cnf"
7083 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7084 ett_tetra_D_RELEASE, D_RELEASE_sequence);
7086 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "D-RELEASE");
7093 static const value_string tetra_T_simplex_duplex_selection_02_vals[] = {
7101 dissect_tetra_T_simplex_duplex_selection_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7102 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
7103 2, NULL, FALSE, 0, NULL);
7109 static const value_string tetra_T_calling_party_address_vals[] = {
7111 { 1, "calling-party-address" },
7115 static const per_choice_t T_calling_party_address_choice[] = {
7116 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
7117 { 1, &hf_tetra_calling_party_address_01, ASN1_NO_EXTENSIONS , dissect_tetra_Calling_party_address_type },
7118 { 0, NULL, 0, NULL }
7122 dissect_tetra_T_calling_party_address(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7123 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7124 ett_tetra_T_calling_party_address, T_calling_party_address_choice,
7131 static const value_string tetra_T_external_subscriber_number_01_vals[] = {
7133 { 1, "external-subscriber-number" },
7137 static const per_choice_t T_external_subscriber_number_01_choice[] = {
7138 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
7139 { 1, &hf_tetra_external_subscriber_number_03, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_15 },
7140 { 0, NULL, 0, NULL }
7144 dissect_tetra_T_external_subscriber_number_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7145 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7146 ett_tetra_T_external_subscriber_number_01, T_external_subscriber_number_01_choice,
7153 static const value_string tetra_T_prop_07_vals[] = {
7159 static const per_choice_t T_prop_07_choice[] = {
7160 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
7161 { 1, &hf_tetra_prop_01 , ASN1_NO_EXTENSIONS , dissect_tetra_Proprietary },
7162 { 0, NULL, 0, NULL }
7166 dissect_tetra_T_prop_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7167 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7168 ett_tetra_T_prop_07, T_prop_07_choice,
7175 static const per_sequence_t T_type2_parameters_12_sequence[] = {
7176 { &hf_tetra_calling_party_address, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_calling_party_address },
7177 { &hf_tetra_external_subscriber_number_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_external_subscriber_number_01 },
7178 { &hf_tetra_prop_08 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_prop_07 },
7179 { NULL, 0, 0, NULL }
7183 dissect_tetra_T_type2_parameters_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7184 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7185 ett_tetra_T_type2_parameters_12, T_type2_parameters_12_sequence);
7191 static const value_string tetra_T_optional_elements_16_vals[] = {
7193 { 1, "type2-parameters" },
7197 static const per_choice_t T_optional_elements_16_choice[] = {
7198 { 0, &hf_tetra_no_type2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
7199 { 1, &hf_tetra_type2_parameters_12, ASN1_NO_EXTENSIONS , dissect_tetra_T_type2_parameters_12 },
7200 { 0, NULL, 0, NULL }
7204 dissect_tetra_T_optional_elements_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7205 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7206 ett_tetra_T_optional_elements_16, T_optional_elements_16_choice,
7213 static const per_sequence_t D_SETUP_sequence[] = {
7214 { &hf_tetra_call_identifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_16383 },
7215 { &hf_tetra_call_time_out , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_15 },
7216 { &hf_tetra_hook_method_selection_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
7217 { &hf_tetra_simplex_duplex_selection_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_simplex_duplex_selection_02 },
7218 { &hf_tetra_basic_service_information, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Basic_service_information },
7219 { &hf_tetra_transmission_grant, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_3 },
7220 { &hf_tetra_transmission_request_permission, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
7221 { &hf_tetra_call_priority , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_15 },
7222 { &hf_tetra_optional_elements_16, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_optional_elements_16 },
7223 { NULL, 0, 0, NULL }
7227 dissect_tetra_D_SETUP(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7228 #line 96 "../../asn1/tetra/tetra.cnf"
7229 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7230 ett_tetra_D_SETUP, D_SETUP_sequence);
7232 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "D-SETUP");
7241 dissect_tetra_OCTET_STRING_SIZE_6(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7242 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
7249 static const value_string tetra_T_calling_party_type_identifier_01_vals[] = {
7251 { 1, "calling-party-address-SSI" },
7252 { 2, "ssi-extension" },
7257 static const per_choice_t T_calling_party_type_identifier_01_choice[] = {
7258 { 0, &hf_tetra_none1 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
7259 { 1, &hf_tetra_calling_party_address_SSI, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_16777215 },
7260 { 2, &hf_tetra_ssi_extension_01, ASN1_NO_EXTENSIONS , dissect_tetra_OCTET_STRING_SIZE_6 },
7261 { 3, &hf_tetra_none2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
7262 { 0, NULL, 0, NULL }
7266 dissect_tetra_T_calling_party_type_identifier_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7267 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7268 ett_tetra_T_calling_party_type_identifier_01, T_calling_party_type_identifier_01_choice,
7275 static const per_sequence_t D_STATUS_sequence[] = {
7276 { &hf_tetra_calling_party_type_identifier_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_calling_party_type_identifier_01 },
7277 { &hf_tetra_pre_coded_status, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_65535 },
7278 { NULL, 0, 0, NULL }
7282 dissect_tetra_D_STATUS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7283 #line 145 "../../asn1/tetra/tetra.cnf"
7284 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7285 ett_tetra_D_STATUS, D_STATUS_sequence);
7287 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "D-STATUS");
7294 static const value_string tetra_T_notification_indicator_06_vals[] = {
7296 { 1, "notification-indicator" },
7300 static const per_choice_t T_notification_indicator_06_choice[] = {
7301 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
7302 { 1, &hf_tetra_notification_indicator_01, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_63 },
7303 { 0, NULL, 0, NULL }
7307 dissect_tetra_T_notification_indicator_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7308 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7309 ett_tetra_T_notification_indicator_06, T_notification_indicator_06_choice,
7316 static const value_string tetra_T_prop_14_vals[] = {
7322 static const per_choice_t T_prop_14_choice[] = {
7323 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
7324 { 1, &hf_tetra_prop_01 , ASN1_NO_EXTENSIONS , dissect_tetra_Proprietary },
7325 { 0, NULL, 0, NULL }
7329 dissect_tetra_T_prop_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7330 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7331 ett_tetra_T_prop_14, T_prop_14_choice,
7338 static const per_sequence_t T_type2_parameters_19_sequence[] = {
7339 { &hf_tetra_notification_indicator_07, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_notification_indicator_06 },
7340 { &hf_tetra_prop_15 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_prop_14 },
7341 { NULL, 0, 0, NULL }
7345 dissect_tetra_T_type2_parameters_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7346 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7347 ett_tetra_T_type2_parameters_19, T_type2_parameters_19_sequence);
7353 static const value_string tetra_T_optional_elements_23_vals[] = {
7355 { 1, "type2-parameters" },
7359 static const per_choice_t T_optional_elements_23_choice[] = {
7360 { 0, &hf_tetra_no_type2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
7361 { 1, &hf_tetra_type2_parameters_19, ASN1_NO_EXTENSIONS , dissect_tetra_T_type2_parameters_19 },
7362 { 0, NULL, 0, NULL }
7366 dissect_tetra_T_optional_elements_23(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7367 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7368 ett_tetra_T_optional_elements_23, T_optional_elements_23_choice,
7375 static const per_sequence_t D_TX_CEASED_sequence[] = {
7376 { &hf_tetra_call_identifier_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1023 },
7377 { &hf_tetra_transmission_request_permission, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
7378 { &hf_tetra_optional_elements_23, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_optional_elements_23 },
7379 { NULL, 0, 0, NULL }
7383 dissect_tetra_D_TX_CEASED(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7384 #line 139 "../../asn1/tetra/tetra.cnf"
7385 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7386 ett_tetra_D_TX_CEASED, D_TX_CEASED_sequence);
7388 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "D-TX-CEASED");
7395 static const per_sequence_t D_TX_CONTINUE_sequence[] = {
7396 { &hf_tetra_call_identifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_16383 },
7397 { &hf_tetra_continue , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
7398 { &hf_tetra_transmission_request_permission, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
7399 { NULL, 0, 0, NULL }
7403 dissect_tetra_D_TX_CONTINUE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7404 #line 150 "../../asn1/tetra/tetra.cnf"
7405 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7406 ett_tetra_D_TX_CONTINUE, D_TX_CONTINUE_sequence);
7408 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "D-TX-CONTINUE");
7415 static const per_sequence_t D_TX_GRANTED_sequence[] = {
7416 { &hf_tetra_call_identifier_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1023 },
7417 { &hf_tetra_transmission_grant, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_3 },
7418 { &hf_tetra_transmission_request_permission, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
7419 { &hf_tetra_encryption_control, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
7420 { &hf_tetra_reserved_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
7421 { NULL, 0, 0, NULL }
7425 dissect_tetra_D_TX_GRANTED(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7426 #line 155 "../../asn1/tetra/tetra.cnf"
7427 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7428 ett_tetra_D_TX_GRANTED, D_TX_GRANTED_sequence);
7430 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "D-TX-GRANTED");
7438 static const per_sequence_t D_TX_WAIT_sequence[] = {
7439 { &hf_tetra_call_identifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_16383 },
7440 { &hf_tetra_transmission_request_permission, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
7441 { NULL, 0, 0, NULL }
7445 dissect_tetra_D_TX_WAIT(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7446 #line 161 "../../asn1/tetra/tetra.cnf"
7447 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7448 ett_tetra_D_TX_WAIT, D_TX_WAIT_sequence);
7450 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "D-TX-WAIT");
7451 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7452 ett_tetra_D_TX_WAIT, D_TX_WAIT_sequence);
7454 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "D-TX-WAIT");
7461 static const value_string tetra_T_new_call_identifier_vals[] = {
7463 { 1, "new-call-identifier" },
7467 static const per_choice_t T_new_call_identifier_choice[] = {
7468 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
7469 { 1, &hf_tetra_new_call_identifier_01, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_1023 },
7470 { 0, NULL, 0, NULL }
7474 dissect_tetra_T_new_call_identifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7475 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7476 ett_tetra_T_new_call_identifier, T_new_call_identifier_choice,
7483 static const value_string tetra_T_call_time_out_vals[] = {
7485 { 1, "call-time-out" },
7489 static const per_choice_t T_call_time_out_choice[] = {
7490 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
7491 { 1, &hf_tetra_call_time_out_03, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_7 },
7492 { 0, NULL, 0, NULL }
7496 dissect_tetra_T_call_time_out(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7497 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7498 ett_tetra_T_call_time_out, T_call_time_out_choice,
7505 static const value_string tetra_T_call_status_01_vals[] = {
7507 { 1, "call-status" },
7511 static const per_choice_t T_call_status_01_choice[] = {
7512 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
7513 { 1, &hf_tetra_call_status_01, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_7 },
7514 { 0, NULL, 0, NULL }
7518 dissect_tetra_T_call_status_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7519 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7520 ett_tetra_T_call_status_01, T_call_status_01_choice,
7527 static const value_string tetra_T_simplex_duplex_selection_05_vals[] = {
7535 dissect_tetra_T_simplex_duplex_selection_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7536 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
7537 2, NULL, FALSE, 0, NULL);
7543 static const per_sequence_t Modify_type_sequence[] = {
7544 { &hf_tetra_simplex_duplex_selection_06, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_simplex_duplex_selection_05 },
7545 { &hf_tetra_basic_service_information, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Basic_service_information },
7546 { NULL, 0, 0, NULL }
7550 dissect_tetra_Modify_type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7551 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7552 ett_tetra_Modify_type, Modify_type_sequence);
7558 static const value_string tetra_T_modify_vals[] = {
7564 static const per_choice_t T_modify_choice[] = {
7565 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
7566 { 1, &hf_tetra_modify_01 , ASN1_NO_EXTENSIONS , dissect_tetra_Modify_type },
7567 { 0, NULL, 0, NULL }
7571 dissect_tetra_T_modify(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7572 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7573 ett_tetra_T_modify, T_modify_choice,
7580 static const value_string tetra_T_notification_indicator_05_vals[] = {
7582 { 1, "notification-indicator" },
7586 static const per_choice_t T_notification_indicator_05_choice[] = {
7587 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
7588 { 1, &hf_tetra_notification_indicator_01, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_63 },
7589 { 0, NULL, 0, NULL }
7593 dissect_tetra_T_notification_indicator_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7594 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7595 ett_tetra_T_notification_indicator_05, T_notification_indicator_05_choice,
7602 static const value_string tetra_T_prop_13_vals[] = {
7608 static const per_choice_t T_prop_13_choice[] = {
7609 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
7610 { 1, &hf_tetra_prop_01 , ASN1_NO_EXTENSIONS , dissect_tetra_Proprietary },
7611 { 0, NULL, 0, NULL }
7615 dissect_tetra_T_prop_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7616 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7617 ett_tetra_T_prop_13, T_prop_13_choice,
7624 static const per_sequence_t T_type2_parameters_18_sequence[] = {
7625 { &hf_tetra_new_call_identifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_new_call_identifier },
7626 { &hf_tetra_call_time_out_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_call_time_out },
7627 { &hf_tetra_call_status_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_call_status_01 },
7628 { &hf_tetra_modify , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_modify },
7629 { &hf_tetra_notification_indicator_06, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_notification_indicator_05 },
7630 { &hf_tetra_prop_14 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_prop_13 },
7631 { NULL, 0, 0, NULL }
7635 dissect_tetra_T_type2_parameters_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7636 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7637 ett_tetra_T_type2_parameters_18, T_type2_parameters_18_sequence);
7643 static const value_string tetra_T_optional_elements_22_vals[] = {
7645 { 1, "type2-parameters" },
7649 static const per_choice_t T_optional_elements_22_choice[] = {
7650 { 0, &hf_tetra_no_type2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
7651 { 1, &hf_tetra_type2_parameters_18, ASN1_NO_EXTENSIONS , dissect_tetra_T_type2_parameters_18 },
7652 { 0, NULL, 0, NULL }
7656 dissect_tetra_T_optional_elements_22(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7657 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7658 ett_tetra_T_optional_elements_22, T_optional_elements_22_choice,
7665 static const per_sequence_t D_CALL_RESTORE_sequence[] = {
7666 { &hf_tetra_call_identifier_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1023 },
7667 { &hf_tetra_transmission_grant, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_3 },
7668 { &hf_tetra_transmission_request_permission, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
7669 { &hf_tetra_reset_call_time_out, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
7670 { &hf_tetra_optional_elements_22, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_optional_elements_22 },
7671 { NULL, 0, 0, NULL }
7675 dissect_tetra_D_CALL_RESTORE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7676 #line 166 "../../asn1/tetra/tetra.cnf"
7677 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7678 ett_tetra_D_CALL_RESTORE, D_CALL_RESTORE_sequence);
7680 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "D-CALL-RESTORE");
7687 static const value_string tetra_T_calling_party_type_identifier_vals[] = {
7690 { 2, "ssi-extension" },
7695 static const per_choice_t T_calling_party_type_identifier_choice[] = {
7696 { 0, &hf_tetra_none1 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
7697 { 1, &hf_tetra_ssi , ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_16777215 },
7698 { 2, &hf_tetra_ssi_extension_01, ASN1_NO_EXTENSIONS , dissect_tetra_OCTET_STRING_SIZE_6 },
7699 { 3, &hf_tetra_none2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
7700 { 0, NULL, 0, NULL }
7704 dissect_tetra_T_calling_party_type_identifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7705 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7706 ett_tetra_T_calling_party_type_identifier, T_calling_party_type_identifier_choice,
7715 dissect_tetra_OCTET_STRING_SIZE_8(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7716 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
7723 static const value_string tetra_T_short_data_type_identifier_01_vals[] = {
7727 { 3, "length-indicator-data-4" },
7731 static const per_choice_t T_short_data_type_identifier_01_choice[] = {
7732 { 0, &hf_tetra_data_1 , ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_65535 },
7733 { 1, &hf_tetra_data_2 , ASN1_NO_EXTENSIONS , dissect_tetra_OCTET_STRING_SIZE_4 },
7734 { 2, &hf_tetra_data_3_01 , ASN1_NO_EXTENSIONS , dissect_tetra_OCTET_STRING_SIZE_8 },
7735 { 3, &hf_tetra_length_indicator_data_4, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_4194304 },
7736 { 0, NULL, 0, NULL }
7740 dissect_tetra_T_short_data_type_identifier_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7741 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7742 ett_tetra_T_short_data_type_identifier_01, T_short_data_type_identifier_01_choice,
7749 static const per_sequence_t D_SDS_DATA_sequence[] = {
7750 { &hf_tetra_calling_party_type_identifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_calling_party_type_identifier },
7751 { &hf_tetra_short_data_type_identifier_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_short_data_type_identifier_01 },
7752 { NULL, 0, 0, NULL }
7756 dissect_tetra_D_SDS_DATA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7757 #line 171 "../../asn1/tetra/tetra.cnf"
7758 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7759 ett_tetra_D_SDS_DATA, D_SDS_DATA_sequence);
7761 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "D-SDS-DATA");
7768 static const value_string tetra_D_CMCE_PDU_vals[] = {
7770 { 1, "d-Call-Proceeding" },
7772 { 3, "d-Connect-Ack" },
7773 { 4, "d-Disconnect" },
7778 { 9, "d-Tx-Ceased" },
7779 { 10, "d-Tx-Continue" },
7780 { 11, "d-Tx-Granted" },
7781 { 12, "d-Tx-Wait" },
7782 { 13, "d-Tx-Interrupt" },
7783 { 14, "d-Call-Restore" },
7784 { 15, "d-SDS-Data" },
7785 { 16, "d-Facility" },
7789 static const per_choice_t D_CMCE_PDU_choice[] = {
7790 { 0, &hf_tetra_d_Alert , ASN1_NO_EXTENSIONS , dissect_tetra_D_ALERT },
7791 { 1, &hf_tetra_d_Call_Proceeding, ASN1_NO_EXTENSIONS , dissect_tetra_D_CALL_PROCEEDING },
7792 { 2, &hf_tetra_d_Connect , ASN1_NO_EXTENSIONS , dissect_tetra_D_CONNECT },
7793 { 3, &hf_tetra_d_Connect_Ack , ASN1_NO_EXTENSIONS , dissect_tetra_D_CONNECT_ACK },
7794 { 4, &hf_tetra_d_Disconnect , ASN1_NO_EXTENSIONS , dissect_tetra_D_DISCONNECT },
7795 { 5, &hf_tetra_d_Info , ASN1_NO_EXTENSIONS , dissect_tetra_D_INFO },
7796 { 6, &hf_tetra_d_Release , ASN1_NO_EXTENSIONS , dissect_tetra_D_RELEASE },
7797 { 7, &hf_tetra_d_Setup , ASN1_NO_EXTENSIONS , dissect_tetra_D_SETUP },
7798 { 8, &hf_tetra_d_Status , ASN1_NO_EXTENSIONS , dissect_tetra_D_STATUS },
7799 { 9, &hf_tetra_d_Tx_Ceased , ASN1_NO_EXTENSIONS , dissect_tetra_D_TX_CEASED },
7800 { 10, &hf_tetra_d_Tx_Continue , ASN1_NO_EXTENSIONS , dissect_tetra_D_TX_CONTINUE },
7801 { 11, &hf_tetra_d_Tx_Granted , ASN1_NO_EXTENSIONS , dissect_tetra_D_TX_GRANTED },
7802 { 12, &hf_tetra_d_Tx_Wait , ASN1_NO_EXTENSIONS , dissect_tetra_D_TX_WAIT },
7803 { 13, &hf_tetra_d_Tx_Interrupt, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
7804 { 14, &hf_tetra_d_Call_Restore, ASN1_NO_EXTENSIONS , dissect_tetra_D_CALL_RESTORE },
7805 { 15, &hf_tetra_d_SDS_Data , ASN1_NO_EXTENSIONS , dissect_tetra_D_SDS_DATA },
7806 { 16, &hf_tetra_d_Facility , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
7807 { 0, NULL, 0, NULL }
7811 dissect_tetra_D_CMCE_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7812 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7813 ett_tetra_D_CMCE_PDU, D_CMCE_PDU_choice,
7820 static const value_string tetra_T_optional_elements_02_vals[] = {
7826 static const per_choice_t T_optional_elements_02_choice[] = {
7827 { 0, &hf_tetra_no_type2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
7828 { 1, &hf_tetra_sdu , ASN1_NO_EXTENSIONS , dissect_tetra_BIT_STRING },
7829 { 0, NULL, 0, NULL }
7833 dissect_tetra_T_optional_elements_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7834 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7835 ett_tetra_T_optional_elements_02, T_optional_elements_02_choice,
7842 static const per_sequence_t D_NEW_CELL_sequence[] = {
7843 { &hf_tetra_pdu_type_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_7 },
7844 { &hf_tetra_channel_command_valid, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_3 },
7845 { &hf_tetra_optional_elements_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_optional_elements_02 },
7846 { NULL, 0, 0, NULL }
7850 dissect_tetra_D_NEW_CELL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7851 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7852 ett_tetra_D_NEW_CELL, D_NEW_CELL_sequence);
7858 static const value_string tetra_T_optional_elements_03_vals[] = {
7864 static const per_choice_t T_optional_elements_03_choice[] = {
7865 { 0, &hf_tetra_no_type2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
7866 { 1, &hf_tetra_sdu , ASN1_NO_EXTENSIONS , dissect_tetra_BIT_STRING },
7867 { 0, NULL, 0, NULL }
7871 dissect_tetra_T_optional_elements_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7872 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7873 ett_tetra_T_optional_elements_03, T_optional_elements_03_choice,
7880 static const per_sequence_t D_PREPARE_FAIL_sequence[] = {
7881 { &hf_tetra_pdu_type_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_7 },
7882 { &hf_tetra_fail_cause , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_3 },
7883 { &hf_tetra_optional_elements_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_optional_elements_03 },
7884 { NULL, 0, 0, NULL }
7888 dissect_tetra_D_PREPARE_FAIL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7889 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7890 ett_tetra_D_PREPARE_FAIL, D_PREPARE_FAIL_sequence);
7898 dissect_tetra_T_network_time(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7899 offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL);
7907 dissect_tetra_T_reserved(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7908 offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL);
7914 static const per_sequence_t TETRA_NETWORK_TIME_sequence[] = {
7915 { &hf_tetra_network_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_network_time },
7916 { &hf_tetra_local_time_offset_sign, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
7917 { &hf_tetra_local_time_offset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_63 },
7918 { &hf_tetra_year , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_63 },
7919 { &hf_tetra_reserved_04 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_reserved },
7920 { NULL, 0, 0, NULL }
7924 dissect_tetra_TETRA_NETWORK_TIME(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7925 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7926 ett_tetra_TETRA_NETWORK_TIME, TETRA_NETWORK_TIME_sequence);
7932 static const value_string tetra_T_tetra_network_time_vals[] = {
7934 { 1, "tetra-network-time" },
7938 static const per_choice_t T_tetra_network_time_choice[] = {
7939 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
7940 { 1, &hf_tetra_tetra_network_time_01, ASN1_NO_EXTENSIONS , dissect_tetra_TETRA_NETWORK_TIME },
7941 { 0, NULL, 0, NULL }
7945 dissect_tetra_T_tetra_network_time(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7946 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7947 ett_tetra_T_tetra_network_time, T_tetra_network_time_choice,
7954 static const value_string tetra_T_number_of_neighbour_cells_vals[] = {
7956 { 1, "number-of-neighbour-cells" },
7960 static const per_choice_t T_number_of_neighbour_cells_choice[] = {
7961 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
7962 { 1, &hf_tetra_number_of_neighbour_cells_01, ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_7 },
7963 { 0, NULL, 0, NULL }
7967 dissect_tetra_T_number_of_neighbour_cells(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7968 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7969 ett_tetra_T_number_of_neighbour_cells, T_number_of_neighbour_cells_choice,
7976 static const per_sequence_t T_type2_parameters_02_sequence[] = {
7977 { &hf_tetra_tetra_network_time, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_tetra_network_time },
7978 { &hf_tetra_number_of_neighbour_cells, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_number_of_neighbour_cells },
7979 { NULL, 0, 0, NULL }
7983 dissect_tetra_T_type2_parameters_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7984 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7985 ett_tetra_T_type2_parameters_02, T_type2_parameters_02_sequence);
7991 static const value_string tetra_T_optional_elements_04_vals[] = {
7993 { 1, "type2-parameters" },
7997 static const per_choice_t T_optional_elements_04_choice[] = {
7998 { 0, &hf_tetra_no_type2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
7999 { 1, &hf_tetra_type2_parameters_02, ASN1_NO_EXTENSIONS , dissect_tetra_T_type2_parameters_02 },
8000 { 0, NULL, 0, NULL }
8004 dissect_tetra_T_optional_elements_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8005 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
8006 ett_tetra_T_optional_elements_04, T_optional_elements_04_choice,
8013 static const per_sequence_t D_NWRK_BRDADCAST_sequence[] = {
8014 { &hf_tetra_pdu_type_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_7 },
8015 { &hf_tetra_cell_re_select_parameters, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_65535 },
8016 { &hf_tetra_cell_service_level, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_3 },
8017 { &hf_tetra_optional_elements_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_optional_elements_04 },
8018 { NULL, 0, 0, NULL }
8022 dissect_tetra_D_NWRK_BRDADCAST(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8023 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8024 ett_tetra_D_NWRK_BRDADCAST, D_NWRK_BRDADCAST_sequence);
8030 static const per_sequence_t D_RESTORE_ACK_sequence[] = {
8031 { &hf_tetra_pdu_type_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_7 },
8032 { &hf_tetra_sdu , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_BIT_STRING },
8033 { NULL, 0, 0, NULL }
8037 dissect_tetra_D_RESTORE_ACK(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8038 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8039 ett_tetra_D_RESTORE_ACK, D_RESTORE_ACK_sequence);
8045 static const per_sequence_t D_RESTORE_FAIL_sequence[] = {
8046 { &hf_tetra_pdu_type_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_7 },
8047 { &hf_tetra_fail_cause , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_3 },
8048 { NULL, 0, 0, NULL }
8052 dissect_tetra_D_RESTORE_FAIL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8053 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8054 ett_tetra_D_RESTORE_FAIL, D_RESTORE_FAIL_sequence);
8060 static const value_string tetra_DMLE_PDU_vals[] = {
8061 { 0, "d-new-cell" },
8062 { 1, "d-prepare-fail" },
8063 { 2, "d-nwrk-broadcast" },
8064 { 3, "dmle-reserved1" },
8065 { 4, "d-restore-ack" },
8066 { 5, "d-restore-fail" },
8067 { 6, "dmle-reserved2" },
8068 { 7, "dmle-reserved3" },
8072 static const per_choice_t DMLE_PDU_choice[] = {
8073 { 0, &hf_tetra_d_new_cell , ASN1_NO_EXTENSIONS , dissect_tetra_D_NEW_CELL },
8074 { 1, &hf_tetra_d_prepare_fail, ASN1_NO_EXTENSIONS , dissect_tetra_D_PREPARE_FAIL },
8075 { 2, &hf_tetra_d_nwrk_broadcast, ASN1_NO_EXTENSIONS , dissect_tetra_D_NWRK_BRDADCAST },
8076 { 3, &hf_tetra_dmle_reserved1, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
8077 { 4, &hf_tetra_d_restore_ack , ASN1_NO_EXTENSIONS , dissect_tetra_D_RESTORE_ACK },
8078 { 5, &hf_tetra_d_restore_fail, ASN1_NO_EXTENSIONS , dissect_tetra_D_RESTORE_FAIL },
8079 { 6, &hf_tetra_dmle_reserved2, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
8080 { 7, &hf_tetra_dmle_reserved3, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
8081 { 0, NULL, 0, NULL }
8085 dissect_tetra_DMLE_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8086 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
8087 ett_tetra_DMLE_PDU, DMLE_PDU_choice,
8094 static const value_string tetra_D_MLE_PDU_vals[] = {
8095 { 0, "u-mle-reserved1" },
8098 { 3, "u-mle-reserved2" },
8101 { 6, "tetra-management-entity-protocol" },
8102 { 7, "u-mle-reserved3" },
8106 static const per_choice_t D_MLE_PDU_choice[] = {
8107 { 0, &hf_tetra_u_mle_reserved1, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
8108 { 1, &hf_tetra_mm_01 , ASN1_NO_EXTENSIONS , dissect_tetra_D_MM_PDU },
8109 { 2, &hf_tetra_cmce_01 , ASN1_NO_EXTENSIONS , dissect_tetra_D_CMCE_PDU },
8110 { 3, &hf_tetra_u_mle_reserved2, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
8111 { 4, &hf_tetra_sndcp , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
8112 { 5, &hf_tetra_mle_01 , ASN1_NO_EXTENSIONS , dissect_tetra_DMLE_PDU },
8113 { 6, &hf_tetra_tetra_management_entity_protocol, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
8114 { 7, &hf_tetra_u_mle_reserved3, ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
8115 { 0, NULL, 0, NULL }
8119 dissect_tetra_D_MLE_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8120 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
8121 ett_tetra_D_MLE_PDU, D_MLE_PDU_choice,
8128 static const per_sequence_t D_BL_ADATA_sequence[] = {
8129 { &hf_tetra_nr , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
8130 { &hf_tetra_ns , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
8131 { &hf_tetra_tl_sdu_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_D_MLE_PDU },
8132 { NULL, 0, 0, NULL }
8136 dissect_tetra_D_BL_ADATA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8137 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8138 ett_tetra_D_BL_ADATA, D_BL_ADATA_sequence);
8144 static const per_sequence_t D_BL_DATA_sequence[] = {
8145 { &hf_tetra_ns , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
8146 { &hf_tetra_tl_sdu_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_D_MLE_PDU },
8147 { NULL, 0, 0, NULL }
8151 dissect_tetra_D_BL_DATA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8152 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8153 ett_tetra_D_BL_DATA, D_BL_DATA_sequence);
8159 static const per_sequence_t D_BL_ACK_sequence[] = {
8160 { &hf_tetra_nr , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
8161 { &hf_tetra_tl_sdu_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_D_MLE_PDU },
8162 { NULL, 0, 0, NULL }
8166 dissect_tetra_D_BL_ACK(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8167 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8168 ett_tetra_D_BL_ACK, D_BL_ACK_sequence);
8174 static const per_sequence_t D_BL_ADATA_FCS_sequence[] = {
8175 { &hf_tetra_nr , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
8176 { &hf_tetra_ns , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
8177 { &hf_tetra_tl_sdu_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_D_MLE_PDU },
8178 { &hf_tetra_fcs , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_OCTET_STRING_SIZE_4 },
8179 { NULL, 0, 0, NULL }
8183 dissect_tetra_D_BL_ADATA_FCS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8184 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8185 ett_tetra_D_BL_ADATA_FCS, D_BL_ADATA_FCS_sequence);
8191 static const per_sequence_t D_BL_DATA_FCS_sequence[] = {
8192 { &hf_tetra_ns , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
8193 { &hf_tetra_tl_sdu_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_D_MLE_PDU },
8194 { &hf_tetra_fcs , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_OCTET_STRING_SIZE_4 },
8195 { NULL, 0, 0, NULL }
8199 dissect_tetra_D_BL_DATA_FCS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8200 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8201 ett_tetra_D_BL_DATA_FCS, D_BL_DATA_FCS_sequence);
8207 static const per_sequence_t D_MLE_PDU_FCS_sequence[] = {
8208 { &hf_tetra_d_mle_pdu , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_D_MLE_PDU },
8209 { &hf_tetra_fcs , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_OCTET_STRING_SIZE_4 },
8210 { NULL, 0, 0, NULL }
8214 dissect_tetra_D_MLE_PDU_FCS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8215 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8216 ett_tetra_D_MLE_PDU_FCS, D_MLE_PDU_FCS_sequence);
8222 static const per_sequence_t D_BL_ACK_FCS_sequence[] = {
8223 { &hf_tetra_nr , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
8224 { &hf_tetra_tl_sdu_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_D_MLE_PDU },
8225 { &hf_tetra_fcs , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_OCTET_STRING_SIZE_4 },
8226 { NULL, 0, 0, NULL }
8230 dissect_tetra_D_BL_ACK_FCS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8231 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8232 ett_tetra_D_BL_ACK_FCS, D_BL_ACK_FCS_sequence);
8238 static const value_string tetra_D_LLC_PDU_vals[] = {
8243 { 4, "bl-adata-fcs" },
8244 { 5, "bl-data-fcs" },
8245 { 6, "bl-udata-fcs" },
8246 { 7, "bl-ack-fcs" },
8251 { 12, "al-reconnect" },
8258 static const per_choice_t D_LLC_PDU_choice[] = {
8259 { 0, &hf_tetra_bl_adata_01 , ASN1_NO_EXTENSIONS , dissect_tetra_D_BL_ADATA },
8260 { 1, &hf_tetra_bl_data_01 , ASN1_NO_EXTENSIONS , dissect_tetra_D_BL_DATA },
8261 { 2, &hf_tetra_bl_udata_01 , ASN1_NO_EXTENSIONS , dissect_tetra_D_MLE_PDU },
8262 { 3, &hf_tetra_bl_ack_01 , ASN1_NO_EXTENSIONS , dissect_tetra_D_BL_ACK },
8263 { 4, &hf_tetra_bl_adata_fcs_01, ASN1_NO_EXTENSIONS , dissect_tetra_D_BL_ADATA_FCS },
8264 { 5, &hf_tetra_bl_data_fcs_01, ASN1_NO_EXTENSIONS , dissect_tetra_D_BL_DATA_FCS },
8265 { 6, &hf_tetra_bl_udata_fcs_01, ASN1_NO_EXTENSIONS , dissect_tetra_D_MLE_PDU_FCS },
8266 { 7, &hf_tetra_bl_ack_fcs_01 , ASN1_NO_EXTENSIONS , dissect_tetra_D_BL_ACK_FCS },
8267 { 8, &hf_tetra_al_setup , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
8268 { 9, &hf_tetra_al_data , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
8269 { 10, &hf_tetra_al_udata , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
8270 { 11, &hf_tetra_al_ack , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
8271 { 12, &hf_tetra_al_reconnect , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
8272 { 13, &hf_tetra_reserve1 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
8273 { 14, &hf_tetra_reserve2 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
8274 { 15, &hf_tetra_al_disc , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
8275 { 0, NULL, 0, NULL }
8279 dissect_tetra_D_LLC_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8280 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
8281 ett_tetra_D_LLC_PDU, D_LLC_PDU_choice,
8288 static const per_sequence_t OTHER_DATA_sequence[] = {
8289 { &hf_tetra_power_control , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_power_control },
8290 { &hf_tetra_slot_granting_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_slot_granting_02 },
8291 { &hf_tetra_channel_allocation_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_channel_allocation_02 },
8292 { &hf_tetra_tm_sdu_09 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_D_LLC_PDU },
8293 { NULL, 0, 0, NULL }
8297 dissect_tetra_OTHER_DATA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8298 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8299 ett_tetra_OTHER_DATA, OTHER_DATA_sequence);
8305 static const per_sequence_t SSI_NEED_sequence[] = {
8306 { &hf_tetra_ssi , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_16777215 },
8307 { &hf_tetra_other , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_OTHER_DATA },
8308 { NULL, 0, 0, NULL }
8312 dissect_tetra_SSI_NEED(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8313 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8314 ett_tetra_SSI_NEED, SSI_NEED_sequence);
8320 static const per_sequence_t EVENT_NEED_sequence[] = {
8321 { &hf_tetra_eventlabel , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1023 },
8322 { &hf_tetra_other , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_OTHER_DATA },
8323 { NULL, 0, 0, NULL }
8327 dissect_tetra_EVENT_NEED(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8328 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8329 ett_tetra_EVENT_NEED, EVENT_NEED_sequence);
8335 static const per_sequence_t USSI_NEED_sequence[] = {
8336 { &hf_tetra_ussi , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_16777215 },
8337 { &hf_tetra_other , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_OTHER_DATA },
8338 { NULL, 0, 0, NULL }
8342 dissect_tetra_USSI_NEED(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8343 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8344 ett_tetra_USSI_NEED, USSI_NEED_sequence);
8350 static const per_sequence_t SMI_NEED_sequence[] = {
8351 { &hf_tetra_smi , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_16777215 },
8352 { &hf_tetra_other , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_OTHER_DATA },
8353 { NULL, 0, 0, NULL }
8357 dissect_tetra_SMI_NEED(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8358 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8359 ett_tetra_SMI_NEED, SMI_NEED_sequence);
8365 static const per_sequence_t SSI_EVENT_NEED_sequence[] = {
8366 { &hf_tetra_ssi , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_16777215 },
8367 { &hf_tetra_ventlabel , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1023 },
8368 { &hf_tetra_other , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_OTHER_DATA },
8369 { NULL, 0, 0, NULL }
8373 dissect_tetra_SSI_EVENT_NEED(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8374 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8375 ett_tetra_SSI_EVENT_NEED, SSI_EVENT_NEED_sequence);
8381 static const per_sequence_t SSI_USAGE_NEED_sequence[] = {
8382 { &hf_tetra_ssi , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_16777215 },
8383 { &hf_tetra_usage_maker , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_63 },
8384 { &hf_tetra_other , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_OTHER_DATA },
8385 { NULL, 0, 0, NULL }
8389 dissect_tetra_SSI_USAGE_NEED(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8390 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8391 ett_tetra_SSI_USAGE_NEED, SSI_USAGE_NEED_sequence);
8399 dissect_tetra_BIT_STRING_SIZE_34(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8400 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
8401 34, 34, FALSE, NULL);
8407 static const per_sequence_t SMI_EVENT_NEED_sequence[] = {
8408 { &hf_tetra_smi_eventlabel, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_BIT_STRING_SIZE_34 },
8409 { &hf_tetra_other , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_OTHER_DATA },
8410 { NULL, 0, 0, NULL }
8414 dissect_tetra_SMI_EVENT_NEED(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8415 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8416 ett_tetra_SMI_EVENT_NEED, SMI_EVENT_NEED_sequence);
8422 static const value_string tetra_AddressMacResource_vals[] = {
8425 { 2, "eventLabel" },
8428 { 5, "ssi-eventLabel" },
8429 { 6, "ssi-usage-maker" },
8430 { 7, "smi-eventLabel" },
8434 static const per_choice_t AddressMacResource_choice[] = {
8435 { 0, &hf_tetra_null_pdu , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
8436 { 1, &hf_tetra_ssi_01 , ASN1_NO_EXTENSIONS , dissect_tetra_SSI_NEED },
8437 { 2, &hf_tetra_eventLabel_01 , ASN1_NO_EXTENSIONS , dissect_tetra_EVENT_NEED },
8438 { 3, &hf_tetra_ussi_01 , ASN1_NO_EXTENSIONS , dissect_tetra_USSI_NEED },
8439 { 4, &hf_tetra_smi_01 , ASN1_NO_EXTENSIONS , dissect_tetra_SMI_NEED },
8440 { 5, &hf_tetra_ssi_eventLabel, ASN1_NO_EXTENSIONS , dissect_tetra_SSI_EVENT_NEED },
8441 { 6, &hf_tetra_ssi_usage_maker, ASN1_NO_EXTENSIONS , dissect_tetra_SSI_USAGE_NEED },
8442 { 7, &hf_tetra_smi_eventLabel, ASN1_NO_EXTENSIONS , dissect_tetra_SMI_EVENT_NEED },
8443 { 0, NULL, 0, NULL }
8447 dissect_tetra_AddressMacResource(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8448 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
8449 ett_tetra_AddressMacResource, AddressMacResource_choice,
8456 static const per_sequence_t MAC_RESOURCE_sequence[] = {
8457 { &hf_tetra_pdu_type , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_3 },
8458 { &hf_tetra_fill_bit_indication, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Fill_Bit_Indication },
8459 { &hf_tetra_position_of_grant, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_Position_Of_Grant },
8460 { &hf_tetra_encryption_mode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_3 },
8461 { &hf_tetra_access_ack , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_access_ack },
8462 { &hf_tetra_lengthIndication_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_LengthIndicationMacResource },
8463 { &hf_tetra_address_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_AddressMacResource },
8464 { NULL, 0, 0, NULL }
8468 dissect_tetra_MAC_RESOURCE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8469 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8470 ett_tetra_MAC_RESOURCE, MAC_RESOURCE_sequence);
8478 dissect_tetra_INTEGER_0_33554431(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8479 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
8480 0U, 33554431U, NULL, FALSE);
8486 static const value_string tetra_T_optional_field_vals[] = {
8488 { 1, "class-bitmap" },
8494 static const per_choice_t T_optional_field_choice[] = {
8495 { 0, &hf_tetra_none , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
8496 { 1, &hf_tetra_class_bitmap , ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_65535 },
8497 { 2, &hf_tetra_gssi , ASN1_NO_EXTENSIONS , dissect_tetra_INTEGER_0_33554431 },
8498 { 3, &hf_tetra_reserved_03 , ASN1_NO_EXTENSIONS , dissect_tetra_NULL },
8499 { 0, NULL, 0, NULL }
8503 dissect_tetra_T_optional_field(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8504 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
8505 ett_tetra_T_optional_field, T_optional_field_choice,
8512 static const per_sequence_t MAC_ACCESS_DEFINE_sequence[] = {
8513 { &hf_tetra_pdu_type , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_3 },
8514 { &hf_tetra_broadcast_type, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_3 },
8515 { &hf_tetra_broadcast_channel, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
8516 { &hf_tetra_access_code , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_3 },
8517 { &hf_tetra_imm_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_15 },
8518 { &hf_tetra_wt_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_15 },
8519 { &hf_tetra_nu_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_15 },
8520 { &hf_tetra_frame_len_factor_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_1 },
8521 { &hf_tetra_timeslot_pointer_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_15 },
8522 { &hf_tetra_min_priority , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_7 },
8523 { &hf_tetra_optional_field, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_T_optional_field },
8524 { &hf_tetra_filler_bits , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tetra_INTEGER_0_7 },
8525 { NULL, 0, 0, NULL }
8529 dissect_tetra_MAC_ACCESS_DEFINE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8530 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8531 ett_tetra_MAC_ACCESS_DEFINE, MAC_ACCESS_DEFINE_sequence);
8538 static void dissect_AACH_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
8539 asn1_ctx_t asn1_ctx;
8540 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
8541 dissect_tetra_AACH(tvb, 0, &asn1_ctx, tree, hf_tetra_AACH_PDU);
8543 static void dissect_BSCH_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
8544 asn1_ctx_t asn1_ctx;
8545 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
8546 dissect_tetra_BSCH(tvb, 0, &asn1_ctx, tree, hf_tetra_BSCH_PDU);
8548 static void dissect_BNCH_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
8549 asn1_ctx_t asn1_ctx;
8550 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
8551 dissect_tetra_BNCH(tvb, 0, &asn1_ctx, tree, hf_tetra_BNCH_PDU);
8553 static void dissect_MAC_ACCESS_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
8554 asn1_ctx_t asn1_ctx;
8555 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
8556 dissect_tetra_MAC_ACCESS(tvb, 0, &asn1_ctx, tree, hf_tetra_MAC_ACCESS_PDU);
8558 static void dissect_MAC_FRAG_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
8559 asn1_ctx_t asn1_ctx;
8560 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
8561 dissect_tetra_MAC_FRAG(tvb, 0, &asn1_ctx, tree, hf_tetra_MAC_FRAG_PDU);
8563 static void dissect_MAC_FRAG120_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
8564 asn1_ctx_t asn1_ctx;
8565 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
8566 dissect_tetra_MAC_FRAG120(tvb, 0, &asn1_ctx, tree, hf_tetra_MAC_FRAG120_PDU);
8568 static void dissect_MAC_END_UPLINK_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
8569 asn1_ctx_t asn1_ctx;
8570 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
8571 dissect_tetra_MAC_END_UPLINK(tvb, 0, &asn1_ctx, tree, hf_tetra_MAC_END_UPLINK_PDU);
8573 static void dissect_MAC_END_UP114_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
8574 asn1_ctx_t asn1_ctx;
8575 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
8576 dissect_tetra_MAC_END_UP114(tvb, 0, &asn1_ctx, tree, hf_tetra_MAC_END_UP114_PDU);
8578 static void dissect_MAC_END_HU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
8579 asn1_ctx_t asn1_ctx;
8580 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
8581 dissect_tetra_MAC_END_HU(tvb, 0, &asn1_ctx, tree, hf_tetra_MAC_END_HU_PDU);
8583 static void dissect_MAC_END_DOWNLINK_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
8584 asn1_ctx_t asn1_ctx;
8585 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
8586 dissect_tetra_MAC_END_DOWNLINK(tvb, 0, &asn1_ctx, tree, hf_tetra_MAC_END_DOWNLINK_PDU);
8588 static void dissect_MAC_END_DOWN111_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
8589 asn1_ctx_t asn1_ctx;
8590 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
8591 dissect_tetra_MAC_END_DOWN111(tvb, 0, &asn1_ctx, tree, hf_tetra_MAC_END_DOWN111_PDU);
8593 static void dissect_MAC_RESOURCE_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
8594 asn1_ctx_t asn1_ctx;
8595 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
8596 dissect_tetra_MAC_RESOURCE(tvb, 0, &asn1_ctx, tree, hf_tetra_MAC_RESOURCE_PDU);
8598 static void dissect_MAC_ACCESS_DEFINE_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
8599 asn1_ctx_t asn1_ctx;
8600 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
8601 dissect_tetra_MAC_ACCESS_DEFINE(tvb, 0, &asn1_ctx, tree, hf_tetra_MAC_ACCESS_DEFINE_PDU);
8605 /*--- End of included file: packet-tetra-fn.c ---*/
8606 #line 97 "../../asn1/tetra/packet-tetra-template.c"
8608 static const value_string channeltypenames[] = {
8624 static const value_string recvchanneltypenames[] = {
8641 /* Get the length of received pdu */
8642 static gint get_rx_pdu_length(guint32 channel_type)
8646 switch(channel_type) {
8647 case TETRA_CHAN_AACH:
8650 case TETRA_CHAN_SCH_F:
8653 case TETRA_CHAN_SCH_D:
8656 case TETRA_CHAN_BSCH:
8659 case TETRA_CHAN_BNCH:
8662 case TETRA_CHAN_TCH_F:
8665 case TETRA_CHAN_TCH_H:
8668 case TETRA_CHAN_TCH_2_4:
8671 case TETRA_CHAN_TCH_4_8:
8674 case TETRA_CHAN_STCH:
8677 case TETRA_CHAN_SCH_HU:
8688 /* Get the length of transmitted pdu */
8689 static gint get_tx_pdu_length(guint32 channel_type)
8693 switch(channel_type) {
8694 case TETRA_CHAN_AACH:
8697 case TETRA_CHAN_SCH_F:
8700 case TETRA_CHAN_SCH_D:
8703 case TETRA_CHAN_BSCH:
8706 case TETRA_CHAN_BNCH:
8709 case TETRA_CHAN_TCH_F:
8712 case TETRA_CHAN_TCH_H:
8715 case TETRA_CHAN_TCH_2_4:
8718 case TETRA_CHAN_TCH_4_8:
8721 case TETRA_CHAN_STCH:
8729 void tetra_dissect_pdu(int channel_type, int dir, tvbuff_t *pdu, proto_tree *tree, packet_info *pinfo)
8731 proto_item *tetra_sub_item;
8732 proto_tree *tetra_sub_tree;
8735 tetra_sub_item = proto_tree_add_item(tree, hf_tetra_pdu,
8736 pdu, 0, tvb_length(pdu), ENC_NA);
8738 tetra_sub_tree = proto_item_add_subtree(tetra_sub_item, ett_tetra);
8740 switch(channel_type) {
8741 case TETRA_CHAN_AACH:
8742 dissect_AACH_PDU(pdu, pinfo, tetra_sub_tree );
8744 case TETRA_CHAN_SCH_F:
8745 p = tvb_get_guint8(pdu, 0);
8748 dissect_MAC_RESOURCE_PDU(pdu, pinfo, tetra_sub_tree );
8750 case 1: /* MAC-FRAG or MAC-END */
8752 if (dir == TETRA_DOWNLINK)
8753 dissect_MAC_END_DOWNLINK_PDU(pdu, pinfo, tetra_sub_tree );
8755 dissect_MAC_END_UPLINK_PDU(pdu, pinfo, tetra_sub_tree);
8758 dissect_MAC_FRAG_PDU(pdu, pinfo, tetra_sub_tree );
8761 dissect_MAC_ACCESS_DEFINE_PDU(pdu, pinfo, tetra_sub_tree );
8765 case TETRA_CHAN_SCH_D:
8766 p = tvb_get_guint8(pdu, 0);
8769 dissect_MAC_RESOURCE_PDU(pdu, pinfo, tetra_sub_tree );
8771 case 1: /* MAC-FRAG or MAC-END */
8773 dissect_MAC_END_DOWN111_PDU(pdu, pinfo, tetra_sub_tree );
8775 dissect_MAC_FRAG120_PDU(pdu, pinfo, tetra_sub_tree );
8778 dissect_MAC_ACCESS_DEFINE_PDU(pdu, pinfo, tetra_sub_tree );
8782 case TETRA_CHAN_SCH_HU:
8783 p = tvb_get_guint8(pdu, 0);
8785 case 0: /* MAC-ACCESS */
8786 dissect_MAC_ACCESS_PDU(pdu, pinfo, tetra_sub_tree);
8788 case 1: /* MAC-END-HU */
8789 dissect_MAC_END_HU_PDU(pdu, pinfo, tetra_sub_tree);
8793 case TETRA_CHAN_BSCH:
8794 dissect_BSCH_PDU(pdu, pinfo, tetra_sub_tree );
8796 case TETRA_CHAN_BNCH:
8797 dissect_BNCH_PDU(pdu, pinfo, tetra_sub_tree );
8799 case TETRA_CHAN_STCH:
8800 p = tvb_get_guint8(pdu, 0);
8803 dissect_MAC_RESOURCE_PDU(pdu, pinfo, tetra_sub_tree );
8805 case 1: /* MAC-FRAG or MAC-END */
8807 if (dir == TETRA_DOWNLINK)
8808 dissect_MAC_END_DOWN111_PDU(pdu, pinfo, tetra_sub_tree );
8810 dissect_MAC_END_UP114_PDU(pdu, pinfo, tetra_sub_tree);
8812 dissect_MAC_FRAG120_PDU(pdu, pinfo, tetra_sub_tree );
8815 dissect_MAC_ACCESS_DEFINE_PDU(pdu, pinfo, tetra_sub_tree );
8822 static void dissect_tetra_UNITDATA_IND(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tetra_tree, int offset)
8825 guint32 channels = 0, i;
8826 guint32 channel_type;
8827 gint pdu_offset = 0;
8828 proto_item *tetra_sub_item;
8829 proto_tree *tetra_header_tree = NULL;
8830 tvbuff_t *payload_tvb;
8833 rxreg = tvb_get_letohl(tvb, offset);
8834 proto_tree_add_uint(tetra_tree, hf_tetra_len0, tvb, offset, 4, rxreg);
8838 rxreg = tvb_get_letohl(tvb, offset);
8839 proto_tree_add_uint(tetra_tree, hf_tetra_rvstr, tvb, offset, 4, rxreg);
8841 /* Logical channels */
8842 channels = rxreg & 0x3;
8843 tetra_sub_item = proto_tree_add_uint( tetra_tree, hf_tetra_channels, tvb, offset, 4, channels );
8844 tetra_header_tree = proto_item_add_subtree(tetra_sub_item, ett_tetra);
8846 pdu_offset = offset + 4;
8847 for(i = 0; i < channels; i++) {
8848 gint hf_channel[] = {
8849 hf_tetra_rxchannel1,
8850 hf_tetra_rxchannel2,
8853 gint byte_len, bits_len, remaining_bits;
8856 channel_type = (rxreg >> ((i + 1) * 4) ) & 0xf;
8857 proto_tree_add_uint( tetra_header_tree, hf_channel[i], tvb, offset, 4, channel_type);
8860 proto_tree_add_boolean( tetra_header_tree, hf_tetra_crc, tvb, offset, 4, !(rxreg >> (i + 2) & 0x01));
8863 bits_len = get_rx_pdu_length(channel_type);
8864 byte_len = bits_len >> 3;
8865 remaining_bits = bits_len % 8;
8866 if ((remaining_bits)!=0)
8869 payload_tvb = tvb_new_subset(tvb, pdu_offset, byte_len, byte_len);
8870 tetra_dissect_pdu(channel_type, TETRA_UPLINK, payload_tvb, tetra_header_tree, pinfo);
8872 if ((remaining_bits)!=0)
8874 pdu_offset += byte_len;
8878 void dissect_tetra_UNITDATA_REQ(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tetra_tree, int offset)
8881 guint32 channels = 0, i;
8882 guint32 channel_type;
8883 gint pdu_offset = 0;
8884 proto_item *tetra_sub_item = NULL;
8885 proto_tree *tetra_header_tree = NULL;
8886 tvbuff_t *payload_tvb;
8889 txreg = tvb_get_letohl(tvb, offset);
8890 proto_tree_add_uint(tetra_tree, hf_tetra_txreg, tvb, offset, 4, txreg);
8892 /* Logical channels */
8893 channels = (txreg & 0x3) + 1;
8894 tetra_sub_item = proto_tree_add_uint( tetra_tree, hf_tetra_channels, tvb, offset, 4, channels );
8895 tetra_header_tree = proto_item_add_subtree(tetra_sub_item, ett_tetra);
8901 pdu_offset = offset + 4;
8902 for(i = 0; i < channels; i++) {
8903 gint hf_channel[] = {hf_tetra_channel1, hf_tetra_channel2, hf_tetra_channel3};
8904 gint byte_len, bits_len, remaining_bits;
8906 channel_type = txreg & 0xf;
8907 proto_tree_add_uint( tetra_header_tree, hf_channel[i], tvb, offset, 4, channel_type);
8910 bits_len = get_tx_pdu_length(channel_type);
8911 byte_len = bits_len >> 3;
8912 remaining_bits = bits_len % 8;
8913 if ((remaining_bits)!=0)
8916 payload_tvb = tvb_new_subset(tvb, pdu_offset, byte_len, byte_len);
8917 tetra_dissect_pdu(channel_type, TETRA_DOWNLINK, payload_tvb, tetra_header_tree, pinfo);
8918 pdu_offset += byte_len;
8923 dissect_tetra(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
8926 proto_item *tetra_item = NULL;
8927 proto_item *tetra_sub_item = NULL;
8928 proto_tree *tetra_tree = NULL;
8929 proto_tree *tetra_header_tree = NULL;
8931 guint16 carriernumber = -1;
8933 col_set_str(pinfo->cinfo, COL_PROTOCOL, PROTO_TAG_tetra);
8934 /* Clear out stuff in the info column */
8935 col_clear(pinfo->cinfo,COL_INFO);
8938 * This is not a good way of dissecting packets. The tvb length should
8939 * be sanity checked so we aren't going past the actual size of the buffer.
8941 type = tvb_get_guint8(tvb, 0);
8943 if(include_carrier_number) {
8944 carriernumber = tvb_get_guint8(tvb, 1);
8945 carriernumber |= 0xff00;
8951 if(include_carrier_number)
8952 col_add_fstr(pinfo->cinfo, COL_INFO, "%d > %d tetra-UNITDATA-REQ, Carrier: %d",
8953 pinfo->srcport, pinfo->destport, carriernumber);
8955 col_add_fstr(pinfo->cinfo, COL_INFO, "%d > %d tetra-UNITDATA-REQ",
8956 pinfo->srcport, pinfo->destport);
8959 if(include_carrier_number)
8960 col_add_fstr(pinfo->cinfo, COL_INFO, "%d > %d tetra-UNITDATA-IND, Carrier: %d",
8961 pinfo->srcport, pinfo->destport, carriernumber);
8963 col_add_fstr(pinfo->cinfo, COL_INFO, "%d > %d tetra-UNITDATA-IND",
8964 pinfo->srcport, pinfo->destport);
8967 if(include_carrier_number)
8968 col_add_fstr(pinfo->cinfo, COL_INFO, "%d > %d MAC-Timer, Carrier: %d",
8969 pinfo->srcport, pinfo->destport, carriernumber);
8971 col_add_fstr(pinfo->cinfo, COL_INFO, "%d > %d MAC-Timer",
8972 pinfo->srcport, pinfo->destport);
8975 if(include_carrier_number)
8976 col_add_fstr(pinfo->cinfo, COL_INFO, "%d > %d tetra-UNITDATA-IND Done, Carrier: %d",
8977 pinfo->srcport, pinfo->destport, carriernumber);
8979 col_add_fstr(pinfo->cinfo, COL_INFO, "%d > %d tetra-UNITDATA-IND Done",
8980 pinfo->srcport, pinfo->destport);
8983 if(include_carrier_number)
8984 col_add_fstr(pinfo->cinfo, COL_INFO, "%d > %d tetra-UNITDATA-REQ Done, Carrier: %d",
8985 pinfo->srcport, pinfo->destport, carriernumber);
8987 col_add_fstr(pinfo->cinfo, COL_INFO, "%d > %d tetra-UNITDATA-REQ Done",
8988 pinfo->srcport, pinfo->destport);
8991 col_add_fstr(pinfo->cinfo, COL_INFO, "%d > %d Unknown command: %d",
8992 pinfo->srcport, pinfo->destport, type);
8996 if (tree) { /* we are being asked for details */
8998 guint32 txtimer = 0;
9001 tetra_item = proto_tree_add_item(tree, proto_tetra, tvb, 0, -1, ENC_NA);
9002 tetra_tree = proto_item_add_subtree(tetra_item, ett_tetra);
9006 /* Carrier number */
9007 if(include_carrier_number) {
9008 proto_tree_add_uint(tetra_tree, hf_tetra_carriernumber, tvb, offset, 1, carriernumber);
9013 tetra_sub_item = proto_tree_add_item( tetra_tree, hf_tetra_header, tvb, offset, -1, ENC_NA );
9014 tetra_header_tree = proto_item_add_subtree(tetra_sub_item, ett_tetra);
9017 txtimer = tvb_get_letohl(tvb, offset);
9018 tetra_sub_item = proto_tree_add_item(tetra_header_tree, hf_tetra_timer, tvb, offset, 4, ENC_LITTLE_ENDIAN);
9019 tslot = ((txtimer & 0x7800) >> 11);
9024 proto_item_append_text(tetra_sub_item, " (Multiple frame: %d, Frame: %d, Slot: %d)",
9025 txtimer & 0x3F, (txtimer & 0x7c0) >> 6,
9031 case 1: /* tetra-UNITDATA-REQ */
9032 case 128: /* tetra-UNITDATA-REQ Done */
9033 dissect_tetra_UNITDATA_REQ(tvb, pinfo, tetra_header_tree, offset);
9035 case 2: /* tetra-UNITDATA-IND */
9036 case 127: /* tetra-UNITDATA-IND Done */
9037 dissect_tetra_UNITDATA_IND(tvb, pinfo, tetra_header_tree, offset);
9039 case 3: /* MAC-Timer */
9047 void proto_reg_handoff_tetra(void)
9049 static gboolean initialized=FALSE;
9052 data_handle = find_dissector("data");
9053 tetra_handle = create_dissector_handle(dissect_tetra, proto_tetra);
9054 dissector_add_uint("udp.port", global_tetra_port, tetra_handle);
9060 void proto_register_tetra (void)
9062 module_t *per_module;
9065 * A header field is something you can search/filter on.
9067 * We create a structure to register our fields. It consists of an
9068 * array of hf_register_info structures, each of which are of the format
9069 * {&(field id), {name, abbrev, type, display, strings, bitmask, blurb, HFILL}}.
9071 static hf_register_info hf[] = {
9073 { "Data", "tetra.data", FT_NONE, BASE_NONE, NULL, 0x0,
9074 "tetra PDU", HFILL }},
9076 { "Registers", "tetra.header", FT_NONE, BASE_NONE, NULL, 0x0,
9077 "TETRA Registers", HFILL }},
9078 { &hf_tetra_channels,
9079 { "Logical Channels", "tetra.channels", FT_UINT8, BASE_DEC, NULL, 0x0,
9080 "The amount of logical channels", HFILL }},
9081 { &hf_tetra_channel1,
9082 { "Channel 1", "tetra.txchannel1", FT_UINT8, BASE_DEC, VALS(channeltypenames), 0x0,
9083 "Logical channels type", HFILL }},
9084 { &hf_tetra_channel2,
9085 { "Channel 2", "tetra.txchannel2", FT_UINT8, BASE_DEC, VALS(channeltypenames), 0x0,
9086 "Logical channels type", HFILL }},
9087 { &hf_tetra_channel3,
9088 { "Channel 3", "tetra.txchannel3", FT_UINT8, BASE_DEC, VALS(channeltypenames), 0x0,
9089 "Logical channels type", HFILL }},
9091 { "TxR", "tetra.txreg", FT_UINT16, BASE_HEX, NULL, 0x0,
9092 "TX Register", HFILL }},
9094 { "RvSteR", "tetra.rvster", FT_UINT16, BASE_HEX, NULL, 0x0,
9095 "Receive Status Register", HFILL }},
9096 { &hf_tetra_carriernumber,
9097 { "Carrier Number", "tetra.carrier", FT_UINT16, BASE_HEX, NULL, 0x0,
9099 { &hf_tetra_rxchannel1,
9100 { "Channel 1", "tetra.rxchannel1", FT_UINT8, BASE_DEC, VALS(recvchanneltypenames), 0x0,
9101 "Logical channels type", HFILL }},
9102 { &hf_tetra_rxchannel2,
9103 { "Channel 2", "tetra.rxchannel2", FT_UINT8, BASE_DEC, VALS(recvchanneltypenames), 0x0,
9104 "Logical channels type", HFILL }},
9105 { &hf_tetra_rxchannel3,
9106 { "Channel 3", "tetra.rxchannel3", FT_UINT8, BASE_DEC, VALS(recvchanneltypenames), 0x0,
9107 "Logical channels type", HFILL }},
9109 { "Timer", "tetra.timer", FT_UINT16, BASE_HEX, NULL, 0x0,
9110 "Timer Register", HFILL }},
9112 { "CRC", "tetra.crc", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
9113 "CRC result", HFILL }},
9115 { "Length", "tetra.len0", FT_UINT16, BASE_DEC, NULL, 0x0,
9116 "Length of the PDU", HFILL }},
9118 { "PDU", "tetra.pdu", FT_BYTES, BASE_NONE, NULL, 0x0,
9122 /*--- Included file: packet-tetra-hfarr.c ---*/
9123 #line 1 "../../asn1/tetra/packet-tetra-hfarr.c"
9124 { &hf_tetra_AACH_PDU,
9125 { "AACH", "tetra.AACH",
9126 FT_NONE, BASE_NONE, NULL, 0,
9128 { &hf_tetra_BSCH_PDU,
9129 { "BSCH", "tetra.BSCH",
9130 FT_NONE, BASE_NONE, NULL, 0,
9132 { &hf_tetra_BNCH_PDU,
9133 { "BNCH", "tetra.BNCH",
9134 FT_NONE, BASE_NONE, NULL, 0,
9136 { &hf_tetra_MAC_ACCESS_PDU,
9137 { "MAC-ACCESS", "tetra.MAC_ACCESS",
9138 FT_NONE, BASE_NONE, NULL, 0,
9140 { &hf_tetra_MAC_FRAG_PDU,
9141 { "MAC-FRAG", "tetra.MAC_FRAG",
9142 FT_NONE, BASE_NONE, NULL, 0,
9144 { &hf_tetra_MAC_FRAG120_PDU,
9145 { "MAC-FRAG120", "tetra.MAC_FRAG120",
9146 FT_NONE, BASE_NONE, NULL, 0,
9148 { &hf_tetra_MAC_END_UPLINK_PDU,
9149 { "MAC-END-UPLINK", "tetra.MAC_END_UPLINK",
9150 FT_NONE, BASE_NONE, NULL, 0,
9152 { &hf_tetra_MAC_END_UP114_PDU,
9153 { "MAC-END-UP114", "tetra.MAC_END_UP114",
9154 FT_NONE, BASE_NONE, NULL, 0,
9156 { &hf_tetra_MAC_END_HU_PDU,
9157 { "MAC-END-HU", "tetra.MAC_END_HU",
9158 FT_NONE, BASE_NONE, NULL, 0,
9160 { &hf_tetra_MAC_END_DOWNLINK_PDU,
9161 { "MAC-END-DOWNLINK", "tetra.MAC_END_DOWNLINK",
9162 FT_NONE, BASE_NONE, NULL, 0,
9164 { &hf_tetra_MAC_END_DOWN111_PDU,
9165 { "MAC-END-DOWN111", "tetra.MAC_END_DOWN111",
9166 FT_NONE, BASE_NONE, NULL, 0,
9168 { &hf_tetra_MAC_RESOURCE_PDU,
9169 { "MAC-RESOURCE", "tetra.MAC_RESOURCE",
9170 FT_NONE, BASE_NONE, NULL, 0,
9172 { &hf_tetra_MAC_ACCESS_DEFINE_PDU,
9173 { "MAC-ACCESS-DEFINE", "tetra.MAC_ACCESS_DEFINE",
9174 FT_NONE, BASE_NONE, NULL, 0,
9176 { &hf_tetra_function,
9177 { "function", "tetra.function",
9178 FT_UINT32, BASE_DEC, NULL, 0,
9179 "INTEGER_0_3", HFILL }},
9181 { "field1", "tetra.field1",
9182 FT_UINT32, BASE_DEC, NULL, 0,
9183 "INTEGER_0_63", HFILL }},
9185 { "field2", "tetra.field2",
9186 FT_UINT32, BASE_DEC, NULL, 0,
9187 "INTEGER_0_63", HFILL }},
9188 { &hf_tetra_system_code,
9189 { "system-code", "tetra.system_code",
9190 FT_UINT32, BASE_DEC, VALS(tetra_System_Code_vals), 0,
9192 { &hf_tetra_colour_code,
9193 { "colour-code", "tetra.colour_code",
9194 FT_UINT32, BASE_DEC, VALS(tetra_Colour_Code_vals), 0,
9196 { &hf_tetra_timeslot_number,
9197 { "timeslot-number", "tetra.timeslot_number",
9198 FT_UINT32, BASE_DEC, VALS(tetra_Timeslot_Number_vals), 0,
9200 { &hf_tetra_frame_number,
9201 { "frame-number", "tetra.frame_number",
9202 FT_UINT32, BASE_DEC, VALS(tetra_Frame_Number_vals), 0,
9204 { &hf_tetra_multiple_frame_number,
9205 { "multiple-frame-number", "tetra.multiple_frame_number",
9206 FT_UINT32, BASE_DEC, VALS(tetra_Multiple_Frame_Number_vals), 0,
9208 { &hf_tetra_sharing_mod,
9209 { "sharing-mod", "tetra.sharing_mod",
9210 FT_UINT32, BASE_DEC, VALS(tetra_Sharing_Mod_vals), 0,
9212 { &hf_tetra_ts_reserved_frames,
9213 { "ts-reserved-frames", "tetra.ts_reserved_frames",
9214 FT_UINT32, BASE_DEC, VALS(tetra_TS_Reserved_Frames_vals), 0,
9216 { &hf_tetra_u_plane_dtx,
9217 { "u-plane-dtx", "tetra.u_plane_dtx",
9218 FT_UINT32, BASE_DEC, VALS(tetra_U_Plane_DTX_vals), 0,
9220 { &hf_tetra_frame_18_extension,
9221 { "frame-18-extension", "tetra.frame_18_extension",
9222 FT_UINT32, BASE_DEC, VALS(tetra_Frame_18_Extension_vals), 0,
9224 { &hf_tetra_reserved,
9225 { "reserved", "tetra.reserved",
9226 FT_UINT32, BASE_DEC, VALS(tetra_Reserved_vals), 0,
9229 { "tm-sdu", "tetra.tm_sdu",
9230 FT_NONE, BASE_NONE, NULL, 0,
9231 "MLE_Sync", HFILL }},
9233 { "mcc", "tetra.mcc",
9234 FT_UINT32, BASE_DEC, NULL, 0,
9235 "INTEGER_0_1023", HFILL }},
9237 { "mnc", "tetra.mnc",
9238 FT_UINT32, BASE_DEC, NULL, 0,
9239 "INTEGER_0_16383", HFILL }},
9240 { &hf_tetra_neighbour_cell_broadcast,
9241 { "neighbour-cell-broadcast", "tetra.neighbour_cell_broadcast",
9242 FT_UINT32, BASE_DEC, NULL, 0,
9243 "INTEGER_0_3", HFILL }},
9244 { &hf_tetra_cell_service_level,
9245 { "cell-service-level", "tetra.cell_service_level",
9246 FT_UINT32, BASE_DEC, NULL, 0,
9247 "INTEGER_0_3", HFILL }},
9248 { &hf_tetra_late_entry_information,
9249 { "late-entry-information", "tetra.late_entry_information",
9250 FT_UINT32, BASE_DEC, NULL, 0,
9251 "INTEGER_0_1", HFILL }},
9252 { &hf_tetra_pdu_type,
9253 { "pdu-type", "tetra.pdu_type",
9254 FT_UINT32, BASE_DEC, NULL, 0,
9255 "INTEGER_0_3", HFILL }},
9256 { &hf_tetra_broadcast_type,
9257 { "broadcast-type", "tetra.broadcast_type",
9258 FT_UINT32, BASE_DEC, NULL, 0,
9259 "INTEGER_0_3", HFILL }},
9260 { &hf_tetra_main_carrier,
9261 { "main-carrier", "tetra.main_carrier",
9262 FT_UINT32, BASE_DEC, NULL, 0,
9263 "INTEGER_0_4095", HFILL }},
9264 { &hf_tetra_frequency_band,
9265 { "frequency-band", "tetra.frequency_band",
9266 FT_UINT32, BASE_DEC, NULL, 0,
9267 "INTEGER_0_15", HFILL }},
9269 { "offset", "tetra.offset",
9270 FT_UINT32, BASE_DEC, VALS(tetra_Offset_vals), 0,
9272 { &hf_tetra_duplex_spacing,
9273 { "duplex-spacing", "tetra.duplex_spacing",
9274 FT_UINT32, BASE_DEC, NULL, 0,
9275 "INTEGER_0_7", HFILL }},
9276 { &hf_tetra_reverse_operation,
9277 { "reverse-operation", "tetra.reverse_operation",
9278 FT_UINT32, BASE_DEC, VALS(tetra_Reverse_Operation_vals), 0,
9280 { &hf_tetra_sencond_ctl_carrier,
9281 { "sencond-ctl-carrier", "tetra.sencond_ctl_carrier",
9282 FT_UINT32, BASE_DEC, VALS(tetra_Sencond_Ctl_Carrier_vals), 0,
9284 { &hf_tetra_ms_txpwr_max_cell,
9285 { "ms-txpwr-max-cell", "tetra.ms_txpwr_max_cell",
9286 FT_UINT32, BASE_DEC, VALS(tetra_MS_TXPWR_MAX_CELL_vals), 0,
9288 { &hf_tetra_rxlev_access_min,
9289 { "rxlev-access-min", "tetra.rxlev_access_min",
9290 FT_UINT32, BASE_DEC, VALS(tetra_RXLEV_ACCESS_MIN_vals), 0,
9292 { &hf_tetra_access_parameter,
9293 { "access-parameter", "tetra.access_parameter",
9294 FT_UINT32, BASE_DEC, VALS(tetra_ACCESS_PARAMETER_vals), 0,
9296 { &hf_tetra_radio_downlink_timeout,
9297 { "radio-downlink-timeout", "tetra.radio_downlink_timeout",
9298 FT_UINT32, BASE_DEC, VALS(tetra_RADIO_DOWNLINK_TIMEOUT_vals), 0,
9300 { &hf_tetra_hyperframe_or_cck,
9301 { "hyperframe-or-cck", "tetra.hyperframe_or_cck",
9302 FT_UINT32, BASE_DEC, VALS(tetra_T_hyperframe_or_cck_vals), 0,
9304 { &hf_tetra_hyperframe,
9305 { "hyperframe", "tetra.hyperframe",
9306 FT_UINT32, BASE_DEC, NULL, 0,
9307 "INTEGER_0_65535", HFILL }},
9309 { "cckid", "tetra.cckid",
9310 FT_UINT32, BASE_DEC, NULL, 0,
9311 "INTEGER_0_65535", HFILL }},
9312 { &hf_tetra_optional_params,
9313 { "optional-params", "tetra.optional_params",
9314 FT_UINT32, BASE_DEC, VALS(tetra_T_optional_params_vals), 0,
9316 { &hf_tetra_even_multiframe,
9317 { "even-multiframe", "tetra.even_multiframe",
9318 FT_NONE, BASE_NONE, NULL, 0,
9319 "TS_COMMON_FRAMES", HFILL }},
9320 { &hf_tetra_odd_multiframe,
9321 { "odd-multiframe", "tetra.odd_multiframe",
9322 FT_NONE, BASE_NONE, NULL, 0,
9323 "TS_COMMON_FRAMES", HFILL }},
9324 { &hf_tetra_access_a_code,
9325 { "access-a-code", "tetra.access_a_code",
9326 FT_NONE, BASE_NONE, NULL, 0,
9327 "Default_Code_A", HFILL }},
9328 { &hf_tetra_extend_service,
9329 { "extend-service", "tetra.extend_service",
9330 FT_NONE, BASE_NONE, NULL, 0,
9331 "Extended_Services_Broadcast", HFILL }},
9334 FT_UINT32, BASE_DEC, NULL, 0,
9335 "INTEGER_0_16383", HFILL }},
9336 { &hf_tetra_subscriber_class,
9337 { "subscriber-class", "tetra.subscriber_class",
9338 FT_UINT32, BASE_DEC, NULL, 0,
9339 "INTEGER_0_65535", HFILL }},
9340 { &hf_tetra_registriation,
9341 { "registriation", "tetra.registriation",
9342 FT_UINT32, BASE_DEC, NULL, 0,
9343 "INTEGER_0_1", HFILL }},
9344 { &hf_tetra_de_registration,
9345 { "de-registration", "tetra.de_registration",
9346 FT_UINT32, BASE_DEC, NULL, 0,
9347 "INTEGER_0_1", HFILL }},
9348 { &hf_tetra_priority_cell,
9349 { "priority-cell", "tetra.priority_cell",
9350 FT_UINT32, BASE_DEC, NULL, 0,
9351 "INTEGER_0_1", HFILL }},
9352 { &hf_tetra_minimum_mode_service,
9353 { "minimum-mode-service", "tetra.minimum_mode_service",
9354 FT_UINT32, BASE_DEC, NULL, 0,
9355 "INTEGER_0_1", HFILL }},
9356 { &hf_tetra_migration,
9357 { "migration", "tetra.migration",
9358 FT_UINT32, BASE_DEC, NULL, 0,
9359 "INTEGER_0_1", HFILL }},
9360 { &hf_tetra_system_wide_service,
9361 { "system-wide-service", "tetra.system_wide_service",
9362 FT_UINT32, BASE_DEC, NULL, 0,
9363 "INTEGER_0_1", HFILL }},
9364 { &hf_tetra_tetra_voice_service,
9365 { "tetra-voice-service", "tetra.tetra_voice_service",
9366 FT_UINT32, BASE_DEC, NULL, 0,
9367 "INTEGER_0_1", HFILL }},
9368 { &hf_tetra_circuit_mode_data_service,
9369 { "circuit-mode-data-service", "tetra.circuit_mode_data_service",
9370 FT_UINT32, BASE_DEC, NULL, 0,
9371 "INTEGER_0_1", HFILL }},
9372 { &hf_tetra_reserved_01,
9373 { "reserved", "tetra.reserved",
9374 FT_UINT32, BASE_DEC, NULL, 0,
9375 "INTEGER_0_1", HFILL }},
9376 { &hf_tetra_sndcp_service,
9377 { "sndcp-service", "tetra.sndcp_service",
9378 FT_UINT32, BASE_DEC, NULL, 0,
9379 "INTEGER_0_1", HFILL }},
9380 { &hf_tetra_air_interface_encryption,
9381 { "air-interface-encryption", "tetra.air_interface_encryption",
9382 FT_UINT32, BASE_DEC, NULL, 0,
9383 "INTEGER_0_1", HFILL }},
9384 { &hf_tetra_advanced_link_support,
9385 { "advanced-link-support", "tetra.advanced_link_support",
9386 FT_UINT32, BASE_DEC, NULL, 0,
9387 "INTEGER_0_1", HFILL }},
9389 { "frame1", "tetra.frame1",
9390 FT_UINT32, BASE_DEC, VALS(tetra_FRAME_vals), 0,
9393 { "frame2", "tetra.frame2",
9394 FT_UINT32, BASE_DEC, VALS(tetra_FRAME_vals), 0,
9397 { "frame3", "tetra.frame3",
9398 FT_UINT32, BASE_DEC, VALS(tetra_FRAME_vals), 0,
9401 { "frame4", "tetra.frame4",
9402 FT_UINT32, BASE_DEC, VALS(tetra_FRAME_vals), 0,
9405 { "frame5", "tetra.frame5",
9406 FT_UINT32, BASE_DEC, VALS(tetra_FRAME_vals), 0,
9409 { "frame6", "tetra.frame6",
9410 FT_UINT32, BASE_DEC, VALS(tetra_FRAME_vals), 0,
9413 { "frame7", "tetra.frame7",
9414 FT_UINT32, BASE_DEC, VALS(tetra_FRAME_vals), 0,
9417 { "frame8", "tetra.frame8",
9418 FT_UINT32, BASE_DEC, VALS(tetra_FRAME_vals), 0,
9421 { "frame9", "tetra.frame9",
9422 FT_UINT32, BASE_DEC, VALS(tetra_FRAME_vals), 0,
9424 { &hf_tetra_frame10,
9425 { "frame10", "tetra.frame10",
9426 FT_UINT32, BASE_DEC, VALS(tetra_FRAME_vals), 0,
9428 { &hf_tetra_frame11,
9429 { "frame11", "tetra.frame11",
9430 FT_UINT32, BASE_DEC, VALS(tetra_FRAME_vals), 0,
9432 { &hf_tetra_frame12,
9433 { "frame12", "tetra.frame12",
9434 FT_UINT32, BASE_DEC, VALS(tetra_FRAME_vals), 0,
9436 { &hf_tetra_frame13,
9437 { "frame13", "tetra.frame13",
9438 FT_UINT32, BASE_DEC, VALS(tetra_FRAME_vals), 0,
9440 { &hf_tetra_frame14,
9441 { "frame14", "tetra.frame14",
9442 FT_UINT32, BASE_DEC, VALS(tetra_FRAME_vals), 0,
9444 { &hf_tetra_frame15,
9445 { "frame15", "tetra.frame15",
9446 FT_UINT32, BASE_DEC, VALS(tetra_FRAME_vals), 0,
9448 { &hf_tetra_frame16,
9449 { "frame16", "tetra.frame16",
9450 FT_UINT32, BASE_DEC, VALS(tetra_FRAME_vals), 0,
9452 { &hf_tetra_frame17,
9453 { "frame17", "tetra.frame17",
9454 FT_UINT32, BASE_DEC, VALS(tetra_FRAME_vals), 0,
9456 { &hf_tetra_frame18,
9457 { "frame18", "tetra.frame18",
9458 FT_UINT32, BASE_DEC, VALS(tetra_FRAME_vals), 0,
9461 { "imm", "tetra.imm",
9462 FT_UINT32, BASE_DEC, VALS(tetra_IMM_vals), 0,
9466 FT_UINT32, BASE_DEC, VALS(tetra_WT_vals), 0,
9470 FT_UINT32, BASE_DEC, VALS(tetra_NU_vals), 0,
9472 { &hf_tetra_frame_len_factor,
9473 { "frame-len-factor", "tetra.frame_len_factor",
9474 FT_UINT32, BASE_DEC, VALS(tetra_Frame_Len_Factor_vals), 0,
9476 { &hf_tetra_timeslot_pointer,
9477 { "timeslot-pointer", "tetra.timeslot_pointer",
9478 FT_UINT32, BASE_DEC, VALS(tetra_Timeslot_Pointer_vals), 0,
9480 { &hf_tetra_min_pdu_priority,
9481 { "min-pdu-priority", "tetra.min_pdu_priority",
9482 FT_UINT32, BASE_DEC, VALS(tetra_Min_Pdu_Priority_vals), 0,
9484 { &hf_tetra_security_information,
9485 { "security-information", "tetra.security_information",
9486 FT_UINT32, BASE_DEC, NULL, 0,
9487 "INTEGER_0_255", HFILL }},
9488 { &hf_tetra_sds_tl_addressing_method,
9489 { "sds-tl-addressing-method", "tetra.sds_tl_addressing_method",
9490 FT_UINT32, BASE_DEC, VALS(tetra_SDS_TL_Addressing_Method_vals), 0,
9492 { &hf_tetra_gck_supported,
9493 { "gck-supported", "tetra.gck_supported",
9494 FT_UINT32, BASE_DEC, NULL, 0,
9495 "INTEGER_0_1", HFILL }},
9496 { &hf_tetra_section,
9497 { "section", "tetra.section",
9498 FT_UINT32, BASE_DEC, VALS(tetra_T_section_vals), 0,
9500 { &hf_tetra_present_1,
9501 { "present-1", "tetra.present_1",
9502 FT_NONE, BASE_NONE, NULL, 0,
9503 "PRESENT1", HFILL }},
9504 { &hf_tetra_present_2,
9505 { "present-2", "tetra.present_2",
9506 FT_UINT32, BASE_DEC, NULL, 0,
9507 "INTEGER_0_127", HFILL }},
9508 { &hf_tetra_present_3,
9509 { "present-3", "tetra.present_3",
9510 FT_UINT32, BASE_DEC, NULL, 0,
9511 "INTEGER_0_127", HFILL }},
9512 { &hf_tetra_present_4,
9513 { "present-4", "tetra.present_4",
9514 FT_UINT32, BASE_DEC, NULL, 0,
9515 "INTEGER_0_127", HFILL }},
9516 { &hf_tetra_data_priority_supported,
9517 { "data-priority-supported", "tetra.data_priority_supported",
9518 FT_UINT32, BASE_DEC, VALS(tetra_Data_Priority_Supported_vals), 0,
9520 { &hf_tetra_reserved_02,
9521 { "reserved", "tetra.reserved",
9522 FT_UINT32, BASE_DEC, NULL, 0,
9523 "INTEGER_0_7", HFILL }},
9524 { &hf_tetra_section_2_information,
9525 { "section-2-information", "tetra.section_2_information",
9526 FT_UINT32, BASE_DEC, VALS(tetra_Section_Information_vals), 0,
9527 "Section_Information", HFILL }},
9528 { &hf_tetra_section_3_information,
9529 { "section-3-information", "tetra.section_3_information",
9530 FT_UINT32, BASE_DEC, VALS(tetra_Section_Information_vals), 0,
9531 "Section_Information", HFILL }},
9532 { &hf_tetra_section_4_information,
9533 { "section-4-information", "tetra.section_4_information",
9534 FT_UINT32, BASE_DEC, VALS(tetra_Section_Information_vals), 0,
9535 "Section_Information", HFILL }},
9536 { &hf_tetra_pdu_type_01,
9537 { "pdu-type", "tetra.pdu_type",
9538 FT_UINT32, BASE_DEC, NULL, 0,
9539 "INTEGER_0_1", HFILL }},
9540 { &hf_tetra_fill_bit_indication,
9541 { "fill-bit-indication", "tetra.fill_bit_indication",
9542 FT_UINT32, BASE_DEC, VALS(tetra_Fill_Bit_Indication_vals), 0,
9544 { &hf_tetra_encrypted_flag,
9545 { "encrypted-flag", "tetra.encrypted_flag",
9546 FT_UINT32, BASE_DEC, VALS(tetra_Encrypted_Flag_vals), 0,
9548 { &hf_tetra_address,
9549 { "address", "tetra.address",
9550 FT_UINT32, BASE_DEC, VALS(tetra_Address_vals), 0,
9553 { "data", "tetra.data",
9554 FT_UINT32, BASE_DEC, VALS(tetra_T_data_vals), 0,
9557 { "sdu1", "tetra.sdu1",
9558 FT_UINT32, BASE_DEC, VALS(tetra_U_LLC_PDU_vals), 0,
9559 "U_LLC_PDU", HFILL }},
9561 { "sdu2", "tetra.sdu2",
9562 FT_NONE, BASE_NONE, NULL, 0,
9563 "ComplexSDU", HFILL }},
9565 { "ssi", "tetra.ssi",
9566 FT_UINT32, BASE_DEC, NULL, 0,
9567 "INTEGER_0_16777215", HFILL }},
9568 { &hf_tetra_eventLabel,
9569 { "eventLabel", "tetra.eventLabel",
9570 FT_UINT32, BASE_DEC, NULL, 0,
9571 "INTEGER_0_1023", HFILL }},
9573 { "ussi", "tetra.ussi",
9574 FT_UINT32, BASE_DEC, NULL, 0,
9575 "INTEGER_0_16777215", HFILL }},
9577 { "smi", "tetra.smi",
9578 FT_UINT32, BASE_DEC, NULL, 0,
9579 "INTEGER_0_16777215", HFILL }},
9580 { &hf_tetra_bl_adata,
9581 { "bl-adata", "tetra.bl_adata",
9582 FT_NONE, BASE_NONE, NULL, 0,
9583 "U_BL_ADATA", HFILL }},
9584 { &hf_tetra_bl_data,
9585 { "bl-data", "tetra.bl_data",
9586 FT_NONE, BASE_NONE, NULL, 0,
9587 "U_BL_DATA", HFILL }},
9588 { &hf_tetra_bl_udata,
9589 { "bl-udata", "tetra.bl_udata",
9590 FT_UINT32, BASE_DEC, VALS(tetra_U_MLE_PDU_vals), 0,
9591 "U_MLE_PDU", HFILL }},
9593 { "bl-ack", "tetra.bl_ack",
9594 FT_NONE, BASE_NONE, NULL, 0,
9595 "U_BL_ACK", HFILL }},
9596 { &hf_tetra_bl_adata_fcs,
9597 { "bl-adata-fcs", "tetra.bl_adata_fcs",
9598 FT_NONE, BASE_NONE, NULL, 0,
9599 "U_BL_ADATA_FCS", HFILL }},
9600 { &hf_tetra_bl_data_fcs,
9601 { "bl-data-fcs", "tetra.bl_data_fcs",
9602 FT_NONE, BASE_NONE, NULL, 0,
9603 "U_BL_DATA_FCS", HFILL }},
9604 { &hf_tetra_bl_udata_fcs,
9605 { "bl-udata-fcs", "tetra.bl_udata_fcs",
9606 FT_NONE, BASE_NONE, NULL, 0,
9607 "U_MLE_PDU_FCS", HFILL }},
9608 { &hf_tetra_bl_ack_fcs,
9609 { "bl-ack-fcs", "tetra.bl_ack_fcs",
9610 FT_NONE, BASE_NONE, NULL, 0,
9611 "U_BL_ACK_FCS", HFILL }},
9612 { &hf_tetra_al_setup,
9613 { "al-setup", "tetra.al_setup",
9614 FT_NONE, BASE_NONE, NULL, 0,
9616 { &hf_tetra_al_data,
9617 { "al-data", "tetra.al_data",
9618 FT_NONE, BASE_NONE, NULL, 0,
9620 { &hf_tetra_al_udata,
9621 { "al-udata", "tetra.al_udata",
9622 FT_NONE, BASE_NONE, NULL, 0,
9625 { "al-ack", "tetra.al_ack",
9626 FT_NONE, BASE_NONE, NULL, 0,
9628 { &hf_tetra_al_reconnect,
9629 { "al-reconnect", "tetra.al_reconnect",
9630 FT_NONE, BASE_NONE, NULL, 0,
9632 { &hf_tetra_reserve1,
9633 { "reserve1", "tetra.reserve1",
9634 FT_NONE, BASE_NONE, NULL, 0,
9636 { &hf_tetra_reserve2,
9637 { "reserve2", "tetra.reserve2",
9638 FT_NONE, BASE_NONE, NULL, 0,
9640 { &hf_tetra_al_disc,
9641 { "al-disc", "tetra.al_disc",
9642 FT_NONE, BASE_NONE, NULL, 0,
9646 FT_UINT32, BASE_DEC, NULL, 0,
9647 "INTEGER_0_1", HFILL }},
9649 { "tl-sdu", "tetra.tl_sdu",
9650 FT_UINT32, BASE_DEC, VALS(tetra_U_MLE_PDU_vals), 0,
9651 "U_MLE_PDU", HFILL }},
9653 { "fcs", "tetra.fcs",
9654 FT_BYTES, BASE_NONE, NULL, 0,
9655 "OCTET_STRING_SIZE_4", HFILL }},
9656 { &hf_tetra_u_mle_pdu,
9657 { "u-mle-pdu", "tetra.u_mle_pdu",
9658 FT_UINT32, BASE_DEC, VALS(tetra_U_MLE_PDU_vals), 0,
9662 FT_UINT32, BASE_DEC, NULL, 0,
9663 "INTEGER_0_1", HFILL }},
9664 { &hf_tetra_u_mle_reserved1,
9665 { "u-mle-reserved1", "tetra.u_mle_reserved1",
9666 FT_NONE, BASE_NONE, NULL, 0,
9670 FT_UINT32, BASE_DEC, VALS(tetra_U_MM_PDU_vals), 0,
9671 "U_MM_PDU", HFILL }},
9673 { "cmce", "tetra.cmce",
9674 FT_UINT32, BASE_DEC, VALS(tetra_U_CMCE_PDU_vals), 0,
9675 "U_CMCE_PDU", HFILL }},
9676 { &hf_tetra_u_mle_reserved2,
9677 { "u-mle-reserved2", "tetra.u_mle_reserved2",
9678 FT_NONE, BASE_NONE, NULL, 0,
9681 { "sndcp", "tetra.sndcp",
9682 FT_NONE, BASE_NONE, NULL, 0,
9685 { "mle", "tetra.mle",
9686 FT_UINT32, BASE_DEC, VALS(tetra_UMLE_PDU_vals), 0,
9687 "UMLE_PDU", HFILL }},
9688 { &hf_tetra_tetra_management_entity_protocol,
9689 { "tetra-management-entity-protocol", "tetra.tetra_management_entity_protocol",
9690 FT_NONE, BASE_NONE, NULL, 0,
9692 { &hf_tetra_u_mle_reserved3,
9693 { "u-mle-reserved3", "tetra.u_mle_reserved3",
9694 FT_NONE, BASE_NONE, NULL, 0,
9696 { &hf_tetra_lengthIndicationOrCapacityRequest,
9697 { "lengthIndicationOrCapacityRequest", "tetra.lengthIndicationOrCapacityRequest",
9698 FT_UINT32, BASE_DEC, VALS(tetra_T_lengthIndicationOrCapacityRequest_vals), 0,
9700 { &hf_tetra_lengthIndication,
9701 { "lengthIndication", "tetra.lengthIndication",
9702 FT_UINT32, BASE_DEC, VALS(tetra_LengthIndication_vals), 0,
9704 { &hf_tetra_capacityRequest,
9705 { "capacityRequest", "tetra.capacityRequest",
9706 FT_NONE, BASE_NONE, NULL, 0,
9708 { &hf_tetra_tm_sdu_01,
9709 { "tm-sdu", "tetra.tm_sdu",
9710 FT_UINT32, BASE_DEC, VALS(tetra_U_LLC_PDU_vals), 0,
9711 "U_LLC_PDU", HFILL }},
9713 { "frag", "tetra.frag",
9714 FT_UINT32, BASE_DEC, VALS(tetra_Frag1_vals), 0,
9716 { &hf_tetra_reservation_requirement,
9717 { "reservation-requirement", "tetra.reservation_requirement",
9718 FT_UINT32, BASE_DEC, VALS(tetra_SLOT_APPLY_vals), 0,
9719 "SLOT_APPLY", HFILL }},
9720 { &hf_tetra_sub_type,
9721 { "sub-type", "tetra.sub_type",
9722 FT_UINT32, BASE_DEC, NULL, 0,
9723 "INTEGER_0_1", HFILL }},
9724 { &hf_tetra_tm_sdu_02,
9725 { "tm-sdu", "tetra.tm_sdu",
9726 FT_BYTES, BASE_NONE, NULL, 0,
9727 "BIT_STRING_SIZE_264", HFILL }},
9728 { &hf_tetra_tm_sdu_03,
9729 { "tm-sdu", "tetra.tm_sdu",
9730 FT_BYTES, BASE_NONE, NULL, 0,
9731 "BIT_STRING_SIZE_120", HFILL }},
9732 { &hf_tetra_lengthInd_ReservationReq,
9733 { "lengthInd-ReservationReq", "tetra.lengthInd_ReservationReq",
9734 FT_UINT32, BASE_DEC, VALS(tetra_LengthIndOrReservationReq_vals), 0,
9735 "LengthIndOrReservationReq", HFILL }},
9736 { &hf_tetra_tm_sdu_04,
9737 { "tm-sdu", "tetra.tm_sdu",
9738 FT_BYTES, BASE_NONE, NULL, 0,
9739 "BIT_STRING_SIZE_258", HFILL }},
9740 { &hf_tetra_pdu_subtype,
9741 { "pdu-subtype", "tetra.pdu_subtype",
9742 FT_UINT32, BASE_DEC, NULL, 0,
9743 "INTEGER_0_1", HFILL }},
9744 { &hf_tetra_tm_sdu_05,
9745 { "tm-sdu", "tetra.tm_sdu",
9746 FT_BYTES, BASE_NONE, NULL, 0,
9747 "BIT_STRING_SIZE_114", HFILL }},
9748 { &hf_tetra_lengthInd_ReservationReq_01,
9749 { "lengthInd-ReservationReq", "tetra.lengthInd_ReservationReq",
9750 FT_UINT32, BASE_DEC, VALS(tetra_T_lengthInd_ReservationReq_vals), 0,
9752 { &hf_tetra_lengthInd,
9753 { "lengthInd", "tetra.lengthInd",
9754 FT_UINT32, BASE_DEC, VALS(tetra_LengthIndMacHu_vals), 0,
9755 "LengthIndMacHu", HFILL }},
9756 { &hf_tetra_tm_sdu_06,
9757 { "tm-sdu", "tetra.tm_sdu",
9758 FT_BYTES, BASE_NONE, NULL, 0,
9759 "BIT_STRING_SIZE_85", HFILL }},
9760 { &hf_tetra_position_of_grant,
9761 { "position-of-grant", "tetra.position_of_grant",
9762 FT_UINT32, BASE_DEC, VALS(tetra_Position_Of_Grant_vals), 0,
9764 { &hf_tetra_lengthIndication_01,
9765 { "lengthIndication", "tetra.lengthIndication",
9766 FT_UINT32, BASE_DEC, VALS(tetra_LengthIndicationMacEndDl_vals), 0,
9767 "LengthIndicationMacEndDl", HFILL }},
9768 { &hf_tetra_slot_granting,
9769 { "slot-granting", "tetra.slot_granting",
9770 FT_UINT32, BASE_DEC, VALS(tetra_T_slot_granting_vals), 0,
9771 "T_slot_granting", HFILL }},
9773 { "none", "tetra.none",
9774 FT_NONE, BASE_NONE, NULL, 0,
9776 { &hf_tetra_slot_granting_param,
9777 { "slot-granting-param", "tetra.slot_granting_param",
9778 FT_NONE, BASE_NONE, NULL, 0,
9779 "SlotGranting", HFILL }},
9780 { &hf_tetra_channel_allocation,
9781 { "channel-allocation", "tetra.channel_allocation",
9782 FT_UINT32, BASE_DEC, VALS(tetra_T_channel_allocation_vals), 0,
9784 { &hf_tetra_channel_allocation_element,
9785 { "channel-allocation-element", "tetra.channel_allocation_element",
9786 FT_NONE, BASE_NONE, NULL, 0,
9787 "ChannelAllocation", HFILL }},
9788 { &hf_tetra_tm_sdu_07,
9789 { "tm-sdu", "tetra.tm_sdu",
9790 FT_BYTES, BASE_NONE, NULL, 0,
9791 "BIT_STRING_SIZE_255", HFILL }},
9792 { &hf_tetra_capacity_allocation,
9793 { "capacity-allocation", "tetra.capacity_allocation",
9794 FT_UINT32, BASE_DEC, VALS(tetra_Capacity_Allocation_vals), 0,
9796 { &hf_tetra_granting_delay,
9797 { "granting-delay", "tetra.granting_delay",
9798 FT_UINT32, BASE_DEC, VALS(tetra_Granting_delay_vals), 0,
9800 { &hf_tetra_allocation_type,
9801 { "allocation-type", "tetra.allocation_type",
9802 FT_UINT32, BASE_DEC, VALS(tetra_T_allocation_type_vals), 0,
9804 { &hf_tetra_timeslot_assigned,
9805 { "timeslot-assigned", "tetra.timeslot_assigned",
9806 FT_UINT32, BASE_DEC, VALS(tetra_Timeslot_Assigned_vals), 0,
9808 { &hf_tetra_up_down_assigned,
9809 { "up-down-assigned", "tetra.up_down_assigned",
9810 FT_UINT32, BASE_DEC, VALS(tetra_T_up_down_assigned_vals), 0,
9812 { &hf_tetra_clch_permission,
9813 { "clch-permission", "tetra.clch_permission",
9814 FT_UINT32, BASE_DEC, VALS(tetra_CLCH_permission_vals), 0,
9816 { &hf_tetra_cell_change,
9817 { "cell-change", "tetra.cell_change",
9818 FT_UINT32, BASE_DEC, VALS(tetra_Cell_change_flag_vals), 0,
9819 "Cell_change_flag", HFILL }},
9820 { &hf_tetra_carrier_number,
9821 { "carrier-number", "tetra.carrier_number",
9822 FT_UINT32, BASE_DEC, NULL, 0,
9823 "INTEGER_0_4095", HFILL }},
9824 { &hf_tetra_extend_carrier_flag,
9825 { "extend-carrier-flag", "tetra.extend_carrier_flag",
9826 FT_UINT32, BASE_DEC, VALS(tetra_T_extend_carrier_flag_vals), 0,
9828 { &hf_tetra_extended,
9829 { "extended", "tetra.extended",
9830 FT_NONE, BASE_NONE, NULL, 0,
9831 "Extended_carrier_flag", HFILL }},
9832 { &hf_tetra_monitoring_pattern,
9833 { "monitoring-pattern", "tetra.monitoring_pattern",
9834 FT_UINT32, BASE_DEC, VALS(tetra_T_monitoring_pattern_vals), 0,
9837 { "one", "tetra.one",
9838 FT_UINT32, BASE_DEC, VALS(tetra_Monitoring_pattern_vals), 0,
9839 "Monitoring_pattern", HFILL }},
9841 { "none1", "tetra.none1",
9842 FT_NONE, BASE_NONE, NULL, 0,
9845 { "none2", "tetra.none2",
9846 FT_NONE, BASE_NONE, NULL, 0,
9849 { "none3", "tetra.none3",
9850 FT_NONE, BASE_NONE, NULL, 0,
9852 { &hf_tetra_offset_01,
9853 { "offset", "tetra.offset",
9854 FT_UINT32, BASE_DEC, NULL, 0,
9855 "INTEGER_0_3", HFILL }},
9856 { &hf_tetra_reverse_operation_01,
9857 { "reverse-operation", "tetra.reverse_operation",
9858 FT_UINT32, BASE_DEC, VALS(tetra_T_reverse_operation_vals), 0,
9860 { &hf_tetra_pdu_type_02,
9861 { "pdu-type", "tetra.pdu_type",
9862 FT_UINT32, BASE_DEC, NULL, 0,
9863 "INTEGER_0_7", HFILL }},
9864 { &hf_tetra_fill_bit_ind,
9865 { "fill-bit-ind", "tetra.fill_bit_ind",
9866 FT_BOOLEAN, BASE_NONE, NULL, 0,
9867 "BOOLEAN", HFILL }},
9868 { &hf_tetra_position_of_grant_01,
9869 { "position-of-grant", "tetra.position_of_grant",
9870 FT_UINT32, BASE_DEC, NULL, 0,
9871 "INTEGER_0_1", HFILL }},
9872 { &hf_tetra_slot_granting_01,
9873 { "slot-granting", "tetra.slot_granting",
9874 FT_UINT32, BASE_DEC, VALS(tetra_T_slot_granting_01_vals), 0,
9875 "T_slot_granting_01", HFILL }},
9876 { &hf_tetra_channel_allocation_01,
9877 { "channel-allocation", "tetra.channel_allocation",
9878 FT_UINT32, BASE_DEC, VALS(tetra_T_channel_allocation_01_vals), 0,
9879 "T_channel_allocation_01", HFILL }},
9880 { &hf_tetra_tm_sdu_08,
9881 { "tm-sdu", "tetra.tm_sdu",
9882 FT_BYTES, BASE_NONE, NULL, 0,
9883 "BIT_STRING_SIZE_111", HFILL }},
9884 { &hf_tetra_encryption_mode,
9885 { "encryption-mode", "tetra.encryption_mode",
9886 FT_UINT32, BASE_DEC, NULL, 0,
9887 "INTEGER_0_3", HFILL }},
9888 { &hf_tetra_access_ack,
9889 { "access-ack", "tetra.access_ack",
9890 FT_UINT32, BASE_DEC, VALS(tetra_T_access_ack_vals), 0,
9892 { &hf_tetra_lengthIndication_02,
9893 { "lengthIndication", "tetra.lengthIndication",
9894 FT_UINT32, BASE_DEC, VALS(tetra_LengthIndicationMacResource_vals), 0,
9895 "LengthIndicationMacResource", HFILL }},
9896 { &hf_tetra_address_01,
9897 { "address", "tetra.address",
9898 FT_UINT32, BASE_DEC, VALS(tetra_AddressMacResource_vals), 0,
9899 "AddressMacResource", HFILL }},
9900 { &hf_tetra_power_control,
9901 { "power-control", "tetra.power_control",
9902 FT_UINT32, BASE_DEC, VALS(tetra_T_power_control_vals), 0,
9904 { &hf_tetra_powerParameters,
9905 { "powerParameters", "tetra.powerParameters",
9906 FT_UINT32, BASE_DEC, VALS(tetra_PowerControl_vals), 0,
9907 "PowerControl", HFILL }},
9908 { &hf_tetra_slot_granting_02,
9909 { "slot-granting", "tetra.slot_granting",
9910 FT_UINT32, BASE_DEC, VALS(tetra_T_slot_granting_02_vals), 0,
9911 "T_slot_granting_02", HFILL }},
9912 { &hf_tetra_channel_allocation_02,
9913 { "channel-allocation", "tetra.channel_allocation",
9914 FT_UINT32, BASE_DEC, VALS(tetra_T_channel_allocation_02_vals), 0,
9915 "T_channel_allocation_02", HFILL }},
9916 { &hf_tetra_tm_sdu_09,
9917 { "tm-sdu", "tetra.tm_sdu",
9918 FT_UINT32, BASE_DEC, VALS(tetra_D_LLC_PDU_vals), 0,
9919 "D_LLC_PDU", HFILL }},
9920 { &hf_tetra_null_pdu,
9921 { "null-pdu", "tetra.null_pdu",
9922 FT_NONE, BASE_NONE, NULL, 0,
9925 { "ssi", "tetra.ssi",
9926 FT_NONE, BASE_NONE, NULL, 0,
9927 "SSI_NEED", HFILL }},
9928 { &hf_tetra_eventLabel_01,
9929 { "eventLabel", "tetra.eventLabel",
9930 FT_NONE, BASE_NONE, NULL, 0,
9931 "EVENT_NEED", HFILL }},
9932 { &hf_tetra_ussi_01,
9933 { "ussi", "tetra.ussi",
9934 FT_NONE, BASE_NONE, NULL, 0,
9935 "USSI_NEED", HFILL }},
9937 { "smi", "tetra.smi",
9938 FT_NONE, BASE_NONE, NULL, 0,
9939 "SMI_NEED", HFILL }},
9940 { &hf_tetra_ssi_eventLabel,
9941 { "ssi-eventLabel", "tetra.ssi_eventLabel",
9942 FT_NONE, BASE_NONE, NULL, 0,
9943 "SSI_EVENT_NEED", HFILL }},
9944 { &hf_tetra_ssi_usage_maker,
9945 { "ssi-usage-maker", "tetra.ssi_usage_maker",
9946 FT_NONE, BASE_NONE, NULL, 0,
9947 "SSI_USAGE_NEED", HFILL }},
9948 { &hf_tetra_smi_eventLabel,
9949 { "smi-eventLabel", "tetra.smi_eventLabel",
9950 FT_NONE, BASE_NONE, NULL, 0,
9951 "SMI_EVENT_NEED", HFILL }},
9953 { "other", "tetra.other",
9954 FT_NONE, BASE_NONE, NULL, 0,
9955 "OTHER_DATA", HFILL }},
9956 { &hf_tetra_eventlabel,
9957 { "eventlabel", "tetra.eventlabel",
9958 FT_UINT32, BASE_DEC, NULL, 0,
9959 "INTEGER_0_1023", HFILL }},
9960 { &hf_tetra_ventlabel,
9961 { "ventlabel", "tetra.ventlabel",
9962 FT_UINT32, BASE_DEC, NULL, 0,
9963 "INTEGER_0_1023", HFILL }},
9964 { &hf_tetra_usage_maker,
9965 { "usage-maker", "tetra.usage_maker",
9966 FT_UINT32, BASE_DEC, NULL, 0,
9967 "INTEGER_0_63", HFILL }},
9968 { &hf_tetra_smi_eventlabel,
9969 { "smi-eventlabel", "tetra.smi_eventlabel",
9970 FT_BYTES, BASE_NONE, NULL, 0,
9971 "BIT_STRING_SIZE_34", HFILL }},
9972 { &hf_tetra_broadcast_channel,
9973 { "broadcast-channel", "tetra.broadcast_channel",
9974 FT_UINT32, BASE_DEC, NULL, 0,
9975 "INTEGER_0_1", HFILL }},
9976 { &hf_tetra_access_code,
9977 { "access-code", "tetra.access_code",
9978 FT_UINT32, BASE_DEC, NULL, 0,
9979 "INTEGER_0_3", HFILL }},
9981 { "imm", "tetra.imm",
9982 FT_UINT32, BASE_DEC, NULL, 0,
9983 "INTEGER_0_15", HFILL }},
9986 FT_UINT32, BASE_DEC, NULL, 0,
9987 "INTEGER_0_15", HFILL }},
9990 FT_UINT32, BASE_DEC, NULL, 0,
9991 "INTEGER_0_15", HFILL }},
9992 { &hf_tetra_frame_len_factor_01,
9993 { "frame-len-factor", "tetra.frame_len_factor",
9994 FT_UINT32, BASE_DEC, NULL, 0,
9995 "INTEGER_0_1", HFILL }},
9996 { &hf_tetra_timeslot_pointer_01,
9997 { "timeslot-pointer", "tetra.timeslot_pointer",
9998 FT_UINT32, BASE_DEC, NULL, 0,
9999 "INTEGER_0_15", HFILL }},
10000 { &hf_tetra_min_priority,
10001 { "min-priority", "tetra.min_priority",
10002 FT_UINT32, BASE_DEC, NULL, 0,
10003 "INTEGER_0_7", HFILL }},
10004 { &hf_tetra_optional_field,
10005 { "optional-field", "tetra.optional_field",
10006 FT_UINT32, BASE_DEC, VALS(tetra_T_optional_field_vals), 0,
10008 { &hf_tetra_class_bitmap,
10009 { "class-bitmap", "tetra.class_bitmap",
10010 FT_UINT32, BASE_DEC, NULL, 0,
10011 "INTEGER_0_65535", HFILL }},
10013 { "gssi", "tetra.gssi",
10014 FT_UINT32, BASE_DEC, NULL, 0,
10015 "INTEGER_0_33554431", HFILL }},
10016 { &hf_tetra_reserved_03,
10017 { "reserved", "tetra.reserved",
10018 FT_NONE, BASE_NONE, NULL, 0,
10020 { &hf_tetra_filler_bits,
10021 { "filler-bits", "tetra.filler_bits",
10022 FT_UINT32, BASE_DEC, NULL, 0,
10023 "INTEGER_0_7", HFILL }},
10024 { &hf_tetra_bl_adata_01,
10025 { "bl-adata", "tetra.bl_adata",
10026 FT_NONE, BASE_NONE, NULL, 0,
10027 "D_BL_ADATA", HFILL }},
10028 { &hf_tetra_bl_data_01,
10029 { "bl-data", "tetra.bl_data",
10030 FT_NONE, BASE_NONE, NULL, 0,
10031 "D_BL_DATA", HFILL }},
10032 { &hf_tetra_bl_udata_01,
10033 { "bl-udata", "tetra.bl_udata",
10034 FT_UINT32, BASE_DEC, VALS(tetra_D_MLE_PDU_vals), 0,
10035 "D_MLE_PDU", HFILL }},
10036 { &hf_tetra_bl_ack_01,
10037 { "bl-ack", "tetra.bl_ack",
10038 FT_NONE, BASE_NONE, NULL, 0,
10039 "D_BL_ACK", HFILL }},
10040 { &hf_tetra_bl_adata_fcs_01,
10041 { "bl-adata-fcs", "tetra.bl_adata_fcs",
10042 FT_NONE, BASE_NONE, NULL, 0,
10043 "D_BL_ADATA_FCS", HFILL }},
10044 { &hf_tetra_bl_data_fcs_01,
10045 { "bl-data-fcs", "tetra.bl_data_fcs",
10046 FT_NONE, BASE_NONE, NULL, 0,
10047 "D_BL_DATA_FCS", HFILL }},
10048 { &hf_tetra_bl_udata_fcs_01,
10049 { "bl-udata-fcs", "tetra.bl_udata_fcs",
10050 FT_NONE, BASE_NONE, NULL, 0,
10051 "D_MLE_PDU_FCS", HFILL }},
10052 { &hf_tetra_bl_ack_fcs_01,
10053 { "bl-ack-fcs", "tetra.bl_ack_fcs",
10054 FT_NONE, BASE_NONE, NULL, 0,
10055 "D_BL_ACK_FCS", HFILL }},
10056 { &hf_tetra_tl_sdu_01,
10057 { "tl-sdu", "tetra.tl_sdu",
10058 FT_UINT32, BASE_DEC, VALS(tetra_D_MLE_PDU_vals), 0,
10059 "D_MLE_PDU", HFILL }},
10060 { &hf_tetra_d_mle_pdu,
10061 { "d-mle-pdu", "tetra.d_mle_pdu",
10062 FT_UINT32, BASE_DEC, VALS(tetra_D_MLE_PDU_vals), 0,
10065 { "mm", "tetra.mm",
10066 FT_UINT32, BASE_DEC, VALS(tetra_D_MM_PDU_vals), 0,
10067 "D_MM_PDU", HFILL }},
10068 { &hf_tetra_cmce_01,
10069 { "cmce", "tetra.cmce",
10070 FT_UINT32, BASE_DEC, VALS(tetra_D_CMCE_PDU_vals), 0,
10071 "D_CMCE_PDU", HFILL }},
10072 { &hf_tetra_mle_01,
10073 { "mle", "tetra.mle",
10074 FT_UINT32, BASE_DEC, VALS(tetra_DMLE_PDU_vals), 0,
10075 "DMLE_PDU", HFILL }},
10076 { &hf_tetra_u_prepare,
10077 { "u-prepare", "tetra.u_prepare",
10078 FT_NONE, BASE_NONE, NULL, 0,
10080 { &hf_tetra_umle_reserved1,
10081 { "umle-reserved1", "tetra.umle_reserved1",
10082 FT_NONE, BASE_NONE, NULL, 0,
10084 { &hf_tetra_umle_reserved2,
10085 { "umle-reserved2", "tetra.umle_reserved2",
10086 FT_NONE, BASE_NONE, NULL, 0,
10088 { &hf_tetra_umle_reserved3,
10089 { "umle-reserved3", "tetra.umle_reserved3",
10090 FT_NONE, BASE_NONE, NULL, 0,
10092 { &hf_tetra_u_restore,
10093 { "u-restore", "tetra.u_restore",
10094 FT_NONE, BASE_NONE, NULL, 0,
10096 { &hf_tetra_umle_reserved4,
10097 { "umle-reserved4", "tetra.umle_reserved4",
10098 FT_NONE, BASE_NONE, NULL, 0,
10100 { &hf_tetra_umle_reserved5,
10101 { "umle-reserved5", "tetra.umle_reserved5",
10102 FT_NONE, BASE_NONE, NULL, 0,
10104 { &hf_tetra_umle_reserved6,
10105 { "umle-reserved6", "tetra.umle_reserved6",
10106 FT_NONE, BASE_NONE, NULL, 0,
10108 { &hf_tetra_d_new_cell,
10109 { "d-new-cell", "tetra.d_new_cell",
10110 FT_NONE, BASE_NONE, NULL, 0,
10112 { &hf_tetra_d_prepare_fail,
10113 { "d-prepare-fail", "tetra.d_prepare_fail",
10114 FT_NONE, BASE_NONE, NULL, 0,
10116 { &hf_tetra_d_nwrk_broadcast,
10117 { "d-nwrk-broadcast", "tetra.d_nwrk_broadcast",
10118 FT_NONE, BASE_NONE, NULL, 0,
10119 "D_NWRK_BRDADCAST", HFILL }},
10120 { &hf_tetra_dmle_reserved1,
10121 { "dmle-reserved1", "tetra.dmle_reserved1",
10122 FT_NONE, BASE_NONE, NULL, 0,
10124 { &hf_tetra_d_restore_ack,
10125 { "d-restore-ack", "tetra.d_restore_ack",
10126 FT_NONE, BASE_NONE, NULL, 0,
10128 { &hf_tetra_d_restore_fail,
10129 { "d-restore-fail", "tetra.d_restore_fail",
10130 FT_NONE, BASE_NONE, NULL, 0,
10132 { &hf_tetra_dmle_reserved2,
10133 { "dmle-reserved2", "tetra.dmle_reserved2",
10134 FT_NONE, BASE_NONE, NULL, 0,
10136 { &hf_tetra_dmle_reserved3,
10137 { "dmle-reserved3", "tetra.dmle_reserved3",
10138 FT_NONE, BASE_NONE, NULL, 0,
10140 { &hf_tetra_optional_elements,
10141 { "optional-elements", "tetra.optional_elements",
10142 FT_UINT32, BASE_DEC, VALS(tetra_T_optional_elements_vals), 0,
10144 { &hf_tetra_no_type2,
10145 { "no-type2", "tetra.no_type2",
10146 FT_NONE, BASE_NONE, NULL, 0,
10148 { &hf_tetra_type2_parameters,
10149 { "type2-parameters", "tetra.type2_parameters",
10150 FT_NONE, BASE_NONE, NULL, 0,
10152 { &hf_tetra_cell_number,
10153 { "cell-number", "tetra.cell_number",
10154 FT_UINT32, BASE_DEC, VALS(tetra_T_cell_number_vals), 0,
10156 { &hf_tetra_cell_number_01,
10157 { "cell-number", "tetra.cell_number",
10158 FT_UINT32, BASE_DEC, NULL, 0,
10159 "INTEGER_0_65535", HFILL }},
10161 { "sdu", "tetra.sdu",
10162 FT_BYTES, BASE_NONE, NULL, 0,
10163 "BIT_STRING", HFILL }},
10164 { &hf_tetra_optional_elements_01,
10165 { "optional-elements", "tetra.optional_elements",
10166 FT_UINT32, BASE_DEC, VALS(tetra_T_optional_elements_01_vals), 0,
10167 "T_optional_elements_01", HFILL }},
10168 { &hf_tetra_type2_parameters_01,
10169 { "type2-parameters", "tetra.type2_parameters",
10170 FT_NONE, BASE_NONE, NULL, 0,
10171 "T_type2_parameters_01", HFILL }},
10172 { &hf_tetra_mcc_01,
10173 { "mcc", "tetra.mcc",
10174 FT_UINT32, BASE_DEC, VALS(tetra_T_mcc_vals), 0,
10176 { &hf_tetra_mnc_01,
10177 { "mnc", "tetra.mnc",
10178 FT_UINT32, BASE_DEC, VALS(tetra_T_mnc_vals), 0,
10181 { "la", "tetra.la",
10182 FT_UINT32, BASE_DEC, VALS(tetra_T_la_vals), 0,
10184 { &hf_tetra_channel_command_valid,
10185 { "channel-command-valid", "tetra.channel_command_valid",
10186 FT_UINT32, BASE_DEC, NULL, 0,
10187 "INTEGER_0_3", HFILL }},
10188 { &hf_tetra_optional_elements_02,
10189 { "optional-elements", "tetra.optional_elements",
10190 FT_UINT32, BASE_DEC, VALS(tetra_T_optional_elements_02_vals), 0,
10191 "T_optional_elements_02", HFILL }},
10192 { &hf_tetra_fail_cause,
10193 { "fail-cause", "tetra.fail_cause",
10194 FT_UINT32, BASE_DEC, NULL, 0,
10195 "INTEGER_0_3", HFILL }},
10196 { &hf_tetra_optional_elements_03,
10197 { "optional-elements", "tetra.optional_elements",
10198 FT_UINT32, BASE_DEC, VALS(tetra_T_optional_elements_03_vals), 0,
10199 "T_optional_elements_03", HFILL }},
10200 { &hf_tetra_cell_re_select_parameters,
10201 { "cell-re-select-parameters", "tetra.cell_re_select_parameters",
10202 FT_UINT32, BASE_DEC, NULL, 0,
10203 "INTEGER_0_65535", HFILL }},
10204 { &hf_tetra_optional_elements_04,
10205 { "optional-elements", "tetra.optional_elements",
10206 FT_UINT32, BASE_DEC, VALS(tetra_T_optional_elements_04_vals), 0,
10207 "T_optional_elements_04", HFILL }},
10208 { &hf_tetra_type2_parameters_02,
10209 { "type2-parameters", "tetra.type2_parameters",
10210 FT_NONE, BASE_NONE, NULL, 0,
10211 "T_type2_parameters_02", HFILL }},
10212 { &hf_tetra_tetra_network_time,
10213 { "tetra-network-time", "tetra.tetra_network_time",
10214 FT_UINT32, BASE_DEC, VALS(tetra_T_tetra_network_time_vals), 0,
10216 { &hf_tetra_tetra_network_time_01,
10217 { "tetra-network-time", "tetra.tetra_network_time",
10218 FT_NONE, BASE_NONE, NULL, 0,
10220 { &hf_tetra_number_of_neighbour_cells,
10221 { "number-of-neighbour-cells", "tetra.number_of_neighbour_cells",
10222 FT_UINT32, BASE_DEC, VALS(tetra_T_number_of_neighbour_cells_vals), 0,
10224 { &hf_tetra_number_of_neighbour_cells_01,
10225 { "number-of-neighbour-cells", "tetra.number_of_neighbour_cells",
10226 FT_UINT32, BASE_DEC, NULL, 0,
10227 "INTEGER_0_7", HFILL }},
10228 { &hf_tetra_network_time,
10229 { "network-time", "tetra.network_time",
10230 FT_UINT32, BASE_DEC, NULL, 0,
10232 { &hf_tetra_local_time_offset_sign,
10233 { "local-time-offset-sign", "tetra.local_time_offset_sign",
10234 FT_UINT32, BASE_DEC, NULL, 0,
10235 "INTEGER_0_1", HFILL }},
10236 { &hf_tetra_local_time_offset,
10237 { "local-time-offset", "tetra.local_time_offset",
10238 FT_UINT32, BASE_DEC, NULL, 0,
10239 "INTEGER_0_63", HFILL }},
10241 { "year", "tetra.year",
10242 FT_UINT32, BASE_DEC, NULL, 0,
10243 "INTEGER_0_63", HFILL }},
10244 { &hf_tetra_reserved_04,
10245 { "reserved", "tetra.reserved",
10246 FT_UINT32, BASE_DEC, NULL, 0,
10248 { &hf_tetra_u_Authentication,
10249 { "u-Authentication", "tetra.u_Authentication",
10250 FT_NONE, BASE_NONE, NULL, 0,
10252 { &hf_tetra_u_Itsi_Detach,
10253 { "u-Itsi-Detach", "tetra.u_Itsi_Detach",
10254 FT_NONE, BASE_NONE, NULL, 0,
10256 { &hf_tetra_u_Location_Update_Demand,
10257 { "u-Location-Update-Demand", "tetra.u_Location_Update_Demand",
10258 FT_NONE, BASE_NONE, NULL, 0,
10260 { &hf_tetra_u_MM_Status,
10261 { "u-MM-Status", "tetra.u_MM_Status",
10262 FT_NONE, BASE_NONE, NULL, 0,
10264 { &hf_tetra_u_MM_reserved1,
10265 { "u-MM-reserved1", "tetra.u_MM_reserved1",
10266 FT_NONE, BASE_NONE, NULL, 0,
10269 { "u-WK", "tetra.u_WK",
10270 FT_NONE, BASE_NONE, NULL, 0,
10272 { &hf_tetra_u_MM_reserved3,
10273 { "u-MM-reserved3", "tetra.u_MM_reserved3",
10274 FT_NONE, BASE_NONE, NULL, 0,
10276 { &hf_tetra_u_Attach_Detach_Group_Identity,
10277 { "u-Attach-Detach-Group-Identity", "tetra.u_Attach_Detach_Group_Identity",
10278 FT_NONE, BASE_NONE, NULL, 0,
10280 { &hf_tetra_u_Attach_Detach_Group_Identity_Ack,
10281 { "u-Attach-Detach-Group-Identity-Ack", "tetra.u_Attach_Detach_Group_Identity_Ack",
10282 FT_NONE, BASE_NONE, NULL, 0,
10284 { &hf_tetra_u_TEI_Provide,
10285 { "u-TEI-Provide", "tetra.u_TEI_Provide",
10286 FT_NONE, BASE_NONE, NULL, 0,
10288 { &hf_tetra_u_MM_reserved6,
10289 { "u-MM-reserved6", "tetra.u_MM_reserved6",
10290 FT_NONE, BASE_NONE, NULL, 0,
10292 { &hf_tetra_u_Disabled_Status,
10293 { "u-Disabled-Status", "tetra.u_Disabled_Status",
10294 FT_NONE, BASE_NONE, NULL, 0,
10296 { &hf_tetra_u_MM_reserved7,
10297 { "u-MM-reserved7", "tetra.u_MM_reserved7",
10298 FT_NONE, BASE_NONE, NULL, 0,
10300 { &hf_tetra_u_MM_reserved8,
10301 { "u-MM-reserved8", "tetra.u_MM_reserved8",
10302 FT_NONE, BASE_NONE, NULL, 0,
10304 { &hf_tetra_u_MM_reserved9,
10305 { "u-MM-reserved9", "tetra.u_MM_reserved9",
10306 FT_NONE, BASE_NONE, NULL, 0,
10308 { &hf_tetra_u_MM_Function_Not_Support,
10309 { "u-MM-Function-Not-Support", "tetra.u_MM_Function_Not_Support",
10310 FT_NONE, BASE_NONE, NULL, 0,
10312 { &hf_tetra_d_Otar,
10313 { "d-Otar", "tetra.d_Otar",
10314 FT_NONE, BASE_NONE, NULL, 0,
10316 { &hf_tetra_d_Authentication,
10317 { "d-Authentication", "tetra.d_Authentication",
10318 FT_NONE, BASE_NONE, NULL, 0,
10320 { &hf_tetra_d_Authentication_Reject,
10321 { "d-Authentication-Reject", "tetra.d_Authentication_Reject",
10322 FT_NONE, BASE_NONE, NULL, 0,
10324 { &hf_tetra_d_Disable,
10325 { "d-Disable", "tetra.d_Disable",
10326 FT_NONE, BASE_NONE, NULL, 0,
10328 { &hf_tetra_d_Enable,
10329 { "d-Enable", "tetra.d_Enable",
10330 FT_NONE, BASE_NONE, NULL, 0,
10332 { &hf_tetra_d_Location_Update_Accept,
10333 { "d-Location-Update-Accept", "tetra.d_Location_Update_Accept",
10334 FT_NONE, BASE_NONE, NULL, 0,
10336 { &hf_tetra_d_Location_Update_Command,
10337 { "d-Location-Update-Command", "tetra.d_Location_Update_Command",
10338 FT_NONE, BASE_NONE, NULL, 0,
10340 { &hf_tetra_d_Location_Update_Reject,
10341 { "d-Location-Update-Reject", "tetra.d_Location_Update_Reject",
10342 FT_NONE, BASE_NONE, NULL, 0,
10344 { &hf_tetra_d_MM_reserved2,
10345 { "d-MM-reserved2", "tetra.d_MM_reserved2",
10346 FT_NONE, BASE_NONE, NULL, 0,
10348 { &hf_tetra_d_Location_Update_Proceeding,
10349 { "d-Location-Update-Proceeding", "tetra.d_Location_Update_Proceeding",
10350 FT_NONE, BASE_NONE, NULL, 0,
10352 { &hf_tetra_d_Attach_Detach_Group_Identity,
10353 { "d-Attach-Detach-Group-Identity", "tetra.d_Attach_Detach_Group_Identity",
10354 FT_NONE, BASE_NONE, NULL, 0,
10356 { &hf_tetra_d_Attach_Detach_Group_Identity_Ack,
10357 { "d-Attach-Detach-Group-Identity-Ack", "tetra.d_Attach_Detach_Group_Identity_Ack",
10358 FT_NONE, BASE_NONE, NULL, 0,
10360 { &hf_tetra_d_MM_Status,
10361 { "d-MM-Status", "tetra.d_MM_Status",
10362 FT_NONE, BASE_NONE, NULL, 0,
10364 { &hf_tetra_d_MM_reserved5,
10365 { "d-MM-reserved5", "tetra.d_MM_reserved5",
10366 FT_NONE, BASE_NONE, NULL, 0,
10368 { &hf_tetra_d_MM_reserved6,
10369 { "d-MM-reserved6", "tetra.d_MM_reserved6",
10370 FT_NONE, BASE_NONE, NULL, 0,
10372 { &hf_tetra_d_MM_Function_Not_Support,
10373 { "d-MM-Function-Not-Support", "tetra.d_MM_Function_Not_Support",
10374 FT_NONE, BASE_NONE, NULL, 0,
10376 { &hf_tetra_attach_detach_identifiet,
10377 { "attach-detach-identifiet", "tetra.attach_detach_identifiet",
10378 FT_UINT32, BASE_DEC, VALS(tetra_T_attach_detach_identifiet_vals), 0,
10380 { &hf_tetra_attach,
10381 { "attach", "tetra.attach",
10382 FT_NONE, BASE_NONE, NULL, 0,
10384 { &hf_tetra_lifetime,
10385 { "lifetime", "tetra.lifetime",
10386 FT_UINT32, BASE_DEC, NULL, 0,
10387 "INTEGER_0_3", HFILL }},
10388 { &hf_tetra_class_of_usage,
10389 { "class-of-usage", "tetra.class_of_usage",
10390 FT_UINT32, BASE_DEC, NULL, 0,
10391 "INTEGER_0_7", HFILL }},
10392 { &hf_tetra_detach,
10393 { "detach", "tetra.detach",
10394 FT_NONE, BASE_NONE, NULL, 0,
10396 { &hf_tetra_detach_downlike,
10397 { "detach-downlike", "tetra.detach_downlike",
10398 FT_UINT32, BASE_DEC, VALS(tetra_T_detach_downlike_vals), 0,
10400 { &hf_tetra_address_type,
10401 { "address-type", "tetra.address_type",
10402 FT_UINT32, BASE_DEC, VALS(tetra_T_address_type_vals), 0,
10404 { &hf_tetra_gssi_01,
10405 { "gssi", "tetra.gssi",
10406 FT_BYTES, BASE_NONE, NULL, 0,
10407 "OCTET_STRING_SIZE_3", HFILL }},
10408 { &hf_tetra_gssi_extension,
10409 { "gssi-extension", "tetra.gssi_extension",
10410 FT_NONE, BASE_NONE, NULL, 0,
10412 { &hf_tetra_extension,
10413 { "extension", "tetra.extension",
10414 FT_BYTES, BASE_NONE, NULL, 0,
10415 "OCTET_STRING_SIZE_3", HFILL }},
10417 { "vgssi", "tetra.vgssi",
10418 FT_BYTES, BASE_NONE, NULL, 0,
10419 "OCTET_STRING_SIZE_3", HFILL }},
10420 { &hf_tetra_attach_detach_identifiet_01,
10421 { "attach-detach-identifiet", "tetra.attach_detach_identifiet",
10422 FT_UINT32, BASE_DEC, VALS(tetra_T_attach_detach_identifiet_01_vals), 0,
10423 "T_attach_detach_identifiet_01", HFILL }},
10424 { &hf_tetra_attach_01,
10425 { "attach", "tetra.attach",
10426 FT_NONE, BASE_NONE, NULL, 0,
10427 "T_attach_01", HFILL }},
10428 { &hf_tetra_detach_01,
10429 { "detach", "tetra.detach",
10430 FT_NONE, BASE_NONE, NULL, 0,
10431 "T_detach_01", HFILL }},
10432 { &hf_tetra_detach_uplike,
10433 { "detach-uplike", "tetra.detach_uplike",
10434 FT_UINT32, BASE_DEC, VALS(tetra_T_detach_uplike_vals), 0,
10436 { &hf_tetra_address_type_01,
10437 { "address-type", "tetra.address_type",
10438 FT_UINT32, BASE_DEC, VALS(tetra_T_address_type_01_vals), 0,
10439 "T_address_type_01", HFILL }},
10440 { &hf_tetra_gssi_extension_01,
10441 { "gssi-extension", "tetra.gssi_extension",
10442 FT_NONE, BASE_NONE, NULL, 0,
10443 "T_gssi_extension_01", HFILL }},
10444 { &hf_tetra_location_update_type,
10445 { "location-update-type", "tetra.location_update_type",
10446 FT_UINT32, BASE_DEC, VALS(tetra_UPDATE_TYPE_vals), 0,
10447 "UPDATE_TYPE", HFILL }},
10448 { &hf_tetra_optional_elements_05,
10449 { "optional-elements", "tetra.optional_elements",
10450 FT_UINT32, BASE_DEC, VALS(tetra_T_optional_elements_05_vals), 0,
10451 "T_optional_elements_05", HFILL }},
10452 { &hf_tetra_type2_parameters_03,
10453 { "type2-parameters", "tetra.type2_parameters",
10454 FT_NONE, BASE_NONE, NULL, 0,
10455 "T_type2_parameters_03", HFILL }},
10456 { &hf_tetra_ssi_02,
10457 { "ssi", "tetra.ssi",
10458 FT_UINT32, BASE_DEC, VALS(tetra_T_ssi_vals), 0,
10460 { &hf_tetra_ssi_03,
10461 { "ssi", "tetra.ssi",
10462 FT_BYTES, BASE_NONE, NULL, 0,
10463 "OCTET_STRING_SIZE_3", HFILL }},
10464 { &hf_tetra_address_extension,
10465 { "address-extension", "tetra.address_extension",
10466 FT_UINT32, BASE_DEC, VALS(tetra_T_address_extension_vals), 0,
10468 { &hf_tetra_address_extension_01,
10469 { "address-extension", "tetra.address_extension",
10470 FT_BYTES, BASE_NONE, NULL, 0,
10471 "OCTET_STRING_SIZE_3", HFILL }},
10472 { &hf_tetra_suscriber_class,
10473 { "suscriber-class", "tetra.suscriber_class",
10474 FT_UINT32, BASE_DEC, VALS(tetra_T_suscriber_class_vals), 0,
10476 { &hf_tetra_suscriber_class_01,
10477 { "suscriber-class", "tetra.suscriber_class",
10478 FT_UINT32, BASE_DEC, NULL, 0,
10479 "INTEGER_0_32767", HFILL }},
10480 { &hf_tetra_energy_saving_mode,
10481 { "energy-saving-mode", "tetra.energy_saving_mode",
10482 FT_UINT32, BASE_DEC, VALS(tetra_T_energy_saving_mode_vals), 0,
10484 { &hf_tetra_energy_saving_mode_01,
10485 { "energy-saving-mode", "tetra.energy_saving_mode",
10486 FT_UINT32, BASE_DEC, NULL, 0,
10487 "INTEGER_0_7", HFILL }},
10488 { &hf_tetra_scch_info,
10489 { "scch-info", "tetra.scch_info",
10490 FT_UINT32, BASE_DEC, VALS(tetra_T_scch_info_vals), 0,
10492 { &hf_tetra_scch_info_01,
10493 { "scch-info", "tetra.scch_info",
10494 FT_UINT32, BASE_DEC, NULL, 0,
10495 "INTEGER_0_16383", HFILL }},
10497 { "type3", "tetra.type3",
10498 FT_UINT32, BASE_DEC, VALS(tetra_T_type3_vals), 0,
10500 { &hf_tetra_no_type3,
10501 { "no-type3", "tetra.no_type3",
10502 FT_NONE, BASE_NONE, NULL, 0,
10504 { &hf_tetra_type3_elements,
10505 { "type3-elements", "tetra.type3_elements",
10506 FT_NONE, BASE_NONE, NULL, 0,
10508 { &hf_tetra_type2_existance,
10509 { "type2-existance", "tetra.type2_existance",
10510 FT_BOOLEAN, BASE_NONE, NULL, 0,
10511 "BOOLEAN", HFILL }},
10512 { &hf_tetra_type3_identifier,
10513 { "type3-identifier", "tetra.type3_identifier",
10514 FT_UINT32, BASE_DEC, VALS(tetra_TYPE3_IDENTIFIER_vals), 0,
10516 { &hf_tetra_new_ra,
10517 { "new-ra", "tetra.new_ra",
10518 FT_UINT32, BASE_DEC, VALS(tetra_T_new_ra_vals), 0,
10520 { &hf_tetra_new_ra_01,
10521 { "new-ra", "tetra.new_ra",
10522 FT_UINT32, BASE_DEC, NULL, 0,
10523 "INTEGER_0_3", HFILL }},
10524 { &hf_tetra_group_identity_location_accept,
10525 { "group-identity-location-accept", "tetra.group_identity_location_accept",
10526 FT_UINT32, BASE_DEC, VALS(tetra_T_group_identity_location_accept_vals), 0,
10528 { &hf_tetra_group_identity_location_accept_01,
10529 { "group-identity-location-accept", "tetra.group_identity_location_accept",
10530 FT_UINT32, BASE_DEC, NULL, 0,
10531 "INTEGER_0_3", HFILL }},
10532 { &hf_tetra_group_predefined_lifetime,
10533 { "group-predefined-lifetime", "tetra.group_predefined_lifetime",
10534 FT_UINT32, BASE_DEC, VALS(tetra_T_group_predefined_lifetime_vals), 0,
10536 { &hf_tetra_group_predefined_lifetime_01,
10537 { "group-predefined-lifetime", "tetra.group_predefined_lifetime",
10538 FT_UINT32, BASE_DEC, NULL, 0,
10539 "INTEGER_0_3", HFILL }},
10540 { &hf_tetra_group_identity_downlink,
10541 { "group-identity-downlink", "tetra.group_identity_downlink",
10542 FT_UINT32, BASE_DEC, VALS(tetra_T_group_identity_downlink_vals), 0,
10544 { &hf_tetra_group_identity_downlink_01,
10545 { "group-identity-downlink", "tetra.group_identity_downlink",
10546 FT_UINT32, BASE_DEC, NULL, 0,
10547 "INTEGER_0_15", HFILL }},
10548 { &hf_tetra_proprietary,
10549 { "proprietary", "tetra.proprietary",
10550 FT_UINT32, BASE_DEC, VALS(tetra_T_proprietary_vals), 0,
10552 { &hf_tetra_proprietary_01,
10553 { "proprietary", "tetra.proprietary",
10554 FT_UINT32, BASE_DEC, NULL, 0,
10555 "INTEGER_0_7", HFILL }},
10556 { &hf_tetra_reject_cause,
10557 { "reject-cause", "tetra.reject_cause",
10558 FT_UINT32, BASE_DEC, NULL, 0,
10559 "INTEGER_0_31", HFILL }},
10560 { &hf_tetra_cipher_control,
10561 { "cipher-control", "tetra.cipher_control",
10562 FT_BOOLEAN, BASE_NONE, NULL, 0,
10563 "BOOLEAN", HFILL }},
10564 { &hf_tetra_status_uplink,
10565 { "status-uplink", "tetra.status_uplink",
10566 FT_UINT32, BASE_DEC, NULL, 0,
10567 "INTEGER_0_63", HFILL }},
10568 { &hf_tetra_scanning_on_off,
10569 { "scanning-on-off", "tetra.scanning_on_off",
10570 FT_UINT32, BASE_DEC, VALS(tetra_T_scanning_on_off_vals), 0,
10572 { &hf_tetra_status_downlink,
10573 { "status-downlink", "tetra.status_downlink",
10574 FT_UINT32, BASE_DEC, NULL, 0,
10575 "INTEGER_0_63", HFILL }},
10576 { &hf_tetra_u_Alert,
10577 { "u-Alert", "tetra.u_Alert",
10578 FT_NONE, BASE_NONE, NULL, 0,
10580 { &hf_tetra_reserved1,
10581 { "reserved1", "tetra.reserved1",
10582 FT_NONE, BASE_NONE, NULL, 0,
10584 { &hf_tetra_u_Connect,
10585 { "u-Connect", "tetra.u_Connect",
10586 FT_NONE, BASE_NONE, NULL, 0,
10588 { &hf_tetra_reserved2,
10589 { "reserved2", "tetra.reserved2",
10590 FT_NONE, BASE_NONE, NULL, 0,
10592 { &hf_tetra_u_Disconnect,
10593 { "u-Disconnect", "tetra.u_Disconnect",
10594 FT_NONE, BASE_NONE, NULL, 0,
10596 { &hf_tetra_u_Info,
10597 { "u-Info", "tetra.u_Info",
10598 FT_NONE, BASE_NONE, NULL, 0,
10600 { &hf_tetra_u_Release,
10601 { "u-Release", "tetra.u_Release",
10602 FT_NONE, BASE_NONE, NULL, 0,
10604 { &hf_tetra_u_Setup,
10605 { "u-Setup", "tetra.u_Setup",
10606 FT_NONE, BASE_NONE, NULL, 0,
10608 { &hf_tetra_u_Status,
10609 { "u-Status", "tetra.u_Status",
10610 FT_NONE, BASE_NONE, NULL, 0,
10612 { &hf_tetra_u_Tx_Ceased,
10613 { "u-Tx-Ceased", "tetra.u_Tx_Ceased",
10614 FT_NONE, BASE_NONE, NULL, 0,
10616 { &hf_tetra_u_Tx_Demand,
10617 { "u-Tx-Demand", "tetra.u_Tx_Demand",
10618 FT_NONE, BASE_NONE, NULL, 0,
10620 { &hf_tetra_reserved3,
10621 { "reserved3", "tetra.reserved3",
10622 FT_NONE, BASE_NONE, NULL, 0,
10624 { &hf_tetra_reserved4,
10625 { "reserved4", "tetra.reserved4",
10626 FT_NONE, BASE_NONE, NULL, 0,
10628 { &hf_tetra_reserved5,
10629 { "reserved5", "tetra.reserved5",
10630 FT_NONE, BASE_NONE, NULL, 0,
10632 { &hf_tetra_u_Call_Restore,
10633 { "u-Call-Restore", "tetra.u_Call_Restore",
10634 FT_NONE, BASE_NONE, NULL, 0,
10636 { &hf_tetra_u_SDS_Data,
10637 { "u-SDS-Data", "tetra.u_SDS_Data",
10638 FT_NONE, BASE_NONE, NULL, 0,
10640 { &hf_tetra_u_Facility,
10641 { "u-Facility", "tetra.u_Facility",
10642 FT_NONE, BASE_NONE, NULL, 0,
10644 { &hf_tetra_call_identifier,
10645 { "call-identifier", "tetra.call_identifier",
10646 FT_UINT32, BASE_DEC, NULL, 0,
10647 "INTEGER_0_16383", HFILL }},
10648 { &hf_tetra_disconnect_cause,
10649 { "disconnect-cause", "tetra.disconnect_cause",
10650 FT_UINT32, BASE_DEC, NULL, 0,
10651 "INTEGER_0_31", HFILL }},
10652 { &hf_tetra_area_selection,
10653 { "area-selection", "tetra.area_selection",
10654 FT_UINT32, BASE_DEC, NULL, 0,
10655 "INTEGER_0_15", HFILL }},
10656 { &hf_tetra_called_party_type_identifier,
10657 { "called-party-type-identifier", "tetra.called_party_type_identifier",
10658 FT_UINT32, BASE_DEC, VALS(tetra_T_called_party_type_identifier_vals), 0,
10661 { "sna", "tetra.sna",
10662 FT_UINT32, BASE_DEC, NULL, 0,
10663 "INTEGER_0_255", HFILL }},
10664 { &hf_tetra_ssi_extension,
10665 { "ssi-extension", "tetra.ssi_extension",
10666 FT_BYTES, BASE_NONE, NULL, 0,
10667 "BIT_STRING_SIZE_48", HFILL }},
10668 { &hf_tetra_short_data_type_identifier,
10669 { "short-data-type-identifier", "tetra.short_data_type_identifier",
10670 FT_UINT32, BASE_DEC, VALS(tetra_T_short_data_type_identifier_vals), 0,
10671 "T_short_data_type_identifier", HFILL }},
10672 { &hf_tetra_data_1,
10673 { "data-1", "tetra.data_1",
10674 FT_UINT32, BASE_DEC, NULL, 0,
10675 "INTEGER_0_65535", HFILL }},
10676 { &hf_tetra_data_2,
10677 { "data-2", "tetra.data_2",
10678 FT_BYTES, BASE_NONE, NULL, 0,
10679 "OCTET_STRING_SIZE_4", HFILL }},
10680 { &hf_tetra_data_3,
10681 { "data-3", "tetra.data_3",
10682 FT_BYTES, BASE_NONE, NULL, 0,
10683 "BIT_STRING_SIZE_64", HFILL }},
10684 { &hf_tetra_length_indicator_data_4,
10685 { "length-indicator-data-4", "tetra.length_indicator_data_4",
10686 FT_UINT32, BASE_DEC, NULL, 0,
10687 "INTEGER_0_4194304", HFILL }},
10688 { &hf_tetra_called_party_type_identifier_01,
10689 { "called-party-type-identifier", "tetra.called_party_type_identifier",
10690 FT_UINT32, BASE_DEC, VALS(tetra_T_called_party_type_identifier_01_vals), 0,
10691 "T_called_party_type_identifier_01", HFILL }},
10692 { &hf_tetra_short_number_address,
10693 { "short-number-address", "tetra.short_number_address",
10694 FT_UINT32, BASE_DEC, NULL, 0,
10695 "INTEGER_0_255", HFILL }},
10696 { &hf_tetra_called_ssi_called_extension,
10697 { "called-ssi-called-extension", "tetra.called_ssi_called_extension",
10698 FT_BYTES, BASE_NONE, NULL, 0,
10699 "BIT_STRING_SIZE_48", HFILL }},
10700 { &hf_tetra_pre_coded_status,
10701 { "pre-coded-status", "tetra.pre_coded_status",
10702 FT_UINT32, BASE_DEC, NULL, 0,
10703 "INTEGER_0_65535", HFILL }},
10704 { &hf_tetra_call_id,
10705 { "call-id", "tetra.call_id",
10706 FT_UINT32, BASE_DEC, NULL, 0,
10707 "INTEGER_0_16383", HFILL }},
10708 { &hf_tetra_poll_response,
10709 { "poll-response", "tetra.poll_response",
10710 FT_UINT32, BASE_DEC, NULL, 0,
10711 "INTEGER_0_1", HFILL }},
10712 { &hf_tetra_d_Alert,
10713 { "d-Alert", "tetra.d_Alert",
10714 FT_NONE, BASE_NONE, NULL, 0,
10716 { &hf_tetra_d_Call_Proceeding,
10717 { "d-Call-Proceeding", "tetra.d_Call_Proceeding",
10718 FT_NONE, BASE_NONE, NULL, 0,
10720 { &hf_tetra_d_Connect,
10721 { "d-Connect", "tetra.d_Connect",
10722 FT_NONE, BASE_NONE, NULL, 0,
10724 { &hf_tetra_d_Connect_Ack,
10725 { "d-Connect-Ack", "tetra.d_Connect_Ack",
10726 FT_NONE, BASE_NONE, NULL, 0,
10728 { &hf_tetra_d_Disconnect,
10729 { "d-Disconnect", "tetra.d_Disconnect",
10730 FT_NONE, BASE_NONE, NULL, 0,
10732 { &hf_tetra_d_Info,
10733 { "d-Info", "tetra.d_Info",
10734 FT_NONE, BASE_NONE, NULL, 0,
10736 { &hf_tetra_d_Release,
10737 { "d-Release", "tetra.d_Release",
10738 FT_NONE, BASE_NONE, NULL, 0,
10740 { &hf_tetra_d_Setup,
10741 { "d-Setup", "tetra.d_Setup",
10742 FT_NONE, BASE_NONE, NULL, 0,
10744 { &hf_tetra_d_Status,
10745 { "d-Status", "tetra.d_Status",
10746 FT_NONE, BASE_NONE, NULL, 0,
10748 { &hf_tetra_d_Tx_Ceased,
10749 { "d-Tx-Ceased", "tetra.d_Tx_Ceased",
10750 FT_NONE, BASE_NONE, NULL, 0,
10752 { &hf_tetra_d_Tx_Continue,
10753 { "d-Tx-Continue", "tetra.d_Tx_Continue",
10754 FT_NONE, BASE_NONE, NULL, 0,
10756 { &hf_tetra_d_Tx_Granted,
10757 { "d-Tx-Granted", "tetra.d_Tx_Granted",
10758 FT_NONE, BASE_NONE, NULL, 0,
10760 { &hf_tetra_d_Tx_Wait,
10761 { "d-Tx-Wait", "tetra.d_Tx_Wait",
10762 FT_NONE, BASE_NONE, NULL, 0,
10764 { &hf_tetra_d_Tx_Interrupt,
10765 { "d-Tx-Interrupt", "tetra.d_Tx_Interrupt",
10766 FT_NONE, BASE_NONE, NULL, 0,
10768 { &hf_tetra_d_Call_Restore,
10769 { "d-Call-Restore", "tetra.d_Call_Restore",
10770 FT_NONE, BASE_NONE, NULL, 0,
10772 { &hf_tetra_d_SDS_Data,
10773 { "d-SDS-Data", "tetra.d_SDS_Data",
10774 FT_NONE, BASE_NONE, NULL, 0,
10776 { &hf_tetra_d_Facility,
10777 { "d-Facility", "tetra.d_Facility",
10778 FT_NONE, BASE_NONE, NULL, 0,
10780 { &hf_tetra_calling_party_type_identifier,
10781 { "calling-party-type-identifier", "tetra.calling_party_type_identifier",
10782 FT_UINT32, BASE_DEC, VALS(tetra_T_calling_party_type_identifier_vals), 0,
10784 { &hf_tetra_ssi_extension_01,
10785 { "ssi-extension", "tetra.ssi_extension",
10786 FT_BYTES, BASE_NONE, NULL, 0,
10787 "OCTET_STRING_SIZE_6", HFILL }},
10788 { &hf_tetra_short_data_type_identifier_01,
10789 { "short-data-type-identifier", "tetra.short_data_type_identifier",
10790 FT_UINT32, BASE_DEC, VALS(tetra_T_short_data_type_identifier_01_vals), 0,
10791 "T_short_data_type_identifier_01", HFILL }},
10792 { &hf_tetra_data_3_01,
10793 { "data-3", "tetra.data_3",
10794 FT_BYTES, BASE_NONE, NULL, 0,
10795 "OCTET_STRING_SIZE_8", HFILL }},
10796 { &hf_tetra_calling_party_type_identifier_01,
10797 { "calling-party-type-identifier", "tetra.calling_party_type_identifier",
10798 FT_UINT32, BASE_DEC, VALS(tetra_T_calling_party_type_identifier_01_vals), 0,
10799 "T_calling_party_type_identifier_01", HFILL }},
10800 { &hf_tetra_calling_party_address_SSI,
10801 { "calling-party-address-SSI", "tetra.calling_party_address_SSI",
10802 FT_UINT32, BASE_DEC, NULL, 0,
10803 "INTEGER_0_16777215", HFILL }},
10804 { &hf_tetra_reset_call_time_out_timer,
10805 { "reset-call-time-out-timer", "tetra.reset_call_time_out_timer",
10806 FT_UINT32, BASE_DEC, NULL, 0,
10807 "INTEGER_0_1", HFILL }},
10808 { &hf_tetra_poll_request,
10809 { "poll-request", "tetra.poll_request",
10810 FT_UINT32, BASE_DEC, NULL, 0,
10811 "INTEGER_0_1", HFILL }},
10812 { &hf_tetra_transmission_request_permission,
10813 { "transmission-request-permission", "tetra.transmission_request_permission",
10814 FT_UINT32, BASE_DEC, NULL, 0,
10815 "INTEGER_0_1", HFILL }},
10816 { &hf_tetra_continue,
10817 { "continue", "tetra.continue",
10818 FT_UINT32, BASE_DEC, NULL, 0,
10819 "INTEGER_0_1", HFILL }},
10820 { &hf_tetra_request_to_append_LA,
10821 { "request-to-append-LA", "tetra.request_to_append_LA",
10822 FT_BOOLEAN, BASE_NONE, NULL, 0,
10823 "BOOLEAN", HFILL }},
10824 { &hf_tetra_cipher_control_01,
10825 { "cipher-control", "tetra.cipher_control",
10826 FT_UINT32, BASE_DEC, VALS(tetra_T_cipher_control_vals), 0,
10828 { &hf_tetra_no_cipher,
10829 { "no-cipher", "tetra.no_cipher",
10830 FT_NONE, BASE_NONE, NULL, 0,
10832 { &hf_tetra_ciphering_parameters,
10833 { "ciphering-parameters", "tetra.ciphering_parameters",
10834 FT_UINT32, BASE_DEC, NULL, 0,
10835 "INTEGER_0_1023", HFILL }},
10836 { &hf_tetra_class_of_MS,
10837 { "class-of-MS", "tetra.class_of_MS",
10838 FT_BYTES, BASE_NONE, NULL, 0,
10839 "OCTET_STRING_SIZE_4", HFILL }},
10840 { &hf_tetra_optional_elements_06,
10841 { "optional-elements", "tetra.optional_elements",
10842 FT_UINT32, BASE_DEC, VALS(tetra_T_optional_elements_06_vals), 0,
10843 "T_optional_elements_06", HFILL }},
10844 { &hf_tetra_type2_parameters_04,
10845 { "type2-parameters", "tetra.type2_parameters",
10846 FT_NONE, BASE_NONE, NULL, 0,
10847 "T_type2_parameters_04", HFILL }},
10848 { &hf_tetra_energy_saving_mode_02,
10849 { "energy-saving-mode", "tetra.energy_saving_mode",
10850 FT_UINT32, BASE_DEC, VALS(tetra_T_energy_saving_mode_01_vals), 0,
10851 "T_energy_saving_mode_01", HFILL }},
10852 { &hf_tetra_la_information,
10853 { "la-information", "tetra.la_information",
10854 FT_UINT32, BASE_DEC, VALS(tetra_T_la_information_vals), 0,
10856 { &hf_tetra_la_information_01,
10857 { "la-information", "tetra.la_information",
10858 FT_UINT32, BASE_DEC, NULL, 0,
10859 "INTEGER_0_16383", HFILL }},
10860 { &hf_tetra_ssi_04,
10861 { "ssi", "tetra.ssi",
10862 FT_UINT32, BASE_DEC, VALS(tetra_T_ssi_01_vals), 0,
10863 "T_ssi_01", HFILL }},
10864 { &hf_tetra_address_extension_02,
10865 { "address-extension", "tetra.address_extension",
10866 FT_UINT32, BASE_DEC, VALS(tetra_T_address_extension_01_vals), 0,
10867 "T_address_extension_01", HFILL }},
10868 { &hf_tetra_type3_01,
10869 { "type3", "tetra.type3",
10870 FT_UINT32, BASE_DEC, VALS(tetra_T_type3_01_vals), 0,
10871 "T_type3_01", HFILL }},
10872 { &hf_tetra_type3_elements_01,
10873 { "type3-elements", "tetra.type3_elements",
10874 FT_NONE, BASE_NONE, NULL, 0,
10875 "T_type3_elements_01", HFILL }},
10876 { &hf_tetra_group_identity_location_demand,
10877 { "group-identity-location-demand", "tetra.group_identity_location_demand",
10878 FT_UINT32, BASE_DEC, VALS(tetra_T_group_identity_location_demand_vals), 0,
10880 { &hf_tetra_group_identity_location_demand_01,
10881 { "group-identity-location-demand", "tetra.group_identity_location_demand",
10882 FT_UINT32, BASE_DEC, NULL, 0,
10883 "INTEGER_0_3", HFILL }},
10884 { &hf_tetra_group_report_response,
10885 { "group-report-response", "tetra.group_report_response",
10886 FT_UINT32, BASE_DEC, VALS(tetra_T_group_report_response_vals), 0,
10887 "T_group_report_response", HFILL }},
10888 { &hf_tetra_group_report_response_01,
10889 { "group-report-response", "tetra.group_report_response",
10890 FT_BOOLEAN, BASE_NONE, NULL, 0,
10891 "BOOLEAN", HFILL }},
10892 { &hf_tetra_group_identity_uplink,
10893 { "group-identity-uplink", "tetra.group_identity_uplink",
10894 FT_UINT32, BASE_DEC, VALS(tetra_T_group_identity_uplink_vals), 0,
10896 { &hf_tetra_group_identity_uplink_01,
10897 { "group-identity-uplink", "tetra.group_identity_uplink",
10898 FT_UINT32, BASE_DEC, NULL, 0,
10899 "INTEGER_0_15", HFILL }},
10900 { &hf_tetra_proprietary_02,
10901 { "proprietary", "tetra.proprietary",
10902 FT_UINT32, BASE_DEC, VALS(tetra_T_proprietary_01_vals), 0,
10903 "T_proprietary_01", HFILL }},
10904 { &hf_tetra_group_identity_report,
10905 { "group-identity-report", "tetra.group_identity_report",
10906 FT_BOOLEAN, BASE_NONE, NULL, 0,
10907 "BOOLEAN", HFILL }},
10908 { &hf_tetra_group_identity_attach_detach_mode,
10909 { "group-identity-attach-detach-mode", "tetra.group_identity_attach_detach_mode",
10910 FT_BOOLEAN, BASE_NONE, NULL, 0,
10911 "BOOLEAN", HFILL }},
10912 { &hf_tetra_optional_elements_07,
10913 { "optional-elements", "tetra.optional_elements",
10914 FT_UINT32, BASE_DEC, VALS(tetra_T_optional_elements_07_vals), 0,
10915 "T_optional_elements_07", HFILL }},
10916 { &hf_tetra_type2_element,
10917 { "type2-element", "tetra.type2_element",
10918 FT_NONE, BASE_NONE, NULL, 0,
10920 { &hf_tetra_type3_02,
10921 { "type3", "tetra.type3",
10922 FT_UINT32, BASE_DEC, VALS(tetra_T_type3_02_vals), 0,
10923 "T_type3_02", HFILL }},
10924 { &hf_tetra_type3_elements_02,
10925 { "type3-elements", "tetra.type3_elements",
10926 FT_NONE, BASE_NONE, NULL, 0,
10927 "T_type3_elements_02", HFILL }},
10928 { &hf_tetra_length,
10929 { "length", "tetra.length",
10930 FT_UINT32, BASE_DEC, NULL, 0,
10931 "INTEGER_0_2047", HFILL }},
10932 { &hf_tetra_repeat_num,
10933 { "repeat-num", "tetra.repeat_num",
10934 FT_UINT32, BASE_DEC, NULL, 0,
10935 "INTEGER_0_63", HFILL }},
10936 { &hf_tetra_group_identity_uplink_02,
10937 { "group-identity-uplink", "tetra.group_identity_uplink",
10938 FT_NONE, BASE_NONE, NULL, 0,
10940 { &hf_tetra_group_identity_ack_type,
10941 { "group-identity-ack-type", "tetra.group_identity_ack_type",
10942 FT_BOOLEAN, BASE_NONE, NULL, 0,
10943 "BOOLEAN", HFILL }},
10944 { &hf_tetra_optional_elements_08,
10945 { "optional-elements", "tetra.optional_elements",
10946 FT_UINT32, BASE_DEC, VALS(tetra_T_optional_elements_08_vals), 0,
10947 "T_optional_elements_08", HFILL }},
10948 { &hf_tetra_type2_element_01,
10949 { "type2-element", "tetra.type2_element",
10950 FT_NONE, BASE_NONE, NULL, 0,
10951 "T_type2_element_01", HFILL }},
10952 { &hf_tetra_type3_03,
10953 { "type3", "tetra.type3",
10954 FT_UINT32, BASE_DEC, VALS(tetra_T_type3_03_vals), 0,
10955 "T_type3_03", HFILL }},
10956 { &hf_tetra_type3_elements_03,
10957 { "type3-elements", "tetra.type3_elements",
10958 FT_NONE, BASE_NONE, NULL, 0,
10959 "T_type3_elements_03", HFILL }},
10960 { &hf_tetra_hook_method_selection,
10961 { "hook-method-selection", "tetra.hook_method_selection",
10962 FT_BOOLEAN, BASE_NONE, NULL, 0,
10963 "BOOLEAN", HFILL }},
10964 { &hf_tetra_simple_duplex_selection,
10965 { "simple-duplex-selection", "tetra.simple_duplex_selection",
10966 FT_UINT32, BASE_DEC, VALS(tetra_T_simple_duplex_selection_vals), 0,
10968 { &hf_tetra_basic_service_information,
10969 { "basic-service-information", "tetra.basic_service_information",
10970 FT_NONE, BASE_NONE, NULL, 0,
10972 { &hf_tetra_request_transmit_send_data,
10973 { "request-transmit-send-data", "tetra.request_transmit_send_data",
10974 FT_UINT32, BASE_DEC, NULL, 0,
10975 "INTEGER_0_1", HFILL }},
10976 { &hf_tetra_call_priority,
10977 { "call-priority", "tetra.call_priority",
10978 FT_UINT32, BASE_DEC, NULL, 0,
10979 "INTEGER_0_15", HFILL }},
10980 { &hf_tetra_clir_control,
10981 { "clir-control", "tetra.clir_control",
10982 FT_UINT32, BASE_DEC, NULL, 0,
10983 "INTEGER_0_3", HFILL }},
10984 { &hf_tetra_called_party_address,
10985 { "called-party-address", "tetra.called_party_address",
10986 FT_UINT32, BASE_DEC, VALS(tetra_Calling_party_address_type_vals), 0,
10987 "Called_party_address_type", HFILL }},
10988 { &hf_tetra_optional_elements_09,
10989 { "optional-elements", "tetra.optional_elements",
10990 FT_UINT32, BASE_DEC, VALS(tetra_T_optional_elements_09_vals), 0,
10991 "T_optional_elements_09", HFILL }},
10992 { &hf_tetra_type2_parameters_05,
10993 { "type2-parameters", "tetra.type2_parameters",
10994 FT_NONE, BASE_NONE, NULL, 0,
10995 "T_type2_parameters_05", HFILL }},
10996 { &hf_tetra_external_subscriber_number,
10997 { "external-subscriber-number", "tetra.external_subscriber_number",
10998 FT_UINT32, BASE_DEC, VALS(tetra_T_external_subscriber_number_vals), 0,
11000 { &hf_tetra_external_subscriber_number_01,
11001 { "external-subscriber-number", "tetra.external_subscriber_number",
11002 FT_UINT32, BASE_DEC, NULL, 0,
11003 "INTEGER_0_31", HFILL }},
11005 { "prop", "tetra.prop",
11006 FT_UINT32, BASE_DEC, VALS(tetra_T_prop_vals), 0,
11008 { &hf_tetra_prop_01,
11009 { "prop", "tetra.prop",
11010 FT_NONE, BASE_NONE, NULL, 0,
11011 "Proprietary", HFILL }},
11012 { &hf_tetra_circuit_mode,
11013 { "circuit-mode", "tetra.circuit_mode",
11014 FT_UINT32, BASE_DEC, VALS(tetra_CIRCUIT_vals), 0,
11015 "CIRCUIT", HFILL }},
11016 { &hf_tetra_encryption,
11017 { "encryption", "tetra.encryption",
11018 FT_UINT32, BASE_DEC, NULL, 0,
11019 "INTEGER_0_1", HFILL }},
11020 { &hf_tetra_communication,
11021 { "communication", "tetra.communication",
11022 FT_UINT32, BASE_DEC, NULL, 0,
11023 "INTEGER_0_3", HFILL }},
11024 { &hf_tetra_slots_or_speech,
11025 { "slots-or-speech", "tetra.slots_or_speech",
11026 FT_UINT32, BASE_DEC, NULL, 0,
11027 "INTEGER_0_3", HFILL }},
11028 { &hf_tetra_call_identifier_01,
11029 { "call-identifier", "tetra.call_identifier",
11030 FT_UINT32, BASE_DEC, NULL, 0,
11031 "INTEGER_0_1023", HFILL }},
11032 { &hf_tetra_simplex_duplex_selection,
11033 { "simplex-duplex-selection", "tetra.simplex_duplex_selection",
11034 FT_UINT32, BASE_DEC, VALS(tetra_T_simplex_duplex_selection_vals), 0,
11036 { &hf_tetra_optional_elements_10,
11037 { "optional-elements", "tetra.optional_elements",
11038 FT_UINT32, BASE_DEC, VALS(tetra_T_optional_elements_10_vals), 0,
11039 "T_optional_elements_10", HFILL }},
11040 { &hf_tetra_type2_parameters_06,
11041 { "type2-parameters", "tetra.type2_parameters",
11042 FT_NONE, BASE_NONE, NULL, 0,
11043 "T_type2_parameters_06", HFILL }},
11044 { &hf_tetra_basic_service_information_01,
11045 { "basic-service-information", "tetra.basic_service_information",
11046 FT_UINT32, BASE_DEC, VALS(tetra_T_basic_service_information_vals), 0,
11048 { &hf_tetra_prop_02,
11049 { "prop", "tetra.prop",
11050 FT_UINT32, BASE_DEC, VALS(tetra_T_prop_01_vals), 0,
11051 "T_prop_01", HFILL }},
11052 { &hf_tetra_simplex_duplex_selection_01,
11053 { "simplex-duplex-selection", "tetra.simplex_duplex_selection",
11054 FT_UINT32, BASE_DEC, VALS(tetra_T_simplex_duplex_selection_01_vals), 0,
11055 "T_simplex_duplex_selection_01", HFILL }},
11056 { &hf_tetra_optional_elements_11,
11057 { "optional-elements", "tetra.optional_elements",
11058 FT_UINT32, BASE_DEC, VALS(tetra_T_optional_elements_11_vals), 0,
11059 "T_optional_elements_11", HFILL }},
11060 { &hf_tetra_type2_parameters_07,
11061 { "type2-parameters", "tetra.type2_parameters",
11062 FT_NONE, BASE_NONE, NULL, 0,
11063 "T_type2_parameters_07", HFILL }},
11064 { &hf_tetra_basic_service_information_02,
11065 { "basic-service-information", "tetra.basic_service_information",
11066 FT_UINT32, BASE_DEC, VALS(tetra_T_basic_service_information_01_vals), 0,
11067 "T_basic_service_information_01", HFILL }},
11068 { &hf_tetra_prop_03,
11069 { "prop", "tetra.prop",
11070 FT_UINT32, BASE_DEC, VALS(tetra_T_prop_02_vals), 0,
11071 "T_prop_02", HFILL }},
11072 { &hf_tetra_optional_elements_12,
11073 { "optional-elements", "tetra.optional_elements",
11074 FT_UINT32, BASE_DEC, VALS(tetra_T_optional_elements_12_vals), 0,
11075 "T_optional_elements_12", HFILL }},
11076 { &hf_tetra_type2_parameters_08,
11077 { "type2-parameters", "tetra.type2_parameters",
11078 FT_NONE, BASE_NONE, NULL, 0,
11079 "T_type2_parameters_08", HFILL }},
11080 { &hf_tetra_prop_04,
11081 { "prop", "tetra.prop",
11082 FT_UINT32, BASE_DEC, VALS(tetra_T_prop_03_vals), 0,
11083 "T_prop_03", HFILL }},
11084 { &hf_tetra_tx_demand_priority,
11085 { "tx-demand-priority", "tetra.tx_demand_priority",
11086 FT_UINT32, BASE_DEC, NULL, 0,
11087 "INTEGER_0_3", HFILL }},
11088 { &hf_tetra_encryption_control,
11089 { "encryption-control", "tetra.encryption_control",
11090 FT_UINT32, BASE_DEC, NULL, 0,
11091 "INTEGER_0_1", HFILL }},
11092 { &hf_tetra_optional_elements_13,
11093 { "optional-elements", "tetra.optional_elements",
11094 FT_UINT32, BASE_DEC, VALS(tetra_T_optional_elements_13_vals), 0,
11095 "T_optional_elements_13", HFILL }},
11096 { &hf_tetra_type2_parameters_09,
11097 { "type2-parameters", "tetra.type2_parameters",
11098 FT_NONE, BASE_NONE, NULL, 0,
11099 "T_type2_parameters_09", HFILL }},
11100 { &hf_tetra_prop_05,
11101 { "prop", "tetra.prop",
11102 FT_UINT32, BASE_DEC, VALS(tetra_T_prop_04_vals), 0,
11103 "T_prop_04", HFILL }},
11104 { &hf_tetra_optional_elements_14,
11105 { "optional-elements", "tetra.optional_elements",
11106 FT_UINT32, BASE_DEC, VALS(tetra_T_optional_elements_14_vals), 0,
11107 "T_optional_elements_14", HFILL }},
11108 { &hf_tetra_type2_parameters_10,
11109 { "type2-parameters", "tetra.type2_parameters",
11110 FT_NONE, BASE_NONE, NULL, 0,
11111 "T_type2_parameters_10", HFILL }},
11112 { &hf_tetra_prop_06,
11113 { "prop", "tetra.prop",
11114 FT_UINT32, BASE_DEC, VALS(tetra_T_prop_05_vals), 0,
11115 "T_prop_05", HFILL }},
11116 { &hf_tetra_request_to_transmit_send_data,
11117 { "request-to-transmit-send-data", "tetra.request_to_transmit_send_data",
11118 FT_UINT32, BASE_DEC, NULL, 0,
11119 "INTEGER_0_1", HFILL }},
11120 { &hf_tetra_other_party_address,
11121 { "other-party-address", "tetra.other_party_address",
11122 FT_UINT32, BASE_DEC, VALS(tetra_Calling_party_address_type_vals), 0,
11123 "Other_party_address_type", HFILL }},
11124 { &hf_tetra_optional_elements_15,
11125 { "optional-elements", "tetra.optional_elements",
11126 FT_UINT32, BASE_DEC, VALS(tetra_T_optional_elements_15_vals), 0,
11127 "T_optional_elements_15", HFILL }},
11128 { &hf_tetra_type2_parameters_11,
11129 { "type2-parameters", "tetra.type2_parameters",
11130 FT_NONE, BASE_NONE, NULL, 0,
11131 "T_type2_parameters_11", HFILL }},
11132 { &hf_tetra_prop_07,
11133 { "prop", "tetra.prop",
11134 FT_UINT32, BASE_DEC, VALS(tetra_T_prop_06_vals), 0,
11135 "T_prop_06", HFILL }},
11136 { &hf_tetra_call_time_out,
11137 { "call-time-out", "tetra.call_time_out",
11138 FT_UINT32, BASE_DEC, NULL, 0,
11139 "INTEGER_0_15", HFILL }},
11140 { &hf_tetra_hook_method_selection_01,
11141 { "hook-method-selection", "tetra.hook_method_selection",
11142 FT_UINT32, BASE_DEC, NULL, 0,
11143 "INTEGER_0_1", HFILL }},
11144 { &hf_tetra_simplex_duplex_selection_02,
11145 { "simplex-duplex-selection", "tetra.simplex_duplex_selection",
11146 FT_UINT32, BASE_DEC, VALS(tetra_T_simplex_duplex_selection_02_vals), 0,
11147 "T_simplex_duplex_selection_02", HFILL }},
11148 { &hf_tetra_transmission_grant,
11149 { "transmission-grant", "tetra.transmission_grant",
11150 FT_UINT32, BASE_DEC, NULL, 0,
11151 "INTEGER_0_3", HFILL }},
11152 { &hf_tetra_optional_elements_16,
11153 { "optional-elements", "tetra.optional_elements",
11154 FT_UINT32, BASE_DEC, VALS(tetra_T_optional_elements_16_vals), 0,
11155 "T_optional_elements_16", HFILL }},
11156 { &hf_tetra_type2_parameters_12,
11157 { "type2-parameters", "tetra.type2_parameters",
11158 FT_NONE, BASE_NONE, NULL, 0,
11159 "T_type2_parameters_12", HFILL }},
11160 { &hf_tetra_calling_party_address,
11161 { "calling-party-address", "tetra.calling_party_address",
11162 FT_UINT32, BASE_DEC, VALS(tetra_T_calling_party_address_vals), 0,
11164 { &hf_tetra_calling_party_address_01,
11165 { "calling-party-address", "tetra.calling_party_address",
11166 FT_UINT32, BASE_DEC, VALS(tetra_Calling_party_address_type_vals), 0,
11167 "Calling_party_address_type", HFILL }},
11168 { &hf_tetra_external_subscriber_number_02,
11169 { "external-subscriber-number", "tetra.external_subscriber_number",
11170 FT_UINT32, BASE_DEC, VALS(tetra_T_external_subscriber_number_01_vals), 0,
11171 "T_external_subscriber_number_01", HFILL }},
11172 { &hf_tetra_external_subscriber_number_03,
11173 { "external-subscriber-number", "tetra.external_subscriber_number",
11174 FT_UINT32, BASE_DEC, NULL, 0,
11175 "INTEGER_0_15", HFILL }},
11176 { &hf_tetra_prop_08,
11177 { "prop", "tetra.prop",
11178 FT_UINT32, BASE_DEC, VALS(tetra_T_prop_07_vals), 0,
11179 "T_prop_07", HFILL }},
11180 { &hf_tetra_call_time_out_setup_phase,
11181 { "call-time-out-setup-phase", "tetra.call_time_out_setup_phase",
11182 FT_UINT32, BASE_DEC, NULL, 0,
11183 "INTEGER_0_7", HFILL }},
11184 { &hf_tetra_simplex_duplex_selection_03,
11185 { "simplex-duplex-selection", "tetra.simplex_duplex_selection",
11186 FT_UINT32, BASE_DEC, NULL, 0,
11187 "INTEGER_0_1", HFILL }},
11188 { &hf_tetra_optional_elements_17,
11189 { "optional-elements", "tetra.optional_elements",
11190 FT_UINT32, BASE_DEC, VALS(tetra_T_optional_elements_17_vals), 0,
11191 "T_optional_elements_17", HFILL }},
11192 { &hf_tetra_type2_parameters_13,
11193 { "type2-parameters", "tetra.type2_parameters",
11194 FT_NONE, BASE_NONE, NULL, 0,
11195 "T_type2_parameters_13", HFILL }},
11196 { &hf_tetra_basic_service_information_03,
11197 { "basic-service-information", "tetra.basic_service_information",
11198 FT_UINT32, BASE_DEC, VALS(tetra_T_basic_service_information_02_vals), 0,
11199 "T_basic_service_information_02", HFILL }},
11200 { &hf_tetra_call_status,
11201 { "call-status", "tetra.call_status",
11202 FT_UINT32, BASE_DEC, VALS(tetra_T_call_status_vals), 0,
11204 { &hf_tetra_call_status_01,
11205 { "call-status", "tetra.call_status",
11206 FT_UINT32, BASE_DEC, NULL, 0,
11207 "INTEGER_0_7", HFILL }},
11208 { &hf_tetra_notification_indicator,
11209 { "notification-indicator", "tetra.notification_indicator",
11210 FT_UINT32, BASE_DEC, VALS(tetra_T_notification_indicator_vals), 0,
11212 { &hf_tetra_notification_indicator_01,
11213 { "notification-indicator", "tetra.notification_indicator",
11214 FT_UINT32, BASE_DEC, NULL, 0,
11215 "INTEGER_0_63", HFILL }},
11216 { &hf_tetra_prop_09,
11217 { "prop", "tetra.prop",
11218 FT_UINT32, BASE_DEC, VALS(tetra_T_prop_08_vals), 0,
11219 "T_prop_08", HFILL }},
11220 { &hf_tetra_simplex_duplex_selection_04,
11221 { "simplex-duplex-selection", "tetra.simplex_duplex_selection",
11222 FT_UINT32, BASE_DEC, VALS(tetra_T_simplex_duplex_selection_03_vals), 0,
11223 "T_simplex_duplex_selection_03", HFILL }},
11224 { &hf_tetra_call_queued,
11225 { "call-queued", "tetra.call_queued",
11226 FT_BOOLEAN, BASE_NONE, NULL, 0,
11227 "BOOLEAN", HFILL }},
11228 { &hf_tetra_optional_elements_18,
11229 { "optional-elements", "tetra.optional_elements",
11230 FT_UINT32, BASE_DEC, VALS(tetra_T_optional_elements_18_vals), 0,
11231 "T_optional_elements_18", HFILL }},
11232 { &hf_tetra_type2_parameters_14,
11233 { "type2-parameters", "tetra.type2_parameters",
11234 FT_NONE, BASE_NONE, NULL, 0,
11235 "T_type2_parameters_14", HFILL }},
11236 { &hf_tetra_basic_service_infomation,
11237 { "basic-service-infomation", "tetra.basic_service_infomation",
11238 FT_UINT32, BASE_DEC, VALS(tetra_T_basic_service_infomation_vals), 0,
11240 { &hf_tetra_basic_service_infomation_01,
11241 { "basic-service-infomation", "tetra.basic_service_infomation",
11242 FT_NONE, BASE_NONE, NULL, 0,
11243 "Basic_service_information", HFILL }},
11244 { &hf_tetra_notification_indicator_02,
11245 { "notification-indicator", "tetra.notification_indicator",
11246 FT_UINT32, BASE_DEC, VALS(tetra_T_notification_indicator_01_vals), 0,
11247 "T_notification_indicator_01", HFILL }},
11248 { &hf_tetra_prop_10,
11249 { "prop", "tetra.prop",
11250 FT_UINT32, BASE_DEC, VALS(tetra_T_prop_09_vals), 0,
11251 "T_prop_09", HFILL }},
11252 { &hf_tetra_call_time_out_01,
11253 { "call-time-out", "tetra.call_time_out",
11254 FT_UINT32, BASE_DEC, NULL, 0,
11255 "INTEGER_0_31", HFILL }},
11256 { &hf_tetra_simplex_duplex_selection_05,
11257 { "simplex-duplex-selection", "tetra.simplex_duplex_selection",
11258 FT_UINT32, BASE_DEC, VALS(tetra_T_simplex_duplex_selection_04_vals), 0,
11259 "T_simplex_duplex_selection_04", HFILL }},
11260 { &hf_tetra_call_ownership,
11261 { "call-ownership", "tetra.call_ownership",
11262 FT_UINT32, BASE_DEC, NULL, 0,
11263 "INTEGER_0_1", HFILL }},
11264 { &hf_tetra_optional_elements_19,
11265 { "optional-elements", "tetra.optional_elements",
11266 FT_UINT32, BASE_DEC, VALS(tetra_T_optional_elements_19_vals), 0,
11267 "T_optional_elements_19", HFILL }},
11268 { &hf_tetra_type2_parameters_15,
11269 { "type2-parameters", "tetra.type2_parameters",
11270 FT_NONE, BASE_NONE, NULL, 0,
11271 "T_type2_parameters_15", HFILL }},
11272 { &hf_tetra_call_priority_01,
11273 { "call-priority", "tetra.call_priority",
11274 FT_UINT32, BASE_DEC, VALS(tetra_T_call_priority_vals), 0,
11276 { &hf_tetra_basic_service_information_04,
11277 { "basic-service-information", "tetra.basic_service_information",
11278 FT_UINT32, BASE_DEC, VALS(tetra_T_basic_service_information_03_vals), 0,
11279 "T_basic_service_information_03", HFILL }},
11280 { &hf_tetra_temporary_address,
11281 { "temporary-address", "tetra.temporary_address",
11282 FT_UINT32, BASE_DEC, VALS(tetra_T_temporary_address_vals), 0,
11284 { &hf_tetra_temporary_address_01,
11285 { "temporary-address", "tetra.temporary_address",
11286 FT_UINT32, BASE_DEC, VALS(tetra_Calling_party_address_type_vals), 0,
11287 "Calling_party_address_type", HFILL }},
11288 { &hf_tetra_notification_indicator_03,
11289 { "notification-indicator", "tetra.notification_indicator",
11290 FT_UINT32, BASE_DEC, VALS(tetra_T_notification_indicator_02_vals), 0,
11291 "T_notification_indicator_02", HFILL }},
11292 { &hf_tetra_prop_11,
11293 { "prop", "tetra.prop",
11294 FT_UINT32, BASE_DEC, VALS(tetra_T_prop_10_vals), 0,
11295 "T_prop_10", HFILL }},
11296 { &hf_tetra_optional_elements_20,
11297 { "optional-elements", "tetra.optional_elements",
11298 FT_UINT32, BASE_DEC, VALS(tetra_T_optional_elements_20_vals), 0,
11299 "T_optional_elements_20", HFILL }},
11300 { &hf_tetra_type2_parameters_16,
11301 { "type2-parameters", "tetra.type2_parameters",
11302 FT_NONE, BASE_NONE, NULL, 0,
11303 "T_type2_parameters_16", HFILL }},
11304 { &hf_tetra_notification_indicator_04,
11305 { "notification-indicator", "tetra.notification_indicator",
11306 FT_UINT32, BASE_DEC, VALS(tetra_T_notification_indicator_03_vals), 0,
11307 "T_notification_indicator_03", HFILL }},
11308 { &hf_tetra_prop_12,
11309 { "prop", "tetra.prop",
11310 FT_UINT32, BASE_DEC, VALS(tetra_T_prop_11_vals), 0,
11311 "T_prop_11", HFILL }},
11312 { &hf_tetra_optional_elements_21,
11313 { "optional-elements", "tetra.optional_elements",
11314 FT_UINT32, BASE_DEC, VALS(tetra_T_optional_elements_21_vals), 0,
11315 "T_optional_elements_21", HFILL }},
11316 { &hf_tetra_type2_parameters_17,
11317 { "type2-parameters", "tetra.type2_parameters",
11318 FT_NONE, BASE_NONE, NULL, 0,
11319 "T_type2_parameters_17", HFILL }},
11320 { &hf_tetra_notification_indicator_05,
11321 { "notification-indicator", "tetra.notification_indicator",
11322 FT_UINT32, BASE_DEC, VALS(tetra_T_notification_indicator_04_vals), 0,
11323 "T_notification_indicator_04", HFILL }},
11324 { &hf_tetra_prop_13,
11325 { "prop", "tetra.prop",
11326 FT_UINT32, BASE_DEC, VALS(tetra_T_prop_12_vals), 0,
11327 "T_prop_12", HFILL }},
11328 { &hf_tetra_reset_call_time_out,
11329 { "reset-call-time-out", "tetra.reset_call_time_out",
11330 FT_UINT32, BASE_DEC, NULL, 0,
11331 "INTEGER_0_1", HFILL }},
11332 { &hf_tetra_optional_elements_22,
11333 { "optional-elements", "tetra.optional_elements",
11334 FT_UINT32, BASE_DEC, VALS(tetra_T_optional_elements_22_vals), 0,
11335 "T_optional_elements_22", HFILL }},
11336 { &hf_tetra_type2_parameters_18,
11337 { "type2-parameters", "tetra.type2_parameters",
11338 FT_NONE, BASE_NONE, NULL, 0,
11339 "T_type2_parameters_18", HFILL }},
11340 { &hf_tetra_new_call_identifier,
11341 { "new-call-identifier", "tetra.new_call_identifier",
11342 FT_UINT32, BASE_DEC, VALS(tetra_T_new_call_identifier_vals), 0,
11344 { &hf_tetra_new_call_identifier_01,
11345 { "new-call-identifier", "tetra.new_call_identifier",
11346 FT_UINT32, BASE_DEC, NULL, 0,
11347 "INTEGER_0_1023", HFILL }},
11348 { &hf_tetra_call_time_out_02,
11349 { "call-time-out", "tetra.call_time_out",
11350 FT_UINT32, BASE_DEC, VALS(tetra_T_call_time_out_vals), 0,
11352 { &hf_tetra_call_time_out_03,
11353 { "call-time-out", "tetra.call_time_out",
11354 FT_UINT32, BASE_DEC, NULL, 0,
11355 "INTEGER_0_7", HFILL }},
11356 { &hf_tetra_call_status_02,
11357 { "call-status", "tetra.call_status",
11358 FT_UINT32, BASE_DEC, VALS(tetra_T_call_status_01_vals), 0,
11359 "T_call_status_01", HFILL }},
11360 { &hf_tetra_modify,
11361 { "modify", "tetra.modify",
11362 FT_UINT32, BASE_DEC, VALS(tetra_T_modify_vals), 0,
11364 { &hf_tetra_modify_01,
11365 { "modify", "tetra.modify",
11366 FT_NONE, BASE_NONE, NULL, 0,
11367 "Modify_type", HFILL }},
11368 { &hf_tetra_notification_indicator_06,
11369 { "notification-indicator", "tetra.notification_indicator",
11370 FT_UINT32, BASE_DEC, VALS(tetra_T_notification_indicator_05_vals), 0,
11371 "T_notification_indicator_05", HFILL }},
11372 { &hf_tetra_prop_14,
11373 { "prop", "tetra.prop",
11374 FT_UINT32, BASE_DEC, VALS(tetra_T_prop_13_vals), 0,
11375 "T_prop_13", HFILL }},
11376 { &hf_tetra_optional_elements_23,
11377 { "optional-elements", "tetra.optional_elements",
11378 FT_UINT32, BASE_DEC, VALS(tetra_T_optional_elements_23_vals), 0,
11379 "T_optional_elements_23", HFILL }},
11380 { &hf_tetra_type2_parameters_19,
11381 { "type2-parameters", "tetra.type2_parameters",
11382 FT_NONE, BASE_NONE, NULL, 0,
11383 "T_type2_parameters_19", HFILL }},
11384 { &hf_tetra_notification_indicator_07,
11385 { "notification-indicator", "tetra.notification_indicator",
11386 FT_UINT32, BASE_DEC, VALS(tetra_T_notification_indicator_06_vals), 0,
11387 "T_notification_indicator_06", HFILL }},
11388 { &hf_tetra_prop_15,
11389 { "prop", "tetra.prop",
11390 FT_UINT32, BASE_DEC, VALS(tetra_T_prop_14_vals), 0,
11391 "T_prop_14", HFILL }},
11392 { &hf_tetra_group_identity_ack_request,
11393 { "group-identity-ack-request", "tetra.group_identity_ack_request",
11394 FT_BOOLEAN, BASE_NONE, NULL, 0,
11395 "BOOLEAN", HFILL }},
11396 { &hf_tetra_optional_elements_24,
11397 { "optional-elements", "tetra.optional_elements",
11398 FT_UINT32, BASE_DEC, VALS(tetra_T_optional_elements_24_vals), 0,
11399 "T_optional_elements_24", HFILL }},
11400 { &hf_tetra_type2_element_02,
11401 { "type2-element", "tetra.type2_element",
11402 FT_NONE, BASE_NONE, NULL, 0,
11403 "T_type2_element_02", HFILL }},
11404 { &hf_tetra_type3_04,
11405 { "type3", "tetra.type3",
11406 FT_UINT32, BASE_DEC, VALS(tetra_T_type3_04_vals), 0,
11407 "T_type3_04", HFILL }},
11408 { &hf_tetra_type3_elements_04,
11409 { "type3-elements", "tetra.type3_elements",
11410 FT_NONE, BASE_NONE, NULL, 0,
11411 "T_type3_elements_04", HFILL }},
11412 { &hf_tetra_group_identity_downlink_02,
11413 { "group-identity-downlink", "tetra.group_identity_downlink",
11414 FT_NONE, BASE_NONE, NULL, 0,
11416 { &hf_tetra_group_identity_attach_detach_accept,
11417 { "group-identity-attach-detach-accept", "tetra.group_identity_attach_detach_accept",
11418 FT_BOOLEAN, BASE_NONE, NULL, 0,
11419 "BOOLEAN", HFILL }},
11420 { &hf_tetra_optional_elements_25,
11421 { "optional-elements", "tetra.optional_elements",
11422 FT_UINT32, BASE_DEC, VALS(tetra_T_optional_elements_25_vals), 0,
11423 "T_optional_elements_25", HFILL }},
11424 { &hf_tetra_type2_element_03,
11425 { "type2-element", "tetra.type2_element",
11426 FT_NONE, BASE_NONE, NULL, 0,
11427 "T_type2_element_03", HFILL }},
11428 { &hf_tetra_type3_05,
11429 { "type3", "tetra.type3",
11430 FT_UINT32, BASE_DEC, VALS(tetra_T_type3_05_vals), 0,
11431 "T_type3_05", HFILL }},
11432 { &hf_tetra_type3_elements_05,
11433 { "type3-elements", "tetra.type3_elements",
11434 FT_NONE, BASE_NONE, NULL, 0,
11435 "T_type3_elements_05", HFILL }},
11436 { &hf_tetra_called_party_sna,
11437 { "called-party-sna", "tetra.called_party_sna",
11438 FT_UINT32, BASE_DEC, NULL, 0,
11439 "INTEGER_0_255", HFILL }},
11440 { &hf_tetra_called_party_ssi,
11441 { "called-party-ssi", "tetra.called_party_ssi",
11442 FT_UINT32, BASE_DEC, NULL, 0,
11443 "INTEGER_0_16777215", HFILL }},
11444 { &hf_tetra_called_party_ssi_extention,
11445 { "called-party-ssi-extention", "tetra.called_party_ssi_extention",
11446 FT_NONE, BASE_NONE, NULL, 0,
11448 { &hf_tetra_called_party_extention,
11449 { "called-party-extention", "tetra.called_party_extention",
11450 FT_UINT32, BASE_DEC, NULL, 0,
11451 "INTEGER_0_16777215", HFILL }},
11452 { &hf_tetra_data_01,
11453 { "data", "tetra.data",
11454 FT_UINT32, BASE_DEC, VALS(tetra_T_data_01_vals), 0,
11455 "T_data_01", HFILL }},
11456 { &hf_tetra_element1,
11457 { "element1", "tetra.element1",
11458 FT_NONE, BASE_NONE, NULL, 0,
11460 { &hf_tetra_element,
11461 { "element", "tetra.element",
11462 FT_NONE, BASE_NONE, NULL, 0,
11464 { &hf_tetra_proprietary_element_owner,
11465 { "proprietary-element-owner", "tetra.proprietary_element_owner",
11466 FT_UINT32, BASE_DEC, NULL, 0,
11468 { &hf_tetra_proprietary_element_owner_extension,
11469 { "proprietary-element-owner-extension", "tetra.proprietary_element_owner_extension",
11470 FT_BYTES, BASE_NONE, NULL, 0,
11471 "BIT_STRING", HFILL }},
11472 { &hf_tetra_simplex_duplex_selection_06,
11473 { "simplex-duplex-selection", "tetra.simplex_duplex_selection",
11474 FT_UINT32, BASE_DEC, VALS(tetra_T_simplex_duplex_selection_05_vals), 0,
11475 "T_simplex_duplex_selection_05", HFILL }},
11477 /*--- End of included file: packet-tetra-hfarr.c ---*/
11478 #line 612 "../../asn1/tetra/packet-tetra-template.c"
11481 /* List of subtrees */
11482 static gint *ett[] = {
11489 /*--- Included file: packet-tetra-ettarr.c ---*/
11490 #line 1 "../../asn1/tetra/packet-tetra-ettarr.c"
11493 &ett_tetra_MLE_Sync,
11495 &ett_tetra_T_hyperframe_or_cck,
11496 &ett_tetra_T_optional_params,
11497 &ett_tetra_TS_COMMON_FRAMES,
11498 &ett_tetra_Default_Code_A,
11499 &ett_tetra_Extended_Services_Broadcast,
11500 &ett_tetra_T_section,
11501 &ett_tetra_PRESENT1,
11502 &ett_tetra_MAC_ACCESS,
11504 &ett_tetra_Address,
11505 &ett_tetra_U_LLC_PDU,
11506 &ett_tetra_U_BL_ACK_FCS,
11507 &ett_tetra_U_MLE_PDU_FCS,
11508 &ett_tetra_U_BL_DATA_FCS,
11509 &ett_tetra_U_BL_ADATA_FCS,
11510 &ett_tetra_U_MLE_PDU,
11511 &ett_tetra_ComplexSDU,
11512 &ett_tetra_T_lengthIndicationOrCapacityRequest,
11514 &ett_tetra_MAC_FRAG,
11515 &ett_tetra_MAC_FRAG120,
11516 &ett_tetra_MAC_END_UPLINK,
11517 &ett_tetra_MAC_END_UP114,
11518 &ett_tetra_MAC_END_HU,
11519 &ett_tetra_T_lengthInd_ReservationReq,
11520 &ett_tetra_MAC_END_DOWNLINK,
11521 &ett_tetra_T_slot_granting,
11522 &ett_tetra_T_channel_allocation,
11523 &ett_tetra_SlotGranting,
11524 &ett_tetra_ChannelAllocation,
11525 &ett_tetra_T_extend_carrier_flag,
11526 &ett_tetra_T_monitoring_pattern,
11527 &ett_tetra_Extended_carrier_flag,
11528 &ett_tetra_MAC_END_DOWN111,
11529 &ett_tetra_T_slot_granting_01,
11530 &ett_tetra_T_channel_allocation_01,
11531 &ett_tetra_MAC_RESOURCE,
11532 &ett_tetra_OTHER_DATA,
11533 &ett_tetra_T_power_control,
11534 &ett_tetra_T_slot_granting_02,
11535 &ett_tetra_T_channel_allocation_02,
11536 &ett_tetra_AddressMacResource,
11537 &ett_tetra_SSI_NEED,
11538 &ett_tetra_EVENT_NEED,
11539 &ett_tetra_USSI_NEED,
11540 &ett_tetra_SMI_NEED,
11541 &ett_tetra_SSI_EVENT_NEED,
11542 &ett_tetra_SSI_USAGE_NEED,
11543 &ett_tetra_SMI_EVENT_NEED,
11544 &ett_tetra_MAC_ACCESS_DEFINE,
11545 &ett_tetra_T_optional_field,
11546 &ett_tetra_D_LLC_PDU,
11547 &ett_tetra_D_BL_ACK_FCS,
11548 &ett_tetra_D_MLE_PDU_FCS,
11549 &ett_tetra_D_BL_ADATA_FCS,
11550 &ett_tetra_D_BL_DATA_FCS,
11551 &ett_tetra_U_BL_ACK,
11552 &ett_tetra_D_BL_ACK,
11553 &ett_tetra_U_BL_DATA,
11554 &ett_tetra_D_BL_DATA,
11555 &ett_tetra_U_BL_ADATA,
11556 &ett_tetra_D_BL_ADATA,
11557 &ett_tetra_D_MLE_PDU,
11558 &ett_tetra_UMLE_PDU,
11559 &ett_tetra_DMLE_PDU,
11560 &ett_tetra_U_PREPARE,
11561 &ett_tetra_T_optional_elements,
11562 &ett_tetra_T_type2_parameters,
11563 &ett_tetra_T_cell_number,
11564 &ett_tetra_U_RESTORE,
11565 &ett_tetra_T_optional_elements_01,
11566 &ett_tetra_T_type2_parameters_01,
11570 &ett_tetra_D_NEW_CELL,
11571 &ett_tetra_T_optional_elements_02,
11572 &ett_tetra_D_PREPARE_FAIL,
11573 &ett_tetra_T_optional_elements_03,
11574 &ett_tetra_D_NWRK_BRDADCAST,
11575 &ett_tetra_T_optional_elements_04,
11576 &ett_tetra_T_type2_parameters_02,
11577 &ett_tetra_T_tetra_network_time,
11578 &ett_tetra_T_number_of_neighbour_cells,
11579 &ett_tetra_TETRA_NETWORK_TIME,
11580 &ett_tetra_D_RESTORE_ACK,
11581 &ett_tetra_D_RESTORE_FAIL,
11582 &ett_tetra_U_MM_PDU,
11583 &ett_tetra_D_MM_PDU,
11584 &ett_tetra_GROUP_IDENTITY_DOWNLINK,
11585 &ett_tetra_T_attach_detach_identifiet,
11586 &ett_tetra_T_attach,
11587 &ett_tetra_T_detach,
11588 &ett_tetra_T_address_type,
11589 &ett_tetra_T_gssi_extension,
11590 &ett_tetra_GROUP_IDENTITY_UPLINK,
11591 &ett_tetra_T_attach_detach_identifiet_01,
11592 &ett_tetra_T_attach_01,
11593 &ett_tetra_T_detach_01,
11594 &ett_tetra_T_address_type_01,
11595 &ett_tetra_T_gssi_extension_01,
11596 &ett_tetra_D_LOCATION_UPDATE_ACCEPT,
11597 &ett_tetra_T_optional_elements_05,
11598 &ett_tetra_T_type2_parameters_03,
11600 &ett_tetra_T_address_extension,
11601 &ett_tetra_T_suscriber_class,
11602 &ett_tetra_T_energy_saving_mode,
11603 &ett_tetra_T_scch_info,
11604 &ett_tetra_T_type3,
11605 &ett_tetra_T_type3_elements,
11606 &ett_tetra_T_new_ra,
11607 &ett_tetra_T_group_identity_location_accept,
11608 &ett_tetra_T_group_predefined_lifetime,
11609 &ett_tetra_T_group_identity_downlink,
11610 &ett_tetra_T_proprietary,
11611 &ett_tetra_D_LOCATION_UPDATE_REJECT,
11612 &ett_tetra_U_MM_STATUS,
11613 &ett_tetra_D_MM_STATUS,
11614 &ett_tetra_U_CMCE_PDU,
11615 &ett_tetra_U_RELEASE,
11616 &ett_tetra_U_SDS_DATA,
11617 &ett_tetra_T_called_party_type_identifier,
11618 &ett_tetra_T_short_data_type_identifier,
11619 &ett_tetra_U_STATUS,
11620 &ett_tetra_T_called_party_type_identifier_01,
11622 &ett_tetra_D_CMCE_PDU,
11623 &ett_tetra_D_SDS_DATA,
11624 &ett_tetra_T_calling_party_type_identifier,
11625 &ett_tetra_T_short_data_type_identifier_01,
11626 &ett_tetra_D_STATUS,
11627 &ett_tetra_T_calling_party_type_identifier_01,
11628 &ett_tetra_D_DISCONNECT,
11630 &ett_tetra_D_TX_WAIT,
11631 &ett_tetra_D_TX_CONTINUE,
11632 &ett_tetra_U_LOCATION_UPDATE_DEMAND,
11633 &ett_tetra_T_cipher_control,
11634 &ett_tetra_T_optional_elements_06,
11635 &ett_tetra_T_type2_parameters_04,
11636 &ett_tetra_T_energy_saving_mode_01,
11637 &ett_tetra_T_la_information,
11638 &ett_tetra_T_ssi_01,
11639 &ett_tetra_T_address_extension_01,
11640 &ett_tetra_T_type3_01,
11641 &ett_tetra_T_type3_elements_01,
11642 &ett_tetra_T_group_identity_location_demand,
11643 &ett_tetra_T_group_report_response,
11644 &ett_tetra_T_group_identity_uplink,
11645 &ett_tetra_T_proprietary_01,
11646 &ett_tetra_U_ATTACH_DETACH_GROUP_IDENTITY,
11647 &ett_tetra_T_optional_elements_07,
11648 &ett_tetra_T_type2_element,
11649 &ett_tetra_T_type3_02,
11650 &ett_tetra_T_type3_elements_02,
11651 &ett_tetra_U_ATTACH_DETACH_GROUP_IDENTITY_ACK,
11652 &ett_tetra_T_optional_elements_08,
11653 &ett_tetra_T_type2_element_01,
11654 &ett_tetra_T_type3_03,
11655 &ett_tetra_T_type3_elements_03,
11656 &ett_tetra_U_SETUP,
11657 &ett_tetra_T_optional_elements_09,
11658 &ett_tetra_T_type2_parameters_05,
11659 &ett_tetra_T_external_subscriber_number,
11661 &ett_tetra_Basic_service_information,
11662 &ett_tetra_U_ALERT,
11663 &ett_tetra_T_optional_elements_10,
11664 &ett_tetra_T_type2_parameters_06,
11665 &ett_tetra_T_basic_service_information,
11666 &ett_tetra_T_prop_01,
11667 &ett_tetra_U_CONNECT,
11668 &ett_tetra_T_optional_elements_11,
11669 &ett_tetra_T_type2_parameters_07,
11670 &ett_tetra_T_basic_service_information_01,
11671 &ett_tetra_T_prop_02,
11672 &ett_tetra_U_TX_CEASED,
11673 &ett_tetra_T_optional_elements_12,
11674 &ett_tetra_T_type2_parameters_08,
11675 &ett_tetra_T_prop_03,
11676 &ett_tetra_U_TX_DEMAND,
11677 &ett_tetra_T_optional_elements_13,
11678 &ett_tetra_T_type2_parameters_09,
11679 &ett_tetra_T_prop_04,
11680 &ett_tetra_U_DISCONNECT,
11681 &ett_tetra_T_optional_elements_14,
11682 &ett_tetra_T_type2_parameters_10,
11683 &ett_tetra_T_prop_05,
11684 &ett_tetra_U_CALL_RESTORE,
11685 &ett_tetra_T_optional_elements_15,
11686 &ett_tetra_T_type2_parameters_11,
11687 &ett_tetra_T_prop_06,
11688 &ett_tetra_D_SETUP,
11689 &ett_tetra_T_optional_elements_16,
11690 &ett_tetra_T_type2_parameters_12,
11691 &ett_tetra_T_calling_party_address,
11692 &ett_tetra_T_external_subscriber_number_01,
11693 &ett_tetra_T_prop_07,
11694 &ett_tetra_D_CALL_PROCEEDING,
11695 &ett_tetra_T_optional_elements_17,
11696 &ett_tetra_T_type2_parameters_13,
11697 &ett_tetra_T_basic_service_information_02,
11698 &ett_tetra_T_call_status,
11699 &ett_tetra_T_notification_indicator,
11700 &ett_tetra_T_prop_08,
11701 &ett_tetra_D_ALERT,
11702 &ett_tetra_T_optional_elements_18,
11703 &ett_tetra_T_type2_parameters_14,
11704 &ett_tetra_T_basic_service_infomation,
11705 &ett_tetra_T_notification_indicator_01,
11706 &ett_tetra_T_prop_09,
11707 &ett_tetra_D_CONNECT,
11708 &ett_tetra_T_optional_elements_19,
11709 &ett_tetra_T_type2_parameters_15,
11710 &ett_tetra_T_call_priority,
11711 &ett_tetra_T_basic_service_information_03,
11712 &ett_tetra_T_temporary_address,
11713 &ett_tetra_T_notification_indicator_02,
11714 &ett_tetra_T_prop_10,
11715 &ett_tetra_D_CONNECT_ACK,
11716 &ett_tetra_T_optional_elements_20,
11717 &ett_tetra_T_type2_parameters_16,
11718 &ett_tetra_T_notification_indicator_03,
11719 &ett_tetra_T_prop_11,
11720 &ett_tetra_D_RELEASE,
11721 &ett_tetra_T_optional_elements_21,
11722 &ett_tetra_T_type2_parameters_17,
11723 &ett_tetra_T_notification_indicator_04,
11724 &ett_tetra_T_prop_12,
11725 &ett_tetra_D_CALL_RESTORE,
11726 &ett_tetra_T_optional_elements_22,
11727 &ett_tetra_T_type2_parameters_18,
11728 &ett_tetra_T_new_call_identifier,
11729 &ett_tetra_T_call_time_out,
11730 &ett_tetra_T_call_status_01,
11731 &ett_tetra_T_modify,
11732 &ett_tetra_T_notification_indicator_05,
11733 &ett_tetra_T_prop_13,
11734 &ett_tetra_D_TX_CEASED,
11735 &ett_tetra_T_optional_elements_23,
11736 &ett_tetra_T_type2_parameters_19,
11737 &ett_tetra_T_notification_indicator_06,
11738 &ett_tetra_T_prop_14,
11739 &ett_tetra_D_TX_GRANTED,
11740 &ett_tetra_D_ATTACH_DETACH_GROUP_IDENTITY,
11741 &ett_tetra_T_optional_elements_24,
11742 &ett_tetra_T_type2_element_02,
11743 &ett_tetra_T_type3_04,
11744 &ett_tetra_T_type3_elements_04,
11745 &ett_tetra_D_ATTACH_DETACH_GROUP_IDENTITY_ACK,
11746 &ett_tetra_T_optional_elements_25,
11747 &ett_tetra_T_type2_element_03,
11748 &ett_tetra_T_type3_05,
11749 &ett_tetra_T_type3_elements_05,
11750 &ett_tetra_Calling_party_address_type,
11751 &ett_tetra_T_called_party_ssi_extention,
11752 &ett_tetra_Proprietary,
11753 &ett_tetra_T_data_01,
11756 &ett_tetra_Modify_type,
11758 /*--- End of included file: packet-tetra-ettarr.c ---*/
11759 #line 622 "../../asn1/tetra/packet-tetra-template.c"
11762 /* execute protocol initialization only once */
11763 if (proto_tetra != -1)
11766 proto_tetra = proto_register_protocol("TETRA Protocol", "tetra", "tetra");
11767 proto_register_field_array (proto_tetra, hf, array_length (hf));
11768 proto_register_subtree_array (ett, array_length (ett));
11769 register_dissector("tetra", dissect_tetra, proto_tetra);
11771 per_module = prefs_register_protocol(proto_tetra, NULL);
11772 prefs_register_bool_preference(per_module, "include_carrier_number",
11773 "The data include carrier numbers",
11774 "Whether the captured data include carrier number",
11775 &include_carrier_number);