1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
4 /* asn2wrs.py -u -q -L -p tetra -c ./tetra.cnf -s ./packet-tetra-template -D . -O ../.. tetra.asn */
7 * Routines for TETRA packet dissection
9 * Copyright (c) 2007 - 2011 Professional Mobile Communication Research Group,
10 * Beijing Institute of Technology, China
11 * Copyright (c) 2011 Holger Hans Peter Freyther
13 * Wireshark - Network traffic analyzer
14 * By Gerald Combs <gerald@wireshark.org>
15 * Copyright 1998 Gerald Combs
17 * SPDX-License-Identifier: GPL-2.0-or-later
19 * REF: ETSI EN 300 392-2 V3.2.1
24 #include <epan/packet.h>
25 #include <epan/expert.h>
26 #include <epan/prefs.h>
27 #include <epan/oids.h>
28 #include <epan/conversation.h>
29 #include <epan/asn1.h>
30 #include <wsutil/array.h>
32 #include "packet-per.h"
33 #include "packet-tetra.h"
35 #define PROTO_TAG_tetra "TETRA"
37 void proto_register_tetra(void);
38 void proto_reg_handoff_tetra(void);
40 /* Wireshark ID of the tetra protocol */
41 static int proto_tetra
;
43 static dissector_handle_t tetra_handle
;
45 #define TETRA_UDP_PORT 7074 /* Not IANA assigned */
47 /* Whether the capture data include carrier numbers */
48 static bool include_carrier_number
= true;
50 /* The following hf_* variables are used to hold the Wireshark IDs of
51 * our header fields; they are filled out when we call
52 * proto_register_field_array() in proto_register_tetra()
54 /** Kts attempt at defining the protocol */
56 static int hf_tetra_header
;
57 static int hf_tetra_channels
;
58 static int hf_tetra_channel1
;
59 static int hf_tetra_channel2
;
60 static int hf_tetra_channel3
;
61 static int hf_tetra_txreg
;
62 static int hf_tetra_timer
;
63 static int hf_tetra_pdu
;
64 static int hf_tetra_rvstr
;
65 static int hf_tetra_carriernumber
;
66 static int hf_tetra_rxchannel1
;
67 static int hf_tetra_rxchannel2
;
68 static int hf_tetra_rxchannel3
;
69 static int hf_tetra_crc
;
70 static int hf_tetra_len0
;
72 static int hf_tetra_AACH_PDU
; /* AACH */
73 static int hf_tetra_BSCH_PDU
; /* BSCH */
74 static int hf_tetra_BNCH_PDU
; /* BNCH */
75 static int hf_tetra_MAC_ACCESS_PDU
; /* MAC_ACCESS */
76 static int hf_tetra_MAC_DATA_PDU
; /* MAC_DATA */
77 static int hf_tetra_MAC_FRAG_PDU
; /* MAC_FRAG */
78 static int hf_tetra_MAC_FRAG120_PDU
; /* MAC_FRAG120 */
79 static int hf_tetra_MAC_END_UPLINK_PDU
; /* MAC_END_UPLINK */
80 static int hf_tetra_MAC_END_UP114_PDU
; /* MAC_END_UP114 */
81 static int hf_tetra_MAC_END_HU_PDU
; /* MAC_END_HU */
82 static int hf_tetra_MAC_END_DOWNLINK_PDU
; /* MAC_END_DOWNLINK */
83 static int hf_tetra_MAC_END_DOWN111_PDU
; /* MAC_END_DOWN111 */
84 static int hf_tetra_MAC_RESOURCE_PDU
; /* MAC_RESOURCE */
85 static int hf_tetra_MAC_ACCESS_DEFINE_PDU
; /* MAC_ACCESS_DEFINE */
86 static int hf_tetra_function
; /* INTEGER_0_3 */
87 static int hf_tetra_field1
; /* INTEGER_0_63 */
88 static int hf_tetra_field2
; /* INTEGER_0_63 */
89 static int hf_tetra_system_code
; /* System_Code */
90 static int hf_tetra_colour_code
; /* Colour_Code */
91 static int hf_tetra_timeslot_number
; /* Timeslot_Number */
92 static int hf_tetra_frame_number
; /* Frame_Number */
93 static int hf_tetra_multiple_frame_number
; /* Multiple_Frame_Number */
94 static int hf_tetra_sharing_mod
; /* Sharing_Mod */
95 static int hf_tetra_ts_reserved_frames
; /* TS_Reserved_Frames */
96 static int hf_tetra_u_plane_dtx
; /* U_Plane_DTX */
97 static int hf_tetra_frame_18_extension
; /* Frame_18_Extension */
98 static int hf_tetra_reserved
; /* Reserved */
99 static int hf_tetra_tm_sdu
; /* MLE_Sync */
100 static int hf_tetra_mcc
; /* INTEGER_0_1023 */
101 static int hf_tetra_mnc
; /* INTEGER_0_16383 */
102 static int hf_tetra_neighbour_cell_broadcast
; /* INTEGER_0_3 */
103 static int hf_tetra_cell_service_level
; /* INTEGER_0_3 */
104 static int hf_tetra_late_entry_information
; /* INTEGER_0_1 */
105 static int hf_tetra_pdu_type
; /* INTEGER_0_3 */
106 static int hf_tetra_broadcast_type
; /* INTEGER_0_3 */
107 static int hf_tetra_main_carrier
; /* INTEGER_0_4095 */
108 static int hf_tetra_frequency_band
; /* INTEGER_0_15 */
109 static int hf_tetra_offset
; /* Offset */
110 static int hf_tetra_duplex_spacing
; /* INTEGER_0_7 */
111 static int hf_tetra_reverse_operation
; /* Reverse_Operation */
112 static int hf_tetra_sencond_ctl_carrier
; /* Sencond_Ctl_Carrier */
113 static int hf_tetra_ms_txpwr_max_cell
; /* MS_TXPWR_MAX_CELL */
114 static int hf_tetra_rxlev_access_min
; /* RXLEV_ACCESS_MIN */
115 static int hf_tetra_access_parameter
; /* ACCESS_PARAMETER */
116 static int hf_tetra_radio_downlink_timeout
; /* RADIO_DOWNLINK_TIMEOUT */
117 static int hf_tetra_hyperframe_or_cck
; /* T_hyperframe_or_cck */
118 static int hf_tetra_hyperframe
; /* INTEGER_0_65535 */
119 static int hf_tetra_cckid
; /* INTEGER_0_65535 */
120 static int hf_tetra_optional_params
; /* T_optional_params */
121 static int hf_tetra_even_multiframe
; /* TS_COMMON_FRAMES */
122 static int hf_tetra_odd_multiframe
; /* TS_COMMON_FRAMES */
123 static int hf_tetra_access_a_code
; /* Default_Code_A */
124 static int hf_tetra_extend_service
; /* Extended_Services_Broadcast */
125 static int hf_tetra_la
; /* INTEGER_0_16383 */
126 static int hf_tetra_subscriber_class
; /* Subscriber_class */
127 static int hf_tetra_registriation
; /* INTEGER_0_1 */
128 static int hf_tetra_de_registration
; /* INTEGER_0_1 */
129 static int hf_tetra_priority_cell
; /* INTEGER_0_1 */
130 static int hf_tetra_minimum_mode_service
; /* INTEGER_0_1 */
131 static int hf_tetra_migration
; /* INTEGER_0_1 */
132 static int hf_tetra_system_wide_service
; /* INTEGER_0_1 */
133 static int hf_tetra_tetra_voice_service
; /* INTEGER_0_1 */
134 static int hf_tetra_circuit_mode_data_service
; /* INTEGER_0_1 */
135 static int hf_tetra_reserved_01
; /* INTEGER_0_1 */
136 static int hf_tetra_sndcp_service
; /* INTEGER_0_1 */
137 static int hf_tetra_air_interface_encryption
; /* INTEGER_0_1 */
138 static int hf_tetra_advanced_link_support
; /* INTEGER_0_1 */
139 static int hf_tetra_frame1
; /* FRAME */
140 static int hf_tetra_frame2
; /* FRAME */
141 static int hf_tetra_frame3
; /* FRAME */
142 static int hf_tetra_frame4
; /* FRAME */
143 static int hf_tetra_frame5
; /* FRAME */
144 static int hf_tetra_frame6
; /* FRAME */
145 static int hf_tetra_frame7
; /* FRAME */
146 static int hf_tetra_frame8
; /* FRAME */
147 static int hf_tetra_frame9
; /* FRAME */
148 static int hf_tetra_frame10
; /* FRAME */
149 static int hf_tetra_frame11
; /* FRAME */
150 static int hf_tetra_frame12
; /* FRAME */
151 static int hf_tetra_frame13
; /* FRAME */
152 static int hf_tetra_frame14
; /* FRAME */
153 static int hf_tetra_frame15
; /* FRAME */
154 static int hf_tetra_frame16
; /* FRAME */
155 static int hf_tetra_frame17
; /* FRAME */
156 static int hf_tetra_frame18
; /* FRAME */
157 static int hf_tetra_imm
; /* IMM */
158 static int hf_tetra_wt
; /* WT */
159 static int hf_tetra_nu
; /* NU */
160 static int hf_tetra_frame_len_factor
; /* Frame_Len_Factor */
161 static int hf_tetra_timeslot_pointer
; /* Timeslot_Pointer */
162 static int hf_tetra_min_pdu_priority
; /* Min_Pdu_Priority */
163 static int hf_tetra_security_information
; /* INTEGER_0_255 */
164 static int hf_tetra_sds_tl_addressing_method
; /* SDS_TL_Addressing_Method */
165 static int hf_tetra_gck_supported
; /* INTEGER_0_1 */
166 static int hf_tetra_section
; /* T_section */
167 static int hf_tetra_present_1
; /* PRESENT1 */
168 static int hf_tetra_present_2
; /* INTEGER_0_127 */
169 static int hf_tetra_present_3
; /* INTEGER_0_127 */
170 static int hf_tetra_present_4
; /* INTEGER_0_127 */
171 static int hf_tetra_data_priority_supported
; /* Data_Priority_Supported */
172 static int hf_tetra_reserved_02
; /* INTEGER_0_7 */
173 static int hf_tetra_section_2_information
; /* Section_Information */
174 static int hf_tetra_section_3_information
; /* Section_Information */
175 static int hf_tetra_section_4_information
; /* Section_Information */
176 static int hf_tetra_pdu_type_01
; /* INTEGER_0_1 */
177 static int hf_tetra_fill_bit_indication
; /* Fill_Bit_Indication */
178 static int hf_tetra_encrypted_flag
; /* Encrypted_Flag */
179 static int hf_tetra_address
; /* Address */
180 static int hf_tetra_data
; /* T_data */
181 static int hf_tetra_sdu1
; /* U_LLC_PDU */
182 static int hf_tetra_sdu2
; /* ComplexSDU */
183 static int hf_tetra_ssi
; /* INTEGER_0_16777215 */
184 static int hf_tetra_eventLabel
; /* INTEGER_0_1023 */
185 static int hf_tetra_ussi
; /* INTEGER_0_16777215 */
186 static int hf_tetra_smi
; /* INTEGER_0_16777215 */
187 static int hf_tetra_bl_adata
; /* U_BL_ADATA */
188 static int hf_tetra_bl_data
; /* U_BL_DATA */
189 static int hf_tetra_bl_udata
; /* U_MLE_PDU */
190 static int hf_tetra_bl_ack
; /* U_BL_ACK */
191 static int hf_tetra_bl_adata_fcs
; /* U_BL_ADATA_FCS */
192 static int hf_tetra_bl_data_fcs
; /* U_BL_DATA_FCS */
193 static int hf_tetra_bl_udata_fcs
; /* U_MLE_PDU_FCS */
194 static int hf_tetra_bl_ack_fcs
; /* U_BL_ACK_FCS */
195 static int hf_tetra_al_setup
; /* NULL */
196 static int hf_tetra_al_data
; /* NULL */
197 static int hf_tetra_al_udata
; /* NULL */
198 static int hf_tetra_al_ack
; /* NULL */
199 static int hf_tetra_al_reconnect
; /* NULL */
200 static int hf_tetra_reserve1
; /* NULL */
201 static int hf_tetra_reserve2
; /* NULL */
202 static int hf_tetra_al_disc
; /* NULL */
203 static int hf_tetra_nr
; /* INTEGER_0_1 */
204 static int hf_tetra_tl_sdu
; /* U_MLE_PDU */
205 static int hf_tetra_fcs
; /* OCTET_STRING_SIZE_4 */
206 static int hf_tetra_u_mle_pdu
; /* U_MLE_PDU */
207 static int hf_tetra_ns
; /* INTEGER_0_1 */
208 static int hf_tetra_u_mle_reserved1
; /* NULL */
209 static int hf_tetra_mm
; /* U_MM_PDU */
210 static int hf_tetra_cmce
; /* U_CMCE_PDU */
211 static int hf_tetra_u_mle_reserved2
; /* NULL */
212 static int hf_tetra_sndcp
; /* NULL */
213 static int hf_tetra_mle
; /* UMLE_PDU */
214 static int hf_tetra_tetra_management_entity_protocol
; /* NULL */
215 static int hf_tetra_u_mle_reserved3
; /* NULL */
216 static int hf_tetra_lengthIndicationOrCapacityRequest
; /* T_lengthIndicationOrCapacityRequest */
217 static int hf_tetra_lengthIndication
; /* LengthIndication */
218 static int hf_tetra_capacityRequest
; /* FRAG */
219 static int hf_tetra_tm_sdu_01
; /* U_LLC_PDU */
220 static int hf_tetra_frag
; /* Frag1 */
221 static int hf_tetra_reservation_requirement
; /* SLOT_APPLY */
222 static int hf_tetra_lengthIndicationOrCapacityRequest_01
; /* T_lengthIndicationOrCapacityRequest_01 */
223 static int hf_tetra_lengthIndication_01
; /* LengthIndicationMacData */
224 static int hf_tetra_capacityRequest_01
; /* FRAG6 */
225 static int hf_tetra_sub_type
; /* INTEGER_0_1 */
226 static int hf_tetra_tm_sdu_02
; /* BIT_STRING_SIZE_264 */
227 static int hf_tetra_tm_sdu_03
; /* BIT_STRING_SIZE_120 */
228 static int hf_tetra_lengthInd_ReservationReq
; /* LengthIndOrReservationReq */
229 static int hf_tetra_tm_sdu_04
; /* BIT_STRING_SIZE_258 */
230 static int hf_tetra_pdu_subtype
; /* INTEGER_0_1 */
231 static int hf_tetra_tm_sdu_05
; /* BIT_STRING_SIZE_114 */
232 static int hf_tetra_lengthInd_ReservationReq_01
; /* T_lengthInd_ReservationReq */
233 static int hf_tetra_lengthInd
; /* LengthIndMacHu */
234 static int hf_tetra_tm_sdu_06
; /* BIT_STRING_SIZE_85 */
235 static int hf_tetra_position_of_grant
; /* Position_Of_Grant */
236 static int hf_tetra_lengthIndication_02
; /* LengthIndicationMacEndDl */
237 static int hf_tetra_slot_granting
; /* T_slot_granting */
238 static int hf_tetra_none
; /* NULL */
239 static int hf_tetra_slot_granting_param
; /* SlotGranting */
240 static int hf_tetra_channel_allocation
; /* T_channel_allocation */
241 static int hf_tetra_channel_allocation_element
; /* ChannelAllocation */
242 static int hf_tetra_tm_sdu_07
; /* BIT_STRING_SIZE_255 */
243 static int hf_tetra_capacity_allocation
; /* Capacity_Allocation */
244 static int hf_tetra_granting_delay
; /* Granting_delay */
245 static int hf_tetra_allocation_type
; /* T_allocation_type */
246 static int hf_tetra_timeslot_assigned
; /* Timeslot_Assigned */
247 static int hf_tetra_up_down_assigned
; /* T_up_down_assigned */
248 static int hf_tetra_clch_permission
; /* CLCH_permission */
249 static int hf_tetra_cell_change
; /* Cell_change_flag */
250 static int hf_tetra_carrier_number
; /* INTEGER_0_4095 */
251 static int hf_tetra_extend_carrier_flag
; /* T_extend_carrier_flag */
252 static int hf_tetra_extended
; /* Extended_carrier_flag */
253 static int hf_tetra_monitoring_pattern
; /* T_monitoring_pattern */
254 static int hf_tetra_one
; /* Monitoring_pattern */
255 static int hf_tetra_none1
; /* NULL */
256 static int hf_tetra_none2
; /* NULL */
257 static int hf_tetra_none3
; /* NULL */
258 static int hf_tetra_offset_01
; /* INTEGER_0_3 */
259 static int hf_tetra_reverse_operation_01
; /* T_reverse_operation */
260 static int hf_tetra_pdu_type_02
; /* INTEGER_0_7 */
261 static int hf_tetra_fill_bit_ind
; /* BOOLEAN */
262 static int hf_tetra_position_of_grant_01
; /* INTEGER_0_1 */
263 static int hf_tetra_slot_granting_01
; /* T_slot_granting_01 */
264 static int hf_tetra_channel_allocation_01
; /* T_channel_allocation_01 */
265 static int hf_tetra_tm_sdu_08
; /* BIT_STRING_SIZE_111 */
266 static int hf_tetra_encryption_mode
; /* INTEGER_0_3 */
267 static int hf_tetra_access_ack
; /* T_access_ack */
268 static int hf_tetra_lengthIndication_03
; /* LengthIndicationMacResource */
269 static int hf_tetra_address_01
; /* AddressMacResource */
270 static int hf_tetra_power_control
; /* T_power_control */
271 static int hf_tetra_powerParameters
; /* PowerControl */
272 static int hf_tetra_slot_granting_02
; /* T_slot_granting_02 */
273 static int hf_tetra_channel_allocation_02
; /* T_channel_allocation_02 */
274 static int hf_tetra_tm_sdu_09
; /* D_LLC_PDU */
275 static int hf_tetra_null_pdu
; /* NULL */
276 static int hf_tetra_ssi_01
; /* SSI_NEED */
277 static int hf_tetra_eventLabel_01
; /* EVENT_NEED */
278 static int hf_tetra_ussi_01
; /* USSI_NEED */
279 static int hf_tetra_smi_01
; /* SMI_NEED */
280 static int hf_tetra_ssi_eventLabel
; /* SSI_EVENT_NEED */
281 static int hf_tetra_ssi_usage_maker
; /* SSI_USAGE_NEED */
282 static int hf_tetra_smi_eventLabel
; /* SMI_EVENT_NEED */
283 static int hf_tetra_other
; /* OTHER_DATA */
284 static int hf_tetra_eventlabel
; /* INTEGER_0_1023 */
285 static int hf_tetra_ventlabel
; /* INTEGER_0_1023 */
286 static int hf_tetra_usage_maker
; /* INTEGER_0_63 */
287 static int hf_tetra_smi_eventlabel
; /* BIT_STRING_SIZE_34 */
288 static int hf_tetra_broadcast_channel
; /* INTEGER_0_1 */
289 static int hf_tetra_access_code
; /* INTEGER_0_3 */
290 static int hf_tetra_imm_01
; /* INTEGER_0_15 */
291 static int hf_tetra_wt_01
; /* INTEGER_0_15 */
292 static int hf_tetra_nu_01
; /* INTEGER_0_15 */
293 static int hf_tetra_frame_len_factor_01
; /* INTEGER_0_1 */
294 static int hf_tetra_timeslot_pointer_01
; /* INTEGER_0_15 */
295 static int hf_tetra_min_priority
; /* INTEGER_0_7 */
296 static int hf_tetra_optional_field
; /* T_optional_field */
297 static int hf_tetra_class_bitmap
; /* INTEGER_0_65535 */
298 static int hf_tetra_gssi
; /* INTEGER_0_33554431 */
299 static int hf_tetra_reserved_03
; /* NULL */
300 static int hf_tetra_filler_bits
; /* INTEGER_0_7 */
301 static int hf_tetra_bl_adata_01
; /* D_BL_ADATA */
302 static int hf_tetra_bl_data_01
; /* D_BL_DATA */
303 static int hf_tetra_bl_udata_01
; /* D_MLE_PDU */
304 static int hf_tetra_bl_ack_01
; /* D_BL_ACK */
305 static int hf_tetra_bl_adata_fcs_01
; /* D_BL_ADATA_FCS */
306 static int hf_tetra_bl_data_fcs_01
; /* D_BL_DATA_FCS */
307 static int hf_tetra_bl_udata_fcs_01
; /* D_MLE_PDU_FCS */
308 static int hf_tetra_bl_ack_fcs_01
; /* D_BL_ACK_FCS */
309 static int hf_tetra_tl_sdu_01
; /* D_MLE_PDU */
310 static int hf_tetra_d_mle_pdu
; /* D_MLE_PDU */
311 static int hf_tetra_mm_01
; /* D_MM_PDU */
312 static int hf_tetra_cmce_01
; /* D_CMCE_PDU */
313 static int hf_tetra_mle_01
; /* DMLE_PDU */
314 static int hf_tetra_u_prepare
; /* U_PREPARE */
315 static int hf_tetra_umle_reserved1
; /* NULL */
316 static int hf_tetra_umle_reserved2
; /* NULL */
317 static int hf_tetra_umle_reserved3
; /* NULL */
318 static int hf_tetra_u_restore
; /* U_RESTORE */
319 static int hf_tetra_umle_reserved4
; /* NULL */
320 static int hf_tetra_umle_reserved5
; /* NULL */
321 static int hf_tetra_umle_reserved6
; /* NULL */
322 static int hf_tetra_d_new_cell
; /* D_NEW_CELL */
323 static int hf_tetra_d_prepare_fail
; /* D_PREPARE_FAIL */
324 static int hf_tetra_d_nwrk_broadcast
; /* D_NWRK_BRDADCAST */
325 static int hf_tetra_dmle_reserved1
; /* NULL */
326 static int hf_tetra_d_restore_ack
; /* D_RESTORE_ACK */
327 static int hf_tetra_d_restore_fail
; /* D_RESTORE_FAIL */
328 static int hf_tetra_dmle_reserved2
; /* NULL */
329 static int hf_tetra_dmle_reserved3
; /* NULL */
330 static int hf_tetra_optional_elements
; /* T_optional_elements */
331 static int hf_tetra_no_type2
; /* NULL */
332 static int hf_tetra_type2_parameters
; /* T_type2_parameters */
333 static int hf_tetra_cell_number
; /* T_cell_number */
334 static int hf_tetra_cell_number_01
; /* INTEGER_0_65535 */
335 static int hf_tetra_sdu
; /* BIT_STRING */
336 static int hf_tetra_optional_elements_01
; /* T_optional_elements_01 */
337 static int hf_tetra_type2_parameters_01
; /* T_type2_parameters_01 */
338 static int hf_tetra_mcc_01
; /* T_mcc */
339 static int hf_tetra_mnc_01
; /* T_mnc */
340 static int hf_tetra_la_01
; /* T_la */
341 static int hf_tetra_channel_command_valid
; /* INTEGER_0_3 */
342 static int hf_tetra_optional_elements_02
; /* T_optional_elements_02 */
343 static int hf_tetra_fail_cause
; /* INTEGER_0_3 */
344 static int hf_tetra_optional_elements_03
; /* T_optional_elements_03 */
345 static int hf_tetra_cell_re_select_parameters
; /* INTEGER_0_65535 */
346 static int hf_tetra_optional_elements_04
; /* T_optional_elements_04 */
347 static int hf_tetra_type2_parameters_02
; /* T_type2_parameters_02 */
348 static int hf_tetra_tetra_network_time
; /* T_tetra_network_time */
349 static int hf_tetra_tetra_network_time_01
; /* TETRA_NETWORK_TIME */
350 static int hf_tetra_number_of_neighbour_cells
; /* T_number_of_neighbour_cells */
351 static int hf_tetra_number_of_neighbour_cells_01
; /* INTEGER_0_7 */
352 static int hf_tetra_network_time
; /* T_network_time */
353 static int hf_tetra_local_time_offset_sign
; /* INTEGER_0_1 */
354 static int hf_tetra_local_time_offset
; /* INTEGER_0_63 */
355 static int hf_tetra_year
; /* INTEGER_0_63 */
356 static int hf_tetra_reserved_04
; /* T_reserved */
357 static int hf_tetra_u_Authentication
; /* NULL */
358 static int hf_tetra_u_Itsi_Detach
; /* NULL */
359 static int hf_tetra_u_Location_Update_Demand
; /* U_LOCATION_UPDATE_DEMAND */
360 static int hf_tetra_u_MM_Status
; /* U_MM_STATUS */
361 static int hf_tetra_u_MM_reserved1
; /* NULL */
362 static int hf_tetra_u_WK
; /* NULL */
363 static int hf_tetra_u_MM_reserved3
; /* NULL */
364 static int hf_tetra_u_Attach_Detach_Group_Identity
; /* U_ATTACH_DETACH_GROUP_IDENTITY */
365 static int hf_tetra_u_Attach_Detach_Group_Identity_Ack
; /* U_ATTACH_DETACH_GROUP_IDENTITY_ACK */
366 static int hf_tetra_u_TEI_Provide
; /* NULL */
367 static int hf_tetra_u_MM_reserved6
; /* NULL */
368 static int hf_tetra_u_Disabled_Status
; /* NULL */
369 static int hf_tetra_u_MM_reserved7
; /* NULL */
370 static int hf_tetra_u_MM_reserved8
; /* NULL */
371 static int hf_tetra_u_MM_reserved9
; /* NULL */
372 static int hf_tetra_u_MM_Function_Not_Support
; /* NULL */
373 static int hf_tetra_d_Otar
; /* NULL */
374 static int hf_tetra_d_Authentication
; /* NULL */
375 static int hf_tetra_d_Authentication_Reject
; /* NULL */
376 static int hf_tetra_d_Disable
; /* NULL */
377 static int hf_tetra_d_Enable
; /* NULL */
378 static int hf_tetra_d_Location_Update_Accept
; /* D_LOCATION_UPDATE_ACCEPT */
379 static int hf_tetra_d_Location_Update_Command
; /* NULL */
380 static int hf_tetra_d_Location_Update_Reject
; /* D_LOCATION_UPDATE_REJECT */
381 static int hf_tetra_d_MM_reserved2
; /* NULL */
382 static int hf_tetra_d_Location_Update_Proceeding
; /* NULL */
383 static int hf_tetra_d_Attach_Detach_Group_Identity
; /* D_ATTACH_DETACH_GROUP_IDENTITY */
384 static int hf_tetra_d_Attach_Detach_Group_Identity_Ack
; /* D_ATTACH_DETACH_GROUP_IDENTITY_ACK */
385 static int hf_tetra_d_MM_Status
; /* D_MM_STATUS */
386 static int hf_tetra_d_MM_reserved5
; /* NULL */
387 static int hf_tetra_d_MM_reserved6
; /* NULL */
388 static int hf_tetra_d_MM_Function_Not_Support
; /* NULL */
389 static int hf_tetra_attach_detach_identifier
; /* T_attach_detach_identifier */
390 static int hf_tetra_attach
; /* T_attach */
391 static int hf_tetra_lifetime
; /* INTEGER_0_3 */
392 static int hf_tetra_class_of_usage
; /* INTEGER_0_7 */
393 static int hf_tetra_detach
; /* T_detach */
394 static int hf_tetra_detach_downlike
; /* T_detach_downlike */
395 static int hf_tetra_address_type
; /* T_address_type */
396 static int hf_tetra_gssi_01
; /* OCTET_STRING_SIZE_3 */
397 static int hf_tetra_gssi_extension
; /* T_gssi_extension */
398 static int hf_tetra_extension
; /* OCTET_STRING_SIZE_3 */
399 static int hf_tetra_vgssi
; /* OCTET_STRING_SIZE_3 */
400 static int hf_tetra_attach_detach_identifier_01
; /* T_attach_detach_identifier_01 */
401 static int hf_tetra_attach_01
; /* T_attach_01 */
402 static int hf_tetra_detach_01
; /* T_detach_01 */
403 static int hf_tetra_detach_uplike
; /* T_detach_uplike */
404 static int hf_tetra_address_type_01
; /* T_address_type_01 */
405 static int hf_tetra_gssi_extension_01
; /* T_gssi_extension_01 */
406 static int hf_tetra_location_update_type
; /* UPDATE_TYPE */
407 static int hf_tetra_optional_elements_05
; /* T_optional_elements_05 */
408 static int hf_tetra_type2_parameters_03
; /* T_type2_parameters_03 */
409 static int hf_tetra_ssi_02
; /* T_ssi */
410 static int hf_tetra_ssi_03
; /* OCTET_STRING_SIZE_3 */
411 static int hf_tetra_address_extension
; /* T_address_extension */
412 static int hf_tetra_address_extension_01
; /* OCTET_STRING_SIZE_3 */
413 static int hf_tetra_subscriber_class_01
; /* T_subscriber_class */
414 static int hf_tetra_energy_saving_mode
; /* T_energy_saving_mode */
415 static int hf_tetra_energy_saving_mode_01
; /* INTEGER_0_7 */
416 static int hf_tetra_scch_info
; /* T_scch_info */
417 static int hf_tetra_scch_info_01
; /* INTEGER_0_16383 */
418 static int hf_tetra_type3
; /* T_type3 */
419 static int hf_tetra_no_type3
; /* NULL */
420 static int hf_tetra_type3_elements
; /* T_type3_elements */
421 static int hf_tetra_type2_existance
; /* BOOLEAN */
422 static int hf_tetra_type3_identifier
; /* TYPE3_IDENTIFIER */
423 static int hf_tetra_new_ra
; /* T_new_ra */
424 static int hf_tetra_new_ra_01
; /* INTEGER_0_3 */
425 static int hf_tetra_group_identity_location_accept
; /* T_group_identity_location_accept */
426 static int hf_tetra_group_identity_location_accept_01
; /* INTEGER_0_3 */
427 static int hf_tetra_group_predefined_lifetime
; /* T_group_predefined_lifetime */
428 static int hf_tetra_group_predefined_lifetime_01
; /* INTEGER_0_3 */
429 static int hf_tetra_group_identity_downlink
; /* T_group_identity_downlink */
430 static int hf_tetra_group_identity_downlink_01
; /* INTEGER_0_15 */
431 static int hf_tetra_proprietary
; /* T_proprietary */
432 static int hf_tetra_proprietary_01
; /* INTEGER_0_7 */
433 static int hf_tetra_reject_cause
; /* INTEGER_0_31 */
434 static int hf_tetra_cipher_control
; /* BOOLEAN */
435 static int hf_tetra_status_uplink
; /* INTEGER_0_63 */
436 static int hf_tetra_scanning_on_off
; /* T_scanning_on_off */
437 static int hf_tetra_status_downlink
; /* INTEGER_0_63 */
438 static int hf_tetra_u_Alert
; /* U_ALERT */
439 static int hf_tetra_reserved1
; /* NULL */
440 static int hf_tetra_u_Connect
; /* U_CONNECT */
441 static int hf_tetra_reserved2
; /* NULL */
442 static int hf_tetra_u_Disconnect
; /* U_DISCONNECT */
443 static int hf_tetra_u_Info
; /* U_INFO */
444 static int hf_tetra_u_Release
; /* U_RELEASE */
445 static int hf_tetra_u_Setup
; /* U_SETUP */
446 static int hf_tetra_u_Status
; /* U_STATUS */
447 static int hf_tetra_u_Tx_Ceased
; /* U_TX_CEASED */
448 static int hf_tetra_u_Tx_Demand
; /* U_TX_DEMAND */
449 static int hf_tetra_reserved3
; /* NULL */
450 static int hf_tetra_reserved4
; /* NULL */
451 static int hf_tetra_reserved5
; /* NULL */
452 static int hf_tetra_u_Call_Restore
; /* U_CALL_RESTORE */
453 static int hf_tetra_u_SDS_Data
; /* U_SDS_DATA */
454 static int hf_tetra_u_Facility
; /* NULL */
455 static int hf_tetra_call_identifier
; /* INTEGER_0_16383 */
456 static int hf_tetra_disconnect_cause
; /* INTEGER_0_31 */
457 static int hf_tetra_area_selection
; /* INTEGER_0_15 */
458 static int hf_tetra_called_party_type_identifier
; /* T_called_party_type_identifier */
459 static int hf_tetra_sna
; /* INTEGER_0_255 */
460 static int hf_tetra_ssi_extension
; /* BIT_STRING_SIZE_48 */
461 static int hf_tetra_short_data_type_identifier
; /* T_short_data_type_identifier */
462 static int hf_tetra_data_1
; /* INTEGER_0_65535 */
463 static int hf_tetra_data_2
; /* OCTET_STRING_SIZE_4 */
464 static int hf_tetra_data_3
; /* BIT_STRING_SIZE_64 */
465 static int hf_tetra_length_indicator_data_4
; /* INTEGER_0_4194304 */
466 static int hf_tetra_called_party_type_identifier_01
; /* T_called_party_type_identifier_01 */
467 static int hf_tetra_short_number_address
; /* INTEGER_0_255 */
468 static int hf_tetra_called_ssi_called_extension
; /* BIT_STRING_SIZE_48 */
469 static int hf_tetra_pre_coded_status
; /* INTEGER_0_65535 */
470 static int hf_tetra_call_id
; /* INTEGER_0_16383 */
471 static int hf_tetra_poll_response
; /* INTEGER_0_1 */
472 static int hf_tetra_d_Alert
; /* D_ALERT */
473 static int hf_tetra_d_Call_Proceeding
; /* D_CALL_PROCEEDING */
474 static int hf_tetra_d_Connect
; /* D_CONNECT */
475 static int hf_tetra_d_Connect_Ack
; /* D_CONNECT_ACK */
476 static int hf_tetra_d_Disconnect
; /* D_DISCONNECT */
477 static int hf_tetra_d_Info
; /* D_INFO */
478 static int hf_tetra_d_Release
; /* D_RELEASE */
479 static int hf_tetra_d_Setup
; /* D_SETUP */
480 static int hf_tetra_d_Status
; /* D_STATUS */
481 static int hf_tetra_d_Tx_Ceased
; /* D_TX_CEASED */
482 static int hf_tetra_d_Tx_Continue
; /* D_TX_CONTINUE */
483 static int hf_tetra_d_Tx_Granted
; /* D_TX_GRANTED */
484 static int hf_tetra_d_Tx_Wait
; /* D_TX_WAIT */
485 static int hf_tetra_d_Tx_Interrupt
; /* NULL */
486 static int hf_tetra_d_Call_Restore
; /* D_CALL_RESTORE */
487 static int hf_tetra_d_SDS_Data
; /* D_SDS_DATA */
488 static int hf_tetra_d_Facility
; /* NULL */
489 static int hf_tetra_calling_party_type_identifier
; /* T_calling_party_type_identifier */
490 static int hf_tetra_ssi_extension_01
; /* OCTET_STRING_SIZE_6 */
491 static int hf_tetra_short_data_type_identifier_01
; /* T_short_data_type_identifier_01 */
492 static int hf_tetra_data_3_01
; /* OCTET_STRING_SIZE_8 */
493 static int hf_tetra_calling_party_type_identifier_01
; /* T_calling_party_type_identifier_01 */
494 static int hf_tetra_calling_party_address_SSI
; /* INTEGER_0_16777215 */
495 static int hf_tetra_reset_call_time_out_timer
; /* INTEGER_0_1 */
496 static int hf_tetra_poll_request
; /* INTEGER_0_1 */
497 static int hf_tetra_transmission_request_permission
; /* INTEGER_0_1 */
498 static int hf_tetra_continue
; /* INTEGER_0_1 */
499 static int hf_tetra_request_to_append_LA
; /* BOOLEAN */
500 static int hf_tetra_cipher_control_01
; /* T_cipher_control */
501 static int hf_tetra_no_cipher
; /* NULL */
502 static int hf_tetra_ciphering_parameters
; /* INTEGER_0_1023 */
503 static int hf_tetra_optional_elements_06
; /* T_optional_elements_06 */
504 static int hf_tetra_type2_parameters_04
; /* T_type2_parameters_04 */
505 static int hf_tetra_class_of_MS
; /* T_class_of_MS */
506 static int hf_tetra_class_of_MS_01
; /* INTEGER_0_16777215 */
507 static int hf_tetra_energy_saving_mode_02
; /* T_energy_saving_mode_01 */
508 static int hf_tetra_la_information
; /* T_la_information */
509 static int hf_tetra_la_information_01
; /* INTEGER_0_16383 */
510 static int hf_tetra_ssi_04
; /* T_ssi_01 */
511 static int hf_tetra_address_extension_02
; /* T_address_extension_01 */
512 static int hf_tetra_type3_01
; /* T_type3_01 */
513 static int hf_tetra_type3_elements_01
; /* T_type3_elements_01 */
514 static int hf_tetra_group_identity_location_demand
; /* T_group_identity_location_demand */
515 static int hf_tetra_group_identity_location_demand_01
; /* INTEGER_0_3 */
516 static int hf_tetra_group_report_response
; /* T_group_report_response */
517 static int hf_tetra_group_report_response_01
; /* BOOLEAN */
518 static int hf_tetra_group_identity_uplink
; /* T_group_identity_uplink */
519 static int hf_tetra_group_identity_uplink_01
; /* INTEGER_0_15 */
520 static int hf_tetra_proprietary_02
; /* T_proprietary_01 */
521 static int hf_tetra_group_identity_report
; /* BOOLEAN */
522 static int hf_tetra_group_identity_attach_detach_mode
; /* BOOLEAN */
523 static int hf_tetra_optional_elements_07
; /* T_optional_elements_07 */
524 static int hf_tetra_type2_element
; /* T_type2_element */
525 static int hf_tetra_type3_02
; /* T_type3_02 */
526 static int hf_tetra_type3_elements_02
; /* T_type3_elements_02 */
527 static int hf_tetra_length
; /* INTEGER_0_2047 */
528 static int hf_tetra_repeat_num
; /* INTEGER_0_63 */
529 static int hf_tetra_group_identity_uplink_02
; /* GROUP_IDENTITY_UPLINK */
530 static int hf_tetra_group_identity_ack_type
; /* BOOLEAN */
531 static int hf_tetra_optional_elements_08
; /* T_optional_elements_08 */
532 static int hf_tetra_type2_element_01
; /* T_type2_element_01 */
533 static int hf_tetra_type3_03
; /* T_type3_03 */
534 static int hf_tetra_type3_elements_03
; /* T_type3_elements_03 */
535 static int hf_tetra_hook_method_selection
; /* BOOLEAN */
536 static int hf_tetra_simple_duplex_selection
; /* T_simple_duplex_selection */
537 static int hf_tetra_basic_service_information
; /* Basic_service_information */
538 static int hf_tetra_request_transmit_send_data
; /* INTEGER_0_1 */
539 static int hf_tetra_call_priority
; /* INTEGER_0_15 */
540 static int hf_tetra_clir_control
; /* INTEGER_0_3 */
541 static int hf_tetra_called_party_address
; /* Called_party_address_type */
542 static int hf_tetra_optional_elements_09
; /* T_optional_elements_09 */
543 static int hf_tetra_type2_parameters_05
; /* T_type2_parameters_05 */
544 static int hf_tetra_external_subscriber_number
; /* T_external_subscriber_number */
545 static int hf_tetra_external_subscriber_number_01
; /* INTEGER_0_31 */
546 static int hf_tetra_prop
; /* T_prop */
547 static int hf_tetra_prop_01
; /* Proprietary */
548 static int hf_tetra_circuit_mode
; /* CIRCUIT */
549 static int hf_tetra_encryption
; /* INTEGER_0_1 */
550 static int hf_tetra_communication
; /* INTEGER_0_3 */
551 static int hf_tetra_slots_or_speech
; /* INTEGER_0_3 */
552 static int hf_tetra_call_identifier_01
; /* INTEGER_0_1023 */
553 static int hf_tetra_simplex_duplex_selection
; /* T_simplex_duplex_selection */
554 static int hf_tetra_optional_elements_10
; /* T_optional_elements_10 */
555 static int hf_tetra_type2_parameters_06
; /* T_type2_parameters_06 */
556 static int hf_tetra_basic_service_information_01
; /* T_basic_service_information */
557 static int hf_tetra_prop_02
; /* T_prop_01 */
558 static int hf_tetra_simplex_duplex_selection_01
; /* T_simplex_duplex_selection_01 */
559 static int hf_tetra_optional_elements_11
; /* T_optional_elements_11 */
560 static int hf_tetra_type2_parameters_07
; /* T_type2_parameters_07 */
561 static int hf_tetra_basic_service_information_02
; /* T_basic_service_information_01 */
562 static int hf_tetra_prop_03
; /* T_prop_02 */
563 static int hf_tetra_optional_elements_12
; /* T_optional_elements_12 */
564 static int hf_tetra_type2_parameters_08
; /* T_type2_parameters_08 */
565 static int hf_tetra_prop_04
; /* T_prop_03 */
566 static int hf_tetra_tx_demand_priority
; /* INTEGER_0_3 */
567 static int hf_tetra_encryption_control
; /* INTEGER_0_1 */
568 static int hf_tetra_optional_elements_13
; /* T_optional_elements_13 */
569 static int hf_tetra_type2_parameters_09
; /* T_type2_parameters_09 */
570 static int hf_tetra_prop_05
; /* T_prop_04 */
571 static int hf_tetra_optional_elements_14
; /* T_optional_elements_14 */
572 static int hf_tetra_type2_parameters_10
; /* T_type2_parameters_10 */
573 static int hf_tetra_prop_06
; /* T_prop_05 */
574 static int hf_tetra_request_to_transmit_send_data
; /* INTEGER_0_1 */
575 static int hf_tetra_other_party_address
; /* Other_party_address_type */
576 static int hf_tetra_optional_elements_15
; /* T_optional_elements_15 */
577 static int hf_tetra_type2_parameters_11
; /* T_type2_parameters_11 */
578 static int hf_tetra_prop_07
; /* T_prop_06 */
579 static int hf_tetra_call_time_out
; /* INTEGER_0_15 */
580 static int hf_tetra_hook_method_selection_01
; /* INTEGER_0_1 */
581 static int hf_tetra_simplex_duplex_selection_02
; /* T_simplex_duplex_selection_02 */
582 static int hf_tetra_transmission_grant
; /* INTEGER_0_3 */
583 static int hf_tetra_optional_elements_16
; /* T_optional_elements_16 */
584 static int hf_tetra_type2_parameters_12
; /* T_type2_parameters_12 */
585 static int hf_tetra_calling_party_address
; /* T_calling_party_address */
586 static int hf_tetra_calling_party_address_01
; /* Calling_party_address_type */
587 static int hf_tetra_external_subscriber_number_02
; /* T_external_subscriber_number_01 */
588 static int hf_tetra_external_subscriber_number_03
; /* INTEGER_0_15 */
589 static int hf_tetra_prop_08
; /* T_prop_07 */
590 static int hf_tetra_call_time_out_setup_phase
; /* INTEGER_0_7 */
591 static int hf_tetra_simplex_duplex_selection_03
; /* INTEGER_0_1 */
592 static int hf_tetra_optional_elements_17
; /* T_optional_elements_17 */
593 static int hf_tetra_type2_parameters_13
; /* T_type2_parameters_13 */
594 static int hf_tetra_basic_service_information_03
; /* T_basic_service_information_02 */
595 static int hf_tetra_call_status
; /* T_call_status */
596 static int hf_tetra_call_status_01
; /* INTEGER_0_7 */
597 static int hf_tetra_notification_indicator
; /* T_notification_indicator */
598 static int hf_tetra_notification_indicator_01
; /* INTEGER_0_63 */
599 static int hf_tetra_prop_09
; /* T_prop_08 */
600 static int hf_tetra_simplex_duplex_selection_04
; /* T_simplex_duplex_selection_03 */
601 static int hf_tetra_call_queued
; /* BOOLEAN */
602 static int hf_tetra_optional_elements_18
; /* T_optional_elements_18 */
603 static int hf_tetra_type2_parameters_14
; /* T_type2_parameters_14 */
604 static int hf_tetra_basic_service_infomation
; /* T_basic_service_infomation */
605 static int hf_tetra_basic_service_infomation_01
; /* Basic_service_information */
606 static int hf_tetra_notification_indicator_02
; /* T_notification_indicator_01 */
607 static int hf_tetra_prop_10
; /* T_prop_09 */
608 static int hf_tetra_call_time_out_01
; /* INTEGER_0_31 */
609 static int hf_tetra_simplex_duplex_selection_05
; /* T_simplex_duplex_selection_04 */
610 static int hf_tetra_call_ownership
; /* INTEGER_0_1 */
611 static int hf_tetra_optional_elements_19
; /* T_optional_elements_19 */
612 static int hf_tetra_type2_parameters_15
; /* T_type2_parameters_15 */
613 static int hf_tetra_call_priority_01
; /* T_call_priority */
614 static int hf_tetra_basic_service_information_04
; /* T_basic_service_information_03 */
615 static int hf_tetra_temporary_address
; /* T_temporary_address */
616 static int hf_tetra_temporary_address_01
; /* Calling_party_address_type */
617 static int hf_tetra_notification_indicator_03
; /* T_notification_indicator_02 */
618 static int hf_tetra_prop_11
; /* T_prop_10 */
619 static int hf_tetra_optional_elements_20
; /* T_optional_elements_20 */
620 static int hf_tetra_type2_parameters_16
; /* T_type2_parameters_16 */
621 static int hf_tetra_notification_indicator_04
; /* T_notification_indicator_03 */
622 static int hf_tetra_prop_12
; /* T_prop_11 */
623 static int hf_tetra_optional_elements_21
; /* T_optional_elements_21 */
624 static int hf_tetra_type2_parameters_17
; /* T_type2_parameters_17 */
625 static int hf_tetra_notification_indicator_05
; /* T_notification_indicator_04 */
626 static int hf_tetra_prop_13
; /* T_prop_12 */
627 static int hf_tetra_reset_call_time_out
; /* INTEGER_0_1 */
628 static int hf_tetra_optional_elements_22
; /* T_optional_elements_22 */
629 static int hf_tetra_type2_parameters_18
; /* T_type2_parameters_18 */
630 static int hf_tetra_new_call_identifier
; /* T_new_call_identifier */
631 static int hf_tetra_new_call_identifier_01
; /* INTEGER_0_1023 */
632 static int hf_tetra_call_time_out_02
; /* T_call_time_out */
633 static int hf_tetra_call_time_out_03
; /* INTEGER_0_7 */
634 static int hf_tetra_call_status_02
; /* T_call_status_01 */
635 static int hf_tetra_modify
; /* T_modify */
636 static int hf_tetra_modify_01
; /* Modify_type */
637 static int hf_tetra_notification_indicator_06
; /* T_notification_indicator_05 */
638 static int hf_tetra_prop_14
; /* T_prop_13 */
639 static int hf_tetra_optional_elements_23
; /* T_optional_elements_23 */
640 static int hf_tetra_type2_parameters_19
; /* T_type2_parameters_19 */
641 static int hf_tetra_notification_indicator_07
; /* T_notification_indicator_06 */
642 static int hf_tetra_prop_15
; /* T_prop_14 */
643 static int hf_tetra_group_identity_ack_request
; /* BOOLEAN */
644 static int hf_tetra_optional_elements_24
; /* T_optional_elements_24 */
645 static int hf_tetra_type2_element_02
; /* T_type2_element_02 */
646 static int hf_tetra_type3_04
; /* T_type3_04 */
647 static int hf_tetra_type3_elements_04
; /* T_type3_elements_04 */
648 static int hf_tetra_group_identity_downlink_02
; /* GROUP_IDENTITY_DOWNLINK */
649 static int hf_tetra_group_identity_attach_detach_accept
; /* BOOLEAN */
650 static int hf_tetra_optional_elements_25
; /* T_optional_elements_25 */
651 static int hf_tetra_type2_element_03
; /* T_type2_element_03 */
652 static int hf_tetra_type3_05
; /* T_type3_05 */
653 static int hf_tetra_type3_elements_05
; /* T_type3_elements_05 */
654 static int hf_tetra_called_party_sna
; /* INTEGER_0_255 */
655 static int hf_tetra_called_party_ssi
; /* INTEGER_0_16777215 */
656 static int hf_tetra_called_party_ssi_extension
; /* T_called_party_ssi_extension */
657 static int hf_tetra_called_party_extention
; /* INTEGER_0_16777215 */
658 static int hf_tetra_data_01
; /* T_data_01 */
659 static int hf_tetra_element1
; /* Type1 */
660 static int hf_tetra_element
; /* Type2 */
661 static int hf_tetra_proprietary_element_owner
; /* Proprietary_element_owner */
662 static int hf_tetra_proprietary_element_owner_extension
; /* BIT_STRING */
663 static int hf_tetra_simplex_duplex_selection_06
; /* T_simplex_duplex_selection_05 */
665 /* Initialize the subtree pointers */
666 /* These are the ids of the subtrees that we may be creating */
667 static int ett_tetra
;
668 static int ett_tetra_header
;
669 static int ett_tetra_length
;
670 static int ett_tetra_txreg
;
671 static int ett_tetra_text
;
673 static int ett_tetra_AACH
;
674 static int ett_tetra_BSCH
;
675 static int ett_tetra_MLE_Sync
;
676 static int ett_tetra_BNCH
;
677 static int ett_tetra_T_hyperframe_or_cck
;
678 static int ett_tetra_T_optional_params
;
679 static int ett_tetra_TS_COMMON_FRAMES
;
680 static int ett_tetra_Default_Code_A
;
681 static int ett_tetra_Extended_Services_Broadcast
;
682 static int ett_tetra_T_section
;
683 static int ett_tetra_PRESENT1
;
684 static int ett_tetra_MAC_ACCESS
;
685 static int ett_tetra_T_data
;
686 static int ett_tetra_Address
;
687 static int ett_tetra_U_LLC_PDU
;
688 static int ett_tetra_U_BL_ACK_FCS
;
689 static int ett_tetra_U_MLE_PDU_FCS
;
690 static int ett_tetra_U_BL_DATA_FCS
;
691 static int ett_tetra_U_BL_ADATA_FCS
;
692 static int ett_tetra_U_MLE_PDU
;
693 static int ett_tetra_ComplexSDU
;
694 static int ett_tetra_T_lengthIndicationOrCapacityRequest
;
695 static int ett_tetra_FRAG
;
696 static int ett_tetra_MAC_DATA
;
697 static int ett_tetra_T_lengthIndicationOrCapacityRequest_01
;
698 static int ett_tetra_FRAG6
;
699 static int ett_tetra_MAC_FRAG
;
700 static int ett_tetra_MAC_FRAG120
;
701 static int ett_tetra_MAC_END_UPLINK
;
702 static int ett_tetra_MAC_END_UP114
;
703 static int ett_tetra_MAC_END_HU
;
704 static int ett_tetra_T_lengthInd_ReservationReq
;
705 static int ett_tetra_MAC_END_DOWNLINK
;
706 static int ett_tetra_T_slot_granting
;
707 static int ett_tetra_T_channel_allocation
;
708 static int ett_tetra_SlotGranting
;
709 static int ett_tetra_ChannelAllocation
;
710 static int ett_tetra_T_extend_carrier_flag
;
711 static int ett_tetra_T_monitoring_pattern
;
712 static int ett_tetra_Extended_carrier_flag
;
713 static int ett_tetra_MAC_END_DOWN111
;
714 static int ett_tetra_T_slot_granting_01
;
715 static int ett_tetra_T_channel_allocation_01
;
716 static int ett_tetra_MAC_RESOURCE
;
717 static int ett_tetra_OTHER_DATA
;
718 static int ett_tetra_T_power_control
;
719 static int ett_tetra_T_slot_granting_02
;
720 static int ett_tetra_T_channel_allocation_02
;
721 static int ett_tetra_AddressMacResource
;
722 static int ett_tetra_SSI_NEED
;
723 static int ett_tetra_EVENT_NEED
;
724 static int ett_tetra_USSI_NEED
;
725 static int ett_tetra_SMI_NEED
;
726 static int ett_tetra_SSI_EVENT_NEED
;
727 static int ett_tetra_SSI_USAGE_NEED
;
728 static int ett_tetra_SMI_EVENT_NEED
;
729 static int ett_tetra_MAC_ACCESS_DEFINE
;
730 static int ett_tetra_T_optional_field
;
731 static int ett_tetra_D_LLC_PDU
;
732 static int ett_tetra_D_BL_ACK_FCS
;
733 static int ett_tetra_D_MLE_PDU_FCS
;
734 static int ett_tetra_D_BL_ADATA_FCS
;
735 static int ett_tetra_D_BL_DATA_FCS
;
736 static int ett_tetra_U_BL_ACK
;
737 static int ett_tetra_D_BL_ACK
;
738 static int ett_tetra_U_BL_DATA
;
739 static int ett_tetra_D_BL_DATA
;
740 static int ett_tetra_U_BL_ADATA
;
741 static int ett_tetra_D_BL_ADATA
;
742 static int ett_tetra_D_MLE_PDU
;
743 static int ett_tetra_UMLE_PDU
;
744 static int ett_tetra_DMLE_PDU
;
745 static int ett_tetra_U_PREPARE
;
746 static int ett_tetra_T_optional_elements
;
747 static int ett_tetra_T_type2_parameters
;
748 static int ett_tetra_T_cell_number
;
749 static int ett_tetra_U_RESTORE
;
750 static int ett_tetra_T_optional_elements_01
;
751 static int ett_tetra_T_type2_parameters_01
;
752 static int ett_tetra_T_mcc
;
753 static int ett_tetra_T_mnc
;
754 static int ett_tetra_T_la
;
755 static int ett_tetra_D_NEW_CELL
;
756 static int ett_tetra_T_optional_elements_02
;
757 static int ett_tetra_D_PREPARE_FAIL
;
758 static int ett_tetra_T_optional_elements_03
;
759 static int ett_tetra_D_NWRK_BRDADCAST
;
760 static int ett_tetra_T_optional_elements_04
;
761 static int ett_tetra_T_type2_parameters_02
;
762 static int ett_tetra_T_tetra_network_time
;
763 static int ett_tetra_T_number_of_neighbour_cells
;
764 static int ett_tetra_TETRA_NETWORK_TIME
;
765 static int ett_tetra_D_RESTORE_ACK
;
766 static int ett_tetra_D_RESTORE_FAIL
;
767 static int ett_tetra_U_MM_PDU
;
768 static int ett_tetra_D_MM_PDU
;
769 static int ett_tetra_GROUP_IDENTITY_DOWNLINK
;
770 static int ett_tetra_T_attach_detach_identifier
;
771 static int ett_tetra_T_attach
;
772 static int ett_tetra_T_detach
;
773 static int ett_tetra_T_address_type
;
774 static int ett_tetra_T_gssi_extension
;
775 static int ett_tetra_GROUP_IDENTITY_UPLINK
;
776 static int ett_tetra_T_attach_detach_identifier_01
;
777 static int ett_tetra_T_attach_01
;
778 static int ett_tetra_T_detach_01
;
779 static int ett_tetra_T_address_type_01
;
780 static int ett_tetra_T_gssi_extension_01
;
781 static int ett_tetra_D_LOCATION_UPDATE_ACCEPT
;
782 static int ett_tetra_T_optional_elements_05
;
783 static int ett_tetra_T_type2_parameters_03
;
784 static int ett_tetra_T_ssi
;
785 static int ett_tetra_T_address_extension
;
786 static int ett_tetra_T_subscriber_class
;
787 static int ett_tetra_T_energy_saving_mode
;
788 static int ett_tetra_T_scch_info
;
789 static int ett_tetra_T_type3
;
790 static int ett_tetra_T_type3_elements
;
791 static int ett_tetra_T_new_ra
;
792 static int ett_tetra_T_group_identity_location_accept
;
793 static int ett_tetra_T_group_predefined_lifetime
;
794 static int ett_tetra_T_group_identity_downlink
;
795 static int ett_tetra_T_proprietary
;
796 static int ett_tetra_D_LOCATION_UPDATE_REJECT
;
797 static int ett_tetra_U_MM_STATUS
;
798 static int ett_tetra_D_MM_STATUS
;
799 static int ett_tetra_U_CMCE_PDU
;
800 static int ett_tetra_U_RELEASE
;
801 static int ett_tetra_U_SDS_DATA
;
802 static int ett_tetra_T_called_party_type_identifier
;
803 static int ett_tetra_T_short_data_type_identifier
;
804 static int ett_tetra_U_STATUS
;
805 static int ett_tetra_T_called_party_type_identifier_01
;
806 static int ett_tetra_U_INFO
;
807 static int ett_tetra_D_CMCE_PDU
;
808 static int ett_tetra_D_SDS_DATA
;
809 static int ett_tetra_T_calling_party_type_identifier
;
810 static int ett_tetra_T_short_data_type_identifier_01
;
811 static int ett_tetra_D_STATUS
;
812 static int ett_tetra_T_calling_party_type_identifier_01
;
813 static int ett_tetra_D_DISCONNECT
;
814 static int ett_tetra_D_INFO
;
815 static int ett_tetra_D_TX_WAIT
;
816 static int ett_tetra_D_TX_CONTINUE
;
817 static int ett_tetra_U_LOCATION_UPDATE_DEMAND
;
818 static int ett_tetra_T_cipher_control
;
819 static int ett_tetra_T_optional_elements_06
;
820 static int ett_tetra_T_type2_parameters_04
;
821 static int ett_tetra_T_class_of_MS
;
822 static int ett_tetra_T_energy_saving_mode_01
;
823 static int ett_tetra_T_la_information
;
824 static int ett_tetra_T_ssi_01
;
825 static int ett_tetra_T_address_extension_01
;
826 static int ett_tetra_T_type3_01
;
827 static int ett_tetra_T_type3_elements_01
;
828 static int ett_tetra_T_group_identity_location_demand
;
829 static int ett_tetra_T_group_report_response
;
830 static int ett_tetra_T_group_identity_uplink
;
831 static int ett_tetra_T_proprietary_01
;
832 static int ett_tetra_U_ATTACH_DETACH_GROUP_IDENTITY
;
833 static int ett_tetra_T_optional_elements_07
;
834 static int ett_tetra_T_type2_element
;
835 static int ett_tetra_T_type3_02
;
836 static int ett_tetra_T_type3_elements_02
;
837 static int ett_tetra_U_ATTACH_DETACH_GROUP_IDENTITY_ACK
;
838 static int ett_tetra_T_optional_elements_08
;
839 static int ett_tetra_T_type2_element_01
;
840 static int ett_tetra_T_type3_03
;
841 static int ett_tetra_T_type3_elements_03
;
842 static int ett_tetra_U_SETUP
;
843 static int ett_tetra_T_optional_elements_09
;
844 static int ett_tetra_T_type2_parameters_05
;
845 static int ett_tetra_T_external_subscriber_number
;
846 static int ett_tetra_T_prop
;
847 static int ett_tetra_Basic_service_information
;
848 static int ett_tetra_U_ALERT
;
849 static int ett_tetra_T_optional_elements_10
;
850 static int ett_tetra_T_type2_parameters_06
;
851 static int ett_tetra_T_basic_service_information
;
852 static int ett_tetra_T_prop_01
;
853 static int ett_tetra_U_CONNECT
;
854 static int ett_tetra_T_optional_elements_11
;
855 static int ett_tetra_T_type2_parameters_07
;
856 static int ett_tetra_T_basic_service_information_01
;
857 static int ett_tetra_T_prop_02
;
858 static int ett_tetra_U_TX_CEASED
;
859 static int ett_tetra_T_optional_elements_12
;
860 static int ett_tetra_T_type2_parameters_08
;
861 static int ett_tetra_T_prop_03
;
862 static int ett_tetra_U_TX_DEMAND
;
863 static int ett_tetra_T_optional_elements_13
;
864 static int ett_tetra_T_type2_parameters_09
;
865 static int ett_tetra_T_prop_04
;
866 static int ett_tetra_U_DISCONNECT
;
867 static int ett_tetra_T_optional_elements_14
;
868 static int ett_tetra_T_type2_parameters_10
;
869 static int ett_tetra_T_prop_05
;
870 static int ett_tetra_U_CALL_RESTORE
;
871 static int ett_tetra_T_optional_elements_15
;
872 static int ett_tetra_T_type2_parameters_11
;
873 static int ett_tetra_T_prop_06
;
874 static int ett_tetra_D_SETUP
;
875 static int ett_tetra_T_optional_elements_16
;
876 static int ett_tetra_T_type2_parameters_12
;
877 static int ett_tetra_T_calling_party_address
;
878 static int ett_tetra_T_external_subscriber_number_01
;
879 static int ett_tetra_T_prop_07
;
880 static int ett_tetra_D_CALL_PROCEEDING
;
881 static int ett_tetra_T_optional_elements_17
;
882 static int ett_tetra_T_type2_parameters_13
;
883 static int ett_tetra_T_basic_service_information_02
;
884 static int ett_tetra_T_call_status
;
885 static int ett_tetra_T_notification_indicator
;
886 static int ett_tetra_T_prop_08
;
887 static int ett_tetra_D_ALERT
;
888 static int ett_tetra_T_optional_elements_18
;
889 static int ett_tetra_T_type2_parameters_14
;
890 static int ett_tetra_T_basic_service_infomation
;
891 static int ett_tetra_T_notification_indicator_01
;
892 static int ett_tetra_T_prop_09
;
893 static int ett_tetra_D_CONNECT
;
894 static int ett_tetra_T_optional_elements_19
;
895 static int ett_tetra_T_type2_parameters_15
;
896 static int ett_tetra_T_call_priority
;
897 static int ett_tetra_T_basic_service_information_03
;
898 static int ett_tetra_T_temporary_address
;
899 static int ett_tetra_T_notification_indicator_02
;
900 static int ett_tetra_T_prop_10
;
901 static int ett_tetra_D_CONNECT_ACK
;
902 static int ett_tetra_T_optional_elements_20
;
903 static int ett_tetra_T_type2_parameters_16
;
904 static int ett_tetra_T_notification_indicator_03
;
905 static int ett_tetra_T_prop_11
;
906 static int ett_tetra_D_RELEASE
;
907 static int ett_tetra_T_optional_elements_21
;
908 static int ett_tetra_T_type2_parameters_17
;
909 static int ett_tetra_T_notification_indicator_04
;
910 static int ett_tetra_T_prop_12
;
911 static int ett_tetra_D_CALL_RESTORE
;
912 static int ett_tetra_T_optional_elements_22
;
913 static int ett_tetra_T_type2_parameters_18
;
914 static int ett_tetra_T_new_call_identifier
;
915 static int ett_tetra_T_call_time_out
;
916 static int ett_tetra_T_call_status_01
;
917 static int ett_tetra_T_modify
;
918 static int ett_tetra_T_notification_indicator_05
;
919 static int ett_tetra_T_prop_13
;
920 static int ett_tetra_D_TX_CEASED
;
921 static int ett_tetra_T_optional_elements_23
;
922 static int ett_tetra_T_type2_parameters_19
;
923 static int ett_tetra_T_notification_indicator_06
;
924 static int ett_tetra_T_prop_14
;
925 static int ett_tetra_D_TX_GRANTED
;
926 static int ett_tetra_D_ATTACH_DETACH_GROUP_IDENTITY
;
927 static int ett_tetra_T_optional_elements_24
;
928 static int ett_tetra_T_type2_element_02
;
929 static int ett_tetra_T_type3_04
;
930 static int ett_tetra_T_type3_elements_04
;
931 static int ett_tetra_D_ATTACH_DETACH_GROUP_IDENTITY_ACK
;
932 static int ett_tetra_T_optional_elements_25
;
933 static int ett_tetra_T_type2_element_03
;
934 static int ett_tetra_T_type3_05
;
935 static int ett_tetra_T_type3_elements_05
;
936 static int ett_tetra_Calling_party_address_type
;
937 static int ett_tetra_T_called_party_ssi_extension
;
938 static int ett_tetra_Proprietary
;
939 static int ett_tetra_T_data_01
;
940 static int ett_tetra_Type1
;
941 static int ett_tetra_Type2
;
942 static int ett_tetra_Modify_type
;
944 static expert_field ei_tetra_channels_incorrect
;
949 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_
) {
950 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
951 0U, 3U, NULL
, false);
959 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_
) {
960 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
961 0U, 63U, NULL
, false);
967 static const per_sequence_t AACH_sequence
[] = {
968 { &hf_tetra_function
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
969 { &hf_tetra_field1
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_63
},
970 { &hf_tetra_field2
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_63
},
975 dissect_tetra_AACH(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
976 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
977 ett_tetra_AACH
, AACH_sequence
);
983 static const value_string tetra_System_Code_vals
[] = {
984 { 0, "ets-300-392-2" },
985 { 1, "ets-300-392-2anden-300-392-7" },
986 { 2, "en-300-392-2-v2-3-2orlateranden-300-392-7" },
987 { 3, "v-d-reserved" },
988 { 4, "v-d-reserved" },
989 { 5, "v-d-reserved" },
990 { 6, "v-d-reserved" },
991 { 7, "v-d-reserved" },
994 { 10, "direct-mode-operation" },
995 { 11, "direct-mode-operation" },
996 { 12, "direct-mode-operation" },
997 { 13, "direct-mode-operation" },
998 { 14, "direct-mode-operation" },
999 { 15, "direct-mode-operation" },
1005 dissect_tetra_System_Code(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1006 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1007 16, NULL
, false, 0, NULL
);
1013 static const value_string tetra_Colour_Code_vals
[] = {
1014 { 0, "pre-defined" },
1015 { 1, "operator-defined" },
1016 { 2, "operator-defined" },
1017 { 3, "operator-defined" },
1018 { 4, "operator-defined" },
1019 { 5, "operator-defined" },
1020 { 6, "operator-defined" },
1021 { 7, "operator-defined" },
1022 { 8, "operator-defined" },
1023 { 9, "operator-defined" },
1024 { 10, "operator-defined" },
1025 { 11, "operator-defined" },
1026 { 12, "operator-defined" },
1027 { 13, "operator-defined" },
1028 { 14, "operator-defined" },
1029 { 15, "operator-defined" },
1030 { 16, "operator-defined" },
1031 { 17, "operator-defined" },
1032 { 18, "operator-defined" },
1033 { 19, "operator-defined" },
1034 { 20, "operator-defined" },
1035 { 21, "operator-defined" },
1036 { 22, "operator-defined" },
1037 { 23, "operator-defined" },
1038 { 24, "operator-defined" },
1039 { 25, "operator-defined" },
1040 { 26, "operator-defined" },
1041 { 27, "operator-defined" },
1042 { 28, "operator-defined" },
1043 { 29, "operator-defined" },
1044 { 30, "operator-defined" },
1045 { 31, "operator-defined" },
1046 { 32, "operator-defined" },
1047 { 33, "operator-defined" },
1048 { 34, "operator-defined" },
1049 { 35, "operator-defined" },
1050 { 36, "operator-defined" },
1051 { 37, "operator-defined" },
1052 { 38, "operator-defined" },
1053 { 39, "operator-defined" },
1054 { 40, "operator-defined" },
1055 { 41, "operator-defined" },
1056 { 42, "operator-defined" },
1057 { 43, "operator-defined" },
1058 { 44, "operator-defined" },
1059 { 45, "operator-defined" },
1060 { 46, "operator-defined" },
1061 { 47, "operator-defined" },
1062 { 48, "operator-defined" },
1063 { 49, "operator-defined" },
1064 { 50, "operator-defined" },
1065 { 51, "operator-defined" },
1066 { 52, "operator-defined" },
1067 { 53, "operator-defined" },
1068 { 54, "operator-defined" },
1069 { 55, "operator-defined" },
1070 { 56, "operator-defined" },
1071 { 57, "operator-defined" },
1072 { 58, "operator-defined" },
1073 { 59, "operator-defined" },
1074 { 60, "operator-defined" },
1075 { 61, "operator-defined" },
1076 { 62, "operator-defined" },
1077 { 63, "operator-defined" },
1083 dissect_tetra_Colour_Code(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1084 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1085 64, NULL
, false, 0, NULL
);
1091 static const value_string tetra_Timeslot_Number_vals
[] = {
1092 { 0, "timeslot-1" },
1093 { 1, "timeslot-2" },
1094 { 2, "timeslot-3" },
1095 { 3, "timeslot-4" },
1101 dissect_tetra_Timeslot_Number(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1102 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1103 4, NULL
, false, 0, NULL
);
1109 static const value_string tetra_Frame_Number_vals
[] = {
1147 dissect_tetra_Frame_Number(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1148 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1149 32, NULL
, false, 0, NULL
);
1155 static const value_string tetra_Multiple_Frame_Number_vals
[] = {
1157 { 1, "multiframe-1" },
1158 { 2, "multiframe-2" },
1159 { 3, "multiframe-3" },
1160 { 4, "multiframe-4" },
1161 { 5, "multiframe-5" },
1162 { 6, "multiframe-6" },
1163 { 7, "multiframe-7" },
1164 { 8, "multiframe-8" },
1165 { 9, "multiframe-9" },
1166 { 10, "multiframe-10" },
1167 { 11, "multiframe-11" },
1168 { 12, "multiframe-12" },
1169 { 13, "multiframe-13" },
1170 { 14, "multiframe-14" },
1171 { 15, "multiframe-15" },
1172 { 16, "multiframe-16" },
1173 { 17, "multiframe-17" },
1174 { 18, "multiframe-18" },
1175 { 19, "multiframe-19" },
1176 { 20, "multiframe-20" },
1177 { 21, "multiframe-21" },
1178 { 22, "multiframe-22" },
1179 { 23, "multiframe-23" },
1180 { 24, "multiframe-24" },
1181 { 25, "multiframe-25" },
1182 { 26, "multiframe-26" },
1183 { 27, "multiframe-27" },
1184 { 28, "multiframe-28" },
1185 { 29, "multiframe-29" },
1186 { 30, "multiframe-30" },
1187 { 31, "multiframe-31" },
1188 { 32, "multiframe-32" },
1189 { 33, "multiframe-33" },
1190 { 34, "multiframe-34" },
1191 { 35, "multiframe-35" },
1192 { 36, "multiframe-36" },
1193 { 37, "multiframe-37" },
1194 { 38, "multiframe-38" },
1195 { 39, "multiframe-39" },
1196 { 40, "multiframe-40" },
1197 { 41, "multiframe-41" },
1198 { 42, "multiframe-42" },
1199 { 43, "multiframe-43" },
1200 { 44, "multiframe-44" },
1201 { 45, "multiframe-45" },
1202 { 46, "multiframe-46" },
1203 { 47, "multiframe-47" },
1204 { 48, "multiframe-48" },
1205 { 49, "multiframe-49" },
1206 { 50, "multiframe-50" },
1207 { 51, "multiframe-51" },
1208 { 52, "multiframe-52" },
1209 { 53, "multiframe-53" },
1210 { 54, "multiframe-54" },
1211 { 55, "multiframe-55" },
1212 { 56, "multiframe-56" },
1213 { 57, "multiframe-57" },
1214 { 58, "multiframe-58" },
1215 { 59, "multiframe-59" },
1216 { 60, "multiframe-60" },
1225 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_
) {
1226 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1227 64, NULL
, false, 0, NULL
);
1233 static const value_string tetra_Sharing_Mod_vals
[] = {
1234 { 0, "continuous-transmission" },
1235 { 1, "carrier-sharing" },
1236 { 2, "mcch-sharing" },
1237 { 3, "traffic-carrier-sharing" },
1243 dissect_tetra_Sharing_Mod(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1244 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1245 4, NULL
, false, 0, NULL
);
1251 static const value_string tetra_TS_Reserved_Frames_vals
[] = {
1252 { 0, "frame-reserved-1" },
1253 { 1, "frames-reserved-2" },
1254 { 2, "frames-reserved-3" },
1255 { 3, "frames-reserved-4" },
1256 { 4, "frames-reserved-6" },
1257 { 5, "frames-reserved-9" },
1258 { 6, "frames-reserved-12" },
1259 { 7, "frames-reserved-18" },
1265 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_
) {
1266 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1267 8, NULL
, false, 0, NULL
);
1273 static const value_string tetra_U_Plane_DTX_vals
[] = {
1274 { 0, "not-allowed" },
1281 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_
) {
1282 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1283 2, NULL
, false, 0, NULL
);
1289 static const value_string tetra_Frame_18_Extension_vals
[] = {
1290 { 0, "not-allowed" },
1297 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_
) {
1298 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1299 2, NULL
, false, 0, NULL
);
1305 static const value_string tetra_Reserved_vals
[] = {
1313 dissect_tetra_Reserved(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1314 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1315 2, NULL
, false, 0, NULL
);
1323 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_
) {
1324 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1325 0U, 1023U, NULL
, false);
1333 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_
) {
1334 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1335 0U, 16383U, NULL
, false);
1343 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_
) {
1344 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1345 0U, 1U, NULL
, false);
1351 static const per_sequence_t MLE_Sync_sequence
[] = {
1352 { &hf_tetra_mcc
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1023
},
1353 { &hf_tetra_mnc
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_16383
},
1354 { &hf_tetra_neighbour_cell_broadcast
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
1355 { &hf_tetra_cell_service_level
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
1356 { &hf_tetra_late_entry_information
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
1357 { NULL
, 0, 0, NULL
}
1361 dissect_tetra_MLE_Sync(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1362 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1363 ett_tetra_MLE_Sync
, MLE_Sync_sequence
);
1369 static const per_sequence_t BSCH_sequence
[] = {
1370 { &hf_tetra_system_code
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_System_Code
},
1371 { &hf_tetra_colour_code
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Colour_Code
},
1372 { &hf_tetra_timeslot_number
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Timeslot_Number
},
1373 { &hf_tetra_frame_number
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Frame_Number
},
1374 { &hf_tetra_multiple_frame_number
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Multiple_Frame_Number
},
1375 { &hf_tetra_sharing_mod
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Sharing_Mod
},
1376 { &hf_tetra_ts_reserved_frames
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_TS_Reserved_Frames
},
1377 { &hf_tetra_u_plane_dtx
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_U_Plane_DTX
},
1378 { &hf_tetra_frame_18_extension
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Frame_18_Extension
},
1379 { &hf_tetra_reserved
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Reserved
},
1380 { &hf_tetra_tm_sdu
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_MLE_Sync
},
1381 { NULL
, 0, 0, NULL
}
1385 dissect_tetra_BSCH(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1386 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1387 ett_tetra_BSCH
, BSCH_sequence
);
1395 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_
) {
1396 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1397 0U, 4095U, NULL
, false);
1405 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_
) {
1406 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1407 0U, 15U, NULL
, false);
1413 static const value_string tetra_Offset_vals
[] = {
1415 { 1, "offset-positive-6-point-25" },
1416 { 2, "offset-minus-6-point-25" },
1417 { 3, "offset-12-point-5" },
1423 dissect_tetra_Offset(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1424 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1425 4, NULL
, false, 0, NULL
);
1433 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_
) {
1434 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1435 0U, 7U, NULL
, false);
1441 static const value_string tetra_Reverse_Operation_vals
[] = {
1449 dissect_tetra_Reverse_Operation(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1450 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1451 2, NULL
, false, 0, NULL
);
1457 static const value_string tetra_Sencond_Ctl_Carrier_vals
[] = {
1459 { 1, "timeslot-2" },
1460 { 2, "timeslots-2and3" },
1461 { 3, "timeslots-2and3and4" },
1467 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_
) {
1468 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1469 4, NULL
, false, 0, NULL
);
1475 static const value_string tetra_MS_TXPWR_MAX_CELL_vals
[] = {
1489 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_
) {
1490 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1491 8, NULL
, false, 0, NULL
);
1497 static const value_string tetra_RXLEV_ACCESS_MIN_vals
[] = {
1519 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_
) {
1520 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1521 16, NULL
, false, 0, NULL
);
1527 static const value_string tetra_ACCESS_PARAMETER_vals
[] = {
1549 dissect_tetra_ACCESS_PARAMETER(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1550 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1551 16, NULL
, false, 0, NULL
);
1557 static const value_string tetra_RADIO_DOWNLINK_TIMEOUT_vals
[] = {
1559 { 1, "timeslots-144" },
1560 { 2, "timeslots-288" },
1561 { 3, "timeslots-432" },
1562 { 4, "timeslots-576" },
1563 { 5, "timeslots-720" },
1564 { 6, "timeslots-864" },
1565 { 7, "timeslots-1008" },
1566 { 8, "timeslots-1152" },
1567 { 9, "timeslots-1296" },
1568 { 10, "timeslots-1440" },
1569 { 11, "timeslots-1584" },
1570 { 12, "timeslots-1728" },
1571 { 13, "timeslots-1872" },
1572 { 14, "timeslots-2016" },
1573 { 15, "timeslots-2160" },
1579 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_
) {
1580 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1581 16, NULL
, false, 0, NULL
);
1589 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_
) {
1590 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1591 0U, 65535U, NULL
, false);
1597 static const value_string tetra_T_hyperframe_or_cck_vals
[] = {
1598 { 0, "hyperframe" },
1603 static const per_choice_t T_hyperframe_or_cck_choice
[] = {
1604 { 0, &hf_tetra_hyperframe
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_65535
},
1605 { 1, &hf_tetra_cckid
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_65535
},
1606 { 0, NULL
, 0, NULL
}
1610 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_
) {
1611 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
1612 ett_tetra_T_hyperframe_or_cck
, T_hyperframe_or_cck_choice
,
1619 static const value_string tetra_FRAME_vals
[] = {
1620 { 0, "not-common" },
1627 dissect_tetra_FRAME(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1628 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1629 2, NULL
, false, 0, NULL
);
1635 static const per_sequence_t TS_COMMON_FRAMES_sequence
[] = {
1636 { &hf_tetra_frame1
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_FRAME
},
1637 { &hf_tetra_frame2
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_FRAME
},
1638 { &hf_tetra_frame3
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_FRAME
},
1639 { &hf_tetra_frame4
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_FRAME
},
1640 { &hf_tetra_frame5
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_FRAME
},
1641 { &hf_tetra_frame6
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_FRAME
},
1642 { &hf_tetra_frame7
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_FRAME
},
1643 { &hf_tetra_frame8
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_FRAME
},
1644 { &hf_tetra_frame9
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_FRAME
},
1645 { &hf_tetra_frame10
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_FRAME
},
1646 { &hf_tetra_frame11
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_FRAME
},
1647 { &hf_tetra_frame12
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_FRAME
},
1648 { &hf_tetra_frame13
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_FRAME
},
1649 { &hf_tetra_frame14
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_FRAME
},
1650 { &hf_tetra_frame15
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_FRAME
},
1651 { &hf_tetra_frame16
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_FRAME
},
1652 { &hf_tetra_frame17
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_FRAME
},
1653 { &hf_tetra_frame18
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_FRAME
},
1654 { NULL
, 0, 0, NULL
}
1658 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_
) {
1659 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1660 ett_tetra_TS_COMMON_FRAMES
, TS_COMMON_FRAMES_sequence
);
1666 static const value_string tetra_IMM_vals
[] = {
1667 { 0, "always-randomize" },
1668 { 1, "randomize-after-imm-tdma" },
1669 { 2, "randomize-after-imm-tdma" },
1670 { 3, "randomize-after-imm-tdma" },
1671 { 4, "randomize-after-imm-tdma" },
1672 { 5, "randomize-after-imm-tdma" },
1673 { 6, "randomize-after-imm-tdma" },
1674 { 7, "randomize-after-imm-tdma" },
1675 { 8, "randomize-after-imm-tdma" },
1676 { 9, "randomize-after-imm-tdma" },
1677 { 10, "randomize-after-imm-tdma" },
1678 { 11, "randomize-after-imm-tdma" },
1679 { 12, "randomize-after-imm-tdma" },
1680 { 13, "randomize-after-imm-tdma" },
1681 { 14, "randomize-after-imm-tdma" },
1682 { 15, "immediate-access-allowed" },
1688 dissect_tetra_IMM(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1689 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1690 16, NULL
, false, 0, NULL
);
1696 static const value_string tetra_WT_vals
[] = {
1698 { 1, "response-within-wt-downlink" },
1699 { 2, "response-within-wt-downlink" },
1700 { 3, "response-within-wt-downlink" },
1701 { 4, "response-within-wt-downlink" },
1702 { 5, "response-within-wt-downlink" },
1703 { 6, "response-within-wt-downlink" },
1704 { 7, "response-within-wt-downlink" },
1705 { 8, "response-within-wt-downlink" },
1706 { 9, "response-within-wt-downlink" },
1707 { 10, "response-within-wt-downlink" },
1708 { 11, "response-within-wt-downlink" },
1709 { 12, "response-within-wt-downlink" },
1710 { 13, "response-within-wt-downlink" },
1711 { 14, "response-within-wt-downlink" },
1712 { 15, "response-within-wt-downlink" },
1718 dissect_tetra_WT(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1719 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1720 16, NULL
, false, 0, NULL
);
1726 static const value_string tetra_NU_vals
[] = {
1737 { 10, "random-10" },
1738 { 11, "random-11" },
1739 { 12, "random-12" },
1740 { 13, "random-13" },
1741 { 14, "random-14" },
1742 { 15, "random-15" },
1748 dissect_tetra_NU(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1749 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1750 16, NULL
, false, 0, NULL
);
1756 static const value_string tetra_Frame_Len_Factor_vals
[] = {
1757 { 0, "multiply-1" },
1758 { 1, "multiply-4" },
1764 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_
) {
1765 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1766 2, NULL
, false, 0, NULL
);
1772 static const value_string tetra_Timeslot_Pointer_vals
[] = {
1773 { 0, "same-as-downlink" },
1774 { 1, "timeslot-4" },
1775 { 2, "timeslot-bit-map" },
1776 { 3, "timeslot-bit-map" },
1777 { 4, "timeslot-bit-map" },
1778 { 5, "timeslot-bit-map" },
1779 { 6, "timeslot-bit-map" },
1780 { 7, "timeslot-bit-map" },
1781 { 8, "timeslot-bit-map" },
1782 { 9, "timeslot-bit-map" },
1783 { 10, "timeslot-bit-map" },
1784 { 11, "timeslot-bit-map" },
1785 { 12, "timeslot-bit-map" },
1786 { 13, "timeslot-bit-map" },
1787 { 14, "timeslot-bit-map" },
1788 { 15, "all-four-timeslots" },
1794 dissect_tetra_Timeslot_Pointer(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1795 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1796 16, NULL
, false, 0, NULL
);
1802 static const value_string tetra_Min_Pdu_Priority_vals
[] = {
1803 { 0, "priority-0" },
1804 { 1, "priority-1" },
1805 { 2, "priority-2" },
1806 { 3, "priority-3" },
1807 { 4, "priority-4" },
1808 { 5, "priority-5" },
1809 { 6, "priority-6" },
1810 { 7, "priority-7" },
1816 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_
) {
1817 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1818 8, NULL
, false, 0, NULL
);
1824 static const per_sequence_t Default_Code_A_sequence
[] = {
1825 { &hf_tetra_imm
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_IMM
},
1826 { &hf_tetra_wt
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_WT
},
1827 { &hf_tetra_nu
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_NU
},
1828 { &hf_tetra_frame_len_factor
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Frame_Len_Factor
},
1829 { &hf_tetra_timeslot_pointer
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Timeslot_Pointer
},
1830 { &hf_tetra_min_pdu_priority
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Min_Pdu_Priority
},
1831 { NULL
, 0, 0, NULL
}
1835 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_
) {
1836 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1837 ett_tetra_Default_Code_A
, Default_Code_A_sequence
);
1845 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_
) {
1846 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1847 0U, 255U, NULL
, false);
1853 static const value_string tetra_SDS_TL_Addressing_Method_vals
[] = {
1855 { 1, "service-centre" },
1856 { 2, "never-use-service-centre" },
1857 { 3, "ms-choice-to-use-service-centre" },
1863 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_
) {
1864 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1865 4, NULL
, false, 0, NULL
);
1871 static const value_string tetra_Data_Priority_Supported_vals
[] = {
1872 { 0, "not-supported" },
1879 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_
) {
1880 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1881 2, NULL
, false, 0, NULL
);
1887 static const value_string tetra_Section_Information_vals
[] = {
1888 { 0, "no-information" },
1889 { 1, "futher-information" },
1895 dissect_tetra_Section_Information(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1896 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1897 2, NULL
, false, 0, NULL
);
1903 static const per_sequence_t PRESENT1_sequence
[] = {
1904 { &hf_tetra_data_priority_supported
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Data_Priority_Supported
},
1905 { &hf_tetra_reserved_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_7
},
1906 { &hf_tetra_section_2_information
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Section_Information
},
1907 { &hf_tetra_section_3_information
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Section_Information
},
1908 { &hf_tetra_section_4_information
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Section_Information
},
1909 { NULL
, 0, 0, NULL
}
1913 dissect_tetra_PRESENT1(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1914 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1915 ett_tetra_PRESENT1
, PRESENT1_sequence
);
1923 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_
) {
1924 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1925 0U, 127U, NULL
, false);
1931 static const value_string tetra_T_section_vals
[] = {
1939 static const per_choice_t T_section_choice
[] = {
1940 { 0, &hf_tetra_present_1
, ASN1_NO_EXTENSIONS
, dissect_tetra_PRESENT1
},
1941 { 1, &hf_tetra_present_2
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_127
},
1942 { 2, &hf_tetra_present_3
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_127
},
1943 { 3, &hf_tetra_present_4
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_127
},
1944 { 0, NULL
, 0, NULL
}
1948 dissect_tetra_T_section(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1949 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
1950 ett_tetra_T_section
, T_section_choice
,
1957 static const per_sequence_t Extended_Services_Broadcast_sequence
[] = {
1958 { &hf_tetra_security_information
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_255
},
1959 { &hf_tetra_sds_tl_addressing_method
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_SDS_TL_Addressing_Method
},
1960 { &hf_tetra_gck_supported
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
1961 { &hf_tetra_section
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_section
},
1962 { NULL
, 0, 0, NULL
}
1966 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_
) {
1967 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1968 ett_tetra_Extended_Services_Broadcast
, Extended_Services_Broadcast_sequence
);
1974 static const value_string tetra_T_optional_params_vals
[] = {
1975 { 0, "even-multiframe" },
1976 { 1, "odd-multiframe" },
1977 { 2, "access-a-code" },
1978 { 3, "extend-service" },
1982 static const per_choice_t T_optional_params_choice
[] = {
1983 { 0, &hf_tetra_even_multiframe
, ASN1_NO_EXTENSIONS
, dissect_tetra_TS_COMMON_FRAMES
},
1984 { 1, &hf_tetra_odd_multiframe
, ASN1_NO_EXTENSIONS
, dissect_tetra_TS_COMMON_FRAMES
},
1985 { 2, &hf_tetra_access_a_code
, ASN1_NO_EXTENSIONS
, dissect_tetra_Default_Code_A
},
1986 { 3, &hf_tetra_extend_service
, ASN1_NO_EXTENSIONS
, dissect_tetra_Extended_Services_Broadcast
},
1987 { 0, NULL
, 0, NULL
}
1991 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_
) {
1992 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
1993 ett_tetra_T_optional_params
, T_optional_params_choice
,
2002 dissect_tetra_Subscriber_class(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2003 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
2004 16, 16, false, NULL
, 0, NULL
, NULL
);
2010 static const per_sequence_t BNCH_sequence
[] = {
2011 { &hf_tetra_pdu_type
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
2012 { &hf_tetra_broadcast_type
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
2013 { &hf_tetra_main_carrier
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_4095
},
2014 { &hf_tetra_frequency_band
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_15
},
2015 { &hf_tetra_offset
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Offset
},
2016 { &hf_tetra_duplex_spacing
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_7
},
2017 { &hf_tetra_reverse_operation
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Reverse_Operation
},
2018 { &hf_tetra_sencond_ctl_carrier
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Sencond_Ctl_Carrier
},
2019 { &hf_tetra_ms_txpwr_max_cell
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_MS_TXPWR_MAX_CELL
},
2020 { &hf_tetra_rxlev_access_min
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_RXLEV_ACCESS_MIN
},
2021 { &hf_tetra_access_parameter
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_ACCESS_PARAMETER
},
2022 { &hf_tetra_radio_downlink_timeout
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_RADIO_DOWNLINK_TIMEOUT
},
2023 { &hf_tetra_hyperframe_or_cck
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_hyperframe_or_cck
},
2024 { &hf_tetra_optional_params
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_optional_params
},
2025 { &hf_tetra_la
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_16383
},
2026 { &hf_tetra_subscriber_class
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Subscriber_class
},
2027 { &hf_tetra_registriation
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
2028 { &hf_tetra_de_registration
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
2029 { &hf_tetra_priority_cell
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
2030 { &hf_tetra_minimum_mode_service
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
2031 { &hf_tetra_migration
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
2032 { &hf_tetra_system_wide_service
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
2033 { &hf_tetra_tetra_voice_service
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
2034 { &hf_tetra_circuit_mode_data_service
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
2035 { &hf_tetra_reserved_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
2036 { &hf_tetra_sndcp_service
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
2037 { &hf_tetra_air_interface_encryption
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
2038 { &hf_tetra_advanced_link_support
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
2039 { NULL
, 0, 0, NULL
}
2043 dissect_tetra_BNCH(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2044 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2045 ett_tetra_BNCH
, BNCH_sequence
);
2051 static const value_string tetra_Fill_Bit_Indication_vals
[] = {
2052 { 0, "no-present" },
2059 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_
) {
2060 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
2061 2, NULL
, false, 0, NULL
);
2067 static const value_string tetra_Encrypted_Flag_vals
[] = {
2068 { 0, "not-encrypted" },
2075 dissect_tetra_Encrypted_Flag(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2076 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
2077 2, NULL
, false, 0, NULL
);
2085 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_
) {
2086 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
2087 0U, 16777215U, NULL
, false);
2093 static const value_string tetra_Address_vals
[] = {
2095 { 1, "eventLabel" },
2101 static const per_choice_t Address_choice
[] = {
2102 { 0, &hf_tetra_ssi
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_16777215
},
2103 { 1, &hf_tetra_eventLabel
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_1023
},
2104 { 2, &hf_tetra_ussi
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_16777215
},
2105 { 3, &hf_tetra_smi
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_16777215
},
2106 { 0, NULL
, 0, NULL
}
2110 dissect_tetra_Address(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2111 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2112 ett_tetra_Address
, Address_choice
,
2121 dissect_tetra_NULL(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2122 offset
= dissect_per_null(tvb
, offset
, actx
, tree
, hf_index
);
2128 static const value_string tetra_UPDATE_TYPE_vals
[] = {
2129 { 0, "roaming-location-updating" },
2130 { 1, "temporary-registration" },
2131 { 2, "periodic-location-updating" },
2132 { 3, "itsi-attach" },
2133 { 4, "call-restoration-roaming" },
2134 { 5, "migrating-or-call-restoration-migrating" },
2135 { 6, "demand-location-updating" },
2136 { 7, "disabled-MS-updating" },
2142 dissect_tetra_UPDATE_TYPE(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2143 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
2144 8, NULL
, false, 0, NULL
);
2152 dissect_tetra_BOOLEAN(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2153 offset
= dissect_per_boolean(tvb
, offset
, actx
, tree
, hf_index
, NULL
);
2159 static const value_string tetra_T_cipher_control_vals
[] = {
2161 { 1, "ciphering-parameters" },
2165 static const per_choice_t T_cipher_control_choice
[] = {
2166 { 0, &hf_tetra_no_cipher
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
2167 { 1, &hf_tetra_ciphering_parameters
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_1023
},
2168 { 0, NULL
, 0, NULL
}
2172 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_
) {
2173 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2174 ett_tetra_T_cipher_control
, T_cipher_control_choice
,
2181 static const value_string tetra_T_class_of_MS_vals
[] = {
2183 { 1, "class-of-MS" },
2187 static const per_choice_t T_class_of_MS_choice
[] = {
2188 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
2189 { 1, &hf_tetra_class_of_MS_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_16777215
},
2190 { 0, NULL
, 0, NULL
}
2194 dissect_tetra_T_class_of_MS(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2195 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2196 ett_tetra_T_class_of_MS
, T_class_of_MS_choice
,
2203 static const value_string tetra_T_energy_saving_mode_01_vals
[] = {
2205 { 1, "energy-saving-mode" },
2209 static const per_choice_t T_energy_saving_mode_01_choice
[] = {
2210 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
2211 { 1, &hf_tetra_energy_saving_mode_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_7
},
2212 { 0, NULL
, 0, NULL
}
2216 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_
) {
2217 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2218 ett_tetra_T_energy_saving_mode_01
, T_energy_saving_mode_01_choice
,
2225 static const value_string tetra_T_la_information_vals
[] = {
2227 { 1, "la-information" },
2231 static const per_choice_t T_la_information_choice
[] = {
2232 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
2233 { 1, &hf_tetra_la_information_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_16383
},
2234 { 0, NULL
, 0, NULL
}
2238 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_
) {
2239 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2240 ett_tetra_T_la_information
, T_la_information_choice
,
2249 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_
) {
2250 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
2257 static const value_string tetra_T_ssi_01_vals
[] = {
2263 static const per_choice_t T_ssi_01_choice
[] = {
2264 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
2265 { 1, &hf_tetra_ssi_03
, ASN1_NO_EXTENSIONS
, dissect_tetra_OCTET_STRING_SIZE_3
},
2266 { 0, NULL
, 0, NULL
}
2270 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_
) {
2271 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2272 ett_tetra_T_ssi_01
, T_ssi_01_choice
,
2279 static const value_string tetra_T_address_extension_01_vals
[] = {
2281 { 1, "address-extension" },
2285 static const per_choice_t T_address_extension_01_choice
[] = {
2286 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
2287 { 1, &hf_tetra_address_extension_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_OCTET_STRING_SIZE_3
},
2288 { 0, NULL
, 0, NULL
}
2292 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_
) {
2293 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2294 ett_tetra_T_address_extension_01
, T_address_extension_01_choice
,
2301 static const value_string tetra_TYPE3_IDENTIFIER_vals
[] = {
2303 { 1, "default-group-attachment-lifetime" },
2304 { 2, "new-registered-area" },
2305 { 3, "group-identity-location-demand" },
2306 { 4, "group-report-response" },
2307 { 5, "group-identity-location-accept" },
2308 { 6, "dm-ms-address" },
2309 { 7, "group-identity-downlink" },
2310 { 8, "group-identity-uplink" },
2311 { 9, "authentication-uplink" },
2312 { 10, "authentication-downlink" },
2314 { 12, "reserved1" },
2315 { 13, "reserved2" },
2316 { 14, "reserved3" },
2317 { 15, "proprietary" },
2323 dissect_tetra_TYPE3_IDENTIFIER(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2324 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
2325 16, NULL
, false, 0, NULL
);
2331 static const value_string tetra_T_group_identity_location_demand_vals
[] = {
2333 { 1, "group-identity-location-demand" },
2337 static const per_choice_t T_group_identity_location_demand_choice
[] = {
2338 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
2339 { 1, &hf_tetra_group_identity_location_demand_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_3
},
2340 { 0, NULL
, 0, NULL
}
2344 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_
) {
2345 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2346 ett_tetra_T_group_identity_location_demand
, T_group_identity_location_demand_choice
,
2353 static const value_string tetra_T_group_report_response_vals
[] = {
2355 { 1, "group-report-response" },
2359 static const per_choice_t T_group_report_response_choice
[] = {
2360 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
2361 { 1, &hf_tetra_group_report_response_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_BOOLEAN
},
2362 { 0, NULL
, 0, NULL
}
2366 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_
) {
2367 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2368 ett_tetra_T_group_report_response
, T_group_report_response_choice
,
2375 static const value_string tetra_T_group_identity_uplink_vals
[] = {
2377 { 1, "group-identity-uplink" },
2381 static const per_choice_t T_group_identity_uplink_choice
[] = {
2382 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
2383 { 1, &hf_tetra_group_identity_uplink_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_15
},
2384 { 0, NULL
, 0, NULL
}
2388 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_
) {
2389 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2390 ett_tetra_T_group_identity_uplink
, T_group_identity_uplink_choice
,
2397 static const value_string tetra_T_proprietary_01_vals
[] = {
2399 { 1, "proprietary" },
2403 static const per_choice_t T_proprietary_01_choice
[] = {
2404 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
2405 { 1, &hf_tetra_proprietary_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_7
},
2406 { 0, NULL
, 0, NULL
}
2410 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_
) {
2411 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2412 ett_tetra_T_proprietary_01
, T_proprietary_01_choice
,
2419 static const per_sequence_t T_type3_elements_01_sequence
[] = {
2420 { &hf_tetra_type3_identifier
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_TYPE3_IDENTIFIER
},
2421 { &hf_tetra_group_identity_location_demand
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_group_identity_location_demand
},
2422 { &hf_tetra_group_report_response
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_group_report_response
},
2423 { &hf_tetra_group_identity_uplink
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_group_identity_uplink
},
2424 { &hf_tetra_proprietary_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_proprietary_01
},
2425 { NULL
, 0, 0, NULL
}
2429 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_
) {
2430 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2431 ett_tetra_T_type3_elements_01
, T_type3_elements_01_sequence
);
2437 static const value_string tetra_T_type3_01_vals
[] = {
2439 { 1, "type3-elements" },
2443 static const per_choice_t T_type3_01_choice
[] = {
2444 { 0, &hf_tetra_no_type3
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
2445 { 1, &hf_tetra_type3_elements_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_type3_elements_01
},
2446 { 0, NULL
, 0, NULL
}
2450 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_
) {
2451 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2452 ett_tetra_T_type3_01
, T_type3_01_choice
,
2459 static const per_sequence_t T_type2_parameters_04_sequence
[] = {
2460 { &hf_tetra_class_of_MS
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_class_of_MS
},
2461 { &hf_tetra_energy_saving_mode_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_energy_saving_mode_01
},
2462 { &hf_tetra_la_information
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_la_information
},
2463 { &hf_tetra_ssi_04
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_ssi_01
},
2464 { &hf_tetra_address_extension_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_address_extension_01
},
2465 { &hf_tetra_type3_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_type3_01
},
2466 { NULL
, 0, 0, NULL
}
2470 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_
) {
2471 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2472 ett_tetra_T_type2_parameters_04
, T_type2_parameters_04_sequence
);
2478 static const value_string tetra_T_optional_elements_06_vals
[] = {
2480 { 1, "type2-parameters" },
2484 static const per_choice_t T_optional_elements_06_choice
[] = {
2485 { 0, &hf_tetra_no_type2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
2486 { 1, &hf_tetra_type2_parameters_04
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_type2_parameters_04
},
2487 { 0, NULL
, 0, NULL
}
2491 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_
) {
2492 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2493 ett_tetra_T_optional_elements_06
, T_optional_elements_06_choice
,
2500 static const per_sequence_t U_LOCATION_UPDATE_DEMAND_sequence
[] = {
2501 { &hf_tetra_location_update_type
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_UPDATE_TYPE
},
2502 { &hf_tetra_request_to_append_LA
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_BOOLEAN
},
2503 { &hf_tetra_cipher_control_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_cipher_control
},
2504 { &hf_tetra_optional_elements_06
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_optional_elements_06
},
2505 { NULL
, 0, 0, NULL
}
2509 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_
) {
2510 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2511 ett_tetra_U_LOCATION_UPDATE_DEMAND
, U_LOCATION_UPDATE_DEMAND_sequence
);
2513 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "U-LOCATION-UPDATE-DEMAND");
2519 static const value_string tetra_T_scanning_on_off_vals
[] = {
2527 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_
) {
2528 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
2529 2, NULL
, false, 0, NULL
);
2535 static const per_sequence_t U_MM_STATUS_sequence
[] = {
2536 { &hf_tetra_status_uplink
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_63
},
2537 { &hf_tetra_scanning_on_off
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_scanning_on_off
},
2538 { NULL
, 0, 0, NULL
}
2542 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_
) {
2543 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2544 ett_tetra_U_MM_STATUS
, U_MM_STATUS_sequence
);
2546 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "U-MM-STATUS");
2554 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_
) {
2555 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
2556 0U, 2047U, NULL
, false);
2562 static const per_sequence_t T_attach_01_sequence
[] = {
2563 { &hf_tetra_class_of_usage
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_7
},
2564 { NULL
, 0, 0, NULL
}
2568 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_
) {
2569 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2570 ett_tetra_T_attach_01
, T_attach_01_sequence
);
2576 static const value_string tetra_T_detach_uplike_vals
[] = {
2577 { 0, "unknow-gssi" },
2578 { 1, "invalid-cipher" },
2579 { 2, "user-intitial" },
2586 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_
) {
2587 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
2588 4, NULL
, false, 0, NULL
);
2594 static const per_sequence_t T_detach_01_sequence
[] = {
2595 { &hf_tetra_detach_uplike
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_detach_uplike
},
2596 { NULL
, 0, 0, NULL
}
2600 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_
) {
2601 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2602 ett_tetra_T_detach_01
, T_detach_01_sequence
);
2608 static const value_string tetra_T_attach_detach_identifier_01_vals
[] = {
2614 static const per_choice_t T_attach_detach_identifier_01_choice
[] = {
2615 { 0, &hf_tetra_attach_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_attach_01
},
2616 { 1, &hf_tetra_detach_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_detach_01
},
2617 { 0, NULL
, 0, NULL
}
2621 dissect_tetra_T_attach_detach_identifier_01(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2622 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2623 ett_tetra_T_attach_detach_identifier_01
, T_attach_detach_identifier_01_choice
,
2630 static const per_sequence_t T_gssi_extension_01_sequence
[] = {
2631 { &hf_tetra_gssi_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_OCTET_STRING_SIZE_3
},
2632 { &hf_tetra_extension
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_OCTET_STRING_SIZE_3
},
2633 { NULL
, 0, 0, NULL
}
2637 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_
) {
2638 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2639 ett_tetra_T_gssi_extension_01
, T_gssi_extension_01_sequence
);
2645 static const value_string tetra_T_address_type_01_vals
[] = {
2647 { 1, "gssi-extension" },
2652 static const per_choice_t T_address_type_01_choice
[] = {
2653 { 0, &hf_tetra_gssi_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_OCTET_STRING_SIZE_3
},
2654 { 1, &hf_tetra_gssi_extension_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_gssi_extension_01
},
2655 { 2, &hf_tetra_vgssi
, ASN1_NO_EXTENSIONS
, dissect_tetra_OCTET_STRING_SIZE_3
},
2656 { 0, NULL
, 0, NULL
}
2660 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_
) {
2661 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2662 ett_tetra_T_address_type_01
, T_address_type_01_choice
,
2669 static const per_sequence_t GROUP_IDENTITY_UPLINK_sequence
[] = {
2670 { &hf_tetra_attach_detach_identifier_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_attach_detach_identifier_01
},
2671 { &hf_tetra_address_type_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_address_type_01
},
2672 { NULL
, 0, 0, NULL
}
2676 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_
) {
2677 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2678 ett_tetra_GROUP_IDENTITY_UPLINK
, GROUP_IDENTITY_UPLINK_sequence
);
2684 static const per_sequence_t T_type3_elements_02_sequence
[] = {
2685 { &hf_tetra_type3_identifier
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_TYPE3_IDENTIFIER
},
2686 { &hf_tetra_length
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_2047
},
2687 { &hf_tetra_repeat_num
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_63
},
2688 { &hf_tetra_group_identity_uplink_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_GROUP_IDENTITY_UPLINK
},
2689 { NULL
, 0, 0, NULL
}
2693 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_
) {
2694 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2695 ett_tetra_T_type3_elements_02
, T_type3_elements_02_sequence
);
2701 static const value_string tetra_T_type3_02_vals
[] = {
2703 { 1, "type3-elements" },
2707 static const per_choice_t T_type3_02_choice
[] = {
2708 { 0, &hf_tetra_no_type3
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
2709 { 1, &hf_tetra_type3_elements_02
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_type3_elements_02
},
2710 { 0, NULL
, 0, NULL
}
2714 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_
) {
2715 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2716 ett_tetra_T_type3_02
, T_type3_02_choice
,
2723 static const per_sequence_t T_type2_element_sequence
[] = {
2724 { &hf_tetra_type3_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_type3_02
},
2725 { NULL
, 0, 0, NULL
}
2729 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_
) {
2730 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2731 ett_tetra_T_type2_element
, T_type2_element_sequence
);
2737 static const value_string tetra_T_optional_elements_07_vals
[] = {
2739 { 1, "type2-element" },
2743 static const per_choice_t T_optional_elements_07_choice
[] = {
2744 { 0, &hf_tetra_no_type2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
2745 { 1, &hf_tetra_type2_element
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_type2_element
},
2746 { 0, NULL
, 0, NULL
}
2750 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_
) {
2751 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2752 ett_tetra_T_optional_elements_07
, T_optional_elements_07_choice
,
2759 static const per_sequence_t U_ATTACH_DETACH_GROUP_IDENTITY_sequence
[] = {
2760 { &hf_tetra_group_identity_report
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_BOOLEAN
},
2761 { &hf_tetra_group_identity_attach_detach_mode
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_BOOLEAN
},
2762 { &hf_tetra_optional_elements_07
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_optional_elements_07
},
2763 { NULL
, 0, 0, NULL
}
2767 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_
) {
2768 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2769 ett_tetra_U_ATTACH_DETACH_GROUP_IDENTITY
, U_ATTACH_DETACH_GROUP_IDENTITY_sequence
);
2771 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "U-ATTACH-DETACH-GROUP-IDENTITY");
2777 static const per_sequence_t T_type3_elements_03_sequence
[] = {
2778 { &hf_tetra_type3_identifier
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_TYPE3_IDENTIFIER
},
2779 { &hf_tetra_length
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_2047
},
2780 { &hf_tetra_repeat_num
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_63
},
2781 { &hf_tetra_group_identity_uplink_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_GROUP_IDENTITY_UPLINK
},
2782 { NULL
, 0, 0, NULL
}
2786 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_
) {
2787 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2788 ett_tetra_T_type3_elements_03
, T_type3_elements_03_sequence
);
2794 static const value_string tetra_T_type3_03_vals
[] = {
2796 { 1, "type3-elements" },
2800 static const per_choice_t T_type3_03_choice
[] = {
2801 { 0, &hf_tetra_no_type3
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
2802 { 1, &hf_tetra_type3_elements_03
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_type3_elements_03
},
2803 { 0, NULL
, 0, NULL
}
2807 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_
) {
2808 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2809 ett_tetra_T_type3_03
, T_type3_03_choice
,
2816 static const per_sequence_t T_type2_element_01_sequence
[] = {
2817 { &hf_tetra_type3_03
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_type3_03
},
2818 { NULL
, 0, 0, NULL
}
2822 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_
) {
2823 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2824 ett_tetra_T_type2_element_01
, T_type2_element_01_sequence
);
2830 static const value_string tetra_T_optional_elements_08_vals
[] = {
2832 { 1, "type2-element" },
2836 static const per_choice_t T_optional_elements_08_choice
[] = {
2837 { 0, &hf_tetra_no_type2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
2838 { 1, &hf_tetra_type2_element_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_type2_element_01
},
2839 { 0, NULL
, 0, NULL
}
2843 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_
) {
2844 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2845 ett_tetra_T_optional_elements_08
, T_optional_elements_08_choice
,
2852 static const per_sequence_t U_ATTACH_DETACH_GROUP_IDENTITY_ACK_sequence
[] = {
2853 { &hf_tetra_group_identity_ack_type
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_BOOLEAN
},
2854 { &hf_tetra_group_identity_attach_detach_mode
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_BOOLEAN
},
2855 { &hf_tetra_optional_elements_08
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_optional_elements_08
},
2856 { NULL
, 0, 0, NULL
}
2860 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_
) {
2861 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2862 ett_tetra_U_ATTACH_DETACH_GROUP_IDENTITY_ACK
, U_ATTACH_DETACH_GROUP_IDENTITY_ACK_sequence
);
2864 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "U-ATTACH-DETACH-GROUP-IDENTITY-ACK");
2870 static const value_string tetra_U_MM_PDU_vals
[] = {
2871 { 0, "u-Authentication" },
2872 { 1, "u-Itsi-Detach" },
2873 { 2, "u-Location-Update-Demand" },
2874 { 3, "u-MM-Status" },
2875 { 4, "u-MM-reserved1" },
2877 { 6, "u-MM-reserved3" },
2878 { 7, "u-Attach-Detach-Group-Identity" },
2879 { 8, "u-Attach-Detach-Group-Identity-Ack" },
2880 { 9, "u-TEI-Provide" },
2881 { 10, "u-MM-reserved6" },
2882 { 11, "u-Disabled-Status" },
2883 { 12, "u-MM-reserved7" },
2884 { 13, "u-MM-reserved8" },
2885 { 14, "u-MM-reserved9" },
2886 { 15, "u-MM-Function-Not-Support" },
2890 static const per_choice_t U_MM_PDU_choice
[] = {
2891 { 0, &hf_tetra_u_Authentication
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
2892 { 1, &hf_tetra_u_Itsi_Detach
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
2893 { 2, &hf_tetra_u_Location_Update_Demand
, ASN1_NO_EXTENSIONS
, dissect_tetra_U_LOCATION_UPDATE_DEMAND
},
2894 { 3, &hf_tetra_u_MM_Status
, ASN1_NO_EXTENSIONS
, dissect_tetra_U_MM_STATUS
},
2895 { 4, &hf_tetra_u_MM_reserved1
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
2896 { 5, &hf_tetra_u_WK
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
2897 { 6, &hf_tetra_u_MM_reserved3
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
2898 { 7, &hf_tetra_u_Attach_Detach_Group_Identity
, ASN1_NO_EXTENSIONS
, dissect_tetra_U_ATTACH_DETACH_GROUP_IDENTITY
},
2899 { 8, &hf_tetra_u_Attach_Detach_Group_Identity_Ack
, ASN1_NO_EXTENSIONS
, dissect_tetra_U_ATTACH_DETACH_GROUP_IDENTITY_ACK
},
2900 { 9, &hf_tetra_u_TEI_Provide
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
2901 { 10, &hf_tetra_u_MM_reserved6
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
2902 { 11, &hf_tetra_u_Disabled_Status
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
2903 { 12, &hf_tetra_u_MM_reserved7
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
2904 { 13, &hf_tetra_u_MM_reserved8
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
2905 { 14, &hf_tetra_u_MM_reserved9
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
2906 { 15, &hf_tetra_u_MM_Function_Not_Support
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
2907 { 0, NULL
, 0, NULL
}
2911 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_
) {
2912 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2913 ett_tetra_U_MM_PDU
, U_MM_PDU_choice
,
2920 static const value_string tetra_T_simplex_duplex_selection_vals
[] = {
2928 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_
) {
2929 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
2930 2, NULL
, false, 0, NULL
);
2936 static const value_string tetra_CIRCUIT_vals
[] = {
2937 { 0, "speech-tch-s" },
2938 { 1, "unprotected-tch-7-2" },
2939 { 2, "low-protection-tch-4-8" },
2940 { 3, "low-protection-tch-4-8" },
2941 { 4, "low-protection-tch-4-8" },
2942 { 5, "high-protection-tch-2-4" },
2943 { 6, "high-protection-tch-2-4" },
2944 { 7, "high-protection-tch-2-4" },
2950 dissect_tetra_CIRCUIT(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2951 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
2952 8, NULL
, false, 0, NULL
);
2958 static const per_sequence_t Basic_service_information_sequence
[] = {
2959 { &hf_tetra_circuit_mode
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_CIRCUIT
},
2960 { &hf_tetra_encryption
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
2961 { &hf_tetra_communication
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
2962 { &hf_tetra_slots_or_speech
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
2963 { NULL
, 0, 0, NULL
}
2967 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_
) {
2968 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2969 ett_tetra_Basic_service_information
, Basic_service_information_sequence
);
2975 static const value_string tetra_T_basic_service_information_vals
[] = {
2977 { 1, "basic-service-information" },
2981 static const per_choice_t T_basic_service_information_choice
[] = {
2982 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
2983 { 1, &hf_tetra_basic_service_information
, ASN1_NO_EXTENSIONS
, dissect_tetra_Basic_service_information
},
2984 { 0, NULL
, 0, NULL
}
2988 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_
) {
2989 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2990 ett_tetra_T_basic_service_information
, T_basic_service_information_choice
,
2999 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_
) {
3000 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
3001 0U, 255U, NULL
, false);
3009 dissect_tetra_BIT_STRING(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
3010 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
3011 NO_BOUND
, NO_BOUND
, false, NULL
, 0, NULL
, NULL
);
3017 static const per_sequence_t Type1_sequence
[] = {
3018 { &hf_tetra_proprietary_element_owner
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Proprietary_element_owner
},
3019 { &hf_tetra_proprietary_element_owner_extension
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_BIT_STRING
},
3020 { NULL
, 0, 0, NULL
}
3024 dissect_tetra_Type1(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
3025 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
3026 ett_tetra_Type1
, Type1_sequence
);
3032 static const per_sequence_t Type2_sequence
[] = {
3033 { &hf_tetra_proprietary_element_owner
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Proprietary_element_owner
},
3034 { NULL
, 0, 0, NULL
}
3038 dissect_tetra_Type2(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
3039 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
3040 ett_tetra_Type2
, Type2_sequence
);
3046 static const value_string tetra_T_data_01_vals
[] = {
3052 static const per_choice_t T_data_01_choice
[] = {
3053 { 0, &hf_tetra_element1
, ASN1_NO_EXTENSIONS
, dissect_tetra_Type1
},
3054 { 1, &hf_tetra_element
, ASN1_NO_EXTENSIONS
, dissect_tetra_Type2
},
3055 { 0, NULL
, 0, NULL
}
3059 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_
) {
3060 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
3061 ett_tetra_T_data_01
, T_data_01_choice
,
3068 static const per_sequence_t Proprietary_sequence
[] = {
3069 { &hf_tetra_data_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_data_01
},
3070 { NULL
, 0, 0, NULL
}
3074 dissect_tetra_Proprietary(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
3075 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
3076 ett_tetra_Proprietary
, Proprietary_sequence
);
3082 static const value_string tetra_T_prop_01_vals
[] = {
3088 static const per_choice_t T_prop_01_choice
[] = {
3089 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
3090 { 1, &hf_tetra_prop_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_Proprietary
},
3091 { 0, NULL
, 0, NULL
}
3095 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_
) {
3096 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
3097 ett_tetra_T_prop_01
, T_prop_01_choice
,
3104 static const per_sequence_t T_type2_parameters_06_sequence
[] = {
3105 { &hf_tetra_basic_service_information_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_basic_service_information
},
3106 { &hf_tetra_prop_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_prop_01
},
3107 { NULL
, 0, 0, NULL
}
3111 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_
) {
3112 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
3113 ett_tetra_T_type2_parameters_06
, T_type2_parameters_06_sequence
);
3119 static const value_string tetra_T_optional_elements_10_vals
[] = {
3121 { 1, "type2-parameters" },
3125 static const per_choice_t T_optional_elements_10_choice
[] = {
3126 { 0, &hf_tetra_no_type2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
3127 { 1, &hf_tetra_type2_parameters_06
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_type2_parameters_06
},
3128 { 0, NULL
, 0, NULL
}
3132 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_
) {
3133 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
3134 ett_tetra_T_optional_elements_10
, T_optional_elements_10_choice
,
3141 static const per_sequence_t U_ALERT_sequence
[] = {
3142 { &hf_tetra_call_identifier_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1023
},
3143 { &hf_tetra_reserved_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
3144 { &hf_tetra_simplex_duplex_selection
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_simplex_duplex_selection
},
3145 { &hf_tetra_optional_elements_10
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_optional_elements_10
},
3146 { NULL
, 0, 0, NULL
}
3150 dissect_tetra_U_ALERT(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
3151 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
3152 ett_tetra_U_ALERT
, U_ALERT_sequence
);
3154 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "U-ALERT");
3160 static const value_string tetra_T_simplex_duplex_selection_01_vals
[] = {
3168 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_
) {
3169 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
3170 2, NULL
, false, 0, NULL
);
3176 static const value_string tetra_T_basic_service_information_01_vals
[] = {
3178 { 1, "basic-service-information" },
3182 static const per_choice_t T_basic_service_information_01_choice
[] = {
3183 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
3184 { 1, &hf_tetra_basic_service_information
, ASN1_NO_EXTENSIONS
, dissect_tetra_Basic_service_information
},
3185 { 0, NULL
, 0, NULL
}
3189 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_
) {
3190 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
3191 ett_tetra_T_basic_service_information_01
, T_basic_service_information_01_choice
,
3198 static const value_string tetra_T_prop_02_vals
[] = {
3204 static const per_choice_t T_prop_02_choice
[] = {
3205 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
3206 { 1, &hf_tetra_prop_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_Proprietary
},
3207 { 0, NULL
, 0, NULL
}
3211 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_
) {
3212 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
3213 ett_tetra_T_prop_02
, T_prop_02_choice
,
3220 static const per_sequence_t T_type2_parameters_07_sequence
[] = {
3221 { &hf_tetra_basic_service_information_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_basic_service_information_01
},
3222 { &hf_tetra_prop_03
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_prop_02
},
3223 { NULL
, 0, 0, NULL
}
3227 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_
) {
3228 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
3229 ett_tetra_T_type2_parameters_07
, T_type2_parameters_07_sequence
);
3235 static const value_string tetra_T_optional_elements_11_vals
[] = {
3237 { 1, "type2-parameters" },
3241 static const per_choice_t T_optional_elements_11_choice
[] = {
3242 { 0, &hf_tetra_no_type2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
3243 { 1, &hf_tetra_type2_parameters_07
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_type2_parameters_07
},
3244 { 0, NULL
, 0, NULL
}
3248 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_
) {
3249 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
3250 ett_tetra_T_optional_elements_11
, T_optional_elements_11_choice
,
3257 static const per_sequence_t U_CONNECT_sequence
[] = {
3258 { &hf_tetra_call_identifier_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1023
},
3259 { &hf_tetra_hook_method_selection
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_BOOLEAN
},
3260 { &hf_tetra_simplex_duplex_selection_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_simplex_duplex_selection_01
},
3261 { &hf_tetra_optional_elements_11
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_optional_elements_11
},
3262 { NULL
, 0, 0, NULL
}
3266 dissect_tetra_U_CONNECT(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
3267 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
3268 ett_tetra_U_CONNECT
, U_CONNECT_sequence
);
3270 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "U-CONNECT");
3278 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_
) {
3279 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
3280 0U, 31U, NULL
, false);
3286 static const value_string tetra_T_prop_05_vals
[] = {
3292 static const per_choice_t T_prop_05_choice
[] = {
3293 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
3294 { 1, &hf_tetra_prop_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_Proprietary
},
3295 { 0, NULL
, 0, NULL
}
3299 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_
) {
3300 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
3301 ett_tetra_T_prop_05
, T_prop_05_choice
,
3308 static const per_sequence_t T_type2_parameters_10_sequence
[] = {
3309 { &hf_tetra_prop_06
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_prop_05
},
3310 { NULL
, 0, 0, NULL
}
3314 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_
) {
3315 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
3316 ett_tetra_T_type2_parameters_10
, T_type2_parameters_10_sequence
);
3322 static const value_string tetra_T_optional_elements_14_vals
[] = {
3324 { 1, "type2-parameters" },
3328 static const per_choice_t T_optional_elements_14_choice
[] = {
3329 { 0, &hf_tetra_no_type2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
3330 { 1, &hf_tetra_type2_parameters_10
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_type2_parameters_10
},
3331 { 0, NULL
, 0, NULL
}
3335 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_
) {
3336 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
3337 ett_tetra_T_optional_elements_14
, T_optional_elements_14_choice
,
3344 static const per_sequence_t U_DISCONNECT_sequence
[] = {
3345 { &hf_tetra_call_identifier_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1023
},
3346 { &hf_tetra_disconnect_cause
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_31
},
3347 { &hf_tetra_optional_elements_14
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_optional_elements_14
},
3348 { NULL
, 0, 0, NULL
}
3352 dissect_tetra_U_DISCONNECT(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
3353 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
3354 ett_tetra_U_DISCONNECT
, U_DISCONNECT_sequence
);
3356 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "U-DISCONNECT");
3362 static const per_sequence_t U_INFO_sequence
[] = {
3363 { &hf_tetra_call_id
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_16383
},
3364 { &hf_tetra_poll_response
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
3365 { NULL
, 0, 0, NULL
}
3369 dissect_tetra_U_INFO(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
3370 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
3371 ett_tetra_U_INFO
, U_INFO_sequence
);
3377 static const per_sequence_t U_RELEASE_sequence
[] = {
3378 { &hf_tetra_call_identifier
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_16383
},
3379 { &hf_tetra_disconnect_cause
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_31
},
3380 { NULL
, 0, 0, NULL
}
3384 dissect_tetra_U_RELEASE(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
3385 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
3386 ett_tetra_U_RELEASE
, U_RELEASE_sequence
);
3388 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "U-RELEASE");
3389 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
3390 ett_tetra_U_RELEASE
, U_RELEASE_sequence
);
3392 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "U-RELEASE");
3398 static const value_string tetra_T_simple_duplex_selection_vals
[] = {
3406 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_
) {
3407 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
3408 2, NULL
, false, 0, NULL
);
3414 static const per_sequence_t T_called_party_ssi_extension_sequence
[] = {
3415 { &hf_tetra_called_party_ssi
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_16777215
},
3416 { &hf_tetra_called_party_extention
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_16777215
},
3417 { NULL
, 0, 0, NULL
}
3421 dissect_tetra_T_called_party_ssi_extension(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
3422 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
3423 ett_tetra_T_called_party_ssi_extension
, T_called_party_ssi_extension_sequence
);
3429 static const value_string tetra_Calling_party_address_type_vals
[] = {
3430 { 0, "called-party-sna" },
3431 { 1, "called-party-ssi" },
3432 { 2, "called-party-ssi-extension" },
3436 static const per_choice_t Calling_party_address_type_choice
[] = {
3437 { 0, &hf_tetra_called_party_sna
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_255
},
3438 { 1, &hf_tetra_called_party_ssi
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_16777215
},
3439 { 2, &hf_tetra_called_party_ssi_extension
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_called_party_ssi_extension
},
3440 { 0, NULL
, 0, NULL
}
3444 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_
) {
3445 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
3446 ett_tetra_Calling_party_address_type
, Calling_party_address_type_choice
,
3455 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_
) {
3456 offset
= dissect_tetra_Calling_party_address_type(tvb
, offset
, actx
, tree
, hf_index
);
3462 static const value_string tetra_T_external_subscriber_number_vals
[] = {
3464 { 1, "external-subscriber-number" },
3468 static const per_choice_t T_external_subscriber_number_choice
[] = {
3469 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
3470 { 1, &hf_tetra_external_subscriber_number_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_31
},
3471 { 0, NULL
, 0, NULL
}
3475 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_
) {
3476 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
3477 ett_tetra_T_external_subscriber_number
, T_external_subscriber_number_choice
,
3484 static const value_string tetra_T_prop_vals
[] = {
3490 static const per_choice_t T_prop_choice
[] = {
3491 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
3492 { 1, &hf_tetra_prop_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_Proprietary
},
3493 { 0, NULL
, 0, NULL
}
3497 dissect_tetra_T_prop(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
3498 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
3499 ett_tetra_T_prop
, T_prop_choice
,
3506 static const per_sequence_t T_type2_parameters_05_sequence
[] = {
3507 { &hf_tetra_external_subscriber_number
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_external_subscriber_number
},
3508 { &hf_tetra_prop
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_prop
},
3509 { NULL
, 0, 0, NULL
}
3513 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_
) {
3514 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
3515 ett_tetra_T_type2_parameters_05
, T_type2_parameters_05_sequence
);
3521 static const value_string tetra_T_optional_elements_09_vals
[] = {
3523 { 1, "type2-parameters" },
3527 static const per_choice_t T_optional_elements_09_choice
[] = {
3528 { 0, &hf_tetra_no_type2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
3529 { 1, &hf_tetra_type2_parameters_05
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_type2_parameters_05
},
3530 { 0, NULL
, 0, NULL
}
3534 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_
) {
3535 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
3536 ett_tetra_T_optional_elements_09
, T_optional_elements_09_choice
,
3543 static const per_sequence_t U_SETUP_sequence
[] = {
3544 { &hf_tetra_area_selection
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_15
},
3545 { &hf_tetra_hook_method_selection
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_BOOLEAN
},
3546 { &hf_tetra_simple_duplex_selection
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_simple_duplex_selection
},
3547 { &hf_tetra_basic_service_information
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Basic_service_information
},
3548 { &hf_tetra_request_transmit_send_data
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
3549 { &hf_tetra_call_priority
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_15
},
3550 { &hf_tetra_clir_control
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
3551 { &hf_tetra_called_party_address
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Called_party_address_type
},
3552 { &hf_tetra_optional_elements_09
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_optional_elements_09
},
3553 { NULL
, 0, 0, NULL
}
3557 dissect_tetra_U_SETUP(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
3558 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
3559 ett_tetra_U_SETUP
, U_SETUP_sequence
);
3561 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "U-SETUP");
3569 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_
) {
3570 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
3571 48, 48, false, NULL
, 0, NULL
, NULL
);
3577 static const value_string tetra_T_called_party_type_identifier_01_vals
[] = {
3578 { 0, "short-number-address" },
3580 { 2, "called-ssi-called-extension" },
3585 static const per_choice_t T_called_party_type_identifier_01_choice
[] = {
3586 { 0, &hf_tetra_short_number_address
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_255
},
3587 { 1, &hf_tetra_ssi
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_16777215
},
3588 { 2, &hf_tetra_called_ssi_called_extension
, ASN1_NO_EXTENSIONS
, dissect_tetra_BIT_STRING_SIZE_48
},
3589 { 3, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
3590 { 0, NULL
, 0, NULL
}
3594 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_
) {
3595 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
3596 ett_tetra_T_called_party_type_identifier_01
, T_called_party_type_identifier_01_choice
,
3603 static const per_sequence_t U_STATUS_sequence
[] = {
3604 { &hf_tetra_area_selection
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_15
},
3605 { &hf_tetra_called_party_type_identifier_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_called_party_type_identifier_01
},
3606 { &hf_tetra_pre_coded_status
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_65535
},
3607 { NULL
, 0, 0, NULL
}
3611 dissect_tetra_U_STATUS(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
3612 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
3613 ett_tetra_U_STATUS
, U_STATUS_sequence
);
3615 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "U-STATUS");
3621 static const value_string tetra_T_prop_03_vals
[] = {
3627 static const per_choice_t T_prop_03_choice
[] = {
3628 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
3629 { 1, &hf_tetra_prop_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_Proprietary
},
3630 { 0, NULL
, 0, NULL
}
3634 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_
) {
3635 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
3636 ett_tetra_T_prop_03
, T_prop_03_choice
,
3643 static const per_sequence_t T_type2_parameters_08_sequence
[] = {
3644 { &hf_tetra_prop_04
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_prop_03
},
3645 { NULL
, 0, 0, NULL
}
3649 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_
) {
3650 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
3651 ett_tetra_T_type2_parameters_08
, T_type2_parameters_08_sequence
);
3657 static const value_string tetra_T_optional_elements_12_vals
[] = {
3659 { 1, "type2-parameters" },
3663 static const per_choice_t T_optional_elements_12_choice
[] = {
3664 { 0, &hf_tetra_no_type2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
3665 { 1, &hf_tetra_type2_parameters_08
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_type2_parameters_08
},
3666 { 0, NULL
, 0, NULL
}
3670 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_
) {
3671 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
3672 ett_tetra_T_optional_elements_12
, T_optional_elements_12_choice
,
3679 static const per_sequence_t U_TX_CEASED_sequence
[] = {
3680 { &hf_tetra_call_identifier_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1023
},
3681 { &hf_tetra_optional_elements_12
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_optional_elements_12
},
3682 { NULL
, 0, 0, NULL
}
3686 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_
) {
3687 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
3688 ett_tetra_U_TX_CEASED
, U_TX_CEASED_sequence
);
3690 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "U-TX-CEASED");
3696 static const value_string tetra_T_prop_04_vals
[] = {
3702 static const per_choice_t T_prop_04_choice
[] = {
3703 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
3704 { 1, &hf_tetra_prop_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_Proprietary
},
3705 { 0, NULL
, 0, NULL
}
3709 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_
) {
3710 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
3711 ett_tetra_T_prop_04
, T_prop_04_choice
,
3718 static const per_sequence_t T_type2_parameters_09_sequence
[] = {
3719 { &hf_tetra_prop_05
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_prop_04
},
3720 { NULL
, 0, 0, NULL
}
3724 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_
) {
3725 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
3726 ett_tetra_T_type2_parameters_09
, T_type2_parameters_09_sequence
);
3732 static const value_string tetra_T_optional_elements_13_vals
[] = {
3734 { 1, "type2-parameters" },
3738 static const per_choice_t T_optional_elements_13_choice
[] = {
3739 { 0, &hf_tetra_no_type2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
3740 { 1, &hf_tetra_type2_parameters_09
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_type2_parameters_09
},
3741 { 0, NULL
, 0, NULL
}
3745 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_
) {
3746 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
3747 ett_tetra_T_optional_elements_13
, T_optional_elements_13_choice
,
3754 static const per_sequence_t U_TX_DEMAND_sequence
[] = {
3755 { &hf_tetra_call_identifier_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1023
},
3756 { &hf_tetra_tx_demand_priority
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
3757 { &hf_tetra_encryption_control
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
3758 { &hf_tetra_reserved_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
3759 { &hf_tetra_optional_elements_13
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_optional_elements_13
},
3760 { NULL
, 0, 0, NULL
}
3764 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_
) {
3765 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
3766 ett_tetra_U_TX_DEMAND
, U_TX_DEMAND_sequence
);
3768 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "U-TX-DEMAND");
3776 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_
) {
3777 offset
= dissect_tetra_Calling_party_address_type(tvb
, offset
, actx
, tree
, hf_index
);
3783 static const value_string tetra_T_prop_06_vals
[] = {
3789 static const per_choice_t T_prop_06_choice
[] = {
3790 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
3791 { 1, &hf_tetra_prop_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_Proprietary
},
3792 { 0, NULL
, 0, NULL
}
3796 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_
) {
3797 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
3798 ett_tetra_T_prop_06
, T_prop_06_choice
,
3805 static const per_sequence_t T_type2_parameters_11_sequence
[] = {
3806 { &hf_tetra_prop_07
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_prop_06
},
3807 { NULL
, 0, 0, NULL
}
3811 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_
) {
3812 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
3813 ett_tetra_T_type2_parameters_11
, T_type2_parameters_11_sequence
);
3819 static const value_string tetra_T_optional_elements_15_vals
[] = {
3821 { 1, "type2-parameters" },
3825 static const per_choice_t T_optional_elements_15_choice
[] = {
3826 { 0, &hf_tetra_no_type2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
3827 { 1, &hf_tetra_type2_parameters_11
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_type2_parameters_11
},
3828 { 0, NULL
, 0, NULL
}
3832 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_
) {
3833 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
3834 ett_tetra_T_optional_elements_15
, T_optional_elements_15_choice
,
3841 static const per_sequence_t U_CALL_RESTORE_sequence
[] = {
3842 { &hf_tetra_call_identifier_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1023
},
3843 { &hf_tetra_request_to_transmit_send_data
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
3844 { &hf_tetra_other_party_address
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Other_party_address_type
},
3845 { &hf_tetra_basic_service_information
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Basic_service_information
},
3846 { &hf_tetra_optional_elements_15
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_optional_elements_15
},
3847 { NULL
, 0, 0, NULL
}
3851 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_
) {
3852 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
3853 ett_tetra_U_CALL_RESTORE
, U_CALL_RESTORE_sequence
);
3855 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "U-CALL-RESTORE");
3861 static const value_string tetra_T_called_party_type_identifier_vals
[] = {
3864 { 2, "ssi-extension" },
3869 static const per_choice_t T_called_party_type_identifier_choice
[] = {
3870 { 0, &hf_tetra_sna
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_255
},
3871 { 1, &hf_tetra_ssi
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_16777215
},
3872 { 2, &hf_tetra_ssi_extension
, ASN1_NO_EXTENSIONS
, dissect_tetra_BIT_STRING_SIZE_48
},
3873 { 3, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
3874 { 0, NULL
, 0, NULL
}
3878 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_
) {
3879 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
3880 ett_tetra_T_called_party_type_identifier
, T_called_party_type_identifier_choice
,
3889 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_
) {
3890 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
3899 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_
) {
3900 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
3901 64, 64, false, NULL
, 0, NULL
, NULL
);
3909 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_
) {
3910 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
3911 0U, 4194304U, NULL
, false);
3917 static const value_string tetra_T_short_data_type_identifier_vals
[] = {
3921 { 3, "length-indicator-data-4" },
3925 static const per_choice_t T_short_data_type_identifier_choice
[] = {
3926 { 0, &hf_tetra_data_1
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_65535
},
3927 { 1, &hf_tetra_data_2
, ASN1_NO_EXTENSIONS
, dissect_tetra_OCTET_STRING_SIZE_4
},
3928 { 2, &hf_tetra_data_3
, ASN1_NO_EXTENSIONS
, dissect_tetra_BIT_STRING_SIZE_64
},
3929 { 3, &hf_tetra_length_indicator_data_4
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_4194304
},
3930 { 0, NULL
, 0, NULL
}
3934 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_
) {
3935 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
3936 ett_tetra_T_short_data_type_identifier
, T_short_data_type_identifier_choice
,
3943 static const per_sequence_t U_SDS_DATA_sequence
[] = {
3944 { &hf_tetra_area_selection
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_15
},
3945 { &hf_tetra_called_party_type_identifier
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_called_party_type_identifier
},
3946 { &hf_tetra_short_data_type_identifier
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_short_data_type_identifier
},
3947 { NULL
, 0, 0, NULL
}
3951 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_
) {
3952 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
3953 ett_tetra_U_SDS_DATA
, U_SDS_DATA_sequence
);
3955 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "U-SDS-DATA");
3961 static const value_string tetra_U_CMCE_PDU_vals
[] = {
3966 { 4, "u-Disconnect" },
3971 { 9, "u-Tx-Ceased" },
3972 { 10, "u-Tx-Demand" },
3973 { 11, "reserved3" },
3974 { 12, "reserved4" },
3975 { 13, "reserved5" },
3976 { 14, "u-Call-Restore" },
3977 { 15, "u-SDS-Data" },
3978 { 16, "u-Facility" },
3982 static const per_choice_t U_CMCE_PDU_choice
[] = {
3983 { 0, &hf_tetra_u_Alert
, ASN1_NO_EXTENSIONS
, dissect_tetra_U_ALERT
},
3984 { 1, &hf_tetra_reserved1
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
3985 { 2, &hf_tetra_u_Connect
, ASN1_NO_EXTENSIONS
, dissect_tetra_U_CONNECT
},
3986 { 3, &hf_tetra_reserved2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
3987 { 4, &hf_tetra_u_Disconnect
, ASN1_NO_EXTENSIONS
, dissect_tetra_U_DISCONNECT
},
3988 { 5, &hf_tetra_u_Info
, ASN1_NO_EXTENSIONS
, dissect_tetra_U_INFO
},
3989 { 6, &hf_tetra_u_Release
, ASN1_NO_EXTENSIONS
, dissect_tetra_U_RELEASE
},
3990 { 7, &hf_tetra_u_Setup
, ASN1_NO_EXTENSIONS
, dissect_tetra_U_SETUP
},
3991 { 8, &hf_tetra_u_Status
, ASN1_NO_EXTENSIONS
, dissect_tetra_U_STATUS
},
3992 { 9, &hf_tetra_u_Tx_Ceased
, ASN1_NO_EXTENSIONS
, dissect_tetra_U_TX_CEASED
},
3993 { 10, &hf_tetra_u_Tx_Demand
, ASN1_NO_EXTENSIONS
, dissect_tetra_U_TX_DEMAND
},
3994 { 11, &hf_tetra_reserved3
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
3995 { 12, &hf_tetra_reserved4
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
3996 { 13, &hf_tetra_reserved5
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
3997 { 14, &hf_tetra_u_Call_Restore
, ASN1_NO_EXTENSIONS
, dissect_tetra_U_CALL_RESTORE
},
3998 { 15, &hf_tetra_u_SDS_Data
, ASN1_NO_EXTENSIONS
, dissect_tetra_U_SDS_DATA
},
3999 { 16, &hf_tetra_u_Facility
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
4000 { 0, NULL
, 0, NULL
}
4004 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_
) {
4005 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
4006 ett_tetra_U_CMCE_PDU
, U_CMCE_PDU_choice
,
4013 static const value_string tetra_T_cell_number_vals
[] = {
4015 { 1, "cell-number" },
4019 static const per_choice_t T_cell_number_choice
[] = {
4020 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
4021 { 1, &hf_tetra_cell_number_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_65535
},
4022 { 0, NULL
, 0, NULL
}
4026 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_
) {
4027 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
4028 ett_tetra_T_cell_number
, T_cell_number_choice
,
4035 static const per_sequence_t T_type2_parameters_sequence
[] = {
4036 { &hf_tetra_cell_number
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_cell_number
},
4037 { &hf_tetra_sdu
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_BIT_STRING
},
4038 { NULL
, 0, 0, NULL
}
4042 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_
) {
4043 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
4044 ett_tetra_T_type2_parameters
, T_type2_parameters_sequence
);
4050 static const value_string tetra_T_optional_elements_vals
[] = {
4052 { 1, "type2-parameters" },
4056 static const per_choice_t T_optional_elements_choice
[] = {
4057 { 0, &hf_tetra_no_type2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
4058 { 1, &hf_tetra_type2_parameters
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_type2_parameters
},
4059 { 0, NULL
, 0, NULL
}
4063 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_
) {
4064 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
4065 ett_tetra_T_optional_elements
, T_optional_elements_choice
,
4072 static const per_sequence_t U_PREPARE_sequence
[] = {
4073 { &hf_tetra_pdu_type_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_7
},
4074 { &hf_tetra_optional_elements
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_optional_elements
},
4075 { NULL
, 0, 0, NULL
}
4079 dissect_tetra_U_PREPARE(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
4080 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
4081 ett_tetra_U_PREPARE
, U_PREPARE_sequence
);
4087 static const value_string tetra_T_mcc_vals
[] = {
4093 static const per_choice_t T_mcc_choice
[] = {
4094 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
4095 { 1, &hf_tetra_mcc
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_1023
},
4096 { 0, NULL
, 0, NULL
}
4100 dissect_tetra_T_mcc(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
4101 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
4102 ett_tetra_T_mcc
, T_mcc_choice
,
4109 static const value_string tetra_T_mnc_vals
[] = {
4115 static const per_choice_t T_mnc_choice
[] = {
4116 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
4117 { 1, &hf_tetra_mnc
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_16383
},
4118 { 0, NULL
, 0, NULL
}
4122 dissect_tetra_T_mnc(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
4123 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
4124 ett_tetra_T_mnc
, T_mnc_choice
,
4131 static const value_string tetra_T_la_vals
[] = {
4137 static const per_choice_t T_la_choice
[] = {
4138 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
4139 { 1, &hf_tetra_la
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_16383
},
4140 { 0, NULL
, 0, NULL
}
4144 dissect_tetra_T_la(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
4145 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
4146 ett_tetra_T_la
, T_la_choice
,
4153 static const per_sequence_t T_type2_parameters_01_sequence
[] = {
4154 { &hf_tetra_mcc_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_mcc
},
4155 { &hf_tetra_mnc_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_mnc
},
4156 { &hf_tetra_la_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_la
},
4157 { &hf_tetra_sdu
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_BIT_STRING
},
4158 { NULL
, 0, 0, NULL
}
4162 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_
) {
4163 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
4164 ett_tetra_T_type2_parameters_01
, T_type2_parameters_01_sequence
);
4170 static const value_string tetra_T_optional_elements_01_vals
[] = {
4172 { 1, "type2-parameters" },
4176 static const per_choice_t T_optional_elements_01_choice
[] = {
4177 { 0, &hf_tetra_no_type2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
4178 { 1, &hf_tetra_type2_parameters_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_type2_parameters_01
},
4179 { 0, NULL
, 0, NULL
}
4183 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_
) {
4184 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
4185 ett_tetra_T_optional_elements_01
, T_optional_elements_01_choice
,
4192 static const per_sequence_t U_RESTORE_sequence
[] = {
4193 { &hf_tetra_pdu_type_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_7
},
4194 { &hf_tetra_optional_elements_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_optional_elements_01
},
4195 { NULL
, 0, 0, NULL
}
4199 dissect_tetra_U_RESTORE(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
4200 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
4201 ett_tetra_U_RESTORE
, U_RESTORE_sequence
);
4207 static const value_string tetra_UMLE_PDU_vals
[] = {
4209 { 1, "umle-reserved1" },
4210 { 2, "umle-reserved2" },
4211 { 3, "umle-reserved3" },
4213 { 5, "umle-reserved4" },
4214 { 6, "umle-reserved5" },
4215 { 7, "umle-reserved6" },
4219 static const per_choice_t UMLE_PDU_choice
[] = {
4220 { 0, &hf_tetra_u_prepare
, ASN1_NO_EXTENSIONS
, dissect_tetra_U_PREPARE
},
4221 { 1, &hf_tetra_umle_reserved1
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
4222 { 2, &hf_tetra_umle_reserved2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
4223 { 3, &hf_tetra_umle_reserved3
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
4224 { 4, &hf_tetra_u_restore
, ASN1_NO_EXTENSIONS
, dissect_tetra_U_RESTORE
},
4225 { 5, &hf_tetra_umle_reserved4
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
4226 { 6, &hf_tetra_umle_reserved5
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
4227 { 7, &hf_tetra_umle_reserved6
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
4228 { 0, NULL
, 0, NULL
}
4232 dissect_tetra_UMLE_PDU(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
4233 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
4234 ett_tetra_UMLE_PDU
, UMLE_PDU_choice
,
4241 static const value_string tetra_U_MLE_PDU_vals
[] = {
4242 { 0, "u-mle-reserved1" },
4245 { 3, "u-mle-reserved2" },
4248 { 6, "tetra-management-entity-protocol" },
4249 { 7, "u-mle-reserved3" },
4253 static const per_choice_t U_MLE_PDU_choice
[] = {
4254 { 0, &hf_tetra_u_mle_reserved1
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
4255 { 1, &hf_tetra_mm
, ASN1_NO_EXTENSIONS
, dissect_tetra_U_MM_PDU
},
4256 { 2, &hf_tetra_cmce
, ASN1_NO_EXTENSIONS
, dissect_tetra_U_CMCE_PDU
},
4257 { 3, &hf_tetra_u_mle_reserved2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
4258 { 4, &hf_tetra_sndcp
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
4259 { 5, &hf_tetra_mle
, ASN1_NO_EXTENSIONS
, dissect_tetra_UMLE_PDU
},
4260 { 6, &hf_tetra_tetra_management_entity_protocol
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
4261 { 7, &hf_tetra_u_mle_reserved3
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
4262 { 0, NULL
, 0, NULL
}
4266 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_
) {
4267 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
4268 ett_tetra_U_MLE_PDU
, U_MLE_PDU_choice
,
4275 static const per_sequence_t U_BL_ADATA_sequence
[] = {
4276 { &hf_tetra_nr
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
4277 { &hf_tetra_ns
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
4278 { &hf_tetra_tl_sdu
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_U_MLE_PDU
},
4279 { NULL
, 0, 0, NULL
}
4283 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_
) {
4284 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
4285 ett_tetra_U_BL_ADATA
, U_BL_ADATA_sequence
);
4291 static const per_sequence_t U_BL_DATA_sequence
[] = {
4292 { &hf_tetra_ns
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
4293 { &hf_tetra_tl_sdu
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_U_MLE_PDU
},
4294 { NULL
, 0, 0, NULL
}
4298 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_
) {
4299 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
4300 ett_tetra_U_BL_DATA
, U_BL_DATA_sequence
);
4306 static const per_sequence_t U_BL_ACK_sequence
[] = {
4307 { &hf_tetra_nr
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
4308 { &hf_tetra_tl_sdu
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_U_MLE_PDU
},
4309 { NULL
, 0, 0, NULL
}
4313 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_
) {
4314 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
4315 ett_tetra_U_BL_ACK
, U_BL_ACK_sequence
);
4321 static const per_sequence_t U_BL_ADATA_FCS_sequence
[] = {
4322 { &hf_tetra_nr
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
4323 { &hf_tetra_ns
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
4324 { &hf_tetra_tl_sdu
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_U_MLE_PDU
},
4325 { &hf_tetra_fcs
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_OCTET_STRING_SIZE_4
},
4326 { NULL
, 0, 0, NULL
}
4330 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_
) {
4331 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
4332 ett_tetra_U_BL_ADATA_FCS
, U_BL_ADATA_FCS_sequence
);
4338 static const per_sequence_t U_BL_DATA_FCS_sequence
[] = {
4339 { &hf_tetra_ns
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
4340 { &hf_tetra_tl_sdu
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_U_MLE_PDU
},
4341 { &hf_tetra_fcs
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_OCTET_STRING_SIZE_4
},
4342 { NULL
, 0, 0, NULL
}
4346 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_
) {
4347 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
4348 ett_tetra_U_BL_DATA_FCS
, U_BL_DATA_FCS_sequence
);
4354 static const per_sequence_t U_MLE_PDU_FCS_sequence
[] = {
4355 { &hf_tetra_u_mle_pdu
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_U_MLE_PDU
},
4356 { &hf_tetra_fcs
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_OCTET_STRING_SIZE_4
},
4357 { NULL
, 0, 0, NULL
}
4361 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_
) {
4362 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
4363 ett_tetra_U_MLE_PDU_FCS
, U_MLE_PDU_FCS_sequence
);
4369 static const per_sequence_t U_BL_ACK_FCS_sequence
[] = {
4370 { &hf_tetra_nr
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
4371 { &hf_tetra_tl_sdu
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_U_MLE_PDU
},
4372 { &hf_tetra_fcs
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_OCTET_STRING_SIZE_4
},
4373 { NULL
, 0, 0, NULL
}
4377 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_
) {
4378 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
4379 ett_tetra_U_BL_ACK_FCS
, U_BL_ACK_FCS_sequence
);
4385 static const value_string tetra_U_LLC_PDU_vals
[] = {
4390 { 4, "bl-adata-fcs" },
4391 { 5, "bl-data-fcs" },
4392 { 6, "bl-udata-fcs" },
4393 { 7, "bl-ack-fcs" },
4398 { 12, "al-reconnect" },
4405 static const per_choice_t U_LLC_PDU_choice
[] = {
4406 { 0, &hf_tetra_bl_adata
, ASN1_NO_EXTENSIONS
, dissect_tetra_U_BL_ADATA
},
4407 { 1, &hf_tetra_bl_data
, ASN1_NO_EXTENSIONS
, dissect_tetra_U_BL_DATA
},
4408 { 2, &hf_tetra_bl_udata
, ASN1_NO_EXTENSIONS
, dissect_tetra_U_MLE_PDU
},
4409 { 3, &hf_tetra_bl_ack
, ASN1_NO_EXTENSIONS
, dissect_tetra_U_BL_ACK
},
4410 { 4, &hf_tetra_bl_adata_fcs
, ASN1_NO_EXTENSIONS
, dissect_tetra_U_BL_ADATA_FCS
},
4411 { 5, &hf_tetra_bl_data_fcs
, ASN1_NO_EXTENSIONS
, dissect_tetra_U_BL_DATA_FCS
},
4412 { 6, &hf_tetra_bl_udata_fcs
, ASN1_NO_EXTENSIONS
, dissect_tetra_U_MLE_PDU_FCS
},
4413 { 7, &hf_tetra_bl_ack_fcs
, ASN1_NO_EXTENSIONS
, dissect_tetra_U_BL_ACK_FCS
},
4414 { 8, &hf_tetra_al_setup
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
4415 { 9, &hf_tetra_al_data
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
4416 { 10, &hf_tetra_al_udata
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
4417 { 11, &hf_tetra_al_ack
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
4418 { 12, &hf_tetra_al_reconnect
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
4419 { 13, &hf_tetra_reserve1
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
4420 { 14, &hf_tetra_reserve2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
4421 { 15, &hf_tetra_al_disc
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
4422 { 0, NULL
, 0, NULL
}
4426 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_
) {
4427 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
4428 ett_tetra_U_LLC_PDU
, U_LLC_PDU_choice
,
4435 static const value_string tetra_LengthIndication_vals
[] = {
4437 { 1, "reserved-1" },
4438 { 2, "reserved-2" },
4449 { 13, "reserved-13" },
4450 { 14, "reserved-14" },
4451 { 15, "reserved-15" },
4452 { 16, "reserved-16" },
4453 { 17, "reserved-17" },
4454 { 18, "reserved-18" },
4455 { 19, "reserved-19" },
4456 { 20, "reserved-20" },
4457 { 21, "reserved-21" },
4458 { 22, "reserved-22" },
4459 { 23, "reserved-23" },
4460 { 24, "reserved-24" },
4461 { 25, "reserved-25" },
4462 { 26, "reserved-26" },
4463 { 27, "reserved-27" },
4464 { 28, "reserved-28" },
4465 { 29, "reserved-29" },
4466 { 30, "reserved-30" },
4467 { 31, "reserved-31" },
4473 dissect_tetra_LengthIndication(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
4474 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
4475 32, NULL
, false, 0, NULL
);
4481 static const value_string tetra_Frag1_vals
[] = {
4482 { 0, "not-fragmented" },
4483 { 1, "start-of-fragmentation" },
4489 dissect_tetra_Frag1(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
4490 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
4491 2, NULL
, false, 0, NULL
);
4497 static const value_string tetra_SLOT_APPLY_vals
[] = {
4513 { 15, "more-than-68" },
4519 dissect_tetra_SLOT_APPLY(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
4520 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
4521 16, NULL
, false, 0, NULL
);
4527 static const per_sequence_t FRAG_sequence
[] = {
4528 { &hf_tetra_frag
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Frag1
},
4529 { &hf_tetra_reservation_requirement
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_SLOT_APPLY
},
4530 { NULL
, 0, 0, NULL
}
4534 dissect_tetra_FRAG(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
4535 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
4536 ett_tetra_FRAG
, FRAG_sequence
);
4542 static const value_string tetra_T_lengthIndicationOrCapacityRequest_vals
[] = {
4543 { 0, "lengthIndication" },
4544 { 1, "capacityRequest" },
4548 static const per_choice_t T_lengthIndicationOrCapacityRequest_choice
[] = {
4549 { 0, &hf_tetra_lengthIndication
, ASN1_NO_EXTENSIONS
, dissect_tetra_LengthIndication
},
4550 { 1, &hf_tetra_capacityRequest
, ASN1_NO_EXTENSIONS
, dissect_tetra_FRAG
},
4551 { 0, NULL
, 0, NULL
}
4555 dissect_tetra_T_lengthIndicationOrCapacityRequest(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
4556 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
4557 ett_tetra_T_lengthIndicationOrCapacityRequest
, T_lengthIndicationOrCapacityRequest_choice
,
4564 static const per_sequence_t ComplexSDU_sequence
[] = {
4565 { &hf_tetra_lengthIndicationOrCapacityRequest
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_lengthIndicationOrCapacityRequest
},
4566 { &hf_tetra_tm_sdu_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_U_LLC_PDU
},
4567 { NULL
, 0, 0, NULL
}
4571 dissect_tetra_ComplexSDU(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
4572 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
4573 ett_tetra_ComplexSDU
, ComplexSDU_sequence
);
4579 static const value_string tetra_T_data_vals
[] = {
4585 static const per_choice_t T_data_choice
[] = {
4586 { 0, &hf_tetra_sdu1
, ASN1_NO_EXTENSIONS
, dissect_tetra_U_LLC_PDU
},
4587 { 1, &hf_tetra_sdu2
, ASN1_NO_EXTENSIONS
, dissect_tetra_ComplexSDU
},
4588 { 0, NULL
, 0, NULL
}
4592 dissect_tetra_T_data(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
4593 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
4594 ett_tetra_T_data
, T_data_choice
,
4601 static const per_sequence_t MAC_ACCESS_sequence
[] = {
4602 { &hf_tetra_pdu_type_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
4603 { &hf_tetra_fill_bit_indication
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Fill_Bit_Indication
},
4604 { &hf_tetra_encrypted_flag
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Encrypted_Flag
},
4605 { &hf_tetra_address
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Address
},
4606 { &hf_tetra_data
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_data
},
4607 { NULL
, 0, 0, NULL
}
4611 dissect_tetra_MAC_ACCESS(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
4612 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
4613 ett_tetra_MAC_ACCESS
, MAC_ACCESS_sequence
);
4619 static const value_string tetra_LengthIndicationMacData_vals
[] = {
4621 { 1, "reserved-1" },
4622 { 2, "reserved-2" },
4655 { 35, "reserved-35" },
4656 { 36, "reserved-36" },
4657 { 37, "reserved-37" },
4658 { 38, "reserved-38" },
4659 { 39, "reserved-39" },
4660 { 40, "reserved-40" },
4661 { 41, "reserved-41" },
4662 { 42, "reserved-42" },
4663 { 43, "reserved-43" },
4664 { 44, "reserved-44" },
4665 { 45, "reserved-45" },
4666 { 46, "reserved-46" },
4667 { 47, "reserved-47" },
4668 { 48, "reserved-48" },
4669 { 49, "reserved-49" },
4670 { 50, "reserved-50" },
4671 { 51, "reserved-51" },
4672 { 52, "reserved-52" },
4673 { 53, "reserved-53" },
4674 { 54, "reserved-54" },
4675 { 55, "reserved-55" },
4676 { 56, "reserved-56" },
4677 { 57, "reserved-57" },
4678 { 58, "reserved-58" },
4679 { 59, "reserved-59" },
4680 { 60, "reserved-60" },
4681 { 61, "reserved-61" },
4682 { 62, "second-halfslot-stolen" },
4683 { 63, "start-frag" },
4689 dissect_tetra_LengthIndicationMacData(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
4690 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
4691 64, NULL
, false, 0, NULL
);
4697 static const per_sequence_t FRAG6_sequence
[] = {
4698 { &hf_tetra_frag
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Frag1
},
4699 { &hf_tetra_reservation_requirement
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_SLOT_APPLY
},
4700 { &hf_tetra_reserved_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
4701 { NULL
, 0, 0, NULL
}
4705 dissect_tetra_FRAG6(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
4706 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
4707 ett_tetra_FRAG6
, FRAG6_sequence
);
4713 static const value_string tetra_T_lengthIndicationOrCapacityRequest_01_vals
[] = {
4714 { 0, "lengthIndication" },
4715 { 1, "capacityRequest" },
4719 static const per_choice_t T_lengthIndicationOrCapacityRequest_01_choice
[] = {
4720 { 0, &hf_tetra_lengthIndication_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_LengthIndicationMacData
},
4721 { 1, &hf_tetra_capacityRequest_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_FRAG6
},
4722 { 0, NULL
, 0, NULL
}
4726 dissect_tetra_T_lengthIndicationOrCapacityRequest_01(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
4727 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
4728 ett_tetra_T_lengthIndicationOrCapacityRequest_01
, T_lengthIndicationOrCapacityRequest_01_choice
,
4735 static const per_sequence_t MAC_DATA_sequence
[] = {
4736 { &hf_tetra_pdu_type
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
4737 { &hf_tetra_fill_bit_indication
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Fill_Bit_Indication
},
4738 { &hf_tetra_encrypted_flag
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Encrypted_Flag
},
4739 { &hf_tetra_address
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Address
},
4740 { &hf_tetra_lengthIndicationOrCapacityRequest_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_lengthIndicationOrCapacityRequest_01
},
4741 { &hf_tetra_tm_sdu_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_U_LLC_PDU
},
4742 { NULL
, 0, 0, NULL
}
4746 dissect_tetra_MAC_DATA(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
4747 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
4748 ett_tetra_MAC_DATA
, MAC_DATA_sequence
);
4756 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_
) {
4757 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
4758 264, 264, false, NULL
, 0, NULL
, NULL
);
4764 static const per_sequence_t MAC_FRAG_sequence
[] = {
4765 { &hf_tetra_pdu_type
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
4766 { &hf_tetra_sub_type
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
4767 { &hf_tetra_fill_bit_indication
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Fill_Bit_Indication
},
4768 { &hf_tetra_tm_sdu_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_BIT_STRING_SIZE_264
},
4769 { NULL
, 0, 0, NULL
}
4773 dissect_tetra_MAC_FRAG(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
4774 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
4775 ett_tetra_MAC_FRAG
, MAC_FRAG_sequence
);
4783 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_
) {
4784 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
4785 120, 120, false, NULL
, 0, NULL
, NULL
);
4791 static const per_sequence_t MAC_FRAG120_sequence
[] = {
4792 { &hf_tetra_pdu_type
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
4793 { &hf_tetra_sub_type
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
4794 { &hf_tetra_fill_bit_indication
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Fill_Bit_Indication
},
4795 { &hf_tetra_tm_sdu_03
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_BIT_STRING_SIZE_120
},
4796 { NULL
, 0, 0, NULL
}
4800 dissect_tetra_MAC_FRAG120(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
4801 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
4802 ett_tetra_MAC_FRAG120
, MAC_FRAG120_sequence
);
4808 static const value_string tetra_LengthIndOrReservationReq_vals
[] = {
4809 { 0, "reserved-0" },
4810 { 1, "reserved-1" },
4844 { 35, "reserved-35" },
4845 { 36, "reserved-36" },
4846 { 37, "reserved-37" },
4847 { 38, "reserved-38" },
4848 { 39, "reserved-39" },
4849 { 40, "reserved-40" },
4850 { 41, "reserved-41" },
4851 { 42, "reserved-42" },
4852 { 43, "reserved-43" },
4853 { 44, "reserved-44" },
4854 { 45, "reserved-45" },
4855 { 46, "reserved-46" },
4856 { 47, "reserved-47" },
4872 { 63, "more-than-68" },
4878 dissect_tetra_LengthIndOrReservationReq(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
4879 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
4880 64, NULL
, false, 0, NULL
);
4888 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_
) {
4889 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
4890 258, 258, false, NULL
, 0, NULL
, NULL
);
4896 static const per_sequence_t MAC_END_UPLINK_sequence
[] = {
4897 { &hf_tetra_pdu_type
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
4898 { &hf_tetra_sub_type
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
4899 { &hf_tetra_fill_bit_indication
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Fill_Bit_Indication
},
4900 { &hf_tetra_lengthInd_ReservationReq
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_LengthIndOrReservationReq
},
4901 { &hf_tetra_tm_sdu_04
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_BIT_STRING_SIZE_258
},
4902 { NULL
, 0, 0, NULL
}
4906 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_
) {
4907 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
4908 ett_tetra_MAC_END_UPLINK
, MAC_END_UPLINK_sequence
);
4916 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_
) {
4917 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
4918 114, 114, false, NULL
, 0, NULL
, NULL
);
4924 static const per_sequence_t MAC_END_UP114_sequence
[] = {
4925 { &hf_tetra_pdu_type
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
4926 { &hf_tetra_pdu_subtype
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
4927 { &hf_tetra_fill_bit_indication
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Fill_Bit_Indication
},
4928 { &hf_tetra_lengthInd_ReservationReq
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_LengthIndOrReservationReq
},
4929 { &hf_tetra_tm_sdu_05
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_BIT_STRING_SIZE_114
},
4930 { NULL
, 0, 0, NULL
}
4934 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_
) {
4935 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
4936 ett_tetra_MAC_END_UP114
, MAC_END_UP114_sequence
);
4942 static const value_string tetra_LengthIndMacHu_vals
[] = {
4943 { 0, "reserved-0" },
4956 { 13, "reserved-13" },
4957 { 14, "reserved-14" },
4958 { 15, "reserved-15" },
4964 dissect_tetra_LengthIndMacHu(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
4965 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
4966 16, NULL
, false, 0, NULL
);
4972 static const value_string tetra_T_lengthInd_ReservationReq_vals
[] = {
4974 { 1, "reservation-requirement" },
4978 static const per_choice_t T_lengthInd_ReservationReq_choice
[] = {
4979 { 0, &hf_tetra_lengthInd
, ASN1_NO_EXTENSIONS
, dissect_tetra_LengthIndMacHu
},
4980 { 1, &hf_tetra_reservation_requirement
, ASN1_NO_EXTENSIONS
, dissect_tetra_SLOT_APPLY
},
4981 { 0, NULL
, 0, NULL
}
4985 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_
) {
4986 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
4987 ett_tetra_T_lengthInd_ReservationReq
, T_lengthInd_ReservationReq_choice
,
4996 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_
) {
4997 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
4998 85, 85, false, NULL
, 0, NULL
, NULL
);
5004 static const per_sequence_t MAC_END_HU_sequence
[] = {
5005 { &hf_tetra_pdu_type_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
5006 { &hf_tetra_fill_bit_indication
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Fill_Bit_Indication
},
5007 { &hf_tetra_lengthInd_ReservationReq_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_lengthInd_ReservationReq
},
5008 { &hf_tetra_tm_sdu_06
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_BIT_STRING_SIZE_85
},
5009 { NULL
, 0, 0, NULL
}
5013 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_
) {
5014 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
5015 ett_tetra_MAC_END_HU
, MAC_END_HU_sequence
);
5021 static const value_string tetra_Position_Of_Grant_vals
[] = {
5022 { 0, "on-current" },
5023 { 1, "on-allocated" },
5029 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_
) {
5030 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
5031 2, NULL
, false, 0, NULL
);
5037 static const value_string tetra_LengthIndicationMacEndDl_vals
[] = {
5038 { 0, "reserved-0" },
5039 { 1, "reserved-1" },
5073 { 35, "reserved-35" },
5074 { 36, "reserved-36" },
5075 { 37, "reserved-37" },
5076 { 38, "reserved-38" },
5077 { 39, "reserved-39" },
5078 { 40, "reserved-40" },
5079 { 41, "reserved-41" },
5080 { 42, "reserved-42" },
5081 { 43, "reserved-43" },
5082 { 44, "reserved-44" },
5083 { 45, "reserved-45" },
5084 { 46, "reserved-46" },
5085 { 47, "reserved-47" },
5086 { 48, "reserved-48" },
5087 { 49, "reserved-49" },
5088 { 50, "reserved-50" },
5089 { 51, "reserved-51" },
5090 { 52, "reserved-52" },
5091 { 53, "reserved-53" },
5092 { 54, "reserved-54" },
5093 { 55, "reserved-55" },
5094 { 56, "reserved-56" },
5095 { 57, "reserved-57" },
5096 { 58, "reserved-58" },
5097 { 59, "reserved-59" },
5098 { 60, "reserved-60" },
5099 { 61, "reserved-61" },
5100 { 62, "reserved-62" },
5101 { 63, "reserved-63" },
5107 dissect_tetra_LengthIndicationMacEndDl(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
5108 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
5109 64, NULL
, false, 0, NULL
);
5115 static const value_string tetra_Capacity_Allocation_vals
[] = {
5116 { 0, "first-subslot" },
5117 { 1, "slot-allocated-1" },
5118 { 2, "slot-allocated-2" },
5119 { 3, "slot-allocated-3" },
5120 { 4, "slot-allocated-4" },
5121 { 5, "slot-allocated-5" },
5122 { 6, "slot-allocated-6" },
5123 { 7, "slot-allocated-8" },
5124 { 8, "slot-allocated-10" },
5125 { 9, "slot-allocated-13" },
5126 { 10, "slot-allocated-17" },
5127 { 11, "slot-allocated-24" },
5128 { 12, "slot-allocated-34" },
5129 { 13, "lot-allocated-51" },
5130 { 14, "slot-allocated-68" },
5131 { 15, "second-subslot" },
5137 dissect_tetra_Capacity_Allocation(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
5138 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
5139 16, NULL
, false, 0, NULL
);
5145 static const value_string tetra_Granting_delay_vals
[] = {
5146 { 0, "capacity-allocation-at-next-opportunity" },
5147 { 1, "number-of-opportunities-delay" },
5148 { 2, "number-of-opportunities-delay" },
5149 { 3, "number-of-opportunities-delay" },
5150 { 4, "number-of-opportunities-delay" },
5151 { 5, "number-of-opportunities-delay" },
5152 { 6, "number-of-opportunities-delay" },
5153 { 7, "number-of-opportunities-delay" },
5154 { 8, "number-of-opportunities-delay" },
5155 { 9, "number-of-opportunities-delay" },
5156 { 10, "number-of-opportunities-delay" },
5157 { 11, "number-of-opportunities-delay" },
5158 { 12, "number-of-opportunities-delay" },
5159 { 13, "number-of-opportunities-delay" },
5160 { 14, "allocation-starts-at-frame-18" },
5167 dissect_tetra_Granting_delay(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
5168 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
5169 16, NULL
, false, 0, NULL
);
5175 static const per_sequence_t SlotGranting_sequence
[] = {
5176 { &hf_tetra_capacity_allocation
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Capacity_Allocation
},
5177 { &hf_tetra_granting_delay
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Granting_delay
},
5178 { NULL
, 0, 0, NULL
}
5182 dissect_tetra_SlotGranting(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
5183 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
5184 ett_tetra_SlotGranting
, SlotGranting_sequence
);
5190 static const value_string tetra_T_slot_granting_vals
[] = {
5192 { 1, "slot-granting-param" },
5196 static const per_choice_t T_slot_granting_choice
[] = {
5197 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
5198 { 1, &hf_tetra_slot_granting_param
, ASN1_NO_EXTENSIONS
, dissect_tetra_SlotGranting
},
5199 { 0, NULL
, 0, NULL
}
5203 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_
) {
5204 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
5205 ett_tetra_T_slot_granting
, T_slot_granting_choice
,
5212 static const value_string tetra_T_allocation_type_vals
[] = {
5222 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_
) {
5223 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
5224 4, NULL
, false, 0, NULL
);
5230 static const value_string tetra_Timeslot_Assigned_vals
[] = {
5231 { 0, "go-to-control-channel" },
5232 { 1, "timeslot-4" },
5233 { 2, "timeslot-bit-map" },
5234 { 3, "timeslot-bit-map" },
5235 { 4, "timeslot-bit-map" },
5236 { 5, "timeslot-bit-map" },
5237 { 6, "timeslot-bit-map" },
5238 { 7, "timeslot-bit-map" },
5239 { 8, "timeslot-bit-map" },
5240 { 9, "timeslot-bit-map" },
5241 { 10, "timeslot-bit-map" },
5242 { 11, "timeslot-bit-map" },
5243 { 12, "timeslot-bit-map" },
5244 { 13, "timeslot-bit-map" },
5245 { 14, "timeslot-bit-map" },
5246 { 15, "all-four-timeslots" },
5252 dissect_tetra_Timeslot_Assigned(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
5253 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
5254 16, NULL
, false, 0, NULL
);
5260 static const value_string tetra_T_up_down_assigned_vals
[] = {
5262 { 1, "downlink-only" },
5263 { 2, "uplink-only" },
5264 { 3, "uplink-downlink" },
5270 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_
) {
5271 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
5272 4, NULL
, false, 0, NULL
);
5278 static const value_string tetra_CLCH_permission_vals
[] = {
5279 { 0, "no-permission" },
5280 { 1, "permission" },
5286 dissect_tetra_CLCH_permission(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
5287 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
5288 2, NULL
, false, 0, NULL
);
5294 static const value_string tetra_Cell_change_flag_vals
[] = {
5302 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_
) {
5303 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
5304 2, NULL
, false, 0, NULL
);
5310 static const value_string tetra_T_reverse_operation_vals
[] = {
5318 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_
) {
5319 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
5320 2, NULL
, false, 0, NULL
);
5326 static const per_sequence_t Extended_carrier_flag_sequence
[] = {
5327 { &hf_tetra_frequency_band
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_15
},
5328 { &hf_tetra_offset_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
5329 { &hf_tetra_duplex_spacing
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_7
},
5330 { &hf_tetra_reverse_operation_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_reverse_operation
},
5331 { NULL
, 0, 0, NULL
}
5335 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_
) {
5336 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
5337 ett_tetra_Extended_carrier_flag
, Extended_carrier_flag_sequence
);
5343 static const value_string tetra_T_extend_carrier_flag_vals
[] = {
5349 static const per_choice_t T_extend_carrier_flag_choice
[] = {
5350 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
5351 { 1, &hf_tetra_extended
, ASN1_NO_EXTENSIONS
, dissect_tetra_Extended_carrier_flag
},
5352 { 0, NULL
, 0, NULL
}
5356 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_
) {
5357 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
5358 ett_tetra_T_extend_carrier_flag
, T_extend_carrier_flag_choice
,
5365 static const value_string tetra_Monitoring_pattern_vals
[] = {
5375 dissect_tetra_Monitoring_pattern(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
5376 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
5377 4, NULL
, false, 0, NULL
);
5383 static const value_string tetra_T_monitoring_pattern_vals
[] = {
5391 static const per_choice_t T_monitoring_pattern_choice
[] = {
5392 { 0, &hf_tetra_one
, ASN1_NO_EXTENSIONS
, dissect_tetra_Monitoring_pattern
},
5393 { 1, &hf_tetra_none1
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
5394 { 2, &hf_tetra_none2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
5395 { 3, &hf_tetra_none3
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
5396 { 0, NULL
, 0, NULL
}
5400 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_
) {
5401 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
5402 ett_tetra_T_monitoring_pattern
, T_monitoring_pattern_choice
,
5409 static const per_sequence_t ChannelAllocation_sequence
[] = {
5410 { &hf_tetra_allocation_type
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_allocation_type
},
5411 { &hf_tetra_timeslot_assigned
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Timeslot_Assigned
},
5412 { &hf_tetra_up_down_assigned
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_up_down_assigned
},
5413 { &hf_tetra_clch_permission
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_CLCH_permission
},
5414 { &hf_tetra_cell_change
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Cell_change_flag
},
5415 { &hf_tetra_carrier_number
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_4095
},
5416 { &hf_tetra_extend_carrier_flag
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_extend_carrier_flag
},
5417 { &hf_tetra_monitoring_pattern
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_monitoring_pattern
},
5418 { NULL
, 0, 0, NULL
}
5422 dissect_tetra_ChannelAllocation(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
5423 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
5424 ett_tetra_ChannelAllocation
, ChannelAllocation_sequence
);
5430 static const value_string tetra_T_channel_allocation_vals
[] = {
5432 { 1, "channel-allocation-element" },
5436 static const per_choice_t T_channel_allocation_choice
[] = {
5437 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
5438 { 1, &hf_tetra_channel_allocation_element
, ASN1_NO_EXTENSIONS
, dissect_tetra_ChannelAllocation
},
5439 { 0, NULL
, 0, NULL
}
5443 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_
) {
5444 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
5445 ett_tetra_T_channel_allocation
, T_channel_allocation_choice
,
5454 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_
) {
5455 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
5456 255, 255, false, NULL
, 0, NULL
, NULL
);
5462 static const per_sequence_t MAC_END_DOWNLINK_sequence
[] = {
5463 { &hf_tetra_pdu_type
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
5464 { &hf_tetra_sub_type
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
5465 { &hf_tetra_fill_bit_indication
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Fill_Bit_Indication
},
5466 { &hf_tetra_position_of_grant
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Position_Of_Grant
},
5467 { &hf_tetra_lengthIndication_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_LengthIndicationMacEndDl
},
5468 { &hf_tetra_slot_granting
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_slot_granting
},
5469 { &hf_tetra_channel_allocation
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_channel_allocation
},
5470 { &hf_tetra_tm_sdu_07
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_BIT_STRING_SIZE_255
},
5471 { NULL
, 0, 0, NULL
}
5475 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_
) {
5476 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
5477 ett_tetra_MAC_END_DOWNLINK
, MAC_END_DOWNLINK_sequence
);
5483 static const value_string tetra_T_slot_granting_01_vals
[] = {
5485 { 1, "slot-granting-param" },
5489 static const per_choice_t T_slot_granting_01_choice
[] = {
5490 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
5491 { 1, &hf_tetra_slot_granting_param
, ASN1_NO_EXTENSIONS
, dissect_tetra_SlotGranting
},
5492 { 0, NULL
, 0, NULL
}
5496 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_
) {
5497 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
5498 ett_tetra_T_slot_granting_01
, T_slot_granting_01_choice
,
5505 static const value_string tetra_T_channel_allocation_01_vals
[] = {
5507 { 1, "channel-allocation-element" },
5511 static const per_choice_t T_channel_allocation_01_choice
[] = {
5512 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
5513 { 1, &hf_tetra_channel_allocation_element
, ASN1_NO_EXTENSIONS
, dissect_tetra_ChannelAllocation
},
5514 { 0, NULL
, 0, NULL
}
5518 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_
) {
5519 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
5520 ett_tetra_T_channel_allocation_01
, T_channel_allocation_01_choice
,
5529 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_
) {
5530 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
5531 111, 111, false, NULL
, 0, NULL
, NULL
);
5537 static const per_sequence_t MAC_END_DOWN111_sequence
[] = {
5538 { &hf_tetra_pdu_type_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_7
},
5539 { &hf_tetra_fill_bit_ind
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_BOOLEAN
},
5540 { &hf_tetra_position_of_grant_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
5541 { &hf_tetra_lengthIndication_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_LengthIndicationMacEndDl
},
5542 { &hf_tetra_slot_granting_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_slot_granting_01
},
5543 { &hf_tetra_channel_allocation_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_channel_allocation_01
},
5544 { &hf_tetra_tm_sdu_08
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_BIT_STRING_SIZE_111
},
5545 { NULL
, 0, 0, NULL
}
5549 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_
) {
5550 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
5551 ett_tetra_MAC_END_DOWN111
, MAC_END_DOWN111_sequence
);
5557 static const value_string tetra_T_access_ack_vals
[] = {
5559 { 1, "random-access-acknowledged" },
5565 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_
) {
5566 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
5567 2, NULL
, false, 0, NULL
);
5573 static const value_string tetra_LengthIndicationMacResource_vals
[] = {
5574 { 0, "reserved-0" },
5575 { 1, "reserved-1" },
5609 { 35, "reserved-35" },
5610 { 36, "reserved-36" },
5611 { 37, "reserved-37" },
5612 { 38, "reserved-38" },
5613 { 39, "reserved-39" },
5614 { 40, "reserved-40" },
5615 { 41, "reserved-41" },
5616 { 42, "reserved-42" },
5617 { 43, "reserved-43" },
5618 { 44, "reserved-44" },
5619 { 45, "reserved-45" },
5620 { 46, "reserved-46" },
5621 { 47, "reserved-47" },
5622 { 48, "reserved-48" },
5623 { 49, "reserved-49" },
5624 { 50, "reserved-50" },
5625 { 51, "reserved-51" },
5626 { 52, "reserved-52" },
5627 { 53, "reserved-53" },
5628 { 54, "reserved-54" },
5629 { 55, "reserved-55" },
5630 { 56, "reserved-56" },
5631 { 57, "reserved-57" },
5632 { 58, "reserved-58" },
5633 { 59, "reserved-59" },
5634 { 60, "reserved-60" },
5635 { 61, "reserved-61" },
5636 { 62, "second-halfslot-stolen" },
5637 { 63, "start-frag" },
5643 dissect_tetra_LengthIndicationMacResource(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
5644 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
5645 64, NULL
, false, 0, NULL
);
5651 static const value_string tetra_PowerControl_vals
[] = {
5653 { 1, "increase-1" },
5654 { 2, "increase-2" },
5655 { 3, "increase-3" },
5656 { 4, "increase-4" },
5657 { 5, "increase-5" },
5658 { 6, "increase-6" },
5659 { 7, "maximum-xceeded" },
5660 { 8, "revert-open-loop-control" },
5661 { 9, "decrease-1" },
5662 { 10, "decrease-2" },
5663 { 11, "decrease-3" },
5664 { 12, "decrease-4" },
5665 { 13, "decrease-5" },
5666 { 14, "decrease-6" },
5667 { 15, "radio-uplink-failure" },
5673 dissect_tetra_PowerControl(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
5674 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
5675 16, NULL
, false, 0, NULL
);
5681 static const value_string tetra_T_power_control_vals
[] = {
5683 { 1, "powerParameters" },
5687 static const per_choice_t T_power_control_choice
[] = {
5688 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
5689 { 1, &hf_tetra_powerParameters
, ASN1_NO_EXTENSIONS
, dissect_tetra_PowerControl
},
5690 { 0, NULL
, 0, NULL
}
5694 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_
) {
5695 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
5696 ett_tetra_T_power_control
, T_power_control_choice
,
5703 static const value_string tetra_T_slot_granting_02_vals
[] = {
5705 { 1, "slot-granting-param" },
5709 static const per_choice_t T_slot_granting_02_choice
[] = {
5710 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
5711 { 1, &hf_tetra_slot_granting_param
, ASN1_NO_EXTENSIONS
, dissect_tetra_SlotGranting
},
5712 { 0, NULL
, 0, NULL
}
5716 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_
) {
5717 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
5718 ett_tetra_T_slot_granting_02
, T_slot_granting_02_choice
,
5725 static const value_string tetra_T_channel_allocation_02_vals
[] = {
5727 { 1, "channel-allocation-element" },
5731 static const per_choice_t T_channel_allocation_02_choice
[] = {
5732 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
5733 { 1, &hf_tetra_channel_allocation_element
, ASN1_NO_EXTENSIONS
, dissect_tetra_ChannelAllocation
},
5734 { 0, NULL
, 0, NULL
}
5738 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_
) {
5739 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
5740 ett_tetra_T_channel_allocation_02
, T_channel_allocation_02_choice
,
5747 static const value_string tetra_T_ssi_vals
[] = {
5753 static const per_choice_t T_ssi_choice
[] = {
5754 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
5755 { 1, &hf_tetra_ssi_03
, ASN1_NO_EXTENSIONS
, dissect_tetra_OCTET_STRING_SIZE_3
},
5756 { 0, NULL
, 0, NULL
}
5760 dissect_tetra_T_ssi(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
5761 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
5762 ett_tetra_T_ssi
, T_ssi_choice
,
5769 static const value_string tetra_T_address_extension_vals
[] = {
5771 { 1, "address-extension" },
5775 static const per_choice_t T_address_extension_choice
[] = {
5776 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
5777 { 1, &hf_tetra_address_extension_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_OCTET_STRING_SIZE_3
},
5778 { 0, NULL
, 0, NULL
}
5782 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_
) {
5783 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
5784 ett_tetra_T_address_extension
, T_address_extension_choice
,
5791 static const value_string tetra_T_subscriber_class_vals
[] = {
5793 { 1, "subscriber-class" },
5797 static const per_choice_t T_subscriber_class_choice
[] = {
5798 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
5799 { 1, &hf_tetra_subscriber_class
, ASN1_NO_EXTENSIONS
, dissect_tetra_Subscriber_class
},
5800 { 0, NULL
, 0, NULL
}
5804 dissect_tetra_T_subscriber_class(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
5805 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
5806 ett_tetra_T_subscriber_class
, T_subscriber_class_choice
,
5813 static const value_string tetra_T_energy_saving_mode_vals
[] = {
5815 { 1, "energy-saving-mode" },
5819 static const per_choice_t T_energy_saving_mode_choice
[] = {
5820 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
5821 { 1, &hf_tetra_energy_saving_mode_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_7
},
5822 { 0, NULL
, 0, NULL
}
5826 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_
) {
5827 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
5828 ett_tetra_T_energy_saving_mode
, T_energy_saving_mode_choice
,
5835 static const value_string tetra_T_scch_info_vals
[] = {
5841 static const per_choice_t T_scch_info_choice
[] = {
5842 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
5843 { 1, &hf_tetra_scch_info_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_16383
},
5844 { 0, NULL
, 0, NULL
}
5848 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_
) {
5849 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
5850 ett_tetra_T_scch_info
, T_scch_info_choice
,
5857 static const value_string tetra_T_new_ra_vals
[] = {
5863 static const per_choice_t T_new_ra_choice
[] = {
5864 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
5865 { 1, &hf_tetra_new_ra_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_3
},
5866 { 0, NULL
, 0, NULL
}
5870 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_
) {
5871 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
5872 ett_tetra_T_new_ra
, T_new_ra_choice
,
5879 static const value_string tetra_T_group_identity_location_accept_vals
[] = {
5881 { 1, "group-identity-location-accept" },
5885 static const per_choice_t T_group_identity_location_accept_choice
[] = {
5886 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
5887 { 1, &hf_tetra_group_identity_location_accept_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_3
},
5888 { 0, NULL
, 0, NULL
}
5892 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_
) {
5893 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
5894 ett_tetra_T_group_identity_location_accept
, T_group_identity_location_accept_choice
,
5901 static const value_string tetra_T_group_predefined_lifetime_vals
[] = {
5903 { 1, "group-predefined-lifetime" },
5907 static const per_choice_t T_group_predefined_lifetime_choice
[] = {
5908 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
5909 { 1, &hf_tetra_group_predefined_lifetime_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_3
},
5910 { 0, NULL
, 0, NULL
}
5914 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_
) {
5915 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
5916 ett_tetra_T_group_predefined_lifetime
, T_group_predefined_lifetime_choice
,
5923 static const value_string tetra_T_group_identity_downlink_vals
[] = {
5925 { 1, "group-identity-downlink" },
5929 static const per_choice_t T_group_identity_downlink_choice
[] = {
5930 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
5931 { 1, &hf_tetra_group_identity_downlink_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_15
},
5932 { 0, NULL
, 0, NULL
}
5936 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_
) {
5937 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
5938 ett_tetra_T_group_identity_downlink
, T_group_identity_downlink_choice
,
5945 static const value_string tetra_T_proprietary_vals
[] = {
5947 { 1, "proprietary" },
5951 static const per_choice_t T_proprietary_choice
[] = {
5952 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
5953 { 1, &hf_tetra_proprietary_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_7
},
5954 { 0, NULL
, 0, NULL
}
5958 dissect_tetra_T_proprietary(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
5959 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
5960 ett_tetra_T_proprietary
, T_proprietary_choice
,
5967 static const per_sequence_t T_type3_elements_sequence
[] = {
5968 { &hf_tetra_type2_existance
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_BOOLEAN
},
5969 { &hf_tetra_type3_identifier
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_TYPE3_IDENTIFIER
},
5970 { &hf_tetra_new_ra
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_new_ra
},
5971 { &hf_tetra_group_identity_location_accept
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_group_identity_location_accept
},
5972 { &hf_tetra_group_predefined_lifetime
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_group_predefined_lifetime
},
5973 { &hf_tetra_group_identity_downlink
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_group_identity_downlink
},
5974 { &hf_tetra_proprietary
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_proprietary
},
5975 { NULL
, 0, 0, NULL
}
5979 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_
) {
5980 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
5981 ett_tetra_T_type3_elements
, T_type3_elements_sequence
);
5987 static const value_string tetra_T_type3_vals
[] = {
5989 { 1, "type3-elements" },
5993 static const per_choice_t T_type3_choice
[] = {
5994 { 0, &hf_tetra_no_type3
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
5995 { 1, &hf_tetra_type3_elements
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_type3_elements
},
5996 { 0, NULL
, 0, NULL
}
6000 dissect_tetra_T_type3(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
6001 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
6002 ett_tetra_T_type3
, T_type3_choice
,
6009 static const per_sequence_t T_type2_parameters_03_sequence
[] = {
6010 { &hf_tetra_ssi_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_ssi
},
6011 { &hf_tetra_address_extension
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_address_extension
},
6012 { &hf_tetra_subscriber_class_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_subscriber_class
},
6013 { &hf_tetra_energy_saving_mode
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_energy_saving_mode
},
6014 { &hf_tetra_scch_info
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_scch_info
},
6015 { &hf_tetra_type3
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_type3
},
6016 { NULL
, 0, 0, NULL
}
6020 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_
) {
6021 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
6022 ett_tetra_T_type2_parameters_03
, T_type2_parameters_03_sequence
);
6028 static const value_string tetra_T_optional_elements_05_vals
[] = {
6030 { 1, "type2-parameters" },
6034 static const per_choice_t T_optional_elements_05_choice
[] = {
6035 { 0, &hf_tetra_no_type2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6036 { 1, &hf_tetra_type2_parameters_03
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_type2_parameters_03
},
6037 { 0, NULL
, 0, NULL
}
6041 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_
) {
6042 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
6043 ett_tetra_T_optional_elements_05
, T_optional_elements_05_choice
,
6050 static const per_sequence_t D_LOCATION_UPDATE_ACCEPT_sequence
[] = {
6051 { &hf_tetra_location_update_type
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_UPDATE_TYPE
},
6052 { &hf_tetra_optional_elements_05
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_optional_elements_05
},
6053 { NULL
, 0, 0, NULL
}
6057 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_
) {
6058 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
6059 ett_tetra_D_LOCATION_UPDATE_ACCEPT
, D_LOCATION_UPDATE_ACCEPT_sequence
);
6061 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "D-LOCATION-UPDATE-ACCEPT");
6067 static const per_sequence_t D_LOCATION_UPDATE_REJECT_sequence
[] = {
6068 { &hf_tetra_location_update_type
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_UPDATE_TYPE
},
6069 { &hf_tetra_reject_cause
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_31
},
6070 { &hf_tetra_cipher_control
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_BOOLEAN
},
6071 { NULL
, 0, 0, NULL
}
6075 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_
) {
6076 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
6077 ett_tetra_D_LOCATION_UPDATE_REJECT
, D_LOCATION_UPDATE_REJECT_sequence
);
6079 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "D-LOCATION-UPDATE-REJECT");
6085 static const per_sequence_t T_attach_sequence
[] = {
6086 { &hf_tetra_lifetime
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
6087 { &hf_tetra_class_of_usage
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_7
},
6088 { NULL
, 0, 0, NULL
}
6092 dissect_tetra_T_attach(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
6093 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
6094 ett_tetra_T_attach
, T_attach_sequence
);
6100 static const value_string tetra_T_detach_downlike_vals
[] = {
6101 { 0, "unknow-gssi" },
6102 { 1, "temporary-detachment1" },
6103 { 2, "temporary-detachment2" },
6104 { 3, "permanent-detachment" },
6110 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_
) {
6111 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
6112 4, NULL
, false, 0, NULL
);
6118 static const per_sequence_t T_detach_sequence
[] = {
6119 { &hf_tetra_detach_downlike
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_detach_downlike
},
6120 { NULL
, 0, 0, NULL
}
6124 dissect_tetra_T_detach(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
6125 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
6126 ett_tetra_T_detach
, T_detach_sequence
);
6132 static const value_string tetra_T_attach_detach_identifier_vals
[] = {
6138 static const per_choice_t T_attach_detach_identifier_choice
[] = {
6139 { 0, &hf_tetra_attach
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_attach
},
6140 { 1, &hf_tetra_detach
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_detach
},
6141 { 0, NULL
, 0, NULL
}
6145 dissect_tetra_T_attach_detach_identifier(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
6146 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
6147 ett_tetra_T_attach_detach_identifier
, T_attach_detach_identifier_choice
,
6154 static const per_sequence_t T_gssi_extension_sequence
[] = {
6155 { &hf_tetra_gssi_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_OCTET_STRING_SIZE_3
},
6156 { &hf_tetra_extension
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_OCTET_STRING_SIZE_3
},
6157 { NULL
, 0, 0, NULL
}
6161 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_
) {
6162 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
6163 ett_tetra_T_gssi_extension
, T_gssi_extension_sequence
);
6169 static const value_string tetra_T_address_type_vals
[] = {
6171 { 1, "gssi-extension" },
6176 static const per_choice_t T_address_type_choice
[] = {
6177 { 0, &hf_tetra_gssi_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_OCTET_STRING_SIZE_3
},
6178 { 1, &hf_tetra_gssi_extension
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_gssi_extension
},
6179 { 2, &hf_tetra_vgssi
, ASN1_NO_EXTENSIONS
, dissect_tetra_OCTET_STRING_SIZE_3
},
6180 { 0, NULL
, 0, NULL
}
6184 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_
) {
6185 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
6186 ett_tetra_T_address_type
, T_address_type_choice
,
6193 static const per_sequence_t GROUP_IDENTITY_DOWNLINK_sequence
[] = {
6194 { &hf_tetra_attach_detach_identifier
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_attach_detach_identifier
},
6195 { &hf_tetra_address_type
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_address_type
},
6196 { NULL
, 0, 0, NULL
}
6200 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_
) {
6201 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
6202 ett_tetra_GROUP_IDENTITY_DOWNLINK
, GROUP_IDENTITY_DOWNLINK_sequence
);
6208 static const per_sequence_t T_type3_elements_04_sequence
[] = {
6209 { &hf_tetra_type3_identifier
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_TYPE3_IDENTIFIER
},
6210 { &hf_tetra_length
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_2047
},
6211 { &hf_tetra_repeat_num
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_63
},
6212 { &hf_tetra_group_identity_downlink_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_GROUP_IDENTITY_DOWNLINK
},
6213 { NULL
, 0, 0, NULL
}
6217 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_
) {
6218 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
6219 ett_tetra_T_type3_elements_04
, T_type3_elements_04_sequence
);
6225 static const value_string tetra_T_type3_04_vals
[] = {
6227 { 1, "type3-elements" },
6231 static const per_choice_t T_type3_04_choice
[] = {
6232 { 0, &hf_tetra_no_type3
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6233 { 1, &hf_tetra_type3_elements_04
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_type3_elements_04
},
6234 { 0, NULL
, 0, NULL
}
6238 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_
) {
6239 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
6240 ett_tetra_T_type3_04
, T_type3_04_choice
,
6247 static const per_sequence_t T_type2_element_02_sequence
[] = {
6248 { &hf_tetra_type3_04
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_type3_04
},
6249 { NULL
, 0, 0, NULL
}
6253 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_
) {
6254 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
6255 ett_tetra_T_type2_element_02
, T_type2_element_02_sequence
);
6261 static const value_string tetra_T_optional_elements_24_vals
[] = {
6263 { 1, "type2-element" },
6267 static const per_choice_t T_optional_elements_24_choice
[] = {
6268 { 0, &hf_tetra_no_type2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6269 { 1, &hf_tetra_type2_element_02
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_type2_element_02
},
6270 { 0, NULL
, 0, NULL
}
6274 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_
) {
6275 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
6276 ett_tetra_T_optional_elements_24
, T_optional_elements_24_choice
,
6283 static const per_sequence_t D_ATTACH_DETACH_GROUP_IDENTITY_sequence
[] = {
6284 { &hf_tetra_group_identity_report
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_BOOLEAN
},
6285 { &hf_tetra_group_identity_ack_request
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_BOOLEAN
},
6286 { &hf_tetra_group_identity_attach_detach_mode
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_BOOLEAN
},
6287 { &hf_tetra_optional_elements_24
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_optional_elements_24
},
6288 { NULL
, 0, 0, NULL
}
6292 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_
) {
6293 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
6294 ett_tetra_D_ATTACH_DETACH_GROUP_IDENTITY
, D_ATTACH_DETACH_GROUP_IDENTITY_sequence
);
6296 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "U-ATTACH-DETACH-GROUP-IDENTITY");
6302 static const per_sequence_t T_type3_elements_05_sequence
[] = {
6303 { &hf_tetra_type3_identifier
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_TYPE3_IDENTIFIER
},
6304 { &hf_tetra_length
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_2047
},
6305 { &hf_tetra_repeat_num
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_63
},
6306 { &hf_tetra_group_identity_downlink_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_GROUP_IDENTITY_DOWNLINK
},
6307 { NULL
, 0, 0, NULL
}
6311 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_
) {
6312 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
6313 ett_tetra_T_type3_elements_05
, T_type3_elements_05_sequence
);
6319 static const value_string tetra_T_type3_05_vals
[] = {
6321 { 1, "type3-elements" },
6325 static const per_choice_t T_type3_05_choice
[] = {
6326 { 0, &hf_tetra_no_type3
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6327 { 1, &hf_tetra_type3_elements_05
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_type3_elements_05
},
6328 { 0, NULL
, 0, NULL
}
6332 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_
) {
6333 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
6334 ett_tetra_T_type3_05
, T_type3_05_choice
,
6341 static const per_sequence_t T_type2_element_03_sequence
[] = {
6342 { &hf_tetra_type3_05
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_type3_05
},
6343 { NULL
, 0, 0, NULL
}
6347 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_
) {
6348 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
6349 ett_tetra_T_type2_element_03
, T_type2_element_03_sequence
);
6355 static const value_string tetra_T_optional_elements_25_vals
[] = {
6357 { 1, "type2-element" },
6361 static const per_choice_t T_optional_elements_25_choice
[] = {
6362 { 0, &hf_tetra_no_type2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6363 { 1, &hf_tetra_type2_element_03
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_type2_element_03
},
6364 { 0, NULL
, 0, NULL
}
6368 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_
) {
6369 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
6370 ett_tetra_T_optional_elements_25
, T_optional_elements_25_choice
,
6377 static const per_sequence_t D_ATTACH_DETACH_GROUP_IDENTITY_ACK_sequence
[] = {
6378 { &hf_tetra_group_identity_attach_detach_accept
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_BOOLEAN
},
6379 { &hf_tetra_reserved_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
6380 { &hf_tetra_optional_elements_25
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_optional_elements_25
},
6381 { NULL
, 0, 0, NULL
}
6385 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_
) {
6386 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
6387 ett_tetra_D_ATTACH_DETACH_GROUP_IDENTITY_ACK
, D_ATTACH_DETACH_GROUP_IDENTITY_ACK_sequence
);
6389 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "U-ATTACH-DETACH-GROUP-IDENTITY-ACK");
6395 static const per_sequence_t D_MM_STATUS_sequence
[] = {
6396 { &hf_tetra_status_downlink
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_63
},
6397 { NULL
, 0, 0, NULL
}
6401 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_
) {
6402 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
6403 ett_tetra_D_MM_STATUS
, D_MM_STATUS_sequence
);
6405 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "U-MM-STATUS");
6411 static const value_string tetra_D_MM_PDU_vals
[] = {
6413 { 1, "d-Authentication" },
6414 { 2, "d-Authentication-Reject" },
6417 { 5, "d-Location-Update-Accept" },
6418 { 6, "d-Location-Update-Command" },
6419 { 7, "d-Location-Update-Reject" },
6420 { 8, "d-MM-reserved2" },
6421 { 9, "d-Location-Update-Proceeding" },
6422 { 10, "d-Attach-Detach-Group-Identity" },
6423 { 11, "d-Attach-Detach-Group-Identity-Ack" },
6424 { 12, "d-MM-Status" },
6425 { 13, "d-MM-reserved5" },
6426 { 14, "d-MM-reserved6" },
6427 { 15, "d-MM-Function-Not-Support" },
6431 static const per_choice_t D_MM_PDU_choice
[] = {
6432 { 0, &hf_tetra_d_Otar
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6433 { 1, &hf_tetra_d_Authentication
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6434 { 2, &hf_tetra_d_Authentication_Reject
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6435 { 3, &hf_tetra_d_Disable
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6436 { 4, &hf_tetra_d_Enable
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6437 { 5, &hf_tetra_d_Location_Update_Accept
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_LOCATION_UPDATE_ACCEPT
},
6438 { 6, &hf_tetra_d_Location_Update_Command
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6439 { 7, &hf_tetra_d_Location_Update_Reject
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_LOCATION_UPDATE_REJECT
},
6440 { 8, &hf_tetra_d_MM_reserved2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6441 { 9, &hf_tetra_d_Location_Update_Proceeding
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6442 { 10, &hf_tetra_d_Attach_Detach_Group_Identity
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_ATTACH_DETACH_GROUP_IDENTITY
},
6443 { 11, &hf_tetra_d_Attach_Detach_Group_Identity_Ack
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_ATTACH_DETACH_GROUP_IDENTITY_ACK
},
6444 { 12, &hf_tetra_d_MM_Status
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_MM_STATUS
},
6445 { 13, &hf_tetra_d_MM_reserved5
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6446 { 14, &hf_tetra_d_MM_reserved6
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6447 { 15, &hf_tetra_d_MM_Function_Not_Support
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6448 { 0, NULL
, 0, NULL
}
6452 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_
) {
6453 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
6454 ett_tetra_D_MM_PDU
, D_MM_PDU_choice
,
6461 static const value_string tetra_T_simplex_duplex_selection_03_vals
[] = {
6469 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_
) {
6470 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
6471 2, NULL
, false, 0, NULL
);
6477 static const value_string tetra_T_basic_service_infomation_vals
[] = {
6479 { 1, "basic-service-infomation" },
6483 static const per_choice_t T_basic_service_infomation_choice
[] = {
6484 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6485 { 1, &hf_tetra_basic_service_infomation_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_Basic_service_information
},
6486 { 0, NULL
, 0, NULL
}
6490 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_
) {
6491 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
6492 ett_tetra_T_basic_service_infomation
, T_basic_service_infomation_choice
,
6499 static const value_string tetra_T_notification_indicator_01_vals
[] = {
6501 { 1, "notification-indicator" },
6505 static const per_choice_t T_notification_indicator_01_choice
[] = {
6506 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6507 { 1, &hf_tetra_notification_indicator_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_63
},
6508 { 0, NULL
, 0, NULL
}
6512 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_
) {
6513 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
6514 ett_tetra_T_notification_indicator_01
, T_notification_indicator_01_choice
,
6521 static const value_string tetra_T_prop_09_vals
[] = {
6527 static const per_choice_t T_prop_09_choice
[] = {
6528 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6529 { 1, &hf_tetra_prop_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_Proprietary
},
6530 { 0, NULL
, 0, NULL
}
6534 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_
) {
6535 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
6536 ett_tetra_T_prop_09
, T_prop_09_choice
,
6543 static const per_sequence_t T_type2_parameters_14_sequence
[] = {
6544 { &hf_tetra_basic_service_infomation
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_basic_service_infomation
},
6545 { &hf_tetra_notification_indicator_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_notification_indicator_01
},
6546 { &hf_tetra_prop_10
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_prop_09
},
6547 { NULL
, 0, 0, NULL
}
6551 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_
) {
6552 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
6553 ett_tetra_T_type2_parameters_14
, T_type2_parameters_14_sequence
);
6559 static const value_string tetra_T_optional_elements_18_vals
[] = {
6561 { 1, "type2-parameters" },
6565 static const per_choice_t T_optional_elements_18_choice
[] = {
6566 { 0, &hf_tetra_no_type2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6567 { 1, &hf_tetra_type2_parameters_14
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_type2_parameters_14
},
6568 { 0, NULL
, 0, NULL
}
6572 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_
) {
6573 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
6574 ett_tetra_T_optional_elements_18
, T_optional_elements_18_choice
,
6581 static const per_sequence_t D_ALERT_sequence
[] = {
6582 { &hf_tetra_call_identifier_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1023
},
6583 { &hf_tetra_call_time_out_setup_phase
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_7
},
6584 { &hf_tetra_reserved_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
6585 { &hf_tetra_simplex_duplex_selection_04
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_simplex_duplex_selection_03
},
6586 { &hf_tetra_call_queued
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_BOOLEAN
},
6587 { &hf_tetra_optional_elements_18
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_optional_elements_18
},
6588 { NULL
, 0, 0, NULL
}
6592 dissect_tetra_D_ALERT(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
6593 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
6594 ett_tetra_D_ALERT
, D_ALERT_sequence
);
6596 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "D-ALERT");
6602 static const value_string tetra_T_basic_service_information_02_vals
[] = {
6604 { 1, "basic-service-information" },
6608 static const per_choice_t T_basic_service_information_02_choice
[] = {
6609 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6610 { 1, &hf_tetra_basic_service_information
, ASN1_NO_EXTENSIONS
, dissect_tetra_Basic_service_information
},
6611 { 0, NULL
, 0, NULL
}
6615 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_
) {
6616 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
6617 ett_tetra_T_basic_service_information_02
, T_basic_service_information_02_choice
,
6624 static const value_string tetra_T_call_status_vals
[] = {
6626 { 1, "call-status" },
6630 static const per_choice_t T_call_status_choice
[] = {
6631 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6632 { 1, &hf_tetra_call_status_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_7
},
6633 { 0, NULL
, 0, NULL
}
6637 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_
) {
6638 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
6639 ett_tetra_T_call_status
, T_call_status_choice
,
6646 static const value_string tetra_T_notification_indicator_vals
[] = {
6648 { 1, "notification-indicator" },
6652 static const per_choice_t T_notification_indicator_choice
[] = {
6653 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6654 { 1, &hf_tetra_notification_indicator_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_63
},
6655 { 0, NULL
, 0, NULL
}
6659 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_
) {
6660 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
6661 ett_tetra_T_notification_indicator
, T_notification_indicator_choice
,
6668 static const value_string tetra_T_prop_08_vals
[] = {
6674 static const per_choice_t T_prop_08_choice
[] = {
6675 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6676 { 1, &hf_tetra_prop_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_Proprietary
},
6677 { 0, NULL
, 0, NULL
}
6681 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_
) {
6682 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
6683 ett_tetra_T_prop_08
, T_prop_08_choice
,
6690 static const per_sequence_t T_type2_parameters_13_sequence
[] = {
6691 { &hf_tetra_basic_service_information_03
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_basic_service_information_02
},
6692 { &hf_tetra_call_status
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_call_status
},
6693 { &hf_tetra_notification_indicator
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_notification_indicator
},
6694 { &hf_tetra_prop_09
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_prop_08
},
6695 { NULL
, 0, 0, NULL
}
6699 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_
) {
6700 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
6701 ett_tetra_T_type2_parameters_13
, T_type2_parameters_13_sequence
);
6707 static const value_string tetra_T_optional_elements_17_vals
[] = {
6709 { 1, "type2-parameters" },
6713 static const per_choice_t T_optional_elements_17_choice
[] = {
6714 { 0, &hf_tetra_no_type2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6715 { 1, &hf_tetra_type2_parameters_13
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_type2_parameters_13
},
6716 { 0, NULL
, 0, NULL
}
6720 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_
) {
6721 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
6722 ett_tetra_T_optional_elements_17
, T_optional_elements_17_choice
,
6729 static const per_sequence_t D_CALL_PROCEEDING_sequence
[] = {
6730 { &hf_tetra_call_identifier_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1023
},
6731 { &hf_tetra_call_time_out_setup_phase
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_7
},
6732 { &hf_tetra_hook_method_selection
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_BOOLEAN
},
6733 { &hf_tetra_simplex_duplex_selection_03
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
6734 { &hf_tetra_optional_elements_17
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_optional_elements_17
},
6735 { NULL
, 0, 0, NULL
}
6739 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_
) {
6740 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
6741 ett_tetra_D_CALL_PROCEEDING
, D_CALL_PROCEEDING_sequence
);
6743 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "D-CALL-PROCEEDING");
6749 static const value_string tetra_T_simplex_duplex_selection_04_vals
[] = {
6757 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_
) {
6758 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
6759 2, NULL
, false, 0, NULL
);
6765 static const value_string tetra_T_call_priority_vals
[] = {
6767 { 1, "call-priority" },
6771 static const per_choice_t T_call_priority_choice
[] = {
6772 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6773 { 1, &hf_tetra_call_priority
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_15
},
6774 { 0, NULL
, 0, NULL
}
6778 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_
) {
6779 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
6780 ett_tetra_T_call_priority
, T_call_priority_choice
,
6787 static const value_string tetra_T_basic_service_information_03_vals
[] = {
6789 { 1, "basic-service-information" },
6793 static const per_choice_t T_basic_service_information_03_choice
[] = {
6794 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6795 { 1, &hf_tetra_basic_service_information
, ASN1_NO_EXTENSIONS
, dissect_tetra_Basic_service_information
},
6796 { 0, NULL
, 0, NULL
}
6800 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_
) {
6801 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
6802 ett_tetra_T_basic_service_information_03
, T_basic_service_information_03_choice
,
6809 static const value_string tetra_T_temporary_address_vals
[] = {
6811 { 1, "temporary-address" },
6815 static const per_choice_t T_temporary_address_choice
[] = {
6816 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6817 { 1, &hf_tetra_temporary_address_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_Calling_party_address_type
},
6818 { 0, NULL
, 0, NULL
}
6822 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_
) {
6823 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
6824 ett_tetra_T_temporary_address
, T_temporary_address_choice
,
6831 static const value_string tetra_T_notification_indicator_02_vals
[] = {
6833 { 1, "notification-indicator" },
6837 static const per_choice_t T_notification_indicator_02_choice
[] = {
6838 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6839 { 1, &hf_tetra_notification_indicator_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_63
},
6840 { 0, NULL
, 0, NULL
}
6844 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_
) {
6845 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
6846 ett_tetra_T_notification_indicator_02
, T_notification_indicator_02_choice
,
6853 static const value_string tetra_T_prop_10_vals
[] = {
6859 static const per_choice_t T_prop_10_choice
[] = {
6860 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6861 { 1, &hf_tetra_prop_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_Proprietary
},
6862 { 0, NULL
, 0, NULL
}
6866 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_
) {
6867 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
6868 ett_tetra_T_prop_10
, T_prop_10_choice
,
6875 static const per_sequence_t T_type2_parameters_15_sequence
[] = {
6876 { &hf_tetra_call_priority_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_call_priority
},
6877 { &hf_tetra_basic_service_information_04
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_basic_service_information_03
},
6878 { &hf_tetra_temporary_address
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_temporary_address
},
6879 { &hf_tetra_notification_indicator_03
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_notification_indicator_02
},
6880 { &hf_tetra_prop_11
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_prop_10
},
6881 { NULL
, 0, 0, NULL
}
6885 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_
) {
6886 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
6887 ett_tetra_T_type2_parameters_15
, T_type2_parameters_15_sequence
);
6893 static const value_string tetra_T_optional_elements_19_vals
[] = {
6895 { 1, "type2-parameters" },
6899 static const per_choice_t T_optional_elements_19_choice
[] = {
6900 { 0, &hf_tetra_no_type2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6901 { 1, &hf_tetra_type2_parameters_15
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_type2_parameters_15
},
6902 { 0, NULL
, 0, NULL
}
6906 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_
) {
6907 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
6908 ett_tetra_T_optional_elements_19
, T_optional_elements_19_choice
,
6915 static const per_sequence_t D_CONNECT_sequence
[] = {
6916 { &hf_tetra_call_identifier_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1023
},
6917 { &hf_tetra_call_time_out_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_31
},
6918 { &hf_tetra_hook_method_selection
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_BOOLEAN
},
6919 { &hf_tetra_simplex_duplex_selection_05
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_simplex_duplex_selection_04
},
6920 { &hf_tetra_transmission_grant
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
6921 { &hf_tetra_transmission_request_permission
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
6922 { &hf_tetra_call_ownership
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
6923 { &hf_tetra_optional_elements_19
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_optional_elements_19
},
6924 { NULL
, 0, 0, NULL
}
6928 dissect_tetra_D_CONNECT(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
6929 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
6930 ett_tetra_D_CONNECT
, D_CONNECT_sequence
);
6932 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "D-CONNECT");
6938 static const value_string tetra_T_notification_indicator_03_vals
[] = {
6940 { 1, "notification-indicator" },
6944 static const per_choice_t T_notification_indicator_03_choice
[] = {
6945 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6946 { 1, &hf_tetra_notification_indicator_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_63
},
6947 { 0, NULL
, 0, NULL
}
6951 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_
) {
6952 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
6953 ett_tetra_T_notification_indicator_03
, T_notification_indicator_03_choice
,
6960 static const value_string tetra_T_prop_11_vals
[] = {
6966 static const per_choice_t T_prop_11_choice
[] = {
6967 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
6968 { 1, &hf_tetra_prop_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_Proprietary
},
6969 { 0, NULL
, 0, NULL
}
6973 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_
) {
6974 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
6975 ett_tetra_T_prop_11
, T_prop_11_choice
,
6982 static const per_sequence_t T_type2_parameters_16_sequence
[] = {
6983 { &hf_tetra_notification_indicator_04
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_notification_indicator_03
},
6984 { &hf_tetra_prop_12
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_prop_11
},
6985 { NULL
, 0, 0, NULL
}
6989 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_
) {
6990 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
6991 ett_tetra_T_type2_parameters_16
, T_type2_parameters_16_sequence
);
6997 static const value_string tetra_T_optional_elements_20_vals
[] = {
6999 { 1, "type2-parameters" },
7003 static const per_choice_t T_optional_elements_20_choice
[] = {
7004 { 0, &hf_tetra_no_type2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
7005 { 1, &hf_tetra_type2_parameters_16
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_type2_parameters_16
},
7006 { 0, NULL
, 0, NULL
}
7010 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_
) {
7011 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
7012 ett_tetra_T_optional_elements_20
, T_optional_elements_20_choice
,
7019 static const per_sequence_t D_CONNECT_ACK_sequence
[] = {
7020 { &hf_tetra_call_identifier_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1023
},
7021 { &hf_tetra_call_time_out
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_15
},
7022 { &hf_tetra_transmission_grant
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
7023 { &hf_tetra_transmission_request_permission
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
7024 { &hf_tetra_optional_elements_20
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_optional_elements_20
},
7025 { NULL
, 0, 0, NULL
}
7029 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_
) {
7030 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
7031 ett_tetra_D_CONNECT_ACK
, D_CONNECT_ACK_sequence
);
7033 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "D-CONNECT-ACK");
7039 static const per_sequence_t D_DISCONNECT_sequence
[] = {
7040 { &hf_tetra_call_identifier
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_16383
},
7041 { &hf_tetra_disconnect_cause
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_31
},
7042 { NULL
, 0, 0, NULL
}
7046 dissect_tetra_D_DISCONNECT(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
7047 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
7048 ett_tetra_D_DISCONNECT
, D_DISCONNECT_sequence
);
7050 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "D-DISCONNECT");
7056 static const per_sequence_t D_INFO_sequence
[] = {
7057 { &hf_tetra_call_identifier
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_16383
},
7058 { &hf_tetra_reset_call_time_out_timer
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
7059 { &hf_tetra_poll_request
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
7060 { NULL
, 0, 0, NULL
}
7064 dissect_tetra_D_INFO(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
7065 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
7066 ett_tetra_D_INFO
, D_INFO_sequence
);
7068 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "D-INFO");
7074 static const value_string tetra_T_notification_indicator_04_vals
[] = {
7076 { 1, "notification-indicator" },
7080 static const per_choice_t T_notification_indicator_04_choice
[] = {
7081 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
7082 { 1, &hf_tetra_notification_indicator_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_63
},
7083 { 0, NULL
, 0, NULL
}
7087 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_
) {
7088 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
7089 ett_tetra_T_notification_indicator_04
, T_notification_indicator_04_choice
,
7096 static const value_string tetra_T_prop_12_vals
[] = {
7102 static const per_choice_t T_prop_12_choice
[] = {
7103 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
7104 { 1, &hf_tetra_prop_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_Proprietary
},
7105 { 0, NULL
, 0, NULL
}
7109 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_
) {
7110 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
7111 ett_tetra_T_prop_12
, T_prop_12_choice
,
7118 static const per_sequence_t T_type2_parameters_17_sequence
[] = {
7119 { &hf_tetra_notification_indicator_05
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_notification_indicator_04
},
7120 { &hf_tetra_prop_13
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_prop_12
},
7121 { NULL
, 0, 0, NULL
}
7125 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_
) {
7126 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
7127 ett_tetra_T_type2_parameters_17
, T_type2_parameters_17_sequence
);
7133 static const value_string tetra_T_optional_elements_21_vals
[] = {
7135 { 1, "type2-parameters" },
7139 static const per_choice_t T_optional_elements_21_choice
[] = {
7140 { 0, &hf_tetra_no_type2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
7141 { 1, &hf_tetra_type2_parameters_17
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_type2_parameters_17
},
7142 { 0, NULL
, 0, NULL
}
7146 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_
) {
7147 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
7148 ett_tetra_T_optional_elements_21
, T_optional_elements_21_choice
,
7155 static const per_sequence_t D_RELEASE_sequence
[] = {
7156 { &hf_tetra_call_identifier
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_16383
},
7157 { &hf_tetra_disconnect_cause
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_31
},
7158 { &hf_tetra_optional_elements_21
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_optional_elements_21
},
7159 { NULL
, 0, 0, NULL
}
7163 dissect_tetra_D_RELEASE(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
7164 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
7165 ett_tetra_D_RELEASE
, D_RELEASE_sequence
);
7167 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "D-RELEASE");
7173 static const value_string tetra_T_simplex_duplex_selection_02_vals
[] = {
7181 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_
) {
7182 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
7183 2, NULL
, false, 0, NULL
);
7189 static const value_string tetra_T_calling_party_address_vals
[] = {
7191 { 1, "calling-party-address" },
7195 static const per_choice_t T_calling_party_address_choice
[] = {
7196 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
7197 { 1, &hf_tetra_calling_party_address_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_Calling_party_address_type
},
7198 { 0, NULL
, 0, NULL
}
7202 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_
) {
7203 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
7204 ett_tetra_T_calling_party_address
, T_calling_party_address_choice
,
7211 static const value_string tetra_T_external_subscriber_number_01_vals
[] = {
7213 { 1, "external-subscriber-number" },
7217 static const per_choice_t T_external_subscriber_number_01_choice
[] = {
7218 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
7219 { 1, &hf_tetra_external_subscriber_number_03
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_15
},
7220 { 0, NULL
, 0, NULL
}
7224 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_
) {
7225 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
7226 ett_tetra_T_external_subscriber_number_01
, T_external_subscriber_number_01_choice
,
7233 static const value_string tetra_T_prop_07_vals
[] = {
7239 static const per_choice_t T_prop_07_choice
[] = {
7240 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
7241 { 1, &hf_tetra_prop_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_Proprietary
},
7242 { 0, NULL
, 0, NULL
}
7246 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_
) {
7247 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
7248 ett_tetra_T_prop_07
, T_prop_07_choice
,
7255 static const per_sequence_t T_type2_parameters_12_sequence
[] = {
7256 { &hf_tetra_calling_party_address
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_calling_party_address
},
7257 { &hf_tetra_external_subscriber_number_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_external_subscriber_number_01
},
7258 { &hf_tetra_prop_08
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_prop_07
},
7259 { NULL
, 0, 0, NULL
}
7263 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_
) {
7264 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
7265 ett_tetra_T_type2_parameters_12
, T_type2_parameters_12_sequence
);
7271 static const value_string tetra_T_optional_elements_16_vals
[] = {
7273 { 1, "type2-parameters" },
7277 static const per_choice_t T_optional_elements_16_choice
[] = {
7278 { 0, &hf_tetra_no_type2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
7279 { 1, &hf_tetra_type2_parameters_12
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_type2_parameters_12
},
7280 { 0, NULL
, 0, NULL
}
7284 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_
) {
7285 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
7286 ett_tetra_T_optional_elements_16
, T_optional_elements_16_choice
,
7293 static const per_sequence_t D_SETUP_sequence
[] = {
7294 { &hf_tetra_call_identifier
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_16383
},
7295 { &hf_tetra_call_time_out
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_15
},
7296 { &hf_tetra_hook_method_selection_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
7297 { &hf_tetra_simplex_duplex_selection_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_simplex_duplex_selection_02
},
7298 { &hf_tetra_basic_service_information
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Basic_service_information
},
7299 { &hf_tetra_transmission_grant
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
7300 { &hf_tetra_transmission_request_permission
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
7301 { &hf_tetra_call_priority
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_15
},
7302 { &hf_tetra_optional_elements_16
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_optional_elements_16
},
7303 { NULL
, 0, 0, NULL
}
7307 dissect_tetra_D_SETUP(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
7308 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
7309 ett_tetra_D_SETUP
, D_SETUP_sequence
);
7311 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "D-SETUP");
7319 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_
) {
7320 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
7327 static const value_string tetra_T_calling_party_type_identifier_01_vals
[] = {
7329 { 1, "calling-party-address-SSI" },
7330 { 2, "ssi-extension" },
7335 static const per_choice_t T_calling_party_type_identifier_01_choice
[] = {
7336 { 0, &hf_tetra_none1
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
7337 { 1, &hf_tetra_calling_party_address_SSI
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_16777215
},
7338 { 2, &hf_tetra_ssi_extension_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_OCTET_STRING_SIZE_6
},
7339 { 3, &hf_tetra_none2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
7340 { 0, NULL
, 0, NULL
}
7344 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_
) {
7345 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
7346 ett_tetra_T_calling_party_type_identifier_01
, T_calling_party_type_identifier_01_choice
,
7353 static const per_sequence_t D_STATUS_sequence
[] = {
7354 { &hf_tetra_calling_party_type_identifier_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_calling_party_type_identifier_01
},
7355 { &hf_tetra_pre_coded_status
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_65535
},
7356 { NULL
, 0, 0, NULL
}
7360 dissect_tetra_D_STATUS(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
7361 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
7362 ett_tetra_D_STATUS
, D_STATUS_sequence
);
7364 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "D-STATUS");
7370 static const value_string tetra_T_notification_indicator_06_vals
[] = {
7372 { 1, "notification-indicator" },
7376 static const per_choice_t T_notification_indicator_06_choice
[] = {
7377 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
7378 { 1, &hf_tetra_notification_indicator_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_63
},
7379 { 0, NULL
, 0, NULL
}
7383 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_
) {
7384 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
7385 ett_tetra_T_notification_indicator_06
, T_notification_indicator_06_choice
,
7392 static const value_string tetra_T_prop_14_vals
[] = {
7398 static const per_choice_t T_prop_14_choice
[] = {
7399 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
7400 { 1, &hf_tetra_prop_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_Proprietary
},
7401 { 0, NULL
, 0, NULL
}
7405 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_
) {
7406 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
7407 ett_tetra_T_prop_14
, T_prop_14_choice
,
7414 static const per_sequence_t T_type2_parameters_19_sequence
[] = {
7415 { &hf_tetra_notification_indicator_07
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_notification_indicator_06
},
7416 { &hf_tetra_prop_15
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_prop_14
},
7417 { NULL
, 0, 0, NULL
}
7421 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_
) {
7422 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
7423 ett_tetra_T_type2_parameters_19
, T_type2_parameters_19_sequence
);
7429 static const value_string tetra_T_optional_elements_23_vals
[] = {
7431 { 1, "type2-parameters" },
7435 static const per_choice_t T_optional_elements_23_choice
[] = {
7436 { 0, &hf_tetra_no_type2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
7437 { 1, &hf_tetra_type2_parameters_19
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_type2_parameters_19
},
7438 { 0, NULL
, 0, NULL
}
7442 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_
) {
7443 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
7444 ett_tetra_T_optional_elements_23
, T_optional_elements_23_choice
,
7451 static const per_sequence_t D_TX_CEASED_sequence
[] = {
7452 { &hf_tetra_call_identifier_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1023
},
7453 { &hf_tetra_transmission_request_permission
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
7454 { &hf_tetra_optional_elements_23
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_optional_elements_23
},
7455 { NULL
, 0, 0, NULL
}
7459 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_
) {
7460 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
7461 ett_tetra_D_TX_CEASED
, D_TX_CEASED_sequence
);
7463 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "D-TX-CEASED");
7469 static const per_sequence_t D_TX_CONTINUE_sequence
[] = {
7470 { &hf_tetra_call_identifier
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_16383
},
7471 { &hf_tetra_continue
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
7472 { &hf_tetra_transmission_request_permission
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
7473 { NULL
, 0, 0, NULL
}
7477 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_
) {
7478 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
7479 ett_tetra_D_TX_CONTINUE
, D_TX_CONTINUE_sequence
);
7481 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "D-TX-CONTINUE");
7487 static const per_sequence_t D_TX_GRANTED_sequence
[] = {
7488 { &hf_tetra_call_identifier_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1023
},
7489 { &hf_tetra_transmission_grant
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
7490 { &hf_tetra_transmission_request_permission
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
7491 { &hf_tetra_encryption_control
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
7492 { &hf_tetra_reserved_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
7493 { NULL
, 0, 0, NULL
}
7497 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_
) {
7498 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
7499 ett_tetra_D_TX_GRANTED
, D_TX_GRANTED_sequence
);
7501 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "D-TX-GRANTED");
7508 static const per_sequence_t D_TX_WAIT_sequence
[] = {
7509 { &hf_tetra_call_identifier
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_16383
},
7510 { &hf_tetra_transmission_request_permission
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
7511 { NULL
, 0, 0, NULL
}
7515 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_
) {
7516 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
7517 ett_tetra_D_TX_WAIT
, D_TX_WAIT_sequence
);
7519 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "D-TX-WAIT");
7520 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
7521 ett_tetra_D_TX_WAIT
, D_TX_WAIT_sequence
);
7523 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "D-TX-WAIT");
7529 static const value_string tetra_T_new_call_identifier_vals
[] = {
7531 { 1, "new-call-identifier" },
7535 static const per_choice_t T_new_call_identifier_choice
[] = {
7536 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
7537 { 1, &hf_tetra_new_call_identifier_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_1023
},
7538 { 0, NULL
, 0, NULL
}
7542 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_
) {
7543 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
7544 ett_tetra_T_new_call_identifier
, T_new_call_identifier_choice
,
7551 static const value_string tetra_T_call_time_out_vals
[] = {
7553 { 1, "call-time-out" },
7557 static const per_choice_t T_call_time_out_choice
[] = {
7558 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
7559 { 1, &hf_tetra_call_time_out_03
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_7
},
7560 { 0, NULL
, 0, NULL
}
7564 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_
) {
7565 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
7566 ett_tetra_T_call_time_out
, T_call_time_out_choice
,
7573 static const value_string tetra_T_call_status_01_vals
[] = {
7575 { 1, "call-status" },
7579 static const per_choice_t T_call_status_01_choice
[] = {
7580 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
7581 { 1, &hf_tetra_call_status_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_7
},
7582 { 0, NULL
, 0, NULL
}
7586 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_
) {
7587 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
7588 ett_tetra_T_call_status_01
, T_call_status_01_choice
,
7595 static const value_string tetra_T_simplex_duplex_selection_05_vals
[] = {
7603 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_
) {
7604 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
7605 2, NULL
, false, 0, NULL
);
7611 static const per_sequence_t Modify_type_sequence
[] = {
7612 { &hf_tetra_simplex_duplex_selection_06
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_simplex_duplex_selection_05
},
7613 { &hf_tetra_basic_service_information
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Basic_service_information
},
7614 { NULL
, 0, 0, NULL
}
7618 dissect_tetra_Modify_type(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
7619 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
7620 ett_tetra_Modify_type
, Modify_type_sequence
);
7626 static const value_string tetra_T_modify_vals
[] = {
7632 static const per_choice_t T_modify_choice
[] = {
7633 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
7634 { 1, &hf_tetra_modify_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_Modify_type
},
7635 { 0, NULL
, 0, NULL
}
7639 dissect_tetra_T_modify(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
7640 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
7641 ett_tetra_T_modify
, T_modify_choice
,
7648 static const value_string tetra_T_notification_indicator_05_vals
[] = {
7650 { 1, "notification-indicator" },
7654 static const per_choice_t T_notification_indicator_05_choice
[] = {
7655 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
7656 { 1, &hf_tetra_notification_indicator_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_63
},
7657 { 0, NULL
, 0, NULL
}
7661 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_
) {
7662 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
7663 ett_tetra_T_notification_indicator_05
, T_notification_indicator_05_choice
,
7670 static const value_string tetra_T_prop_13_vals
[] = {
7676 static const per_choice_t T_prop_13_choice
[] = {
7677 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
7678 { 1, &hf_tetra_prop_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_Proprietary
},
7679 { 0, NULL
, 0, NULL
}
7683 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_
) {
7684 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
7685 ett_tetra_T_prop_13
, T_prop_13_choice
,
7692 static const per_sequence_t T_type2_parameters_18_sequence
[] = {
7693 { &hf_tetra_new_call_identifier
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_new_call_identifier
},
7694 { &hf_tetra_call_time_out_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_call_time_out
},
7695 { &hf_tetra_call_status_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_call_status_01
},
7696 { &hf_tetra_modify
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_modify
},
7697 { &hf_tetra_notification_indicator_06
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_notification_indicator_05
},
7698 { &hf_tetra_prop_14
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_prop_13
},
7699 { NULL
, 0, 0, NULL
}
7703 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_
) {
7704 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
7705 ett_tetra_T_type2_parameters_18
, T_type2_parameters_18_sequence
);
7711 static const value_string tetra_T_optional_elements_22_vals
[] = {
7713 { 1, "type2-parameters" },
7717 static const per_choice_t T_optional_elements_22_choice
[] = {
7718 { 0, &hf_tetra_no_type2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
7719 { 1, &hf_tetra_type2_parameters_18
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_type2_parameters_18
},
7720 { 0, NULL
, 0, NULL
}
7724 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_
) {
7725 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
7726 ett_tetra_T_optional_elements_22
, T_optional_elements_22_choice
,
7733 static const per_sequence_t D_CALL_RESTORE_sequence
[] = {
7734 { &hf_tetra_call_identifier_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1023
},
7735 { &hf_tetra_transmission_grant
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
7736 { &hf_tetra_transmission_request_permission
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
7737 { &hf_tetra_reset_call_time_out
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
7738 { &hf_tetra_optional_elements_22
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_optional_elements_22
},
7739 { NULL
, 0, 0, NULL
}
7743 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_
) {
7744 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
7745 ett_tetra_D_CALL_RESTORE
, D_CALL_RESTORE_sequence
);
7747 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "D-CALL-RESTORE");
7753 static const value_string tetra_T_calling_party_type_identifier_vals
[] = {
7756 { 2, "ssi-extension" },
7761 static const per_choice_t T_calling_party_type_identifier_choice
[] = {
7762 { 0, &hf_tetra_none1
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
7763 { 1, &hf_tetra_ssi
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_16777215
},
7764 { 2, &hf_tetra_ssi_extension_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_OCTET_STRING_SIZE_6
},
7765 { 3, &hf_tetra_none2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
7766 { 0, NULL
, 0, NULL
}
7770 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_
) {
7771 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
7772 ett_tetra_T_calling_party_type_identifier
, T_calling_party_type_identifier_choice
,
7781 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_
) {
7782 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
7789 static const value_string tetra_T_short_data_type_identifier_01_vals
[] = {
7793 { 3, "length-indicator-data-4" },
7797 static const per_choice_t T_short_data_type_identifier_01_choice
[] = {
7798 { 0, &hf_tetra_data_1
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_65535
},
7799 { 1, &hf_tetra_data_2
, ASN1_NO_EXTENSIONS
, dissect_tetra_OCTET_STRING_SIZE_4
},
7800 { 2, &hf_tetra_data_3_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_OCTET_STRING_SIZE_8
},
7801 { 3, &hf_tetra_length_indicator_data_4
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_4194304
},
7802 { 0, NULL
, 0, NULL
}
7806 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_
) {
7807 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
7808 ett_tetra_T_short_data_type_identifier_01
, T_short_data_type_identifier_01_choice
,
7815 static const per_sequence_t D_SDS_DATA_sequence
[] = {
7816 { &hf_tetra_calling_party_type_identifier
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_calling_party_type_identifier
},
7817 { &hf_tetra_short_data_type_identifier_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_short_data_type_identifier_01
},
7818 { NULL
, 0, 0, NULL
}
7822 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_
) {
7823 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
7824 ett_tetra_D_SDS_DATA
, D_SDS_DATA_sequence
);
7826 col_append_sep_str(actx
->pinfo
->cinfo
, COL_INFO
, NULL
, "D-SDS-DATA");
7832 static const value_string tetra_D_CMCE_PDU_vals
[] = {
7834 { 1, "d-Call-Proceeding" },
7836 { 3, "d-Connect-Ack" },
7837 { 4, "d-Disconnect" },
7842 { 9, "d-Tx-Ceased" },
7843 { 10, "d-Tx-Continue" },
7844 { 11, "d-Tx-Granted" },
7845 { 12, "d-Tx-Wait" },
7846 { 13, "d-Tx-Interrupt" },
7847 { 14, "d-Call-Restore" },
7848 { 15, "d-SDS-Data" },
7849 { 16, "d-Facility" },
7853 static const per_choice_t D_CMCE_PDU_choice
[] = {
7854 { 0, &hf_tetra_d_Alert
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_ALERT
},
7855 { 1, &hf_tetra_d_Call_Proceeding
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_CALL_PROCEEDING
},
7856 { 2, &hf_tetra_d_Connect
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_CONNECT
},
7857 { 3, &hf_tetra_d_Connect_Ack
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_CONNECT_ACK
},
7858 { 4, &hf_tetra_d_Disconnect
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_DISCONNECT
},
7859 { 5, &hf_tetra_d_Info
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_INFO
},
7860 { 6, &hf_tetra_d_Release
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_RELEASE
},
7861 { 7, &hf_tetra_d_Setup
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_SETUP
},
7862 { 8, &hf_tetra_d_Status
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_STATUS
},
7863 { 9, &hf_tetra_d_Tx_Ceased
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_TX_CEASED
},
7864 { 10, &hf_tetra_d_Tx_Continue
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_TX_CONTINUE
},
7865 { 11, &hf_tetra_d_Tx_Granted
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_TX_GRANTED
},
7866 { 12, &hf_tetra_d_Tx_Wait
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_TX_WAIT
},
7867 { 13, &hf_tetra_d_Tx_Interrupt
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
7868 { 14, &hf_tetra_d_Call_Restore
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_CALL_RESTORE
},
7869 { 15, &hf_tetra_d_SDS_Data
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_SDS_DATA
},
7870 { 16, &hf_tetra_d_Facility
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
7871 { 0, NULL
, 0, NULL
}
7875 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_
) {
7876 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
7877 ett_tetra_D_CMCE_PDU
, D_CMCE_PDU_choice
,
7884 static const value_string tetra_T_optional_elements_02_vals
[] = {
7890 static const per_choice_t T_optional_elements_02_choice
[] = {
7891 { 0, &hf_tetra_no_type2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
7892 { 1, &hf_tetra_sdu
, ASN1_NO_EXTENSIONS
, dissect_tetra_BIT_STRING
},
7893 { 0, NULL
, 0, NULL
}
7897 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_
) {
7898 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
7899 ett_tetra_T_optional_elements_02
, T_optional_elements_02_choice
,
7906 static const per_sequence_t D_NEW_CELL_sequence
[] = {
7907 { &hf_tetra_pdu_type_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_7
},
7908 { &hf_tetra_channel_command_valid
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
7909 { &hf_tetra_optional_elements_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_optional_elements_02
},
7910 { NULL
, 0, 0, NULL
}
7914 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_
) {
7915 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
7916 ett_tetra_D_NEW_CELL
, D_NEW_CELL_sequence
);
7922 static const value_string tetra_T_optional_elements_03_vals
[] = {
7928 static const per_choice_t T_optional_elements_03_choice
[] = {
7929 { 0, &hf_tetra_no_type2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
7930 { 1, &hf_tetra_sdu
, ASN1_NO_EXTENSIONS
, dissect_tetra_BIT_STRING
},
7931 { 0, NULL
, 0, NULL
}
7935 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_
) {
7936 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
7937 ett_tetra_T_optional_elements_03
, T_optional_elements_03_choice
,
7944 static const per_sequence_t D_PREPARE_FAIL_sequence
[] = {
7945 { &hf_tetra_pdu_type_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_7
},
7946 { &hf_tetra_fail_cause
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
7947 { &hf_tetra_optional_elements_03
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_optional_elements_03
},
7948 { NULL
, 0, 0, NULL
}
7952 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_
) {
7953 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
7954 ett_tetra_D_PREPARE_FAIL
, D_PREPARE_FAIL_sequence
);
7962 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_
) {
7963 offset
= dissect_per_integer(tvb
, offset
, actx
, tree
, hf_index
, NULL
);
7971 dissect_tetra_T_reserved(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
7972 offset
= dissect_per_integer(tvb
, offset
, actx
, tree
, hf_index
, NULL
);
7978 static const per_sequence_t TETRA_NETWORK_TIME_sequence
[] = {
7979 { &hf_tetra_network_time
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_network_time
},
7980 { &hf_tetra_local_time_offset_sign
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
7981 { &hf_tetra_local_time_offset
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_63
},
7982 { &hf_tetra_year
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_63
},
7983 { &hf_tetra_reserved_04
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_reserved
},
7984 { NULL
, 0, 0, NULL
}
7988 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_
) {
7989 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
7990 ett_tetra_TETRA_NETWORK_TIME
, TETRA_NETWORK_TIME_sequence
);
7996 static const value_string tetra_T_tetra_network_time_vals
[] = {
7998 { 1, "tetra-network-time" },
8002 static const per_choice_t T_tetra_network_time_choice
[] = {
8003 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
8004 { 1, &hf_tetra_tetra_network_time_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_TETRA_NETWORK_TIME
},
8005 { 0, NULL
, 0, NULL
}
8009 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_
) {
8010 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
8011 ett_tetra_T_tetra_network_time
, T_tetra_network_time_choice
,
8018 static const value_string tetra_T_number_of_neighbour_cells_vals
[] = {
8020 { 1, "number-of-neighbour-cells" },
8024 static const per_choice_t T_number_of_neighbour_cells_choice
[] = {
8025 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
8026 { 1, &hf_tetra_number_of_neighbour_cells_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_7
},
8027 { 0, NULL
, 0, NULL
}
8031 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_
) {
8032 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
8033 ett_tetra_T_number_of_neighbour_cells
, T_number_of_neighbour_cells_choice
,
8040 static const per_sequence_t T_type2_parameters_02_sequence
[] = {
8041 { &hf_tetra_tetra_network_time
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_tetra_network_time
},
8042 { &hf_tetra_number_of_neighbour_cells
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_number_of_neighbour_cells
},
8043 { NULL
, 0, 0, NULL
}
8047 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_
) {
8048 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
8049 ett_tetra_T_type2_parameters_02
, T_type2_parameters_02_sequence
);
8055 static const value_string tetra_T_optional_elements_04_vals
[] = {
8057 { 1, "type2-parameters" },
8061 static const per_choice_t T_optional_elements_04_choice
[] = {
8062 { 0, &hf_tetra_no_type2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
8063 { 1, &hf_tetra_type2_parameters_02
, ASN1_NO_EXTENSIONS
, dissect_tetra_T_type2_parameters_02
},
8064 { 0, NULL
, 0, NULL
}
8068 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_
) {
8069 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
8070 ett_tetra_T_optional_elements_04
, T_optional_elements_04_choice
,
8077 static const per_sequence_t D_NWRK_BRDADCAST_sequence
[] = {
8078 { &hf_tetra_pdu_type_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_7
},
8079 { &hf_tetra_cell_re_select_parameters
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_65535
},
8080 { &hf_tetra_cell_service_level
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
8081 { &hf_tetra_optional_elements_04
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_optional_elements_04
},
8082 { NULL
, 0, 0, NULL
}
8086 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_
) {
8087 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
8088 ett_tetra_D_NWRK_BRDADCAST
, D_NWRK_BRDADCAST_sequence
);
8094 static const per_sequence_t D_RESTORE_ACK_sequence
[] = {
8095 { &hf_tetra_pdu_type_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_7
},
8096 { &hf_tetra_sdu
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_BIT_STRING
},
8097 { NULL
, 0, 0, NULL
}
8101 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_
) {
8102 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
8103 ett_tetra_D_RESTORE_ACK
, D_RESTORE_ACK_sequence
);
8109 static const per_sequence_t D_RESTORE_FAIL_sequence
[] = {
8110 { &hf_tetra_pdu_type_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_7
},
8111 { &hf_tetra_fail_cause
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
8112 { NULL
, 0, 0, NULL
}
8116 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_
) {
8117 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
8118 ett_tetra_D_RESTORE_FAIL
, D_RESTORE_FAIL_sequence
);
8124 static const value_string tetra_DMLE_PDU_vals
[] = {
8125 { 0, "d-new-cell" },
8126 { 1, "d-prepare-fail" },
8127 { 2, "d-nwrk-broadcast" },
8128 { 3, "dmle-reserved1" },
8129 { 4, "d-restore-ack" },
8130 { 5, "d-restore-fail" },
8131 { 6, "dmle-reserved2" },
8132 { 7, "dmle-reserved3" },
8136 static const per_choice_t DMLE_PDU_choice
[] = {
8137 { 0, &hf_tetra_d_new_cell
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_NEW_CELL
},
8138 { 1, &hf_tetra_d_prepare_fail
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_PREPARE_FAIL
},
8139 { 2, &hf_tetra_d_nwrk_broadcast
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_NWRK_BRDADCAST
},
8140 { 3, &hf_tetra_dmle_reserved1
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
8141 { 4, &hf_tetra_d_restore_ack
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_RESTORE_ACK
},
8142 { 5, &hf_tetra_d_restore_fail
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_RESTORE_FAIL
},
8143 { 6, &hf_tetra_dmle_reserved2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
8144 { 7, &hf_tetra_dmle_reserved3
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
8145 { 0, NULL
, 0, NULL
}
8149 dissect_tetra_DMLE_PDU(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
8150 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
8151 ett_tetra_DMLE_PDU
, DMLE_PDU_choice
,
8158 static const value_string tetra_D_MLE_PDU_vals
[] = {
8159 { 0, "u-mle-reserved1" },
8162 { 3, "u-mle-reserved2" },
8165 { 6, "tetra-management-entity-protocol" },
8166 { 7, "u-mle-reserved3" },
8170 static const per_choice_t D_MLE_PDU_choice
[] = {
8171 { 0, &hf_tetra_u_mle_reserved1
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
8172 { 1, &hf_tetra_mm_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_MM_PDU
},
8173 { 2, &hf_tetra_cmce_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_CMCE_PDU
},
8174 { 3, &hf_tetra_u_mle_reserved2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
8175 { 4, &hf_tetra_sndcp
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
8176 { 5, &hf_tetra_mle_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_DMLE_PDU
},
8177 { 6, &hf_tetra_tetra_management_entity_protocol
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
8178 { 7, &hf_tetra_u_mle_reserved3
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
8179 { 0, NULL
, 0, NULL
}
8183 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_
) {
8184 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
8185 ett_tetra_D_MLE_PDU
, D_MLE_PDU_choice
,
8192 static const per_sequence_t D_BL_ADATA_sequence
[] = {
8193 { &hf_tetra_nr
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
8194 { &hf_tetra_ns
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
8195 { &hf_tetra_tl_sdu_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_D_MLE_PDU
},
8196 { NULL
, 0, 0, NULL
}
8200 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_
) {
8201 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
8202 ett_tetra_D_BL_ADATA
, D_BL_ADATA_sequence
);
8208 static const per_sequence_t D_BL_DATA_sequence
[] = {
8209 { &hf_tetra_ns
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
8210 { &hf_tetra_tl_sdu_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_D_MLE_PDU
},
8211 { NULL
, 0, 0, NULL
}
8215 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_
) {
8216 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
8217 ett_tetra_D_BL_DATA
, D_BL_DATA_sequence
);
8223 static const per_sequence_t D_BL_ACK_sequence
[] = {
8224 { &hf_tetra_nr
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
8225 { &hf_tetra_tl_sdu_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_D_MLE_PDU
},
8226 { NULL
, 0, 0, NULL
}
8230 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_
) {
8231 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
8232 ett_tetra_D_BL_ACK
, D_BL_ACK_sequence
);
8238 static const per_sequence_t D_BL_ADATA_FCS_sequence
[] = {
8239 { &hf_tetra_nr
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
8240 { &hf_tetra_ns
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
8241 { &hf_tetra_tl_sdu_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_D_MLE_PDU
},
8242 { &hf_tetra_fcs
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_OCTET_STRING_SIZE_4
},
8243 { NULL
, 0, 0, NULL
}
8247 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_
) {
8248 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
8249 ett_tetra_D_BL_ADATA_FCS
, D_BL_ADATA_FCS_sequence
);
8255 static const per_sequence_t D_BL_DATA_FCS_sequence
[] = {
8256 { &hf_tetra_ns
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
8257 { &hf_tetra_tl_sdu_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_D_MLE_PDU
},
8258 { &hf_tetra_fcs
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_OCTET_STRING_SIZE_4
},
8259 { NULL
, 0, 0, NULL
}
8263 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_
) {
8264 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
8265 ett_tetra_D_BL_DATA_FCS
, D_BL_DATA_FCS_sequence
);
8271 static const per_sequence_t D_MLE_PDU_FCS_sequence
[] = {
8272 { &hf_tetra_d_mle_pdu
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_D_MLE_PDU
},
8273 { &hf_tetra_fcs
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_OCTET_STRING_SIZE_4
},
8274 { NULL
, 0, 0, NULL
}
8278 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_
) {
8279 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
8280 ett_tetra_D_MLE_PDU_FCS
, D_MLE_PDU_FCS_sequence
);
8286 static const per_sequence_t D_BL_ACK_FCS_sequence
[] = {
8287 { &hf_tetra_nr
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
8288 { &hf_tetra_tl_sdu_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_D_MLE_PDU
},
8289 { &hf_tetra_fcs
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_OCTET_STRING_SIZE_4
},
8290 { NULL
, 0, 0, NULL
}
8294 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_
) {
8295 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
8296 ett_tetra_D_BL_ACK_FCS
, D_BL_ACK_FCS_sequence
);
8302 static const value_string tetra_D_LLC_PDU_vals
[] = {
8307 { 4, "bl-adata-fcs" },
8308 { 5, "bl-data-fcs" },
8309 { 6, "bl-udata-fcs" },
8310 { 7, "bl-ack-fcs" },
8315 { 12, "al-reconnect" },
8322 static const per_choice_t D_LLC_PDU_choice
[] = {
8323 { 0, &hf_tetra_bl_adata_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_BL_ADATA
},
8324 { 1, &hf_tetra_bl_data_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_BL_DATA
},
8325 { 2, &hf_tetra_bl_udata_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_MLE_PDU
},
8326 { 3, &hf_tetra_bl_ack_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_BL_ACK
},
8327 { 4, &hf_tetra_bl_adata_fcs_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_BL_ADATA_FCS
},
8328 { 5, &hf_tetra_bl_data_fcs_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_BL_DATA_FCS
},
8329 { 6, &hf_tetra_bl_udata_fcs_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_MLE_PDU_FCS
},
8330 { 7, &hf_tetra_bl_ack_fcs_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_D_BL_ACK_FCS
},
8331 { 8, &hf_tetra_al_setup
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
8332 { 9, &hf_tetra_al_data
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
8333 { 10, &hf_tetra_al_udata
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
8334 { 11, &hf_tetra_al_ack
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
8335 { 12, &hf_tetra_al_reconnect
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
8336 { 13, &hf_tetra_reserve1
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
8337 { 14, &hf_tetra_reserve2
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
8338 { 15, &hf_tetra_al_disc
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
8339 { 0, NULL
, 0, NULL
}
8343 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_
) {
8344 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
8345 ett_tetra_D_LLC_PDU
, D_LLC_PDU_choice
,
8352 static const per_sequence_t OTHER_DATA_sequence
[] = {
8353 { &hf_tetra_power_control
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_power_control
},
8354 { &hf_tetra_slot_granting_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_slot_granting_02
},
8355 { &hf_tetra_channel_allocation_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_channel_allocation_02
},
8356 { &hf_tetra_tm_sdu_09
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_D_LLC_PDU
},
8357 { NULL
, 0, 0, NULL
}
8361 dissect_tetra_OTHER_DATA(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
8362 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
8363 ett_tetra_OTHER_DATA
, OTHER_DATA_sequence
);
8369 static const per_sequence_t SSI_NEED_sequence
[] = {
8370 { &hf_tetra_ssi
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_16777215
},
8371 { &hf_tetra_other
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_OTHER_DATA
},
8372 { NULL
, 0, 0, NULL
}
8376 dissect_tetra_SSI_NEED(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
8377 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
8378 ett_tetra_SSI_NEED
, SSI_NEED_sequence
);
8384 static const per_sequence_t EVENT_NEED_sequence
[] = {
8385 { &hf_tetra_eventlabel
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1023
},
8386 { &hf_tetra_other
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_OTHER_DATA
},
8387 { NULL
, 0, 0, NULL
}
8391 dissect_tetra_EVENT_NEED(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
8392 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
8393 ett_tetra_EVENT_NEED
, EVENT_NEED_sequence
);
8399 static const per_sequence_t USSI_NEED_sequence
[] = {
8400 { &hf_tetra_ussi
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_16777215
},
8401 { &hf_tetra_other
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_OTHER_DATA
},
8402 { NULL
, 0, 0, NULL
}
8406 dissect_tetra_USSI_NEED(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
8407 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
8408 ett_tetra_USSI_NEED
, USSI_NEED_sequence
);
8414 static const per_sequence_t SMI_NEED_sequence
[] = {
8415 { &hf_tetra_smi
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_16777215
},
8416 { &hf_tetra_other
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_OTHER_DATA
},
8417 { NULL
, 0, 0, NULL
}
8421 dissect_tetra_SMI_NEED(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
8422 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
8423 ett_tetra_SMI_NEED
, SMI_NEED_sequence
);
8429 static const per_sequence_t SSI_EVENT_NEED_sequence
[] = {
8430 { &hf_tetra_ssi
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_16777215
},
8431 { &hf_tetra_ventlabel
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1023
},
8432 { &hf_tetra_other
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_OTHER_DATA
},
8433 { NULL
, 0, 0, NULL
}
8437 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_
) {
8438 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
8439 ett_tetra_SSI_EVENT_NEED
, SSI_EVENT_NEED_sequence
);
8445 static const per_sequence_t SSI_USAGE_NEED_sequence
[] = {
8446 { &hf_tetra_ssi
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_16777215
},
8447 { &hf_tetra_usage_maker
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_63
},
8448 { &hf_tetra_other
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_OTHER_DATA
},
8449 { NULL
, 0, 0, NULL
}
8453 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_
) {
8454 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
8455 ett_tetra_SSI_USAGE_NEED
, SSI_USAGE_NEED_sequence
);
8463 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_
) {
8464 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
8465 34, 34, false, NULL
, 0, NULL
, NULL
);
8471 static const per_sequence_t SMI_EVENT_NEED_sequence
[] = {
8472 { &hf_tetra_smi_eventlabel
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_BIT_STRING_SIZE_34
},
8473 { &hf_tetra_other
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_OTHER_DATA
},
8474 { NULL
, 0, 0, NULL
}
8478 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_
) {
8479 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
8480 ett_tetra_SMI_EVENT_NEED
, SMI_EVENT_NEED_sequence
);
8486 static const value_string tetra_AddressMacResource_vals
[] = {
8489 { 2, "eventLabel" },
8492 { 5, "ssi-eventLabel" },
8493 { 6, "ssi-usage-maker" },
8494 { 7, "smi-eventLabel" },
8498 static const per_choice_t AddressMacResource_choice
[] = {
8499 { 0, &hf_tetra_null_pdu
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
8500 { 1, &hf_tetra_ssi_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_SSI_NEED
},
8501 { 2, &hf_tetra_eventLabel_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_EVENT_NEED
},
8502 { 3, &hf_tetra_ussi_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_USSI_NEED
},
8503 { 4, &hf_tetra_smi_01
, ASN1_NO_EXTENSIONS
, dissect_tetra_SMI_NEED
},
8504 { 5, &hf_tetra_ssi_eventLabel
, ASN1_NO_EXTENSIONS
, dissect_tetra_SSI_EVENT_NEED
},
8505 { 6, &hf_tetra_ssi_usage_maker
, ASN1_NO_EXTENSIONS
, dissect_tetra_SSI_USAGE_NEED
},
8506 { 7, &hf_tetra_smi_eventLabel
, ASN1_NO_EXTENSIONS
, dissect_tetra_SMI_EVENT_NEED
},
8507 { 0, NULL
, 0, NULL
}
8511 dissect_tetra_AddressMacResource(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
8512 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
8513 ett_tetra_AddressMacResource
, AddressMacResource_choice
,
8520 static const per_sequence_t MAC_RESOURCE_sequence
[] = {
8521 { &hf_tetra_pdu_type
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
8522 { &hf_tetra_fill_bit_indication
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Fill_Bit_Indication
},
8523 { &hf_tetra_position_of_grant
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_Position_Of_Grant
},
8524 { &hf_tetra_encryption_mode
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
8525 { &hf_tetra_access_ack
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_access_ack
},
8526 { &hf_tetra_lengthIndication_03
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_LengthIndicationMacResource
},
8527 { &hf_tetra_address_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_AddressMacResource
},
8528 { NULL
, 0, 0, NULL
}
8532 dissect_tetra_MAC_RESOURCE(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
8533 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
8534 ett_tetra_MAC_RESOURCE
, MAC_RESOURCE_sequence
);
8542 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_
) {
8543 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
8544 0U, 33554431U, NULL
, false);
8550 static const value_string tetra_T_optional_field_vals
[] = {
8552 { 1, "class-bitmap" },
8558 static const per_choice_t T_optional_field_choice
[] = {
8559 { 0, &hf_tetra_none
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
8560 { 1, &hf_tetra_class_bitmap
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_65535
},
8561 { 2, &hf_tetra_gssi
, ASN1_NO_EXTENSIONS
, dissect_tetra_INTEGER_0_33554431
},
8562 { 3, &hf_tetra_reserved_03
, ASN1_NO_EXTENSIONS
, dissect_tetra_NULL
},
8563 { 0, NULL
, 0, NULL
}
8567 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_
) {
8568 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
8569 ett_tetra_T_optional_field
, T_optional_field_choice
,
8576 static const per_sequence_t MAC_ACCESS_DEFINE_sequence
[] = {
8577 { &hf_tetra_pdu_type
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
8578 { &hf_tetra_broadcast_type
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
8579 { &hf_tetra_broadcast_channel
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
8580 { &hf_tetra_access_code
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_3
},
8581 { &hf_tetra_imm_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_15
},
8582 { &hf_tetra_wt_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_15
},
8583 { &hf_tetra_nu_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_15
},
8584 { &hf_tetra_frame_len_factor_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_1
},
8585 { &hf_tetra_timeslot_pointer_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_15
},
8586 { &hf_tetra_min_priority
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_7
},
8587 { &hf_tetra_optional_field
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_T_optional_field
},
8588 { &hf_tetra_filler_bits
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_tetra_INTEGER_0_7
},
8589 { NULL
, 0, 0, NULL
}
8593 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_
) {
8594 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
8595 ett_tetra_MAC_ACCESS_DEFINE
, MAC_ACCESS_DEFINE_sequence
);
8602 static int dissect_AACH_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
8604 asn1_ctx_t asn1_ctx
;
8605 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, false, pinfo
);
8606 offset
= dissect_tetra_AACH(tvb
, offset
, &asn1_ctx
, tree
, hf_tetra_AACH_PDU
);
8607 offset
+= 7; offset
>>= 3;
8610 static int dissect_BSCH_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
8612 asn1_ctx_t asn1_ctx
;
8613 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, false, pinfo
);
8614 offset
= dissect_tetra_BSCH(tvb
, offset
, &asn1_ctx
, tree
, hf_tetra_BSCH_PDU
);
8615 offset
+= 7; offset
>>= 3;
8618 static int dissect_BNCH_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
8620 asn1_ctx_t asn1_ctx
;
8621 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, false, pinfo
);
8622 offset
= dissect_tetra_BNCH(tvb
, offset
, &asn1_ctx
, tree
, hf_tetra_BNCH_PDU
);
8623 offset
+= 7; offset
>>= 3;
8626 static int dissect_MAC_ACCESS_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
8628 asn1_ctx_t asn1_ctx
;
8629 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, false, pinfo
);
8630 offset
= dissect_tetra_MAC_ACCESS(tvb
, offset
, &asn1_ctx
, tree
, hf_tetra_MAC_ACCESS_PDU
);
8631 offset
+= 7; offset
>>= 3;
8634 static int dissect_MAC_DATA_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
8636 asn1_ctx_t asn1_ctx
;
8637 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, false, pinfo
);
8638 offset
= dissect_tetra_MAC_DATA(tvb
, offset
, &asn1_ctx
, tree
, hf_tetra_MAC_DATA_PDU
);
8639 offset
+= 7; offset
>>= 3;
8642 static int dissect_MAC_FRAG_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
8644 asn1_ctx_t asn1_ctx
;
8645 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, false, pinfo
);
8646 offset
= dissect_tetra_MAC_FRAG(tvb
, offset
, &asn1_ctx
, tree
, hf_tetra_MAC_FRAG_PDU
);
8647 offset
+= 7; offset
>>= 3;
8650 static int dissect_MAC_FRAG120_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
8652 asn1_ctx_t asn1_ctx
;
8653 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, false, pinfo
);
8654 offset
= dissect_tetra_MAC_FRAG120(tvb
, offset
, &asn1_ctx
, tree
, hf_tetra_MAC_FRAG120_PDU
);
8655 offset
+= 7; offset
>>= 3;
8658 static int dissect_MAC_END_UPLINK_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
8660 asn1_ctx_t asn1_ctx
;
8661 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, false, pinfo
);
8662 offset
= dissect_tetra_MAC_END_UPLINK(tvb
, offset
, &asn1_ctx
, tree
, hf_tetra_MAC_END_UPLINK_PDU
);
8663 offset
+= 7; offset
>>= 3;
8666 static int dissect_MAC_END_UP114_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
8668 asn1_ctx_t asn1_ctx
;
8669 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, false, pinfo
);
8670 offset
= dissect_tetra_MAC_END_UP114(tvb
, offset
, &asn1_ctx
, tree
, hf_tetra_MAC_END_UP114_PDU
);
8671 offset
+= 7; offset
>>= 3;
8674 static int dissect_MAC_END_HU_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
8676 asn1_ctx_t asn1_ctx
;
8677 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, false, pinfo
);
8678 offset
= dissect_tetra_MAC_END_HU(tvb
, offset
, &asn1_ctx
, tree
, hf_tetra_MAC_END_HU_PDU
);
8679 offset
+= 7; offset
>>= 3;
8682 static int dissect_MAC_END_DOWNLINK_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
8684 asn1_ctx_t asn1_ctx
;
8685 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, false, pinfo
);
8686 offset
= dissect_tetra_MAC_END_DOWNLINK(tvb
, offset
, &asn1_ctx
, tree
, hf_tetra_MAC_END_DOWNLINK_PDU
);
8687 offset
+= 7; offset
>>= 3;
8690 static int dissect_MAC_END_DOWN111_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
8692 asn1_ctx_t asn1_ctx
;
8693 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, false, pinfo
);
8694 offset
= dissect_tetra_MAC_END_DOWN111(tvb
, offset
, &asn1_ctx
, tree
, hf_tetra_MAC_END_DOWN111_PDU
);
8695 offset
+= 7; offset
>>= 3;
8698 static int dissect_MAC_RESOURCE_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
8700 asn1_ctx_t asn1_ctx
;
8701 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, false, pinfo
);
8702 offset
= dissect_tetra_MAC_RESOURCE(tvb
, offset
, &asn1_ctx
, tree
, hf_tetra_MAC_RESOURCE_PDU
);
8703 offset
+= 7; offset
>>= 3;
8706 static int dissect_MAC_ACCESS_DEFINE_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
8708 asn1_ctx_t asn1_ctx
;
8709 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, false, pinfo
);
8710 offset
= dissect_tetra_MAC_ACCESS_DEFINE(tvb
, offset
, &asn1_ctx
, tree
, hf_tetra_MAC_ACCESS_DEFINE_PDU
);
8711 offset
+= 7; offset
>>= 3;
8716 static const value_string channeltypenames
[] = {
8732 static const value_string recvchanneltypenames
[] = {
8749 /* Get the length of received pdu */
8750 static int get_rx_pdu_length(uint32_t channel_type
)
8754 switch(channel_type
) {
8755 case TETRA_CHAN_AACH
:
8758 case TETRA_CHAN_SCH_F
:
8761 case TETRA_CHAN_SCH_D
:
8764 case TETRA_CHAN_BSCH
:
8767 case TETRA_CHAN_BNCH
:
8770 case TETRA_CHAN_TCH_F
:
8773 case TETRA_CHAN_TCH_H
:
8776 case TETRA_CHAN_TCH_2_4
:
8779 case TETRA_CHAN_TCH_4_8
:
8782 case TETRA_CHAN_STCH
:
8785 case TETRA_CHAN_SCH_HU
:
8796 /* Get the length of transmitted pdu */
8797 static int get_tx_pdu_length(uint32_t channel_type
)
8801 switch(channel_type
) {
8802 case TETRA_CHAN_AACH
:
8805 case TETRA_CHAN_SCH_F
:
8808 case TETRA_CHAN_SCH_D
:
8811 case TETRA_CHAN_BSCH
:
8814 case TETRA_CHAN_BNCH
:
8817 case TETRA_CHAN_TCH_F
:
8820 case TETRA_CHAN_TCH_H
:
8823 case TETRA_CHAN_TCH_2_4
:
8826 case TETRA_CHAN_TCH_4_8
:
8829 case TETRA_CHAN_STCH
:
8837 void tetra_dissect_pdu(int channel_type
, int dir
, tvbuff_t
*pdu
, proto_tree
*tree
, packet_info
*pinfo
)
8839 proto_item
*tetra_sub_item
;
8840 proto_tree
*tetra_sub_tree
;
8843 tetra_sub_item
= proto_tree_add_item(tree
, hf_tetra_pdu
,
8844 pdu
, 0, tvb_captured_length(pdu
), ENC_NA
);
8846 tetra_sub_tree
= proto_item_add_subtree(tetra_sub_item
, ett_tetra
);
8848 switch(channel_type
) {
8849 case TETRA_CHAN_AACH
:
8850 dissect_AACH_PDU(pdu
, pinfo
, tetra_sub_tree
, NULL
);
8852 case TETRA_CHAN_SCH_F
:
8853 p
= tvb_get_uint8(pdu
, 0);
8856 if (dir
== TETRA_DOWNLINK
)
8857 dissect_MAC_RESOURCE_PDU(pdu
, pinfo
, tetra_sub_tree
, NULL
);
8859 dissect_MAC_DATA_PDU(pdu
, pinfo
, tetra_sub_tree
, NULL
);
8861 case 1: /* MAC-FRAG or MAC-END */
8863 if (dir
== TETRA_DOWNLINK
)
8864 dissect_MAC_END_DOWNLINK_PDU(pdu
, pinfo
, tetra_sub_tree
, NULL
);
8866 dissect_MAC_END_UPLINK_PDU(pdu
, pinfo
, tetra_sub_tree
, NULL
);
8869 dissect_MAC_FRAG_PDU(pdu
, pinfo
, tetra_sub_tree
, NULL
);
8872 dissect_MAC_ACCESS_DEFINE_PDU(pdu
, pinfo
, tetra_sub_tree
, NULL
);
8876 case TETRA_CHAN_SCH_D
:
8877 p
= tvb_get_uint8(pdu
, 0);
8880 dissect_MAC_RESOURCE_PDU(pdu
, pinfo
, tetra_sub_tree
, NULL
);
8882 case 1: /* MAC-FRAG or MAC-END */
8884 dissect_MAC_END_DOWN111_PDU(pdu
, pinfo
, tetra_sub_tree
, NULL
);
8886 dissect_MAC_FRAG120_PDU(pdu
, pinfo
, tetra_sub_tree
, NULL
);
8889 dissect_MAC_ACCESS_DEFINE_PDU(pdu
, pinfo
, tetra_sub_tree
, NULL
);
8893 case TETRA_CHAN_SCH_HU
:
8894 p
= tvb_get_uint8(pdu
, 0);
8896 case 0: /* MAC-ACCESS */
8897 dissect_MAC_ACCESS_PDU(pdu
, pinfo
, tetra_sub_tree
, NULL
);
8899 case 1: /* MAC-END-HU */
8900 dissect_MAC_END_HU_PDU(pdu
, pinfo
, tetra_sub_tree
, NULL
);
8904 case TETRA_CHAN_BSCH
:
8905 col_append_sep_str(pinfo
->cinfo
, COL_INFO
, NULL
, "BSCH");
8906 dissect_BSCH_PDU(pdu
, pinfo
, tetra_sub_tree
, NULL
);
8908 case TETRA_CHAN_BNCH
:
8909 col_append_sep_str(pinfo
->cinfo
, COL_INFO
, NULL
, "BNCH");
8910 dissect_BNCH_PDU(pdu
, pinfo
, tetra_sub_tree
, NULL
);
8912 case TETRA_CHAN_STCH
:
8913 p
= tvb_get_uint8(pdu
, 0);
8916 dissect_MAC_RESOURCE_PDU(pdu
, pinfo
, tetra_sub_tree
, NULL
);
8918 case 1: /* MAC-FRAG or MAC-END */
8920 if (dir
== TETRA_DOWNLINK
)
8921 dissect_MAC_END_DOWN111_PDU(pdu
, pinfo
, tetra_sub_tree
, NULL
);
8923 dissect_MAC_END_UP114_PDU(pdu
, pinfo
, tetra_sub_tree
, NULL
);
8925 dissect_MAC_FRAG120_PDU(pdu
, pinfo
, tetra_sub_tree
, NULL
);
8928 dissect_MAC_ACCESS_DEFINE_PDU(pdu
, pinfo
, tetra_sub_tree
, NULL
);
8932 case TETRA_CHAN_TCH_F
:
8933 col_append_sep_str(pinfo
->cinfo
, COL_INFO
, NULL
, "Voice");
8938 static void dissect_tetra_UNITDATA_IND(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tetra_tree
, int offset
)
8941 uint32_t channels
= 0, i
;
8942 uint32_t channel_type
;
8944 proto_item
*tetra_sub_item
;
8945 proto_tree
*tetra_header_tree
= NULL
;
8946 tvbuff_t
*payload_tvb
;
8949 rxreg
= tvb_get_letohl(tvb
, offset
);
8950 proto_tree_add_uint(tetra_tree
, hf_tetra_len0
, tvb
, offset
, 4, rxreg
);
8954 rxreg
= tvb_get_letohl(tvb
, offset
);
8955 proto_tree_add_uint(tetra_tree
, hf_tetra_rvstr
, tvb
, offset
, 4, rxreg
);
8957 /* Logical channels */
8958 channels
= rxreg
& 0x3;
8959 tetra_sub_item
= proto_tree_add_uint( tetra_tree
, hf_tetra_channels
, tvb
, offset
, 4, channels
);
8960 tetra_header_tree
= proto_item_add_subtree(tetra_sub_item
, ett_tetra
);
8962 expert_add_info(pinfo
, tetra_sub_item
, &ei_tetra_channels_incorrect
);
8966 pdu_offset
= offset
+ 4;
8967 for(i
= 0; i
< channels
; i
++) {
8968 int byte_len
, bits_len
, remaining_bits
;
8971 hf_channel
[0] = hf_tetra_rxchannel1
;
8972 hf_channel
[1] = hf_tetra_rxchannel2
;
8973 hf_channel
[2] = hf_tetra_rxchannel3
;
8976 channel_type
= (rxreg
>> ((i
+ 1) * 4) ) & 0xf;
8977 proto_tree_add_uint( tetra_header_tree
, hf_channel
[i
], tvb
, offset
, 4, channel_type
);
8980 proto_tree_add_boolean( tetra_header_tree
, hf_tetra_crc
, tvb
, offset
, 4, !(rxreg
>> (i
+ 2) & 0x01));
8983 bits_len
= get_rx_pdu_length(channel_type
);
8984 byte_len
= bits_len
>> 3;
8985 remaining_bits
= bits_len
% 8;
8986 if ((remaining_bits
)!=0)
8989 payload_tvb
= tvb_new_subset_length(tvb
, pdu_offset
, byte_len
);
8990 tetra_dissect_pdu(channel_type
, TETRA_UPLINK
, payload_tvb
, tetra_header_tree
, pinfo
);
8992 if ((remaining_bits
)!=0)
8994 pdu_offset
+= byte_len
;
8998 static void dissect_tetra_UNITDATA_REQ(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tetra_tree
, int offset
)
9001 uint32_t channels
= 0, i
;
9002 uint32_t channel_type
;
9004 proto_item
*tetra_sub_item
= NULL
;
9005 proto_tree
*tetra_header_tree
= NULL
;
9006 tvbuff_t
*payload_tvb
;
9009 txreg
= tvb_get_letohl(tvb
, offset
);
9010 proto_tree_add_uint(tetra_tree
, hf_tetra_txreg
, tvb
, offset
, 4, txreg
);
9012 /* Logical channels */
9013 channels
= (txreg
& 0x3) + 1;
9014 tetra_sub_item
= proto_tree_add_uint( tetra_tree
, hf_tetra_channels
, tvb
, offset
, 4, channels
);
9015 tetra_header_tree
= proto_item_add_subtree(tetra_sub_item
, ett_tetra
);
9022 expert_add_info(pinfo
, tetra_sub_item
, &ei_tetra_channels_incorrect
);
9026 pdu_offset
= offset
+ 4;
9027 for(i
= 0; i
< channels
; i
++) {
9028 int byte_len
, bits_len
, remaining_bits
;
9031 hf_channel
[0] = hf_tetra_channel1
;
9032 hf_channel
[1] = hf_tetra_channel2
;
9033 hf_channel
[2] = hf_tetra_channel3
;
9035 channel_type
= txreg
& 0xf;
9036 proto_tree_add_uint( tetra_header_tree
, hf_channel
[i
], tvb
, offset
, 4, channel_type
);
9039 bits_len
= get_tx_pdu_length(channel_type
);
9040 byte_len
= bits_len
>> 3;
9041 remaining_bits
= bits_len
% 8;
9042 if ((remaining_bits
)!=0)
9045 payload_tvb
= tvb_new_subset_length(tvb
, pdu_offset
, byte_len
);
9046 tetra_dissect_pdu(channel_type
, TETRA_DOWNLINK
, payload_tvb
, tetra_header_tree
, pinfo
);
9047 pdu_offset
+= byte_len
;
9052 dissect_tetra(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void* data _U_
)
9054 proto_item
*tetra_item
= NULL
;
9055 proto_item
*tetra_sub_item
= NULL
;
9056 proto_tree
*tetra_tree
= NULL
;
9057 proto_tree
*tetra_header_tree
= NULL
;
9059 uint8_t carriernumber
= -1;
9061 col_set_str(pinfo
->cinfo
, COL_PROTOCOL
, PROTO_TAG_tetra
);
9062 /* Clear out stuff in the info column */
9063 col_clear(pinfo
->cinfo
,COL_INFO
);
9066 * This is not a good way of dissecting packets. The tvb length should
9067 * be sanity checked so we aren't going past the actual size of the buffer.
9069 type
= tvb_get_uint8(tvb
, 0);
9071 if(include_carrier_number
) {
9072 carriernumber
= tvb_get_uint8(tvb
, 1);
9078 if(include_carrier_number
)
9079 col_add_fstr(pinfo
->cinfo
, COL_INFO
, "Tetra-UNITDATA-REQ, Carrier: %d",
9082 col_set_str(pinfo
->cinfo
, COL_INFO
, "Tetra-UNITDATA-REQ");
9085 if(include_carrier_number
)
9086 col_add_fstr(pinfo
->cinfo
, COL_INFO
, "Tetra-UNITDATA-IND, Carrier: %d",
9089 col_set_str(pinfo
->cinfo
, COL_INFO
, "Tetra-UNITDATA-IND");
9092 if(include_carrier_number
)
9093 col_add_fstr(pinfo
->cinfo
, COL_INFO
, "MAC-Timer, Carrier: %d",
9096 col_set_str(pinfo
->cinfo
, COL_INFO
, "MAC-Timer");
9099 if(include_carrier_number
)
9100 col_add_fstr(pinfo
->cinfo
, COL_INFO
, "Tetra-UNITDATA-IND Done, Carrier: %d",
9103 col_set_str(pinfo
->cinfo
, COL_INFO
, "Tetra-UNITDATA-IND Done");
9106 if(include_carrier_number
)
9107 col_add_fstr(pinfo
->cinfo
, COL_INFO
, "Tetra-UNITDATA-REQ Done, Carrier: %d",
9110 col_set_str(pinfo
->cinfo
, COL_INFO
, "Tetra-UNITDATA-REQ Done");
9113 col_add_fstr(pinfo
->cinfo
, COL_INFO
, "Unknown command: %d", type
);
9117 /* if (tree) */ { /* we are being asked for details */
9118 uint32_t offset
= 0;
9119 uint32_t txtimer
= 0;
9122 tetra_item
= proto_tree_add_item(tree
, proto_tetra
, tvb
, 0, -1, ENC_NA
);
9123 tetra_tree
= proto_item_add_subtree(tetra_item
, ett_tetra
);
9127 /* Carrier number */
9128 if(include_carrier_number
) {
9129 proto_tree_add_uint(tetra_tree
, hf_tetra_carriernumber
, tvb
, offset
, 1, carriernumber
);
9134 tetra_sub_item
= proto_tree_add_item( tetra_tree
, hf_tetra_header
, tvb
, offset
, -1, ENC_NA
);
9135 tetra_header_tree
= proto_item_add_subtree(tetra_sub_item
, ett_tetra
);
9138 txtimer
= tvb_get_letohl(tvb
, offset
);
9139 tetra_sub_item
= proto_tree_add_item(tetra_header_tree
, hf_tetra_timer
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
9140 tslot
= ((txtimer
& 0x7800) >> 11);
9145 proto_item_append_text(tetra_sub_item
, " (Multiple frame: %d, Frame: %d, Slot: %d)",
9146 txtimer
& 0x3F, (txtimer
& 0x7c0) >> 6,
9152 case 1: /* tetra-UNITDATA-REQ */
9153 case 128: /* tetra-UNITDATA-REQ Done */
9154 dissect_tetra_UNITDATA_REQ(tvb
, pinfo
, tetra_header_tree
, offset
);
9156 case 2: /* tetra-UNITDATA-IND */
9157 case 127: /* tetra-UNITDATA-IND Done */
9158 dissect_tetra_UNITDATA_IND(tvb
, pinfo
, tetra_header_tree
, offset
);
9160 case 3: /* MAC-Timer */
9166 return tvb_captured_length(tvb
);
9169 void proto_reg_handoff_tetra(void)
9171 dissector_add_uint_with_preference("udp.port", TETRA_UDP_PORT
, tetra_handle
);
9175 void proto_register_tetra (void)
9177 module_t
*tetra_module
;
9178 expert_module_t
* expert_tetra
;
9181 * A header field is something you can search/filter on.
9183 * We create a structure to register our fields. It consists of an
9184 * array of hf_register_info structures, each of which are of the format
9185 * {&(field id), {name, abbrev, type, display, strings, bitmask, blurb, HFILL}}.
9187 static hf_register_info hf
[] = {
9189 { "Data", "tetra.data", FT_NONE
, BASE_NONE
, NULL
, 0x0,
9190 "tetra PDU", HFILL
}},
9192 { "Registers", "tetra.header", FT_NONE
, BASE_NONE
, NULL
, 0x0,
9193 "TETRA Registers", HFILL
}},
9194 { &hf_tetra_channels
,
9195 { "Logical Channels", "tetra.channels", FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9196 "The amount of logical channels", HFILL
}},
9197 { &hf_tetra_channel1
,
9198 { "Channel 1", "tetra.txchannel1", FT_UINT8
, BASE_DEC
, VALS(channeltypenames
), 0x0,
9199 "Logical channels type", HFILL
}},
9200 { &hf_tetra_channel2
,
9201 { "Channel 2", "tetra.txchannel2", FT_UINT8
, BASE_DEC
, VALS(channeltypenames
), 0x0,
9202 "Logical channels type", HFILL
}},
9203 { &hf_tetra_channel3
,
9204 { "Channel 3", "tetra.txchannel3", FT_UINT8
, BASE_DEC
, VALS(channeltypenames
), 0x0,
9205 "Logical channels type", HFILL
}},
9207 { "TxR", "tetra.txreg", FT_UINT32
, BASE_HEX
, NULL
, 0x0,
9208 "TX Register", HFILL
}},
9210 { "RvSteR", "tetra.rvster", FT_UINT32
, BASE_HEX
, NULL
, 0x0,
9211 "Receive Status Register", HFILL
}},
9212 { &hf_tetra_carriernumber
,
9213 { "Carrier Number", "tetra.carrier", FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9215 { &hf_tetra_rxchannel1
,
9216 { "Channel 1", "tetra.rxchannel1", FT_UINT8
, BASE_DEC
, VALS(recvchanneltypenames
), 0x0,
9217 "Logical channels type", HFILL
}},
9218 { &hf_tetra_rxchannel2
,
9219 { "Channel 2", "tetra.rxchannel2", FT_UINT8
, BASE_DEC
, VALS(recvchanneltypenames
), 0x0,
9220 "Logical channels type", HFILL
}},
9221 { &hf_tetra_rxchannel3
,
9222 { "Channel 3", "tetra.rxchannel3", FT_UINT8
, BASE_DEC
, VALS(recvchanneltypenames
), 0x0,
9223 "Logical channels type", HFILL
}},
9225 { "Timer", "tetra.timer", FT_UINT32
, BASE_HEX
, NULL
, 0x0,
9226 "Timer Register", HFILL
}},
9228 { "CRC", "tetra.crc", FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
9229 "CRC result", HFILL
}},
9231 { "Length", "tetra.len0", FT_UINT32
, BASE_DEC
, NULL
, 0x0,
9232 "Length of the PDU", HFILL
}},
9234 { "PDU", "tetra.pdu", FT_BYTES
, BASE_NONE
, NULL
, 0x0,
9237 { &hf_tetra_AACH_PDU
,
9238 { "AACH", "tetra.AACH_element",
9239 FT_NONE
, BASE_NONE
, NULL
, 0,
9241 { &hf_tetra_BSCH_PDU
,
9242 { "BSCH", "tetra.BSCH_element",
9243 FT_NONE
, BASE_NONE
, NULL
, 0,
9245 { &hf_tetra_BNCH_PDU
,
9246 { "BNCH", "tetra.BNCH_element",
9247 FT_NONE
, BASE_NONE
, NULL
, 0,
9249 { &hf_tetra_MAC_ACCESS_PDU
,
9250 { "MAC-ACCESS", "tetra.MAC_ACCESS_element",
9251 FT_NONE
, BASE_NONE
, NULL
, 0,
9253 { &hf_tetra_MAC_DATA_PDU
,
9254 { "MAC-DATA", "tetra.MAC_DATA_element",
9255 FT_NONE
, BASE_NONE
, NULL
, 0,
9257 { &hf_tetra_MAC_FRAG_PDU
,
9258 { "MAC-FRAG", "tetra.MAC_FRAG_element",
9259 FT_NONE
, BASE_NONE
, NULL
, 0,
9261 { &hf_tetra_MAC_FRAG120_PDU
,
9262 { "MAC-FRAG120", "tetra.MAC_FRAG120_element",
9263 FT_NONE
, BASE_NONE
, NULL
, 0,
9265 { &hf_tetra_MAC_END_UPLINK_PDU
,
9266 { "MAC-END-UPLINK", "tetra.MAC_END_UPLINK_element",
9267 FT_NONE
, BASE_NONE
, NULL
, 0,
9269 { &hf_tetra_MAC_END_UP114_PDU
,
9270 { "MAC-END-UP114", "tetra.MAC_END_UP114_element",
9271 FT_NONE
, BASE_NONE
, NULL
, 0,
9273 { &hf_tetra_MAC_END_HU_PDU
,
9274 { "MAC-END-HU", "tetra.MAC_END_HU_element",
9275 FT_NONE
, BASE_NONE
, NULL
, 0,
9277 { &hf_tetra_MAC_END_DOWNLINK_PDU
,
9278 { "MAC-END-DOWNLINK", "tetra.MAC_END_DOWNLINK_element",
9279 FT_NONE
, BASE_NONE
, NULL
, 0,
9281 { &hf_tetra_MAC_END_DOWN111_PDU
,
9282 { "MAC-END-DOWN111", "tetra.MAC_END_DOWN111_element",
9283 FT_NONE
, BASE_NONE
, NULL
, 0,
9285 { &hf_tetra_MAC_RESOURCE_PDU
,
9286 { "MAC-RESOURCE", "tetra.MAC_RESOURCE_element",
9287 FT_NONE
, BASE_NONE
, NULL
, 0,
9289 { &hf_tetra_MAC_ACCESS_DEFINE_PDU
,
9290 { "MAC-ACCESS-DEFINE", "tetra.MAC_ACCESS_DEFINE_element",
9291 FT_NONE
, BASE_NONE
, NULL
, 0,
9293 { &hf_tetra_function
,
9294 { "function", "tetra.function",
9295 FT_UINT32
, BASE_DEC
, NULL
, 0,
9296 "INTEGER_0_3", HFILL
}},
9298 { "field1", "tetra.field1",
9299 FT_UINT32
, BASE_DEC
, NULL
, 0,
9300 "INTEGER_0_63", HFILL
}},
9302 { "field2", "tetra.field2",
9303 FT_UINT32
, BASE_DEC
, NULL
, 0,
9304 "INTEGER_0_63", HFILL
}},
9305 { &hf_tetra_system_code
,
9306 { "system-code", "tetra.system_code",
9307 FT_UINT32
, BASE_DEC
, VALS(tetra_System_Code_vals
), 0,
9309 { &hf_tetra_colour_code
,
9310 { "colour-code", "tetra.colour_code",
9311 FT_UINT32
, BASE_DEC
, VALS(tetra_Colour_Code_vals
), 0,
9313 { &hf_tetra_timeslot_number
,
9314 { "timeslot-number", "tetra.timeslot_number",
9315 FT_UINT32
, BASE_DEC
, VALS(tetra_Timeslot_Number_vals
), 0,
9317 { &hf_tetra_frame_number
,
9318 { "frame-number", "tetra.frame_number",
9319 FT_UINT32
, BASE_DEC
, VALS(tetra_Frame_Number_vals
), 0,
9321 { &hf_tetra_multiple_frame_number
,
9322 { "multiple-frame-number", "tetra.multiple_frame_number",
9323 FT_UINT32
, BASE_DEC
, VALS(tetra_Multiple_Frame_Number_vals
), 0,
9325 { &hf_tetra_sharing_mod
,
9326 { "sharing-mod", "tetra.sharing_mod",
9327 FT_UINT32
, BASE_DEC
, VALS(tetra_Sharing_Mod_vals
), 0,
9329 { &hf_tetra_ts_reserved_frames
,
9330 { "ts-reserved-frames", "tetra.ts_reserved_frames",
9331 FT_UINT32
, BASE_DEC
, VALS(tetra_TS_Reserved_Frames_vals
), 0,
9333 { &hf_tetra_u_plane_dtx
,
9334 { "u-plane-dtx", "tetra.u_plane_dtx",
9335 FT_UINT32
, BASE_DEC
, VALS(tetra_U_Plane_DTX_vals
), 0,
9337 { &hf_tetra_frame_18_extension
,
9338 { "frame-18-extension", "tetra.frame_18_extension",
9339 FT_UINT32
, BASE_DEC
, VALS(tetra_Frame_18_Extension_vals
), 0,
9341 { &hf_tetra_reserved
,
9342 { "reserved", "tetra.reserved",
9343 FT_UINT32
, BASE_DEC
, VALS(tetra_Reserved_vals
), 0,
9346 { "tm-sdu", "tetra.tm_sdu_element",
9347 FT_NONE
, BASE_NONE
, NULL
, 0,
9348 "MLE_Sync", HFILL
}},
9350 { "mcc", "tetra.mcc",
9351 FT_UINT32
, BASE_DEC
, NULL
, 0,
9352 "INTEGER_0_1023", HFILL
}},
9354 { "mnc", "tetra.mnc",
9355 FT_UINT32
, BASE_DEC
, NULL
, 0,
9356 "INTEGER_0_16383", HFILL
}},
9357 { &hf_tetra_neighbour_cell_broadcast
,
9358 { "neighbour-cell-broadcast", "tetra.neighbour_cell_broadcast",
9359 FT_UINT32
, BASE_DEC
, NULL
, 0,
9360 "INTEGER_0_3", HFILL
}},
9361 { &hf_tetra_cell_service_level
,
9362 { "cell-service-level", "tetra.cell_service_level",
9363 FT_UINT32
, BASE_DEC
, NULL
, 0,
9364 "INTEGER_0_3", HFILL
}},
9365 { &hf_tetra_late_entry_information
,
9366 { "late-entry-information", "tetra.late_entry_information",
9367 FT_UINT32
, BASE_DEC
, NULL
, 0,
9368 "INTEGER_0_1", HFILL
}},
9369 { &hf_tetra_pdu_type
,
9370 { "pdu-type", "tetra.pdu_type",
9371 FT_UINT32
, BASE_DEC
, NULL
, 0,
9372 "INTEGER_0_3", HFILL
}},
9373 { &hf_tetra_broadcast_type
,
9374 { "broadcast-type", "tetra.broadcast_type",
9375 FT_UINT32
, BASE_DEC
, NULL
, 0,
9376 "INTEGER_0_3", HFILL
}},
9377 { &hf_tetra_main_carrier
,
9378 { "main-carrier", "tetra.main_carrier",
9379 FT_UINT32
, BASE_DEC
, NULL
, 0,
9380 "INTEGER_0_4095", HFILL
}},
9381 { &hf_tetra_frequency_band
,
9382 { "frequency-band", "tetra.frequency_band",
9383 FT_UINT32
, BASE_DEC
, NULL
, 0,
9384 "INTEGER_0_15", HFILL
}},
9386 { "offset", "tetra.offset",
9387 FT_UINT32
, BASE_DEC
, VALS(tetra_Offset_vals
), 0,
9389 { &hf_tetra_duplex_spacing
,
9390 { "duplex-spacing", "tetra.duplex_spacing",
9391 FT_UINT32
, BASE_DEC
, NULL
, 0,
9392 "INTEGER_0_7", HFILL
}},
9393 { &hf_tetra_reverse_operation
,
9394 { "reverse-operation", "tetra.reverse_operation",
9395 FT_UINT32
, BASE_DEC
, VALS(tetra_Reverse_Operation_vals
), 0,
9397 { &hf_tetra_sencond_ctl_carrier
,
9398 { "sencond-ctl-carrier", "tetra.sencond_ctl_carrier",
9399 FT_UINT32
, BASE_DEC
, VALS(tetra_Sencond_Ctl_Carrier_vals
), 0,
9401 { &hf_tetra_ms_txpwr_max_cell
,
9402 { "ms-txpwr-max-cell", "tetra.ms_txpwr_max_cell",
9403 FT_UINT32
, BASE_DEC
, VALS(tetra_MS_TXPWR_MAX_CELL_vals
), 0,
9405 { &hf_tetra_rxlev_access_min
,
9406 { "rxlev-access-min", "tetra.rxlev_access_min",
9407 FT_UINT32
, BASE_DEC
, VALS(tetra_RXLEV_ACCESS_MIN_vals
), 0,
9409 { &hf_tetra_access_parameter
,
9410 { "access-parameter", "tetra.access_parameter",
9411 FT_UINT32
, BASE_DEC
, VALS(tetra_ACCESS_PARAMETER_vals
), 0,
9413 { &hf_tetra_radio_downlink_timeout
,
9414 { "radio-downlink-timeout", "tetra.radio_downlink_timeout",
9415 FT_UINT32
, BASE_DEC
, VALS(tetra_RADIO_DOWNLINK_TIMEOUT_vals
), 0,
9417 { &hf_tetra_hyperframe_or_cck
,
9418 { "hyperframe-or-cck", "tetra.hyperframe_or_cck",
9419 FT_UINT32
, BASE_DEC
, VALS(tetra_T_hyperframe_or_cck_vals
), 0,
9421 { &hf_tetra_hyperframe
,
9422 { "hyperframe", "tetra.hyperframe",
9423 FT_UINT32
, BASE_DEC
, NULL
, 0,
9424 "INTEGER_0_65535", HFILL
}},
9426 { "cckid", "tetra.cckid",
9427 FT_UINT32
, BASE_DEC
, NULL
, 0,
9428 "INTEGER_0_65535", HFILL
}},
9429 { &hf_tetra_optional_params
,
9430 { "optional-params", "tetra.optional_params",
9431 FT_UINT32
, BASE_DEC
, VALS(tetra_T_optional_params_vals
), 0,
9433 { &hf_tetra_even_multiframe
,
9434 { "even-multiframe", "tetra.even_multiframe_element",
9435 FT_NONE
, BASE_NONE
, NULL
, 0,
9436 "TS_COMMON_FRAMES", HFILL
}},
9437 { &hf_tetra_odd_multiframe
,
9438 { "odd-multiframe", "tetra.odd_multiframe_element",
9439 FT_NONE
, BASE_NONE
, NULL
, 0,
9440 "TS_COMMON_FRAMES", HFILL
}},
9441 { &hf_tetra_access_a_code
,
9442 { "access-a-code", "tetra.access_a_code_element",
9443 FT_NONE
, BASE_NONE
, NULL
, 0,
9444 "Default_Code_A", HFILL
}},
9445 { &hf_tetra_extend_service
,
9446 { "extend-service", "tetra.extend_service_element",
9447 FT_NONE
, BASE_NONE
, NULL
, 0,
9448 "Extended_Services_Broadcast", HFILL
}},
9451 FT_UINT32
, BASE_DEC
, NULL
, 0,
9452 "INTEGER_0_16383", HFILL
}},
9453 { &hf_tetra_subscriber_class
,
9454 { "subscriber-class", "tetra.subscriber_class",
9455 FT_BYTES
, BASE_NONE
, NULL
, 0,
9457 { &hf_tetra_registriation
,
9458 { "registriation", "tetra.registriation",
9459 FT_UINT32
, BASE_DEC
, NULL
, 0,
9460 "INTEGER_0_1", HFILL
}},
9461 { &hf_tetra_de_registration
,
9462 { "de-registration", "tetra.de_registration",
9463 FT_UINT32
, BASE_DEC
, NULL
, 0,
9464 "INTEGER_0_1", HFILL
}},
9465 { &hf_tetra_priority_cell
,
9466 { "priority-cell", "tetra.priority_cell",
9467 FT_UINT32
, BASE_DEC
, NULL
, 0,
9468 "INTEGER_0_1", HFILL
}},
9469 { &hf_tetra_minimum_mode_service
,
9470 { "minimum-mode-service", "tetra.minimum_mode_service",
9471 FT_UINT32
, BASE_DEC
, NULL
, 0,
9472 "INTEGER_0_1", HFILL
}},
9473 { &hf_tetra_migration
,
9474 { "migration", "tetra.migration",
9475 FT_UINT32
, BASE_DEC
, NULL
, 0,
9476 "INTEGER_0_1", HFILL
}},
9477 { &hf_tetra_system_wide_service
,
9478 { "system-wide-service", "tetra.system_wide_service",
9479 FT_UINT32
, BASE_DEC
, NULL
, 0,
9480 "INTEGER_0_1", HFILL
}},
9481 { &hf_tetra_tetra_voice_service
,
9482 { "tetra-voice-service", "tetra.tetra_voice_service",
9483 FT_UINT32
, BASE_DEC
, NULL
, 0,
9484 "INTEGER_0_1", HFILL
}},
9485 { &hf_tetra_circuit_mode_data_service
,
9486 { "circuit-mode-data-service", "tetra.circuit_mode_data_service",
9487 FT_UINT32
, BASE_DEC
, NULL
, 0,
9488 "INTEGER_0_1", HFILL
}},
9489 { &hf_tetra_reserved_01
,
9490 { "reserved", "tetra.reserved",
9491 FT_UINT32
, BASE_DEC
, NULL
, 0,
9492 "INTEGER_0_1", HFILL
}},
9493 { &hf_tetra_sndcp_service
,
9494 { "sndcp-service", "tetra.sndcp_service",
9495 FT_UINT32
, BASE_DEC
, NULL
, 0,
9496 "INTEGER_0_1", HFILL
}},
9497 { &hf_tetra_air_interface_encryption
,
9498 { "air-interface-encryption", "tetra.air_interface_encryption",
9499 FT_UINT32
, BASE_DEC
, NULL
, 0,
9500 "INTEGER_0_1", HFILL
}},
9501 { &hf_tetra_advanced_link_support
,
9502 { "advanced-link-support", "tetra.advanced_link_support",
9503 FT_UINT32
, BASE_DEC
, NULL
, 0,
9504 "INTEGER_0_1", HFILL
}},
9506 { "frame1", "tetra.frame1",
9507 FT_UINT32
, BASE_DEC
, VALS(tetra_FRAME_vals
), 0,
9510 { "frame2", "tetra.frame2",
9511 FT_UINT32
, BASE_DEC
, VALS(tetra_FRAME_vals
), 0,
9514 { "frame3", "tetra.frame3",
9515 FT_UINT32
, BASE_DEC
, VALS(tetra_FRAME_vals
), 0,
9518 { "frame4", "tetra.frame4",
9519 FT_UINT32
, BASE_DEC
, VALS(tetra_FRAME_vals
), 0,
9522 { "frame5", "tetra.frame5",
9523 FT_UINT32
, BASE_DEC
, VALS(tetra_FRAME_vals
), 0,
9526 { "frame6", "tetra.frame6",
9527 FT_UINT32
, BASE_DEC
, VALS(tetra_FRAME_vals
), 0,
9530 { "frame7", "tetra.frame7",
9531 FT_UINT32
, BASE_DEC
, VALS(tetra_FRAME_vals
), 0,
9534 { "frame8", "tetra.frame8",
9535 FT_UINT32
, BASE_DEC
, VALS(tetra_FRAME_vals
), 0,
9538 { "frame9", "tetra.frame9",
9539 FT_UINT32
, BASE_DEC
, VALS(tetra_FRAME_vals
), 0,
9541 { &hf_tetra_frame10
,
9542 { "frame10", "tetra.frame10",
9543 FT_UINT32
, BASE_DEC
, VALS(tetra_FRAME_vals
), 0,
9545 { &hf_tetra_frame11
,
9546 { "frame11", "tetra.frame11",
9547 FT_UINT32
, BASE_DEC
, VALS(tetra_FRAME_vals
), 0,
9549 { &hf_tetra_frame12
,
9550 { "frame12", "tetra.frame12",
9551 FT_UINT32
, BASE_DEC
, VALS(tetra_FRAME_vals
), 0,
9553 { &hf_tetra_frame13
,
9554 { "frame13", "tetra.frame13",
9555 FT_UINT32
, BASE_DEC
, VALS(tetra_FRAME_vals
), 0,
9557 { &hf_tetra_frame14
,
9558 { "frame14", "tetra.frame14",
9559 FT_UINT32
, BASE_DEC
, VALS(tetra_FRAME_vals
), 0,
9561 { &hf_tetra_frame15
,
9562 { "frame15", "tetra.frame15",
9563 FT_UINT32
, BASE_DEC
, VALS(tetra_FRAME_vals
), 0,
9565 { &hf_tetra_frame16
,
9566 { "frame16", "tetra.frame16",
9567 FT_UINT32
, BASE_DEC
, VALS(tetra_FRAME_vals
), 0,
9569 { &hf_tetra_frame17
,
9570 { "frame17", "tetra.frame17",
9571 FT_UINT32
, BASE_DEC
, VALS(tetra_FRAME_vals
), 0,
9573 { &hf_tetra_frame18
,
9574 { "frame18", "tetra.frame18",
9575 FT_UINT32
, BASE_DEC
, VALS(tetra_FRAME_vals
), 0,
9578 { "imm", "tetra.imm",
9579 FT_UINT32
, BASE_DEC
, VALS(tetra_IMM_vals
), 0,
9583 FT_UINT32
, BASE_DEC
, VALS(tetra_WT_vals
), 0,
9587 FT_UINT32
, BASE_DEC
, VALS(tetra_NU_vals
), 0,
9589 { &hf_tetra_frame_len_factor
,
9590 { "frame-len-factor", "tetra.frame_len_factor",
9591 FT_UINT32
, BASE_DEC
, VALS(tetra_Frame_Len_Factor_vals
), 0,
9593 { &hf_tetra_timeslot_pointer
,
9594 { "timeslot-pointer", "tetra.timeslot_pointer",
9595 FT_UINT32
, BASE_DEC
, VALS(tetra_Timeslot_Pointer_vals
), 0,
9597 { &hf_tetra_min_pdu_priority
,
9598 { "min-pdu-priority", "tetra.min_pdu_priority",
9599 FT_UINT32
, BASE_DEC
, VALS(tetra_Min_Pdu_Priority_vals
), 0,
9601 { &hf_tetra_security_information
,
9602 { "security-information", "tetra.security_information",
9603 FT_UINT32
, BASE_DEC
, NULL
, 0,
9604 "INTEGER_0_255", HFILL
}},
9605 { &hf_tetra_sds_tl_addressing_method
,
9606 { "sds-tl-addressing-method", "tetra.sds_tl_addressing_method",
9607 FT_UINT32
, BASE_DEC
, VALS(tetra_SDS_TL_Addressing_Method_vals
), 0,
9609 { &hf_tetra_gck_supported
,
9610 { "gck-supported", "tetra.gck_supported",
9611 FT_UINT32
, BASE_DEC
, NULL
, 0,
9612 "INTEGER_0_1", HFILL
}},
9613 { &hf_tetra_section
,
9614 { "section", "tetra.section",
9615 FT_UINT32
, BASE_DEC
, VALS(tetra_T_section_vals
), 0,
9617 { &hf_tetra_present_1
,
9618 { "present-1", "tetra.present_1_element",
9619 FT_NONE
, BASE_NONE
, NULL
, 0,
9620 "PRESENT1", HFILL
}},
9621 { &hf_tetra_present_2
,
9622 { "present-2", "tetra.present_2",
9623 FT_UINT32
, BASE_DEC
, NULL
, 0,
9624 "INTEGER_0_127", HFILL
}},
9625 { &hf_tetra_present_3
,
9626 { "present-3", "tetra.present_3",
9627 FT_UINT32
, BASE_DEC
, NULL
, 0,
9628 "INTEGER_0_127", HFILL
}},
9629 { &hf_tetra_present_4
,
9630 { "present-4", "tetra.present_4",
9631 FT_UINT32
, BASE_DEC
, NULL
, 0,
9632 "INTEGER_0_127", HFILL
}},
9633 { &hf_tetra_data_priority_supported
,
9634 { "data-priority-supported", "tetra.data_priority_supported",
9635 FT_UINT32
, BASE_DEC
, VALS(tetra_Data_Priority_Supported_vals
), 0,
9637 { &hf_tetra_reserved_02
,
9638 { "reserved", "tetra.reserved",
9639 FT_UINT32
, BASE_DEC
, NULL
, 0,
9640 "INTEGER_0_7", HFILL
}},
9641 { &hf_tetra_section_2_information
,
9642 { "section-2-information", "tetra.section_2_information",
9643 FT_UINT32
, BASE_DEC
, VALS(tetra_Section_Information_vals
), 0,
9644 "Section_Information", HFILL
}},
9645 { &hf_tetra_section_3_information
,
9646 { "section-3-information", "tetra.section_3_information",
9647 FT_UINT32
, BASE_DEC
, VALS(tetra_Section_Information_vals
), 0,
9648 "Section_Information", HFILL
}},
9649 { &hf_tetra_section_4_information
,
9650 { "section-4-information", "tetra.section_4_information",
9651 FT_UINT32
, BASE_DEC
, VALS(tetra_Section_Information_vals
), 0,
9652 "Section_Information", HFILL
}},
9653 { &hf_tetra_pdu_type_01
,
9654 { "pdu-type", "tetra.pdu_type",
9655 FT_UINT32
, BASE_DEC
, NULL
, 0,
9656 "INTEGER_0_1", HFILL
}},
9657 { &hf_tetra_fill_bit_indication
,
9658 { "fill-bit-indication", "tetra.fill_bit_indication",
9659 FT_UINT32
, BASE_DEC
, VALS(tetra_Fill_Bit_Indication_vals
), 0,
9661 { &hf_tetra_encrypted_flag
,
9662 { "encrypted-flag", "tetra.encrypted_flag",
9663 FT_UINT32
, BASE_DEC
, VALS(tetra_Encrypted_Flag_vals
), 0,
9665 { &hf_tetra_address
,
9666 { "address", "tetra.address",
9667 FT_UINT32
, BASE_DEC
, VALS(tetra_Address_vals
), 0,
9670 { "data", "tetra.data",
9671 FT_UINT32
, BASE_DEC
, VALS(tetra_T_data_vals
), 0,
9674 { "sdu1", "tetra.sdu1",
9675 FT_UINT32
, BASE_DEC
, VALS(tetra_U_LLC_PDU_vals
), 0,
9676 "U_LLC_PDU", HFILL
}},
9678 { "sdu2", "tetra.sdu2_element",
9679 FT_NONE
, BASE_NONE
, NULL
, 0,
9680 "ComplexSDU", HFILL
}},
9682 { "ssi", "tetra.ssi",
9683 FT_UINT32
, BASE_DEC
, NULL
, 0,
9684 "INTEGER_0_16777215", HFILL
}},
9685 { &hf_tetra_eventLabel
,
9686 { "eventLabel", "tetra.eventLabel",
9687 FT_UINT32
, BASE_DEC
, NULL
, 0,
9688 "INTEGER_0_1023", HFILL
}},
9690 { "ussi", "tetra.ussi",
9691 FT_UINT32
, BASE_DEC
, NULL
, 0,
9692 "INTEGER_0_16777215", HFILL
}},
9694 { "smi", "tetra.smi",
9695 FT_UINT32
, BASE_DEC
, NULL
, 0,
9696 "INTEGER_0_16777215", HFILL
}},
9697 { &hf_tetra_bl_adata
,
9698 { "bl-adata", "tetra.bl_adata_element",
9699 FT_NONE
, BASE_NONE
, NULL
, 0,
9700 "U_BL_ADATA", HFILL
}},
9701 { &hf_tetra_bl_data
,
9702 { "bl-data", "tetra.bl_data_element",
9703 FT_NONE
, BASE_NONE
, NULL
, 0,
9704 "U_BL_DATA", HFILL
}},
9705 { &hf_tetra_bl_udata
,
9706 { "bl-udata", "tetra.bl_udata",
9707 FT_UINT32
, BASE_DEC
, VALS(tetra_U_MLE_PDU_vals
), 0,
9708 "U_MLE_PDU", HFILL
}},
9710 { "bl-ack", "tetra.bl_ack_element",
9711 FT_NONE
, BASE_NONE
, NULL
, 0,
9712 "U_BL_ACK", HFILL
}},
9713 { &hf_tetra_bl_adata_fcs
,
9714 { "bl-adata-fcs", "tetra.bl_adata_fcs_element",
9715 FT_NONE
, BASE_NONE
, NULL
, 0,
9716 "U_BL_ADATA_FCS", HFILL
}},
9717 { &hf_tetra_bl_data_fcs
,
9718 { "bl-data-fcs", "tetra.bl_data_fcs_element",
9719 FT_NONE
, BASE_NONE
, NULL
, 0,
9720 "U_BL_DATA_FCS", HFILL
}},
9721 { &hf_tetra_bl_udata_fcs
,
9722 { "bl-udata-fcs", "tetra.bl_udata_fcs_element",
9723 FT_NONE
, BASE_NONE
, NULL
, 0,
9724 "U_MLE_PDU_FCS", HFILL
}},
9725 { &hf_tetra_bl_ack_fcs
,
9726 { "bl-ack-fcs", "tetra.bl_ack_fcs_element",
9727 FT_NONE
, BASE_NONE
, NULL
, 0,
9728 "U_BL_ACK_FCS", HFILL
}},
9729 { &hf_tetra_al_setup
,
9730 { "al-setup", "tetra.al_setup_element",
9731 FT_NONE
, BASE_NONE
, NULL
, 0,
9733 { &hf_tetra_al_data
,
9734 { "al-data", "tetra.al_data_element",
9735 FT_NONE
, BASE_NONE
, NULL
, 0,
9737 { &hf_tetra_al_udata
,
9738 { "al-udata", "tetra.al_udata_element",
9739 FT_NONE
, BASE_NONE
, NULL
, 0,
9742 { "al-ack", "tetra.al_ack_element",
9743 FT_NONE
, BASE_NONE
, NULL
, 0,
9745 { &hf_tetra_al_reconnect
,
9746 { "al-reconnect", "tetra.al_reconnect_element",
9747 FT_NONE
, BASE_NONE
, NULL
, 0,
9749 { &hf_tetra_reserve1
,
9750 { "reserve1", "tetra.reserve1_element",
9751 FT_NONE
, BASE_NONE
, NULL
, 0,
9753 { &hf_tetra_reserve2
,
9754 { "reserve2", "tetra.reserve2_element",
9755 FT_NONE
, BASE_NONE
, NULL
, 0,
9757 { &hf_tetra_al_disc
,
9758 { "al-disc", "tetra.al_disc_element",
9759 FT_NONE
, BASE_NONE
, NULL
, 0,
9763 FT_UINT32
, BASE_DEC
, NULL
, 0,
9764 "INTEGER_0_1", HFILL
}},
9766 { "tl-sdu", "tetra.tl_sdu",
9767 FT_UINT32
, BASE_DEC
, VALS(tetra_U_MLE_PDU_vals
), 0,
9768 "U_MLE_PDU", HFILL
}},
9770 { "fcs", "tetra.fcs",
9771 FT_BYTES
, BASE_NONE
, NULL
, 0,
9772 "OCTET_STRING_SIZE_4", HFILL
}},
9773 { &hf_tetra_u_mle_pdu
,
9774 { "u-mle-pdu", "tetra.u_mle_pdu",
9775 FT_UINT32
, BASE_DEC
, VALS(tetra_U_MLE_PDU_vals
), 0,
9779 FT_UINT32
, BASE_DEC
, NULL
, 0,
9780 "INTEGER_0_1", HFILL
}},
9781 { &hf_tetra_u_mle_reserved1
,
9782 { "u-mle-reserved1", "tetra.u_mle_reserved1_element",
9783 FT_NONE
, BASE_NONE
, NULL
, 0,
9787 FT_UINT32
, BASE_DEC
, VALS(tetra_U_MM_PDU_vals
), 0,
9788 "U_MM_PDU", HFILL
}},
9790 { "cmce", "tetra.cmce",
9791 FT_UINT32
, BASE_DEC
, VALS(tetra_U_CMCE_PDU_vals
), 0,
9792 "U_CMCE_PDU", HFILL
}},
9793 { &hf_tetra_u_mle_reserved2
,
9794 { "u-mle-reserved2", "tetra.u_mle_reserved2_element",
9795 FT_NONE
, BASE_NONE
, NULL
, 0,
9798 { "sndcp", "tetra.sndcp_element",
9799 FT_NONE
, BASE_NONE
, NULL
, 0,
9802 { "mle", "tetra.mle",
9803 FT_UINT32
, BASE_DEC
, VALS(tetra_UMLE_PDU_vals
), 0,
9804 "UMLE_PDU", HFILL
}},
9805 { &hf_tetra_tetra_management_entity_protocol
,
9806 { "tetra-management-entity-protocol", "tetra.tetra_management_entity_protocol_element",
9807 FT_NONE
, BASE_NONE
, NULL
, 0,
9809 { &hf_tetra_u_mle_reserved3
,
9810 { "u-mle-reserved3", "tetra.u_mle_reserved3_element",
9811 FT_NONE
, BASE_NONE
, NULL
, 0,
9813 { &hf_tetra_lengthIndicationOrCapacityRequest
,
9814 { "lengthIndicationOrCapacityRequest", "tetra.lengthIndicationOrCapacityRequest",
9815 FT_UINT32
, BASE_DEC
, VALS(tetra_T_lengthIndicationOrCapacityRequest_vals
), 0,
9817 { &hf_tetra_lengthIndication
,
9818 { "lengthIndication", "tetra.lengthIndication",
9819 FT_UINT32
, BASE_DEC
, VALS(tetra_LengthIndication_vals
), 0,
9821 { &hf_tetra_capacityRequest
,
9822 { "capacityRequest", "tetra.capacityRequest_element",
9823 FT_NONE
, BASE_NONE
, NULL
, 0,
9825 { &hf_tetra_tm_sdu_01
,
9826 { "tm-sdu", "tetra.tm_sdu",
9827 FT_UINT32
, BASE_DEC
, VALS(tetra_U_LLC_PDU_vals
), 0,
9828 "U_LLC_PDU", HFILL
}},
9830 { "frag", "tetra.frag",
9831 FT_UINT32
, BASE_DEC
, VALS(tetra_Frag1_vals
), 0,
9833 { &hf_tetra_reservation_requirement
,
9834 { "reservation-requirement", "tetra.reservation_requirement",
9835 FT_UINT32
, BASE_DEC
, VALS(tetra_SLOT_APPLY_vals
), 0,
9836 "SLOT_APPLY", HFILL
}},
9837 { &hf_tetra_lengthIndicationOrCapacityRequest_01
,
9838 { "lengthIndicationOrCapacityRequest", "tetra.lengthIndicationOrCapacityRequest",
9839 FT_UINT32
, BASE_DEC
, VALS(tetra_T_lengthIndicationOrCapacityRequest_01_vals
), 0,
9840 "T_lengthIndicationOrCapacityRequest_01", HFILL
}},
9841 { &hf_tetra_lengthIndication_01
,
9842 { "lengthIndication", "tetra.lengthIndication",
9843 FT_UINT32
, BASE_DEC
, VALS(tetra_LengthIndicationMacData_vals
), 0,
9844 "LengthIndicationMacData", HFILL
}},
9845 { &hf_tetra_capacityRequest_01
,
9846 { "capacityRequest", "tetra.capacityRequest_element",
9847 FT_NONE
, BASE_NONE
, NULL
, 0,
9849 { &hf_tetra_sub_type
,
9850 { "sub-type", "tetra.sub_type",
9851 FT_UINT32
, BASE_DEC
, NULL
, 0,
9852 "INTEGER_0_1", HFILL
}},
9853 { &hf_tetra_tm_sdu_02
,
9854 { "tm-sdu", "tetra.tm_sdu",
9855 FT_BYTES
, BASE_NONE
, NULL
, 0,
9856 "BIT_STRING_SIZE_264", HFILL
}},
9857 { &hf_tetra_tm_sdu_03
,
9858 { "tm-sdu", "tetra.tm_sdu",
9859 FT_BYTES
, BASE_NONE
, NULL
, 0,
9860 "BIT_STRING_SIZE_120", HFILL
}},
9861 { &hf_tetra_lengthInd_ReservationReq
,
9862 { "lengthInd-ReservationReq", "tetra.lengthInd_ReservationReq",
9863 FT_UINT32
, BASE_DEC
, VALS(tetra_LengthIndOrReservationReq_vals
), 0,
9864 "LengthIndOrReservationReq", HFILL
}},
9865 { &hf_tetra_tm_sdu_04
,
9866 { "tm-sdu", "tetra.tm_sdu",
9867 FT_BYTES
, BASE_NONE
, NULL
, 0,
9868 "BIT_STRING_SIZE_258", HFILL
}},
9869 { &hf_tetra_pdu_subtype
,
9870 { "pdu-subtype", "tetra.pdu_subtype",
9871 FT_UINT32
, BASE_DEC
, NULL
, 0,
9872 "INTEGER_0_1", HFILL
}},
9873 { &hf_tetra_tm_sdu_05
,
9874 { "tm-sdu", "tetra.tm_sdu",
9875 FT_BYTES
, BASE_NONE
, NULL
, 0,
9876 "BIT_STRING_SIZE_114", HFILL
}},
9877 { &hf_tetra_lengthInd_ReservationReq_01
,
9878 { "lengthInd-ReservationReq", "tetra.lengthInd_ReservationReq",
9879 FT_UINT32
, BASE_DEC
, VALS(tetra_T_lengthInd_ReservationReq_vals
), 0,
9881 { &hf_tetra_lengthInd
,
9882 { "lengthInd", "tetra.lengthInd",
9883 FT_UINT32
, BASE_DEC
, VALS(tetra_LengthIndMacHu_vals
), 0,
9884 "LengthIndMacHu", HFILL
}},
9885 { &hf_tetra_tm_sdu_06
,
9886 { "tm-sdu", "tetra.tm_sdu",
9887 FT_BYTES
, BASE_NONE
, NULL
, 0,
9888 "BIT_STRING_SIZE_85", HFILL
}},
9889 { &hf_tetra_position_of_grant
,
9890 { "position-of-grant", "tetra.position_of_grant",
9891 FT_UINT32
, BASE_DEC
, VALS(tetra_Position_Of_Grant_vals
), 0,
9893 { &hf_tetra_lengthIndication_02
,
9894 { "lengthIndication", "tetra.lengthIndication",
9895 FT_UINT32
, BASE_DEC
, VALS(tetra_LengthIndicationMacEndDl_vals
), 0,
9896 "LengthIndicationMacEndDl", HFILL
}},
9897 { &hf_tetra_slot_granting
,
9898 { "slot-granting", "tetra.slot_granting",
9899 FT_UINT32
, BASE_DEC
, VALS(tetra_T_slot_granting_vals
), 0,
9900 "T_slot_granting", HFILL
}},
9902 { "none", "tetra.none_element",
9903 FT_NONE
, BASE_NONE
, NULL
, 0,
9905 { &hf_tetra_slot_granting_param
,
9906 { "slot-granting-param", "tetra.slot_granting_param_element",
9907 FT_NONE
, BASE_NONE
, NULL
, 0,
9908 "SlotGranting", HFILL
}},
9909 { &hf_tetra_channel_allocation
,
9910 { "channel-allocation", "tetra.channel_allocation",
9911 FT_UINT32
, BASE_DEC
, VALS(tetra_T_channel_allocation_vals
), 0,
9913 { &hf_tetra_channel_allocation_element
,
9914 { "channel-allocation-element", "tetra.channel_allocation_element_element",
9915 FT_NONE
, BASE_NONE
, NULL
, 0,
9916 "ChannelAllocation", HFILL
}},
9917 { &hf_tetra_tm_sdu_07
,
9918 { "tm-sdu", "tetra.tm_sdu",
9919 FT_BYTES
, BASE_NONE
, NULL
, 0,
9920 "BIT_STRING_SIZE_255", HFILL
}},
9921 { &hf_tetra_capacity_allocation
,
9922 { "capacity-allocation", "tetra.capacity_allocation",
9923 FT_UINT32
, BASE_DEC
, VALS(tetra_Capacity_Allocation_vals
), 0,
9925 { &hf_tetra_granting_delay
,
9926 { "granting-delay", "tetra.granting_delay",
9927 FT_UINT32
, BASE_DEC
, VALS(tetra_Granting_delay_vals
), 0,
9929 { &hf_tetra_allocation_type
,
9930 { "allocation-type", "tetra.allocation_type",
9931 FT_UINT32
, BASE_DEC
, VALS(tetra_T_allocation_type_vals
), 0,
9933 { &hf_tetra_timeslot_assigned
,
9934 { "timeslot-assigned", "tetra.timeslot_assigned",
9935 FT_UINT32
, BASE_DEC
, VALS(tetra_Timeslot_Assigned_vals
), 0,
9937 { &hf_tetra_up_down_assigned
,
9938 { "up-down-assigned", "tetra.up_down_assigned",
9939 FT_UINT32
, BASE_DEC
, VALS(tetra_T_up_down_assigned_vals
), 0,
9941 { &hf_tetra_clch_permission
,
9942 { "clch-permission", "tetra.clch_permission",
9943 FT_UINT32
, BASE_DEC
, VALS(tetra_CLCH_permission_vals
), 0,
9945 { &hf_tetra_cell_change
,
9946 { "cell-change", "tetra.cell_change",
9947 FT_UINT32
, BASE_DEC
, VALS(tetra_Cell_change_flag_vals
), 0,
9948 "Cell_change_flag", HFILL
}},
9949 { &hf_tetra_carrier_number
,
9950 { "carrier-number", "tetra.carrier_number",
9951 FT_UINT32
, BASE_DEC
, NULL
, 0,
9952 "INTEGER_0_4095", HFILL
}},
9953 { &hf_tetra_extend_carrier_flag
,
9954 { "extend-carrier-flag", "tetra.extend_carrier_flag",
9955 FT_UINT32
, BASE_DEC
, VALS(tetra_T_extend_carrier_flag_vals
), 0,
9957 { &hf_tetra_extended
,
9958 { "extended", "tetra.extended_element",
9959 FT_NONE
, BASE_NONE
, NULL
, 0,
9960 "Extended_carrier_flag", HFILL
}},
9961 { &hf_tetra_monitoring_pattern
,
9962 { "monitoring-pattern", "tetra.monitoring_pattern",
9963 FT_UINT32
, BASE_DEC
, VALS(tetra_T_monitoring_pattern_vals
), 0,
9966 { "one", "tetra.one",
9967 FT_UINT32
, BASE_DEC
, VALS(tetra_Monitoring_pattern_vals
), 0,
9968 "Monitoring_pattern", HFILL
}},
9970 { "none1", "tetra.none1_element",
9971 FT_NONE
, BASE_NONE
, NULL
, 0,
9974 { "none2", "tetra.none2_element",
9975 FT_NONE
, BASE_NONE
, NULL
, 0,
9978 { "none3", "tetra.none3_element",
9979 FT_NONE
, BASE_NONE
, NULL
, 0,
9981 { &hf_tetra_offset_01
,
9982 { "offset", "tetra.offset",
9983 FT_UINT32
, BASE_DEC
, NULL
, 0,
9984 "INTEGER_0_3", HFILL
}},
9985 { &hf_tetra_reverse_operation_01
,
9986 { "reverse-operation", "tetra.reverse_operation",
9987 FT_UINT32
, BASE_DEC
, VALS(tetra_T_reverse_operation_vals
), 0,
9989 { &hf_tetra_pdu_type_02
,
9990 { "pdu-type", "tetra.pdu_type",
9991 FT_UINT32
, BASE_DEC
, NULL
, 0,
9992 "INTEGER_0_7", HFILL
}},
9993 { &hf_tetra_fill_bit_ind
,
9994 { "fill-bit-ind", "tetra.fill_bit_ind",
9995 FT_BOOLEAN
, BASE_NONE
, NULL
, 0,
9996 "BOOLEAN", HFILL
}},
9997 { &hf_tetra_position_of_grant_01
,
9998 { "position-of-grant", "tetra.position_of_grant",
9999 FT_UINT32
, BASE_DEC
, NULL
, 0,
10000 "INTEGER_0_1", HFILL
}},
10001 { &hf_tetra_slot_granting_01
,
10002 { "slot-granting", "tetra.slot_granting",
10003 FT_UINT32
, BASE_DEC
, VALS(tetra_T_slot_granting_01_vals
), 0,
10004 "T_slot_granting_01", HFILL
}},
10005 { &hf_tetra_channel_allocation_01
,
10006 { "channel-allocation", "tetra.channel_allocation",
10007 FT_UINT32
, BASE_DEC
, VALS(tetra_T_channel_allocation_01_vals
), 0,
10008 "T_channel_allocation_01", HFILL
}},
10009 { &hf_tetra_tm_sdu_08
,
10010 { "tm-sdu", "tetra.tm_sdu",
10011 FT_BYTES
, BASE_NONE
, NULL
, 0,
10012 "BIT_STRING_SIZE_111", HFILL
}},
10013 { &hf_tetra_encryption_mode
,
10014 { "encryption-mode", "tetra.encryption_mode",
10015 FT_UINT32
, BASE_DEC
, NULL
, 0,
10016 "INTEGER_0_3", HFILL
}},
10017 { &hf_tetra_access_ack
,
10018 { "access-ack", "tetra.access_ack",
10019 FT_UINT32
, BASE_DEC
, VALS(tetra_T_access_ack_vals
), 0,
10021 { &hf_tetra_lengthIndication_03
,
10022 { "lengthIndication", "tetra.lengthIndication",
10023 FT_UINT32
, BASE_DEC
, VALS(tetra_LengthIndicationMacResource_vals
), 0,
10024 "LengthIndicationMacResource", HFILL
}},
10025 { &hf_tetra_address_01
,
10026 { "address", "tetra.address",
10027 FT_UINT32
, BASE_DEC
, VALS(tetra_AddressMacResource_vals
), 0,
10028 "AddressMacResource", HFILL
}},
10029 { &hf_tetra_power_control
,
10030 { "power-control", "tetra.power_control",
10031 FT_UINT32
, BASE_DEC
, VALS(tetra_T_power_control_vals
), 0,
10033 { &hf_tetra_powerParameters
,
10034 { "powerParameters", "tetra.powerParameters",
10035 FT_UINT32
, BASE_DEC
, VALS(tetra_PowerControl_vals
), 0,
10036 "PowerControl", HFILL
}},
10037 { &hf_tetra_slot_granting_02
,
10038 { "slot-granting", "tetra.slot_granting",
10039 FT_UINT32
, BASE_DEC
, VALS(tetra_T_slot_granting_02_vals
), 0,
10040 "T_slot_granting_02", HFILL
}},
10041 { &hf_tetra_channel_allocation_02
,
10042 { "channel-allocation", "tetra.channel_allocation",
10043 FT_UINT32
, BASE_DEC
, VALS(tetra_T_channel_allocation_02_vals
), 0,
10044 "T_channel_allocation_02", HFILL
}},
10045 { &hf_tetra_tm_sdu_09
,
10046 { "tm-sdu", "tetra.tm_sdu",
10047 FT_UINT32
, BASE_DEC
, VALS(tetra_D_LLC_PDU_vals
), 0,
10048 "D_LLC_PDU", HFILL
}},
10049 { &hf_tetra_null_pdu
,
10050 { "null-pdu", "tetra.null_pdu_element",
10051 FT_NONE
, BASE_NONE
, NULL
, 0,
10053 { &hf_tetra_ssi_01
,
10054 { "ssi", "tetra.ssi_element",
10055 FT_NONE
, BASE_NONE
, NULL
, 0,
10056 "SSI_NEED", HFILL
}},
10057 { &hf_tetra_eventLabel_01
,
10058 { "eventLabel", "tetra.eventLabel_element",
10059 FT_NONE
, BASE_NONE
, NULL
, 0,
10060 "EVENT_NEED", HFILL
}},
10061 { &hf_tetra_ussi_01
,
10062 { "ussi", "tetra.ussi_element",
10063 FT_NONE
, BASE_NONE
, NULL
, 0,
10064 "USSI_NEED", HFILL
}},
10065 { &hf_tetra_smi_01
,
10066 { "smi", "tetra.smi_element",
10067 FT_NONE
, BASE_NONE
, NULL
, 0,
10068 "SMI_NEED", HFILL
}},
10069 { &hf_tetra_ssi_eventLabel
,
10070 { "ssi-eventLabel", "tetra.ssi_eventLabel_element",
10071 FT_NONE
, BASE_NONE
, NULL
, 0,
10072 "SSI_EVENT_NEED", HFILL
}},
10073 { &hf_tetra_ssi_usage_maker
,
10074 { "ssi-usage-maker", "tetra.ssi_usage_maker_element",
10075 FT_NONE
, BASE_NONE
, NULL
, 0,
10076 "SSI_USAGE_NEED", HFILL
}},
10077 { &hf_tetra_smi_eventLabel
,
10078 { "smi-eventLabel", "tetra.smi_eventLabel_element",
10079 FT_NONE
, BASE_NONE
, NULL
, 0,
10080 "SMI_EVENT_NEED", HFILL
}},
10082 { "other", "tetra.other_element",
10083 FT_NONE
, BASE_NONE
, NULL
, 0,
10084 "OTHER_DATA", HFILL
}},
10085 { &hf_tetra_eventlabel
,
10086 { "eventlabel", "tetra.eventlabel",
10087 FT_UINT32
, BASE_DEC
, NULL
, 0,
10088 "INTEGER_0_1023", HFILL
}},
10089 { &hf_tetra_ventlabel
,
10090 { "ventlabel", "tetra.ventlabel",
10091 FT_UINT32
, BASE_DEC
, NULL
, 0,
10092 "INTEGER_0_1023", HFILL
}},
10093 { &hf_tetra_usage_maker
,
10094 { "usage-maker", "tetra.usage_maker",
10095 FT_UINT32
, BASE_DEC
, NULL
, 0,
10096 "INTEGER_0_63", HFILL
}},
10097 { &hf_tetra_smi_eventlabel
,
10098 { "smi-eventlabel", "tetra.smi_eventlabel",
10099 FT_BYTES
, BASE_NONE
, NULL
, 0,
10100 "BIT_STRING_SIZE_34", HFILL
}},
10101 { &hf_tetra_broadcast_channel
,
10102 { "broadcast-channel", "tetra.broadcast_channel",
10103 FT_UINT32
, BASE_DEC
, NULL
, 0,
10104 "INTEGER_0_1", HFILL
}},
10105 { &hf_tetra_access_code
,
10106 { "access-code", "tetra.access_code",
10107 FT_UINT32
, BASE_DEC
, NULL
, 0,
10108 "INTEGER_0_3", HFILL
}},
10109 { &hf_tetra_imm_01
,
10110 { "imm", "tetra.imm",
10111 FT_UINT32
, BASE_DEC
, NULL
, 0,
10112 "INTEGER_0_15", HFILL
}},
10114 { "wt", "tetra.wt",
10115 FT_UINT32
, BASE_DEC
, NULL
, 0,
10116 "INTEGER_0_15", HFILL
}},
10118 { "nu", "tetra.nu",
10119 FT_UINT32
, BASE_DEC
, NULL
, 0,
10120 "INTEGER_0_15", HFILL
}},
10121 { &hf_tetra_frame_len_factor_01
,
10122 { "frame-len-factor", "tetra.frame_len_factor",
10123 FT_UINT32
, BASE_DEC
, NULL
, 0,
10124 "INTEGER_0_1", HFILL
}},
10125 { &hf_tetra_timeslot_pointer_01
,
10126 { "timeslot-pointer", "tetra.timeslot_pointer",
10127 FT_UINT32
, BASE_DEC
, NULL
, 0,
10128 "INTEGER_0_15", HFILL
}},
10129 { &hf_tetra_min_priority
,
10130 { "min-priority", "tetra.min_priority",
10131 FT_UINT32
, BASE_DEC
, NULL
, 0,
10132 "INTEGER_0_7", HFILL
}},
10133 { &hf_tetra_optional_field
,
10134 { "optional-field", "tetra.optional_field",
10135 FT_UINT32
, BASE_DEC
, VALS(tetra_T_optional_field_vals
), 0,
10137 { &hf_tetra_class_bitmap
,
10138 { "class-bitmap", "tetra.class_bitmap",
10139 FT_UINT32
, BASE_DEC
, NULL
, 0,
10140 "INTEGER_0_65535", HFILL
}},
10142 { "gssi", "tetra.gssi",
10143 FT_UINT32
, BASE_DEC
, NULL
, 0,
10144 "INTEGER_0_33554431", HFILL
}},
10145 { &hf_tetra_reserved_03
,
10146 { "reserved", "tetra.reserved_element",
10147 FT_NONE
, BASE_NONE
, NULL
, 0,
10149 { &hf_tetra_filler_bits
,
10150 { "filler-bits", "tetra.filler_bits",
10151 FT_UINT32
, BASE_DEC
, NULL
, 0,
10152 "INTEGER_0_7", HFILL
}},
10153 { &hf_tetra_bl_adata_01
,
10154 { "bl-adata", "tetra.bl_adata_element",
10155 FT_NONE
, BASE_NONE
, NULL
, 0,
10156 "D_BL_ADATA", HFILL
}},
10157 { &hf_tetra_bl_data_01
,
10158 { "bl-data", "tetra.bl_data_element",
10159 FT_NONE
, BASE_NONE
, NULL
, 0,
10160 "D_BL_DATA", HFILL
}},
10161 { &hf_tetra_bl_udata_01
,
10162 { "bl-udata", "tetra.bl_udata",
10163 FT_UINT32
, BASE_DEC
, VALS(tetra_D_MLE_PDU_vals
), 0,
10164 "D_MLE_PDU", HFILL
}},
10165 { &hf_tetra_bl_ack_01
,
10166 { "bl-ack", "tetra.bl_ack_element",
10167 FT_NONE
, BASE_NONE
, NULL
, 0,
10168 "D_BL_ACK", HFILL
}},
10169 { &hf_tetra_bl_adata_fcs_01
,
10170 { "bl-adata-fcs", "tetra.bl_adata_fcs_element",
10171 FT_NONE
, BASE_NONE
, NULL
, 0,
10172 "D_BL_ADATA_FCS", HFILL
}},
10173 { &hf_tetra_bl_data_fcs_01
,
10174 { "bl-data-fcs", "tetra.bl_data_fcs_element",
10175 FT_NONE
, BASE_NONE
, NULL
, 0,
10176 "D_BL_DATA_FCS", HFILL
}},
10177 { &hf_tetra_bl_udata_fcs_01
,
10178 { "bl-udata-fcs", "tetra.bl_udata_fcs_element",
10179 FT_NONE
, BASE_NONE
, NULL
, 0,
10180 "D_MLE_PDU_FCS", HFILL
}},
10181 { &hf_tetra_bl_ack_fcs_01
,
10182 { "bl-ack-fcs", "tetra.bl_ack_fcs_element",
10183 FT_NONE
, BASE_NONE
, NULL
, 0,
10184 "D_BL_ACK_FCS", HFILL
}},
10185 { &hf_tetra_tl_sdu_01
,
10186 { "tl-sdu", "tetra.tl_sdu",
10187 FT_UINT32
, BASE_DEC
, VALS(tetra_D_MLE_PDU_vals
), 0,
10188 "D_MLE_PDU", HFILL
}},
10189 { &hf_tetra_d_mle_pdu
,
10190 { "d-mle-pdu", "tetra.d_mle_pdu",
10191 FT_UINT32
, BASE_DEC
, VALS(tetra_D_MLE_PDU_vals
), 0,
10194 { "mm", "tetra.mm",
10195 FT_UINT32
, BASE_DEC
, VALS(tetra_D_MM_PDU_vals
), 0,
10196 "D_MM_PDU", HFILL
}},
10197 { &hf_tetra_cmce_01
,
10198 { "cmce", "tetra.cmce",
10199 FT_UINT32
, BASE_DEC
, VALS(tetra_D_CMCE_PDU_vals
), 0,
10200 "D_CMCE_PDU", HFILL
}},
10201 { &hf_tetra_mle_01
,
10202 { "mle", "tetra.mle",
10203 FT_UINT32
, BASE_DEC
, VALS(tetra_DMLE_PDU_vals
), 0,
10204 "DMLE_PDU", HFILL
}},
10205 { &hf_tetra_u_prepare
,
10206 { "u-prepare", "tetra.u_prepare_element",
10207 FT_NONE
, BASE_NONE
, NULL
, 0,
10209 { &hf_tetra_umle_reserved1
,
10210 { "umle-reserved1", "tetra.umle_reserved1_element",
10211 FT_NONE
, BASE_NONE
, NULL
, 0,
10213 { &hf_tetra_umle_reserved2
,
10214 { "umle-reserved2", "tetra.umle_reserved2_element",
10215 FT_NONE
, BASE_NONE
, NULL
, 0,
10217 { &hf_tetra_umle_reserved3
,
10218 { "umle-reserved3", "tetra.umle_reserved3_element",
10219 FT_NONE
, BASE_NONE
, NULL
, 0,
10221 { &hf_tetra_u_restore
,
10222 { "u-restore", "tetra.u_restore_element",
10223 FT_NONE
, BASE_NONE
, NULL
, 0,
10225 { &hf_tetra_umle_reserved4
,
10226 { "umle-reserved4", "tetra.umle_reserved4_element",
10227 FT_NONE
, BASE_NONE
, NULL
, 0,
10229 { &hf_tetra_umle_reserved5
,
10230 { "umle-reserved5", "tetra.umle_reserved5_element",
10231 FT_NONE
, BASE_NONE
, NULL
, 0,
10233 { &hf_tetra_umle_reserved6
,
10234 { "umle-reserved6", "tetra.umle_reserved6_element",
10235 FT_NONE
, BASE_NONE
, NULL
, 0,
10237 { &hf_tetra_d_new_cell
,
10238 { "d-new-cell", "tetra.d_new_cell_element",
10239 FT_NONE
, BASE_NONE
, NULL
, 0,
10241 { &hf_tetra_d_prepare_fail
,
10242 { "d-prepare-fail", "tetra.d_prepare_fail_element",
10243 FT_NONE
, BASE_NONE
, NULL
, 0,
10245 { &hf_tetra_d_nwrk_broadcast
,
10246 { "d-nwrk-broadcast", "tetra.d_nwrk_broadcast_element",
10247 FT_NONE
, BASE_NONE
, NULL
, 0,
10248 "D_NWRK_BRDADCAST", HFILL
}},
10249 { &hf_tetra_dmle_reserved1
,
10250 { "dmle-reserved1", "tetra.dmle_reserved1_element",
10251 FT_NONE
, BASE_NONE
, NULL
, 0,
10253 { &hf_tetra_d_restore_ack
,
10254 { "d-restore-ack", "tetra.d_restore_ack_element",
10255 FT_NONE
, BASE_NONE
, NULL
, 0,
10257 { &hf_tetra_d_restore_fail
,
10258 { "d-restore-fail", "tetra.d_restore_fail_element",
10259 FT_NONE
, BASE_NONE
, NULL
, 0,
10261 { &hf_tetra_dmle_reserved2
,
10262 { "dmle-reserved2", "tetra.dmle_reserved2_element",
10263 FT_NONE
, BASE_NONE
, NULL
, 0,
10265 { &hf_tetra_dmle_reserved3
,
10266 { "dmle-reserved3", "tetra.dmle_reserved3_element",
10267 FT_NONE
, BASE_NONE
, NULL
, 0,
10269 { &hf_tetra_optional_elements
,
10270 { "optional-elements", "tetra.optional_elements",
10271 FT_UINT32
, BASE_DEC
, VALS(tetra_T_optional_elements_vals
), 0,
10273 { &hf_tetra_no_type2
,
10274 { "no-type2", "tetra.no_type2_element",
10275 FT_NONE
, BASE_NONE
, NULL
, 0,
10277 { &hf_tetra_type2_parameters
,
10278 { "type2-parameters", "tetra.type2_parameters_element",
10279 FT_NONE
, BASE_NONE
, NULL
, 0,
10281 { &hf_tetra_cell_number
,
10282 { "cell-number", "tetra.cell_number",
10283 FT_UINT32
, BASE_DEC
, VALS(tetra_T_cell_number_vals
), 0,
10285 { &hf_tetra_cell_number_01
,
10286 { "cell-number", "tetra.cell_number",
10287 FT_UINT32
, BASE_DEC
, NULL
, 0,
10288 "INTEGER_0_65535", HFILL
}},
10290 { "sdu", "tetra.sdu",
10291 FT_BYTES
, BASE_NONE
, NULL
, 0,
10292 "BIT_STRING", HFILL
}},
10293 { &hf_tetra_optional_elements_01
,
10294 { "optional-elements", "tetra.optional_elements",
10295 FT_UINT32
, BASE_DEC
, VALS(tetra_T_optional_elements_01_vals
), 0,
10296 "T_optional_elements_01", HFILL
}},
10297 { &hf_tetra_type2_parameters_01
,
10298 { "type2-parameters", "tetra.type2_parameters_element",
10299 FT_NONE
, BASE_NONE
, NULL
, 0,
10300 "T_type2_parameters_01", HFILL
}},
10301 { &hf_tetra_mcc_01
,
10302 { "mcc", "tetra.mcc",
10303 FT_UINT32
, BASE_DEC
, VALS(tetra_T_mcc_vals
), 0,
10305 { &hf_tetra_mnc_01
,
10306 { "mnc", "tetra.mnc",
10307 FT_UINT32
, BASE_DEC
, VALS(tetra_T_mnc_vals
), 0,
10310 { "la", "tetra.la",
10311 FT_UINT32
, BASE_DEC
, VALS(tetra_T_la_vals
), 0,
10313 { &hf_tetra_channel_command_valid
,
10314 { "channel-command-valid", "tetra.channel_command_valid",
10315 FT_UINT32
, BASE_DEC
, NULL
, 0,
10316 "INTEGER_0_3", HFILL
}},
10317 { &hf_tetra_optional_elements_02
,
10318 { "optional-elements", "tetra.optional_elements",
10319 FT_UINT32
, BASE_DEC
, VALS(tetra_T_optional_elements_02_vals
), 0,
10320 "T_optional_elements_02", HFILL
}},
10321 { &hf_tetra_fail_cause
,
10322 { "fail-cause", "tetra.fail_cause",
10323 FT_UINT32
, BASE_DEC
, NULL
, 0,
10324 "INTEGER_0_3", HFILL
}},
10325 { &hf_tetra_optional_elements_03
,
10326 { "optional-elements", "tetra.optional_elements",
10327 FT_UINT32
, BASE_DEC
, VALS(tetra_T_optional_elements_03_vals
), 0,
10328 "T_optional_elements_03", HFILL
}},
10329 { &hf_tetra_cell_re_select_parameters
,
10330 { "cell-re-select-parameters", "tetra.cell_re_select_parameters",
10331 FT_UINT32
, BASE_DEC
, NULL
, 0,
10332 "INTEGER_0_65535", HFILL
}},
10333 { &hf_tetra_optional_elements_04
,
10334 { "optional-elements", "tetra.optional_elements",
10335 FT_UINT32
, BASE_DEC
, VALS(tetra_T_optional_elements_04_vals
), 0,
10336 "T_optional_elements_04", HFILL
}},
10337 { &hf_tetra_type2_parameters_02
,
10338 { "type2-parameters", "tetra.type2_parameters_element",
10339 FT_NONE
, BASE_NONE
, NULL
, 0,
10340 "T_type2_parameters_02", HFILL
}},
10341 { &hf_tetra_tetra_network_time
,
10342 { "tetra-network-time", "tetra.tetra_network_time",
10343 FT_UINT32
, BASE_DEC
, VALS(tetra_T_tetra_network_time_vals
), 0,
10345 { &hf_tetra_tetra_network_time_01
,
10346 { "tetra-network-time", "tetra.tetra_network_time_element",
10347 FT_NONE
, BASE_NONE
, NULL
, 0,
10349 { &hf_tetra_number_of_neighbour_cells
,
10350 { "number-of-neighbour-cells", "tetra.number_of_neighbour_cells",
10351 FT_UINT32
, BASE_DEC
, VALS(tetra_T_number_of_neighbour_cells_vals
), 0,
10353 { &hf_tetra_number_of_neighbour_cells_01
,
10354 { "number-of-neighbour-cells", "tetra.number_of_neighbour_cells",
10355 FT_UINT32
, BASE_DEC
, NULL
, 0,
10356 "INTEGER_0_7", HFILL
}},
10357 { &hf_tetra_network_time
,
10358 { "network-time", "tetra.network_time",
10359 FT_UINT64
, BASE_DEC
, NULL
, 0,
10361 { &hf_tetra_local_time_offset_sign
,
10362 { "local-time-offset-sign", "tetra.local_time_offset_sign",
10363 FT_UINT32
, BASE_DEC
, NULL
, 0,
10364 "INTEGER_0_1", HFILL
}},
10365 { &hf_tetra_local_time_offset
,
10366 { "local-time-offset", "tetra.local_time_offset",
10367 FT_UINT32
, BASE_DEC
, NULL
, 0,
10368 "INTEGER_0_63", HFILL
}},
10370 { "year", "tetra.year",
10371 FT_UINT32
, BASE_DEC
, NULL
, 0,
10372 "INTEGER_0_63", HFILL
}},
10373 { &hf_tetra_reserved_04
,
10374 { "reserved", "tetra.reserved",
10375 FT_UINT64
, BASE_DEC
, NULL
, 0,
10377 { &hf_tetra_u_Authentication
,
10378 { "u-Authentication", "tetra.u_Authentication_element",
10379 FT_NONE
, BASE_NONE
, NULL
, 0,
10381 { &hf_tetra_u_Itsi_Detach
,
10382 { "u-Itsi-Detach", "tetra.u_Itsi_Detach_element",
10383 FT_NONE
, BASE_NONE
, NULL
, 0,
10385 { &hf_tetra_u_Location_Update_Demand
,
10386 { "u-Location-Update-Demand", "tetra.u_Location_Update_Demand_element",
10387 FT_NONE
, BASE_NONE
, NULL
, 0,
10389 { &hf_tetra_u_MM_Status
,
10390 { "u-MM-Status", "tetra.u_MM_Status_element",
10391 FT_NONE
, BASE_NONE
, NULL
, 0,
10393 { &hf_tetra_u_MM_reserved1
,
10394 { "u-MM-reserved1", "tetra.u_MM_reserved1_element",
10395 FT_NONE
, BASE_NONE
, NULL
, 0,
10398 { "u-WK", "tetra.u_WK_element",
10399 FT_NONE
, BASE_NONE
, NULL
, 0,
10401 { &hf_tetra_u_MM_reserved3
,
10402 { "u-MM-reserved3", "tetra.u_MM_reserved3_element",
10403 FT_NONE
, BASE_NONE
, NULL
, 0,
10405 { &hf_tetra_u_Attach_Detach_Group_Identity
,
10406 { "u-Attach-Detach-Group-Identity", "tetra.u_Attach_Detach_Group_Identity_element",
10407 FT_NONE
, BASE_NONE
, NULL
, 0,
10409 { &hf_tetra_u_Attach_Detach_Group_Identity_Ack
,
10410 { "u-Attach-Detach-Group-Identity-Ack", "tetra.u_Attach_Detach_Group_Identity_Ack_element",
10411 FT_NONE
, BASE_NONE
, NULL
, 0,
10413 { &hf_tetra_u_TEI_Provide
,
10414 { "u-TEI-Provide", "tetra.u_TEI_Provide_element",
10415 FT_NONE
, BASE_NONE
, NULL
, 0,
10417 { &hf_tetra_u_MM_reserved6
,
10418 { "u-MM-reserved6", "tetra.u_MM_reserved6_element",
10419 FT_NONE
, BASE_NONE
, NULL
, 0,
10421 { &hf_tetra_u_Disabled_Status
,
10422 { "u-Disabled-Status", "tetra.u_Disabled_Status_element",
10423 FT_NONE
, BASE_NONE
, NULL
, 0,
10425 { &hf_tetra_u_MM_reserved7
,
10426 { "u-MM-reserved7", "tetra.u_MM_reserved7_element",
10427 FT_NONE
, BASE_NONE
, NULL
, 0,
10429 { &hf_tetra_u_MM_reserved8
,
10430 { "u-MM-reserved8", "tetra.u_MM_reserved8_element",
10431 FT_NONE
, BASE_NONE
, NULL
, 0,
10433 { &hf_tetra_u_MM_reserved9
,
10434 { "u-MM-reserved9", "tetra.u_MM_reserved9_element",
10435 FT_NONE
, BASE_NONE
, NULL
, 0,
10437 { &hf_tetra_u_MM_Function_Not_Support
,
10438 { "u-MM-Function-Not-Support", "tetra.u_MM_Function_Not_Support_element",
10439 FT_NONE
, BASE_NONE
, NULL
, 0,
10441 { &hf_tetra_d_Otar
,
10442 { "d-Otar", "tetra.d_Otar_element",
10443 FT_NONE
, BASE_NONE
, NULL
, 0,
10445 { &hf_tetra_d_Authentication
,
10446 { "d-Authentication", "tetra.d_Authentication_element",
10447 FT_NONE
, BASE_NONE
, NULL
, 0,
10449 { &hf_tetra_d_Authentication_Reject
,
10450 { "d-Authentication-Reject", "tetra.d_Authentication_Reject_element",
10451 FT_NONE
, BASE_NONE
, NULL
, 0,
10453 { &hf_tetra_d_Disable
,
10454 { "d-Disable", "tetra.d_Disable_element",
10455 FT_NONE
, BASE_NONE
, NULL
, 0,
10457 { &hf_tetra_d_Enable
,
10458 { "d-Enable", "tetra.d_Enable_element",
10459 FT_NONE
, BASE_NONE
, NULL
, 0,
10461 { &hf_tetra_d_Location_Update_Accept
,
10462 { "d-Location-Update-Accept", "tetra.d_Location_Update_Accept_element",
10463 FT_NONE
, BASE_NONE
, NULL
, 0,
10465 { &hf_tetra_d_Location_Update_Command
,
10466 { "d-Location-Update-Command", "tetra.d_Location_Update_Command_element",
10467 FT_NONE
, BASE_NONE
, NULL
, 0,
10469 { &hf_tetra_d_Location_Update_Reject
,
10470 { "d-Location-Update-Reject", "tetra.d_Location_Update_Reject_element",
10471 FT_NONE
, BASE_NONE
, NULL
, 0,
10473 { &hf_tetra_d_MM_reserved2
,
10474 { "d-MM-reserved2", "tetra.d_MM_reserved2_element",
10475 FT_NONE
, BASE_NONE
, NULL
, 0,
10477 { &hf_tetra_d_Location_Update_Proceeding
,
10478 { "d-Location-Update-Proceeding", "tetra.d_Location_Update_Proceeding_element",
10479 FT_NONE
, BASE_NONE
, NULL
, 0,
10481 { &hf_tetra_d_Attach_Detach_Group_Identity
,
10482 { "d-Attach-Detach-Group-Identity", "tetra.d_Attach_Detach_Group_Identity_element",
10483 FT_NONE
, BASE_NONE
, NULL
, 0,
10485 { &hf_tetra_d_Attach_Detach_Group_Identity_Ack
,
10486 { "d-Attach-Detach-Group-Identity-Ack", "tetra.d_Attach_Detach_Group_Identity_Ack_element",
10487 FT_NONE
, BASE_NONE
, NULL
, 0,
10489 { &hf_tetra_d_MM_Status
,
10490 { "d-MM-Status", "tetra.d_MM_Status_element",
10491 FT_NONE
, BASE_NONE
, NULL
, 0,
10493 { &hf_tetra_d_MM_reserved5
,
10494 { "d-MM-reserved5", "tetra.d_MM_reserved5_element",
10495 FT_NONE
, BASE_NONE
, NULL
, 0,
10497 { &hf_tetra_d_MM_reserved6
,
10498 { "d-MM-reserved6", "tetra.d_MM_reserved6_element",
10499 FT_NONE
, BASE_NONE
, NULL
, 0,
10501 { &hf_tetra_d_MM_Function_Not_Support
,
10502 { "d-MM-Function-Not-Support", "tetra.d_MM_Function_Not_Support_element",
10503 FT_NONE
, BASE_NONE
, NULL
, 0,
10505 { &hf_tetra_attach_detach_identifier
,
10506 { "attach-detach-identifier", "tetra.attach_detach_identifier",
10507 FT_UINT32
, BASE_DEC
, VALS(tetra_T_attach_detach_identifier_vals
), 0,
10509 { &hf_tetra_attach
,
10510 { "attach", "tetra.attach_element",
10511 FT_NONE
, BASE_NONE
, NULL
, 0,
10513 { &hf_tetra_lifetime
,
10514 { "lifetime", "tetra.lifetime",
10515 FT_UINT32
, BASE_DEC
, NULL
, 0,
10516 "INTEGER_0_3", HFILL
}},
10517 { &hf_tetra_class_of_usage
,
10518 { "class-of-usage", "tetra.class_of_usage",
10519 FT_UINT32
, BASE_DEC
, NULL
, 0,
10520 "INTEGER_0_7", HFILL
}},
10521 { &hf_tetra_detach
,
10522 { "detach", "tetra.detach_element",
10523 FT_NONE
, BASE_NONE
, NULL
, 0,
10525 { &hf_tetra_detach_downlike
,
10526 { "detach-downlike", "tetra.detach_downlike",
10527 FT_UINT32
, BASE_DEC
, VALS(tetra_T_detach_downlike_vals
), 0,
10529 { &hf_tetra_address_type
,
10530 { "address-type", "tetra.address_type",
10531 FT_UINT32
, BASE_DEC
, VALS(tetra_T_address_type_vals
), 0,
10533 { &hf_tetra_gssi_01
,
10534 { "gssi", "tetra.gssi",
10535 FT_BYTES
, BASE_NONE
, NULL
, 0,
10536 "OCTET_STRING_SIZE_3", HFILL
}},
10537 { &hf_tetra_gssi_extension
,
10538 { "gssi-extension", "tetra.gssi_extension_element",
10539 FT_NONE
, BASE_NONE
, NULL
, 0,
10541 { &hf_tetra_extension
,
10542 { "extension", "tetra.extension",
10543 FT_BYTES
, BASE_NONE
, NULL
, 0,
10544 "OCTET_STRING_SIZE_3", HFILL
}},
10546 { "vgssi", "tetra.vgssi",
10547 FT_BYTES
, BASE_NONE
, NULL
, 0,
10548 "OCTET_STRING_SIZE_3", HFILL
}},
10549 { &hf_tetra_attach_detach_identifier_01
,
10550 { "attach-detach-identifier", "tetra.attach_detach_identifier",
10551 FT_UINT32
, BASE_DEC
, VALS(tetra_T_attach_detach_identifier_01_vals
), 0,
10552 "T_attach_detach_identifier_01", HFILL
}},
10553 { &hf_tetra_attach_01
,
10554 { "attach", "tetra.attach_element",
10555 FT_NONE
, BASE_NONE
, NULL
, 0,
10556 "T_attach_01", HFILL
}},
10557 { &hf_tetra_detach_01
,
10558 { "detach", "tetra.detach_element",
10559 FT_NONE
, BASE_NONE
, NULL
, 0,
10560 "T_detach_01", HFILL
}},
10561 { &hf_tetra_detach_uplike
,
10562 { "detach-uplike", "tetra.detach_uplike",
10563 FT_UINT32
, BASE_DEC
, VALS(tetra_T_detach_uplike_vals
), 0,
10565 { &hf_tetra_address_type_01
,
10566 { "address-type", "tetra.address_type",
10567 FT_UINT32
, BASE_DEC
, VALS(tetra_T_address_type_01_vals
), 0,
10568 "T_address_type_01", HFILL
}},
10569 { &hf_tetra_gssi_extension_01
,
10570 { "gssi-extension", "tetra.gssi_extension_element",
10571 FT_NONE
, BASE_NONE
, NULL
, 0,
10572 "T_gssi_extension_01", HFILL
}},
10573 { &hf_tetra_location_update_type
,
10574 { "location-update-type", "tetra.location_update_type",
10575 FT_UINT32
, BASE_DEC
, VALS(tetra_UPDATE_TYPE_vals
), 0,
10576 "UPDATE_TYPE", HFILL
}},
10577 { &hf_tetra_optional_elements_05
,
10578 { "optional-elements", "tetra.optional_elements",
10579 FT_UINT32
, BASE_DEC
, VALS(tetra_T_optional_elements_05_vals
), 0,
10580 "T_optional_elements_05", HFILL
}},
10581 { &hf_tetra_type2_parameters_03
,
10582 { "type2-parameters", "tetra.type2_parameters_element",
10583 FT_NONE
, BASE_NONE
, NULL
, 0,
10584 "T_type2_parameters_03", HFILL
}},
10585 { &hf_tetra_ssi_02
,
10586 { "ssi", "tetra.ssi",
10587 FT_UINT32
, BASE_DEC
, VALS(tetra_T_ssi_vals
), 0,
10589 { &hf_tetra_ssi_03
,
10590 { "ssi", "tetra.ssi",
10591 FT_BYTES
, BASE_NONE
, NULL
, 0,
10592 "OCTET_STRING_SIZE_3", HFILL
}},
10593 { &hf_tetra_address_extension
,
10594 { "address-extension", "tetra.address_extension",
10595 FT_UINT32
, BASE_DEC
, VALS(tetra_T_address_extension_vals
), 0,
10597 { &hf_tetra_address_extension_01
,
10598 { "address-extension", "tetra.address_extension",
10599 FT_BYTES
, BASE_NONE
, NULL
, 0,
10600 "OCTET_STRING_SIZE_3", HFILL
}},
10601 { &hf_tetra_subscriber_class_01
,
10602 { "subscriber-class", "tetra.subscriber_class",
10603 FT_UINT32
, BASE_DEC
, VALS(tetra_T_subscriber_class_vals
), 0,
10605 { &hf_tetra_energy_saving_mode
,
10606 { "energy-saving-mode", "tetra.energy_saving_mode",
10607 FT_UINT32
, BASE_DEC
, VALS(tetra_T_energy_saving_mode_vals
), 0,
10609 { &hf_tetra_energy_saving_mode_01
,
10610 { "energy-saving-mode", "tetra.energy_saving_mode",
10611 FT_UINT32
, BASE_DEC
, NULL
, 0,
10612 "INTEGER_0_7", HFILL
}},
10613 { &hf_tetra_scch_info
,
10614 { "scch-info", "tetra.scch_info",
10615 FT_UINT32
, BASE_DEC
, VALS(tetra_T_scch_info_vals
), 0,
10617 { &hf_tetra_scch_info_01
,
10618 { "scch-info", "tetra.scch_info",
10619 FT_UINT32
, BASE_DEC
, NULL
, 0,
10620 "INTEGER_0_16383", HFILL
}},
10622 { "type3", "tetra.type3",
10623 FT_UINT32
, BASE_DEC
, VALS(tetra_T_type3_vals
), 0,
10625 { &hf_tetra_no_type3
,
10626 { "no-type3", "tetra.no_type3_element",
10627 FT_NONE
, BASE_NONE
, NULL
, 0,
10629 { &hf_tetra_type3_elements
,
10630 { "type3-elements", "tetra.type3_elements_element",
10631 FT_NONE
, BASE_NONE
, NULL
, 0,
10633 { &hf_tetra_type2_existance
,
10634 { "type2-existance", "tetra.type2_existance",
10635 FT_BOOLEAN
, BASE_NONE
, NULL
, 0,
10636 "BOOLEAN", HFILL
}},
10637 { &hf_tetra_type3_identifier
,
10638 { "type3-identifier", "tetra.type3_identifier",
10639 FT_UINT32
, BASE_DEC
, VALS(tetra_TYPE3_IDENTIFIER_vals
), 0,
10641 { &hf_tetra_new_ra
,
10642 { "new-ra", "tetra.new_ra",
10643 FT_UINT32
, BASE_DEC
, VALS(tetra_T_new_ra_vals
), 0,
10645 { &hf_tetra_new_ra_01
,
10646 { "new-ra", "tetra.new_ra",
10647 FT_UINT32
, BASE_DEC
, NULL
, 0,
10648 "INTEGER_0_3", HFILL
}},
10649 { &hf_tetra_group_identity_location_accept
,
10650 { "group-identity-location-accept", "tetra.group_identity_location_accept",
10651 FT_UINT32
, BASE_DEC
, VALS(tetra_T_group_identity_location_accept_vals
), 0,
10653 { &hf_tetra_group_identity_location_accept_01
,
10654 { "group-identity-location-accept", "tetra.group_identity_location_accept",
10655 FT_UINT32
, BASE_DEC
, NULL
, 0,
10656 "INTEGER_0_3", HFILL
}},
10657 { &hf_tetra_group_predefined_lifetime
,
10658 { "group-predefined-lifetime", "tetra.group_predefined_lifetime",
10659 FT_UINT32
, BASE_DEC
, VALS(tetra_T_group_predefined_lifetime_vals
), 0,
10661 { &hf_tetra_group_predefined_lifetime_01
,
10662 { "group-predefined-lifetime", "tetra.group_predefined_lifetime",
10663 FT_UINT32
, BASE_DEC
, NULL
, 0,
10664 "INTEGER_0_3", HFILL
}},
10665 { &hf_tetra_group_identity_downlink
,
10666 { "group-identity-downlink", "tetra.group_identity_downlink",
10667 FT_UINT32
, BASE_DEC
, VALS(tetra_T_group_identity_downlink_vals
), 0,
10669 { &hf_tetra_group_identity_downlink_01
,
10670 { "group-identity-downlink", "tetra.group_identity_downlink",
10671 FT_UINT32
, BASE_DEC
, NULL
, 0,
10672 "INTEGER_0_15", HFILL
}},
10673 { &hf_tetra_proprietary
,
10674 { "proprietary", "tetra.proprietary",
10675 FT_UINT32
, BASE_DEC
, VALS(tetra_T_proprietary_vals
), 0,
10677 { &hf_tetra_proprietary_01
,
10678 { "proprietary", "tetra.proprietary",
10679 FT_UINT32
, BASE_DEC
, NULL
, 0,
10680 "INTEGER_0_7", HFILL
}},
10681 { &hf_tetra_reject_cause
,
10682 { "reject-cause", "tetra.reject_cause",
10683 FT_UINT32
, BASE_DEC
, NULL
, 0,
10684 "INTEGER_0_31", HFILL
}},
10685 { &hf_tetra_cipher_control
,
10686 { "cipher-control", "tetra.cipher_control",
10687 FT_BOOLEAN
, BASE_NONE
, NULL
, 0,
10688 "BOOLEAN", HFILL
}},
10689 { &hf_tetra_status_uplink
,
10690 { "status-uplink", "tetra.status_uplink",
10691 FT_UINT32
, BASE_DEC
, NULL
, 0,
10692 "INTEGER_0_63", HFILL
}},
10693 { &hf_tetra_scanning_on_off
,
10694 { "scanning-on-off", "tetra.scanning_on_off",
10695 FT_UINT32
, BASE_DEC
, VALS(tetra_T_scanning_on_off_vals
), 0,
10697 { &hf_tetra_status_downlink
,
10698 { "status-downlink", "tetra.status_downlink",
10699 FT_UINT32
, BASE_DEC
, NULL
, 0,
10700 "INTEGER_0_63", HFILL
}},
10701 { &hf_tetra_u_Alert
,
10702 { "u-Alert", "tetra.u_Alert_element",
10703 FT_NONE
, BASE_NONE
, NULL
, 0,
10705 { &hf_tetra_reserved1
,
10706 { "reserved1", "tetra.reserved1_element",
10707 FT_NONE
, BASE_NONE
, NULL
, 0,
10709 { &hf_tetra_u_Connect
,
10710 { "u-Connect", "tetra.u_Connect_element",
10711 FT_NONE
, BASE_NONE
, NULL
, 0,
10713 { &hf_tetra_reserved2
,
10714 { "reserved2", "tetra.reserved2_element",
10715 FT_NONE
, BASE_NONE
, NULL
, 0,
10717 { &hf_tetra_u_Disconnect
,
10718 { "u-Disconnect", "tetra.u_Disconnect_element",
10719 FT_NONE
, BASE_NONE
, NULL
, 0,
10721 { &hf_tetra_u_Info
,
10722 { "u-Info", "tetra.u_Info_element",
10723 FT_NONE
, BASE_NONE
, NULL
, 0,
10725 { &hf_tetra_u_Release
,
10726 { "u-Release", "tetra.u_Release_element",
10727 FT_NONE
, BASE_NONE
, NULL
, 0,
10729 { &hf_tetra_u_Setup
,
10730 { "u-Setup", "tetra.u_Setup_element",
10731 FT_NONE
, BASE_NONE
, NULL
, 0,
10733 { &hf_tetra_u_Status
,
10734 { "u-Status", "tetra.u_Status_element",
10735 FT_NONE
, BASE_NONE
, NULL
, 0,
10737 { &hf_tetra_u_Tx_Ceased
,
10738 { "u-Tx-Ceased", "tetra.u_Tx_Ceased_element",
10739 FT_NONE
, BASE_NONE
, NULL
, 0,
10741 { &hf_tetra_u_Tx_Demand
,
10742 { "u-Tx-Demand", "tetra.u_Tx_Demand_element",
10743 FT_NONE
, BASE_NONE
, NULL
, 0,
10745 { &hf_tetra_reserved3
,
10746 { "reserved3", "tetra.reserved3_element",
10747 FT_NONE
, BASE_NONE
, NULL
, 0,
10749 { &hf_tetra_reserved4
,
10750 { "reserved4", "tetra.reserved4_element",
10751 FT_NONE
, BASE_NONE
, NULL
, 0,
10753 { &hf_tetra_reserved5
,
10754 { "reserved5", "tetra.reserved5_element",
10755 FT_NONE
, BASE_NONE
, NULL
, 0,
10757 { &hf_tetra_u_Call_Restore
,
10758 { "u-Call-Restore", "tetra.u_Call_Restore_element",
10759 FT_NONE
, BASE_NONE
, NULL
, 0,
10761 { &hf_tetra_u_SDS_Data
,
10762 { "u-SDS-Data", "tetra.u_SDS_Data_element",
10763 FT_NONE
, BASE_NONE
, NULL
, 0,
10765 { &hf_tetra_u_Facility
,
10766 { "u-Facility", "tetra.u_Facility_element",
10767 FT_NONE
, BASE_NONE
, NULL
, 0,
10769 { &hf_tetra_call_identifier
,
10770 { "call-identifier", "tetra.call_identifier",
10771 FT_UINT32
, BASE_DEC
, NULL
, 0,
10772 "INTEGER_0_16383", HFILL
}},
10773 { &hf_tetra_disconnect_cause
,
10774 { "disconnect-cause", "tetra.disconnect_cause",
10775 FT_UINT32
, BASE_DEC
, NULL
, 0,
10776 "INTEGER_0_31", HFILL
}},
10777 { &hf_tetra_area_selection
,
10778 { "area-selection", "tetra.area_selection",
10779 FT_UINT32
, BASE_DEC
, NULL
, 0,
10780 "INTEGER_0_15", HFILL
}},
10781 { &hf_tetra_called_party_type_identifier
,
10782 { "called-party-type-identifier", "tetra.called_party_type_identifier",
10783 FT_UINT32
, BASE_DEC
, VALS(tetra_T_called_party_type_identifier_vals
), 0,
10786 { "sna", "tetra.sna",
10787 FT_UINT32
, BASE_DEC
, NULL
, 0,
10788 "INTEGER_0_255", HFILL
}},
10789 { &hf_tetra_ssi_extension
,
10790 { "ssi-extension", "tetra.ssi_extension",
10791 FT_BYTES
, BASE_NONE
, NULL
, 0,
10792 "BIT_STRING_SIZE_48", HFILL
}},
10793 { &hf_tetra_short_data_type_identifier
,
10794 { "short-data-type-identifier", "tetra.short_data_type_identifier",
10795 FT_UINT32
, BASE_DEC
, VALS(tetra_T_short_data_type_identifier_vals
), 0,
10796 "T_short_data_type_identifier", HFILL
}},
10797 { &hf_tetra_data_1
,
10798 { "data-1", "tetra.data_1",
10799 FT_UINT32
, BASE_DEC
, NULL
, 0,
10800 "INTEGER_0_65535", HFILL
}},
10801 { &hf_tetra_data_2
,
10802 { "data-2", "tetra.data_2",
10803 FT_BYTES
, BASE_NONE
, NULL
, 0,
10804 "OCTET_STRING_SIZE_4", HFILL
}},
10805 { &hf_tetra_data_3
,
10806 { "data-3", "tetra.data_3",
10807 FT_BYTES
, BASE_NONE
, NULL
, 0,
10808 "BIT_STRING_SIZE_64", HFILL
}},
10809 { &hf_tetra_length_indicator_data_4
,
10810 { "length-indicator-data-4", "tetra.length_indicator_data_4",
10811 FT_UINT32
, BASE_DEC
, NULL
, 0,
10812 "INTEGER_0_4194304", HFILL
}},
10813 { &hf_tetra_called_party_type_identifier_01
,
10814 { "called-party-type-identifier", "tetra.called_party_type_identifier",
10815 FT_UINT32
, BASE_DEC
, VALS(tetra_T_called_party_type_identifier_01_vals
), 0,
10816 "T_called_party_type_identifier_01", HFILL
}},
10817 { &hf_tetra_short_number_address
,
10818 { "short-number-address", "tetra.short_number_address",
10819 FT_UINT32
, BASE_DEC
, NULL
, 0,
10820 "INTEGER_0_255", HFILL
}},
10821 { &hf_tetra_called_ssi_called_extension
,
10822 { "called-ssi-called-extension", "tetra.called_ssi_called_extension",
10823 FT_BYTES
, BASE_NONE
, NULL
, 0,
10824 "BIT_STRING_SIZE_48", HFILL
}},
10825 { &hf_tetra_pre_coded_status
,
10826 { "pre-coded-status", "tetra.pre_coded_status",
10827 FT_UINT32
, BASE_DEC
, NULL
, 0,
10828 "INTEGER_0_65535", HFILL
}},
10829 { &hf_tetra_call_id
,
10830 { "call-id", "tetra.call_id",
10831 FT_UINT32
, BASE_DEC
, NULL
, 0,
10832 "INTEGER_0_16383", HFILL
}},
10833 { &hf_tetra_poll_response
,
10834 { "poll-response", "tetra.poll_response",
10835 FT_UINT32
, BASE_DEC
, NULL
, 0,
10836 "INTEGER_0_1", HFILL
}},
10837 { &hf_tetra_d_Alert
,
10838 { "d-Alert", "tetra.d_Alert_element",
10839 FT_NONE
, BASE_NONE
, NULL
, 0,
10841 { &hf_tetra_d_Call_Proceeding
,
10842 { "d-Call-Proceeding", "tetra.d_Call_Proceeding_element",
10843 FT_NONE
, BASE_NONE
, NULL
, 0,
10845 { &hf_tetra_d_Connect
,
10846 { "d-Connect", "tetra.d_Connect_element",
10847 FT_NONE
, BASE_NONE
, NULL
, 0,
10849 { &hf_tetra_d_Connect_Ack
,
10850 { "d-Connect-Ack", "tetra.d_Connect_Ack_element",
10851 FT_NONE
, BASE_NONE
, NULL
, 0,
10853 { &hf_tetra_d_Disconnect
,
10854 { "d-Disconnect", "tetra.d_Disconnect_element",
10855 FT_NONE
, BASE_NONE
, NULL
, 0,
10857 { &hf_tetra_d_Info
,
10858 { "d-Info", "tetra.d_Info_element",
10859 FT_NONE
, BASE_NONE
, NULL
, 0,
10861 { &hf_tetra_d_Release
,
10862 { "d-Release", "tetra.d_Release_element",
10863 FT_NONE
, BASE_NONE
, NULL
, 0,
10865 { &hf_tetra_d_Setup
,
10866 { "d-Setup", "tetra.d_Setup_element",
10867 FT_NONE
, BASE_NONE
, NULL
, 0,
10869 { &hf_tetra_d_Status
,
10870 { "d-Status", "tetra.d_Status_element",
10871 FT_NONE
, BASE_NONE
, NULL
, 0,
10873 { &hf_tetra_d_Tx_Ceased
,
10874 { "d-Tx-Ceased", "tetra.d_Tx_Ceased_element",
10875 FT_NONE
, BASE_NONE
, NULL
, 0,
10877 { &hf_tetra_d_Tx_Continue
,
10878 { "d-Tx-Continue", "tetra.d_Tx_Continue_element",
10879 FT_NONE
, BASE_NONE
, NULL
, 0,
10881 { &hf_tetra_d_Tx_Granted
,
10882 { "d-Tx-Granted", "tetra.d_Tx_Granted_element",
10883 FT_NONE
, BASE_NONE
, NULL
, 0,
10885 { &hf_tetra_d_Tx_Wait
,
10886 { "d-Tx-Wait", "tetra.d_Tx_Wait_element",
10887 FT_NONE
, BASE_NONE
, NULL
, 0,
10889 { &hf_tetra_d_Tx_Interrupt
,
10890 { "d-Tx-Interrupt", "tetra.d_Tx_Interrupt_element",
10891 FT_NONE
, BASE_NONE
, NULL
, 0,
10893 { &hf_tetra_d_Call_Restore
,
10894 { "d-Call-Restore", "tetra.d_Call_Restore_element",
10895 FT_NONE
, BASE_NONE
, NULL
, 0,
10897 { &hf_tetra_d_SDS_Data
,
10898 { "d-SDS-Data", "tetra.d_SDS_Data_element",
10899 FT_NONE
, BASE_NONE
, NULL
, 0,
10901 { &hf_tetra_d_Facility
,
10902 { "d-Facility", "tetra.d_Facility_element",
10903 FT_NONE
, BASE_NONE
, NULL
, 0,
10905 { &hf_tetra_calling_party_type_identifier
,
10906 { "calling-party-type-identifier", "tetra.calling_party_type_identifier",
10907 FT_UINT32
, BASE_DEC
, VALS(tetra_T_calling_party_type_identifier_vals
), 0,
10909 { &hf_tetra_ssi_extension_01
,
10910 { "ssi-extension", "tetra.ssi_extension",
10911 FT_BYTES
, BASE_NONE
, NULL
, 0,
10912 "OCTET_STRING_SIZE_6", HFILL
}},
10913 { &hf_tetra_short_data_type_identifier_01
,
10914 { "short-data-type-identifier", "tetra.short_data_type_identifier",
10915 FT_UINT32
, BASE_DEC
, VALS(tetra_T_short_data_type_identifier_01_vals
), 0,
10916 "T_short_data_type_identifier_01", HFILL
}},
10917 { &hf_tetra_data_3_01
,
10918 { "data-3", "tetra.data_3",
10919 FT_BYTES
, BASE_NONE
, NULL
, 0,
10920 "OCTET_STRING_SIZE_8", HFILL
}},
10921 { &hf_tetra_calling_party_type_identifier_01
,
10922 { "calling-party-type-identifier", "tetra.calling_party_type_identifier",
10923 FT_UINT32
, BASE_DEC
, VALS(tetra_T_calling_party_type_identifier_01_vals
), 0,
10924 "T_calling_party_type_identifier_01", HFILL
}},
10925 { &hf_tetra_calling_party_address_SSI
,
10926 { "calling-party-address-SSI", "tetra.calling_party_address_SSI",
10927 FT_UINT32
, BASE_DEC
, NULL
, 0,
10928 "INTEGER_0_16777215", HFILL
}},
10929 { &hf_tetra_reset_call_time_out_timer
,
10930 { "reset-call-time-out-timer", "tetra.reset_call_time_out_timer",
10931 FT_UINT32
, BASE_DEC
, NULL
, 0,
10932 "INTEGER_0_1", HFILL
}},
10933 { &hf_tetra_poll_request
,
10934 { "poll-request", "tetra.poll_request",
10935 FT_UINT32
, BASE_DEC
, NULL
, 0,
10936 "INTEGER_0_1", HFILL
}},
10937 { &hf_tetra_transmission_request_permission
,
10938 { "transmission-request-permission", "tetra.transmission_request_permission",
10939 FT_UINT32
, BASE_DEC
, NULL
, 0,
10940 "INTEGER_0_1", HFILL
}},
10941 { &hf_tetra_continue
,
10942 { "continue", "tetra.continue",
10943 FT_UINT32
, BASE_DEC
, NULL
, 0,
10944 "INTEGER_0_1", HFILL
}},
10945 { &hf_tetra_request_to_append_LA
,
10946 { "request-to-append-LA", "tetra.request_to_append_LA",
10947 FT_BOOLEAN
, BASE_NONE
, NULL
, 0,
10948 "BOOLEAN", HFILL
}},
10949 { &hf_tetra_cipher_control_01
,
10950 { "cipher-control", "tetra.cipher_control",
10951 FT_UINT32
, BASE_DEC
, VALS(tetra_T_cipher_control_vals
), 0,
10953 { &hf_tetra_no_cipher
,
10954 { "no-cipher", "tetra.no_cipher_element",
10955 FT_NONE
, BASE_NONE
, NULL
, 0,
10957 { &hf_tetra_ciphering_parameters
,
10958 { "ciphering-parameters", "tetra.ciphering_parameters",
10959 FT_UINT32
, BASE_DEC
, NULL
, 0,
10960 "INTEGER_0_1023", HFILL
}},
10961 { &hf_tetra_optional_elements_06
,
10962 { "optional-elements", "tetra.optional_elements",
10963 FT_UINT32
, BASE_DEC
, VALS(tetra_T_optional_elements_06_vals
), 0,
10964 "T_optional_elements_06", HFILL
}},
10965 { &hf_tetra_type2_parameters_04
,
10966 { "type2-parameters", "tetra.type2_parameters_element",
10967 FT_NONE
, BASE_NONE
, NULL
, 0,
10968 "T_type2_parameters_04", HFILL
}},
10969 { &hf_tetra_class_of_MS
,
10970 { "class-of-MS", "tetra.class_of_MS",
10971 FT_UINT32
, BASE_DEC
, VALS(tetra_T_class_of_MS_vals
), 0,
10973 { &hf_tetra_class_of_MS_01
,
10974 { "class-of-MS", "tetra.class_of_MS",
10975 FT_UINT32
, BASE_DEC
, NULL
, 0,
10976 "INTEGER_0_16777215", HFILL
}},
10977 { &hf_tetra_energy_saving_mode_02
,
10978 { "energy-saving-mode", "tetra.energy_saving_mode",
10979 FT_UINT32
, BASE_DEC
, VALS(tetra_T_energy_saving_mode_01_vals
), 0,
10980 "T_energy_saving_mode_01", HFILL
}},
10981 { &hf_tetra_la_information
,
10982 { "la-information", "tetra.la_information",
10983 FT_UINT32
, BASE_DEC
, VALS(tetra_T_la_information_vals
), 0,
10985 { &hf_tetra_la_information_01
,
10986 { "la-information", "tetra.la_information",
10987 FT_UINT32
, BASE_DEC
, NULL
, 0,
10988 "INTEGER_0_16383", HFILL
}},
10989 { &hf_tetra_ssi_04
,
10990 { "ssi", "tetra.ssi",
10991 FT_UINT32
, BASE_DEC
, VALS(tetra_T_ssi_01_vals
), 0,
10992 "T_ssi_01", HFILL
}},
10993 { &hf_tetra_address_extension_02
,
10994 { "address-extension", "tetra.address_extension",
10995 FT_UINT32
, BASE_DEC
, VALS(tetra_T_address_extension_01_vals
), 0,
10996 "T_address_extension_01", HFILL
}},
10997 { &hf_tetra_type3_01
,
10998 { "type3", "tetra.type3",
10999 FT_UINT32
, BASE_DEC
, VALS(tetra_T_type3_01_vals
), 0,
11000 "T_type3_01", HFILL
}},
11001 { &hf_tetra_type3_elements_01
,
11002 { "type3-elements", "tetra.type3_elements_element",
11003 FT_NONE
, BASE_NONE
, NULL
, 0,
11004 "T_type3_elements_01", HFILL
}},
11005 { &hf_tetra_group_identity_location_demand
,
11006 { "group-identity-location-demand", "tetra.group_identity_location_demand",
11007 FT_UINT32
, BASE_DEC
, VALS(tetra_T_group_identity_location_demand_vals
), 0,
11009 { &hf_tetra_group_identity_location_demand_01
,
11010 { "group-identity-location-demand", "tetra.group_identity_location_demand",
11011 FT_UINT32
, BASE_DEC
, NULL
, 0,
11012 "INTEGER_0_3", HFILL
}},
11013 { &hf_tetra_group_report_response
,
11014 { "group-report-response", "tetra.group_report_response",
11015 FT_UINT32
, BASE_DEC
, VALS(tetra_T_group_report_response_vals
), 0,
11016 "T_group_report_response", HFILL
}},
11017 { &hf_tetra_group_report_response_01
,
11018 { "group-report-response", "tetra.group_report_response",
11019 FT_BOOLEAN
, BASE_NONE
, NULL
, 0,
11020 "BOOLEAN", HFILL
}},
11021 { &hf_tetra_group_identity_uplink
,
11022 { "group-identity-uplink", "tetra.group_identity_uplink",
11023 FT_UINT32
, BASE_DEC
, VALS(tetra_T_group_identity_uplink_vals
), 0,
11025 { &hf_tetra_group_identity_uplink_01
,
11026 { "group-identity-uplink", "tetra.group_identity_uplink",
11027 FT_UINT32
, BASE_DEC
, NULL
, 0,
11028 "INTEGER_0_15", HFILL
}},
11029 { &hf_tetra_proprietary_02
,
11030 { "proprietary", "tetra.proprietary",
11031 FT_UINT32
, BASE_DEC
, VALS(tetra_T_proprietary_01_vals
), 0,
11032 "T_proprietary_01", HFILL
}},
11033 { &hf_tetra_group_identity_report
,
11034 { "group-identity-report", "tetra.group_identity_report",
11035 FT_BOOLEAN
, BASE_NONE
, NULL
, 0,
11036 "BOOLEAN", HFILL
}},
11037 { &hf_tetra_group_identity_attach_detach_mode
,
11038 { "group-identity-attach-detach-mode", "tetra.group_identity_attach_detach_mode",
11039 FT_BOOLEAN
, BASE_NONE
, NULL
, 0,
11040 "BOOLEAN", HFILL
}},
11041 { &hf_tetra_optional_elements_07
,
11042 { "optional-elements", "tetra.optional_elements",
11043 FT_UINT32
, BASE_DEC
, VALS(tetra_T_optional_elements_07_vals
), 0,
11044 "T_optional_elements_07", HFILL
}},
11045 { &hf_tetra_type2_element
,
11046 { "type2-element", "tetra.type2_element_element",
11047 FT_NONE
, BASE_NONE
, NULL
, 0,
11049 { &hf_tetra_type3_02
,
11050 { "type3", "tetra.type3",
11051 FT_UINT32
, BASE_DEC
, VALS(tetra_T_type3_02_vals
), 0,
11052 "T_type3_02", HFILL
}},
11053 { &hf_tetra_type3_elements_02
,
11054 { "type3-elements", "tetra.type3_elements_element",
11055 FT_NONE
, BASE_NONE
, NULL
, 0,
11056 "T_type3_elements_02", HFILL
}},
11057 { &hf_tetra_length
,
11058 { "length", "tetra.length",
11059 FT_UINT32
, BASE_DEC
, NULL
, 0,
11060 "INTEGER_0_2047", HFILL
}},
11061 { &hf_tetra_repeat_num
,
11062 { "repeat-num", "tetra.repeat_num",
11063 FT_UINT32
, BASE_DEC
, NULL
, 0,
11064 "INTEGER_0_63", HFILL
}},
11065 { &hf_tetra_group_identity_uplink_02
,
11066 { "group-identity-uplink", "tetra.group_identity_uplink_element",
11067 FT_NONE
, BASE_NONE
, NULL
, 0,
11069 { &hf_tetra_group_identity_ack_type
,
11070 { "group-identity-ack-type", "tetra.group_identity_ack_type",
11071 FT_BOOLEAN
, BASE_NONE
, NULL
, 0,
11072 "BOOLEAN", HFILL
}},
11073 { &hf_tetra_optional_elements_08
,
11074 { "optional-elements", "tetra.optional_elements",
11075 FT_UINT32
, BASE_DEC
, VALS(tetra_T_optional_elements_08_vals
), 0,
11076 "T_optional_elements_08", HFILL
}},
11077 { &hf_tetra_type2_element_01
,
11078 { "type2-element", "tetra.type2_element_element",
11079 FT_NONE
, BASE_NONE
, NULL
, 0,
11080 "T_type2_element_01", HFILL
}},
11081 { &hf_tetra_type3_03
,
11082 { "type3", "tetra.type3",
11083 FT_UINT32
, BASE_DEC
, VALS(tetra_T_type3_03_vals
), 0,
11084 "T_type3_03", HFILL
}},
11085 { &hf_tetra_type3_elements_03
,
11086 { "type3-elements", "tetra.type3_elements_element",
11087 FT_NONE
, BASE_NONE
, NULL
, 0,
11088 "T_type3_elements_03", HFILL
}},
11089 { &hf_tetra_hook_method_selection
,
11090 { "hook-method-selection", "tetra.hook_method_selection",
11091 FT_BOOLEAN
, BASE_NONE
, NULL
, 0,
11092 "BOOLEAN", HFILL
}},
11093 { &hf_tetra_simple_duplex_selection
,
11094 { "simple-duplex-selection", "tetra.simple_duplex_selection",
11095 FT_UINT32
, BASE_DEC
, VALS(tetra_T_simple_duplex_selection_vals
), 0,
11097 { &hf_tetra_basic_service_information
,
11098 { "basic-service-information", "tetra.basic_service_information_element",
11099 FT_NONE
, BASE_NONE
, NULL
, 0,
11101 { &hf_tetra_request_transmit_send_data
,
11102 { "request-transmit-send-data", "tetra.request_transmit_send_data",
11103 FT_UINT32
, BASE_DEC
, NULL
, 0,
11104 "INTEGER_0_1", HFILL
}},
11105 { &hf_tetra_call_priority
,
11106 { "call-priority", "tetra.call_priority",
11107 FT_UINT32
, BASE_DEC
, NULL
, 0,
11108 "INTEGER_0_15", HFILL
}},
11109 { &hf_tetra_clir_control
,
11110 { "clir-control", "tetra.clir_control",
11111 FT_UINT32
, BASE_DEC
, NULL
, 0,
11112 "INTEGER_0_3", HFILL
}},
11113 { &hf_tetra_called_party_address
,
11114 { "called-party-address", "tetra.called_party_address",
11115 FT_UINT32
, BASE_DEC
, VALS(tetra_Calling_party_address_type_vals
), 0,
11116 "Called_party_address_type", HFILL
}},
11117 { &hf_tetra_optional_elements_09
,
11118 { "optional-elements", "tetra.optional_elements",
11119 FT_UINT32
, BASE_DEC
, VALS(tetra_T_optional_elements_09_vals
), 0,
11120 "T_optional_elements_09", HFILL
}},
11121 { &hf_tetra_type2_parameters_05
,
11122 { "type2-parameters", "tetra.type2_parameters_element",
11123 FT_NONE
, BASE_NONE
, NULL
, 0,
11124 "T_type2_parameters_05", HFILL
}},
11125 { &hf_tetra_external_subscriber_number
,
11126 { "external-subscriber-number", "tetra.external_subscriber_number",
11127 FT_UINT32
, BASE_DEC
, VALS(tetra_T_external_subscriber_number_vals
), 0,
11129 { &hf_tetra_external_subscriber_number_01
,
11130 { "external-subscriber-number", "tetra.external_subscriber_number",
11131 FT_UINT32
, BASE_DEC
, NULL
, 0,
11132 "INTEGER_0_31", HFILL
}},
11134 { "prop", "tetra.prop",
11135 FT_UINT32
, BASE_DEC
, VALS(tetra_T_prop_vals
), 0,
11137 { &hf_tetra_prop_01
,
11138 { "prop", "tetra.prop_element",
11139 FT_NONE
, BASE_NONE
, NULL
, 0,
11140 "Proprietary", HFILL
}},
11141 { &hf_tetra_circuit_mode
,
11142 { "circuit-mode", "tetra.circuit_mode",
11143 FT_UINT32
, BASE_DEC
, VALS(tetra_CIRCUIT_vals
), 0,
11144 "CIRCUIT", HFILL
}},
11145 { &hf_tetra_encryption
,
11146 { "encryption", "tetra.encryption",
11147 FT_UINT32
, BASE_DEC
, NULL
, 0,
11148 "INTEGER_0_1", HFILL
}},
11149 { &hf_tetra_communication
,
11150 { "communication", "tetra.communication",
11151 FT_UINT32
, BASE_DEC
, NULL
, 0,
11152 "INTEGER_0_3", HFILL
}},
11153 { &hf_tetra_slots_or_speech
,
11154 { "slots-or-speech", "tetra.slots_or_speech",
11155 FT_UINT32
, BASE_DEC
, NULL
, 0,
11156 "INTEGER_0_3", HFILL
}},
11157 { &hf_tetra_call_identifier_01
,
11158 { "call-identifier", "tetra.call_identifier",
11159 FT_UINT32
, BASE_DEC
, NULL
, 0,
11160 "INTEGER_0_1023", HFILL
}},
11161 { &hf_tetra_simplex_duplex_selection
,
11162 { "simplex-duplex-selection", "tetra.simplex_duplex_selection",
11163 FT_UINT32
, BASE_DEC
, VALS(tetra_T_simplex_duplex_selection_vals
), 0,
11165 { &hf_tetra_optional_elements_10
,
11166 { "optional-elements", "tetra.optional_elements",
11167 FT_UINT32
, BASE_DEC
, VALS(tetra_T_optional_elements_10_vals
), 0,
11168 "T_optional_elements_10", HFILL
}},
11169 { &hf_tetra_type2_parameters_06
,
11170 { "type2-parameters", "tetra.type2_parameters_element",
11171 FT_NONE
, BASE_NONE
, NULL
, 0,
11172 "T_type2_parameters_06", HFILL
}},
11173 { &hf_tetra_basic_service_information_01
,
11174 { "basic-service-information", "tetra.basic_service_information",
11175 FT_UINT32
, BASE_DEC
, VALS(tetra_T_basic_service_information_vals
), 0,
11177 { &hf_tetra_prop_02
,
11178 { "prop", "tetra.prop",
11179 FT_UINT32
, BASE_DEC
, VALS(tetra_T_prop_01_vals
), 0,
11180 "T_prop_01", HFILL
}},
11181 { &hf_tetra_simplex_duplex_selection_01
,
11182 { "simplex-duplex-selection", "tetra.simplex_duplex_selection",
11183 FT_UINT32
, BASE_DEC
, VALS(tetra_T_simplex_duplex_selection_01_vals
), 0,
11184 "T_simplex_duplex_selection_01", HFILL
}},
11185 { &hf_tetra_optional_elements_11
,
11186 { "optional-elements", "tetra.optional_elements",
11187 FT_UINT32
, BASE_DEC
, VALS(tetra_T_optional_elements_11_vals
), 0,
11188 "T_optional_elements_11", HFILL
}},
11189 { &hf_tetra_type2_parameters_07
,
11190 { "type2-parameters", "tetra.type2_parameters_element",
11191 FT_NONE
, BASE_NONE
, NULL
, 0,
11192 "T_type2_parameters_07", HFILL
}},
11193 { &hf_tetra_basic_service_information_02
,
11194 { "basic-service-information", "tetra.basic_service_information",
11195 FT_UINT32
, BASE_DEC
, VALS(tetra_T_basic_service_information_01_vals
), 0,
11196 "T_basic_service_information_01", HFILL
}},
11197 { &hf_tetra_prop_03
,
11198 { "prop", "tetra.prop",
11199 FT_UINT32
, BASE_DEC
, VALS(tetra_T_prop_02_vals
), 0,
11200 "T_prop_02", HFILL
}},
11201 { &hf_tetra_optional_elements_12
,
11202 { "optional-elements", "tetra.optional_elements",
11203 FT_UINT32
, BASE_DEC
, VALS(tetra_T_optional_elements_12_vals
), 0,
11204 "T_optional_elements_12", HFILL
}},
11205 { &hf_tetra_type2_parameters_08
,
11206 { "type2-parameters", "tetra.type2_parameters_element",
11207 FT_NONE
, BASE_NONE
, NULL
, 0,
11208 "T_type2_parameters_08", HFILL
}},
11209 { &hf_tetra_prop_04
,
11210 { "prop", "tetra.prop",
11211 FT_UINT32
, BASE_DEC
, VALS(tetra_T_prop_03_vals
), 0,
11212 "T_prop_03", HFILL
}},
11213 { &hf_tetra_tx_demand_priority
,
11214 { "tx-demand-priority", "tetra.tx_demand_priority",
11215 FT_UINT32
, BASE_DEC
, NULL
, 0,
11216 "INTEGER_0_3", HFILL
}},
11217 { &hf_tetra_encryption_control
,
11218 { "encryption-control", "tetra.encryption_control",
11219 FT_UINT32
, BASE_DEC
, NULL
, 0,
11220 "INTEGER_0_1", HFILL
}},
11221 { &hf_tetra_optional_elements_13
,
11222 { "optional-elements", "tetra.optional_elements",
11223 FT_UINT32
, BASE_DEC
, VALS(tetra_T_optional_elements_13_vals
), 0,
11224 "T_optional_elements_13", HFILL
}},
11225 { &hf_tetra_type2_parameters_09
,
11226 { "type2-parameters", "tetra.type2_parameters_element",
11227 FT_NONE
, BASE_NONE
, NULL
, 0,
11228 "T_type2_parameters_09", HFILL
}},
11229 { &hf_tetra_prop_05
,
11230 { "prop", "tetra.prop",
11231 FT_UINT32
, BASE_DEC
, VALS(tetra_T_prop_04_vals
), 0,
11232 "T_prop_04", HFILL
}},
11233 { &hf_tetra_optional_elements_14
,
11234 { "optional-elements", "tetra.optional_elements",
11235 FT_UINT32
, BASE_DEC
, VALS(tetra_T_optional_elements_14_vals
), 0,
11236 "T_optional_elements_14", HFILL
}},
11237 { &hf_tetra_type2_parameters_10
,
11238 { "type2-parameters", "tetra.type2_parameters_element",
11239 FT_NONE
, BASE_NONE
, NULL
, 0,
11240 "T_type2_parameters_10", HFILL
}},
11241 { &hf_tetra_prop_06
,
11242 { "prop", "tetra.prop",
11243 FT_UINT32
, BASE_DEC
, VALS(tetra_T_prop_05_vals
), 0,
11244 "T_prop_05", HFILL
}},
11245 { &hf_tetra_request_to_transmit_send_data
,
11246 { "request-to-transmit-send-data", "tetra.request_to_transmit_send_data",
11247 FT_UINT32
, BASE_DEC
, NULL
, 0,
11248 "INTEGER_0_1", HFILL
}},
11249 { &hf_tetra_other_party_address
,
11250 { "other-party-address", "tetra.other_party_address",
11251 FT_UINT32
, BASE_DEC
, VALS(tetra_Calling_party_address_type_vals
), 0,
11252 "Other_party_address_type", HFILL
}},
11253 { &hf_tetra_optional_elements_15
,
11254 { "optional-elements", "tetra.optional_elements",
11255 FT_UINT32
, BASE_DEC
, VALS(tetra_T_optional_elements_15_vals
), 0,
11256 "T_optional_elements_15", HFILL
}},
11257 { &hf_tetra_type2_parameters_11
,
11258 { "type2-parameters", "tetra.type2_parameters_element",
11259 FT_NONE
, BASE_NONE
, NULL
, 0,
11260 "T_type2_parameters_11", HFILL
}},
11261 { &hf_tetra_prop_07
,
11262 { "prop", "tetra.prop",
11263 FT_UINT32
, BASE_DEC
, VALS(tetra_T_prop_06_vals
), 0,
11264 "T_prop_06", HFILL
}},
11265 { &hf_tetra_call_time_out
,
11266 { "call-time-out", "tetra.call_time_out",
11267 FT_UINT32
, BASE_DEC
, NULL
, 0,
11268 "INTEGER_0_15", HFILL
}},
11269 { &hf_tetra_hook_method_selection_01
,
11270 { "hook-method-selection", "tetra.hook_method_selection",
11271 FT_UINT32
, BASE_DEC
, NULL
, 0,
11272 "INTEGER_0_1", HFILL
}},
11273 { &hf_tetra_simplex_duplex_selection_02
,
11274 { "simplex-duplex-selection", "tetra.simplex_duplex_selection",
11275 FT_UINT32
, BASE_DEC
, VALS(tetra_T_simplex_duplex_selection_02_vals
), 0,
11276 "T_simplex_duplex_selection_02", HFILL
}},
11277 { &hf_tetra_transmission_grant
,
11278 { "transmission-grant", "tetra.transmission_grant",
11279 FT_UINT32
, BASE_DEC
, NULL
, 0,
11280 "INTEGER_0_3", HFILL
}},
11281 { &hf_tetra_optional_elements_16
,
11282 { "optional-elements", "tetra.optional_elements",
11283 FT_UINT32
, BASE_DEC
, VALS(tetra_T_optional_elements_16_vals
), 0,
11284 "T_optional_elements_16", HFILL
}},
11285 { &hf_tetra_type2_parameters_12
,
11286 { "type2-parameters", "tetra.type2_parameters_element",
11287 FT_NONE
, BASE_NONE
, NULL
, 0,
11288 "T_type2_parameters_12", HFILL
}},
11289 { &hf_tetra_calling_party_address
,
11290 { "calling-party-address", "tetra.calling_party_address",
11291 FT_UINT32
, BASE_DEC
, VALS(tetra_T_calling_party_address_vals
), 0,
11293 { &hf_tetra_calling_party_address_01
,
11294 { "calling-party-address", "tetra.calling_party_address",
11295 FT_UINT32
, BASE_DEC
, VALS(tetra_Calling_party_address_type_vals
), 0,
11296 "Calling_party_address_type", HFILL
}},
11297 { &hf_tetra_external_subscriber_number_02
,
11298 { "external-subscriber-number", "tetra.external_subscriber_number",
11299 FT_UINT32
, BASE_DEC
, VALS(tetra_T_external_subscriber_number_01_vals
), 0,
11300 "T_external_subscriber_number_01", HFILL
}},
11301 { &hf_tetra_external_subscriber_number_03
,
11302 { "external-subscriber-number", "tetra.external_subscriber_number",
11303 FT_UINT32
, BASE_DEC
, NULL
, 0,
11304 "INTEGER_0_15", HFILL
}},
11305 { &hf_tetra_prop_08
,
11306 { "prop", "tetra.prop",
11307 FT_UINT32
, BASE_DEC
, VALS(tetra_T_prop_07_vals
), 0,
11308 "T_prop_07", HFILL
}},
11309 { &hf_tetra_call_time_out_setup_phase
,
11310 { "call-time-out-setup-phase", "tetra.call_time_out_setup_phase",
11311 FT_UINT32
, BASE_DEC
, NULL
, 0,
11312 "INTEGER_0_7", HFILL
}},
11313 { &hf_tetra_simplex_duplex_selection_03
,
11314 { "simplex-duplex-selection", "tetra.simplex_duplex_selection",
11315 FT_UINT32
, BASE_DEC
, NULL
, 0,
11316 "INTEGER_0_1", HFILL
}},
11317 { &hf_tetra_optional_elements_17
,
11318 { "optional-elements", "tetra.optional_elements",
11319 FT_UINT32
, BASE_DEC
, VALS(tetra_T_optional_elements_17_vals
), 0,
11320 "T_optional_elements_17", HFILL
}},
11321 { &hf_tetra_type2_parameters_13
,
11322 { "type2-parameters", "tetra.type2_parameters_element",
11323 FT_NONE
, BASE_NONE
, NULL
, 0,
11324 "T_type2_parameters_13", HFILL
}},
11325 { &hf_tetra_basic_service_information_03
,
11326 { "basic-service-information", "tetra.basic_service_information",
11327 FT_UINT32
, BASE_DEC
, VALS(tetra_T_basic_service_information_02_vals
), 0,
11328 "T_basic_service_information_02", HFILL
}},
11329 { &hf_tetra_call_status
,
11330 { "call-status", "tetra.call_status",
11331 FT_UINT32
, BASE_DEC
, VALS(tetra_T_call_status_vals
), 0,
11333 { &hf_tetra_call_status_01
,
11334 { "call-status", "tetra.call_status",
11335 FT_UINT32
, BASE_DEC
, NULL
, 0,
11336 "INTEGER_0_7", HFILL
}},
11337 { &hf_tetra_notification_indicator
,
11338 { "notification-indicator", "tetra.notification_indicator",
11339 FT_UINT32
, BASE_DEC
, VALS(tetra_T_notification_indicator_vals
), 0,
11341 { &hf_tetra_notification_indicator_01
,
11342 { "notification-indicator", "tetra.notification_indicator",
11343 FT_UINT32
, BASE_DEC
, NULL
, 0,
11344 "INTEGER_0_63", HFILL
}},
11345 { &hf_tetra_prop_09
,
11346 { "prop", "tetra.prop",
11347 FT_UINT32
, BASE_DEC
, VALS(tetra_T_prop_08_vals
), 0,
11348 "T_prop_08", HFILL
}},
11349 { &hf_tetra_simplex_duplex_selection_04
,
11350 { "simplex-duplex-selection", "tetra.simplex_duplex_selection",
11351 FT_UINT32
, BASE_DEC
, VALS(tetra_T_simplex_duplex_selection_03_vals
), 0,
11352 "T_simplex_duplex_selection_03", HFILL
}},
11353 { &hf_tetra_call_queued
,
11354 { "call-queued", "tetra.call_queued",
11355 FT_BOOLEAN
, BASE_NONE
, NULL
, 0,
11356 "BOOLEAN", HFILL
}},
11357 { &hf_tetra_optional_elements_18
,
11358 { "optional-elements", "tetra.optional_elements",
11359 FT_UINT32
, BASE_DEC
, VALS(tetra_T_optional_elements_18_vals
), 0,
11360 "T_optional_elements_18", HFILL
}},
11361 { &hf_tetra_type2_parameters_14
,
11362 { "type2-parameters", "tetra.type2_parameters_element",
11363 FT_NONE
, BASE_NONE
, NULL
, 0,
11364 "T_type2_parameters_14", HFILL
}},
11365 { &hf_tetra_basic_service_infomation
,
11366 { "basic-service-infomation", "tetra.basic_service_infomation",
11367 FT_UINT32
, BASE_DEC
, VALS(tetra_T_basic_service_infomation_vals
), 0,
11369 { &hf_tetra_basic_service_infomation_01
,
11370 { "basic-service-infomation", "tetra.basic_service_infomation_element",
11371 FT_NONE
, BASE_NONE
, NULL
, 0,
11372 "Basic_service_information", HFILL
}},
11373 { &hf_tetra_notification_indicator_02
,
11374 { "notification-indicator", "tetra.notification_indicator",
11375 FT_UINT32
, BASE_DEC
, VALS(tetra_T_notification_indicator_01_vals
), 0,
11376 "T_notification_indicator_01", HFILL
}},
11377 { &hf_tetra_prop_10
,
11378 { "prop", "tetra.prop",
11379 FT_UINT32
, BASE_DEC
, VALS(tetra_T_prop_09_vals
), 0,
11380 "T_prop_09", HFILL
}},
11381 { &hf_tetra_call_time_out_01
,
11382 { "call-time-out", "tetra.call_time_out",
11383 FT_UINT32
, BASE_DEC
, NULL
, 0,
11384 "INTEGER_0_31", HFILL
}},
11385 { &hf_tetra_simplex_duplex_selection_05
,
11386 { "simplex-duplex-selection", "tetra.simplex_duplex_selection",
11387 FT_UINT32
, BASE_DEC
, VALS(tetra_T_simplex_duplex_selection_04_vals
), 0,
11388 "T_simplex_duplex_selection_04", HFILL
}},
11389 { &hf_tetra_call_ownership
,
11390 { "call-ownership", "tetra.call_ownership",
11391 FT_UINT32
, BASE_DEC
, NULL
, 0,
11392 "INTEGER_0_1", HFILL
}},
11393 { &hf_tetra_optional_elements_19
,
11394 { "optional-elements", "tetra.optional_elements",
11395 FT_UINT32
, BASE_DEC
, VALS(tetra_T_optional_elements_19_vals
), 0,
11396 "T_optional_elements_19", HFILL
}},
11397 { &hf_tetra_type2_parameters_15
,
11398 { "type2-parameters", "tetra.type2_parameters_element",
11399 FT_NONE
, BASE_NONE
, NULL
, 0,
11400 "T_type2_parameters_15", HFILL
}},
11401 { &hf_tetra_call_priority_01
,
11402 { "call-priority", "tetra.call_priority",
11403 FT_UINT32
, BASE_DEC
, VALS(tetra_T_call_priority_vals
), 0,
11405 { &hf_tetra_basic_service_information_04
,
11406 { "basic-service-information", "tetra.basic_service_information",
11407 FT_UINT32
, BASE_DEC
, VALS(tetra_T_basic_service_information_03_vals
), 0,
11408 "T_basic_service_information_03", HFILL
}},
11409 { &hf_tetra_temporary_address
,
11410 { "temporary-address", "tetra.temporary_address",
11411 FT_UINT32
, BASE_DEC
, VALS(tetra_T_temporary_address_vals
), 0,
11413 { &hf_tetra_temporary_address_01
,
11414 { "temporary-address", "tetra.temporary_address",
11415 FT_UINT32
, BASE_DEC
, VALS(tetra_Calling_party_address_type_vals
), 0,
11416 "Calling_party_address_type", HFILL
}},
11417 { &hf_tetra_notification_indicator_03
,
11418 { "notification-indicator", "tetra.notification_indicator",
11419 FT_UINT32
, BASE_DEC
, VALS(tetra_T_notification_indicator_02_vals
), 0,
11420 "T_notification_indicator_02", HFILL
}},
11421 { &hf_tetra_prop_11
,
11422 { "prop", "tetra.prop",
11423 FT_UINT32
, BASE_DEC
, VALS(tetra_T_prop_10_vals
), 0,
11424 "T_prop_10", HFILL
}},
11425 { &hf_tetra_optional_elements_20
,
11426 { "optional-elements", "tetra.optional_elements",
11427 FT_UINT32
, BASE_DEC
, VALS(tetra_T_optional_elements_20_vals
), 0,
11428 "T_optional_elements_20", HFILL
}},
11429 { &hf_tetra_type2_parameters_16
,
11430 { "type2-parameters", "tetra.type2_parameters_element",
11431 FT_NONE
, BASE_NONE
, NULL
, 0,
11432 "T_type2_parameters_16", HFILL
}},
11433 { &hf_tetra_notification_indicator_04
,
11434 { "notification-indicator", "tetra.notification_indicator",
11435 FT_UINT32
, BASE_DEC
, VALS(tetra_T_notification_indicator_03_vals
), 0,
11436 "T_notification_indicator_03", HFILL
}},
11437 { &hf_tetra_prop_12
,
11438 { "prop", "tetra.prop",
11439 FT_UINT32
, BASE_DEC
, VALS(tetra_T_prop_11_vals
), 0,
11440 "T_prop_11", HFILL
}},
11441 { &hf_tetra_optional_elements_21
,
11442 { "optional-elements", "tetra.optional_elements",
11443 FT_UINT32
, BASE_DEC
, VALS(tetra_T_optional_elements_21_vals
), 0,
11444 "T_optional_elements_21", HFILL
}},
11445 { &hf_tetra_type2_parameters_17
,
11446 { "type2-parameters", "tetra.type2_parameters_element",
11447 FT_NONE
, BASE_NONE
, NULL
, 0,
11448 "T_type2_parameters_17", HFILL
}},
11449 { &hf_tetra_notification_indicator_05
,
11450 { "notification-indicator", "tetra.notification_indicator",
11451 FT_UINT32
, BASE_DEC
, VALS(tetra_T_notification_indicator_04_vals
), 0,
11452 "T_notification_indicator_04", HFILL
}},
11453 { &hf_tetra_prop_13
,
11454 { "prop", "tetra.prop",
11455 FT_UINT32
, BASE_DEC
, VALS(tetra_T_prop_12_vals
), 0,
11456 "T_prop_12", HFILL
}},
11457 { &hf_tetra_reset_call_time_out
,
11458 { "reset-call-time-out", "tetra.reset_call_time_out",
11459 FT_UINT32
, BASE_DEC
, NULL
, 0,
11460 "INTEGER_0_1", HFILL
}},
11461 { &hf_tetra_optional_elements_22
,
11462 { "optional-elements", "tetra.optional_elements",
11463 FT_UINT32
, BASE_DEC
, VALS(tetra_T_optional_elements_22_vals
), 0,
11464 "T_optional_elements_22", HFILL
}},
11465 { &hf_tetra_type2_parameters_18
,
11466 { "type2-parameters", "tetra.type2_parameters_element",
11467 FT_NONE
, BASE_NONE
, NULL
, 0,
11468 "T_type2_parameters_18", HFILL
}},
11469 { &hf_tetra_new_call_identifier
,
11470 { "new-call-identifier", "tetra.new_call_identifier",
11471 FT_UINT32
, BASE_DEC
, VALS(tetra_T_new_call_identifier_vals
), 0,
11473 { &hf_tetra_new_call_identifier_01
,
11474 { "new-call-identifier", "tetra.new_call_identifier",
11475 FT_UINT32
, BASE_DEC
, NULL
, 0,
11476 "INTEGER_0_1023", HFILL
}},
11477 { &hf_tetra_call_time_out_02
,
11478 { "call-time-out", "tetra.call_time_out",
11479 FT_UINT32
, BASE_DEC
, VALS(tetra_T_call_time_out_vals
), 0,
11481 { &hf_tetra_call_time_out_03
,
11482 { "call-time-out", "tetra.call_time_out",
11483 FT_UINT32
, BASE_DEC
, NULL
, 0,
11484 "INTEGER_0_7", HFILL
}},
11485 { &hf_tetra_call_status_02
,
11486 { "call-status", "tetra.call_status",
11487 FT_UINT32
, BASE_DEC
, VALS(tetra_T_call_status_01_vals
), 0,
11488 "T_call_status_01", HFILL
}},
11489 { &hf_tetra_modify
,
11490 { "modify", "tetra.modify",
11491 FT_UINT32
, BASE_DEC
, VALS(tetra_T_modify_vals
), 0,
11493 { &hf_tetra_modify_01
,
11494 { "modify", "tetra.modify_element",
11495 FT_NONE
, BASE_NONE
, NULL
, 0,
11496 "Modify_type", HFILL
}},
11497 { &hf_tetra_notification_indicator_06
,
11498 { "notification-indicator", "tetra.notification_indicator",
11499 FT_UINT32
, BASE_DEC
, VALS(tetra_T_notification_indicator_05_vals
), 0,
11500 "T_notification_indicator_05", HFILL
}},
11501 { &hf_tetra_prop_14
,
11502 { "prop", "tetra.prop",
11503 FT_UINT32
, BASE_DEC
, VALS(tetra_T_prop_13_vals
), 0,
11504 "T_prop_13", HFILL
}},
11505 { &hf_tetra_optional_elements_23
,
11506 { "optional-elements", "tetra.optional_elements",
11507 FT_UINT32
, BASE_DEC
, VALS(tetra_T_optional_elements_23_vals
), 0,
11508 "T_optional_elements_23", HFILL
}},
11509 { &hf_tetra_type2_parameters_19
,
11510 { "type2-parameters", "tetra.type2_parameters_element",
11511 FT_NONE
, BASE_NONE
, NULL
, 0,
11512 "T_type2_parameters_19", HFILL
}},
11513 { &hf_tetra_notification_indicator_07
,
11514 { "notification-indicator", "tetra.notification_indicator",
11515 FT_UINT32
, BASE_DEC
, VALS(tetra_T_notification_indicator_06_vals
), 0,
11516 "T_notification_indicator_06", HFILL
}},
11517 { &hf_tetra_prop_15
,
11518 { "prop", "tetra.prop",
11519 FT_UINT32
, BASE_DEC
, VALS(tetra_T_prop_14_vals
), 0,
11520 "T_prop_14", HFILL
}},
11521 { &hf_tetra_group_identity_ack_request
,
11522 { "group-identity-ack-request", "tetra.group_identity_ack_request",
11523 FT_BOOLEAN
, BASE_NONE
, NULL
, 0,
11524 "BOOLEAN", HFILL
}},
11525 { &hf_tetra_optional_elements_24
,
11526 { "optional-elements", "tetra.optional_elements",
11527 FT_UINT32
, BASE_DEC
, VALS(tetra_T_optional_elements_24_vals
), 0,
11528 "T_optional_elements_24", HFILL
}},
11529 { &hf_tetra_type2_element_02
,
11530 { "type2-element", "tetra.type2_element_element",
11531 FT_NONE
, BASE_NONE
, NULL
, 0,
11532 "T_type2_element_02", HFILL
}},
11533 { &hf_tetra_type3_04
,
11534 { "type3", "tetra.type3",
11535 FT_UINT32
, BASE_DEC
, VALS(tetra_T_type3_04_vals
), 0,
11536 "T_type3_04", HFILL
}},
11537 { &hf_tetra_type3_elements_04
,
11538 { "type3-elements", "tetra.type3_elements_element",
11539 FT_NONE
, BASE_NONE
, NULL
, 0,
11540 "T_type3_elements_04", HFILL
}},
11541 { &hf_tetra_group_identity_downlink_02
,
11542 { "group-identity-downlink", "tetra.group_identity_downlink_element",
11543 FT_NONE
, BASE_NONE
, NULL
, 0,
11545 { &hf_tetra_group_identity_attach_detach_accept
,
11546 { "group-identity-attach-detach-accept", "tetra.group_identity_attach_detach_accept",
11547 FT_BOOLEAN
, BASE_NONE
, NULL
, 0,
11548 "BOOLEAN", HFILL
}},
11549 { &hf_tetra_optional_elements_25
,
11550 { "optional-elements", "tetra.optional_elements",
11551 FT_UINT32
, BASE_DEC
, VALS(tetra_T_optional_elements_25_vals
), 0,
11552 "T_optional_elements_25", HFILL
}},
11553 { &hf_tetra_type2_element_03
,
11554 { "type2-element", "tetra.type2_element_element",
11555 FT_NONE
, BASE_NONE
, NULL
, 0,
11556 "T_type2_element_03", HFILL
}},
11557 { &hf_tetra_type3_05
,
11558 { "type3", "tetra.type3",
11559 FT_UINT32
, BASE_DEC
, VALS(tetra_T_type3_05_vals
), 0,
11560 "T_type3_05", HFILL
}},
11561 { &hf_tetra_type3_elements_05
,
11562 { "type3-elements", "tetra.type3_elements_element",
11563 FT_NONE
, BASE_NONE
, NULL
, 0,
11564 "T_type3_elements_05", HFILL
}},
11565 { &hf_tetra_called_party_sna
,
11566 { "called-party-sna", "tetra.called_party_sna",
11567 FT_UINT32
, BASE_DEC
, NULL
, 0,
11568 "INTEGER_0_255", HFILL
}},
11569 { &hf_tetra_called_party_ssi
,
11570 { "called-party-ssi", "tetra.called_party_ssi",
11571 FT_UINT32
, BASE_DEC
, NULL
, 0,
11572 "INTEGER_0_16777215", HFILL
}},
11573 { &hf_tetra_called_party_ssi_extension
,
11574 { "called-party-ssi-extension", "tetra.called_party_ssi_extension_element",
11575 FT_NONE
, BASE_NONE
, NULL
, 0,
11577 { &hf_tetra_called_party_extention
,
11578 { "called-party-extention", "tetra.called_party_extention",
11579 FT_UINT32
, BASE_DEC
, NULL
, 0,
11580 "INTEGER_0_16777215", HFILL
}},
11581 { &hf_tetra_data_01
,
11582 { "data", "tetra.data",
11583 FT_UINT32
, BASE_DEC
, VALS(tetra_T_data_01_vals
), 0,
11584 "T_data_01", HFILL
}},
11585 { &hf_tetra_element1
,
11586 { "element1", "tetra.element1_element",
11587 FT_NONE
, BASE_NONE
, NULL
, 0,
11589 { &hf_tetra_element
,
11590 { "element", "tetra.element_element",
11591 FT_NONE
, BASE_NONE
, NULL
, 0,
11593 { &hf_tetra_proprietary_element_owner
,
11594 { "proprietary-element-owner", "tetra.proprietary_element_owner",
11595 FT_UINT32
, BASE_DEC
, NULL
, 0,
11597 { &hf_tetra_proprietary_element_owner_extension
,
11598 { "proprietary-element-owner-extension", "tetra.proprietary_element_owner_extension",
11599 FT_BYTES
, BASE_NONE
, NULL
, 0,
11600 "BIT_STRING", HFILL
}},
11601 { &hf_tetra_simplex_duplex_selection_06
,
11602 { "simplex-duplex-selection", "tetra.simplex_duplex_selection",
11603 FT_UINT32
, BASE_DEC
, VALS(tetra_T_simplex_duplex_selection_05_vals
), 0,
11604 "T_simplex_duplex_selection_05", HFILL
}},
11607 /* List of subtrees */
11608 static int *ett
[] = {
11616 &ett_tetra_MLE_Sync
,
11618 &ett_tetra_T_hyperframe_or_cck
,
11619 &ett_tetra_T_optional_params
,
11620 &ett_tetra_TS_COMMON_FRAMES
,
11621 &ett_tetra_Default_Code_A
,
11622 &ett_tetra_Extended_Services_Broadcast
,
11623 &ett_tetra_T_section
,
11624 &ett_tetra_PRESENT1
,
11625 &ett_tetra_MAC_ACCESS
,
11627 &ett_tetra_Address
,
11628 &ett_tetra_U_LLC_PDU
,
11629 &ett_tetra_U_BL_ACK_FCS
,
11630 &ett_tetra_U_MLE_PDU_FCS
,
11631 &ett_tetra_U_BL_DATA_FCS
,
11632 &ett_tetra_U_BL_ADATA_FCS
,
11633 &ett_tetra_U_MLE_PDU
,
11634 &ett_tetra_ComplexSDU
,
11635 &ett_tetra_T_lengthIndicationOrCapacityRequest
,
11637 &ett_tetra_MAC_DATA
,
11638 &ett_tetra_T_lengthIndicationOrCapacityRequest_01
,
11640 &ett_tetra_MAC_FRAG
,
11641 &ett_tetra_MAC_FRAG120
,
11642 &ett_tetra_MAC_END_UPLINK
,
11643 &ett_tetra_MAC_END_UP114
,
11644 &ett_tetra_MAC_END_HU
,
11645 &ett_tetra_T_lengthInd_ReservationReq
,
11646 &ett_tetra_MAC_END_DOWNLINK
,
11647 &ett_tetra_T_slot_granting
,
11648 &ett_tetra_T_channel_allocation
,
11649 &ett_tetra_SlotGranting
,
11650 &ett_tetra_ChannelAllocation
,
11651 &ett_tetra_T_extend_carrier_flag
,
11652 &ett_tetra_T_monitoring_pattern
,
11653 &ett_tetra_Extended_carrier_flag
,
11654 &ett_tetra_MAC_END_DOWN111
,
11655 &ett_tetra_T_slot_granting_01
,
11656 &ett_tetra_T_channel_allocation_01
,
11657 &ett_tetra_MAC_RESOURCE
,
11658 &ett_tetra_OTHER_DATA
,
11659 &ett_tetra_T_power_control
,
11660 &ett_tetra_T_slot_granting_02
,
11661 &ett_tetra_T_channel_allocation_02
,
11662 &ett_tetra_AddressMacResource
,
11663 &ett_tetra_SSI_NEED
,
11664 &ett_tetra_EVENT_NEED
,
11665 &ett_tetra_USSI_NEED
,
11666 &ett_tetra_SMI_NEED
,
11667 &ett_tetra_SSI_EVENT_NEED
,
11668 &ett_tetra_SSI_USAGE_NEED
,
11669 &ett_tetra_SMI_EVENT_NEED
,
11670 &ett_tetra_MAC_ACCESS_DEFINE
,
11671 &ett_tetra_T_optional_field
,
11672 &ett_tetra_D_LLC_PDU
,
11673 &ett_tetra_D_BL_ACK_FCS
,
11674 &ett_tetra_D_MLE_PDU_FCS
,
11675 &ett_tetra_D_BL_ADATA_FCS
,
11676 &ett_tetra_D_BL_DATA_FCS
,
11677 &ett_tetra_U_BL_ACK
,
11678 &ett_tetra_D_BL_ACK
,
11679 &ett_tetra_U_BL_DATA
,
11680 &ett_tetra_D_BL_DATA
,
11681 &ett_tetra_U_BL_ADATA
,
11682 &ett_tetra_D_BL_ADATA
,
11683 &ett_tetra_D_MLE_PDU
,
11684 &ett_tetra_UMLE_PDU
,
11685 &ett_tetra_DMLE_PDU
,
11686 &ett_tetra_U_PREPARE
,
11687 &ett_tetra_T_optional_elements
,
11688 &ett_tetra_T_type2_parameters
,
11689 &ett_tetra_T_cell_number
,
11690 &ett_tetra_U_RESTORE
,
11691 &ett_tetra_T_optional_elements_01
,
11692 &ett_tetra_T_type2_parameters_01
,
11696 &ett_tetra_D_NEW_CELL
,
11697 &ett_tetra_T_optional_elements_02
,
11698 &ett_tetra_D_PREPARE_FAIL
,
11699 &ett_tetra_T_optional_elements_03
,
11700 &ett_tetra_D_NWRK_BRDADCAST
,
11701 &ett_tetra_T_optional_elements_04
,
11702 &ett_tetra_T_type2_parameters_02
,
11703 &ett_tetra_T_tetra_network_time
,
11704 &ett_tetra_T_number_of_neighbour_cells
,
11705 &ett_tetra_TETRA_NETWORK_TIME
,
11706 &ett_tetra_D_RESTORE_ACK
,
11707 &ett_tetra_D_RESTORE_FAIL
,
11708 &ett_tetra_U_MM_PDU
,
11709 &ett_tetra_D_MM_PDU
,
11710 &ett_tetra_GROUP_IDENTITY_DOWNLINK
,
11711 &ett_tetra_T_attach_detach_identifier
,
11712 &ett_tetra_T_attach
,
11713 &ett_tetra_T_detach
,
11714 &ett_tetra_T_address_type
,
11715 &ett_tetra_T_gssi_extension
,
11716 &ett_tetra_GROUP_IDENTITY_UPLINK
,
11717 &ett_tetra_T_attach_detach_identifier_01
,
11718 &ett_tetra_T_attach_01
,
11719 &ett_tetra_T_detach_01
,
11720 &ett_tetra_T_address_type_01
,
11721 &ett_tetra_T_gssi_extension_01
,
11722 &ett_tetra_D_LOCATION_UPDATE_ACCEPT
,
11723 &ett_tetra_T_optional_elements_05
,
11724 &ett_tetra_T_type2_parameters_03
,
11726 &ett_tetra_T_address_extension
,
11727 &ett_tetra_T_subscriber_class
,
11728 &ett_tetra_T_energy_saving_mode
,
11729 &ett_tetra_T_scch_info
,
11730 &ett_tetra_T_type3
,
11731 &ett_tetra_T_type3_elements
,
11732 &ett_tetra_T_new_ra
,
11733 &ett_tetra_T_group_identity_location_accept
,
11734 &ett_tetra_T_group_predefined_lifetime
,
11735 &ett_tetra_T_group_identity_downlink
,
11736 &ett_tetra_T_proprietary
,
11737 &ett_tetra_D_LOCATION_UPDATE_REJECT
,
11738 &ett_tetra_U_MM_STATUS
,
11739 &ett_tetra_D_MM_STATUS
,
11740 &ett_tetra_U_CMCE_PDU
,
11741 &ett_tetra_U_RELEASE
,
11742 &ett_tetra_U_SDS_DATA
,
11743 &ett_tetra_T_called_party_type_identifier
,
11744 &ett_tetra_T_short_data_type_identifier
,
11745 &ett_tetra_U_STATUS
,
11746 &ett_tetra_T_called_party_type_identifier_01
,
11748 &ett_tetra_D_CMCE_PDU
,
11749 &ett_tetra_D_SDS_DATA
,
11750 &ett_tetra_T_calling_party_type_identifier
,
11751 &ett_tetra_T_short_data_type_identifier_01
,
11752 &ett_tetra_D_STATUS
,
11753 &ett_tetra_T_calling_party_type_identifier_01
,
11754 &ett_tetra_D_DISCONNECT
,
11756 &ett_tetra_D_TX_WAIT
,
11757 &ett_tetra_D_TX_CONTINUE
,
11758 &ett_tetra_U_LOCATION_UPDATE_DEMAND
,
11759 &ett_tetra_T_cipher_control
,
11760 &ett_tetra_T_optional_elements_06
,
11761 &ett_tetra_T_type2_parameters_04
,
11762 &ett_tetra_T_class_of_MS
,
11763 &ett_tetra_T_energy_saving_mode_01
,
11764 &ett_tetra_T_la_information
,
11765 &ett_tetra_T_ssi_01
,
11766 &ett_tetra_T_address_extension_01
,
11767 &ett_tetra_T_type3_01
,
11768 &ett_tetra_T_type3_elements_01
,
11769 &ett_tetra_T_group_identity_location_demand
,
11770 &ett_tetra_T_group_report_response
,
11771 &ett_tetra_T_group_identity_uplink
,
11772 &ett_tetra_T_proprietary_01
,
11773 &ett_tetra_U_ATTACH_DETACH_GROUP_IDENTITY
,
11774 &ett_tetra_T_optional_elements_07
,
11775 &ett_tetra_T_type2_element
,
11776 &ett_tetra_T_type3_02
,
11777 &ett_tetra_T_type3_elements_02
,
11778 &ett_tetra_U_ATTACH_DETACH_GROUP_IDENTITY_ACK
,
11779 &ett_tetra_T_optional_elements_08
,
11780 &ett_tetra_T_type2_element_01
,
11781 &ett_tetra_T_type3_03
,
11782 &ett_tetra_T_type3_elements_03
,
11783 &ett_tetra_U_SETUP
,
11784 &ett_tetra_T_optional_elements_09
,
11785 &ett_tetra_T_type2_parameters_05
,
11786 &ett_tetra_T_external_subscriber_number
,
11788 &ett_tetra_Basic_service_information
,
11789 &ett_tetra_U_ALERT
,
11790 &ett_tetra_T_optional_elements_10
,
11791 &ett_tetra_T_type2_parameters_06
,
11792 &ett_tetra_T_basic_service_information
,
11793 &ett_tetra_T_prop_01
,
11794 &ett_tetra_U_CONNECT
,
11795 &ett_tetra_T_optional_elements_11
,
11796 &ett_tetra_T_type2_parameters_07
,
11797 &ett_tetra_T_basic_service_information_01
,
11798 &ett_tetra_T_prop_02
,
11799 &ett_tetra_U_TX_CEASED
,
11800 &ett_tetra_T_optional_elements_12
,
11801 &ett_tetra_T_type2_parameters_08
,
11802 &ett_tetra_T_prop_03
,
11803 &ett_tetra_U_TX_DEMAND
,
11804 &ett_tetra_T_optional_elements_13
,
11805 &ett_tetra_T_type2_parameters_09
,
11806 &ett_tetra_T_prop_04
,
11807 &ett_tetra_U_DISCONNECT
,
11808 &ett_tetra_T_optional_elements_14
,
11809 &ett_tetra_T_type2_parameters_10
,
11810 &ett_tetra_T_prop_05
,
11811 &ett_tetra_U_CALL_RESTORE
,
11812 &ett_tetra_T_optional_elements_15
,
11813 &ett_tetra_T_type2_parameters_11
,
11814 &ett_tetra_T_prop_06
,
11815 &ett_tetra_D_SETUP
,
11816 &ett_tetra_T_optional_elements_16
,
11817 &ett_tetra_T_type2_parameters_12
,
11818 &ett_tetra_T_calling_party_address
,
11819 &ett_tetra_T_external_subscriber_number_01
,
11820 &ett_tetra_T_prop_07
,
11821 &ett_tetra_D_CALL_PROCEEDING
,
11822 &ett_tetra_T_optional_elements_17
,
11823 &ett_tetra_T_type2_parameters_13
,
11824 &ett_tetra_T_basic_service_information_02
,
11825 &ett_tetra_T_call_status
,
11826 &ett_tetra_T_notification_indicator
,
11827 &ett_tetra_T_prop_08
,
11828 &ett_tetra_D_ALERT
,
11829 &ett_tetra_T_optional_elements_18
,
11830 &ett_tetra_T_type2_parameters_14
,
11831 &ett_tetra_T_basic_service_infomation
,
11832 &ett_tetra_T_notification_indicator_01
,
11833 &ett_tetra_T_prop_09
,
11834 &ett_tetra_D_CONNECT
,
11835 &ett_tetra_T_optional_elements_19
,
11836 &ett_tetra_T_type2_parameters_15
,
11837 &ett_tetra_T_call_priority
,
11838 &ett_tetra_T_basic_service_information_03
,
11839 &ett_tetra_T_temporary_address
,
11840 &ett_tetra_T_notification_indicator_02
,
11841 &ett_tetra_T_prop_10
,
11842 &ett_tetra_D_CONNECT_ACK
,
11843 &ett_tetra_T_optional_elements_20
,
11844 &ett_tetra_T_type2_parameters_16
,
11845 &ett_tetra_T_notification_indicator_03
,
11846 &ett_tetra_T_prop_11
,
11847 &ett_tetra_D_RELEASE
,
11848 &ett_tetra_T_optional_elements_21
,
11849 &ett_tetra_T_type2_parameters_17
,
11850 &ett_tetra_T_notification_indicator_04
,
11851 &ett_tetra_T_prop_12
,
11852 &ett_tetra_D_CALL_RESTORE
,
11853 &ett_tetra_T_optional_elements_22
,
11854 &ett_tetra_T_type2_parameters_18
,
11855 &ett_tetra_T_new_call_identifier
,
11856 &ett_tetra_T_call_time_out
,
11857 &ett_tetra_T_call_status_01
,
11858 &ett_tetra_T_modify
,
11859 &ett_tetra_T_notification_indicator_05
,
11860 &ett_tetra_T_prop_13
,
11861 &ett_tetra_D_TX_CEASED
,
11862 &ett_tetra_T_optional_elements_23
,
11863 &ett_tetra_T_type2_parameters_19
,
11864 &ett_tetra_T_notification_indicator_06
,
11865 &ett_tetra_T_prop_14
,
11866 &ett_tetra_D_TX_GRANTED
,
11867 &ett_tetra_D_ATTACH_DETACH_GROUP_IDENTITY
,
11868 &ett_tetra_T_optional_elements_24
,
11869 &ett_tetra_T_type2_element_02
,
11870 &ett_tetra_T_type3_04
,
11871 &ett_tetra_T_type3_elements_04
,
11872 &ett_tetra_D_ATTACH_DETACH_GROUP_IDENTITY_ACK
,
11873 &ett_tetra_T_optional_elements_25
,
11874 &ett_tetra_T_type2_element_03
,
11875 &ett_tetra_T_type3_05
,
11876 &ett_tetra_T_type3_elements_05
,
11877 &ett_tetra_Calling_party_address_type
,
11878 &ett_tetra_T_called_party_ssi_extension
,
11879 &ett_tetra_Proprietary
,
11880 &ett_tetra_T_data_01
,
11883 &ett_tetra_Modify_type
,
11886 static ei_register_info ei
[] = {
11887 { &ei_tetra_channels_incorrect
, { "tetra.channels.incorrect", PI_MALFORMED
, PI_WARN
, "Channel count incorrect, must be <= 3", EXPFILL
}},
11890 proto_tetra
= proto_register_protocol("TETRA Protocol", "TETRA", "tetra");
11891 proto_register_field_array (proto_tetra
, hf
, array_length (hf
));
11892 proto_register_subtree_array (ett
, array_length (ett
));
11893 tetra_handle
= register_dissector("tetra", dissect_tetra
, proto_tetra
);
11894 expert_tetra
= expert_register_protocol(proto_tetra
);
11895 expert_register_field_array(expert_tetra
, ei
, array_length(ei
));
11897 tetra_module
= prefs_register_protocol(proto_tetra
, NULL
);
11898 prefs_register_bool_preference(tetra_module
, "include_carrier_number",
11899 "The data include carrier numbers",
11900 "Whether the captured data include carrier number",
11901 &include_carrier_number
);