Revert "TODO epan/dissectors/asn1/kerberos/packet-kerberos-template.c new GSS flags"
[wireshark-sm.git] / epan / dissectors / asn1 / lte-rrc / packet-lte-rrc-template.c
blobb4d94e98d822245b82e19e5ca0cbe5f743e27e90
1 /* packet-lte-rrc-template.c
2 * Routines for Evolved Universal Terrestrial Radio Access (E-UTRA);
3 * Radio Resource Control (RRC) protocol specification
4 * (3GPP TS 36.331 V18.3.0 Release 18) packet dissection
5 * Copyright 2008, Vincent Helfre
6 * Copyright 2009-2024, Pascal Quantin
8 * Wireshark - Network traffic analyzer
9 * By Gerald Combs <gerald@wireshark.org>
10 * Copyright 1998 Gerald Combs
12 * SPDX-License-Identifier: GPL-2.0-or-later
15 #include "config.h"
17 #include <stdlib.h>
19 #include <epan/packet.h>
20 #include <epan/prefs.h>
21 #include <epan/to_str.h>
22 #include <epan/asn1.h>
23 #include <epan/expert.h>
24 #include <epan/reassemble.h>
25 #include <epan/exceptions.h>
26 #include <epan/show_exception.h>
27 #include <epan/proto_data.h>
28 #include <epan/tfs.h>
29 #include <epan/unit_strings.h>
31 #include <wsutil/str_util.h>
32 #include <wsutil/epochs.h>
33 #include <wsutil/array.h>
35 #include "packet-per.h"
36 #include "packet-rrc.h"
37 #include "packet-gsm_a_common.h"
38 #include "packet-lpp.h"
39 #include "packet-gsm_map.h"
40 #include "packet-cell_broadcast.h"
41 #include "packet-mac-lte.h"
42 #include "packet-rlc-lte.h"
43 #include "packet-pdcp-lte.h"
44 #include "packet-nr-rrc.h"
45 #include "packet-lte-rrc.h"
47 #define PNAME "LTE Radio Resource Control (RRC) protocol"
48 #define PSNAME "LTE RRC"
49 #define PFNAME "lte_rrc"
51 void proto_register_lte_rrc(void);
52 void proto_reg_handoff_lte_rrc(void);
54 static dissector_handle_t nas_eps_handle;
55 static dissector_handle_t nas_5gs_handle;
56 static dissector_handle_t rrc_irat_ho_to_utran_cmd_handle;
57 static dissector_handle_t rrc_sys_info_cont_handle;
58 static dissector_handle_t gsm_a_dtap_handle;
59 static dissector_handle_t gsm_rlcmac_dl_handle;
60 static dissector_handle_t nr_rrc_reconf_handle;
61 static dissector_handle_t lte_rrc_conn_reconf_handle;
62 static dissector_handle_t lte_rrc_dl_ccch_handle;
64 static wmem_map_t *lte_rrc_etws_cmas_dcs_hash;
66 /* Keep track of where/how the System Info value has changed */
67 static wmem_map_t *lte_rrc_system_info_value_changed_hash;
68 static uint8_t system_info_value_current;
69 static bool system_info_value_current_set;
71 static wmem_map_t *lte_rrc_dcch_segment_ueid_count_hash;
72 static wmem_tree_t *lte_rrc_dcch_segment_id_tree;
74 static bool lte_rrc_nas_in_root_tree;
75 static bool lte_rrc_reassemble_dcch_segments;
77 extern int proto_mac_lte;
78 extern int proto_rlc_lte;
79 extern int proto_pdcp_lte;
82 /* Include constants */
83 #include "packet-lte-rrc-val.h"
85 /* Initialize the protocol and registered fields */
86 static int proto_lte_rrc;
88 #include "packet-lte-rrc-hf.c"
90 static int hf_lte_rrc_eutra_cap_feat_group_ind_1;
91 static int hf_lte_rrc_eutra_cap_feat_group_ind_2;
92 static int hf_lte_rrc_eutra_cap_feat_group_ind_3;
93 static int hf_lte_rrc_eutra_cap_feat_group_ind_4;
94 static int hf_lte_rrc_eutra_cap_feat_group_ind_5;
95 static int hf_lte_rrc_eutra_cap_feat_group_ind_6;
96 static int hf_lte_rrc_eutra_cap_feat_group_ind_7;
97 static int hf_lte_rrc_eutra_cap_feat_group_ind_8;
98 static int hf_lte_rrc_eutra_cap_feat_group_ind_9;
99 static int hf_lte_rrc_eutra_cap_feat_group_ind_10;
100 static int hf_lte_rrc_eutra_cap_feat_group_ind_11;
101 static int hf_lte_rrc_eutra_cap_feat_group_ind_12;
102 static int hf_lte_rrc_eutra_cap_feat_group_ind_13;
103 static int hf_lte_rrc_eutra_cap_feat_group_ind_14;
104 static int hf_lte_rrc_eutra_cap_feat_group_ind_15;
105 static int hf_lte_rrc_eutra_cap_feat_group_ind_16;
106 static int hf_lte_rrc_eutra_cap_feat_group_ind_17;
107 static int hf_lte_rrc_eutra_cap_feat_group_ind_18;
108 static int hf_lte_rrc_eutra_cap_feat_group_ind_19;
109 static int hf_lte_rrc_eutra_cap_feat_group_ind_20;
110 static int hf_lte_rrc_eutra_cap_feat_group_ind_21;
111 static int hf_lte_rrc_eutra_cap_feat_group_ind_22;
112 static int hf_lte_rrc_eutra_cap_feat_group_ind_23;
113 static int hf_lte_rrc_eutra_cap_feat_group_ind_24;
114 static int hf_lte_rrc_eutra_cap_feat_group_ind_25;
115 static int hf_lte_rrc_eutra_cap_feat_group_ind_26;
116 static int hf_lte_rrc_eutra_cap_feat_group_ind_27;
117 static int hf_lte_rrc_eutra_cap_feat_group_ind_28;
118 static int hf_lte_rrc_eutra_cap_feat_group_ind_29;
119 static int hf_lte_rrc_eutra_cap_feat_group_ind_30;
120 static int hf_lte_rrc_eutra_cap_feat_group_ind_31;
121 static int hf_lte_rrc_eutra_cap_feat_group_ind_32;
122 static int hf_lte_rrc_eutra_cap_feat_group_ind_33;
123 static int hf_lte_rrc_eutra_cap_feat_group_ind_34;
124 static int hf_lte_rrc_eutra_cap_feat_group_ind_35;
125 static int hf_lte_rrc_eutra_cap_feat_group_ind_36;
126 static int hf_lte_rrc_eutra_cap_feat_group_ind_37;
127 static int hf_lte_rrc_eutra_cap_feat_group_ind_38;
128 static int hf_lte_rrc_eutra_cap_feat_group_ind_39;
129 static int hf_lte_rrc_eutra_cap_feat_group_ind_40;
130 static int hf_lte_rrc_eutra_cap_feat_group_ind_41;
131 static int hf_lte_rrc_eutra_cap_feat_group_ind_42;
132 static int hf_lte_rrc_eutra_cap_feat_group_ind_43;
133 static int hf_lte_rrc_eutra_cap_feat_group_ind_44;
134 static int hf_lte_rrc_eutra_cap_feat_group_ind_45;
135 static int hf_lte_rrc_eutra_cap_feat_group_ind_46;
136 static int hf_lte_rrc_eutra_cap_feat_group_ind_47;
137 static int hf_lte_rrc_eutra_cap_feat_group_ind_48;
138 static int hf_lte_rrc_eutra_cap_feat_group_ind_49;
139 static int hf_lte_rrc_eutra_cap_feat_group_ind_50;
140 static int hf_lte_rrc_eutra_cap_feat_group_ind_51;
141 static int hf_lte_rrc_eutra_cap_feat_group_ind_52;
142 static int hf_lte_rrc_eutra_cap_feat_group_ind_53;
143 static int hf_lte_rrc_eutra_cap_feat_group_ind_54;
144 static int hf_lte_rrc_eutra_cap_feat_group_ind_55;
145 static int hf_lte_rrc_eutra_cap_feat_group_ind_56;
146 static int hf_lte_rrc_eutra_cap_feat_group_ind_57;
147 static int hf_lte_rrc_eutra_cap_feat_group_ind_58;
148 static int hf_lte_rrc_eutra_cap_feat_group_ind_59;
149 static int hf_lte_rrc_eutra_cap_feat_group_ind_60;
150 static int hf_lte_rrc_eutra_cap_feat_group_ind_61;
151 static int hf_lte_rrc_eutra_cap_feat_group_ind_62;
152 static int hf_lte_rrc_eutra_cap_feat_group_ind_63;
153 static int hf_lte_rrc_eutra_cap_feat_group_ind_64;
154 static int hf_lte_rrc_eutra_cap_feat_group_ind_101;
155 static int hf_lte_rrc_eutra_cap_feat_group_ind_102;
156 static int hf_lte_rrc_eutra_cap_feat_group_ind_103;
157 static int hf_lte_rrc_eutra_cap_feat_group_ind_104;
158 static int hf_lte_rrc_eutra_cap_feat_group_ind_105;
159 static int hf_lte_rrc_eutra_cap_feat_group_ind_106;
160 static int hf_lte_rrc_eutra_cap_feat_group_ind_107;
161 static int hf_lte_rrc_eutra_cap_feat_group_ind_108;
162 static int hf_lte_rrc_eutra_cap_feat_group_ind_109;
163 static int hf_lte_rrc_eutra_cap_feat_group_ind_110;
164 static int hf_lte_rrc_eutra_cap_feat_group_ind_111;
165 static int hf_lte_rrc_eutra_cap_feat_group_ind_112;
166 static int hf_lte_rrc_eutra_cap_feat_group_ind_113;
167 static int hf_lte_rrc_eutra_cap_feat_group_ind_114;
168 static int hf_lte_rrc_eutra_cap_feat_group_ind_115;
169 static int hf_lte_rrc_eutra_cap_feat_group_ind_116;
170 static int hf_lte_rrc_eutra_cap_feat_group_ind_117;
171 static int hf_lte_rrc_eutra_cap_feat_group_ind_118;
172 static int hf_lte_rrc_eutra_cap_feat_group_ind_119;
173 static int hf_lte_rrc_eutra_cap_feat_group_ind_120;
174 static int hf_lte_rrc_eutra_cap_feat_group_ind_121;
175 static int hf_lte_rrc_eutra_cap_feat_group_ind_122;
176 static int hf_lte_rrc_eutra_cap_feat_group_ind_123;
177 static int hf_lte_rrc_eutra_cap_feat_group_ind_124;
178 static int hf_lte_rrc_eutra_cap_feat_group_ind_125;
179 static int hf_lte_rrc_eutra_cap_feat_group_ind_126;
180 static int hf_lte_rrc_eutra_cap_feat_group_ind_127;
181 static int hf_lte_rrc_eutra_cap_feat_group_ind_128;
182 static int hf_lte_rrc_eutra_cap_feat_group_ind_129;
183 static int hf_lte_rrc_eutra_cap_feat_group_ind_130;
184 static int hf_lte_rrc_eutra_cap_feat_group_ind_131;
185 static int hf_lte_rrc_eutra_cap_feat_group_ind_132;
186 static int hf_lte_rrc_serialNumber_gs;
187 static int hf_lte_rrc_serialNumber_msg_code;
188 static int hf_lte_rrc_serialNumber_upd_nb;
189 static int hf_lte_rrc_warningType_value;
190 static int hf_lte_rrc_warningType_emergency_user_alert;
191 static int hf_lte_rrc_warningType_popup;
192 static int hf_lte_rrc_warningMessageSegment_nb_pages;
193 static int hf_lte_rrc_warningMessageSegment_decoded_page;
194 static int hf_lte_rrc_interBandTDD_CA_WithDifferentConfig_bit1;
195 static int hf_lte_rrc_interBandTDD_CA_WithDifferentConfig_bit2;
196 static int hf_lte_rrc_tdd_FDD_CA_PCellDuplex_r12_bit1;
197 static int hf_lte_rrc_tdd_FDD_CA_PCellDuplex_r12_bit2;
198 static int hf_lte_rrc_aperiodicCSI_Reporting_r13_bit1;
199 static int hf_lte_rrc_aperiodicCSI_Reporting_r13_bit2;
200 static int hf_lte_rrc_codebook_HARQ_ACK_r13_bit1;
201 static int hf_lte_rrc_codebook_HARQ_ACK_r13_bit2;
202 static int hf_lte_rrc_sr_config_periodicity;
203 static int hf_lte_rrc_sr_config_subframe_offset;
204 static int hf_lte_rrc_cdma_time;
205 static int hf_lte_rrc_utc_time;
206 static int hf_lte_rrc_local_time;
207 static int hf_lte_rrc_absolute_time;
208 static int hf_lte_rrc_transmissionModeList_r12_tm1;
209 static int hf_lte_rrc_transmissionModeList_r12_tm2;
210 static int hf_lte_rrc_transmissionModeList_r12_tm3;
211 static int hf_lte_rrc_transmissionModeList_r12_tm4;
212 static int hf_lte_rrc_transmissionModeList_r12_tm6;
213 static int hf_lte_rrc_transmissionModeList_r12_tm8;
214 static int hf_lte_rrc_transmissionModeList_r12_tm9;
215 static int hf_lte_rrc_transmissionModeList_r12_tm10;
216 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_0;
217 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_1;
218 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_2;
219 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_3;
220 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_4;
221 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_5;
222 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_6;
223 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_7;
224 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_8;
225 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_9;
226 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_10;
227 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_11;
228 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_12;
229 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_13;
230 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_14;
231 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_15;
232 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_16;
233 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_17;
234 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_18;
235 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_19;
236 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_20;
237 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_21;
238 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_22;
239 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_23;
240 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_24;
241 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_25;
242 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_26;
243 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_27;
244 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_28;
245 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_29;
246 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_30;
247 static int hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_31;
248 static int hf_lte_rrc_sib11_fragments;
249 static int hf_lte_rrc_sib11_fragment;
250 static int hf_lte_rrc_sib11_fragment_overlap;
251 static int hf_lte_rrc_sib11_fragment_overlap_conflict;
252 static int hf_lte_rrc_sib11_fragment_multiple_tails;
253 static int hf_lte_rrc_sib11_fragment_too_long_fragment;
254 static int hf_lte_rrc_sib11_fragment_error;
255 static int hf_lte_rrc_sib11_fragment_count;
256 static int hf_lte_rrc_sib11_reassembled_in;
257 static int hf_lte_rrc_sib11_reassembled_length;
258 static int hf_lte_rrc_sib11_reassembled_data;
259 static int hf_lte_rrc_sib12_fragments;
260 static int hf_lte_rrc_sib12_fragment;
261 static int hf_lte_rrc_sib12_fragment_overlap;
262 static int hf_lte_rrc_sib12_fragment_overlap_conflict;
263 static int hf_lte_rrc_sib12_fragment_multiple_tails;
264 static int hf_lte_rrc_sib12_fragment_too_long_fragment;
265 static int hf_lte_rrc_sib12_fragment_error;
266 static int hf_lte_rrc_sib12_fragment_count;
267 static int hf_lte_rrc_sib12_reassembled_in;
268 static int hf_lte_rrc_sib12_reassembled_length;
269 static int hf_lte_rrc_sib12_reassembled_data;
270 static int hf_lte_rrc_dcch_segment_fragments;
271 static int hf_lte_rrc_dcch_segment_fragment;
272 static int hf_lte_rrc_dcch_segment_fragment_overlap;
273 static int hf_lte_rrc_dcch_segment_fragment_overlap_conflict;
274 static int hf_lte_rrc_dcch_segment_fragment_multiple_tails;
275 static int hf_lte_rrc_dcch_segment_fragment_too_long_fragment;
276 static int hf_lte_rrc_dcch_segment_fragment_error;
277 static int hf_lte_rrc_dcch_segment_fragment_count;
278 static int hf_lte_rrc_dcch_segment_reassembled_in;
279 static int hf_lte_rrc_dcch_segment_reassembled_length;
280 static int hf_lte_rrc_dcch_segment_reassembled_data;
281 static int hf_lte_rrc_measGapPatterns_r15_bit1;
282 static int hf_lte_rrc_measGapPatterns_r15_bit2;
283 static int hf_lte_rrc_measGapPatterns_r15_bit3;
284 static int hf_lte_rrc_measGapPatterns_r15_bit4;
285 static int hf_lte_rrc_measGapPatterns_r15_bit5;
286 static int hf_lte_rrc_measGapPatterns_r15_bit6;
287 static int hf_lte_rrc_measGapPatterns_r15_bit7;
288 static int hf_lte_rrc_measGapPatterns_r15_bit8;
290 /* Initialize the subtree pointers */
291 static int ett_lte_rrc;
293 #include "packet-lte-rrc-ett.c"
295 static int ett_lte_rrc_featureGroupIndicators;
296 static int ett_lte_rrc_featureGroupIndRel9Add;
297 static int ett_lte_rrc_featureGroupIndRel10;
298 static int ett_lte_rrc_absTimeInfo;
299 static int ett_lte_rrc_nas_SecurityParam;
300 static int ett_lte_rrc_targetRAT_MessageContainer;
301 static int ett_lte_rrc_siPsiSibContainer;
302 static int ett_lte_rrc_dedicatedInfoNAS;
303 static int ett_lte_rrc_timeInfo;
304 static int ett_lte_rrc_serialNumber;
305 static int ett_lte_rrc_warningType;
306 static int ett_lte_rrc_dataCodingScheme;
307 static int ett_lte_rrc_warningMessageSegment;
308 static int ett_lte_rrc_interBandTDD_CA_WithDifferentConfig;
309 static int ett_lte_rrc_tdd_FDD_CA_PCellDuplex_r12;
310 static int ett_lte_rrc_aperiodicCSI_Reporting_r13;
311 static int ett_lte_rrc_codebook_HARQ_ACK_r13;
312 static int ett_lte_rrc_sr_ConfigIndex;
313 static int ett_lte_rrc_transmissionModeList_r12;
314 static int ett_lte_rrc_modifiedMPR_Behavior_r10;
315 static int ett_lte_rrc_sib11_fragment;
316 static int ett_lte_rrc_sib11_fragments;
317 static int ett_lte_rrc_sib12_fragment;
318 static int ett_lte_rrc_sib12_fragments;
319 static int ett_lte_rrc_dcch_segment_fragment;
320 static int ett_lte_rrc_dcch_segment_fragments;
321 static int ett_lte_rrc_nr_SecondaryCellGroupConfig_r15;
322 static int ett_lte_rrc_nr_RadioBearerConfig_r15;
323 static int ett_lte_rrc_nr_RadioBearerConfigS_r15;
324 static int ett_lte_rrc_sl_ConfigDedicatedForNR_r16;
325 static int ett_lte_rrc_nr_SecondaryCellGroupConfig;
326 static int ett_lte_rrc_scg_ConfigResponseNR_r15;
327 static int ett_lte_rrc_scg_ConfigResponseNR_r16;
328 static int ett_lte_rrc_measResultSCG_r15;
329 static int ett_lte_rrc_measResultSCG_r16;
330 static int ett_lte_rrc_ul_DCCH_MessageNR_r15;
331 static int ett_lte_rrc_ul_DCCH_MessageNR_r16;
332 static int ett_lte_rrc_sourceRB_ConfigNR_r15;
333 static int ett_lte_rrc_sourceRB_ConfigSN_NR_r15;
334 static int ett_lte_rrc_sourceOtherConfigSN_NR_r15;
335 static int ett_lte_rrc_sourceContextEN_DC_r15;
336 static int ett_lte_rrc_requestedFreqBandsNR_MRDC_r15;
337 static int ett_lte_rrc_measGapPatterns_r15;
338 static int ett_lte_rrc_nas_Container_r15;
339 static int ett_lte_rrc_sourceRB_ConfigIntra5GC_r15;
340 static int ett_lte_rrc_selectedbandCombinationInfoEN_DC_v1540;
341 static int ett_lte_rrc_requestedCapabilityCommon_r15;
342 static int ett_lte_rrc_sidelinkUEInformationNR_r16;
343 static int ett_lte_rrc_ueAssistanceInformationNR_r16;
344 static int ett_lte_rrc_sl_ParameterNR_r16;
345 static int ett_lte_rrc_v2x_BandParametersNR_r16;
346 static int ett_lte_rrc_ueAssistanceInformationNR_SCG_r16;
347 static int ett_lte_rrc_assistanceDataSIB_Element_r15;
348 static int ett_lte_rrc_overheatingAssistanceForSCG_r16;
349 static int ett_lte_rrc_overheatingAssistanceForSCG_FR2_2_r17;
350 static int ett_lte_rrc_triggerConditionSN_r17;
352 static expert_field ei_lte_rrc_number_pages_le15;
353 static expert_field ei_lte_rrc_si_info_value_changed;
354 static expert_field ei_lte_rrc_sibs_changing;
355 static expert_field ei_lte_rrc_sibs_changing_edrx;
356 static expert_field ei_lte_rrc_earthquake_warning_sys;
357 static expert_field ei_lte_rrc_commercial_mobile_alert_sys;
358 static expert_field ei_lte_rrc_unexpected_type_value;
359 static expert_field ei_lte_rrc_unexpected_length_value;
360 static expert_field ei_lte_rrc_too_many_group_a_rapids;
361 static expert_field ei_lte_rrc_invalid_drx_config;
363 static const unit_name_string units_sr_periods = { " SR period", " SR periods" };
364 static const unit_name_string units_short_drx_cycles = { " shortDRX-Cycle", " shortDRX-Cycles" };
366 static reassembly_table lte_rrc_sib11_reassembly_table;
367 static reassembly_table lte_rrc_sib12_reassembly_table;
368 static reassembly_table lte_rrc_dcch_segment_reassembly_table;
370 static const fragment_items lte_rrc_sib11_frag_items = {
371 &ett_lte_rrc_sib11_fragment,
372 &ett_lte_rrc_sib11_fragments,
373 &hf_lte_rrc_sib11_fragments,
374 &hf_lte_rrc_sib11_fragment,
375 &hf_lte_rrc_sib11_fragment_overlap,
376 &hf_lte_rrc_sib11_fragment_overlap_conflict,
377 &hf_lte_rrc_sib11_fragment_multiple_tails,
378 &hf_lte_rrc_sib11_fragment_too_long_fragment,
379 &hf_lte_rrc_sib11_fragment_error,
380 &hf_lte_rrc_sib11_fragment_count,
381 &hf_lte_rrc_sib11_reassembled_in,
382 &hf_lte_rrc_sib11_reassembled_length,
383 &hf_lte_rrc_sib11_reassembled_data,
384 "SIB11 warning message segments"
387 static const fragment_items lte_rrc_sib12_frag_items = {
388 &ett_lte_rrc_sib12_fragment,
389 &ett_lte_rrc_sib12_fragments,
390 &hf_lte_rrc_sib12_fragments,
391 &hf_lte_rrc_sib12_fragment,
392 &hf_lte_rrc_sib12_fragment_overlap,
393 &hf_lte_rrc_sib12_fragment_overlap_conflict,
394 &hf_lte_rrc_sib12_fragment_multiple_tails,
395 &hf_lte_rrc_sib12_fragment_too_long_fragment,
396 &hf_lte_rrc_sib12_fragment_error,
397 &hf_lte_rrc_sib12_fragment_count,
398 &hf_lte_rrc_sib12_reassembled_in,
399 &hf_lte_rrc_sib12_reassembled_length,
400 &hf_lte_rrc_sib12_reassembled_data,
401 "SIB12 warning message segments"
404 static const fragment_items lte_rrc_dcch_segment_frag_items = {
405 &ett_lte_rrc_dcch_segment_fragment,
406 &ett_lte_rrc_dcch_segment_fragments,
407 &hf_lte_rrc_dcch_segment_fragments,
408 &hf_lte_rrc_dcch_segment_fragment,
409 &hf_lte_rrc_dcch_segment_fragment_overlap,
410 &hf_lte_rrc_dcch_segment_fragment_overlap_conflict,
411 &hf_lte_rrc_dcch_segment_fragment_multiple_tails,
412 &hf_lte_rrc_dcch_segment_fragment_too_long_fragment,
413 &hf_lte_rrc_dcch_segment_fragment_error,
414 &hf_lte_rrc_dcch_segment_fragment_count,
415 &hf_lte_rrc_dcch_segment_reassembled_in,
416 &hf_lte_rrc_dcch_segment_reassembled_length,
417 &hf_lte_rrc_dcch_segment_reassembled_data,
418 "DCCH message segments"
421 /* Forward declarations */
422 static int dissect_UECapabilityInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
423 static int dissect_RRCConnectionReconfiguration_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
425 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_1_val = {
426 "Intra-subframe freq hopping for PUSCH scheduled by UL grant; DCI format 3a; Aperiodic CQI/PMI/RI report on PUSCH: Mode 2-0 & 2-2 - Supported",
427 "Intra-subframe freq hopping for PUSCH scheduled by UL grant; DCI format 3a; Aperiodic CQI/PMI/RI report on PUSCH: Mode 2-0 & 2-2 - Not supported"
429 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_2_val = {
430 "Simultaneous CQI & ACK/NACK on PUCCH (format 2a/2b); Absolute TPC command for PUSCH; Resource alloc type 1 for PDSCH; Periodic CQI/PMI/RI report on PUCCH: Mode 2-0 & 2-1 - Supported",
431 "Simultaneous CQI & ACK/NACK on PUCCH (format 2a/2b); Absolute TPC command for PUSCH; Resource alloc type 1 for PDSCH; Periodic CQI/PMI/RI report on PUCCH: Mode 2-0 & 2-1 - Not supported"
433 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_3_val = {
434 "5bit RLC UM SN; 7bit PDCP SN - Supported",
435 "5bit RLC UM SN; 7bit PDCP SN - Not supported"
437 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_4_val = {
438 "Short DRX cycle - Supported",
439 "Short DRX cycle - Not supported"
441 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_5_val = {
442 "Long DRX cycle; DRX command MAC control element - Supported",
443 "Long DRX cycle; DRX command MAC control element - Not supported"
445 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_6_val = {
446 "Prioritised bit rate - Supported",
447 "Prioritised bit rate - Not supported"
449 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_7_val = {
450 "RLC UM - Supported",
451 "RLC UM - Not supported"
453 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_8_val = {
454 "EUTRA RRC_CONNECTED to UTRA CELL_DCH PS handover - Supported",
455 "EUTRA RRC_CONNECTED to UTRA CELL_DCH PS handover - Not supported"
457 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_9_val = {
458 "EUTRA RRC_CONNECTED to GERAN GSM_Dedicated handover - Supported",
459 "EUTRA RRC_CONNECTED to GERAN GSM_Dedicated handover - Not Supported"
461 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_10_val = {
462 "EUTRA RRC_CONNECTED to GERAN (Packet_) Idle by Cell Change Order; EUTRA RRC_CONNECTED to GERAN (Packet_) Idle by Cell Change Order with NACC - Supported",
463 "EUTRA RRC_CONNECTED to GERAN (Packet_) Idle by Cell Change Order; EUTRA RRC_CONNECTED to GERAN (Packet_) Idle by Cell Change Order with NACC - Not supported"
465 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_11_val = {
466 "EUTRA RRC_CONNECTED to CDMA2000 1xRTT CS Active handover - Supported",
467 "EUTRA RRC_CONNECTED to CDMA2000 1xRTT CS Active handover - Not supported"
469 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_12_val = {
470 "EUTRA RRC_CONNECTED to CDMA2000 HRPD Active handover - Supported",
471 "EUTRA RRC_CONNECTED to CDMA2000 HRPD Active handover - Not supported"
473 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_13_val = {
474 "Inter-frequency handover (within FDD or TDD) - Supported",
475 "Inter-frequency handover (within FDD or TDD) - Not supported"
477 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_14_val = {
478 "Measurement reporting event: Event A4 - Neighbour > threshold; Measurement reporting event: Event A5 - Serving < threshold1 & Neighbour > threshold2 - Supported",
479 "Measurement reporting event: Event A4 - Neighbour > threshold; Measurement reporting event: Event A5 - Serving < threshold1 & Neighbour > threshold2 - Not supported"
481 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_15_val = {
482 "Measurement reporting event: Event B1 - Neighbour > threshold - Supported",
483 "Measurement reporting event: Event B1 - Neighbour > threshold - Not supported"
485 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_16_val = {
486 "non-ANR related periodical measurement reporting - Supported",
487 "non-ANR related periodical measurement reporting - Not supported"
489 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_17_val = {
490 "ANR related intra-frequency measurement reporting events - Supported",
491 "ANR related intra-frequency measurement reporting events - Not supported"
493 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_18_val = {
494 "ANR related inter-frequency measurement reporting events - Supported",
495 "ANR related inter-frequency measurement reporting events - Not supported"
497 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_19_val = {
498 "ANR related inter-RAT measurement reporting events - Supported",
499 "ANR related inter-RAT measurement reporting events - Not supported"
501 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_20_val = {
502 "SRB1 and SRB2 for DCCH + 8x AM DRB; SRB1 and SRB2 for DCCH + 5x AM DRB + 3x UM DRB (if indicator 7 is supported) - Supported",
503 "SRB1 and SRB2 for DCCH + 8x AM DRB; SRB1 and SRB2 for DCCH + 5x AM DRB + 3x UM DRB (if indicator 7 is supported) - Not supported"
505 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_21_val = {
506 "Predefined intra- and inter-subframe frequency hopping for PUSCH with N_sb > 1; Predefined inter-subframe frequency hopping for PUSCH with N_sb > 1 - Supported",
507 "Predefined intra- and inter-subframe frequency hopping for PUSCH with N_sb > 1; Predefined inter-subframe frequency hopping for PUSCH with N_sb > 1 - Not supported"
509 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_22_val = {
510 "UTRAN measurements, reporting and measurement reporting event B2 in E-UTRA connected mode - Supported",
511 "UTRAN measurements, reporting and measurement reporting event B2 in E-UTRA connected mode - Not supported"
513 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_23_val = {
514 "GERAN measurements, reporting and measurement reporting event B2 in E-UTRA connected mode - Supported",
515 "GERAN measurements, reporting and measurement reporting event B2 in E-UTRA connected mode - Not supported"
517 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_24_val = {
518 "1xRTT measurements, reporting and measurement reporting event B2 in E-UTRA connected mode - Supported",
519 "1xRTT measurements, reporting and measurement reporting event B2 in E-UTRA connected mode - Not supported"
521 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_25_val = {
522 "Inter-frequency measurements and reporting in E-UTRA connected mode - Supported",
523 "Inter-frequency measurements and reporting in E-UTRA connected mode - Not supported"
525 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_26_val = {
526 "HRPD measurements, reporting and measurement reporting event B2 in E-UTRA connected mode - Supported",
527 "HRPD measurements, reporting and measurement reporting event B2 in E-UTRA connected mode - Not supported"
529 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_27_val = {
530 "EUTRA RRC_CONNECTED to UTRA CELL_DCH CS handover - Supported",
531 "EUTRA RRC_CONNECTED to UTRA CELL_DCH CS handover - Not supported"
533 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_28_val = {
534 "TTI bundling - Supported",
535 "TTI bundling - Not supported"
537 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_29_val = {
538 "Semi-Persistent Scheduling - Supported",
539 "Semi-Persistent Scheduling - Not supported"
541 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_30_val = {
542 "Handover between FDD and TDD - Supported",
543 "Handover between FDD and TDD - Not supported"
545 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_31_val = {
546 "Mechanisms defined for cells broadcasting multi band information - Supported",
547 "Mechanisms defined for cells broadcasting multi band information - Not supported"
549 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_32_val = {
550 "Undefined - Supported",
551 "Undefined - Not supported"
553 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_33_val = {
554 "Inter-RAT ANR features for UTRAN FDD - Supported",
555 "Inter-RAT ANR features for UTRAN FDD - Not supported"
557 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_34_val = {
558 "Inter-RAT ANR features for GERAN - Supported",
559 "Inter-RAT ANR features for GERAN - Not supported"
561 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_35_val = {
562 "Inter-RAT ANR features for 1xRTT - Supported",
563 "Inter-RAT ANR features for 1xRTT - Not supported"
565 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_36_val = {
566 "Inter-RAT ANR features for HRPD - Supported",
567 "Inter-RAT ANR features for HRPD - Not supported"
569 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_37_val = {
570 "Inter-RAT ANR features for UTRAN TDD - Supported",
571 "Inter-RAT ANR features for UTRAN TDD - Not supported"
573 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_38_val = {
574 "EUTRA RRC_CONNECTED to UTRA TDD CELL_DCH PS handover - Supported",
575 "EUTRA RRC_CONNECTED to UTRA TDD CELL_DCH PS handover - Not supported"
577 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_39_val = {
578 "UTRAN TDD measurements, reporting and measurement reporting event B2 in E-UTRA connected mode - Supported",
579 "UTRAN TDD measurements, reporting and measurement reporting event B2 in E-UTRA connected mode - Not supported"
581 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_40_val = {
582 "EUTRA RRC_CONNECTED to UTRA TDD CELL_DCH CS handover - Supported",
583 "EUTRA RRC_CONNECTED to UTRA TDD CELL_DCH CS handover - Not supported"
585 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_41_val = {
586 "Measurement reporting event: Event B1 - Neighbour > threshold for UTRAN FDD - Supported",
587 "Measurement reporting event: Event B1 - Neighbour > threshold for UTRAN FDD - Not supported"
589 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_42_val = {
590 "DCI format 3a - Supported",
591 "DCI format 3a - Not supported"
593 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_43_val = {
594 "Undefined - Supported",
595 "Undefined - Not supported"
597 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_44_val = {
598 "Undefined - Supported",
599 "Undefined - Not supported"
601 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_45_val = {
602 "Undefined - Supported",
603 "Undefined - Not supported"
605 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_46_val = {
606 "Undefined - Supported",
607 "Undefined - Not supported"
609 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_47_val = {
610 "Undefined - Supported",
611 "Undefined - Not supported"
613 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_48_val = {
614 "Undefined - Supported",
615 "Undefined - Not supported"
617 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_49_val = {
618 "Undefined - Supported",
619 "Undefined - Not supported"
621 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_50_val = {
622 "Undefined - Supported",
623 "Undefined - Not supported"
625 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_51_val = {
626 "Undefined - Supported",
627 "Undefined - Not supported"
629 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_52_val = {
630 "Undefined - Supported",
631 "Undefined - Not supported"
633 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_53_val = {
634 "Undefined - Supported",
635 "Undefined - Not supported"
637 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_54_val = {
638 "Undefined - Supported",
639 "Undefined - Not supported"
641 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_55_val = {
642 "Undefined - Supported",
643 "Undefined - Not supported"
645 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_56_val = {
646 "Undefined - Supported",
647 "Undefined - Not supported"
649 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_57_val = {
650 "Undefined - Supported",
651 "Undefined - Not supported"
653 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_58_val = {
654 "Undefined - Supported",
655 "Undefined - Not supported"
657 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_59_val = {
658 "Undefined - Supported",
659 "Undefined - Not supported"
661 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_60_val = {
662 "Undefined - Supported",
663 "Undefined - Not supported"
665 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_61_val = {
666 "Undefined - Supported",
667 "Undefined - Not supported"
669 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_62_val = {
670 "Undefined - Supported",
671 "Undefined - Not supported"
673 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_63_val = {
674 "Undefined - Supported",
675 "Undefined - Not supported"
677 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_64_val = {
678 "Undefined - Supported",
679 "Undefined - Not supported"
681 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_101_val = {
682 "DMRS with OCC (orthogonal cover code) and SGH (sequence group hopping) disabling - Supported",
683 "DMRS with OCC (orthogonal cover code) and SGH (sequence group hopping) disabling - Not supported"
685 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_102_val = {
686 "Trigger type 1 SRS (aperiodic SRS) transmission (Up to X ports) - Supported",
687 "Trigger type 1 SRS (aperiodic SRS) transmission (Up to X ports) - Not supported"
689 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_103_val = {
690 "PDSCH TM9 when up to 4 CSI reference signal ports are configured - Supported",
691 "PDSCH TM9 when up to 4 CSI reference signal ports are configured - Not supported"
693 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_104_val = {
694 "PDSCH TM9 for TDD when 8 CSI reference signal ports are configured - Supported",
695 "PDSCH TM9 for TDD when 8 CSI reference signal ports are configured - Not supported"
697 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_105_val = {
698 "PUCCH RM2-0 when PDSCH TM9 is configured and RM2-1 when PDSCH TM9 and up to 4 CSI reference signal ports are configured - Supported",
699 "PUCCH RM2-0 when PDSCH TM9 is configured and RM2-1 when PDSCH TM9 and up to 4 CSI reference signal ports are configured - Not supported"
701 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_106_val = {
702 "PUCCH RM2-1 when PDSCH TM9 and 8 CSI reference signal ports are configured - Supported",
703 "PUCCH RM2-1 when PDSCH TM9 and 8 CSI reference signal ports are configured - Not supported"
705 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_107_val = {
706 "PUSCH RM2-0 when PDSCH TM9 is configured and RM2-2 when PDSCH TM9 and up to 4 CSI reference signal ports are configured - Supported",
707 "PUSCH RM2-0 when PDSCH TM9 is configured and RM2-2 when PDSCH TM9 and up to 4 CSI reference signal ports are configured - Not supported"
709 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_108_val = {
710 "PUSCH RM2-2 when PDSCH TM9 and 8 CSI reference signal ports are configured - Supported",
711 "PUSCH RM2-2 when PDSCH TM9 and 8 CSI reference signal ports are configured - Not supported"
713 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_109_val = {
714 "PUCCH RM1-1 submode 1 - Supported",
715 "PUCCH RM1-1 submode 1 - Not supported"
717 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_110_val = {
718 "PUCCH RM1-1 submode 2 - Supported",
719 "PUCCH RM1-1 submode 2 - Not supported"
721 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_111_val = {
722 "Measurement reporting trigger Event A6 - Supported",
723 "Measurement reporting trigger Event A6 - Not supported"
725 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_112_val = {
726 "SCell addition within the Handover to EUTRA procedure - Supported",
727 "SCell addition within the Handover to EUTRA procedure - Not supported"
729 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_113_val = {
730 "Trigger type 0 SRS (periodic SRS) transmission on X Serving Cells - Supported",
731 "Trigger type 0 SRS (periodic SRS) transmission on X Serving Cells - Not supported"
733 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_114_val = {
734 "Reporting of both UTRA CPICH RSCP and Ec/N0 in a Measurement Report - Supported",
735 "Reporting of both UTRA CPICH RSCP and Ec/N0 in a Measurement Report - Not supported"
737 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_115_val = {
738 "Time domain ICIC RLM/RRM / ICIC RRM / ICIC CSI measurement sf restriction for the serving cell / neighbour cells - Supported",
739 "Time domain ICIC RLM/RRM / ICIC RRM / ICIC CSI measurement sf restriction for the serving cell / neighbour cells - Not supported"
741 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_116_val = {
742 "Relative transmit phase continuity for spatial multiplexing in UL - Supported",
743 "Relative transmit phase continuity for spatial multiplexing in UL - Not supported"
745 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_117_val = {
746 "Undefined - Supported",
747 "Undefined - Not supported"
749 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_118_val = {
750 "Undefined - Supported",
751 "Undefined - Not supported"
753 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_119_val = {
754 "Undefined - Supported",
755 "Undefined - Not supported"
757 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_120_val = {
758 "Undefined - Supported",
759 "Undefined - Not supported"
761 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_121_val = {
762 "Undefined - Supported",
763 "Undefined - Not supported"
765 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_122_val = {
766 "Undefined - Supported",
767 "Undefined - Not supported"
769 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_123_val = {
770 "Undefined - Supported",
771 "Undefined - Not supported"
773 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_124_val = {
774 "Undefined - Supported",
775 "Undefined - Not supported"
777 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_125_val = {
778 "Undefined - Supported",
779 "Undefined - Not supported"
781 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_126_val = {
782 "Undefined - Supported",
783 "Undefined - Not supported"
785 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_127_val = {
786 "Undefined - Supported",
787 "Undefined - Not supported"
789 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_128_val = {
790 "Undefined - Supported",
791 "Undefined - Not supported"
793 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_129_val = {
794 "Undefined - Supported",
795 "Undefined - Not supported"
797 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_130_val = {
798 "Undefined - Supported",
799 "Undefined - Not supported"
801 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_131_val = {
802 "Undefined - Supported",
803 "Undefined - Not supported"
805 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_132_val = {
806 "Undefined - Supported",
807 "Undefined - Not supported"
810 static const value_string lte_rrc_schedulingInfoSIB1_BR_r13_vals[] = {
811 { 0, "SystemInformationBlockType1-BR is not scheduled"},
812 { 1, "4 PDSCH repetitions - TBS 208 bits"},
813 { 2, "8 PDSCH repetitions - TBS 208 bits"},
814 { 3, "16 PDSCH repetitions - TBS 208 bits"},
815 { 4, "4 PDSCH repetitions - TBS 256 bits"},
816 { 5, "8 PDSCH repetitions - TBS 256 bits"},
817 { 6, "16 PDSCH repetitions - TBS 256 bits"},
818 { 7, "4 PDSCH repetitions - TBS 328 bits"},
819 { 8, "8 PDSCH repetitions - TBS 328 bits"},
820 { 9, "16 PDSCH repetitions - TBS 328 bits"},
821 { 10, "4 PDSCH repetitions - TBS 504 bits"},
822 { 11, "8 PDSCH repetitions - TBS 504 bits"},
823 { 12, "16 PDSCH repetitions - TBS 504 bits"},
824 { 13, "4 PDSCH repetitions - TBS 712 bits"},
825 { 14, "8 PDSCH repetitions - TBS 712 bits"},
826 { 15, "16 PDSCH repetitions - TBS 712 bits"},
827 { 16, "4 PDSCH repetitions - TBS 936 bits"},
828 { 17, "8 PDSCH repetitions - TBS 936 bits"},
829 { 18, "16 PDSCH repetitions - TBS 936 bits"},
830 { 0, NULL}
832 static value_string_ext lte_rrc_schedulingInfoSIB1_BR_r13_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_schedulingInfoSIB1_BR_r13_vals);
834 static const value_string lte_rrc_q_RxLevMin_vals[] = {
835 { -70, "-140dBm"},
836 { -69, "-138dBm"},
837 { -68, "-136dBm"},
838 { -67, "-134dBm"},
839 { -66, "-132dBm"},
840 { -65, "-130dBm"},
841 { -64, "-128dBm"},
842 { -63, "-126dBm"},
843 { -62, "-124dBm"},
844 { -61, "-122dBm"},
845 { -60, "-120dBm"},
846 { -59, "-118dBm"},
847 { -58, "-116dBm"},
848 { -57, "-114dBm"},
849 { -56, "-112dBm"},
850 { -55, "-110dBm"},
851 { -54, "-108dBm"},
852 { -53, "-106dBm"},
853 { -52, "-104dBm"},
854 { -51, "-102dBm"},
855 { -50, "-100dBm"},
856 { -49, "-98dBm"},
857 { -48, "-96dBm"},
858 { -47, "-94dBm"},
859 { -46, "-92dBm"},
860 { -45, "-90dBm"},
861 { -44, "-88dBm"},
862 { -43, "-86dBm"},
863 { -42, "-84dBm"},
864 { -41, "-82dBm"},
865 { -40, "-80dBm"},
866 { -39, "-78dBm"},
867 { -38, "-76dBm"},
868 { -37, "-74dBm"},
869 { -36, "-72dBm"},
870 { -35, "-70dBm"},
871 { -34, "-68dBm"},
872 { -33, "-66dBm"},
873 { -32, "-64dBm"},
874 { -31, "-62dBm"},
875 { -30, "-60dBm"},
876 { -29, "-58dBm"},
877 { -28, "-56dBm"},
878 { -27, "-54dBm"},
879 { -26, "-52dBm"},
880 { -25, "-50dBm"},
881 { -24, "-48dBm"},
882 { -23, "-46dBm"},
883 { -22, "-44dBm"},
884 { 0, NULL}
886 static value_string_ext lte_rrc_q_RxLevMin_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_q_RxLevMin_vals);
888 static const value_string lte_rrc_q_RxLevMinOffset_vals[] = {
889 { 1, "2dB"},
890 { 2, "4dB"},
891 { 3, "6dB"},
892 { 4, "8dB"},
893 { 5, "10dB"},
894 { 6, "12dB"},
895 { 7, "14dB"},
896 { 8, "16dB"},
897 { 0, NULL}
900 static const value_string lte_rrc_delta_RxLevMin_vals[] = {
901 { -8, "-16dBm"},
902 { -7, "-14dBm"},
903 { -6, "-12dBm"},
904 { -5, "-10dBm"},
905 { -4, "-8dBm"},
906 { -3, "-6dBm"},
907 { -2, "-4dBm"},
908 { -1, "-2dBm"},
909 { 0, NULL}
912 static const value_string lte_rrc_messageSize_r14_vals[] =
914 { 0, "size = 0"},
915 { 1, "0 < size <= 10"},
916 { 2, "10 < size <= 12"},
917 { 3, "12 < size <= 14"},
918 { 4, "14 < size <= 17"},
919 { 5, "17 < size <= 19"},
920 { 6, "19 < size <= 22"},
921 { 7, "22 < size <= 26"},
922 { 8, "26 < size <= 31"},
923 { 9, "31 < size <= 36"},
924 { 10, "36 < size <= 42"},
925 { 11, "42 < size <= 49"},
926 { 12, "49 < size <= 57"},
927 { 13, "57 < size <= 67"},
928 { 14, "67 < size <= 78"},
929 { 15, "78 < size <= 91"},
930 { 16, "91 < size <= 107"},
931 { 17, "107 < size <= 125"},
932 { 18, "125 < size <= 146"},
933 { 19, "146 < size <= 171"},
934 { 20, "171 < size <= 200"},
935 { 21, "200 < size <= 234"},
936 { 22, "234 < size <= 274"},
937 { 23, "274 < size <= 321"},
938 { 24, "321 < size <= 376"},
939 { 25, "376 < size <= 440"},
940 { 26, "440 < size <= 515"},
941 { 27, "515 < size <= 603"},
942 { 28, "603 < size <= 706"},
943 { 29, "706 < size <= 826"},
944 { 30, "826 < size <= 967"},
945 { 31, "967 < size <= 1132"},
946 { 32, "1132 < size <= 1326"},
947 { 33, "1326 < size <= 1552"},
948 { 34, "1552 < size <= 1817"},
949 { 35, "1817 < size <= 2127"},
950 { 36, "2127 < size <= 2490"},
951 { 37, "2490 < size <= 2915"},
952 { 38, "2915 < size <= 3413"},
953 { 39, "3413 < size <= 3995"},
954 { 40, "3995 < size <= 4677"},
955 { 41, "4677 < size <= 5476"},
956 { 42, "5476 < size <= 6411"},
957 { 43, "6411 < size <= 7505"},
958 { 44, "7505 < size <= 8787"},
959 { 45, "8787 < size <= 10276"},
960 { 46, "10287 < size <= 12043"},
961 { 47, "12043 < size <= 14099"},
962 { 48, "14099 < size <= 16507"},
963 { 49, "16507 < size <= 19325"},
964 { 50, "19325 < size <= 22624"},
965 { 51, "22624 < size <= 26487"},
966 { 52, "26487 < size <= 31009"},
967 { 53, "31009 < size <= 36304"},
968 { 54, "36304 < size <= 42502"},
969 { 55, "42502 < size <= 49759"},
970 { 56, "49759 < size <= 58255"},
971 { 57, "58255 < size <= 68201"},
972 { 58, "68201 < size <= 79846"},
973 { 59, "79846 < size <= 93479"},
974 { 60, "93479 < size <= 109439"},
975 { 61, "109439 < size <= 128125"},
976 { 62, "128125 < size <= 150000"},
977 { 63, "size > 150000"},
978 { 0, NULL }
980 static value_string_ext lte_rrc_messageSize_r14_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_messageSize_r14_vals);
982 static void
983 lte_rrc_timeConnFailure_r10_fmt(char *s, uint32_t v)
985 snprintf(s, ITEM_LABEL_LENGTH, "%ums (%u)", 100*v, v);
988 static const value_string lte_rrc_n_r12_vals[] = {
989 { 0, "0 <= Nr < 256"},
990 { 1, "256 <= Nr < 768"},
991 { 2, "768 <= Nr < 1792"},
992 { 3, "1792 <= Nr < 3840"},
993 { 4, "3840 <= Nr < 7936"},
994 { 5, "7936 <= Nr < 16128"},
995 { 6, "16128 <= Nr < 32512"},
996 { 7, "32512 <= Nr"},
997 { 0, NULL},
1000 static void
1001 lte_rrc_m_r12_fmt(char *s, uint32_t v)
1003 if (v == 255) {
1004 snprintf(s, ITEM_LABEL_LENGTH, "255 <= f(Nr) (255)");
1005 } else {
1006 snprintf(s, ITEM_LABEL_LENGTH, "%u <= f(Nr) < %u (%u)", v, v+1, v);
1010 static const value_string lte_rrc_BLER_Range_r12_vals[] = {
1011 { 0, "BLER < 0.1%"},
1012 { 1, "0.1% <= BLER < 0.123%"},
1013 { 2, "0.123% <= BLER < 0.151%"},
1014 { 3, "0.151% <= BLER < 0.186%"},
1015 { 4, "0.186% <= BLER < 0.229%"},
1016 { 5, "0.229% <= BLER < 0.282%"},
1017 { 6, "0.282% <= BLER < 0.347%"},
1018 { 7, "0.347% <= BLER < 0.426%"},
1019 { 8, "0.426% <= BLER < 0.525%"},
1020 { 9, "0.525% <= BLER < 0.645%"},
1021 { 10, "0.645% <= BLER < 0.794%"},
1022 { 11, "0.794% <= BLER < 0.976%"},
1023 { 12, "0.976% <= BLER < 1.201%"},
1024 { 13, "1.201% <= BLER < 1.478%"},
1025 { 14, "1.478% <= BLER < 1.818%"},
1026 { 15, "1.818% <= BLER < 2.236%"},
1027 { 16, "2.236% <= BLER < 2.751%"},
1028 { 17, "2.751% <= BLER < 3.384%"},
1029 { 18, "3.384% <= BLER < 4.163%"},
1030 { 19, "4.163% <= BLER < 5.121%"},
1031 { 20, "5.121% <= BLER < 6.300%"},
1032 { 21, "6.300% <= BLER < 7.750%"},
1033 { 22, "7.750% <= BLER < 9.533%"},
1034 { 23, "9.533% <= BLER < 11.728%"},
1035 { 24, "11.728% <= BLER < 14.427%"},
1036 { 25, "14.427% <= BLER < 17.478%"},
1037 { 26, "17.478% <= BLER < 21.833%"},
1038 { 27, "21.833% <= BLER < 26.858%"},
1039 { 28, "26.858% <= BLER < 33.040%"},
1040 { 29, "33.040% <= BLER < 40.645%"},
1041 { 30, "40.645% <= BLER < 50%"},
1042 { 31, "50% <= BLER"},
1043 { 0, NULL}
1045 static value_string_ext lte_rrc_BLER_Range_r12_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_BLER_Range_r12_vals);
1047 static const value_string lte_rrc_utra_q_RxLevMin_vals[] = {
1048 { -60, "-119dBm"},
1049 { -59, "-117dBm"},
1050 { -58, "-115dBm"},
1051 { -57, "-113dBm"},
1052 { -56, "-111dBm"},
1053 { -55, "-109dBm"},
1054 { -54, "-107dBm"},
1055 { -53, "-105dBm"},
1056 { -52, "-103dBm"},
1057 { -51, "-101dBm"},
1058 { -50, "-99dBm"},
1059 { -49, "-97dBm"},
1060 { -48, "-95dBm"},
1061 { -47, "-93dBm"},
1062 { -46, "-91dBm"},
1063 { -45, "-89dBm"},
1064 { -44, "-87dBm"},
1065 { -43, "-85dBm"},
1066 { -42, "-83dBm"},
1067 { -41, "-81dBm"},
1068 { -40, "-79dBm"},
1069 { -39, "-77dBm"},
1070 { -38, "-75dBm"},
1071 { -37, "-73dBm"},
1072 { -36, "-71dBm"},
1073 { -35, "-69dBm"},
1074 { -34, "-67dBm"},
1075 { -33, "-65dBm"},
1076 { -32, "-63dBm"},
1077 { -31, "-61dBm"},
1078 { -30, "-59dBm"},
1079 { -29, "-57dBm"},
1080 { -28, "-55dBm"},
1081 { -27, "-53dBm"},
1082 { -26, "-51dBm"},
1083 { -25, "-49dBm"},
1084 { -24, "-47dBm"},
1085 { -23, "-45dBm"},
1086 { -22, "-43dBm"},
1087 { -21, "-41dBm"},
1088 { -20, "-39dBm"},
1089 { -19, "-37dBm"},
1090 { -18, "-35dBm"},
1091 { -17, "-33dBm"},
1092 { -16, "-31dBm"},
1093 { -15, "-29dBm"},
1094 { -14, "-27dBm"},
1095 { -13, "-25dBm"},
1096 { 0, NULL}
1098 static value_string_ext lte_rrc_utra_q_RxLevMin_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_utra_q_RxLevMin_vals);
1100 static const value_string lte_rrc_geran_q_RxLevMin_vals[] = {
1101 { 0 , "-115dBm"},
1102 { 1 , "-113dBm"},
1103 { 2 , "-111dBm"},
1104 { 3 , "-109dBm"},
1105 { 4 , "-107dBm"},
1106 { 5 , "-105dBm"},
1107 { 6 , "-103dBm"},
1108 { 7 , "-101dBm"},
1109 { 8 , "-99dBm"},
1110 { 9 , "-97dBm"},
1111 { 10, "-95dBm"},
1112 { 11, "-93dBm"},
1113 { 12, "-91dBm"},
1114 { 13, "-89dBm"},
1115 { 14, "-87dBm"},
1116 { 15, "-85dBm"},
1117 { 16, "-83dBm"},
1118 { 17, "-81dBm"},
1119 { 18, "-79dBm"},
1120 { 19, "-77dBm"},
1121 { 20, "-75dBm"},
1122 { 21, "-73dBm"},
1123 { 22, "-71dBm"},
1124 { 23, "-69dBm"},
1125 { 24, "-67dBm"},
1126 { 25, "-65dBm"},
1127 { 26, "-63dBm"},
1128 { 27, "-61dBm"},
1129 { 28, "-59dBm"},
1130 { 29, "-57dBm"},
1131 { 30, "-55dBm"},
1132 { 31, "-53dBm"},
1133 { 32, "-51dBm"},
1134 { 33, "-49dBm"},
1135 { 34, "-47dBm"},
1136 { 35, "-45dBm"},
1137 { 36, "-43dBm"},
1138 { 37, "-41dBm"},
1139 { 38, "-39dBm"},
1140 { 39, "-37dBm"},
1141 { 40, "-35dBm"},
1142 { 41, "-33dBm"},
1143 { 42, "-31dBm"},
1144 { 43, "-29dBm"},
1145 { 44, "-27dBm"},
1146 { 45, "-25dBm"},
1147 { 0, NULL}
1149 static value_string_ext lte_rrc_geran_q_RxLevMin_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_geran_q_RxLevMin_vals);
1151 static const value_string lte_rrc_nomPDSCH_RS_EPRE_Offset_vals[] = {
1152 { -1, "-2dB"},
1153 { 0, "0dB"},
1154 { 1, "2dB"},
1155 { 2, "4dB"},
1156 { 3, "6dB"},
1157 { 4, "8dB"},
1158 { 5, "10dB"},
1159 { 6, "12dB"},
1160 { 0, NULL}
1163 static const value_string lte_rrc_deltaPreambleMsg3_vals[] = {
1164 { -1, "-2dB"},
1165 { 0, "0dB"},
1166 { 1, "2dB"},
1167 { 2, "4dB"},
1168 { 3, "6dB"},
1169 { 4, "8dB"},
1170 { 5, "10dB"},
1171 { 6, "12dB"},
1172 { 0, NULL}
1175 static const value_string lte_rrc_ReselectionThreshold_vals[] = {
1176 { 0 , "0dB"},
1177 { 1 , "2dB"},
1178 { 2 , "4dB"},
1179 { 3 , "6dB"},
1180 { 4 , "8dB"},
1181 { 5 , "10dB"},
1182 { 6 , "12dB"},
1183 { 7 , "14dB"},
1184 { 8 , "16dB"},
1185 { 9 , "18dB"},
1186 { 10, "20dB"},
1187 { 11, "22dB"},
1188 { 12, "24dB"},
1189 { 13, "26dB"},
1190 { 14, "28dB"},
1191 { 15, "30dB"},
1192 { 16, "32dB"},
1193 { 17, "34dB"},
1194 { 18, "36dB"},
1195 { 19, "38dB"},
1196 { 20, "40dB"},
1197 { 21, "42dB"},
1198 { 22, "44dB"},
1199 { 23, "46dB"},
1200 { 24, "48dB"},
1201 { 25, "50dB"},
1202 { 26, "52dB"},
1203 { 27, "54dB"},
1204 { 28, "56dB"},
1205 { 29, "58dB"},
1206 { 30, "60dB"},
1207 { 31, "62dB"},
1208 { 0, NULL}
1210 static value_string_ext lte_rrc_ReselectionThreshold_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_ReselectionThreshold_vals);
1212 static const value_string lte_rrc_ReselectionThreshold_NB_vals[] = {
1213 { 32, "64dB"},
1214 { 33, "66dB"},
1215 { 34, "68dB"},
1216 { 35, "70dB"},
1217 { 36, "72dB"},
1218 { 37, "74dB"},
1219 { 38, "76dB"},
1220 { 39, "78dB"},
1221 { 40, "80dB"},
1222 { 41, "82dB"},
1223 { 42, "84dB"},
1224 { 43, "86dB"},
1225 { 44, "88dB"},
1226 { 45, "90dB"},
1227 { 46, "92dB"},
1228 { 47, "94dB"},
1229 { 48, "96dB"},
1230 { 49, "98dB"},
1231 { 50, "100dB"},
1232 { 51, "102dB"},
1233 { 52, "104dB"},
1234 { 53, "106dB"},
1235 { 54, "108dB"},
1236 { 55, "110dB"},
1237 { 56, "112dB"},
1238 { 57, "114dB"},
1239 { 58, "116dB"},
1240 { 59, "118dB"},
1241 { 60, "120dB"},
1242 { 61, "122dB"},
1243 { 62, "124dB"},
1244 { 63, "126dB"},
1245 { 0, NULL}
1247 static value_string_ext lte_rrc_ReselectionThreshold_NB_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_ReselectionThreshold_NB_vals);
1249 static const value_string lte_rrc_Hysteresis_vals[] = {
1250 { 0 , "0dB"},
1251 { 1 , "0.5dB"},
1252 { 2 , "1dB"},
1253 { 3 , "1.5dB"},
1254 { 4 , "2dB"},
1255 { 5 , "2.5dB"},
1256 { 6 , "3dB"},
1257 { 7 , "3.5dB"},
1258 { 8 , "4dB"},
1259 { 9 , "4.5dB"},
1260 { 10, "5dB"},
1261 { 11, "5.5dB"},
1262 { 12, "6dB"},
1263 { 13, "6.5dB"},
1264 { 14, "7dB"},
1265 { 15, "7.5dB"},
1266 { 16, "8dB"},
1267 { 17, "8.5dB"},
1268 { 18, "9dB"},
1269 { 19, "9.5dB"},
1270 { 20, "10dB"},
1271 { 21, "10.5dB"},
1272 { 22, "11dB"},
1273 { 23, "11.5dB"},
1274 { 24, "12dB"},
1275 { 25, "12.5dB"},
1276 { 26, "13dB"},
1277 { 27, "13.5dB"},
1278 { 28, "14dB"},
1279 { 29, "14.5dB"},
1280 { 30, "15dB"},
1281 { 0, NULL}
1283 static value_string_ext lte_rrc_Hysteresis_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_Hysteresis_vals);
1285 static const value_string lte_rrc_s_Measure_vals[] = {
1286 { 0, "disabled"},
1287 { 1, "-139dBm"},
1288 { 2, "-138dBm"},
1289 { 3, "-137dBm"},
1290 { 4, "-136dBm"},
1291 { 5, "-135dBm"},
1292 { 6, "-134dBm"},
1293 { 7, "-133dBm"},
1294 { 8, "-132dBm"},
1295 { 9, "-131dBm"},
1296 { 10, "-130dBm"},
1297 { 11, "-129dBm"},
1298 { 12, "-128dBm"},
1299 { 13, "-127dBm"},
1300 { 14, "-126dBm"},
1301 { 15, "-125dBm"},
1302 { 16, "-124dBm"},
1303 { 17, "-123dBm"},
1304 { 18, "-122dBm"},
1305 { 19, "-121dBm"},
1306 { 20, "-120dBm"},
1307 { 21, "-119dBm"},
1308 { 22, "-118dBm"},
1309 { 23, "-117dBm"},
1310 { 24, "-116dBm"},
1311 { 25, "-115dBm"},
1312 { 26, "-114dBm"},
1313 { 27, "-113dBm"},
1314 { 28, "-112dBm"},
1315 { 29, "-111dBm"},
1316 { 30, "-110dBm"},
1317 { 31, "-109dBm"},
1318 { 32, "-108dBm"},
1319 { 33, "-107dBm"},
1320 { 34, "-106dBm"},
1321 { 35, "-105dBm"},
1322 { 36, "-104dBm"},
1323 { 37, "-103dBm"},
1324 { 38, "-102dBm"},
1325 { 39, "-101dBm"},
1326 { 40, "-100dBm"},
1327 { 41, "-99dBm"},
1328 { 42, "-98dBm"},
1329 { 43, "-97dBm"},
1330 { 44, "-96dBm"},
1331 { 45, "-95dBm"},
1332 { 46, "-94dBm"},
1333 { 47, "-93dBm"},
1334 { 48, "-92dBm"},
1335 { 49, "-91dBm"},
1336 { 50, "-90dBm"},
1337 { 51, "-89dBm"},
1338 { 52, "-88dBm"},
1339 { 53, "-87dBm"},
1340 { 54, "-86dBm"},
1341 { 55, "-85dBm"},
1342 { 56, "-84dBm"},
1343 { 57, "-83dBm"},
1344 { 58, "-82dBm"},
1345 { 59, "-81dBm"},
1346 { 60, "-80dBm"},
1347 { 61, "-79dBm"},
1348 { 62, "-78dBm"},
1349 { 63, "-77dBm"},
1350 { 64, "-76dBm"},
1351 { 65, "-75dBm"},
1352 { 66, "-74dBm"},
1353 { 67, "-73dBm"},
1354 { 68, "-72dBm"},
1355 { 69, "-71dBm"},
1356 { 70, "-70dBm"},
1357 { 71, "-69dBm"},
1358 { 72, "-68dBm"},
1359 { 73, "-67dBm"},
1360 { 74, "-66dBm"},
1361 { 75, "-65dBm"},
1362 { 76, "-64dBm"},
1363 { 77, "-63dBm"},
1364 { 78, "-62dBm"},
1365 { 79, "-61dBm"},
1366 { 80, "-60dBm"},
1367 { 81, "-59dBm"},
1368 { 82, "-58dBm"},
1369 { 83, "-57dBm"},
1370 { 84, "-56dBm"},
1371 { 85, "-55dBm"},
1372 { 86, "-54dBm"},
1373 { 87, "-53dBm"},
1374 { 88, "-52dBm"},
1375 { 89, "-51dBm"},
1376 { 90, "-50dBm"},
1377 { 91, "-49dBm"},
1378 { 92, "-48dBm"},
1379 { 93, "-47dBm"},
1380 { 94, "-46dBm"},
1381 { 95, "-45dBm"},
1382 { 96, "-44dBm"},
1383 { 97, "-43dBm"},
1384 { 0, NULL}
1386 static value_string_ext lte_rrc_s_Measure_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_s_Measure_vals);
1388 static const value_string lte_rrc_utra_EcN0_vals[] = {
1389 { 0 , "CPICH Ec/Io < -24dB"},
1390 { 1 , "-24dB <= CPICH Ec/Io < -23.5dB"},
1391 { 2 , "-23.5dB <= CPICH Ec/Io < -23dB"},
1392 { 3 , "-23dB <= CPICH Ec/Io < -22.5dB"},
1393 { 4 , "-22.5dB <= CPICH Ec/Io < -22dB"},
1394 { 5 , "-22dB <= CPICH Ec/Io < -21.5dB"},
1395 { 6 , "-21.5dB <= CPICH Ec/Io < -21dB"},
1396 { 7 , "-21dB <= CPICH Ec/Io < -20.5dB"},
1397 { 8 , "-20.5dB <= CPICH Ec/Io < -20dB"},
1398 { 9 , "-20dB <= CPICH Ec/Io < -19.5dB"},
1399 { 10, "-19.5dB <= CPICH Ec/Io < -19dB"},
1400 { 11, "-19dB <= CPICH Ec/Io < -18.5dB"},
1401 { 12, "-18.5dB <= CPICH Ec/Io < -18dB"},
1402 { 13, "-18dB <= CPICH Ec/Io < -17.5dB"},
1403 { 14, "-17.5dB <= CPICH Ec/Io < -17dB"},
1404 { 15, "-17dB <= CPICH Ec/Io < -16.5dB"},
1405 { 16, "-16.5dB <= CPICH Ec/Io < -16dB"},
1406 { 17, "-16dB <= CPICH Ec/Io < -15.5dB"},
1407 { 18, "-15.5dB <= CPICH Ec/Io < -15dB"},
1408 { 19, "-15dB <= CPICH Ec/Io < -14.5dB"},
1409 { 20, "-14.5dB <= CPICH Ec/Io < -14dB"},
1410 { 21, "-14dB <= CPICH Ec/Io < -13.5dB"},
1411 { 22, "-13.5dB <= CPICH Ec/Io < -13dB"},
1412 { 23, "-13dB <= CPICH Ec/Io < -12.5dB"},
1413 { 24, "-12.5dB <= CPICH Ec/Io < -12dB"},
1414 { 25, "-12dB <= CPICH Ec/Io < -11.5dB"},
1415 { 26, "-11.5dB <= CPICH Ec/Io < -11dB"},
1416 { 27, "-11dB <= CPICH Ec/Io < -10.5dB"},
1417 { 28, "-10.5dB <= CPICH Ec/Io < -10dB"},
1418 { 29, "-10dB <= CPICH Ec/Io < -9.5dB"},
1419 { 30, "-9.5dB <= CPICH Ec/Io < -9dB"},
1420 { 31, "-9dB <= CPICH Ec/Io < -8.5dB"},
1421 { 32, "-8.5dB <= CPICH Ec/Io < -8dB"},
1422 { 33, "-8dB <= CPICH Ec/Io < -7.5dB"},
1423 { 34, "-7.5dB <= CPICH Ec/Io < -7dB"},
1424 { 35, "-7dB <= CPICH Ec/Io < -6.5dB"},
1425 { 36, "-6.5dB <= CPICH Ec/Io < -6dB"},
1426 { 37, "-6dB <= CPICH Ec/Io < -5.5dB"},
1427 { 38, "-5.5dB <= CPICH Ec/Io < -5dB"},
1428 { 39, "-5dB <= CPICH Ec/Io < -4.5dB"},
1429 { 40, "-4.5dB <= CPICH Ec/Io < -4dB"},
1430 { 41, "-4dB <= CPICH Ec/Io < -3.5dB"},
1431 { 42, "-3.5dB <= CPICH Ec/Io < -3dB"},
1432 { 43, "-3dB <= CPICH Ec/Io < -2.5dB"},
1433 { 44, "-2.5dB <= CPICH Ec/Io < -2dB"},
1434 { 45, "-2dB <= CPICH Ec/Io < -1.5dB"},
1435 { 46, "-1.5dB <= CPICH Ec/Io < -1dB"},
1436 { 47, "-1dB <= CPICH Ec/Io < -0.5dB"},
1437 { 48, "-0.5dB <= CPICH Ec/Io < 0dB"},
1438 { 49, "0dB <= CPICH Ec/Io"},
1439 { 0, NULL}
1441 static value_string_ext lte_rrc_utra_EcN0_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_utra_EcN0_vals);
1443 static const value_string lte_rrc_utra_RSCP_vals[] = {
1444 { -5, "RSCP < -120dBm"},
1445 { -4, "-120dBm <= RSCP < -119dBm"},
1446 { -3, "-119dBm <= RSCP < -118dBm"},
1447 { -2, "-118dBm <= RSCP < -117dBm"},
1448 { -1, "-117dBm <= RSCP < -116dBm"},
1449 { 0, "-116dBm <= RSCP < -115dBm"},
1450 { 1, "-115dBm <= RSCP < -114dBm"},
1451 { 2, "-114dBm <= RSCP < -113dBm"},
1452 { 3, "-113dBm <= RSCP < -112dBm"},
1453 { 4, "-112dBm <= RSCP < -111dBm"},
1454 { 5, "-111dBm <= RSCP < -110dBm"},
1455 { 6, "-110dBm <= RSCP < -109dBm"},
1456 { 7, "-109dBm <= RSCP < -108dBm"},
1457 { 8, "-108dBm <= RSCP < -107dBm"},
1458 { 9, "-107dBm <= RSCP < -106dBm"},
1459 { 10, "-106dBm <= RSCP < -105dBm"},
1460 { 11, "-105dBm <= RSCP < -104dBm"},
1461 { 12, "-104dBm <= RSCP < -103dBm"},
1462 { 13, "-103dBm <= RSCP < -102dBm"},
1463 { 14, "-102dBm <= RSCP < -101dBm"},
1464 { 15, "-101dBm <= RSCP < -100dBm"},
1465 { 16, "-100dBm <= RSCP < -99dBm"},
1466 { 17, "-99dBm <= RSCP < -98dBm"},
1467 { 18, "-98dBm <= RSCP < -97dBm"},
1468 { 19, "-97dBm <= RSCP < -96dBm"},
1469 { 20, "-96dBm <= RSCP < -95dBm"},
1470 { 21, "-95dBm <= RSCP < -94dBm"},
1471 { 22, "-94dBm <= RSCP < -93dBm"},
1472 { 23, "-93dBm <= RSCP < -92dBm"},
1473 { 24, "-92dBm <= RSCP < -91dBm"},
1474 { 25, "-91dBm <= RSCP < -90dBm"},
1475 { 26, "-90dBm <= RSCP < -89dBm"},
1476 { 27, "-89dBm <= RSCP < -88dBm"},
1477 { 28, "-88dBm <= RSCP < -87dBm"},
1478 { 29, "-87dBm <= RSCP < -86dBm"},
1479 { 30, "-86dBm <= RSCP < -85dBm"},
1480 { 31, "-85dBm <= RSCP < -84dBm"},
1481 { 32, "-84dBm <= RSCP < -83dBm"},
1482 { 33, "-83dBm <= RSCP < -82dBm"},
1483 { 34, "-82dBm <= RSCP < -81dBm"},
1484 { 35, "-81dBm <= RSCP < -80dBm"},
1485 { 36, "-80dBm <= RSCP < -79dBm"},
1486 { 37, "-79dBm <= RSCP < -78dBm"},
1487 { 38, "-78dBm <= RSCP < -77dBm"},
1488 { 39, "-77dBm <= RSCP < -76dBm"},
1489 { 40, "-76dBm <= RSCP < -75dBm"},
1490 { 41, "-75dBm <= RSCP < -74dBm"},
1491 { 42, "-74dBm <= RSCP < -73dBm"},
1492 { 43, "-73dBm <= RSCP < -72dBm"},
1493 { 44, "-72dBm <= RSCP < -71dBm"},
1494 { 45, "-71dBm <= RSCP < -70dBm"},
1495 { 46, "-70dBm <= RSCP < -69dBm"},
1496 { 47, "-69dBm <= RSCP < -68dBm"},
1497 { 48, "-68dBm <= RSCP < -67dBm"},
1498 { 49, "-67dBm <= RSCP < -66dBm"},
1499 { 50, "-66dBm <= RSCP < -65dBm"},
1500 { 51, "-65dBm <= RSCP < -64dBm"},
1501 { 52, "-64dBm <= RSCP < -63dBm"},
1502 { 53, "-63dBm <= RSCP < -62dBm"},
1503 { 54, "-62dBm <= RSCP < -61dBm"},
1504 { 55, "-61dBm <= RSCP < -60dBm"},
1505 { 56, "-60dBm <= RSCP < -59dBm"},
1506 { 57, "-59dBm <= RSCP < -58dBm"},
1507 { 58, "-58dBm <= RSCP < -57dBm"},
1508 { 59, "-57dBm <= RSCP < -56dBm"},
1509 { 60, "-56dBm <= RSCP < -55dBm"},
1510 { 61, "-55dBm <= RSCP < -54dBm"},
1511 { 62, "-54dBm <= RSCP < -53dBm"},
1512 { 63, "-53dBm <= RSCP < -52dBm"},
1513 { 64, "-52dBm <= RSCP < -51dBm"},
1514 { 65, "-51dBm <= RSCP < -50dBm"},
1515 { 66, "-50dBm <= RSCP < -49dBm"},
1516 { 67, "-49dBm <= RSCP < -48dBm"},
1517 { 68, "-48dBm <= RSCP < -47dBm"},
1518 { 69, "-47dBm <= RSCP < -46dBm"},
1519 { 70, "-46dBm <= RSCP < -45dBm"},
1520 { 71, "-45dBm <= RSCP < -44dBm"},
1521 { 72, "-44dBm <= RSCP < -43dBm"},
1522 { 73, "-43dBm <= RSCP < -42dBm"},
1523 { 74, "-42dBm <= RSCP < -41dBm"},
1524 { 75, "-41dBm <= RSCP < -40dBm"},
1525 { 76, "-40dBm <= RSCP < -39dBm"},
1526 { 77, "-39dBm <= RSCP < -38dBm"},
1527 { 78, "-38dBm <= RSCP < -37dBm"},
1528 { 79, "-37dBm <= RSCP < -36dBm"},
1529 { 80, "-36dBm <= RSCP < -35dBm"},
1530 { 81, "-35dBm <= RSCP < -34dBm"},
1531 { 82, "-34dBm <= RSCP < -33dBm"},
1532 { 83, "-33dBm <= RSCP < -32dBm"},
1533 { 84, "-32dBm <= RSCP < -31dBm"},
1534 { 85, "-31dBm <= RSCP < -30dBm"},
1535 { 86, "-30dBm <= RSCP < -29dBm"},
1536 { 87, "-29dBm <= RSCP < -28dBm"},
1537 { 88, "-28dBm <= RSCP < -27dBm"},
1538 { 89, "-27dBm <= RSCP < -26dBm"},
1539 { 90, "-26dBm <= RSCP < -25dBm"},
1540 { 91, "-25dBm <= RSCP"},
1541 { 0, NULL}
1543 static value_string_ext lte_rrc_utra_RSCP_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_utra_RSCP_vals);
1545 static const value_string lte_rrc_a3_a6_c2_Offset_vals[] = {
1546 { -30, "-15dB"},
1547 { -29, "-14.5dB"},
1548 { -28, "-14dB"},
1549 { -27, "-13.5dB"},
1550 { -26, "-13dB"},
1551 { -25, "-12.5dB"},
1552 { -24, "-12dB"},
1553 { -23, "-11.5dB"},
1554 { -22, "-11dB"},
1555 { -21, "-10.5dB"},
1556 { -20, "-10dB"},
1557 { -19, "-9.5dB"},
1558 { -18, "-9dB"},
1559 { -17, "-8.5dB"},
1560 { -16, "-8dB"},
1561 { -15, "-7.5dB"},
1562 { -14, "-7dB"},
1563 { -13, "-6.5dB"},
1564 { -12, "-6dB"},
1565 { -11, "-5.5dB"},
1566 { -10, "-5dB"},
1567 { -9, "-4.5dB"},
1568 { -8, "-4dB"},
1569 { -7, "-3.5dB"},
1570 { -6, "-3dB"},
1571 { -5, "-2.5dB"},
1572 { -4, "-2dB"},
1573 { -3, "-1.5dB"},
1574 { -2, "-1dB"},
1575 { -1, "-0.5dB"},
1576 { 0, "0dB"},
1577 { 1, "0.5dB"},
1578 { 2, "1dB"},
1579 { 3, "1.5dB"},
1580 { 4, "2dB"},
1581 { 5, "2.5dB"},
1582 { 6, "3dB"},
1583 { 7, "3.5dB"},
1584 { 8, "4dB"},
1585 { 9, "4.5dB"},
1586 { 10, "5dB"},
1587 { 11, "5.5dB"},
1588 { 12, "6dB"},
1589 { 13, "6.5dB"},
1590 { 14, "7dB"},
1591 { 15, "7.5dB"},
1592 { 16, "8dB"},
1593 { 17, "8.5dB"},
1594 { 18, "9dB"},
1595 { 19, "9.5dB"},
1596 { 20, "10dB"},
1597 { 21, "10.5dB"},
1598 { 22, "11dB"},
1599 { 23, "11.5dB"},
1600 { 24, "12dB"},
1601 { 25, "12.5dB"},
1602 { 26, "13dB"},
1603 { 27, "13.5dB"},
1604 { 28, "14dB"},
1605 { 29, "14.5dB"},
1606 { 30, "15dB"},
1607 { 0, NULL}
1609 static value_string_ext lte_rrc_a3_a6_c2_Offset_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_a3_a6_c2_Offset_vals);
1611 static const value_string lte_rrc_threshold_RSRP_vals[] = {
1612 { 0, "-140dBm"},
1613 { 1, "-139dBm"},
1614 { 2, "-138dBm"},
1615 { 3, "-137dBm"},
1616 { 4, "-136dBm"},
1617 { 5, "-135dBm"},
1618 { 6, "-134dBm"},
1619 { 7, "-133dBm"},
1620 { 8, "-132dBm"},
1621 { 9, "-131dBm"},
1622 { 10, "-130dBm"},
1623 { 11, "-129dBm"},
1624 { 12, "-128dBm"},
1625 { 13, "-127dBm"},
1626 { 14, "-126dBm"},
1627 { 15, "-125dBm"},
1628 { 16, "-124dBm"},
1629 { 17, "-123dBm"},
1630 { 18, "-122dBm"},
1631 { 19, "-121dBm"},
1632 { 20, "-120dBm"},
1633 { 21, "-119dBm"},
1634 { 22, "-118dBm"},
1635 { 23, "-117dBm"},
1636 { 24, "-116dBm"},
1637 { 25, "-115dBm"},
1638 { 26, "-114dBm"},
1639 { 27, "-113dBm"},
1640 { 28, "-112dBm"},
1641 { 29, "-111dBm"},
1642 { 30, "-110dBm"},
1643 { 31, "-109dBm"},
1644 { 32, "-108dBm"},
1645 { 33, "-107dBm"},
1646 { 34, "-106dBm"},
1647 { 35, "-105dBm"},
1648 { 36, "-104dBm"},
1649 { 37, "-103dBm"},
1650 { 38, "-102dBm"},
1651 { 39, "-101dBm"},
1652 { 40, "-100dBm"},
1653 { 41, "-99dBm"},
1654 { 42, "-98dBm"},
1655 { 43, "-97dBm"},
1656 { 44, "-96dBm"},
1657 { 45, "-95dBm"},
1658 { 46, "-94dBm"},
1659 { 47, "-93dBm"},
1660 { 48, "-92dBm"},
1661 { 49, "-91dBm"},
1662 { 50, "-90dBm"},
1663 { 51, "-89dBm"},
1664 { 52, "-88dBm"},
1665 { 53, "-87dBm"},
1666 { 54, "-86dBm"},
1667 { 55, "-85dBm"},
1668 { 56, "-84dBm"},
1669 { 57, "-83dBm"},
1670 { 58, "-82dBm"},
1671 { 59, "-81dBm"},
1672 { 60, "-80dBm"},
1673 { 61, "-79dBm"},
1674 { 62, "-78dBm"},
1675 { 63, "-77dBm"},
1676 { 64, "-76dBm"},
1677 { 65, "-75dBm"},
1678 { 66, "-74dBm"},
1679 { 67, "-73dBm"},
1680 { 68, "-72dBm"},
1681 { 69, "-71dBm"},
1682 { 70, "-70dBm"},
1683 { 71, "-69dBm"},
1684 { 72, "-68dBm"},
1685 { 73, "-67dBm"},
1686 { 74, "-66dBm"},
1687 { 75, "-65dBm"},
1688 { 76, "-64dBm"},
1689 { 77, "-63dBm"},
1690 { 78, "-62dBm"},
1691 { 79, "-61dBm"},
1692 { 80, "-60dBm"},
1693 { 81, "-59dBm"},
1694 { 82, "-58dBm"},
1695 { 83, "-57dBm"},
1696 { 84, "-56dBm"},
1697 { 85, "-55dBm"},
1698 { 86, "-54dBm"},
1699 { 87, "-53dBm"},
1700 { 88, "-52dBm"},
1701 { 89, "-51dBm"},
1702 { 90, "-50dBm"},
1703 { 91, "-49dBm"},
1704 { 92, "-48dBm"},
1705 { 93, "-47dBm"},
1706 { 94, "-46dBm"},
1707 { 95, "-45dBm"},
1708 { 96, "-44dBm"},
1709 { 97, "-43dBm"},
1710 { 0, NULL}
1712 static value_string_ext lte_rrc_threshold_RSRP_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_threshold_RSRP_vals);
1714 static const value_string lte_rrc_threshold_RSRQ_vals[] = {
1715 { 0, "-20dB"},
1716 { 1, "-19.5dB"},
1717 { 2, "-19dB"},
1718 { 3, "-18.5dB"},
1719 { 4, "-18dB"},
1720 { 5, "-17.5dB"},
1721 { 6, "-17dB"},
1722 { 7, "-16.5dB"},
1723 { 8, "-16dB"},
1724 { 9, "-15.5dB"},
1725 { 10, "-15dB"},
1726 { 11, "-14.5dB"},
1727 { 12, "-14dB"},
1728 { 13, "-13.5dB"},
1729 { 14, "-13dB"},
1730 { 15, "-12.5dB"},
1731 { 16, "-12dB"},
1732 { 17, "-11.5dB"},
1733 { 18, "-11dB"},
1734 { 19, "-10.5dB"},
1735 { 20, "-10dB"},
1736 { 21, "-9.5dB"},
1737 { 22, "-9dB"},
1738 { 23, "-8.5dB"},
1739 { 24, "-8dB"},
1740 { 25, "-7.5dB"},
1741 { 26, "-7dB"},
1742 { 27, "-6.5dB"},
1743 { 28, "-6dB"},
1744 { 29, "-5.5dB"},
1745 { 30, "-5dB"},
1746 { 31, "-4.5dB"},
1747 { 32, "-4dB"},
1748 { 33, "-3.5dB"},
1749 { 34, "-3dB"},
1750 { 0, NULL}
1752 static value_string_ext lte_rrc_threshold_RSRQ_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_threshold_RSRQ_vals);
1754 static const value_string lte_rrc_thresholdGERAN_vals[] = {
1755 { 0 , "-110dBm"},
1756 { 1 , "-109dBm"},
1757 { 2 , "-108dBm"},
1758 { 3 , "-107dBm"},
1759 { 4 , "-106dBm"},
1760 { 5 , "-105dBm"},
1761 { 6 , "-104dBm"},
1762 { 7 , "-103dBm"},
1763 { 8 , "-102dBm"},
1764 { 9 , "-101dBm"},
1765 { 10, "-100dBm"},
1766 { 11, "-99dBm"},
1767 { 12, "-98dBm"},
1768 { 13, "-97dBm"},
1769 { 14, "-96dBm"},
1770 { 15, "-95dBm"},
1771 { 16, "-94dBm"},
1772 { 17, "-93dBm"},
1773 { 18, "-92dBm"},
1774 { 19, "-91dBm"},
1775 { 20, "-90dBm"},
1776 { 21, "-89dBm"},
1777 { 22, "-88dBm"},
1778 { 23, "-87dBm"},
1779 { 24, "-86dBm"},
1780 { 25, "-85dBm"},
1781 { 26, "-84dBm"},
1782 { 27, "-83dBm"},
1783 { 28, "-82dBm"},
1784 { 29, "-81dBm"},
1785 { 30, "-80dBm"},
1786 { 31, "-79dBm"},
1787 { 32, "-78dBm"},
1788 { 33, "-77dBm"},
1789 { 34, "-76dBm"},
1790 { 35, "-75dBm"},
1791 { 36, "-74dBm"},
1792 { 37, "-73dBm"},
1793 { 38, "-72dBm"},
1794 { 39, "-71dBm"},
1795 { 40, "-70dBm"},
1796 { 41, "-69dBm"},
1797 { 42, "-68dBm"},
1798 { 43, "-67dBm"},
1799 { 44, "-66dBm"},
1800 { 45, "-65dBm"},
1801 { 46, "-64dBm"},
1802 { 47, "-63dBm"},
1803 { 48, "-62dBm"},
1804 { 49, "-61dBm"},
1805 { 50, "-60dBm"},
1806 { 51, "-59dBm"},
1807 { 52, "-58dBm"},
1808 { 53, "-57dBm"},
1809 { 54, "-56dBm"},
1810 { 55, "-55dBm"},
1811 { 56, "-54dBm"},
1812 { 57, "-53dBm"},
1813 { 58, "-52dBm"},
1814 { 59, "-51dBm"},
1815 { 60, "-50dBm"},
1816 { 61, "-49dBm"},
1817 { 62, "-48dBm"},
1818 { 63, "-47dBm"},
1819 { 0, NULL}
1821 static value_string_ext lte_rrc_thresholdGERAN_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_thresholdGERAN_vals);
1823 static const value_string lte_rrc_thresholdUTRA_EcN0_vals[] = {
1824 { 0 , "-24.5dB"},
1825 { 1 , "-24dB"},
1826 { 2 , "-23.5dB"},
1827 { 3 , "-23dB"},
1828 { 4 , "-22.5dB"},
1829 { 5 , "-22dB"},
1830 { 6 , "-21.5dB"},
1831 { 7 , "-21dB"},
1832 { 8 , "-20.5dB"},
1833 { 9 , "-20dB"},
1834 { 10, "-19.5dB"},
1835 { 11, "-19dB"},
1836 { 12, "-18.5dB"},
1837 { 13, "-18dB"},
1838 { 14, "-17.5dB"},
1839 { 15, "-17dB"},
1840 { 16, "-16.5dB"},
1841 { 17, "-16dB"},
1842 { 18, "-15.5dB"},
1843 { 19, "-15dB"},
1844 { 20, "-14.5dB"},
1845 { 21, "-14dB"},
1846 { 22, "-13.5dB"},
1847 { 23, "-13dB"},
1848 { 24, "-12.5dB"},
1849 { 25, "-12dB"},
1850 { 26, "-11.5dB"},
1851 { 27, "-11dB"},
1852 { 28, "-10.5dB"},
1853 { 29, "-10dB"},
1854 { 30, "-9.5dB"},
1855 { 31, "-9dB"},
1856 { 32, "-8.5dB"},
1857 { 33, "-8dB"},
1858 { 34, "-7.5dB"},
1859 { 35, "-7dB"},
1860 { 36, "-6.5dB"},
1861 { 37, "-6dB"},
1862 { 38, "-5.5dB"},
1863 { 39, "-5dB"},
1864 { 40, "-4.5dB"},
1865 { 41, "-4dB"},
1866 { 42, "-3.5dB"},
1867 { 43, "-3dB"},
1868 { 44, "-2.5dB"},
1869 { 45, "-2dB"},
1870 { 46, "-1.5dB"},
1871 { 47, "-1dB"},
1872 { 48, "-0.5dB"},
1873 { 49, "0dB"},
1874 { 0, NULL}
1876 static value_string_ext lte_rrc_thresholdUTRA_EcN0_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_thresholdUTRA_EcN0_vals);
1878 static const value_string lte_rrc_thresholdUTRA_RSCP_vals[] = {
1879 { -5, "-120dBm"},
1880 { -4, "-119dBm"},
1881 { -3, "-118dBm"},
1882 { -2, "-117dBm"},
1883 { -1, "-116dBm"},
1884 { 0, "-115dBm"},
1885 { 1, "-114dBm"},
1886 { 2, "-113dBm"},
1887 { 3, "-112dBm"},
1888 { 4, "-111dBm"},
1889 { 5, "-110dBm"},
1890 { 6, "-109dBm"},
1891 { 7, "-108dBm"},
1892 { 8, "-107dBm"},
1893 { 9, "-106dBm"},
1894 { 10, "-105dBm"},
1895 { 11, "-104dBm"},
1896 { 12, "-103dBm"},
1897 { 13, "-102dBm"},
1898 { 14, "-101dBm"},
1899 { 15, "-100dBm"},
1900 { 16, "-99dBm"},
1901 { 17, "-98dBm"},
1902 { 18, "-97dBm"},
1903 { 19, "-96dBm"},
1904 { 20, "-95dBm"},
1905 { 21, "-94dBm"},
1906 { 22, "-93dBm"},
1907 { 23, "-92dBm"},
1908 { 24, "-91dBm"},
1909 { 25, "-90dBm"},
1910 { 26, "-89dBm"},
1911 { 27, "-88dBm"},
1912 { 28, "-87dBm"},
1913 { 29, "-86dBm"},
1914 { 30, "-85dBm"},
1915 { 31, "-84dBm"},
1916 { 32, "-83dBm"},
1917 { 33, "-82dBm"},
1918 { 34, "-81dBm"},
1919 { 35, "-80dBm"},
1920 { 36, "-79dBm"},
1921 { 37, "-78dBm"},
1922 { 38, "-77dBm"},
1923 { 39, "-76dBm"},
1924 { 40, "-75dBm"},
1925 { 41, "-74dBm"},
1926 { 42, "-73dBm"},
1927 { 43, "-72dBm"},
1928 { 44, "-71dBm"},
1929 { 45, "-70dBm"},
1930 { 46, "-69dBm"},
1931 { 47, "-68dBm"},
1932 { 48, "-67dBm"},
1933 { 49, "-66dBm"},
1934 { 50, "-65dBm"},
1935 { 51, "-64dBm"},
1936 { 52, "-63dBm"},
1937 { 53, "-62dBm"},
1938 { 54, "-61dBm"},
1939 { 55, "-60dBm"},
1940 { 56, "-59dBm"},
1941 { 57, "-58dBm"},
1942 { 58, "-57dBm"},
1943 { 59, "-56dBm"},
1944 { 60, "-55dBm"},
1945 { 61, "-54dBm"},
1946 { 62, "-53dBm"},
1947 { 63, "-52dBm"},
1948 { 64, "-51dBm"},
1949 { 65, "-50dBm"},
1950 { 66, "-49dBm"},
1951 { 67, "-48dBm"},
1952 { 68, "-47dBm"},
1953 { 69, "-46dBm"},
1954 { 70, "-45dBm"},
1955 { 71, "-44dBm"},
1956 { 72, "-43dBm"},
1957 { 73, "-42dBm"},
1958 { 74, "-41dBm"},
1959 { 75, "-40dBm"},
1960 { 76, "-39dBm"},
1961 { 77, "-38dBm"},
1962 { 78, "-37dBm"},
1963 { 79, "-36dBm"},
1964 { 80, "-35dBm"},
1965 { 81, "-34dBm"},
1966 { 82, "-33dBm"},
1967 { 83, "-32dBm"},
1968 { 84, "-31dBm"},
1969 { 85, "-30dBm"},
1970 { 86, "-29dBm"},
1971 { 87, "-28dBm"},
1972 { 88, "-27dBm"},
1973 { 89, "-26dBm"},
1974 { 90, "-25dBm"},
1975 { 91, "-24dBm"},
1976 { 0, NULL}
1978 static value_string_ext lte_rrc_thresholdUTRA_RSCP_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_thresholdUTRA_RSCP_vals);
1980 static const value_string lte_rrc_RSRP_Range_vals[] = {
1981 { 0, "RSRP < -140dBm"},
1982 { 1, "-140dBm <= RSRP < -139dBm"},
1983 { 2, "-139dBm <= RSRP < -138dBm"},
1984 { 3, "-138dBm <= RSRP < -137dBm"},
1985 { 4, "-137dBm <= RSRP < -136dBm"},
1986 { 5, "-136dBm <= RSRP < -135dBm"},
1987 { 6, "-135dBm <= RSRP < -134dBm"},
1988 { 7, "-134dBm <= RSRP < -133dBm"},
1989 { 8, "-133dBm <= RSRP < -132dBm"},
1990 { 9, "-132dBm <= RSRP < -131dBm"},
1991 { 10, "-131dBm <= RSRP < -130dBm"},
1992 { 11, "-130dBm <= RSRP < -129dBm"},
1993 { 12, "-129dBm <= RSRP < -128dBm"},
1994 { 13, "-128dBm <= RSRP < -127dBm"},
1995 { 14, "-127dBm <= RSRP < -126dBm"},
1996 { 15, "-126dBm <= RSRP < -125dBm"},
1997 { 16, "-125dBm <= RSRP < -124dBm"},
1998 { 17, "-124dBm <= RSRP < -123dBm"},
1999 { 18, "-123dBm <= RSRP < -122dBm"},
2000 { 19, "-122dBm <= RSRP < -121dBm"},
2001 { 20, "-121dBm <= RSRP < -120dBm"},
2002 { 21, "-120dBm <= RSRP < -119dBm"},
2003 { 22, "-119dBm <= RSRP < -118dBm"},
2004 { 23, "-118dBm <= RSRP < -117dBm"},
2005 { 24, "-117dBm <= RSRP < -116dBm"},
2006 { 25, "-116dBm <= RSRP < -115dBm"},
2007 { 26, "-115dBm <= RSRP < -114dBm"},
2008 { 27, "-114dBm <= RSRP < -113dBm"},
2009 { 28, "-113dBm <= RSRP < -112dBm"},
2010 { 29, "-112dBm <= RSRP < -111dBm"},
2011 { 30, "-111dBm <= RSRP < -110dBm"},
2012 { 31, "-110dBm <= RSRP < -109dBm"},
2013 { 32, "-109dBm <= RSRP < -108dBm"},
2014 { 33, "-108dBm <= RSRP < -107dBm"},
2015 { 34, "-107dBm <= RSRP < -106dBm"},
2016 { 35, "-106dBm <= RSRP < -105dBm"},
2017 { 36, "-105dBm <= RSRP < -104dBm"},
2018 { 37, "-104dBm <= RSRP < -103dBm"},
2019 { 38, "-103dBm <= RSRP < -102dBm"},
2020 { 39, "-102dBm <= RSRP < -101dBm"},
2021 { 40, "-101dBm <= RSRP < -100dBm"},
2022 { 41, "-100dBm <= RSRP < -99dBm"},
2023 { 42, "-99dBm <= RSRP < -98dBm"},
2024 { 43, "-98dBm <= RSRP < -97dBm"},
2025 { 44, "-97dBm <= RSRP < -96dBm"},
2026 { 45, "-96dBm <= RSRP < -95dBm"},
2027 { 46, "-95dBm <= RSRP < -94dBm"},
2028 { 47, "-94dBm <= RSRP < -93dBm"},
2029 { 48, "-93dBm <= RSRP < -92dBm"},
2030 { 49, "-92dBm <= RSRP < -91dBm"},
2031 { 50, "-91dBm <= RSRP < -90dBm"},
2032 { 51, "-90dBm <= RSRP < -89dBm"},
2033 { 52, "-89dBm <= RSRP < -88dBm"},
2034 { 53, "-88dBm <= RSRP < -87dBm"},
2035 { 54, "-87dBm <= RSRP < -86dBm"},
2036 { 55, "-86dBm <= RSRP < -85dBm"},
2037 { 56, "-85dBm <= RSRP < -84dBm"},
2038 { 57, "-84dBm <= RSRP < -83dBm"},
2039 { 58, "-83dBm <= RSRP < -82dBm"},
2040 { 59, "-82dBm <= RSRP < -81dBm"},
2041 { 60, "-81dBm <= RSRP < -80dBm"},
2042 { 61, "-80dBm <= RSRP < -79dBm"},
2043 { 62, "-79dBm <= RSRP < -78dBm"},
2044 { 63, "-78dBm <= RSRP < -77dBm"},
2045 { 64, "-77dBm <= RSRP < -76dBm"},
2046 { 65, "-76dBm <= RSRP < -75dBm"},
2047 { 66, "-75dBm <= RSRP < -74dBm"},
2048 { 67, "-74dBm <= RSRP < -73dBm"},
2049 { 68, "-73dBm <= RSRP < -72dBm"},
2050 { 69, "-72dBm <= RSRP < -71dBm"},
2051 { 70, "-71dBm <= RSRP < -70dBm"},
2052 { 71, "-70dBm <= RSRP < -69dBm"},
2053 { 72, "-69dBm <= RSRP < -68dBm"},
2054 { 73, "-68dBm <= RSRP < -67dBm"},
2055 { 74, "-67dBm <= RSRP < -66dBm"},
2056 { 75, "-66dBm <= RSRP < -65dBm"},
2057 { 76, "-65dBm <= RSRP < -64dBm"},
2058 { 77, "-64dBm <= RSRP < -63dBm"},
2059 { 78, "-63dBm <= RSRP < -62dBm"},
2060 { 79, "-62dBm <= RSRP < -61dBm"},
2061 { 80, "-61dBm <= RSRP < -60dBm"},
2062 { 81, "-60dBm <= RSRP < -59dBm"},
2063 { 82, "-59dBm <= RSRP < -58dBm"},
2064 { 83, "-58dBm <= RSRP < -57dBm"},
2065 { 84, "-57dBm <= RSRP < -56dBm"},
2066 { 85, "-56dBm <= RSRP < -55dBm"},
2067 { 86, "-55dBm <= RSRP < -54dBm"},
2068 { 87, "-54dBm <= RSRP < -53dBm"},
2069 { 88, "-53dBm <= RSRP < -52dBm"},
2070 { 89, "-52dBm <= RSRP < -51dBm"},
2071 { 90, "-51dBm <= RSRP < -50dBm"},
2072 { 91, "-50dBm <= RSRP < -49dBm"},
2073 { 92, "-49dBm <= RSRP < -48dBm"},
2074 { 93, "-48dBm <= RSRP < -47dBm"},
2075 { 94, "-47dBm <= RSRP < -46dBm"},
2076 { 95, "-46dBm <= RSRP < -45dBm"},
2077 { 96, "-45dBm <= RSRP < -44dBm"},
2078 { 97, "-44dBm <= RSRP"},
2079 { 0, NULL}
2081 static value_string_ext lte_rrc_RSRP_Range_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_RSRP_Range_vals);
2083 static const value_string lte_rrc_RSRP_Range_v1360_vals[] = {
2084 { -17, "RSRP < -156dBm"},
2085 { -16, "-156dBm <= RSRP < -155dBm"},
2086 { -15, "-155dBm <= RSRP < -154dBm"},
2087 { -14, "-154dBm <= RSRP < -153dBm"},
2088 { -13, "-153dBm <= RSRP < -152dBm"},
2089 { -12, "-152dBm <= RSRP < -151dBm"},
2090 { -11, "-151dBm <= RSRP < -150dBm"},
2091 { -10, "-150dBm <= RSRP < -149dBm"},
2092 { -9, "-149dBm <= RSRP < -148dBm"},
2093 { -8, "-148dBm <= RSRP < -147dBm"},
2094 { -7, "-147dBm <= RSRP < -146dBm"},
2095 { -6, "-146dBm <= RSRP < -145dBm"},
2096 { -5, "-145dBm <= RSRP < -144dBm"},
2097 { -4, "-144dBm <= RSRP < -143dBm"},
2098 { -3, "-143dBm <= RSRP < -142dBm"},
2099 { -2, "-142dBm <= RSRP < -141dBm"},
2100 { -1, "-141dBm <= RSRP < -140dBm"},
2101 { 0, NULL}
2103 static value_string_ext lte_rrc_RSRP_Range_v1360_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_RSRP_Range_v1360_vals);
2105 static const value_string lte_rrc_RSRP_RangeSL_vals[] = {
2106 { 0, "-infinity"},
2107 { 1, "-115dBm"},
2108 { 2, "-110dBm"},
2109 { 3, "-105dBm"},
2110 { 4, "-100dBm"},
2111 { 5, "-95dBm"},
2112 { 6, "-90dBm"},
2113 { 7, "-85dBm"},
2114 { 8, "-80dBm"},
2115 { 9, "-75dBm"},
2116 { 10, "-70dBm"},
2117 { 11, "-65dBm"},
2118 { 12, "-60dBm"},
2119 { 13, "+infinity"},
2120 { 0, NULL}
2123 static const value_string lte_rrc_RSRP_RangeSL2_vals[] = {
2124 { 0, "-infinity"},
2125 { 1, "-110dBm"},
2126 { 2, "-100dBm"},
2127 { 3, "-90dBm"},
2128 { 4, "-80dBm"},
2129 { 5, "-70dBm"},
2130 { 6, "-60dBm"},
2131 { 7, "+infinity"},
2132 { 0, NULL}
2135 #if 0
2136 static const value_string lte_rrc_RSRP_RangeSL3_vals[] = {
2137 { 0, "-110dBm"},
2138 { 1, "-105dBm"},
2139 { 2, "-100dBm"},
2140 { 3, "-95dBm"},
2141 { 4, "-90dBm"},
2142 { 5, "-85dBm"},
2143 { 6, "-80dBm"},
2144 { 7, "-75dBm"},
2145 { 8, "-70dBm"},
2146 { 9, "-65dBm"},
2147 { 10, "-60dBm"},
2148 { 11, "+infinity"},
2149 { 0, NULL}
2151 #endif
2153 static const value_string lte_rrc_RSRP_RangeSL4_vals[] = {
2154 { 0, "-130dBm"},
2155 { 1, "-128dBm"},
2156 { 2, "-126dBm"},
2157 { 3, "-124dBm"},
2158 { 4, "-122dBm"},
2159 { 5, "-120dBm"},
2160 { 6, "-118dBm"},
2161 { 7, "-116dBm"},
2162 { 8, "-114dBm"},
2163 { 9, "-112dBm"},
2164 { 10, "-110dBm"},
2165 { 11, "-108dBm"},
2166 { 12, "-106dBm"},
2167 { 13, "-104dBm"},
2168 { 14, "-102dBm"},
2169 { 15, "-100dBm"},
2170 { 16, "-98dBm"},
2171 { 17, "-96dBm"},
2172 { 18, "-94dBm"},
2173 { 19, "-92dBm"},
2174 { 20, "-90dBm"},
2175 { 21, "-88dBm"},
2176 { 22, "-86dBm"},
2177 { 23, "-84dBm"},
2178 { 24, "-82dBm"},
2179 { 25, "-80dBm"},
2180 { 26, "-78dBm"},
2181 { 27, "-76dBm"},
2182 { 28, "-74dBm"},
2183 { 29, "-72dBm"},
2184 { 30, "-70dBm"},
2185 { 31, "-68dBm"},
2186 { 32, "-66dBm"},
2187 { 33, "-64dBm"},
2188 { 34, "-62dBm"},
2189 { 35, "-60dBm"},
2190 { 36, "-58dBm"},
2191 { 37, "-56dBm"},
2192 { 38, "-54dBm"},
2193 { 39, "-52dBm"},
2194 { 40, "-50dBm"},
2195 { 41, "-48dBm"},
2196 { 42, "-46dBm"},
2197 { 43, "-44dBm"},
2198 { 44, "-42dBm"},
2199 { 45, "-40dBm"},
2200 { 46, "-38dBm"},
2201 { 47, "-36dBm"},
2202 { 48, "-34dBm"},
2203 { 49, "+infinity"},
2204 { 0, NULL}
2206 static value_string_ext lte_rrc_RSRP_RangeSL4_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_RSRP_RangeSL4_vals);
2208 static void
2209 lte_rrc_RSRP_RangeNR_r15_fmt(char *s, uint32_t v)
2211 if (v == 0) {
2212 snprintf(s, ITEM_LABEL_LENGTH, "SS-RSRP < -156dBm (0)");
2213 } else if (v == 126) {
2214 snprintf(s, ITEM_LABEL_LENGTH, "-31dBm <= SS-RSRP (126)");
2215 } else if (v == 127) {
2216 snprintf(s, ITEM_LABEL_LENGTH, "Infinity (127)");
2217 } else {
2218 snprintf(s, ITEM_LABEL_LENGTH, "%ddBm <= SS-RSRP < %ddBm (%u)", -157+v, -156+v, v);
2222 static const value_string lte_rrc_RSRQ_Range_vals[] = {
2223 {-34, "RSRQ < -36dB"},
2224 {-33, "-36dB <= RSRQ < -35.5dB"},
2225 {-32, "-35.5dB <= RSRQ < -35dB"},
2226 {-31, "-35dB <= RSRQ < -34.5dB"},
2227 {-30, "-34.5dB <= RSRQ < -34dB"},
2228 {-29, "-34dB <= RSRQ < -33.5dB"},
2229 {-28, "-33.5dB <= RSRQ < -33dB"},
2230 {-27, "-33dB <= RSRQ < -32.5dB"},
2231 {-26, "-32.5dB <= RSRQ < -32dB"},
2232 {-25, "-32dB <= RSRQ < -31.5dB"},
2233 {-24, "-31.5dB <= RSRQ < -31dB"},
2234 {-23, "-31dB <= RSRQ < -30.5dB"},
2235 {-22, "-30.5dB <= RSRQ < -30dB"},
2236 {-21, "-30dB <= RSRQ < -29.5dB"},
2237 {-20, "-29.5dB <= RSRQ < -29dB"},
2238 {-19, "-29dB <= RSRQ < -28.5dB"},
2239 {-18, "-28.5dB <= RSRQ < -28dB"},
2240 {-17, "-28dB <= RSRQ < -27.5dB"},
2241 {-16, "-27.5dB <= RSRQ < -27dB"},
2242 {-15, "-27dB <= RSRQ < -26.5dB"},
2243 {-14, "-26.5dB <= RSRQ < -26dB"},
2244 {-13, "-26dB <= RSRQ < -25.5dB"},
2245 {-12, "-25.5dB <= RSRQ < -25dB"},
2246 {-11, "-25dB <= RSRQ < -24.5dB"},
2247 {-10, "-24.5dB <= RSRQ < -24dB"},
2248 { -9, "-24dB <= RSRQ < -23.5dB"},
2249 { -8, "-23.5dB <= RSRQ < -23dB"},
2250 { -7, "-23dB <= RSRQ < -22.5dB"},
2251 { -6, "-22.5dB <= RSRQ < -22dB"},
2252 { -5, "-22dB <= RSRQ < -21.5dB"},
2253 { -4, "-21.5dB <= RSRQ < -21dB"},
2254 { -3, "-21dB <= RSRQ < -20.5dB"},
2255 { -2, "-20.5dB <= RSRQ < -20dB"},
2256 { -1, "-20dB <= RSRQ < -19.5dB"},
2257 { 0, "RSRQ < -19.5dB"},
2258 { 1, "-19.5dB <= RSRQ < -19dB"},
2259 { 2, "-19dB <= RSRQ < -18.5dB"},
2260 { 3, "-18.5dB <= RSRQ < -18dB"},
2261 { 4, "-18dB <= RSRQ < -17.5dB"},
2262 { 5, "-17.5dB <= RSRQ < -17dB"},
2263 { 6, "-17dB <= RSRQ < -16.5dB"},
2264 { 7, "-16.5dB <= RSRQ < -16dB"},
2265 { 8, "-16dB <= RSRQ < -15.5dB"},
2266 { 9, "-15.5dB <= RSRQ < -15dB"},
2267 { 10, "-15dB <= RSRQ < -14.5dB"},
2268 { 11, "-14.5dB <= RSRQ < -14dB"},
2269 { 12, "-14dB <= RSRQ < -13.5dB"},
2270 { 13, "-13.5dB <= RSRQ < -13dB"},
2271 { 14, "-13dB <= RSRQ < -12.5dB"},
2272 { 15, "-12.5dB <= RSRQ < -12dB"},
2273 { 16, "-12dB <= RSRQ < -11.5dB"},
2274 { 17, "-11.5dB <= RSRQ < -11dB"},
2275 { 18, "-11dB <= RSRQ < -10.5dB"},
2276 { 19, "-10.5dB <= RSRQ < -10dB"},
2277 { 20, "-10dB <= RSRQ < -9.5dB"},
2278 { 21, "-9.5dB <= RSRQ < -9dB"},
2279 { 22, "-9dB <= RSRQ < -8.5dB"},
2280 { 23, "-8.5dB <= RSRQ < -8dB"},
2281 { 24, "-8dB <= RSRQ < -7.5dB"},
2282 { 25, "-7.5dB <= RSRQ < -7dB"},
2283 { 26, "-7dB <= RSRQ < -6.5dB"},
2284 { 27, "-6.5dB <= RSRQ < -6dB"},
2285 { 28, "-6dB <= RSRQ < -5.5dB"},
2286 { 29, "-5.5dB <= RSRQ < -5dB"},
2287 { 30, "-5dB <= RSRQ < -4.5dB"},
2288 { 31, "-4.5dB <= RSRQ < -4dB"},
2289 { 32, "-4dB <= RSRQ < -3.5dB"},
2290 { 33, "-3.5dB <= RSRQ < -3dB"},
2291 { 34, "-3dB <= RSRQ"},
2292 { 35, "-3dB <= RSRQ < -2.5dB"},
2293 { 36, "-2.5dB <= RSRQ < -2dB"},
2294 { 37, "-2dB <= RSRQ < -1.5dB"},
2295 { 38, "-1.5dB <= RSRQ < -1dB"},
2296 { 39, "-1dB <= RSRQ < -0.5dB"},
2297 { 40, "-0.5dB <= RSRQ < 0dB"},
2298 { 41, "0dB <= RSRQ < 0.5dB"},
2299 { 42, "0.5dB <= RSRQ < 1dB"},
2300 { 43, "1dB <= RSRQ < 1.5dB"},
2301 { 44, "1.5dB <= RSRQ < 2dB"},
2302 { 45, "2dB <= RSRQ < 2.5dB"},
2303 { 46, "2.5dB <= RSRQ"},
2304 { 0, NULL}
2306 static value_string_ext lte_rrc_RSRQ_Range_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_RSRQ_Range_vals);
2308 static void
2309 lte_rrc_RSRQ_RangeNR_r15_fmt(char *s, uint32_t v)
2311 if (v == 0) {
2312 snprintf(s, ITEM_LABEL_LENGTH, "SS-RSRQ < -43dB (0)");
2313 } else if (v == 127) {
2314 snprintf(s, ITEM_LABEL_LENGTH, "20dB < SS-RSRQ (127)");
2315 } else {
2316 snprintf(s, ITEM_LABEL_LENGTH, "%.1fdB <= SS-RSRQ < %.1fdB (%u)", (((float)v-1)/2)-43, ((float)v/2)-43, v);
2320 static const value_string lte_rrc_MBSFN_RSRQ_Range_vals[] = {
2321 { 0, "RSRQ < -23dB"},
2322 { 1, "-23dB <= RSRQ < -22.5dB"},
2323 { 2, "-22.5dB <= RSRQ < -22dB"},
2324 { 3, "-22dB <= RSRQ < -21.5dB"},
2325 { 4, "-21.5dB <= RSRQ < -21dB"},
2326 { 5, "-21dB <= RSRQ < -20.5dB"},
2327 { 6, "-20.5dB <= RSRQ < -20dB"},
2328 { 7, "-20dB <= RSRQ < -19.5dB"},
2329 { 8, "-19.5dB <= RSRQ < -19dB"},
2330 { 9, "-19dB <= RSRQ < -18.5dB"},
2331 { 10, "-18.5dB <= RSRQ < -18dB"},
2332 { 11, "-18dB <= RSRQ < -17.5dB"},
2333 { 12, "-17.5dB <= RSRQ < -17dB"},
2334 { 13, "-17dB <= RSRQ < -16.5dB"},
2335 { 14, "-16.5dB <= RSRQ < -16dB"},
2336 { 15, "-16dB <= RSRQ < -15.5dB"},
2337 { 16, "-15.5dB <= RSRQ < -15dB"},
2338 { 17, "-15dB <= RSRQ < -14.5dB"},
2339 { 18, "-14.5dB <= RSRQ < -14dB"},
2340 { 19, "-14dB <= RSRQ < -13.5dB"},
2341 { 20, "-13.5dB <= RSRQ < -13dB"},
2342 { 21, "-13dB <= RSRQ < -12.5dB"},
2343 { 22, "-12.5dB <= RSRQ < -12dB"},
2344 { 23, "-12dB <= RSRQ < -11.5dB"},
2345 { 24, "-11.5dB <= RSRQ < -11dB"},
2346 { 25, "-11dB <= RSRQ < -10.5dB"},
2347 { 26, "-10.5dB <= RSRQ < -10dB"},
2348 { 27, "-10dB <= RSRQ < -9.5dB"},
2349 { 28, "-9.5dB <= RSRQ < -9dB"},
2350 { 29, "-9dB <= RSRQ < -8.5dB"},
2351 { 30, "-8.5dB <= RSRQ < -8dB"},
2352 { 31, "-8dB <= RSRQ"},
2353 { 0, NULL}
2355 static value_string_ext lte_rrc_MBSFN_RSRQ_Range_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_MBSFN_RSRQ_Range_vals);
2357 static void
2358 lte_rrc_availableAdmissionCapacityWLAN_fmt(char *s, uint32_t v)
2360 snprintf(s, ITEM_LABEL_LENGTH, "%uus/s (%u)", 32*v, v);
2363 static void
2364 lte_rrc_ue_RxTxTimeDiffResult_fmt(char *s, uint32_t v)
2366 if (v == 0) {
2367 snprintf(s, ITEM_LABEL_LENGTH, "T < 2Ts (0)");
2368 } else if (v < 2048) {
2369 snprintf(s, ITEM_LABEL_LENGTH, "%uTs <= T < %uTs (%u)", v*2, (v+1)*2, v);
2370 } else if (v < 4095) {
2371 snprintf(s, ITEM_LABEL_LENGTH, "%uTs <= T < %uTs (%u)", (v*8)-12288, ((v+1)*8)-12288, v);
2372 } else {
2373 snprintf(s, ITEM_LABEL_LENGTH, "20472Ts <= T (4095)");
2377 static const true_false_string lte_rrc_duration_val = {
2378 "indefinite",
2379 "single"
2382 static const value_string lte_rrc_eab_category_vals[] = {
2383 { 0, "a - all UEs" },
2384 { 1, "b - UEs not in their HPLMN/EHPLMN" },
2385 { 2, "c - UEs not in the most preferred PLMN of the country where they are roaming in EF OPLMNwACT list, nor in their HPLMN/EHPLMN" },
2386 { 0, NULL }
2389 static const value_string lte_rrc_daylightSavingTime_vals[] = {
2390 { 0, "No adjustment for Daylight Saving Time"},
2391 { 1, "+1 hour adjustment for Daylight Saving Time"},
2392 { 2, "+2 hours adjustment for Daylight Saving Time"},
2393 { 3, "Reserved"},
2394 { 0, NULL},
2397 static const value_string lte_rrc_neighCellConfig_vals[] = {
2398 { 0, "Not all neighbour cells have the same MBSFN subframe allocation as serving cell"},
2399 { 1, "No MBSFN subframes are present in all neighbour cells"},
2400 { 2, "The MBSFN subframe allocations of all neighbour cells are identical to or subsets of that in the serving cell"},
2401 { 3, "Different UL/DL allocation in neighbouring cells for TDD compared to the serving cell"},
2402 { 0, NULL},
2405 static const value_string lte_rrc_messageIdentifier_vals[] = {
2406 { 0x03e8, "LCS CBS Message Identifier for E-OTD Assistance Data message"},
2407 { 0x03e9, "LCS CBS Message Identifier for DGPS Correction Data message"},
2408 { 0x03ea, "LCS CBS Message Identifier for GPS Ephemeris and Clock Correction Data message"},
2409 { 0x03eb, "LCS CBS Message Identifier for GPS Almanac and Other Data message"},
2410 { 0x1100, "ETWS Identifier for earthquake warning message"},
2411 { 0x1101, "ETWS Identifier for tsunami warning message"},
2412 { 0x1102, "ETWS Identifier for earthquake and tsunami combined warning message"},
2413 { 0x1103, "ETWS Identifier for test message"},
2414 { 0x1104, "ETWS Identifier for messages related to other emergency types"},
2415 { 0x1105, "ETWS Identifier for future extension"},
2416 { 0x1106, "ETWS Identifier for future extension"},
2417 { 0x1107, "ETWS Identifier for future extension"},
2418 { 0x1112, "CMAS Identifier for CMAS Presidential Level Alerts"},
2419 { 0x1113, "CMAS Identifier for CMAS Extreme Alerts with Severity of Extreme, Urgency of Immediate, and Certainty of Observed"},
2420 { 0x1114, "CMAS Identifier for CMAS Extreme Alerts with Severity of Extreme, Urgency of Immediate, and Certainty of Likely"},
2421 { 0x1115, "CMAS Identifier for CMAS Severe Alerts with Severity of Extreme, Urgency of Expected, and Certainty of Observed"},
2422 { 0x1116, "CMAS Identifier for CMAS Severe Alerts with Severity of Extreme, Urgency of Expected, and Certainty of Likely"},
2423 { 0x1117, "CMAS Identifier for CMAS Severe Alerts with Severity of Severe, Urgency of Immediate, and Certainty of Observed"},
2424 { 0x1118, "CMAS Identifier for CMAS Severe Alerts with Severity of Severe, Urgency of Immediate, and Certainty of Likely"},
2425 { 0x1119, "CMAS Identifier for CMAS Severe Alerts with Severity of Severe, Urgency of Expected, and Certainty of Observed"},
2426 { 0x111a, "CMAS Identifier for CMAS Severe Alerts with Severity of Severe, Urgency of Expected, and Certainty of Likely"},
2427 { 0x111b, "CMAS Identifier for Child Abduction Emergency (or Amber Alert)"},
2428 { 0x111c, "CMAS Identifier for the Required Monthly Test"},
2429 { 0x111d, "CMAS Identifier for CMAS Exercise"},
2430 { 0x111e, "CMAS Identifier for operator defined use"},
2431 { 0x111f, "CMAS Identifier for CMAS Presidential Level Alerts for additional languages"},
2432 { 0x1120, "CMAS Identifier for CMAS Extreme Alerts with Severity of Extreme, Urgency of Immediate, and Certainty of Observed for additional languages"},
2433 { 0x1121, "CMAS Identifier for CMAS Extreme Alerts with Severity of Extreme, Urgency of Immediate, and Certainty of Likely for additional languages"},
2434 { 0x1122, "CMAS Identifier for CMAS Severe Alerts with Severity of Extreme, Urgency of Expected, and Certainty of Observed for additional languages"},
2435 { 0x1123, "CMAS Identifier for CMAS Severe Alerts with Severity of Extreme, Urgency of Expected, and Certainty of Likely for additional languages"},
2436 { 0x1124, "CMAS Identifier for CMAS Severe Alerts with Severity of Severe, Urgency of Immediate, and Certainty of Observed for additional languages"},
2437 { 0x1125, "CMAS Identifier for CMAS Severe Alerts with Severity of Severe, Urgency of Immediate, and Certainty of Likely for additional languages"},
2438 { 0x1126, "CMAS Identifier for CMAS Severe Alerts with Severity of Severe, Urgency of Expected, and Certainty of Observed for additional languages"},
2439 { 0x1127, "CMAS Identifier for CMAS Severe Alerts with Severity of Severe, Urgency of Expected, and Certainty of Likely for additional languages"},
2440 { 0x1128, "CMAS Identifier for Child Abduction Emergency (or Amber Alert) for additional languages"},
2441 { 0x1129, "CMAS Identifier for the Required Monthly Test for additional languages"},
2442 { 0x112a, "CMAS Identifier for CMAS Exercise for additional languages"},
2443 { 0x112b, "CMAS Identifier for operator defined use for additional languages"},
2444 { 0x112c, "CMAS CBS Message Identifier for CMAS Public Safety Alerts"},
2445 { 0x112d, "CMAS CBS Message Identifier for CMAS Public Safety Alerts for additional languages"},
2446 { 0x112e, "CMAS CBS Message Identifier for CMAS State/Local WEA Test"},
2447 { 0x112f, "CMAS CBS Message Identifier for CMAS State/Local WEA Test for additional languages"},
2448 { 0x1130, "CMAS CBS Message Identifier for geo-fencing trigger messages"},
2449 { 0x1131, "Non-ETWS CBS Message Identifier for warning message dedicated to UEs with no user interface and with ePWS functionality"},
2450 { 0x1132, "Non-ETWS CBS Message Identifier for warning message dedicated to UEs with no user interface and with ePWS functionality when an earthquake occurs"},
2451 { 0x1133, "Non-ETWS CBS Message Identifier for warning message dedicated to UEs with no user interface and with ePWS functionality when a volcanic eruption occurs"},
2452 { 0x1134, "Non-ETWS CBS Message Identifier for warning message dedicated to UEs with no user interface and with ePWS functionality when a disaster whose characteristic is water (e.g. flood, typhoon, hurricane or tsunami) occurs"},
2453 { 0x1135, "Non-ETWS CBS Message Identifier for warning message dedicated to UEs with no user interface and with ePWS functionality when a disaster whose characteristic is fire (e.g. forest fire or building fire) occurs"},
2454 { 0x1136, "Non-ETWS CBS Message Identifier for warning message dedicated to UEs with no user interface and with ePWS functionality when a disaster whose characteristic is pressure (e.g. landslide or avalanche) occurs"},
2455 { 0x1137, "Non-ETWS CBS Message Identifier for warning message dedicated to UEs with no user interface and with ePWS functionality when a disaster whose characteristic is wind (e.g. tornado or gale) occurs"},
2456 { 0x1138, "Non-ETWS CBS Message Identifier for warning message dedicated to UEs with no user interface and with ePWS functionality when a disaster whose characteristic is dust (e.g. yellow dust or sandstorm) occurs"},
2457 { 0x1139, "Non-ETWS CBS Message Identifier for warning message dedicated to UEs with no user interface and with ePWS functionality when a disaster whose characteristic is chemical hazard (e.g. radiation leak or toxic substance leak) occurs"},
2458 { 0x113a, "Non-ETWS CBS Message Identifier for warning message dedicated to UEs with no user interface and with ePWS functionality when an epidemic occurs"},
2459 { 0x113b, "Non-ETWS CBS Message Identifier for test message dedicated to UEs with no user interface and with ePWS functionality"},
2460 { 0x113c, "ETWS CBS Message Identifier for warning message dedicated to UEs with no user interface and with ePWS functionality"},
2461 { 0x113d, "ETWS CBS Message Identifier for warning message dedicated to UEs with no user interface and with ePWS functionality when an earthquake occurs"},
2462 { 0x113e, "ETWS CBS Message Identifier for warning message dedicated to UEs with no user interface and with ePWS functionality when a volcanic eruption occurs"},
2463 { 0x113f, "ETWS CBS Message Identifier for warning message dedicated to UEs with no user interface and with ePWS functionality when a disaster whose characteristic is water (e.g. flood, typhoon, hurricane or tsunami) occurs"},
2464 { 0x1140, "ETWS CBS Message Identifier for warning message dedicated to UEs with no user interface and with ePWS functionality when a disaster whose characteristic is fire (e.g. forest fire or building fire) occurs"},
2465 { 0x1141, "ETWS CBS Message Identifier for warning message dedicated to UEs with no user interface and with ePWS functionality when a disaster whose characteristic is pressure (e.g. landslide or avalanche) occurs"},
2466 { 0x1142, "ETWS CBS Message Identifier for warning message dedicated to UEs with no user interface and with ePWS functionality when a disaster whose characteristic is wind (e.g. tornado or gale) occurs"},
2467 { 0x1143, "ETWS CBS Message Identifier for warning message dedicated to UEs with no user interface and with ePWS functionality when a disaster whose characteristic is dust (e.g. yellow dust or sandstorm) occurs"},
2468 { 0x1144, "ETWS CBS Message Identifier for warning message dedicated to UEs with no user interface and with ePWS functionality when a disaster whose characteristic is chemical hazard (e.g. radiation leak or toxic substance leak) occurs"},
2469 { 0x1145, "ETWS CBS Message Identifier for warning message dedicated to UEs with no user interface and with ePWS functionality when an epidemic occurs"},
2470 { 0x1146, "ETWS CBS Message Identifier for test message dedicated to UEs with no user interface and with ePWS functionality"},
2471 { 0x1900, "EU-Info Message Identifier for the local language"},
2472 { 0, NULL},
2474 value_string_ext lte_rrc_messageIdentifier_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_messageIdentifier_vals);
2476 static const value_string lte_rrc_serialNumber_gs_vals[] = {
2477 { 0, "Display mode immediate, cell wide"},
2478 { 1, "Display mode normal, PLMN wide"},
2479 { 2, "Display mode normal, tracking area wide"},
2480 { 3, "Display mode normal, cell wide"},
2481 { 0, NULL},
2484 static const value_string lte_rrc_warningType_vals[] = {
2485 { 0, "Earthquake"},
2486 { 1, "Tsunami"},
2487 { 2, "Earthquake and Tsunami"},
2488 { 3, "Test"},
2489 { 4, "Other"},
2490 { 0, NULL},
2493 static const true_false_string lte_rrc_interBandTDD_CA_WithDifferentConfig_bit1_val = {
2494 "SCell DL subframes are a subset or superset of PCell by SIB1 configuration - Supported",
2495 "SCell DL subframes are a subset or superset of PCell by SIB1 configuration - Not supported",
2498 static const true_false_string lte_rrc_interBandTDD_CA_WithDifferentConfig_bit2_val = {
2499 "SCell DL subframes are neither superset nor subset of PCell by SIB1 configuration - Supported",
2500 "SCell DL subframes are neither superset nor subset of PCell by SIB1 configuration - Not supported",
2503 static const true_false_string lte_rrc_tdd_FDD_CA_PCellDuplex_r12_bit1_val = {
2504 "TDD PCell - Supported",
2505 "TDD PCell - Not supported"
2508 static const true_false_string lte_rrc_tdd_FDD_CA_PCellDuplex_r12_bit2_val = {
2509 "FDD PCell - Supported",
2510 "FDD PCell - Not supported"
2513 static const true_false_string hf_lte_rrc_aperiodicCSI_Reporting_r13_bit1_val = {
2514 "Aperiodic CSI reporting with 3 bits of the CSI request field size - Supported",
2515 "Aperiodic CSI reporting with 3 bits of the CSI request field size - Not supported"
2518 static const true_false_string hf_lte_rrc_aperiodicCSI_Reporting_r13_bit2_val = {
2519 "Aperiodic CSI reporting mode 1-0 and mode 1-1 - Supported",
2520 "Aperiodic CSI reporting mode 1-0 and mode 1-1 - Not supported"
2523 static const true_false_string hf_lte_rrc_codebook_HARQ_ACK_r13_bit1_val = {
2524 "DAI-based codebook size determination - Supported",
2525 "DAI-based codebook size determination - Not supported"
2528 static const true_false_string hf_lte_rrc_codebook_HARQ_ACK_r13_bit2_val = {
2529 "Number of configured CCs based codebook size determination - Supported",
2530 "Number of configured CCs based codebook size determination - Not supported"
2533 static const true_false_string lte_rrc_transmissionModeList_r12_val = {
2534 "NeighCellsInfo applies",
2535 "NeighCellsInfo does not apply"
2538 static const value_string lte_rrc_excessDelay_r13_vals[] = {
2539 { 0, "ratio < 0.079%"},
2540 { 1, "0.079% < ratio < 0.100%"},
2541 { 2, "0.100% < ratio < 0.126%"},
2542 { 3, "0.126% < ratio < 0.158%"},
2543 { 4, "0.158% < ratio < 0.199%"},
2544 { 5, "0.199% < ratio < 0.251%"},
2545 { 6, "0.251% < ratio < 0.316%"},
2546 { 7, "0.316% < ratio < 0.398%"},
2547 { 8, "0.398% < ratio < 0.501%"},
2548 { 9, "0.501% < ratio < 0.631%"},
2549 { 10, "0.631% < ratio < 0.794%"},
2550 { 11, "0.794% < ratio < 1.000%"},
2551 { 12, "1.000% < ratio < 1.259%"},
2552 { 13, "1.259% < ratio < 1.585%"},
2553 { 14, "1.585% < ratio < 1.995%"},
2554 { 15, "1.995% < ratio < 2.511%"},
2555 { 16, "2.511% < ratio < 3.161%"},
2556 { 17, "3.161% < ratio < 3.980%"},
2557 { 18, "3.980% < ratio < 5.011%"},
2558 { 19, "5.011% < ratio < 6.309%"},
2559 { 20, "6.309% < ratio < 7.943%"},
2560 { 21, "7.943% < ratio < 10.00%"},
2561 { 22, "10.00% < ratio < 12.589%"},
2562 { 23, "12.589% < ratio < 15.849%"},
2563 { 24, "15.849% < ratio < 19.953%"},
2564 { 25, "19.953% < ratio < 25.119%"},
2565 { 26, "25.119% < ratio < 31.623%"},
2566 { 27, "31.623% < ratio < 39.811%"},
2567 { 28, "39.811% < ratio < 50.119%"},
2568 { 29, "50.119% < ratio < 63.096%"},
2569 { 30, "63.096% < ratio < 79.433%"},
2570 { 31, "79.433% < ratio < 100%"},
2571 { 0, NULL}
2573 static value_string_ext lte_rrc_excessDelay_r13_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_excessDelay_r13_vals);
2575 static void
2576 lte_rrc_averageDelay_r16_fmt(char *s, uint32_t v)
2578 snprintf(s, ITEM_LABEL_LENGTH, "%.1fms (%u)", (float)v/10, v);
2581 static void
2582 lte_rrc_subframeBoundaryOffsetResult_r13_fmt(char *s, uint32_t v)
2584 if (v == 0) {
2585 snprintf(s, ITEM_LABEL_LENGTH, "abs(deltaZ) < 700Ts (0)");
2586 } else if (v == 63) {
2587 snprintf(s, ITEM_LABEL_LENGTH, "1320Ts < abs(deltaZ) (63)");
2588 } else {
2589 snprintf(s, ITEM_LABEL_LENGTH, "%uTs < abs(deltaZ) <= %uTs (%u)", 700+(v-1)*10, 700+v*10, v);
2593 static void
2594 lte_rrc_RS_SINR_Range_r13_fmt(char *s, uint32_t v)
2596 if (v == 0) {
2597 snprintf(s, ITEM_LABEL_LENGTH, "RS-SINR < -23dB (0)");
2598 } else if (v == 127) {
2599 snprintf(s, ITEM_LABEL_LENGTH, "40dB <= RS-SINR (127)");
2600 } else {
2601 snprintf(s, ITEM_LABEL_LENGTH, "%.1fdB <= RS-SINR < %.1fdB (%u)", (((float)v-1)/2)-23, ((float)v/2)-23, v);
2605 static void
2606 lte_rrc_RS_SINR_RangeNR_r15_fmt(char *s, uint32_t v)
2608 if (v == 0) {
2609 snprintf(s, ITEM_LABEL_LENGTH, "SS-SINR < -23dB (0)");
2610 } else if (v == 127) {
2611 snprintf(s, ITEM_LABEL_LENGTH, "40dB < SS-SINR (127)");
2612 } else {
2613 snprintf(s, ITEM_LABEL_LENGTH, "%.1fdB <= SS-SINR < %.1fdB (%u)", (((float)v-1)/2)-23, ((float)v/2)-23, v);
2617 static void
2618 lte_rrc_RSSI_Range_r13_fmt(char *s, uint32_t v)
2620 if (v == 0) {
2621 snprintf(s, ITEM_LABEL_LENGTH, "RSSI < -100dBm (0)");
2622 } else if (v == 76) {
2623 snprintf(s, ITEM_LABEL_LENGTH, "-25dBm <= RSSI (76)");
2624 } else {
2625 snprintf(s, ITEM_LABEL_LENGTH, "%ddBm <= RSSI < %ddBm (%u)", -100+(v-1), -100+v, v);
2629 static void
2630 lte_rrc_scptm_FreqOffset_r14_fmt(char *s, uint32_t v)
2632 snprintf(s, ITEM_LABEL_LENGTH, "%udB (%u)", 2*v, v);
2635 static void
2636 lte_rrc_offsetDFN_r14_fmt(char *s, uint32_t v)
2638 if (v == 0) {
2639 snprintf(s, ITEM_LABEL_LENGTH, "0ms (0)");
2640 } else if (v < 1000) {
2641 snprintf(s, ITEM_LABEL_LENGTH, "%.3fms (%u)", ((float)v)/1000, v);
2642 } else {
2643 snprintf(s, ITEM_LABEL_LENGTH, "1ms (1000)");
2647 static void
2648 lte_rrc_thresholdWLAN_RSSI_fmt(char *s, uint32_t v)
2650 snprintf(s, ITEM_LABEL_LENGTH, "%ddBm (%u)", -128+v, v);
2653 static void
2654 lte_rrc_cr_Limit_r14_fmt(char *s, uint32_t v)
2656 if (v == 0) {
2657 snprintf(s, ITEM_LABEL_LENGTH, "0 (0)");
2658 } else if (v < 10000) {
2659 snprintf(s, ITEM_LABEL_LENGTH, "%.4f (%u)", ((float)v)/10000, v);
2660 } else {
2661 snprintf(s, ITEM_LABEL_LENGTH, "1 (10000)");
2665 static void
2666 lte_rrc_SL_CBR_r14_fmt(char *s, uint32_t v)
2668 if (v == 0) {
2669 snprintf(s, ITEM_LABEL_LENGTH, "0 (0)");
2670 } else if (v < 100) {
2671 snprintf(s, ITEM_LABEL_LENGTH, "%.2f (%u)", ((float)v)/100, v);
2672 } else {
2673 snprintf(s, ITEM_LABEL_LENGTH, "1 (100)");
2677 static void
2678 lte_rrc_threshS_RSSI_CBR_r14_fmt(char *s, uint32_t v)
2680 snprintf(s, ITEM_LABEL_LENGTH, "%ddBm (%u)", -112+(2*v), v);
2683 static const value_string lte_rrc_schedulingInfoSIB1_NB_r13_vals[] = {
2684 { 0, "4 NPDSCH repetitions - TBS 208 bits"},
2685 { 1, "8 NPDSCH repetitions - TBS 208 bits"},
2686 { 2, "16 NPDSCH repetitions - TBS 208 bits"},
2687 { 3, "4 NPDSCH repetitions - TBS 328 bits"},
2688 { 4, "8 NPDSCH repetitions - TBS 328 bits"},
2689 { 5, "16 NPDSCH repetitions - TBS 328 bits"},
2690 { 6, "4 NPDSCH repetitions - TBS 440 bits"},
2691 { 7, "8 NPDSCH repetitions - TBS 440 bits"},
2692 { 8, "16 NPDSCH repetitions - TBS 440 bits"},
2693 { 9, "4 NPDSCH repetitions - TBS 680 bits"},
2694 { 10, "8 NPDSCH repetitions - TBS 680 bits"},
2695 { 11, "16 NPDSCH repetitions - TBS 680 bits"},
2696 { 0, NULL}
2698 static value_string_ext lte_rrc_schedulingInfoSIB1_NB_r13_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_schedulingInfoSIB1_NB_r13_vals);
2700 static void
2701 lte_rrc_NRSRP_Range_NB_r14_fmt(char *s, uint32_t v)
2703 if (v == 0) {
2704 snprintf(s, ITEM_LABEL_LENGTH, "NRSRP < -156dBm (0)");
2705 } else if (v < 113) {
2706 snprintf(s, ITEM_LABEL_LENGTH, "%ddBm <= NRSRP < %ddBm (%u)", v-157, v-156, v);
2707 } else {
2708 snprintf(s, ITEM_LABEL_LENGTH, "-44dBm <= NRSRP (97)");
2712 static void
2713 lte_rrc_NRSRQ_Range_NB_r14_fmt(char *s, uint32_t v)
2715 int32_t rsrq = (uint32_t)v;
2716 if (rsrq == -30) {
2717 snprintf(s, ITEM_LABEL_LENGTH, "NRSRQ < -34dB (-30)");
2718 } else if (rsrq < 0) {
2719 snprintf(s, ITEM_LABEL_LENGTH, "%.1fdB <= NRSRQ < %.1fdB (%d)", (((float)rsrq-1)/2)-19, ((float)rsrq/2)-19, rsrq);
2720 } else if (rsrq == 0) {
2721 snprintf(s, ITEM_LABEL_LENGTH, "NRSRQ < -19.5dB (0)");
2722 } else if (rsrq < 34) {
2723 snprintf(s, ITEM_LABEL_LENGTH, "%.1fdB <= NRSRQ < %.1fdB (%d)", (((float)rsrq-1)/2)-19.5, ((float)rsrq/2)-19.5, rsrq);
2724 } else if (rsrq == 34) {
2725 snprintf(s, ITEM_LABEL_LENGTH, "-3 <= NRSRQ (34)");
2726 } else if (rsrq < 46) {
2727 snprintf(s, ITEM_LABEL_LENGTH, "%.1fdB <= NRSRQ < %.1fdB (%d)", (((float)rsrq-1)/2)-20, ((float)rsrq/2)-20, rsrq);
2728 } else {
2729 snprintf(s, ITEM_LABEL_LENGTH, "2.5dB <= NRSRQ (46)");
2733 static void
2734 lte_rrc_mbms_MaxBW_r14_fmt(char *s, uint32_t v)
2736 snprintf(s, ITEM_LABEL_LENGTH, "%u MHz (%u)", 40*v, v);
2739 static void
2740 lte_rrc_dl_1024QAM_TotalWeightedLayers_r15_fmt(char *s, uint32_t v)
2742 snprintf(s, ITEM_LABEL_LENGTH, "%u (%u)", 10+(2*v), v);
2745 static void
2746 lte_rrc_call_dissector(dissector_handle_t handle, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
2748 TRY {
2749 call_dissector(handle, tvb, pinfo, tree);
2751 CATCH_BOUNDS_ERRORS {
2752 show_exception(tvb, pinfo, tree, EXCEPT_CODE, GET_MESSAGE);
2754 ENDTRY;
2757 /*****************************************************************************/
2758 /* Packet private data */
2759 /* For this dissector, all access to actx->private_data should be made */
2760 /* through this API, which ensures that they will not overwrite each other!! */
2761 /*****************************************************************************/
2763 typedef struct meas_capabilities_item_band_mappings_t {
2764 uint16_t number_of_bands_set;
2765 uint16_t number_of_interfreq_serving_read;
2766 uint16_t number_of_interfreq_target_read;
2767 uint16_t band_by_item[256];
2768 } meas_capabilities_item_band_mappings_t;
2771 /**********************************************************/
2772 /* Struct to store all current uses of packet private data */
2773 typedef struct lte_rrc_private_data_t
2775 uint8_t rat_type;
2776 uint8_t target_rat_type;
2777 uint8_t si_or_psi_geran;
2778 uint8_t ra_preambles;
2779 uint16_t message_identifier;
2780 uint8_t warning_message_segment_type;
2781 uint8_t warning_message_segment_number;
2782 drb_mapping_t drb_mapping;
2783 drx_config_t drx_config;
2784 pdcp_lte_security_info_t pdcp_security;
2785 meas_capabilities_item_band_mappings_t meas_capabilities_item_band_mappings;
2786 simult_pucch_pusch_cell_type cell_type;
2787 bool bcch_dl_sch_msg;
2788 lpp_pos_sib_type_t pos_sib_type;
2789 uint8_t dcch_segment_number;
2790 tvbuff_t *dcch_segment;
2791 bool dcch_segment_last;
2792 } lte_rrc_private_data_t;
2794 /* Helper function to get or create a struct that will be actx->private_data */
2795 static lte_rrc_private_data_t* lte_rrc_get_private_data(asn1_ctx_t *actx)
2797 if (actx->private_data != NULL) {
2798 return (lte_rrc_private_data_t*)actx->private_data;
2800 else {
2801 lte_rrc_private_data_t* new_struct =
2802 wmem_new0(actx->pinfo->pool, lte_rrc_private_data_t);
2803 actx->private_data = new_struct;
2804 return new_struct;
2809 /* DRX config data */
2810 static drx_config_t* private_data_get_drx_config(asn1_ctx_t *actx)
2812 lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
2813 return &private_data->drx_config;
2816 /* DRB mapping info */
2817 static drb_mapping_t* private_data_get_drb_mapping(asn1_ctx_t *actx)
2819 lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
2820 return &private_data->drb_mapping;
2824 /* RAT type */
2825 static uint8_t private_data_get_rat_type(asn1_ctx_t *actx)
2827 lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
2828 return private_data->rat_type;
2831 static void private_data_set_rat_type(asn1_ctx_t *actx, uint8_t rat_type)
2833 lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
2834 private_data->rat_type = rat_type;
2838 /* Target RAT type */
2839 static uint8_t private_data_get_rat_target_type(asn1_ctx_t *actx)
2841 lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
2842 return private_data->target_rat_type;
2845 static void private_data_set_rat_target_type(asn1_ctx_t *actx, uint8_t target_rat_type)
2847 lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
2848 private_data->target_rat_type = target_rat_type;
2852 /* si_or_psi_geran */
2853 static uint8_t private_data_get_si_or_psi_geran(asn1_ctx_t *actx)
2855 lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
2856 return private_data->si_or_psi_geran;
2859 static void private_data_set_si_or_psi_geran(asn1_ctx_t *actx, uint8_t si_or_psi_geran)
2861 lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
2862 private_data->si_or_psi_geran = si_or_psi_geran;
2866 /* Message identifier */
2867 static uint16_t private_data_get_message_identifier(asn1_ctx_t *actx)
2869 lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
2870 return private_data->message_identifier;
2873 static void private_data_set_message_identifier(asn1_ctx_t *actx, uint16_t message_identifier)
2875 lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
2876 private_data->message_identifier = message_identifier;
2880 /* Warning message segment type */
2881 static uint16_t private_data_get_warning_message_segment_type(asn1_ctx_t *actx)
2883 lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
2884 return private_data->warning_message_segment_type;
2887 static void private_data_set_warning_message_segment_type(asn1_ctx_t *actx, uint8_t segment_type)
2889 lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
2890 private_data->warning_message_segment_type = segment_type;
2894 /* Warning message segment number */
2895 static uint16_t private_data_get_warning_message_segment_number(asn1_ctx_t *actx)
2897 lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
2898 return private_data->warning_message_segment_number;
2901 static void private_data_set_warning_message_segment_number(asn1_ctx_t *actx, uint8_t segment_number)
2903 lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
2904 private_data->warning_message_segment_number = segment_number;
2908 /* Number of RA-preambles */
2909 static uint8_t private_data_get_ra_preambles(asn1_ctx_t *actx)
2911 lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
2912 return private_data->ra_preambles;
2915 static void private_data_set_ra_preambles(asn1_ctx_t *actx, uint8_t ra_preambles)
2917 lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
2918 private_data->ra_preambles = ra_preambles;
2922 /* PDCP Security info */
2923 static pdcp_lte_security_info_t* private_data_pdcp_security_algorithms(asn1_ctx_t *actx)
2925 lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
2926 return &private_data->pdcp_security;
2930 /* Measurement UE capabilities item -> band mappings */
2931 static meas_capabilities_item_band_mappings_t* private_data_meas_capabilities_item_band_mappings(asn1_ctx_t *actx)
2933 lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
2934 return &private_data->meas_capabilities_item_band_mappings;
2937 static void set_freq_band_indicator(uint32_t value, asn1_ctx_t *actx)
2939 /* Store band mapping for this item in the next position */
2940 meas_capabilities_item_band_mappings_t *mappings = private_data_meas_capabilities_item_band_mappings(actx);
2941 if (mappings->number_of_bands_set < 256) {
2942 mappings->band_by_item[mappings->number_of_bands_set++] = (uint16_t)value;
2946 static void remove_last_freq_band_indicator(asn1_ctx_t *actx)
2948 meas_capabilities_item_band_mappings_t *mappings = private_data_meas_capabilities_item_band_mappings(actx);
2949 if ((mappings->number_of_bands_set > 0) && (mappings->number_of_bands_set < 256)) {
2950 mappings->number_of_bands_set--;
2954 /* Cell type for simultaneousPUCCH-PUSCH-r10 */
2955 static simult_pucch_pusch_cell_type private_data_get_simult_pucch_pusch_cell_type(asn1_ctx_t *actx)
2957 lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
2958 return private_data->cell_type;
2961 static void private_data_set_simult_pucch_pusch_cell_type(asn1_ctx_t *actx, simult_pucch_pusch_cell_type cell_type)
2963 lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
2964 private_data->cell_type = cell_type;
2967 /* Is top message a BCCH DL-SCH BR/MBMS */
2968 static bool private_data_get_bcch_dl_sch_msg(asn1_ctx_t *actx)
2970 lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
2971 return private_data->bcch_dl_sch_msg;
2974 static void private_data_set_bcch_dl_sch_msg(asn1_ctx_t *actx, bool is_bcch_dl_sch)
2976 lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
2977 private_data->bcch_dl_sch_msg = is_bcch_dl_sch;
2980 static lpp_pos_sib_type_t private_data_get_pos_sib_type(asn1_ctx_t *actx)
2982 lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
2983 return private_data->pos_sib_type;
2986 static void private_data_set_pos_sib_type(asn1_ctx_t *actx, lpp_pos_sib_type_t pos_sib_type)
2988 lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
2989 private_data->pos_sib_type = pos_sib_type;
2992 static uint8_t private_data_get_dcch_segment_number(asn1_ctx_t *actx)
2994 lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
2995 return private_data->dcch_segment_number;
2998 static void private_data_set_dcch_segment_number(asn1_ctx_t *actx, uint8_t dcch_segment_number)
3000 lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
3001 private_data->dcch_segment_number = dcch_segment_number;
3004 static tvbuff_t *private_data_get_dcch_segment(asn1_ctx_t *actx)
3006 lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
3007 return private_data->dcch_segment;
3010 static void private_data_set_dcch_segment(asn1_ctx_t *actx, tvbuff_t *dcch_segment)
3012 lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
3013 private_data->dcch_segment = dcch_segment;
3016 static bool private_data_get_dcch_segment_last(asn1_ctx_t *actx)
3018 lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
3019 return private_data->dcch_segment_last;
3022 static void private_data_set_dcch_segment_last(asn1_ctx_t *actx, bool dcch_segment_last)
3024 lte_rrc_private_data_t *private_data = (lte_rrc_private_data_t*)lte_rrc_get_private_data(actx);
3025 private_data->dcch_segment_last = dcch_segment_last;
3028 /*****************************************************************************/
3031 static void
3032 lte_rrc_localTimeOffset_fmt(char *s, uint32_t v)
3034 int32_t time_offset = (int32_t) v;
3036 snprintf(s, ITEM_LABEL_LENGTH, "UTC time %c %dhr %dmin (%d)",
3037 (time_offset < 0) ? '-':'+', abs(time_offset) >> 2,
3038 (abs(time_offset) & 0x03) * 15, time_offset);
3041 static void
3042 dissect_lte_rrc_warningMessageSegment(tvbuff_t *warning_msg_seg_tvb, proto_tree *tree, packet_info *pinfo, uint8_t dataCodingScheme)
3044 uint32_t offset;
3045 uint8_t nb_of_pages, length, *str;
3046 proto_item *ti;
3047 tvbuff_t *cb_data_page_tvb, *cb_data_tvb;
3048 int i;
3050 nb_of_pages = tvb_get_uint8(warning_msg_seg_tvb, 0);
3051 ti = proto_tree_add_uint(tree, hf_lte_rrc_warningMessageSegment_nb_pages, warning_msg_seg_tvb, 0, 1, nb_of_pages);
3052 if (nb_of_pages > 15) {
3053 expert_add_info_format(pinfo, ti, &ei_lte_rrc_number_pages_le15,
3054 "Number of pages should be <=15 (found %u)", nb_of_pages);
3055 nb_of_pages = 15;
3057 for (i = 0, offset = 1; i < nb_of_pages; i++) {
3058 length = tvb_get_uint8(warning_msg_seg_tvb, offset+82);
3059 cb_data_page_tvb = tvb_new_subset_length(warning_msg_seg_tvb, offset, length);
3060 cb_data_tvb = dissect_cbs_data(dataCodingScheme, cb_data_page_tvb, tree, pinfo, 0);
3061 if (cb_data_tvb) {
3062 str = tvb_get_string_enc(pinfo->pool, cb_data_tvb, 0, tvb_reported_length(cb_data_tvb), ENC_UTF_8|ENC_NA);
3063 proto_tree_add_string_format(tree, hf_lte_rrc_warningMessageSegment_decoded_page, warning_msg_seg_tvb, offset, 83,
3064 str, "Decoded Page %u: %s", i+1, str);
3066 offset += 83;
3070 static void
3071 dissect_lte_rrc_featureGroupIndicators(tvbuff_t *featureGroupIndicators_tvb, asn1_ctx_t *actx)
3073 proto_tree *subtree;
3075 subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_featureGroupIndicators);
3076 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_1, featureGroupIndicators_tvb, 0, 1, ENC_BIG_ENDIAN);
3077 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_2, featureGroupIndicators_tvb, 1, 1, ENC_BIG_ENDIAN);
3078 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_3, featureGroupIndicators_tvb, 2, 1, ENC_BIG_ENDIAN);
3079 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_4, featureGroupIndicators_tvb, 3, 1, ENC_BIG_ENDIAN);
3080 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_5, featureGroupIndicators_tvb, 4, 1, ENC_BIG_ENDIAN);
3081 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_6, featureGroupIndicators_tvb, 5, 1, ENC_BIG_ENDIAN);
3082 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_7, featureGroupIndicators_tvb, 6, 1, ENC_BIG_ENDIAN);
3083 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_8, featureGroupIndicators_tvb, 7, 1, ENC_BIG_ENDIAN);
3084 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_9, featureGroupIndicators_tvb, 8, 1, ENC_BIG_ENDIAN);
3085 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_10, featureGroupIndicators_tvb, 9, 1, ENC_BIG_ENDIAN);
3086 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_11, featureGroupIndicators_tvb, 10, 1, ENC_BIG_ENDIAN);
3087 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_12, featureGroupIndicators_tvb, 11, 1, ENC_BIG_ENDIAN);
3088 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_13, featureGroupIndicators_tvb, 12, 1, ENC_BIG_ENDIAN);
3089 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_14, featureGroupIndicators_tvb, 13, 1, ENC_BIG_ENDIAN);
3090 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_15, featureGroupIndicators_tvb, 14, 1, ENC_BIG_ENDIAN);
3091 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_16, featureGroupIndicators_tvb, 15, 1, ENC_BIG_ENDIAN);
3092 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_17, featureGroupIndicators_tvb, 16, 1, ENC_BIG_ENDIAN);
3093 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_18, featureGroupIndicators_tvb, 17, 1, ENC_BIG_ENDIAN);
3094 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_19, featureGroupIndicators_tvb, 18, 1, ENC_BIG_ENDIAN);
3095 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_20, featureGroupIndicators_tvb, 19, 1, ENC_BIG_ENDIAN);
3096 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_21, featureGroupIndicators_tvb, 20, 1, ENC_BIG_ENDIAN);
3097 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_22, featureGroupIndicators_tvb, 21, 1, ENC_BIG_ENDIAN);
3098 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_23, featureGroupIndicators_tvb, 22, 1, ENC_BIG_ENDIAN);
3099 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_24, featureGroupIndicators_tvb, 23, 1, ENC_BIG_ENDIAN);
3100 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_25, featureGroupIndicators_tvb, 24, 1, ENC_BIG_ENDIAN);
3101 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_26, featureGroupIndicators_tvb, 25, 1, ENC_BIG_ENDIAN);
3102 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_27, featureGroupIndicators_tvb, 26, 1, ENC_BIG_ENDIAN);
3103 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_28, featureGroupIndicators_tvb, 27, 1, ENC_BIG_ENDIAN);
3104 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_29, featureGroupIndicators_tvb, 28, 1, ENC_BIG_ENDIAN);
3105 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_30, featureGroupIndicators_tvb, 29, 1, ENC_BIG_ENDIAN);
3106 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_31, featureGroupIndicators_tvb, 30, 1, ENC_BIG_ENDIAN);
3107 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_32, featureGroupIndicators_tvb, 31, 1, ENC_BIG_ENDIAN);
3110 static void
3111 dissect_lte_rrc_featureGroupIndRel10(tvbuff_t *featureGroupIndRel10_tvb, asn1_ctx_t *actx)
3113 proto_tree *subtree;
3115 subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_featureGroupIndRel10);
3116 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_101, featureGroupIndRel10_tvb, 0, 1, ENC_BIG_ENDIAN);
3117 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_102, featureGroupIndRel10_tvb, 1, 1, ENC_BIG_ENDIAN);
3118 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_103, featureGroupIndRel10_tvb, 2, 1, ENC_BIG_ENDIAN);
3119 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_104, featureGroupIndRel10_tvb, 3, 1, ENC_BIG_ENDIAN);
3120 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_105, featureGroupIndRel10_tvb, 4, 1, ENC_BIG_ENDIAN);
3121 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_106, featureGroupIndRel10_tvb, 5, 1, ENC_BIG_ENDIAN);
3122 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_107, featureGroupIndRel10_tvb, 6, 1, ENC_BIG_ENDIAN);
3123 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_108, featureGroupIndRel10_tvb, 7, 1, ENC_BIG_ENDIAN);
3124 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_109, featureGroupIndRel10_tvb, 8, 1, ENC_BIG_ENDIAN);
3125 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_110, featureGroupIndRel10_tvb, 9, 1, ENC_BIG_ENDIAN);
3126 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_111, featureGroupIndRel10_tvb, 10, 1, ENC_BIG_ENDIAN);
3127 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_112, featureGroupIndRel10_tvb, 11, 1, ENC_BIG_ENDIAN);
3128 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_113, featureGroupIndRel10_tvb, 12, 1, ENC_BIG_ENDIAN);
3129 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_114, featureGroupIndRel10_tvb, 13, 1, ENC_BIG_ENDIAN);
3130 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_115, featureGroupIndRel10_tvb, 14, 1, ENC_BIG_ENDIAN);
3131 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_116, featureGroupIndRel10_tvb, 15, 1, ENC_BIG_ENDIAN);
3132 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_117, featureGroupIndRel10_tvb, 16, 1, ENC_BIG_ENDIAN);
3133 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_118, featureGroupIndRel10_tvb, 17, 1, ENC_BIG_ENDIAN);
3134 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_119, featureGroupIndRel10_tvb, 18, 1, ENC_BIG_ENDIAN);
3135 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_120, featureGroupIndRel10_tvb, 19, 1, ENC_BIG_ENDIAN);
3136 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_121, featureGroupIndRel10_tvb, 20, 1, ENC_BIG_ENDIAN);
3137 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_122, featureGroupIndRel10_tvb, 21, 1, ENC_BIG_ENDIAN);
3138 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_123, featureGroupIndRel10_tvb, 22, 1, ENC_BIG_ENDIAN);
3139 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_124, featureGroupIndRel10_tvb, 23, 1, ENC_BIG_ENDIAN);
3140 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_125, featureGroupIndRel10_tvb, 24, 1, ENC_BIG_ENDIAN);
3141 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_126, featureGroupIndRel10_tvb, 25, 1, ENC_BIG_ENDIAN);
3142 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_127, featureGroupIndRel10_tvb, 26, 1, ENC_BIG_ENDIAN);
3143 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_128, featureGroupIndRel10_tvb, 27, 1, ENC_BIG_ENDIAN);
3144 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_129, featureGroupIndRel10_tvb, 28, 1, ENC_BIG_ENDIAN);
3145 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_130, featureGroupIndRel10_tvb, 29, 1, ENC_BIG_ENDIAN);
3146 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_131, featureGroupIndRel10_tvb, 30, 1, ENC_BIG_ENDIAN);
3147 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_132, featureGroupIndRel10_tvb, 31, 1, ENC_BIG_ENDIAN);
3150 static void
3151 dissect_lte_rrc_featureGroupIndRel9Add(tvbuff_t *featureGroupIndRel9Add_tvb, asn1_ctx_t *actx)
3153 proto_tree *subtree;
3155 subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_featureGroupIndRel9Add);
3156 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_33, featureGroupIndRel9Add_tvb, 0, 1, ENC_BIG_ENDIAN);
3157 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_34, featureGroupIndRel9Add_tvb, 1, 1, ENC_BIG_ENDIAN);
3158 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_35, featureGroupIndRel9Add_tvb, 2, 1, ENC_BIG_ENDIAN);
3159 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_36, featureGroupIndRel9Add_tvb, 3, 1, ENC_BIG_ENDIAN);
3160 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_37, featureGroupIndRel9Add_tvb, 4, 1, ENC_BIG_ENDIAN);
3161 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_38, featureGroupIndRel9Add_tvb, 5, 1, ENC_BIG_ENDIAN);
3162 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_39, featureGroupIndRel9Add_tvb, 6, 1, ENC_BIG_ENDIAN);
3163 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_40, featureGroupIndRel9Add_tvb, 7, 1, ENC_BIG_ENDIAN);
3164 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_41, featureGroupIndRel9Add_tvb, 8, 1, ENC_BIG_ENDIAN);
3165 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_42, featureGroupIndRel9Add_tvb, 9, 1, ENC_BIG_ENDIAN);
3166 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_43, featureGroupIndRel9Add_tvb, 10, 1, ENC_BIG_ENDIAN);
3167 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_44, featureGroupIndRel9Add_tvb, 11, 1, ENC_BIG_ENDIAN);
3168 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_45, featureGroupIndRel9Add_tvb, 12, 1, ENC_BIG_ENDIAN);
3169 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_46, featureGroupIndRel9Add_tvb, 13, 1, ENC_BIG_ENDIAN);
3170 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_47, featureGroupIndRel9Add_tvb, 14, 1, ENC_BIG_ENDIAN);
3171 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_48, featureGroupIndRel9Add_tvb, 15, 1, ENC_BIG_ENDIAN);
3172 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_49, featureGroupIndRel9Add_tvb, 16, 1, ENC_BIG_ENDIAN);
3173 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_50, featureGroupIndRel9Add_tvb, 17, 1, ENC_BIG_ENDIAN);
3174 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_51, featureGroupIndRel9Add_tvb, 18, 1, ENC_BIG_ENDIAN);
3175 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_52, featureGroupIndRel9Add_tvb, 19, 1, ENC_BIG_ENDIAN);
3176 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_53, featureGroupIndRel9Add_tvb, 20, 1, ENC_BIG_ENDIAN);
3177 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_54, featureGroupIndRel9Add_tvb, 21, 1, ENC_BIG_ENDIAN);
3178 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_55, featureGroupIndRel9Add_tvb, 22, 1, ENC_BIG_ENDIAN);
3179 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_56, featureGroupIndRel9Add_tvb, 23, 1, ENC_BIG_ENDIAN);
3180 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_57, featureGroupIndRel9Add_tvb, 24, 1, ENC_BIG_ENDIAN);
3181 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_58, featureGroupIndRel9Add_tvb, 25, 1, ENC_BIG_ENDIAN);
3182 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_59, featureGroupIndRel9Add_tvb, 26, 1, ENC_BIG_ENDIAN);
3183 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_60, featureGroupIndRel9Add_tvb, 27, 1, ENC_BIG_ENDIAN);
3184 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_61, featureGroupIndRel9Add_tvb, 28, 1, ENC_BIG_ENDIAN);
3185 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_62, featureGroupIndRel9Add_tvb, 29, 1, ENC_BIG_ENDIAN);
3186 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_63, featureGroupIndRel9Add_tvb, 30, 1, ENC_BIG_ENDIAN);
3187 proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_64, featureGroupIndRel9Add_tvb, 31, 1, ENC_BIG_ENDIAN);
3190 /* Functions to get enum values out of indices parsed */
3191 /* If entry not found, return last element of array */
3192 static uint32_t drx_lookup_onDurationTimer(uint32_t idx)
3194 static const uint32_t vals[] = {1,2,3,4,5,6,8,10,20,30,40,50,60,80,100,200};
3196 return vals[MIN(idx, array_length(vals) - 1)];
3199 static uint32_t drx_lookup_inactivityTimer(uint32_t idx)
3201 static const uint32_t vals[] = {
3202 1,2,3,4,5,6,8,10,20,30,40,50,60,80,100,200,300,500,750,1280,1920,2560,0
3205 return vals[MIN(idx, array_length(vals) - 1)];
3208 static uint32_t drx_lookup_retransmissionTimer(uint32_t idx)
3210 static const uint32_t vals[] = {1,2,4,6,8,16,24,33};
3212 return vals[MIN(idx, array_length(vals) - 1)];
3215 static uint32_t drx_lookup_longCycle(uint32_t idx)
3217 static const uint32_t vals[] = {
3218 10,20,32,40,64,80,128,160,256,320,512,640,1024,1280,2048,2560
3221 return vals[MIN(idx, array_length(vals) - 1)];
3224 static uint32_t drx_lookup_longCycle_v1130(uint32_t idx)
3226 static const uint32_t vals[] = {
3227 60,70
3230 return vals[MIN(idx, array_length(vals) - 1)];
3234 static uint32_t drx_lookup_shortCycle(uint32_t idx)
3236 static const uint32_t vals[] = {
3237 2,5,8,10,16,20,32,40,64,80,128,160,256,320,512,640
3240 return vals[MIN(idx, array_length(vals) - 1)];
3243 static void drx_check_config_sane(drx_config_t *config, asn1_ctx_t *actx)
3245 /* OnDuration must be shorter than long cycle */
3246 if (config->onDurationTimer >= config->longCycle) {
3247 expert_add_info_format(actx->pinfo, actx->created_item, &ei_lte_rrc_invalid_drx_config,
3248 "OnDurationTimer (%u) should be less than long cycle (%u)",
3249 config->onDurationTimer, config->longCycle);
3252 if (config->shortCycleConfigured) {
3253 /* Short cycle must be < long, and be a multiple of it */
3254 if (config->shortCycle >= config->longCycle) {
3255 expert_add_info_format(actx->pinfo, actx->created_item, &ei_lte_rrc_invalid_drx_config,
3256 "Short DRX cycle (%u) must be shorter than long cycle (%u)",
3257 config->shortCycle, config->longCycle);
3259 /* Long cycle needs to be an exact multiple of the short cycle */
3260 else if (config->shortCycle && ((config->longCycle % config->shortCycle) != 0)) {
3261 expert_add_info_format(actx->pinfo, actx->created_item, &ei_lte_rrc_invalid_drx_config,
3262 "Short DRX cycle (%u) must divide the long cycle (%u) exactly",
3263 config->shortCycle, config->longCycle);
3266 /* OnDuration shouldn't be longer than the short cycle */
3267 if (config->onDurationTimer >= config->shortCycle) {
3268 expert_add_info_format(actx->pinfo, actx->created_item, &ei_lte_rrc_invalid_drx_config,
3269 "OnDurationTimer (%u) should not be longer than the short cycle (%u)",
3270 config->onDurationTimer, config->shortCycle);
3272 /* TODO: check that (onDuration+(shortCycle*shortCycleTimer)) < longCycle ? */
3273 /* TODO: check that (shortCycle*shortCycleTimer) < longCycle ? */
3277 /* Break sr-configIndex down into periodicity and offset. From 36.231, 10.1 */
3278 static void sr_lookup_configindex(uint32_t config_index, uint16_t *periodicity, uint16_t *offset)
3280 if (config_index < 5) {
3281 *periodicity = 5;
3282 *offset = config_index;
3283 } else if (config_index < 15) {
3284 *periodicity = 10;
3285 *offset = config_index - 5;
3287 else if (config_index < 35) {
3288 *periodicity = 20;
3289 *offset = config_index - 15;
3291 else if (config_index < 75) {
3292 *periodicity = 40;
3293 *offset = config_index - 35;
3295 else if (config_index < 155) {
3296 *periodicity = 80;
3297 *offset = config_index - 75;
3299 else if (config_index < 157) {
3300 *periodicity = 2;
3301 *offset = config_index - 155;
3303 else {
3304 *periodicity = 1;
3305 *offset = 0;
3309 #include "packet-lte-rrc-fn.c"
3311 static int
3312 dissect_lte_rrc_DL_CCCH(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
3314 proto_item *ti;
3315 proto_tree *lte_rrc_tree;
3317 col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC DL_CCCH");
3318 col_clear(pinfo->cinfo, COL_INFO);
3320 ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
3321 lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
3322 dissect_DL_CCCH_Message_PDU(tvb, pinfo, lte_rrc_tree, NULL);
3323 return tvb_captured_length(tvb);
3326 static int
3327 dissect_lte_rrc_DL_DCCH(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
3329 proto_item *ti;
3330 proto_tree *lte_rrc_tree;
3332 col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC DL_DCCH");
3333 col_clear(pinfo->cinfo, COL_INFO);
3335 ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
3336 lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
3337 dissect_lte_rrc_DL_DCCH_Message_PDU(tvb, pinfo, lte_rrc_tree, NULL);
3338 return tvb_captured_length(tvb);
3341 static int
3342 dissect_lte_rrc_UL_CCCH(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
3344 proto_item *ti;
3345 proto_tree *lte_rrc_tree;
3347 col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC UL_CCCH");
3348 col_clear(pinfo->cinfo, COL_INFO);
3350 ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
3351 lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
3352 dissect_UL_CCCH_Message_PDU(tvb, pinfo, lte_rrc_tree, NULL);
3353 return tvb_captured_length(tvb);
3356 static int
3357 dissect_lte_rrc_UL_DCCH(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
3359 proto_item *ti;
3360 proto_tree *lte_rrc_tree;
3362 col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC UL_DCCH");
3363 col_clear(pinfo->cinfo, COL_INFO);
3365 ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
3366 lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
3367 dissect_lte_rrc_UL_DCCH_Message_PDU(tvb, pinfo, lte_rrc_tree, NULL);
3368 return tvb_captured_length(tvb);
3371 static int
3372 dissect_lte_rrc_BCCH_BCH(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
3374 proto_item *ti;
3375 proto_tree *lte_rrc_tree;
3377 col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC BCCH_BCH");
3378 col_clear(pinfo->cinfo, COL_INFO);
3380 ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
3381 lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
3382 dissect_BCCH_BCH_Message_PDU(tvb, pinfo, lte_rrc_tree, NULL);
3383 return tvb_captured_length(tvb);
3386 static int
3387 dissect_lte_rrc_BCCH_DL_SCH(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
3389 proto_item *ti;
3390 proto_tree *lte_rrc_tree;
3392 col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC DL_SCH");
3393 col_clear(pinfo->cinfo, COL_INFO);
3395 ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
3396 lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
3397 dissect_BCCH_DL_SCH_Message_PDU(tvb, pinfo, lte_rrc_tree, NULL);
3398 return tvb_captured_length(tvb);
3401 static int
3402 dissect_lte_rrc_BCCH_DL_SCH_BR(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
3404 proto_item *ti;
3405 proto_tree *lte_rrc_tree;
3407 col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC DL_SCH_BR");
3408 col_clear(pinfo->cinfo, COL_INFO);
3410 ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
3411 lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
3412 dissect_BCCH_DL_SCH_Message_BR_PDU(tvb, pinfo, lte_rrc_tree, NULL);
3413 return tvb_captured_length(tvb);
3416 static int
3417 dissect_lte_rrc_PCCH(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
3419 proto_item *ti;
3420 proto_tree *lte_rrc_tree;
3422 col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC PCCH");
3423 col_clear(pinfo->cinfo, COL_INFO);
3425 ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
3426 lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
3427 dissect_PCCH_Message_PDU(tvb, pinfo, lte_rrc_tree, NULL);
3428 return tvb_captured_length(tvb);
3431 static int
3432 dissect_lte_rrc_MCCH(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
3434 proto_item *ti;
3435 proto_tree *lte_rrc_tree;
3437 col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC MCCH");
3438 col_clear(pinfo->cinfo, COL_INFO);
3440 ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
3441 lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
3442 dissect_MCCH_Message_PDU(tvb, pinfo, lte_rrc_tree, NULL);
3443 return tvb_captured_length(tvb);
3446 static int
3447 dissect_lte_rrc_Handover_Preparation_Info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
3449 proto_item *ti;
3450 proto_tree *lte_rrc_tree;
3452 col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE_HO_Prep_Info");
3453 col_clear(pinfo->cinfo, COL_INFO);
3455 /* Don't want elements inside message updating Info column, so set now and
3456 freeze during dissection of PDU */
3457 col_set_str(pinfo->cinfo, COL_INFO, "HandoverPreparationInformation");
3458 col_set_writable(pinfo->cinfo, COL_INFO, false);
3460 ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
3461 lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
3462 dissect_lte_rrc_HandoverPreparationInformation_PDU(tvb, pinfo, lte_rrc_tree, NULL);
3464 col_set_writable(pinfo->cinfo, COL_INFO, true);
3465 return tvb_captured_length(tvb);
3468 static int
3469 dissect_lte_rrc_SBCCH_SL_BCH(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
3471 proto_item *ti;
3472 proto_tree *lte_rrc_tree;
3474 col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC SBCCH_SL_BCH");
3475 col_clear(pinfo->cinfo, COL_INFO);
3477 ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
3478 lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
3479 dissect_SBCCH_SL_BCH_Message_PDU(tvb, pinfo, lte_rrc_tree, NULL);
3480 return tvb_captured_length(tvb);
3483 static int
3484 dissect_lte_rrc_SBCCH_SL_BCH_V2X(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
3486 proto_item *ti;
3487 proto_tree *lte_rrc_tree;
3489 col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC SBCCH_SL_BCH_V2X");
3490 col_clear(pinfo->cinfo, COL_INFO);
3492 ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
3493 lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
3494 dissect_SBCCH_SL_BCH_Message_V2X_r14_PDU(tvb, pinfo, lte_rrc_tree, NULL);
3495 return tvb_captured_length(tvb);
3498 static int
3499 dissect_lte_rrc_SC_MCCH(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
3501 proto_item *ti;
3502 proto_tree *lte_rrc_tree;
3504 col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC SC MCCH");
3505 col_clear(pinfo->cinfo, COL_INFO);
3507 ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
3508 lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
3509 dissect_SC_MCCH_Message_r13_PDU(tvb, pinfo, lte_rrc_tree, NULL);
3510 return tvb_captured_length(tvb);
3513 static int
3514 dissect_lte_rrc_DL_CCCH_NB(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
3516 proto_item *ti;
3517 proto_tree *lte_rrc_tree;
3519 col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC DL_CCCH_NB");
3520 col_clear(pinfo->cinfo, COL_INFO);
3522 ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
3523 lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
3524 dissect_DL_CCCH_Message_NB_PDU(tvb, pinfo, lte_rrc_tree, NULL);
3525 return tvb_captured_length(tvb);
3528 static int
3529 dissect_lte_rrc_DL_DCCH_NB(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
3531 proto_item *ti;
3532 proto_tree *lte_rrc_tree;
3534 col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC DL_DCCH_NB");
3535 col_clear(pinfo->cinfo, COL_INFO);
3537 ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
3538 lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
3539 dissect_DL_DCCH_Message_NB_PDU(tvb, pinfo, lte_rrc_tree, NULL);
3540 return tvb_captured_length(tvb);
3543 static int
3544 dissect_lte_rrc_UL_CCCH_NB(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
3546 proto_item *ti;
3547 proto_tree *lte_rrc_tree;
3549 col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC UL_CCCH_NB");
3550 col_clear(pinfo->cinfo, COL_INFO);
3552 ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
3553 lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
3554 dissect_UL_CCCH_Message_NB_PDU(tvb, pinfo, lte_rrc_tree, NULL);
3555 return tvb_captured_length(tvb);
3558 static int
3559 dissect_lte_rrc_UL_DCCH_NB(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
3561 proto_item *ti;
3562 proto_tree *lte_rrc_tree;
3564 col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC UL_DCCH_NB");
3565 col_clear(pinfo->cinfo, COL_INFO);
3567 ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
3568 lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
3569 dissect_UL_DCCH_Message_NB_PDU(tvb, pinfo, lte_rrc_tree, NULL);
3570 return tvb_captured_length(tvb);
3573 static int
3574 dissect_lte_rrc_BCCH_BCH_NB(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
3576 proto_item *ti;
3577 proto_tree *lte_rrc_tree;
3579 col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC BCCH_BCH_NB");
3580 col_clear(pinfo->cinfo, COL_INFO);
3582 ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
3583 lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
3584 dissect_BCCH_BCH_Message_NB_PDU(tvb, pinfo, lte_rrc_tree, NULL);
3585 return tvb_captured_length(tvb);
3588 static int
3589 dissect_lte_rrc_BCCH_BCH_TDD_NB(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
3591 proto_item *ti;
3592 proto_tree *lte_rrc_tree;
3594 col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC BCCH_BCH_TDD_NB");
3595 col_clear(pinfo->cinfo, COL_INFO);
3597 ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
3598 lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
3599 dissect_BCCH_BCH_Message_TDD_NB_PDU(tvb, pinfo, lte_rrc_tree, NULL);
3600 return tvb_captured_length(tvb);
3603 static int
3604 dissect_lte_rrc_BCCH_DL_SCH_NB(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
3606 proto_item *ti;
3607 proto_tree *lte_rrc_tree;
3609 col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC DL_SCH_NB");
3610 col_clear(pinfo->cinfo, COL_INFO);
3612 ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
3613 lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
3614 dissect_BCCH_DL_SCH_Message_NB_PDU(tvb, pinfo, lte_rrc_tree, NULL);
3615 return tvb_captured_length(tvb);
3618 static int
3619 dissect_lte_rrc_PCCH_NB(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
3621 proto_item *ti;
3622 proto_tree *lte_rrc_tree;
3624 col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC PCCH_NB");
3625 col_clear(pinfo->cinfo, COL_INFO);
3627 ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
3628 lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
3629 dissect_PCCH_Message_NB_PDU(tvb, pinfo, lte_rrc_tree, NULL);
3630 return tvb_captured_length(tvb);
3633 static int
3634 dissect_lte_rrc_SC_MCCH_NB(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
3636 proto_item *ti;
3637 proto_tree *lte_rrc_tree;
3639 col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC SC MCCH_NB");
3640 col_clear(pinfo->cinfo, COL_INFO);
3642 ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
3643 lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
3644 dissect_SC_MCCH_Message_NB_PDU(tvb, pinfo, lte_rrc_tree, NULL);
3645 return tvb_captured_length(tvb);
3648 static int
3649 dissect_lte_rrc_BCCH_BCH_MBMS(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
3651 proto_item *ti;
3652 proto_tree *lte_rrc_tree;
3654 col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC BCCH_BCH_MBMS");
3655 col_clear(pinfo->cinfo, COL_INFO);
3657 ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
3658 lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
3659 dissect_BCCH_BCH_Message_MBMS_PDU(tvb, pinfo, lte_rrc_tree, NULL);
3660 return tvb_captured_length(tvb);
3663 static int
3664 dissect_lte_rrc_BCCH_DL_SCH_MBMS(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
3666 proto_item *ti;
3667 proto_tree *lte_rrc_tree;
3669 col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC DL_SCH_MBMS");
3670 col_clear(pinfo->cinfo, COL_INFO);
3672 ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
3673 lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
3674 dissect_BCCH_DL_SCH_Message_MBMS_PDU(tvb, pinfo, lte_rrc_tree, NULL);
3675 return tvb_captured_length(tvb);
3678 static int
3679 dissect_lte_rrc_ue_eutra_capability_msg(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, void* data _U_)
3681 proto_item* ti;
3682 proto_tree* lte_rrc_tree;
3684 col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC UE EUTRA Capability");
3685 col_clear(pinfo->cinfo, COL_INFO);
3687 ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
3688 lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
3689 dissect_lte_rrc_UE_EUTRA_Capability_PDU(tvb, pinfo, lte_rrc_tree, NULL);
3690 return tvb_captured_length(tvb);
3693 static int
3694 dissect_lte_rrc_ueradioaccesscapabilityinformation_msg(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, void* data _U_)
3696 proto_item* ti;
3697 proto_tree* lte_rrc_tree;
3699 col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC UERadioAccessCapabilityInformation");
3700 col_clear(pinfo->cinfo, COL_INFO);
3702 ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
3703 lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
3704 dissect_lte_rrc_UERadioAccessCapabilityInformation_PDU(tvb, pinfo, lte_rrc_tree, NULL);
3705 return tvb_captured_length(tvb);
3708 static int
3709 dissect_lte_rrc_dissect_SystemInformationBlockType1_v890_IEs(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, void* data _U_)
3711 proto_item* ti;
3712 proto_tree* lte_rrc_tree;
3714 col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC SystemInformationBlockType1-v890-IEs");
3715 col_set_str(pinfo->cinfo, COL_INFO, "LTE RRC SystemInformationBlockType1-v890-IEs");
3717 ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
3718 lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
3719 dissect_SystemInformationBlockType1_v890_IEs_PDU(tvb, pinfo, lte_rrc_tree, NULL);
3720 return tvb_captured_length(tvb);
3725 /*--- proto_register_rrc -------------------------------------------*/
3726 void proto_register_lte_rrc(void) {
3728 /* List of fields */
3729 static hf_register_info hf[] = {
3731 #include "packet-lte-rrc-hfarr.c"
3733 { &hf_lte_rrc_eutra_cap_feat_group_ind_1,
3734 { "Indicator 1", "lte-rrc.eutra_cap_feat_group_ind_1",
3735 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_1_val), 0,
3736 "EUTRA Feature Group Indicator 1", HFILL }},
3737 { &hf_lte_rrc_eutra_cap_feat_group_ind_2,
3738 { "Indicator 2", "lte-rrc.eutra_cap_feat_group_ind_2",
3739 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_2_val), 0,
3740 "EUTRA Feature Group Indicator 2", HFILL }},
3741 { &hf_lte_rrc_eutra_cap_feat_group_ind_3,
3742 { "Indicator 3", "lte-rrc.eutra_cap_feat_group_ind_3",
3743 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_3_val), 0,
3744 "EUTRA Feature Group Indicator 3", HFILL }},
3745 { &hf_lte_rrc_eutra_cap_feat_group_ind_4,
3746 { "Indicator 4", "lte-rrc.eutra_cap_feat_group_ind_4",
3747 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_4_val), 0,
3748 "EUTRA Feature Group Indicator 4", HFILL }},
3749 { &hf_lte_rrc_eutra_cap_feat_group_ind_5,
3750 { "Indicator 5", "lte-rrc.eutra_cap_feat_group_ind_5",
3751 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_5_val), 0,
3752 "EUTRA Feature Group Indicator 5", HFILL }},
3753 { &hf_lte_rrc_eutra_cap_feat_group_ind_6,
3754 { "Indicator 6", "lte-rrc.eutra_cap_feat_group_ind_6",
3755 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_6_val), 0,
3756 "EUTRA Feature Group Indicator 6", HFILL }},
3757 { &hf_lte_rrc_eutra_cap_feat_group_ind_7,
3758 { "Indicator 7", "lte-rrc.eutra_cap_feat_group_ind_7",
3759 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_7_val), 0,
3760 "EUTRA Feature Group Indicator 7", HFILL }},
3761 { &hf_lte_rrc_eutra_cap_feat_group_ind_8,
3762 { "Indicator 8", "lte-rrc.eutra_cap_feat_group_ind_8",
3763 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_8_val), 0,
3764 "EUTRA Feature Group Indicator 8", HFILL }},
3765 { &hf_lte_rrc_eutra_cap_feat_group_ind_9,
3766 { "Indicator 9", "lte-rrc.eutra_cap_feat_group_ind_9",
3767 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_9_val), 0,
3768 "EUTRA Feature Group Indicator 9", HFILL }},
3769 { &hf_lte_rrc_eutra_cap_feat_group_ind_10,
3770 { "Indicator 10", "lte-rrc.eutra_cap_feat_group_ind_10",
3771 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_10_val), 0,
3772 "EUTRA Feature Group Indicator 10", HFILL }},
3773 { &hf_lte_rrc_eutra_cap_feat_group_ind_11,
3774 { "Indicator 11", "lte-rrc.eutra_cap_feat_group_ind_11",
3775 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_11_val), 0,
3776 "EUTRA Feature Group Indicator 11", HFILL }},
3777 { &hf_lte_rrc_eutra_cap_feat_group_ind_12,
3778 { "Indicator 12", "lte-rrc.eutra_cap_feat_group_ind_12",
3779 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_12_val), 0,
3780 "EUTRA Feature Group Indicator 12", HFILL }},
3781 { &hf_lte_rrc_eutra_cap_feat_group_ind_13,
3782 { "Indicator 13", "lte-rrc.eutra_cap_feat_group_ind_13",
3783 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_13_val), 0,
3784 "EUTRA Feature Group Indicator", HFILL }},
3785 { &hf_lte_rrc_eutra_cap_feat_group_ind_14,
3786 { "Indicator 14", "lte-rrc.eutra_cap_feat_group_ind_14",
3787 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_14_val), 0,
3788 "EUTRA Feature Group Indicator 14", HFILL }},
3789 { &hf_lte_rrc_eutra_cap_feat_group_ind_15,
3790 { "Indicator 15", "lte-rrc.eutra_cap_feat_group_ind_15",
3791 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_15_val), 0,
3792 "EUTRA Feature Group Indicator 15", HFILL }},
3793 { &hf_lte_rrc_eutra_cap_feat_group_ind_16,
3794 { "Indicator 16", "lte-rrc.eutra_cap_feat_group_ind_16",
3795 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_16_val), 0,
3796 "EUTRA Feature Group Indicator 16", HFILL }},
3797 { &hf_lte_rrc_eutra_cap_feat_group_ind_17,
3798 { "Indicator 17", "lte-rrc.eutra_cap_feat_group_ind_17",
3799 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_17_val), 0,
3800 "EUTRA Feature Group Indicator 17", HFILL }},
3801 { &hf_lte_rrc_eutra_cap_feat_group_ind_18,
3802 { "Indicator 18", "lte-rrc.eutra_cap_feat_group_ind_18",
3803 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_18_val), 0,
3804 "EUTRA Feature Group Indicator 18", HFILL }},
3805 { &hf_lte_rrc_eutra_cap_feat_group_ind_19,
3806 { "Indicator 19", "lte-rrc.eutra_cap_feat_group_ind_19",
3807 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_19_val), 0,
3808 "EUTRA Feature Group Indicator 19", HFILL }},
3809 { &hf_lte_rrc_eutra_cap_feat_group_ind_20,
3810 { "Indicator 20", "lte-rrc.eutra_cap_feat_group_ind_20",
3811 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_20_val), 0,
3812 "EUTRA Feature Group Indicator 20", HFILL }},
3813 { &hf_lte_rrc_eutra_cap_feat_group_ind_21,
3814 { "Indicator 21", "lte-rrc.eutra_cap_feat_group_ind_21",
3815 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_21_val), 0,
3816 "EUTRA Feature Group Indicator 21", HFILL }},
3817 { &hf_lte_rrc_eutra_cap_feat_group_ind_22,
3818 { "Indicator 22", "lte-rrc.eutra_cap_feat_group_ind_22",
3819 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_22_val), 0,
3820 "EUTRA Feature Group Indicator 22", HFILL }},
3821 { &hf_lte_rrc_eutra_cap_feat_group_ind_23,
3822 { "Indicator 23", "lte-rrc.eutra_cap_feat_group_ind_23",
3823 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_23_val), 0,
3824 "EUTRA Feature Group Indicator 23", HFILL }},
3825 { &hf_lte_rrc_eutra_cap_feat_group_ind_24,
3826 { "Indicator 24", "lte-rrc.eutra_cap_feat_group_ind_24",
3827 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_24_val), 0,
3828 "EUTRA Feature Group Indicator 24", HFILL }},
3829 { &hf_lte_rrc_eutra_cap_feat_group_ind_25,
3830 { "Indicator 25", "lte-rrc.eutra_cap_feat_group_ind_25",
3831 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_25_val), 0,
3832 "EUTRA Feature Group Indicator 25", HFILL }},
3833 { &hf_lte_rrc_eutra_cap_feat_group_ind_26,
3834 { "Indicator 26", "lte-rrc.eutra_cap_feat_group_ind_26",
3835 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_26_val), 0,
3836 "EUTRA Feature Group Indicator 26", HFILL }},
3837 { &hf_lte_rrc_eutra_cap_feat_group_ind_27,
3838 { "Indicator 27", "lte-rrc.eutra_cap_feat_group_ind_27",
3839 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_27_val), 0,
3840 "EUTRA Feature Group Indicator 27", HFILL }},
3841 { &hf_lte_rrc_eutra_cap_feat_group_ind_28,
3842 { "Indicator 28", "lte-rrc.eutra_cap_feat_group_ind_28",
3843 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_28_val), 0,
3844 "EUTRA Feature Group Indicator 28", HFILL }},
3845 { &hf_lte_rrc_eutra_cap_feat_group_ind_29,
3846 { "Indicator 29", "lte-rrc.eutra_cap_feat_group_ind_29",
3847 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_29_val), 0,
3848 "EUTRA Feature Group Indicator 29", HFILL }},
3849 { &hf_lte_rrc_eutra_cap_feat_group_ind_30,
3850 { "Indicator 30", "lte-rrc.eutra_cap_feat_group_ind_30",
3851 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_30_val), 0,
3852 "EUTRA Feature Group Indicator 30", HFILL }},
3853 { &hf_lte_rrc_eutra_cap_feat_group_ind_31,
3854 { "Indicator 31", "lte-rrc.eutra_cap_feat_group_ind_31",
3855 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_31_val), 0,
3856 "EUTRA Feature Group Indicator 31", HFILL }},
3857 { &hf_lte_rrc_eutra_cap_feat_group_ind_32,
3858 { "Indicator 32", "lte-rrc.eutra_cap_feat_group_ind_32",
3859 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_32_val), 0,
3860 "EUTRA Feature Group Indicator 32", HFILL }},
3861 { &hf_lte_rrc_eutra_cap_feat_group_ind_33,
3862 { "Indicator 33", "lte-rrc.eutra_cap_feat_group_ind_33",
3863 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_33_val), 0,
3864 "EUTRA Feature Group Indicator 33", HFILL }},
3865 { &hf_lte_rrc_eutra_cap_feat_group_ind_34,
3866 { "Indicator 34", "lte-rrc.eutra_cap_feat_group_ind_34",
3867 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_34_val), 0,
3868 "EUTRA Feature Group Indicator 34", HFILL }},
3869 { &hf_lte_rrc_eutra_cap_feat_group_ind_35,
3870 { "Indicator 35", "lte-rrc.eutra_cap_feat_group_ind_35",
3871 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_35_val), 0,
3872 "EUTRA Feature Group Indicator 35", HFILL }},
3873 { &hf_lte_rrc_eutra_cap_feat_group_ind_36,
3874 { "Indicator 36", "lte-rrc.eutra_cap_feat_group_ind_36",
3875 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_36_val), 0,
3876 "EUTRA Feature Group Indicator 36", HFILL }},
3877 { &hf_lte_rrc_eutra_cap_feat_group_ind_37,
3878 { "Indicator 37", "lte-rrc.eutra_cap_feat_group_ind_37",
3879 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_37_val), 0,
3880 "EUTRA Feature Group Indicator 37", HFILL }},
3881 { &hf_lte_rrc_eutra_cap_feat_group_ind_38,
3882 { "Indicator 38", "lte-rrc.eutra_cap_feat_group_ind_38",
3883 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_38_val), 0,
3884 "EUTRA Feature Group Indicator 38", HFILL }},
3885 { &hf_lte_rrc_eutra_cap_feat_group_ind_39,
3886 { "Indicator 39", "lte-rrc.eutra_cap_feat_group_ind_39",
3887 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_39_val), 0,
3888 "EUTRA Feature Group Indicator 39", HFILL }},
3889 { &hf_lte_rrc_eutra_cap_feat_group_ind_40,
3890 { "Indicator 40", "lte-rrc.eutra_cap_feat_group_ind_40",
3891 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_40_val), 0,
3892 "EUTRA Feature Group Indicator 40", HFILL }},
3893 { &hf_lte_rrc_eutra_cap_feat_group_ind_41,
3894 { "Indicator 41", "lte-rrc.eutra_cap_feat_group_ind_41",
3895 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_41_val), 0,
3896 "EUTRA Feature Group Indicator 41", HFILL }},
3897 { &hf_lte_rrc_eutra_cap_feat_group_ind_42,
3898 { "Indicator 42", "lte-rrc.eutra_cap_feat_group_ind_42",
3899 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_42_val), 0,
3900 "EUTRA Feature Group Indicator 42", HFILL }},
3901 { &hf_lte_rrc_eutra_cap_feat_group_ind_43,
3902 { "Indicator 43", "lte-rrc.eutra_cap_feat_group_ind_43",
3903 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_43_val), 0,
3904 "EUTRA Feature Group Indicator 43", HFILL }},
3905 { &hf_lte_rrc_eutra_cap_feat_group_ind_44,
3906 { "Indicator 44", "lte-rrc.eutra_cap_feat_group_ind_44",
3907 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_44_val), 0,
3908 "EUTRA Feature Group Indicator 44", HFILL }},
3909 { &hf_lte_rrc_eutra_cap_feat_group_ind_45,
3910 { "Indicator 45", "lte-rrc.eutra_cap_feat_group_ind_45",
3911 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_45_val), 0,
3912 "EUTRA Feature Group Indicator 45", HFILL }},
3913 { &hf_lte_rrc_eutra_cap_feat_group_ind_46,
3914 { "Indicator 46", "lte-rrc.eutra_cap_feat_group_ind_46",
3915 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_46_val), 0,
3916 "EUTRA Feature Group Indicator 46", HFILL }},
3917 { &hf_lte_rrc_eutra_cap_feat_group_ind_47,
3918 { "Indicator 47", "lte-rrc.eutra_cap_feat_group_ind_47",
3919 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_47_val), 0,
3920 "EUTRA Feature Group Indicator 47", HFILL }},
3921 { &hf_lte_rrc_eutra_cap_feat_group_ind_48,
3922 { "Indicator 48", "lte-rrc.eutra_cap_feat_group_ind_48",
3923 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_48_val), 0,
3924 "EUTRA Feature Group Indicator 48", HFILL }},
3925 { &hf_lte_rrc_eutra_cap_feat_group_ind_49,
3926 { "Indicator 49", "lte-rrc.eutra_cap_feat_group_ind_49",
3927 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_49_val), 0,
3928 "EUTRA Feature Group Indicator 49", HFILL }},
3929 { &hf_lte_rrc_eutra_cap_feat_group_ind_50,
3930 { "Indicator 50", "lte-rrc.eutra_cap_feat_group_ind_50",
3931 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_50_val), 0,
3932 "EUTRA Feature Group Indicator 50", HFILL }},
3933 { &hf_lte_rrc_eutra_cap_feat_group_ind_51,
3934 { "Indicator 51", "lte-rrc.eutra_cap_feat_group_ind_51",
3935 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_51_val), 0,
3936 "EUTRA Feature Group Indicator 51", HFILL }},
3937 { &hf_lte_rrc_eutra_cap_feat_group_ind_52,
3938 { "Indicator 52", "lte-rrc.eutra_cap_feat_group_ind_52",
3939 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_52_val), 0,
3940 "EUTRA Feature Group Indicator 52", HFILL }},
3941 { &hf_lte_rrc_eutra_cap_feat_group_ind_53,
3942 { "Indicator 53", "lte-rrc.eutra_cap_feat_group_ind_53",
3943 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_53_val), 0,
3944 "EUTRA Feature Group Indicator 53", HFILL }},
3945 { &hf_lte_rrc_eutra_cap_feat_group_ind_54,
3946 { "Indicator 54", "lte-rrc.eutra_cap_feat_group_ind_54",
3947 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_54_val), 0,
3948 "EUTRA Feature Group Indicator 54", HFILL }},
3949 { &hf_lte_rrc_eutra_cap_feat_group_ind_55,
3950 { "Indicator 55", "lte-rrc.eutra_cap_feat_group_ind_55",
3951 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_55_val), 0,
3952 "EUTRA Feature Group Indicator 55", HFILL }},
3953 { &hf_lte_rrc_eutra_cap_feat_group_ind_56,
3954 { "Indicator 56", "lte-rrc.eutra_cap_feat_group_ind_56",
3955 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_56_val), 0,
3956 "EUTRA Feature Group Indicator 56", HFILL }},
3957 { &hf_lte_rrc_eutra_cap_feat_group_ind_57,
3958 { "Indicator 57", "lte-rrc.eutra_cap_feat_group_ind_57",
3959 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_57_val), 0,
3960 "EUTRA Feature Group Indicator 57", HFILL }},
3961 { &hf_lte_rrc_eutra_cap_feat_group_ind_58,
3962 { "Indicator 58", "lte-rrc.eutra_cap_feat_group_ind_58",
3963 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_58_val), 0,
3964 "EUTRA Feature Group Indicator 58", HFILL }},
3965 { &hf_lte_rrc_eutra_cap_feat_group_ind_59,
3966 { "Indicator 59", "lte-rrc.eutra_cap_feat_group_ind_59",
3967 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_59_val), 0,
3968 "EUTRA Feature Group Indicator 59", HFILL }},
3969 { &hf_lte_rrc_eutra_cap_feat_group_ind_60,
3970 { "Indicator 60", "lte-rrc.eutra_cap_feat_group_ind_60",
3971 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_60_val), 0,
3972 "EUTRA Feature Group Indicator 60", HFILL }},
3973 { &hf_lte_rrc_eutra_cap_feat_group_ind_61,
3974 { "Indicator 61", "lte-rrc.eutra_cap_feat_group_ind_61",
3975 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_61_val), 0,
3976 "EUTRA Feature Group Indicator 61", HFILL }},
3977 { &hf_lte_rrc_eutra_cap_feat_group_ind_62,
3978 { "Indicator 62", "lte-rrc.eutra_cap_feat_group_ind_62",
3979 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_62_val), 0,
3980 "EUTRA Feature Group Indicator 62", HFILL }},
3981 { &hf_lte_rrc_eutra_cap_feat_group_ind_63,
3982 { "Indicator 63", "lte-rrc.eutra_cap_feat_group_ind_63",
3983 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_63_val), 0,
3984 "EUTRA Feature Group Indicator 63", HFILL }},
3985 { &hf_lte_rrc_eutra_cap_feat_group_ind_64,
3986 { "Indicator 64", "lte-rrc.eutra_cap_feat_group_ind_64",
3987 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_64_val), 0,
3988 "EUTRA Feature Group Indicator 64", HFILL }},
3989 { &hf_lte_rrc_eutra_cap_feat_group_ind_101,
3990 { "Indicator 101", "lte-rrc.eutra_cap_feat_group_ind_101",
3991 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_101_val), 0,
3992 "EUTRA Feature Group Indicator 101", HFILL }},
3993 { &hf_lte_rrc_eutra_cap_feat_group_ind_102,
3994 { "Indicator 102", "lte-rrc.eutra_cap_feat_group_ind_102",
3995 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_102_val), 0,
3996 "EUTRA Feature Group Indicator 102", HFILL }},
3997 { &hf_lte_rrc_eutra_cap_feat_group_ind_103,
3998 { "Indicator 103", "lte-rrc.eutra_cap_feat_group_ind_103",
3999 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_103_val), 0,
4000 "EUTRA Feature Group Indicator 103", HFILL }},
4001 { &hf_lte_rrc_eutra_cap_feat_group_ind_104,
4002 { "Indicator 104", "lte-rrc.eutra_cap_feat_group_ind_104",
4003 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_104_val), 0,
4004 "EUTRA Feature Group Indicator 104", HFILL }},
4005 { &hf_lte_rrc_eutra_cap_feat_group_ind_105,
4006 { "Indicator 105", "lte-rrc.eutra_cap_feat_group_ind_105",
4007 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_105_val), 0,
4008 "EUTRA Feature Group Indicator 105", HFILL }},
4009 { &hf_lte_rrc_eutra_cap_feat_group_ind_106,
4010 { "Indicator 106", "lte-rrc.eutra_cap_feat_group_ind_106",
4011 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_106_val), 0,
4012 "EUTRA Feature Group Indicator 106", HFILL }},
4013 { &hf_lte_rrc_eutra_cap_feat_group_ind_107,
4014 { "Indicator 107", "lte-rrc.eutra_cap_feat_group_ind_107",
4015 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_107_val), 0,
4016 "EUTRA Feature Group Indicator 107", HFILL }},
4017 { &hf_lte_rrc_eutra_cap_feat_group_ind_108,
4018 { "Indicator 108", "lte-rrc.eutra_cap_feat_group_ind_108",
4019 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_108_val), 0,
4020 "EUTRA Feature Group Indicator 108", HFILL }},
4021 { &hf_lte_rrc_eutra_cap_feat_group_ind_109,
4022 { "Indicator 109", "lte-rrc.eutra_cap_feat_group_ind_109",
4023 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_109_val), 0,
4024 "EUTRA Feature Group Indicator 109", HFILL }},
4025 { &hf_lte_rrc_eutra_cap_feat_group_ind_110,
4026 { "Indicator 110", "lte-rrc.eutra_cap_feat_group_ind_110",
4027 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_110_val), 0,
4028 "EUTRA Feature Group Indicator 110", HFILL }},
4029 { &hf_lte_rrc_eutra_cap_feat_group_ind_111,
4030 { "Indicator 111", "lte-rrc.eutra_cap_feat_group_ind_111",
4031 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_111_val), 0,
4032 "EUTRA Feature Group Indicator 111", HFILL }},
4033 { &hf_lte_rrc_eutra_cap_feat_group_ind_112,
4034 { "Indicator 112", "lte-rrc.eutra_cap_feat_group_ind_112",
4035 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_112_val), 0,
4036 "EUTRA Feature Group Indicator 112", HFILL }},
4037 { &hf_lte_rrc_eutra_cap_feat_group_ind_113,
4038 { "Indicator 113", "lte-rrc.eutra_cap_feat_group_ind_113",
4039 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_113_val), 0,
4040 "EUTRA Feature Group Indicator 113", HFILL }},
4041 { &hf_lte_rrc_eutra_cap_feat_group_ind_114,
4042 { "Indicator 114", "lte-rrc.eutra_cap_feat_group_ind_114",
4043 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_114_val), 0,
4044 "EUTRA Feature Group Indicator 114", HFILL }},
4045 { &hf_lte_rrc_eutra_cap_feat_group_ind_115,
4046 { "Indicator 115", "lte-rrc.eutra_cap_feat_group_ind_115",
4047 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_115_val), 0,
4048 "EUTRA Feature Group Indicator 115", HFILL }},
4049 { &hf_lte_rrc_eutra_cap_feat_group_ind_116,
4050 { "Indicator 116", "lte-rrc.eutra_cap_feat_group_ind_116",
4051 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_116_val), 0,
4052 "EUTRA Feature Group Indicator 116", HFILL }},
4053 { &hf_lte_rrc_eutra_cap_feat_group_ind_117,
4054 { "Indicator 117", "lte-rrc.eutra_cap_feat_group_ind_117",
4055 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_117_val), 0,
4056 "EUTRA Feature Group Indicator 117", HFILL }},
4057 { &hf_lte_rrc_eutra_cap_feat_group_ind_118,
4058 { "Indicator 118", "lte-rrc.eutra_cap_feat_group_ind_118",
4059 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_118_val), 0,
4060 "EUTRA Feature Group Indicator 118", HFILL }},
4061 { &hf_lte_rrc_eutra_cap_feat_group_ind_119,
4062 { "Indicator 119", "lte-rrc.eutra_cap_feat_group_ind_119",
4063 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_119_val), 0,
4064 "EUTRA Feature Group Indicator 119", HFILL }},
4065 { &hf_lte_rrc_eutra_cap_feat_group_ind_120,
4066 { "Indicator 120", "lte-rrc.eutra_cap_feat_group_ind_120",
4067 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_120_val), 0,
4068 "EUTRA Feature Group Indicator 120", HFILL }},
4069 { &hf_lte_rrc_eutra_cap_feat_group_ind_121,
4070 { "Indicator 121", "lte-rrc.eutra_cap_feat_group_ind_121",
4071 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_121_val), 0,
4072 "EUTRA Feature Group Indicator 121", HFILL }},
4073 { &hf_lte_rrc_eutra_cap_feat_group_ind_122,
4074 { "Indicator 122", "lte-rrc.eutra_cap_feat_group_ind_122",
4075 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_122_val), 0,
4076 "EUTRA Feature Group Indicator 122", HFILL }},
4077 { &hf_lte_rrc_eutra_cap_feat_group_ind_123,
4078 { "Indicator 123", "lte-rrc.eutra_cap_feat_group_ind_123",
4079 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_123_val), 0,
4080 "EUTRA Feature Group Indicator 123", HFILL }},
4081 { &hf_lte_rrc_eutra_cap_feat_group_ind_124,
4082 { "Indicator 124", "lte-rrc.eutra_cap_feat_group_ind_124",
4083 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_124_val), 0,
4084 "EUTRA Feature Group Indicator 124", HFILL }},
4085 { &hf_lte_rrc_eutra_cap_feat_group_ind_125,
4086 { "Indicator 125", "lte-rrc.eutra_cap_feat_group_ind_125",
4087 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_125_val), 0,
4088 "EUTRA Feature Group Indicator 125", HFILL }},
4089 { &hf_lte_rrc_eutra_cap_feat_group_ind_126,
4090 { "Indicator 126", "lte-rrc.eutra_cap_feat_group_ind_126",
4091 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_126_val), 0,
4092 "EUTRA Feature Group Indicator 126", HFILL }},
4093 { &hf_lte_rrc_eutra_cap_feat_group_ind_127,
4094 { "Indicator 127", "lte-rrc.eutra_cap_feat_group_ind_127",
4095 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_127_val), 0,
4096 "EUTRA Feature Group Indicator 127", HFILL }},
4097 { &hf_lte_rrc_eutra_cap_feat_group_ind_128,
4098 { "Indicator 128", "lte-rrc.eutra_cap_feat_group_ind_128",
4099 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_128_val), 0,
4100 "EUTRA Feature Group Indicator 128", HFILL }},
4101 { &hf_lte_rrc_eutra_cap_feat_group_ind_129,
4102 { "Indicator 129", "lte-rrc.eutra_cap_feat_group_ind_129",
4103 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_129_val), 0,
4104 "EUTRA Feature Group Indicator 129", HFILL }},
4105 { &hf_lte_rrc_eutra_cap_feat_group_ind_130,
4106 { "Indicator 130", "lte-rrc.eutra_cap_feat_group_ind_130",
4107 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_130_val), 0,
4108 "EUTRA Feature Group Indicator 130", HFILL }},
4109 { &hf_lte_rrc_eutra_cap_feat_group_ind_131,
4110 { "Indicator 131", "lte-rrc.eutra_cap_feat_group_ind_131",
4111 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_131_val), 0,
4112 "EUTRA Feature Group Indicator 131", HFILL }},
4113 { &hf_lte_rrc_eutra_cap_feat_group_ind_132,
4114 { "Indicator 132", "lte-rrc.eutra_cap_feat_group_ind_132",
4115 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_132_val), 0,
4116 "EUTRA Feature Group Indicator 132", HFILL }},
4117 { &hf_lte_rrc_serialNumber_gs,
4118 { "Geographical Scope", "lte-rrc.serialNumber.gs",
4119 FT_UINT16, BASE_DEC, VALS(lte_rrc_serialNumber_gs_vals), 0xc000,
4120 NULL, HFILL }},
4121 { &hf_lte_rrc_serialNumber_msg_code,
4122 { "Message Code", "lte-rrc.serialNumber.msg_code",
4123 FT_UINT16, BASE_DEC, NULL, 0x3ff0,
4124 NULL, HFILL }},
4125 { &hf_lte_rrc_serialNumber_upd_nb,
4126 { "Update Number", "lte-rrc.serialNumber.upd_nb",
4127 FT_UINT16, BASE_DEC, NULL, 0x000f,
4128 NULL, HFILL }},
4129 { &hf_lte_rrc_warningType_value,
4130 { "Warning Type Value", "lte-rrc.warningType.value",
4131 FT_UINT16, BASE_DEC, VALS(lte_rrc_warningType_vals), 0xfe00,
4132 NULL, HFILL }},
4133 { &hf_lte_rrc_warningType_emergency_user_alert,
4134 { "Emergency User Alert", "lte-rrc.warningType.emergency_user_alert",
4135 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0100,
4136 NULL, HFILL }},
4137 { &hf_lte_rrc_warningType_popup,
4138 { "Popup", "lte-rrc.warningType.popup",
4139 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0080,
4140 NULL, HFILL }},
4141 { &hf_lte_rrc_warningMessageSegment_nb_pages,
4142 { "Number of Pages", "lte-rrc.warningMessageSegment.nb_pages",
4143 FT_UINT8, BASE_DEC, NULL, 0,
4144 NULL, HFILL }},
4145 { &hf_lte_rrc_warningMessageSegment_decoded_page,
4146 { "Decoded Page", "lte-rrc.warningMessageSegment.decoded_page",
4147 FT_STRING, BASE_NONE, NULL, 0,
4148 NULL, HFILL }},
4149 { &hf_lte_rrc_interBandTDD_CA_WithDifferentConfig_bit1,
4150 { "Bit 1", "lte-rrc.interBandTDD_CA_WithDifferentConfig.bit1",
4151 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_interBandTDD_CA_WithDifferentConfig_bit1_val), 0,
4152 NULL, HFILL }},
4153 { &hf_lte_rrc_interBandTDD_CA_WithDifferentConfig_bit2,
4154 { "Bit 2", "lte-rrc.interBandTDD_CA_WithDifferentConfig.bit2",
4155 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_interBandTDD_CA_WithDifferentConfig_bit2_val), 0,
4156 NULL, HFILL }},
4157 { &hf_lte_rrc_tdd_FDD_CA_PCellDuplex_r12_bit1,
4158 { "Bit 1", "lte-rrc.tdd_FDD_CA_PCellDuplex_r12.bit1",
4159 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_tdd_FDD_CA_PCellDuplex_r12_bit1_val), 0,
4160 NULL, HFILL }},
4161 { &hf_lte_rrc_tdd_FDD_CA_PCellDuplex_r12_bit2,
4162 { "Bit 2", "lte-rrc.tdd_FDD_CA_PCellDuplex_r12.bit2",
4163 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_tdd_FDD_CA_PCellDuplex_r12_bit2_val), 0,
4164 NULL, HFILL }},
4165 { &hf_lte_rrc_aperiodicCSI_Reporting_r13_bit1,
4166 { "Bit 1", "lte-rrc.aperiodicCSI_Reporting_r13.bit1",
4167 FT_BOOLEAN, BASE_NONE, TFS(&hf_lte_rrc_aperiodicCSI_Reporting_r13_bit1_val), 0,
4168 NULL, HFILL }},
4169 { &hf_lte_rrc_aperiodicCSI_Reporting_r13_bit2,
4170 { "Bit 2", "lte-rrc.aperiodicCSI_Reporting_r13.bit2",
4171 FT_BOOLEAN, BASE_NONE, TFS(&hf_lte_rrc_aperiodicCSI_Reporting_r13_bit2_val), 0,
4172 NULL, HFILL }},
4173 { &hf_lte_rrc_codebook_HARQ_ACK_r13_bit1,
4174 { "Bit 1", "lte-rrc.codebook_HARQ_ACK_r13.bit1",
4175 FT_BOOLEAN, BASE_NONE, TFS(&hf_lte_rrc_codebook_HARQ_ACK_r13_bit1_val), 0,
4176 NULL, HFILL }},
4177 { &hf_lte_rrc_codebook_HARQ_ACK_r13_bit2,
4178 { "Bit 2", "lte-rrc.codebook_HARQ_ACK_r13.bit2",
4179 FT_BOOLEAN, BASE_NONE, TFS(&hf_lte_rrc_codebook_HARQ_ACK_r13_bit2_val), 0,
4180 NULL, HFILL }},
4181 { &hf_lte_rrc_sr_config_periodicity,
4182 { "Periodicity", "lte-rrc.sr_Periodicity",
4183 FT_UINT16, BASE_DEC, NULL, 0x0,
4184 NULL, HFILL }},
4185 { &hf_lte_rrc_sr_config_subframe_offset,
4186 { "Subframe Offset", "lte-rrc.sr_SubframeOffset",
4187 FT_UINT16, BASE_DEC, NULL, 0x0,
4188 NULL, HFILL }},
4189 { &hf_lte_rrc_cdma_time,
4190 { "CDMA time", "lte-rrc.cdma_time",
4191 FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0x0,
4192 NULL, HFILL }},
4193 { &hf_lte_rrc_utc_time,
4194 { "UTC time", "lte-rrc.utc_time",
4195 FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0x0,
4196 NULL, HFILL }},
4197 { &hf_lte_rrc_local_time,
4198 { "Local time", "lte-rrc.local_time",
4199 FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0,
4200 NULL, HFILL }},
4201 { &hf_lte_rrc_absolute_time,
4202 { "Absolute time", "lte-rrc.absolute_time",
4203 FT_STRING, BASE_NONE, NULL, 0x0,
4204 NULL, HFILL }},
4205 { &hf_lte_rrc_transmissionModeList_r12_tm1,
4206 { "TM1", "lte-rrc.transmissionModeList_r12.tm1",
4207 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_transmissionModeList_r12_val), 0,
4208 NULL, HFILL }},
4209 { &hf_lte_rrc_transmissionModeList_r12_tm2,
4210 { "TM2", "lte-rrc.transmissionModeList_r12.tm2",
4211 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_transmissionModeList_r12_val), 0,
4212 NULL, HFILL }},
4213 { &hf_lte_rrc_transmissionModeList_r12_tm3,
4214 { "TM3", "lte-rrc.transmissionModeList_r12.tm3",
4215 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_transmissionModeList_r12_val), 0,
4216 NULL, HFILL }},
4217 { &hf_lte_rrc_transmissionModeList_r12_tm4,
4218 { "TM4", "lte-rrc.transmissionModeList_r12.tm4",
4219 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_transmissionModeList_r12_val), 0,
4220 NULL, HFILL }},
4221 { &hf_lte_rrc_transmissionModeList_r12_tm6,
4222 { "TM6", "lte-rrc.transmissionModeList_r12.tm6",
4223 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_transmissionModeList_r12_val), 0,
4224 NULL, HFILL }},
4225 { &hf_lte_rrc_transmissionModeList_r12_tm8,
4226 { "TM8", "lte-rrc.transmissionModeList_r12.tm8",
4227 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_transmissionModeList_r12_val), 0,
4228 NULL, HFILL }},
4229 { &hf_lte_rrc_transmissionModeList_r12_tm9,
4230 { "TM9", "lte-rrc.transmissionModeList_r12.tm9",
4231 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_transmissionModeList_r12_val), 0,
4232 NULL, HFILL }},
4233 { &hf_lte_rrc_transmissionModeList_r12_tm10,
4234 { "TM10", "lte-rrc.transmissionModeList_r12.tm10",
4235 FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_transmissionModeList_r12_val), 0,
4236 NULL, HFILL }},
4237 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_0,
4238 { "MPR/A-MPR behavior 0", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_0",
4239 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4240 NULL, HFILL }},
4241 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_1,
4242 { "MPR/A-MPR behavior 1", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_1",
4243 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4244 NULL, HFILL }},
4245 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_2,
4246 { "MPR/A-MPR behavior 2", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_2",
4247 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4248 NULL, HFILL }},
4249 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_3,
4250 { "MPR/A-MPR behavior 3", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_3",
4251 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4252 NULL, HFILL }},
4253 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_4,
4254 { "MPR/A-MPR behavior 4", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_4",
4255 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4256 NULL, HFILL }},
4257 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_5,
4258 { "MPR/A-MPR behavior 5", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_5",
4259 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4260 NULL, HFILL }},
4261 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_6,
4262 { "MPR/A-MPR behavior 6", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_6",
4263 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4264 NULL, HFILL }},
4265 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_7,
4266 { "MPR/A-MPR behavior 7", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_7",
4267 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4268 NULL, HFILL }},
4269 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_8,
4270 { "MPR/A-MPR behavior 8", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_8",
4271 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4272 NULL, HFILL }},
4273 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_9,
4274 { "MPR/A-MPR behavior 9", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_9",
4275 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4276 NULL, HFILL }},
4277 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_10,
4278 { "MPR/A-MPR behavior 10", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_10",
4279 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4280 NULL, HFILL }},
4281 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_11,
4282 { "MPR/A-MPR behavior 11", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_11",
4283 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4284 NULL, HFILL }},
4285 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_12,
4286 { "MPR/A-MPR behavior 12", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_12",
4287 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4288 NULL, HFILL }},
4289 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_13,
4290 { "MPR/A-MPR behavior 13", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_13",
4291 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4292 NULL, HFILL }},
4293 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_14,
4294 { "MPR/A-MPR behavior 14", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_14",
4295 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4296 NULL, HFILL }},
4297 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_15,
4298 { "MPR/A-MPR behavior 15", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_15",
4299 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4300 NULL, HFILL }},
4301 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_16,
4302 { "MPR/A-MPR behavior 16", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_16",
4303 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4304 NULL, HFILL }},
4305 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_17,
4306 { "MPR/A-MPR behavior 17", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_17",
4307 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4308 NULL, HFILL }},
4309 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_18,
4310 { "MPR/A-MPR behavior 18", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_18",
4311 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4312 NULL, HFILL }},
4313 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_19,
4314 { "MPR/A-MPR behavior 19", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_19",
4315 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4316 NULL, HFILL }},
4317 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_20,
4318 { "MPR/A-MPR behavior 20", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_20",
4319 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4320 NULL, HFILL }},
4321 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_21,
4322 { "MPR/A-MPR behavior 21", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_21",
4323 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4324 NULL, HFILL }},
4325 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_22,
4326 { "MPR/A-MPR behavior 22", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_22",
4327 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4328 NULL, HFILL }},
4329 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_23,
4330 { "MPR/A-MPR behavior 23", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_23",
4331 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4332 NULL, HFILL }},
4333 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_24,
4334 { "MPR/A-MPR behavior 24", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_24",
4335 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4336 NULL, HFILL }},
4337 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_25,
4338 { "MPR/A-MPR behavior 25", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_25",
4339 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4340 NULL, HFILL }},
4341 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_26,
4342 { "MPR/A-MPR behavior 26", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_26",
4343 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4344 NULL, HFILL }},
4345 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_27,
4346 { "MPR/A-MPR behavior 27", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_27",
4347 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4348 NULL, HFILL }},
4349 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_28,
4350 { "MPR/A-MPR behavior 28", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_28",
4351 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4352 NULL, HFILL }},
4353 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_29,
4354 { "MPR/A-MPR behavior 29", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_29",
4355 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4356 NULL, HFILL }},
4357 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_30,
4358 { "MPR/A-MPR behavior 30", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_30",
4359 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4360 NULL, HFILL }},
4361 { &hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_31,
4362 { "MPR/A-MPR behavior 31", "lte-rrc.modifiedMPR_Behavior_r10.mpr_ampr_31",
4363 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0,
4364 NULL, HFILL }},
4365 { &hf_lte_rrc_sib11_fragments,
4366 { "Fragments", "lte-rrc.warningMessageSegment.fragments",
4367 FT_NONE, BASE_NONE, NULL, 0,
4368 NULL, HFILL }},
4369 { &hf_lte_rrc_sib11_fragment,
4370 { "Fragment", "lte-rrc.warningMessageSegment.fragment",
4371 FT_FRAMENUM, BASE_NONE, NULL, 0,
4372 NULL, HFILL }},
4373 { &hf_lte_rrc_sib11_fragment_overlap,
4374 { "Fragment Overlap", "lte-rrc.warningMessageSegment.fragment_overlap",
4375 FT_BOOLEAN, BASE_NONE, NULL, 0,
4376 NULL, HFILL }},
4377 { &hf_lte_rrc_sib11_fragment_overlap_conflict,
4378 { "Fragment Overlap Conflict", "lte-rrc.warningMessageSegment.fragment_overlap_conflict",
4379 FT_BOOLEAN, BASE_NONE, NULL, 0,
4380 NULL, HFILL }},
4381 { &hf_lte_rrc_sib11_fragment_multiple_tails,
4382 { "Fragment Multiple Tails", "lte-rrc.warningMessageSegment.fragment_multiple_tails",
4383 FT_BOOLEAN, BASE_NONE, NULL, 0,
4384 NULL, HFILL }},
4385 { &hf_lte_rrc_sib11_fragment_too_long_fragment,
4386 { "Too Long Fragment", "lte-rrc.warningMessageSegment.fragment_too_long_fragment",
4387 FT_BOOLEAN, BASE_NONE, NULL, 0,
4388 NULL, HFILL }},
4389 { &hf_lte_rrc_sib11_fragment_error,
4390 { "Fragment Error", "lte-rrc.warningMessageSegment.fragment_error",
4391 FT_FRAMENUM, BASE_NONE, NULL, 0,
4392 NULL, HFILL }},
4393 { &hf_lte_rrc_sib11_fragment_count,
4394 { "Fragment Count", "lte-rrc.warningMessageSegment.fragment_count",
4395 FT_UINT32, BASE_DEC, NULL, 0,
4396 NULL, HFILL }},
4397 { &hf_lte_rrc_sib11_reassembled_in,
4398 { "Reassembled In", "lte-rrc.warningMessageSegment.reassembled_in",
4399 FT_FRAMENUM, BASE_NONE, NULL, 0,
4400 NULL, HFILL }},
4401 { &hf_lte_rrc_sib11_reassembled_length,
4402 { "Reassembled Length", "lte-rrc.warningMessageSegment.reassembled_length",
4403 FT_UINT32, BASE_DEC, NULL, 0,
4404 NULL, HFILL }},
4405 { &hf_lte_rrc_sib11_reassembled_data,
4406 { "Reassembled Data", "lte-rrc.warningMessageSegment.reassembled_data",
4407 FT_BYTES, BASE_NONE, NULL, 0,
4408 NULL, HFILL }},
4409 { &hf_lte_rrc_sib12_fragments,
4410 { "Fragments", "lte-rrc.warningMessageSegment_r9.fragments",
4411 FT_NONE, BASE_NONE, NULL, 0,
4412 NULL, HFILL }},
4413 { &hf_lte_rrc_sib12_fragment,
4414 { "Fragment", "lte-rrc.warningMessageSegment_r9.fragment",
4415 FT_FRAMENUM, BASE_NONE, NULL, 0,
4416 NULL, HFILL }},
4417 { &hf_lte_rrc_sib12_fragment_overlap,
4418 { "Fragment Overlap", "lte-rrc.warningMessageSegment_r9.fragment_overlap",
4419 FT_BOOLEAN, BASE_NONE, NULL, 0,
4420 NULL, HFILL }},
4421 { &hf_lte_rrc_sib12_fragment_overlap_conflict,
4422 { "Fragment Overlap Conflict", "lte-rrc.warningMessageSegment_r9.fragment_overlap_conflict",
4423 FT_BOOLEAN, BASE_NONE, NULL, 0,
4424 NULL, HFILL }},
4425 { &hf_lte_rrc_sib12_fragment_multiple_tails,
4426 { "Fragment Multiple Tails", "lte-rrc.warningMessageSegment_r9.fragment_multiple_tails",
4427 FT_BOOLEAN, BASE_NONE, NULL, 0,
4428 NULL, HFILL }},
4429 { &hf_lte_rrc_sib12_fragment_too_long_fragment,
4430 { "Too Long Fragment", "lte-rrc.warningMessageSegment_r9.fragment_too_long_fragment",
4431 FT_BOOLEAN, BASE_NONE, NULL, 0,
4432 NULL, HFILL }},
4433 { &hf_lte_rrc_sib12_fragment_error,
4434 { "Fragment Error", "lte-rrc.warningMessageSegment_r9.fragment_error",
4435 FT_FRAMENUM, BASE_NONE, NULL, 0,
4436 NULL, HFILL }},
4437 { &hf_lte_rrc_sib12_fragment_count,
4438 { "Fragment Count", "lte-rrc.warningMessageSegment_r9.fragment_count",
4439 FT_UINT32, BASE_DEC, NULL, 0,
4440 NULL, HFILL }},
4441 { &hf_lte_rrc_sib12_reassembled_in,
4442 { "Reassembled In", "lte-rrc.warningMessageSegment_r9.reassembled_in",
4443 FT_FRAMENUM, BASE_NONE, NULL, 0,
4444 NULL, HFILL }},
4445 { &hf_lte_rrc_sib12_reassembled_length,
4446 { "Reassembled Length", "lte-rrc.warningMessageSegment_r9.reassembled_length",
4447 FT_UINT32, BASE_DEC, NULL, 0,
4448 NULL, HFILL }},
4449 { &hf_lte_rrc_sib12_reassembled_data,
4450 { "Reassembled Data", "lte-rrc.warningMessageSegment_r9.reassembled_data",
4451 FT_BYTES, BASE_NONE, NULL, 0,
4452 NULL, HFILL }},
4453 { &hf_lte_rrc_dcch_segment_fragments,
4454 { "Fragments", "lte-rrc.dedicatedMessageSegment_r16.fragments",
4455 FT_NONE, BASE_NONE, NULL, 0,
4456 NULL, HFILL }},
4457 { &hf_lte_rrc_dcch_segment_fragment,
4458 { "Fragment", "lte-rrc.dedicatedMessageSegment_r16.fragment",
4459 FT_FRAMENUM, BASE_NONE, NULL, 0,
4460 NULL, HFILL }},
4461 { &hf_lte_rrc_dcch_segment_fragment_overlap,
4462 { "Fragment Overlap", "lte-rrc.dedicatedMessageSegment_r16.fragment_overlap",
4463 FT_BOOLEAN, BASE_NONE, NULL, 0,
4464 NULL, HFILL }},
4465 { &hf_lte_rrc_dcch_segment_fragment_overlap_conflict,
4466 { "Fragment Overlap Conflict", "lte-rrc.dedicatedMessageSegment_r16.fragment_overlap_conflict",
4467 FT_BOOLEAN, BASE_NONE, NULL, 0,
4468 NULL, HFILL }},
4469 { &hf_lte_rrc_dcch_segment_fragment_multiple_tails,
4470 { "Fragment Multiple Tails", "lte-rrc.dedicatedMessageSegment_r16.fragment_multiple_tails",
4471 FT_BOOLEAN, BASE_NONE, NULL, 0,
4472 NULL, HFILL }},
4473 { &hf_lte_rrc_dcch_segment_fragment_too_long_fragment,
4474 { "Too Long Fragment", "lte-rrc.dedicatedMessageSegment_r16.fragment_too_long_fragment",
4475 FT_BOOLEAN, BASE_NONE, NULL, 0,
4476 NULL, HFILL }},
4477 { &hf_lte_rrc_dcch_segment_fragment_error,
4478 { "Fragment Error", "lte-rrc.dedicatedMessageSegment_r16.fragment_error",
4479 FT_FRAMENUM, BASE_NONE, NULL, 0,
4480 NULL, HFILL }},
4481 { &hf_lte_rrc_dcch_segment_fragment_count,
4482 { "Fragment Count", "lte-rrc.dedicatedMessageSegment_r16.fragment_count",
4483 FT_UINT32, BASE_DEC, NULL, 0,
4484 NULL, HFILL }},
4485 { &hf_lte_rrc_dcch_segment_reassembled_in,
4486 { "Reassembled In", "lte-rrc.dedicatedMessageSegment_r16.reassembled_in",
4487 FT_FRAMENUM, BASE_NONE, NULL, 0,
4488 NULL, HFILL }},
4489 { &hf_lte_rrc_dcch_segment_reassembled_length,
4490 { "Reassembled Length", "lte-rrc.dedicatedMessageSegment_r16.reassembled_length",
4491 FT_UINT32, BASE_DEC, NULL, 0,
4492 NULL, HFILL }},
4493 { &hf_lte_rrc_dcch_segment_reassembled_data,
4494 { "Reassembled Data", "lte-rrc.dedicatedMessageSegment_r16.reassembled_data",
4495 FT_BYTES, BASE_NONE, NULL, 0,
4496 NULL, HFILL }},
4497 { &hf_lte_rrc_measGapPatterns_r15_bit1,
4498 { "Gap Pattern 4", "lte-rrc.measGapPatterns_r15.bit1",
4499 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x80,
4500 NULL, HFILL }},
4501 { &hf_lte_rrc_measGapPatterns_r15_bit2,
4502 { "Gap Pattern 5", "lte-rrc.measGapPatterns_r15.bit2",
4503 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
4504 NULL, HFILL }},
4505 { &hf_lte_rrc_measGapPatterns_r15_bit3,
4506 { "Gap Pattern 6", "lte-rrc.measGapPatterns_r15.bit3",
4507 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
4508 NULL, HFILL }},
4509 { &hf_lte_rrc_measGapPatterns_r15_bit4,
4510 { "Gap Pattern 7", "lte-rrc.measGapPatterns_r15.bit4",
4511 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
4512 NULL, HFILL }},
4513 { &hf_lte_rrc_measGapPatterns_r15_bit5,
4514 { "Gap Pattern 8", "lte-rrc.measGapPatterns_r15.bit5",
4515 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08,
4516 NULL, HFILL }},
4517 { &hf_lte_rrc_measGapPatterns_r15_bit6,
4518 { "Gap Pattern 9", "lte-rrc.measGapPatterns_r15.bit6",
4519 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
4520 NULL, HFILL }},
4521 { &hf_lte_rrc_measGapPatterns_r15_bit7,
4522 { "Gap Pattern 10", "lte-rrc.measGapPatterns_r15.bit7",
4523 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
4524 NULL, HFILL }},
4525 { &hf_lte_rrc_measGapPatterns_r15_bit8,
4526 { "Gap Pattern 11", "lte-rrc.measGapPatterns_r15.bit8",
4527 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
4528 NULL, HFILL }}
4531 /* List of subtrees */
4532 static int *ett[] = {
4533 &ett_lte_rrc,
4534 #include "packet-lte-rrc-ettarr.c"
4536 &ett_lte_rrc_featureGroupIndicators,
4537 &ett_lte_rrc_featureGroupIndRel9Add,
4538 &ett_lte_rrc_featureGroupIndRel10,
4539 &ett_lte_rrc_absTimeInfo,
4540 &ett_lte_rrc_nas_SecurityParam,
4541 &ett_lte_rrc_targetRAT_MessageContainer,
4542 &ett_lte_rrc_siPsiSibContainer,
4543 &ett_lte_rrc_dedicatedInfoNAS,
4544 &ett_lte_rrc_timeInfo,
4545 &ett_lte_rrc_serialNumber,
4546 &ett_lte_rrc_warningType,
4547 &ett_lte_rrc_dataCodingScheme,
4548 &ett_lte_rrc_warningMessageSegment,
4549 &ett_lte_rrc_interBandTDD_CA_WithDifferentConfig,
4550 &ett_lte_rrc_tdd_FDD_CA_PCellDuplex_r12,
4551 &ett_lte_rrc_aperiodicCSI_Reporting_r13,
4552 &ett_lte_rrc_codebook_HARQ_ACK_r13,
4553 &ett_lte_rrc_sr_ConfigIndex,
4554 &ett_lte_rrc_transmissionModeList_r12,
4555 &ett_lte_rrc_modifiedMPR_Behavior_r10,
4556 &ett_lte_rrc_sib11_fragment,
4557 &ett_lte_rrc_sib11_fragments,
4558 &ett_lte_rrc_sib12_fragment,
4559 &ett_lte_rrc_sib12_fragments,
4560 &ett_lte_rrc_dcch_segment_fragment,
4561 &ett_lte_rrc_dcch_segment_fragments,
4562 &ett_lte_rrc_nr_SecondaryCellGroupConfig_r15,
4563 &ett_lte_rrc_nr_RadioBearerConfig_r15,
4564 &ett_lte_rrc_nr_RadioBearerConfigS_r15,
4565 &ett_lte_rrc_sl_ConfigDedicatedForNR_r16,
4566 &ett_lte_rrc_nr_SecondaryCellGroupConfig,
4567 &ett_lte_rrc_scg_ConfigResponseNR_r15,
4568 &ett_lte_rrc_scg_ConfigResponseNR_r16,
4569 &ett_lte_rrc_measResultSCG_r15,
4570 &ett_lte_rrc_measResultSCG_r16,
4571 &ett_lte_rrc_ul_DCCH_MessageNR_r15,
4572 &ett_lte_rrc_ul_DCCH_MessageNR_r16,
4573 &ett_lte_rrc_sourceRB_ConfigNR_r15,
4574 &ett_lte_rrc_sourceRB_ConfigSN_NR_r15,
4575 &ett_lte_rrc_sourceOtherConfigSN_NR_r15,
4576 &ett_lte_rrc_sourceContextEN_DC_r15,
4577 &ett_lte_rrc_requestedFreqBandsNR_MRDC_r15,
4578 &ett_lte_rrc_measGapPatterns_r15,
4579 &ett_lte_rrc_nas_Container_r15,
4580 &ett_lte_rrc_sourceRB_ConfigIntra5GC_r15,
4581 &ett_lte_rrc_selectedbandCombinationInfoEN_DC_v1540,
4582 &ett_lte_rrc_requestedCapabilityCommon_r15,
4583 &ett_lte_rrc_sidelinkUEInformationNR_r16,
4584 &ett_lte_rrc_ueAssistanceInformationNR_r16,
4585 &ett_lte_rrc_sl_ParameterNR_r16,
4586 &ett_lte_rrc_v2x_BandParametersNR_r16,
4587 &ett_lte_rrc_ueAssistanceInformationNR_SCG_r16,
4588 &ett_lte_rrc_assistanceDataSIB_Element_r15,
4589 &ett_lte_rrc_overheatingAssistanceForSCG_r16,
4590 &ett_lte_rrc_overheatingAssistanceForSCG_FR2_2_r17,
4591 &ett_lte_rrc_triggerConditionSN_r17
4594 static ei_register_info ei[] = {
4595 { &ei_lte_rrc_number_pages_le15, { "lte_rrc.number_pages_le15", PI_MALFORMED, PI_ERROR, "Number of pages should be <=15", EXPFILL }},
4596 { &ei_lte_rrc_si_info_value_changed, { "lte_rrc.si_info_value_changed", PI_SEQUENCE, PI_WARN, "SI Info Value changed", EXPFILL }},
4597 { &ei_lte_rrc_sibs_changing, { "lte_rrc.sibs_changing", PI_SEQUENCE, PI_WARN, "SIBs changing in next BCCH modification period - signalled in Paging message", EXPFILL }},
4598 { &ei_lte_rrc_sibs_changing_edrx, { "lte_rrc.sibs_changing_edrx", PI_SEQUENCE, PI_WARN, "SIBs changing in next BCCH modification period for UEs in eDRX mode - signalled in Paging message", EXPFILL }},
4599 { &ei_lte_rrc_earthquake_warning_sys, { "lte_rrc.earthquake_warning_sys", PI_SEQUENCE, PI_WARN, "Earthquake and Tsunami Warning System Indication!", EXPFILL }},
4600 { &ei_lte_rrc_commercial_mobile_alert_sys, { "lte_rrc.commercial_mobile_alert_sys", PI_SEQUENCE, PI_WARN, "Commercial Mobile Alert System Indication!", EXPFILL }},
4601 { &ei_lte_rrc_unexpected_type_value, { "lte_rrc.unexpected_type_value", PI_MALFORMED, PI_ERROR, "Unexpected type value", EXPFILL }},
4602 { &ei_lte_rrc_unexpected_length_value, { "lte_rrc.unexpected_length_value", PI_MALFORMED, PI_ERROR, "Unexpected type length", EXPFILL }},
4603 { &ei_lte_rrc_too_many_group_a_rapids, { "lte_rrc.too_many_groupa_rapids", PI_MALFORMED, PI_ERROR, "Too many group A RAPIDs", EXPFILL }},
4604 { &ei_lte_rrc_invalid_drx_config, { "lte_rrc.invalid_drx_config", PI_MALFORMED, PI_ERROR, "Invalid dedicated DRX config detected", EXPFILL }},
4607 expert_module_t* expert_lte_rrc;
4608 module_t *lte_rrc_module;
4610 /* Register protocol */
4611 proto_lte_rrc = proto_register_protocol(PNAME, PSNAME, PFNAME);
4613 /* These entry points will first create an lte_rrc root node */
4614 lte_rrc_dl_ccch_handle = register_dissector("lte_rrc.dl_ccch", dissect_lte_rrc_DL_CCCH, proto_lte_rrc);
4615 register_dissector("lte_rrc.dl_dcch", dissect_lte_rrc_DL_DCCH, proto_lte_rrc);
4616 register_dissector("lte_rrc.ul_ccch", dissect_lte_rrc_UL_CCCH, proto_lte_rrc);
4617 register_dissector("lte_rrc.ul_dcch", dissect_lte_rrc_UL_DCCH, proto_lte_rrc);
4618 register_dissector("lte_rrc.bcch_bch", dissect_lte_rrc_BCCH_BCH, proto_lte_rrc);
4619 register_dissector("lte_rrc.bcch_dl_sch", dissect_lte_rrc_BCCH_DL_SCH, proto_lte_rrc);
4620 register_dissector("lte_rrc.bcch_dl_sch_br", dissect_lte_rrc_BCCH_DL_SCH_BR, proto_lte_rrc);
4621 register_dissector("lte_rrc.pcch", dissect_lte_rrc_PCCH, proto_lte_rrc);
4622 register_dissector("lte_rrc.mcch", dissect_lte_rrc_MCCH, proto_lte_rrc);
4623 register_dissector("lte_rrc.handover_prep_info", dissect_lte_rrc_Handover_Preparation_Info, proto_lte_rrc);
4624 register_dissector("lte_rrc.sbcch_sl_bch", dissect_lte_rrc_SBCCH_SL_BCH, proto_lte_rrc);
4625 register_dissector("lte_rrc.sbcch_sl_bch.v2x", dissect_lte_rrc_SBCCH_SL_BCH_V2X, proto_lte_rrc);
4626 register_dissector("lte_rrc.sc_mcch", dissect_lte_rrc_SC_MCCH, proto_lte_rrc);
4627 register_dissector("lte_rrc.dl_ccch.nb", dissect_lte_rrc_DL_CCCH_NB, proto_lte_rrc);
4628 register_dissector("lte_rrc.dl_dcch.nb", dissect_lte_rrc_DL_DCCH_NB, proto_lte_rrc);
4629 register_dissector("lte_rrc.ul_ccch.nb", dissect_lte_rrc_UL_CCCH_NB, proto_lte_rrc);
4630 register_dissector("lte_rrc.ul_dcch.nb", dissect_lte_rrc_UL_DCCH_NB, proto_lte_rrc);
4631 register_dissector("lte_rrc.bcch_bch.nb", dissect_lte_rrc_BCCH_BCH_NB, proto_lte_rrc);
4632 register_dissector("lte_rrc.bcch_bch.nb.tdd", dissect_lte_rrc_BCCH_BCH_TDD_NB, proto_lte_rrc);
4633 register_dissector("lte_rrc.bcch_dl_sch.nb", dissect_lte_rrc_BCCH_DL_SCH_NB, proto_lte_rrc);
4634 register_dissector("lte_rrc.pcch.nb", dissect_lte_rrc_PCCH_NB, proto_lte_rrc);
4635 register_dissector("lte_rrc.sc_mcch.nb", dissect_lte_rrc_SC_MCCH_NB, proto_lte_rrc);
4636 register_dissector("lte_rrc.bcch_bch.mbms", dissect_lte_rrc_BCCH_BCH_MBMS, proto_lte_rrc);
4637 register_dissector("lte_rrc.bcch_dl_sch.mbms", dissect_lte_rrc_BCCH_DL_SCH_MBMS, proto_lte_rrc);
4638 register_dissector("lte-rrc.ue_eutra_cap.msg", dissect_lte_rrc_ue_eutra_capability_msg, proto_lte_rrc);
4639 register_dissector("lte-rrc.ue_radio_access_cap_info.msg", dissect_lte_rrc_ueradioaccesscapabilityinformation_msg, proto_lte_rrc);
4640 register_dissector("lte-rrc.systeminformationblocktype1_v890_ies", dissect_lte_rrc_dissect_SystemInformationBlockType1_v890_IEs, proto_lte_rrc);
4642 /* Register fields and subtrees */
4643 proto_register_field_array(proto_lte_rrc, hf, array_length(hf));
4644 proto_register_subtree_array(ett, array_length(ett));
4645 expert_lte_rrc = expert_register_protocol(proto_lte_rrc);
4646 expert_register_field_array(expert_lte_rrc, ei, array_length(ei));
4648 /* Register the dissectors defined in lte-rrc.conf */
4649 #include "packet-lte-rrc-dis-reg.c"
4651 lte_rrc_etws_cmas_dcs_hash = wmem_map_new_autoreset(wmem_epan_scope(), wmem_file_scope(), g_direct_hash, g_direct_equal);
4652 lte_rrc_system_info_value_changed_hash = wmem_map_new_autoreset(wmem_epan_scope(), wmem_file_scope(), g_direct_hash, g_direct_equal);
4653 lte_rrc_dcch_segment_ueid_count_hash = wmem_map_new_autoreset(wmem_epan_scope(), wmem_file_scope(), g_direct_hash, g_direct_equal);
4654 lte_rrc_dcch_segment_id_tree = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope());
4656 reassembly_table_register(&lte_rrc_sib11_reassembly_table,
4657 &addresses_reassembly_table_functions);
4658 reassembly_table_register(&lte_rrc_sib12_reassembly_table,
4659 &addresses_reassembly_table_functions);
4660 reassembly_table_register(&lte_rrc_dcch_segment_reassembly_table,
4661 &addresses_reassembly_table_functions);
4663 /* Register configuration preferences */
4664 lte_rrc_module = prefs_register_protocol(proto_lte_rrc, NULL);
4665 prefs_register_bool_preference(lte_rrc_module, "nas_in_root_tree",
4666 "Show NAS PDU in root packet details",
4667 "Whether the NAS PDU should be shown in the root packet details tree",
4668 &lte_rrc_nas_in_root_tree);
4669 prefs_register_bool_preference(lte_rrc_module, "reassemble_dcch_segments",
4670 "Try to reassemble DCCH segmented messages",
4671 "Whether the LTE RRC dissector should attempt to reassemble DCCH segmented messages",
4672 &lte_rrc_reassemble_dcch_segments);
4676 /*--- proto_reg_handoff_rrc ---------------------------------------*/
4677 void
4678 proto_reg_handoff_lte_rrc(void)
4680 dissector_add_for_decode_as_with_preference("udp.port", lte_rrc_dl_ccch_handle);
4681 nas_eps_handle = find_dissector("nas-eps");
4682 nas_5gs_handle = find_dissector("nas-5gs");
4683 rrc_irat_ho_to_utran_cmd_handle = find_dissector("rrc.irat.ho_to_utran_cmd");
4684 rrc_sys_info_cont_handle = find_dissector("rrc.sysinfo.cont");
4685 gsm_a_dtap_handle = find_dissector("gsm_a_dtap");
4686 gsm_rlcmac_dl_handle = find_dissector("gsm_rlcmac_dl");
4687 nr_rrc_reconf_handle = find_dissector("nr-rrc.rrc_reconf");
4688 lte_rrc_conn_reconf_handle = find_dissector("lte-rrc.rrc_conn_reconf");