Add a malformed check to show if GroupA has more RAPIDs than A & B
[metze/wireshark/wip.git] / asn1 / lte-rrc / packet-lte-rrc-template.c
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 V11.4.0 Release 11) packet dissection
5  * Copyright 2008, Vincent Helfre
6  * Copyright 2009-2013, Pascal Quantin
7  *
8  * $Id$
9  *
10  * Wireshark - Network traffic analyzer
11  * By Gerald Combs <gerald@wireshark.org>
12  * Copyright 1998 Gerald Combs
13  *
14  * This program is free software; you can redistribute it and/or
15  * modify it under the terms of the GNU General Public License
16  * as published by the Free Software Foundation; either version 2
17  * of the License, or (at your option) any later version.
18  *
19  * This program is distributed in the hope that it will be useful,
20  * but WITHOUT ANY WARRANTY; without even the implied warranty of
21  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22  * GNU General Public License for more details.
23  *
24  * You should have received a copy of the GNU General Public License
25  * along with this program; if not, write to the Free Software
26  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
27  *
28  */
29
30 #include "config.h"
31
32 #include <glib.h>
33 #include <epan/packet.h>
34 #include <epan/asn1.h>
35 #include <epan/expert.h>
36
37 #include "packet-per.h"
38 #include "packet-rrc.h"
39 #include "packet-gsm_a_common.h"
40 #include "packet-lpp.h"
41 #include "packet-gsm_map.h"
42 #include "packet-cell_broadcast.h"
43 #include "packet-mac-lte.h"
44 #include "packet-rlc-lte.h"
45
46 #define PNAME  "LTE Radio Resource Control (RRC) protocol"
47 #define PSNAME "LTE RRC"
48 #define PFNAME "lte_rrc"
49
50 static dissector_handle_t nas_eps_handle = NULL;
51 static dissector_handle_t rrc_irat_ho_to_utran_cmd_handle = NULL;
52 static dissector_handle_t rrc_sys_info_cont_handle = NULL;
53 static dissector_handle_t gsm_a_dtap_handle = NULL;
54 static dissector_handle_t gsm_rlcmac_dl_handle = NULL;
55
56 static GHashTable *lte_rrc_etws_cmas_dcs_hash = NULL;
57
58 /* Keep track of where/how the System Info value has changed */
59 static GHashTable *lte_rrc_system_info_value_changed_hash = NULL;
60 static guint8     system_info_value_current;
61 static gboolean   system_info_value_current_set;
62
63
64 extern int proto_mac_lte;
65
66
67 /* Include constants */
68 #include "packet-lte-rrc-val.h"
69
70 /* Initialize the protocol and registered fields */
71 static int proto_lte_rrc = -1;
72
73 #include "packet-lte-rrc-hf.c"
74
75 static int hf_lte_rrc_eutra_cap_feat_group_ind_1 = -1;
76 static int hf_lte_rrc_eutra_cap_feat_group_ind_2 = -1;
77 static int hf_lte_rrc_eutra_cap_feat_group_ind_3 = -1;
78 static int hf_lte_rrc_eutra_cap_feat_group_ind_4 = -1;
79 static int hf_lte_rrc_eutra_cap_feat_group_ind_5 = -1;
80 static int hf_lte_rrc_eutra_cap_feat_group_ind_6 = -1;
81 static int hf_lte_rrc_eutra_cap_feat_group_ind_7 = -1;
82 static int hf_lte_rrc_eutra_cap_feat_group_ind_8 = -1;
83 static int hf_lte_rrc_eutra_cap_feat_group_ind_9 = -1;
84 static int hf_lte_rrc_eutra_cap_feat_group_ind_10 = -1;
85 static int hf_lte_rrc_eutra_cap_feat_group_ind_11 = -1;
86 static int hf_lte_rrc_eutra_cap_feat_group_ind_12 = -1;
87 static int hf_lte_rrc_eutra_cap_feat_group_ind_13 = -1;
88 static int hf_lte_rrc_eutra_cap_feat_group_ind_14 = -1;
89 static int hf_lte_rrc_eutra_cap_feat_group_ind_15 = -1;
90 static int hf_lte_rrc_eutra_cap_feat_group_ind_16 = -1;
91 static int hf_lte_rrc_eutra_cap_feat_group_ind_17 = -1;
92 static int hf_lte_rrc_eutra_cap_feat_group_ind_18 = -1;
93 static int hf_lte_rrc_eutra_cap_feat_group_ind_19 = -1;
94 static int hf_lte_rrc_eutra_cap_feat_group_ind_20 = -1;
95 static int hf_lte_rrc_eutra_cap_feat_group_ind_21 = -1;
96 static int hf_lte_rrc_eutra_cap_feat_group_ind_22 = -1;
97 static int hf_lte_rrc_eutra_cap_feat_group_ind_23 = -1;
98 static int hf_lte_rrc_eutra_cap_feat_group_ind_24 = -1;
99 static int hf_lte_rrc_eutra_cap_feat_group_ind_25 = -1;
100 static int hf_lte_rrc_eutra_cap_feat_group_ind_26 = -1;
101 static int hf_lte_rrc_eutra_cap_feat_group_ind_27 = -1;
102 static int hf_lte_rrc_eutra_cap_feat_group_ind_28 = -1;
103 static int hf_lte_rrc_eutra_cap_feat_group_ind_29 = -1;
104 static int hf_lte_rrc_eutra_cap_feat_group_ind_30 = -1;
105 static int hf_lte_rrc_eutra_cap_feat_group_ind_31 = -1;
106 static int hf_lte_rrc_eutra_cap_feat_group_ind_32 = -1;
107 static int hf_lte_rrc_eutra_cap_feat_group_ind_33 = -1;
108 static int hf_lte_rrc_eutra_cap_feat_group_ind_34 = -1;
109 static int hf_lte_rrc_eutra_cap_feat_group_ind_35 = -1;
110 static int hf_lte_rrc_eutra_cap_feat_group_ind_36 = -1;
111 static int hf_lte_rrc_eutra_cap_feat_group_ind_37 = -1;
112 static int hf_lte_rrc_eutra_cap_feat_group_ind_38 = -1;
113 static int hf_lte_rrc_eutra_cap_feat_group_ind_39 = -1;
114 static int hf_lte_rrc_eutra_cap_feat_group_ind_40 = -1;
115 static int hf_lte_rrc_eutra_cap_feat_group_ind_41 = -1;
116 static int hf_lte_rrc_eutra_cap_feat_group_ind_42 = -1;
117 static int hf_lte_rrc_eutra_cap_feat_group_ind_43 = -1;
118 static int hf_lte_rrc_eutra_cap_feat_group_ind_44 = -1;
119 static int hf_lte_rrc_eutra_cap_feat_group_ind_45 = -1;
120 static int hf_lte_rrc_eutra_cap_feat_group_ind_46 = -1;
121 static int hf_lte_rrc_eutra_cap_feat_group_ind_47 = -1;
122 static int hf_lte_rrc_eutra_cap_feat_group_ind_48 = -1;
123 static int hf_lte_rrc_eutra_cap_feat_group_ind_49 = -1;
124 static int hf_lte_rrc_eutra_cap_feat_group_ind_50 = -1;
125 static int hf_lte_rrc_eutra_cap_feat_group_ind_51 = -1;
126 static int hf_lte_rrc_eutra_cap_feat_group_ind_52 = -1;
127 static int hf_lte_rrc_eutra_cap_feat_group_ind_53 = -1;
128 static int hf_lte_rrc_eutra_cap_feat_group_ind_54 = -1;
129 static int hf_lte_rrc_eutra_cap_feat_group_ind_55 = -1;
130 static int hf_lte_rrc_eutra_cap_feat_group_ind_56 = -1;
131 static int hf_lte_rrc_eutra_cap_feat_group_ind_57 = -1;
132 static int hf_lte_rrc_eutra_cap_feat_group_ind_58 = -1;
133 static int hf_lte_rrc_eutra_cap_feat_group_ind_59 = -1;
134 static int hf_lte_rrc_eutra_cap_feat_group_ind_60 = -1;
135 static int hf_lte_rrc_eutra_cap_feat_group_ind_61 = -1;
136 static int hf_lte_rrc_eutra_cap_feat_group_ind_62 = -1;
137 static int hf_lte_rrc_eutra_cap_feat_group_ind_63 = -1;
138 static int hf_lte_rrc_eutra_cap_feat_group_ind_64 = -1;
139 static int hf_lte_rrc_eutra_cap_feat_group_ind_101 = -1;
140 static int hf_lte_rrc_eutra_cap_feat_group_ind_102 = -1;
141 static int hf_lte_rrc_eutra_cap_feat_group_ind_103 = -1;
142 static int hf_lte_rrc_eutra_cap_feat_group_ind_104 = -1;
143 static int hf_lte_rrc_eutra_cap_feat_group_ind_105 = -1;
144 static int hf_lte_rrc_eutra_cap_feat_group_ind_106 = -1;
145 static int hf_lte_rrc_eutra_cap_feat_group_ind_107 = -1;
146 static int hf_lte_rrc_eutra_cap_feat_group_ind_108 = -1;
147 static int hf_lte_rrc_eutra_cap_feat_group_ind_109 = -1;
148 static int hf_lte_rrc_eutra_cap_feat_group_ind_110 = -1;
149 static int hf_lte_rrc_eutra_cap_feat_group_ind_111 = -1;
150 static int hf_lte_rrc_eutra_cap_feat_group_ind_112 = -1;
151 static int hf_lte_rrc_eutra_cap_feat_group_ind_113 = -1;
152 static int hf_lte_rrc_eutra_cap_feat_group_ind_114 = -1;
153 static int hf_lte_rrc_eutra_cap_feat_group_ind_115 = -1;
154 static int hf_lte_rrc_eutra_cap_feat_group_ind_116 = -1;
155 static int hf_lte_rrc_eutra_cap_feat_group_ind_117 = -1;
156 static int hf_lte_rrc_eutra_cap_feat_group_ind_118 = -1;
157 static int hf_lte_rrc_eutra_cap_feat_group_ind_119 = -1;
158 static int hf_lte_rrc_eutra_cap_feat_group_ind_120 = -1;
159 static int hf_lte_rrc_eutra_cap_feat_group_ind_121 = -1;
160 static int hf_lte_rrc_eutra_cap_feat_group_ind_122 = -1;
161 static int hf_lte_rrc_eutra_cap_feat_group_ind_123 = -1;
162 static int hf_lte_rrc_eutra_cap_feat_group_ind_124 = -1;
163 static int hf_lte_rrc_eutra_cap_feat_group_ind_125 = -1;
164 static int hf_lte_rrc_eutra_cap_feat_group_ind_126 = -1;
165 static int hf_lte_rrc_eutra_cap_feat_group_ind_127 = -1;
166 static int hf_lte_rrc_eutra_cap_feat_group_ind_128 = -1;
167 static int hf_lte_rrc_eutra_cap_feat_group_ind_129 = -1;
168 static int hf_lte_rrc_eutra_cap_feat_group_ind_130 = -1;
169 static int hf_lte_rrc_eutra_cap_feat_group_ind_131 = -1;
170 static int hf_lte_rrc_eutra_cap_feat_group_ind_132 = -1;
171 static int hf_lte_rrc_serialNumber_gs = -1;
172 static int hf_lte_rrc_serialNumber_msg_code = -1;
173 static int hf_lte_rrc_serialNumber_upd_nb = -1;
174 static int hf_lte_rrc_warningType_value = -1;
175 static int hf_lte_rrc_warningType_emergency_user_alert = -1;
176 static int hf_lte_rrc_warningType_popup = -1;
177 static int hf_lte_rrc_warningMessageSegment_nb_pages = -1;
178 static int hf_lte_rrc_warningMessageSegment_decoded_page = -1;
179
180 /* Initialize the subtree pointers */
181 static int ett_lte_rrc = -1;
182
183 #include "packet-lte-rrc-ett.c"
184
185 static gint ett_lte_rrc_featureGroupIndicators = -1;
186 static gint ett_lte_rrc_featureGroupIndRel9Add = -1;
187 static gint ett_lte_rrc_featureGroupIndRel10 = -1;
188 static gint ett_lte_rrc_absTimeInfo = -1;
189 static gint ett_lte_rrc_nas_SecurityParam = -1;
190 static gint ett_lte_rrc_targetRAT_MessageContainer = -1;
191 static gint ett_lte_rrc_siPsiSibContainer = -1;
192 static gint ett_lte_rrc_dedicatedInfoNAS = -1;
193 static gint ett_lte_rrc_timeInfo = -1;
194 static gint ett_lte_rrc_serialNumber = -1;
195 static gint ett_lte_rrc_warningType = -1;
196 static gint ett_lte_rrc_dataCodingScheme = -1;
197 static gint ett_lte_rrc_warningMessageSegment = -1;
198
199 static expert_field ei_lte_rrc_number_pages_le15 = EI_INIT;
200 static expert_field ei_lte_rrc_si_info_value_changed = EI_INIT;
201 static expert_field ei_lte_rrc_sibs_changing = EI_INIT;
202 static expert_field ei_lte_rrc_earthquake_warning_sys = EI_INIT;
203 static expert_field ei_lte_rrc_commercial_mobile_alert_sys = EI_INIT;
204 static expert_field ei_lte_rrc_unexpected_type_value = EI_INIT;
205 static expert_field ei_lte_rrc_unexpected_length_value = EI_INIT;
206 static expert_field ei_lte_rrc_too_many_group_a_rapids = EI_INIT;
207
208 /* Forward declarations */
209 static int dissect_DL_DCCH_Message_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
210 static int dissect_UECapabilityInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
211 int dissect_lte_rrc_UE_EUTRA_Capability_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
212
213 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_1_val = {
214   "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",
215   "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"
216 };
217 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_2_val = {
218   "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",
219   "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"
220 };
221 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_3_val = {
222   "5bit RLC UM SN; 7bit PDCP SN - Supported",
223   "5bit RLC UM SN; 7bit PDCP SN - Not supported"
224 };
225 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_4_val = {
226   "Short DRX cycle - Supported",
227   "Short DRX cycle - Not supported"
228 };
229 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_5_val = {
230   "Long DRX cycle; DRX command MAC control element - Supported",
231   "Long DRX cycle; DRX command MAC control element - Not supported"
232 };
233 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_6_val = {
234   "Prioritised bit rate - Supported",
235   "Prioritised bit rate - Not supported"
236 };
237 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_7_val = {
238   "RLC UM - Supported",
239   "RLC UM - Not supported"
240 };
241 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_8_val = {
242   "EUTRA RRC_CONNECTED to UTRA CELL_DCH PS handover - Supported",
243   "EUTRA RRC_CONNECTED to UTRA CELL_DCH PS handover - Not supported"
244 };
245 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_9_val = {
246   "EUTRA RRC_CONNECTED to GERAN GSM_Dedicated handover - Supported",
247   "EUTRA RRC_CONNECTED to GERAN GSM_Dedicated handover - Not Supported"
248 };
249 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_10_val = {
250   "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",
251   "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"
252 };
253 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_11_val = {
254   "EUTRA RRC_CONNECTED to CDMA2000 1xRTT CS Active handover - Supported",
255   "EUTRA RRC_CONNECTED to CDMA2000 1xRTT CS Active handover - Not supported"
256 };
257 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_12_val = {
258   "EUTRA RRC_CONNECTED to CDMA2000 HRPD Active handover - Supported",
259   "EUTRA RRC_CONNECTED to CDMA2000 HRPD Active handover - Not supported"
260 };
261 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_13_val = {
262   "Inter-frequency handover (within FDD or TDD) - Supported",
263   "Inter-frequency handover (within FDD or TDD) - Not supported"
264 };
265 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_14_val = {
266   "Measurement reporting event: Event A4 - Neighbour > threshold; Measurement reporting event: Event A5 - Serving < threshold1 & Neighbour > threshold2 - Supported",
267   "Measurement reporting event: Event A4 - Neighbour > threshold; Measurement reporting event: Event A5 - Serving < threshold1 & Neighbour > threshold2 - Not supported"
268 };
269 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_15_val = {
270   "Measurement reporting event: Event B1 - Neighbour > threshold - Supported",
271   "Measurement reporting event: Event B1 - Neighbour > threshold - Not supported"
272 };
273 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_16_val = {
274   "non-ANR related periodical measurement reporting - Supported",
275   "non-ANR related periodical measurement reporting - Not supported"
276 };
277 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_17_val = {
278   "ANR related intra-frequency measurement reporting events - Supported",
279   "ANR related intra-frequency measurement reporting events - Not supported"
280 };
281 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_18_val = {
282   "ANR related inter-frequency measurement reporting events - Supported",
283   "ANR related inter-frequency measurement reporting events - Not supported"
284 };
285 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_19_val = {
286   "ANR related inter-RAT measurement reporting events - Supported",
287   "ANR related inter-RAT measurement reporting events - Not supported"
288 };
289 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_20_val = {
290   "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",
291   "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"
292 };
293 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_21_val = {
294   "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",
295   "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"
296 };
297 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_22_val = {
298   "UTRAN measurements, reporting and measurement reporting event B2 in E-UTRA connected mode - Supported",
299   "UTRAN measurements, reporting and measurement reporting event B2 in E-UTRA connected mode - Not supported"
300 };
301 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_23_val = {
302   "GERAN measurements, reporting and measurement reporting event B2 in E-UTRA connected mode - Supported",
303   "GERAN measurements, reporting and measurement reporting event B2 in E-UTRA connected mode - Not supported"
304 };
305 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_24_val = {
306   "1xRTT measurements, reporting and measurement reporting event B2 in E-UTRA connected mode - Supported",
307   "1xRTT measurements, reporting and measurement reporting event B2 in E-UTRA connected mode - Not supported"
308 };
309 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_25_val = {
310   "Inter-frequency measurements and reporting in E-UTRA connected mode - Supported",
311   "Inter-frequency measurements and reporting in E-UTRA connected mode - Not supported"
312 };
313 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_26_val = {
314   "HRPD measurements, reporting and measurement reporting event B2 in E-UTRA connected mode - Supported",
315   "HRPD measurements, reporting and measurement reporting event B2 in E-UTRA connected mode - Not supported"
316 };
317 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_27_val = {
318   "EUTRA RRC_CONNECTED to UTRA CELL_DCH CS handover - Supported",
319   "EUTRA RRC_CONNECTED to UTRA CELL_DCH CS handover - Not supported"
320 };
321 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_28_val = {
322   "TTI bundling - Supported",
323   "TTI bundling - Not supported"
324 };
325 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_29_val = {
326   "Semi-Persistent Scheduling - Supported",
327   "Semi-Persistent Scheduling - Not supported"
328 };
329 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_30_val = {
330   "Handover between FDD and TDD - Supported",
331   "Handover between FDD and TDD - Not supported"
332 };
333 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_31_val = {
334   "Mechanisms defined for cells broadcasting multi band information - Supported",
335   "Mechanisms defined for cells broadcasting multi band information - Not supported"
336 };
337 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_32_val = {
338   "Undefined - Supported",
339   "Undefined - Not supported"
340 };
341 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_33_val = {
342   "Inter-RAT ANR features for UTRAN FDD - Supported",
343   "Inter-RAT ANR features for UTRAN FDD - Not supported"
344 };
345 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_34_val = {
346   "Inter-RAT ANR features for GERAN - Supported",
347   "Inter-RAT ANR features for GERAN - Not supported"
348 };
349 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_35_val = {
350   "Inter-RAT ANR features for 1xRTT - Supported",
351   "Inter-RAT ANR features for 1xRTT - Not supported"
352 };
353 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_36_val = {
354   "Inter-RAT ANR features for HRPD - Supported",
355   "Inter-RAT ANR features for HRPD - Not supported"
356 };
357 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_37_val = {
358   "Inter-RAT ANR features for UTRAN TDD - Supported",
359   "Inter-RAT ANR features for UTRAN TDD - Not supported"
360 };
361 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_38_val = {
362   "EUTRA RRC_CONNECTED to UTRA TDD CELL_DCH PS handover - Supported",
363   "EUTRA RRC_CONNECTED to UTRA TDD CELL_DCH PS handover - Not supported"
364 };
365 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_39_val = {
366   "UTRAN TDD measurements, reporting and measurement reporting event B2 in E-UTRA connected mode - Supported",
367   "UTRAN TDD measurements, reporting and measurement reporting event B2 in E-UTRA connected mode - Not supported"
368 };
369 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_40_val = {
370   "EUTRA RRC_CONNECTED to UTRA TDD CELL_DCH CS handover - Supported",
371   "EUTRA RRC_CONNECTED to UTRA TDD CELL_DCH CS handover - Not supported"
372 };
373 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_41_val = {
374   "Measurement reporting event: Event B1 - Neighbour > threshold for UTRAN FDD - Supported",
375   "Measurement reporting event: Event B1 - Neighbour > threshold for UTRAN FDD - Not supported"
376 };
377 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_42_val = {
378   "Undefined - Supported",
379   "Undefined - Not supported"
380 };
381 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_43_val = {
382   "Undefined - Supported",
383   "Undefined - Not supported"
384 };
385 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_44_val = {
386   "Undefined - Supported",
387   "Undefined - Not supported"
388 };
389 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_45_val = {
390   "Undefined - Supported",
391   "Undefined - Not supported"
392 };
393 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_46_val = {
394   "Undefined - Supported",
395   "Undefined - Not supported"
396 };
397 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_47_val = {
398   "Undefined - Supported",
399   "Undefined - Not supported"
400 };
401 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_48_val = {
402   "Undefined - Supported",
403   "Undefined - Not supported"
404 };
405 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_49_val = {
406   "Undefined - Supported",
407   "Undefined - Not supported"
408 };
409 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_50_val = {
410   "Undefined - Supported",
411   "Undefined - Not supported"
412 };
413 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_51_val = {
414   "Undefined - Supported",
415   "Undefined - Not supported"
416 };
417 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_52_val = {
418   "Undefined - Supported",
419   "Undefined - Not supported"
420 };
421 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_53_val = {
422   "Undefined - Supported",
423   "Undefined - Not supported"
424 };
425 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_54_val = {
426   "Undefined - Supported",
427   "Undefined - Not supported"
428 };
429 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_55_val = {
430   "Undefined - Supported",
431   "Undefined - Not supported"
432 };
433 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_56_val = {
434   "Undefined - Supported",
435   "Undefined - Not supported"
436 };
437 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_57_val = {
438   "Undefined - Supported",
439   "Undefined - Not supported"
440 };
441 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_58_val = {
442   "Undefined - Supported",
443   "Undefined - Not supported"
444 };
445 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_59_val = {
446   "Undefined - Supported",
447   "Undefined - Not supported"
448 };
449 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_60_val = {
450   "Undefined - Supported",
451   "Undefined - Not supported"
452 };
453 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_61_val = {
454   "Undefined - Supported",
455   "Undefined - Not supported"
456 };
457 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_62_val = {
458   "Undefined - Supported",
459   "Undefined - Not supported"
460 };
461 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_63_val = {
462   "Undefined - Supported",
463   "Undefined - Not supported"
464 };
465 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_64_val = {
466   "Undefined - Supported",
467   "Undefined - Not supported"
468 };
469 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_101_val = {
470   "DMRS with OCC (orthogonal cover code) and SGH (sequence group hopping) disabling - Supported",
471   "DMRS with OCC (orthogonal cover code) and SGH (sequence group hopping) disabling - Not supported"
472 };
473 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_102_val = {
474   "Trigger type 1 SRS (aperiodic SRS) transmission (Up to X ports) - Supported",
475   "Trigger type 1 SRS (aperiodic SRS) transmission (Up to X ports) - Not supported"
476 };
477 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_103_val = {
478   "PDSCH TM9 when up to 4 CSI reference signal ports are configured - Supported",
479   "PDSCH TM9 when up to 4 CSI reference signal ports are configured - Not supported"
480 };
481 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_104_val = {
482   "PDSCH TM9 for TDD when 8 CSI reference signal ports are configured - Supported",
483   "PDSCH TM9 for TDD when 8 CSI reference signal ports are configured - Not supported"
484 };
485 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_105_val = {
486   "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",
487   "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"
488 };
489 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_106_val = {
490   "PUCCH RM2-1 when PDSCH TM9 and 8 CSI reference signal ports are configured - Supported",
491   "PUCCH RM2-1 when PDSCH TM9 and 8 CSI reference signal ports are configured - Not supported"
492 };
493 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_107_val = {
494   "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",
495   "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"
496 };
497 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_108_val = {
498   "PUSCH RM2-2 when PDSCH TM9 and 8 CSI reference signal ports are configured - Supported",
499   "PUSCH RM2-2 when PDSCH TM9 and 8 CSI reference signal ports are configured - Not supported"
500 };
501 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_109_val = {
502   "PUCCH RM1-1 submode 1 - Supported",
503   "PUCCH RM1-1 submode 1 - Not supported"
504 };
505 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_110_val = {
506   "PUCCH RM1-1 submode 2 - Supported",
507   "PUCCH RM1-1 submode 2 - Not supported"
508 };
509 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_111_val = {
510   "Measurement reporting trigger Event A6 - Supported",
511   "Measurement reporting trigger Event A6 - Not supported"
512 };
513 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_112_val = {
514   "SCell addition within the Handover to EUTRA procedure - Supported",
515   "SCell addition within the Handover to EUTRA procedure - Not supported"
516 };
517 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_113_val = {
518   "Trigger type 0 SRS (periodic SRS) transmission on X Serving Cells - Supported",
519   "Trigger type 0 SRS (periodic SRS) transmission on X Serving Cells - Not supported"
520 };
521 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_114_val = {
522   "Reporting of both UTRA CPICH RSCP and Ec/N0 in a Measurement Report - Supported",
523   "Reporting of both UTRA CPICH RSCP and Ec/N0 in a Measurement Report - Not supported"
524 };
525 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_115_val = {
526   "Time domain ICIC RLM/RRM / ICIC RRM / ICIC CSI measurement sf restriction for the serving cell / neighbour cells - Supported",
527   "Time domain ICIC RLM/RRM / ICIC RRM / ICIC CSI measurement sf restriction for the serving cell / neighbour cells - Not supported"
528 };
529 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_116_val = {
530   "Relative transmit phase continuity for spatial multiplexing in UL - Supported",
531   "Relative transmit phase continuity for spatial multiplexing in UL - Not supported"
532 };
533 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_117_val = {
534   "Undefined - Supported",
535   "Undefined - Not supported"
536 };
537 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_118_val = {
538   "Undefined - Supported",
539   "Undefined - Not supported"
540 };
541 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_119_val = {
542   "Undefined - Supported",
543   "Undefined - Not supported"
544 };
545 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_120_val = {
546   "Undefined - Supported",
547   "Undefined - Not supported"
548 };
549 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_121_val = {
550   "Undefined - Supported",
551   "Undefined - Not supported"
552 };
553 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_122_val = {
554   "Undefined - Supported",
555   "Undefined - Not supported"
556 };
557 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_123_val = {
558   "Undefined - Supported",
559   "Undefined - Not supported"
560 };
561 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_124_val = {
562   "Undefined - Supported",
563   "Undefined - Not supported"
564 };
565 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_125_val = {
566   "Undefined - Supported",
567   "Undefined - Not supported"
568 };
569 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_126_val = {
570   "Undefined - Supported",
571   "Undefined - Not supported"
572 };
573 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_127_val = {
574   "Undefined - Supported",
575   "Undefined - Not supported"
576 };
577 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_128_val = {
578   "Undefined - Supported",
579   "Undefined - Not supported"
580 };
581 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_129_val = {
582   "Undefined - Supported",
583   "Undefined - Not supported"
584 };
585 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_130_val = {
586   "Undefined - Supported",
587   "Undefined - Not supported"
588 };
589 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_131_val = {
590   "Undefined - Supported",
591   "Undefined - Not supported"
592 };
593 static const true_false_string lte_rrc_eutra_cap_feat_group_ind_132_val = {
594   "Undefined - Supported",
595   "Undefined - Not supported"
596 };
597
598 static const value_string lte_rrc_q_RxLevMin_vals[] = {
599   { -70, "-140dBm"},
600   { -69, "-138dBm"},
601   { -68, "-136dBm"},
602   { -67, "-134dBm"},
603   { -66, "-132dBm"},
604   { -65, "-130dBm"},
605   { -64, "-128dBm"},
606   { -63, "-126dBm"},
607   { -62, "-124dBm"},
608   { -61, "-122dBm"},
609   { -60, "-120dBm"},
610   { -59, "-118dBm"},
611   { -58, "-116dBm"},
612   { -57, "-114dBm"},
613   { -56, "-112dBm"},
614   { -55, "-110dBm"},
615   { -54, "-108dBm"},
616   { -53, "-106dBm"},
617   { -52, "-104dBm"},
618   { -51, "-102dBm"},
619   { -50, "-100dBm"},
620   { -49, "-98dBm"},
621   { -48, "-96dBm"},
622   { -47, "-94dBm"},
623   { -46, "-92dBm"},
624   { -45, "-90dBm"},
625   { -44, "-88dBm"},
626   { -43, "-86dBm"},
627   { -42, "-84dBm"},
628   { -41, "-82dBm"},
629   { -40, "-80dBm"},
630   { -39, "-78dBm"},
631   { -38, "-76dBm"},
632   { -37, "-74dBm"},
633   { -36, "-72dBm"},
634   { -35, "-70dBm"},
635   { -34, "-68dBm"},
636   { -33, "-66dBm"},
637   { -32, "-64dBm"},
638   { -31, "-62dBm"},
639   { -30, "-60dBm"},
640   { -29, "-58dBm"},
641   { -28, "-56dBm"},
642   { -27, "-54dBm"},
643   { -26, "-52dBm"},
644   { -25, "-50dBm"},
645   { -24, "-48dBm"},
646   { -23, "-46dBm"},
647   { -22, "-44dBm"},
648   {   0, NULL}
649 };
650 static value_string_ext lte_rrc_q_RxLevMin_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_q_RxLevMin_vals);
651
652 static const value_string lte_rrc_q_RxLevMinOffset_vals[] = {
653   { 1, "2dB"},
654   { 2, "4dB"},
655   { 3, "6dB"},
656   { 4, "8dB"},
657   { 5, "10dB"},
658   { 6, "12dB"},
659   { 7, "14dB"},
660   { 8, "16dB"},
661   { 0, NULL}
662 };
663
664 static void
665 lte_rrc_timeConnFailure_r10_fmt(gchar *s, guint32 v)
666 {
667   g_snprintf(s, ITEM_LABEL_LENGTH, "%ums (%u)", 100*v, v);
668 }
669
670 static const value_string lte_rrc_utra_q_RxLevMin_vals[] = {
671   { -60, "-119dBm"},
672   { -59, "-117dBm"},
673   { -58, "-115dBm"},
674   { -57, "-113dBm"},
675   { -56, "-111dBm"},
676   { -55, "-109dBm"},
677   { -54, "-107dBm"},
678   { -53, "-105dBm"},
679   { -52, "-103dBm"},
680   { -51, "-101dBm"},
681   { -50, "-99dBm"},
682   { -49, "-97dBm"},
683   { -48, "-95dBm"},
684   { -47, "-93dBm"},
685   { -46, "-91dBm"},
686   { -45, "-89dBm"},
687   { -44, "-87dBm"},
688   { -43, "-85dBm"},
689   { -42, "-83dBm"},
690   { -41, "-81dBm"},
691   { -40, "-79dBm"},
692   { -39, "-77dBm"},
693   { -38, "-75dBm"},
694   { -37, "-73dBm"},
695   { -36, "-71dBm"},
696   { -35, "-69dBm"},
697   { -34, "-67dBm"},
698   { -33, "-65dBm"},
699   { -32, "-63dBm"},
700   { -31, "-61dBm"},
701   { -30, "-59dBm"},
702   { -29, "-57dBm"},
703   { -28, "-55dBm"},
704   { -27, "-53dBm"},
705   { -26, "-51dBm"},
706   { -25, "-49dBm"},
707   { -24, "-47dBm"},
708   { -23, "-45dBm"},
709   { -22, "-43dBm"},
710   { -21, "-41dBm"},
711   { -20, "-39dBm"},
712   { -19, "-37dBm"},
713   { -18, "-35dBm"},
714   { -17, "-33dBm"},
715   { -16, "-31dBm"},
716   { -15, "-29dBm"},
717   { -14, "-27dBm"},
718   { -13, "-25dBm"},
719   {   0, NULL}
720 };
721 static value_string_ext lte_rrc_utra_q_RxLevMin_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_utra_q_RxLevMin_vals);
722
723 static const value_string lte_rrc_geran_q_RxLevMin_vals[] = {
724   { 0 , "-115dBm"},
725   { 1 , "-113dBm"},
726   { 2 , "-111dBm"},
727   { 3 , "-109dBm"},
728   { 4 , "-107dBm"},
729   { 5 , "-105dBm"},
730   { 6 , "-103dBm"},
731   { 7 , "-101dBm"},
732   { 8 , "-99dBm"},
733   { 9 , "-97dBm"},
734   { 10, "-95dBm"},
735   { 11, "-93dBm"},
736   { 12, "-91dBm"},
737   { 13, "-89dBm"},
738   { 14, "-87dBm"},
739   { 15, "-85dBm"},
740   { 16, "-83dBm"},
741   { 17, "-81dBm"},
742   { 18, "-79dBm"},
743   { 19, "-77dBm"},
744   { 20, "-75dBm"},
745   { 21, "-73dBm"},
746   { 22, "-71dBm"},
747   { 23, "-69dBm"},
748   { 24, "-67dBm"},
749   { 25, "-65dBm"},
750   { 26, "-63dBm"},
751   { 27, "-61dBm"},
752   { 28, "-59dBm"},
753   { 29, "-57dBm"},
754   { 30, "-55dBm"},
755   { 31, "-53dBm"},
756   { 32, "-51dBm"},
757   { 33, "-49dBm"},
758   { 34, "-47dBm"},
759   { 35, "-45dBm"},
760   { 36, "-43dBm"},
761   { 37, "-41dBm"},
762   { 38, "-39dBm"},
763   { 39, "-37dBm"},
764   { 40, "-35dBm"},
765   { 41, "-33dBm"},
766   { 42, "-31dBm"},
767   { 43, "-29dBm"},
768   { 44, "-27dBm"},
769   { 45, "-25dBm"},
770   {  0, NULL}
771 };
772 static value_string_ext lte_rrc_geran_q_RxLevMin_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_geran_q_RxLevMin_vals);
773
774 static const value_string lte_rrc_nomPDSCH_RS_EPRE_Offset_vals[] = {
775   { -1, "-2dB"},
776   {  0, "0dB"},
777   {  1, "2dB"},
778   {  2, "4dB"},
779   {  3, "6dB"},
780   {  4, "8dB"},
781   {  5, "10dB"},
782   {  6, "12dB"},
783   {  0, NULL}
784 };
785
786 static const value_string lte_rrc_deltaPreambleMsg3_vals[] = {
787   { -1, "-2dB"},
788   {  0, "0dB"},
789   {  1, "2dB"},
790   {  2, "4dB"},
791   {  3, "6dB"},
792   {  4, "8dB"},
793   {  5, "10dB"},
794   {  6, "12dB"},
795   {  0, NULL}
796 };
797
798 static const value_string lte_rrc_ReselectionThreshold_vals[] = {
799   { 0 , "0dB"},
800   { 1 , "2dB"},
801   { 2 , "4dB"},
802   { 3 , "6dB"},
803   { 4 , "8dB"},
804   { 5 , "10dB"},
805   { 6 , "12dB"},
806   { 7 , "14dB"},
807   { 8 , "16dB"},
808   { 9 , "18dB"},
809   { 10, "20dB"},
810   { 11, "22dB"},
811   { 12, "24dB"},
812   { 13, "26dB"},
813   { 14, "28dB"},
814   { 15, "30dB"},
815   { 16, "32dB"},
816   { 17, "34dB"},
817   { 18, "36dB"},
818   { 19, "38dB"},
819   { 20, "40dB"},
820   { 21, "42dB"},
821   { 22, "44dB"},
822   { 23, "46dB"},
823   { 24, "48dB"},
824   { 25, "50dB"},
825   { 26, "52dB"},
826   { 27, "54dB"},
827   { 28, "56dB"},
828   { 29, "58dB"},
829   { 30, "60dB"},
830   { 31, "62dB"},
831   {  0, NULL}
832 };
833 static value_string_ext lte_rrc_ReselectionThreshold_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_ReselectionThreshold_vals);
834
835 static const value_string lte_rrc_Hysteresis_vals[] = {
836   { 0 , "0dB"},
837   { 1 , "0.5dB"},
838   { 2 , "1dB"},
839   { 3 , "1.5dB"},
840   { 4 , "2dB"},
841   { 5 , "2.5dB"},
842   { 6 , "3dB"},
843   { 7 , "3.5dB"},
844   { 8 , "4dB"},
845   { 9 , "4.5dB"},
846   { 10, "5dB"},
847   { 11, "5.5dB"},
848   { 12, "6dB"},
849   { 13, "6.5dB"},
850   { 14, "7dB"},
851   { 15, "7.5dB"},
852   { 16, "8dB"},
853   { 17, "8.5dB"},
854   { 18, "9dB"},
855   { 19, "9.5dB"},
856   { 20, "10dB"},
857   { 21, "10.5dB"},
858   { 22, "11dB"},
859   { 23, "11.5dB"},
860   { 24, "12dB"},
861   { 25, "12.5dB"},
862   { 26, "13dB"},
863   { 27, "13.5dB"},
864   { 28, "14dB"},
865   { 29, "14.5dB"},
866   { 30, "15dB"},
867   {  0, NULL}
868 };
869 static value_string_ext lte_rrc_Hysteresis_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_Hysteresis_vals);
870
871 static const value_string lte_rrc_s_Measure_vals[] = {
872   {  0, "disabled"},
873   {  1, "-139dBm"},
874   {  2, "-138dBm"},
875   {  3, "-137dBm"},
876   {  4, "-136dBm"},
877   {  5, "-135dBm"},
878   {  6, "-134dBm"},
879   {  7, "-133dBm"},
880   {  8, "-132dBm"},
881   {  9, "-131dBm"},
882   { 10, "-130dBm"},
883   { 11, "-129dBm"},
884   { 12, "-128dBm"},
885   { 13, "-127dBm"},
886   { 14, "-126dBm"},
887   { 15, "-125dBm"},
888   { 16, "-124dBm"},
889   { 17, "-123dBm"},
890   { 18, "-122dBm"},
891   { 19, "-121dBm"},
892   { 20, "-120dBm"},
893   { 21, "-119dBm"},
894   { 22, "-118dBm"},
895   { 23, "-117dBm"},
896   { 24, "-116dBm"},
897   { 25, "-115dBm"},
898   { 26, "-114dBm"},
899   { 27, "-113dBm"},
900   { 28, "-112dBm"},
901   { 29, "-111dBm"},
902   { 30, "-110dBm"},
903   { 31, "-109dBm"},
904   { 32, "-108dBm"},
905   { 33, "-107dBm"},
906   { 34, "-106dBm"},
907   { 35, "-105dBm"},
908   { 36, "-104dBm"},
909   { 37, "-103dBm"},
910   { 38, "-102dBm"},
911   { 39, "-101dBm"},
912   { 40, "-100dBm"},
913   { 41, "-99dBm"},
914   { 42, "-98dBm"},
915   { 43, "-97dBm"},
916   { 44, "-96dBm"},
917   { 45, "-95dBm"},
918   { 46, "-94dBm"},
919   { 47, "-93dBm"},
920   { 48, "-92dBm"},
921   { 49, "-91dBm"},
922   { 50, "-90dBm"},
923   { 51, "-89dBm"},
924   { 52, "-88dBm"},
925   { 53, "-87dBm"},
926   { 54, "-86dBm"},
927   { 55, "-85dBm"},
928   { 56, "-84dBm"},
929   { 57, "-83dBm"},
930   { 58, "-82dBm"},
931   { 59, "-81dBm"},
932   { 60, "-80dBm"},
933   { 61, "-79dBm"},
934   { 62, "-78dBm"},
935   { 63, "-77dBm"},
936   { 64, "-76dBm"},
937   { 65, "-75dBm"},
938   { 66, "-74dBm"},
939   { 67, "-73dBm"},
940   { 68, "-72dBm"},
941   { 69, "-71dBm"},
942   { 70, "-70dBm"},
943   { 71, "-69dBm"},
944   { 72, "-68dBm"},
945   { 73, "-67dBm"},
946   { 74, "-66dBm"},
947   { 75, "-65dBm"},
948   { 76, "-64dBm"},
949   { 77, "-63dBm"},
950   { 78, "-62dBm"},
951   { 79, "-61dBm"},
952   { 80, "-60dBm"},
953   { 81, "-59dBm"},
954   { 82, "-58dBm"},
955   { 83, "-57dBm"},
956   { 84, "-56dBm"},
957   { 85, "-55dBm"},
958   { 86, "-54dBm"},
959   { 87, "-53dBm"},
960   { 88, "-52dBm"},
961   { 89, "-51dBm"},
962   { 90, "-50dBm"},
963   { 91, "-49dBm"},
964   { 92, "-48dBm"},
965   { 93, "-47dBm"},
966   { 94, "-46dBm"},
967   { 95, "-45dBm"},
968   { 96, "-44dBm"},
969   { 97, "-43dBm"},
970   {  0, NULL}
971 };
972 static value_string_ext lte_rrc_s_Measure_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_s_Measure_vals);
973
974 static const value_string lte_rrc_utra_EcN0_vals[] = {
975   { 0 , "CPICH Ec/Io < -24dB"},
976   { 1 , "-24dB <= CPICH Ec/Io < -23.5dB"},
977   { 2 , "-23.5dB <= CPICH Ec/Io < -23dB"},
978   { 3 , "-23dB <= CPICH Ec/Io < -22.5dB"},
979   { 4 , "-22.5dB <= CPICH Ec/Io < -22dB"},
980   { 5 , "-22dB <= CPICH Ec/Io < -21.5dB"},
981   { 6 , "-21.5dB <= CPICH Ec/Io < -21dB"},
982   { 7 , "-21dB <= CPICH Ec/Io < -20.5dB"},
983   { 8 , "-20.5dB <= CPICH Ec/Io < -20dB"},
984   { 9 , "-20dB <= CPICH Ec/Io < -19.5dB"},
985   { 10, "-19.5dB <= CPICH Ec/Io < -19dB"},
986   { 11, "-19dB <= CPICH Ec/Io < -18.5dB"},
987   { 12, "-18.5dB <= CPICH Ec/Io < -18dB"},
988   { 13, "-18dB <= CPICH Ec/Io < -17.5dB"},
989   { 14, "-17.5dB <= CPICH Ec/Io < -17dB"},
990   { 15, "-17dB <= CPICH Ec/Io < -16.5dB"},
991   { 16, "-16.5dB <= CPICH Ec/Io < -16dB"},
992   { 17, "-16dB <= CPICH Ec/Io < -15.5dB"},
993   { 18, "-15.5dB <= CPICH Ec/Io < -15dB"},
994   { 19, "-15dB <= CPICH Ec/Io < -14.5dB"},
995   { 20, "-14.5dB <= CPICH Ec/Io < -14dB"},
996   { 21, "-14dB <= CPICH Ec/Io < -13.5dB"},
997   { 22, "-13.5dB <= CPICH Ec/Io < -13dB"},
998   { 23, "-13dB <= CPICH Ec/Io < -12.5dB"},
999   { 24, "-12.5dB <= CPICH Ec/Io < -12dB"},
1000   { 25, "-12dB <= CPICH Ec/Io < -11.5dB"},
1001   { 26, "-11.5dB <= CPICH Ec/Io < -11dB"},
1002   { 27, "-11dB <= CPICH Ec/Io < -10.5dB"},
1003   { 28, "-10.5dB <= CPICH Ec/Io < -10dB"},
1004   { 29, "-10dB <= CPICH Ec/Io < -9.5dB"},
1005   { 30, "-9.5dB <= CPICH Ec/Io < -9dB"},
1006   { 31, "-9dB <= CPICH Ec/Io < -8.5dB"},
1007   { 32, "-8.5dB <= CPICH Ec/Io < -8dB"},
1008   { 33, "-8dB <= CPICH Ec/Io < -7.5dB"},
1009   { 34, "-7.5dB <= CPICH Ec/Io < -7dB"},
1010   { 35, "-7dB <= CPICH Ec/Io < -6.5dB"},
1011   { 36, "-6.5dB <= CPICH Ec/Io < -6dB"},
1012   { 37, "-6dB <= CPICH Ec/Io < -5.5dB"},
1013   { 38, "-5.5dB <= CPICH Ec/Io < -5dB"},
1014   { 39, "-5dB <= CPICH Ec/Io < -4.5dB"},
1015   { 40, "-4.5dB <= CPICH Ec/Io < -4dB"},
1016   { 41, "-4dB <= CPICH Ec/Io < -3.5dB"},
1017   { 42, "-3.5dB <= CPICH Ec/Io < -3dB"},
1018   { 43, "-3dB <= CPICH Ec/Io < -2.5dB"},
1019   { 44, "-2.5dB <= CPICH Ec/Io < -2dB"},
1020   { 45, "-2dB <= CPICH Ec/Io < -1.5dB"},
1021   { 46, "-1.5dB <= CPICH Ec/Io < -1dB"},
1022   { 47, "-1dB <= CPICH Ec/Io < -0.5dB"},
1023   { 48, "-0.5dB <= CPICH Ec/Io < 0dB"},
1024   { 49, "0dB <= CPICH Ec/Io"},
1025   {  0, NULL}
1026 };
1027 static value_string_ext lte_rrc_utra_EcN0_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_utra_EcN0_vals);
1028
1029 static const value_string lte_rrc_utra_RSCP_vals[] = {
1030   { -5, "RSCP < -120dBm"},
1031   { -4, "-120dBm <= RSCP < -119dBm"},
1032   { -3, "-119dBm <= RSCP < -118dBm"},
1033   { -2, "-118dBm <= RSCP < -117dBm"},
1034   { -1, "-117dBm <= RSCP < -116dBm"},
1035   {  0, "-116dBm <= RSCP < -115dBm"},
1036   {  1, "-115dBm <= RSCP < -114dBm"},
1037   {  2, "-114dBm <= RSCP < -113dBm"},
1038   {  3, "-113dBm <= RSCP < -112dBm"},
1039   {  4, "-112dBm <= RSCP < -111dBm"},
1040   {  5, "-111dBm <= RSCP < -110dBm"},
1041   {  6, "-110dBm <= RSCP < -109dBm"},
1042   {  7, "-109dBm <= RSCP < -108dBm"},
1043   {  8, "-108dBm <= RSCP < -107dBm"},
1044   {  9, "-107dBm <= RSCP < -106dBm"},
1045   { 10, "-106dBm <= RSCP < -105dBm"},
1046   { 11, "-105dBm <= RSCP < -104dBm"},
1047   { 12, "-104dBm <= RSCP < -103dBm"},
1048   { 13, "-103dBm <= RSCP < -102dBm"},
1049   { 14, "-102dBm <= RSCP < -101dBm"},
1050   { 15, "-101dBm <= RSCP < -100dBm"},
1051   { 16, "-100dBm <= RSCP < -99dBm"},
1052   { 17, "-99dBm <= RSCP < -98dBm"},
1053   { 18, "-98dBm <= RSCP < -97dBm"},
1054   { 19, "-97dBm <= RSCP < -96dBm"},
1055   { 20, "-96dBm <= RSCP < -95dBm"},
1056   { 21, "-95dBm <= RSCP < -94dBm"},
1057   { 22, "-94dBm <= RSCP < -93dBm"},
1058   { 23, "-93dBm <= RSCP < -92dBm"},
1059   { 24, "-92dBm <= RSCP < -91dBm"},
1060   { 25, "-91dBm <= RSCP < -90dBm"},
1061   { 26, "-90dBm <= RSCP < -89dBm"},
1062   { 27, "-89dBm <= RSCP < -88dBm"},
1063   { 28, "-88dBm <= RSCP < -87dBm"},
1064   { 29, "-87dBm <= RSCP < -86dBm"},
1065   { 30, "-86dBm <= RSCP < -85dBm"},
1066   { 31, "-85dBm <= RSCP < -84dBm"},
1067   { 32, "-84dBm <= RSCP < -83dBm"},
1068   { 33, "-83dBm <= RSCP < -82dBm"},
1069   { 34, "-82dBm <= RSCP < -81dBm"},
1070   { 35, "-81dBm <= RSCP < -80dBm"},
1071   { 36, "-80dBm <= RSCP < -79dBm"},
1072   { 37, "-79dBm <= RSCP < -78dBm"},
1073   { 38, "-78dBm <= RSCP < -77dBm"},
1074   { 39, "-77dBm <= RSCP < -76dBm"},
1075   { 40, "-76dBm <= RSCP < -75dBm"},
1076   { 41, "-75dBm <= RSCP < -74dBm"},
1077   { 42, "-74dBm <= RSCP < -73dBm"},
1078   { 43, "-73dBm <= RSCP < -72dBm"},
1079   { 44, "-72dBm <= RSCP < -71dBm"},
1080   { 45, "-71dBm <= RSCP < -70dBm"},
1081   { 46, "-70dBm <= RSCP < -69dBm"},
1082   { 47, "-69dBm <= RSCP < -68dBm"},
1083   { 48, "-68dBm <= RSCP < -67dBm"},
1084   { 49, "-67dBm <= RSCP < -66dBm"},
1085   { 50, "-66dBm <= RSCP < -65dBm"},
1086   { 51, "-65dBm <= RSCP < -64dBm"},
1087   { 52, "-64dBm <= RSCP < -63dBm"},
1088   { 53, "-63dBm <= RSCP < -62dBm"},
1089   { 54, "-62dBm <= RSCP < -61dBm"},
1090   { 55, "-61dBm <= RSCP < -60dBm"},
1091   { 56, "-60dBm <= RSCP < -59dBm"},
1092   { 57, "-59dBm <= RSCP < -58dBm"},
1093   { 58, "-58dBm <= RSCP < -57dBm"},
1094   { 59, "-57dBm <= RSCP < -56dBm"},
1095   { 60, "-56dBm <= RSCP < -55dBm"},
1096   { 61, "-55dBm <= RSCP < -54dBm"},
1097   { 62, "-54dBm <= RSCP < -53dBm"},
1098   { 63, "-53dBm <= RSCP < -52dBm"},
1099   { 64, "-52dBm <= RSCP < -51dBm"},
1100   { 65, "-51dBm <= RSCP < -50dBm"},
1101   { 66, "-50dBm <= RSCP < -49dBm"},
1102   { 67, "-49dBm <= RSCP < -48dBm"},
1103   { 68, "-48dBm <= RSCP < -47dBm"},
1104   { 69, "-47dBm <= RSCP < -46dBm"},
1105   { 70, "-46dBm <= RSCP < -45dBm"},
1106   { 71, "-45dBm <= RSCP < -44dBm"},
1107   { 72, "-44dBm <= RSCP < -43dBm"},
1108   { 73, "-43dBm <= RSCP < -42dBm"},
1109   { 74, "-42dBm <= RSCP < -41dBm"},
1110   { 75, "-41dBm <= RSCP < -40dBm"},
1111   { 76, "-40dBm <= RSCP < -39dBm"},
1112   { 77, "-39dBm <= RSCP < -38dBm"},
1113   { 78, "-38dBm <= RSCP < -37dBm"},
1114   { 79, "-37dBm <= RSCP < -36dBm"},
1115   { 80, "-36dBm <= RSCP < -35dBm"},
1116   { 81, "-35dBm <= RSCP < -34dBm"},
1117   { 82, "-34dBm <= RSCP < -33dBm"},
1118   { 83, "-33dBm <= RSCP < -32dBm"},
1119   { 84, "-32dBm <= RSCP < -31dBm"},
1120   { 85, "-31dBm <= RSCP < -30dBm"},
1121   { 86, "-30dBm <= RSCP < -29dBm"},
1122   { 87, "-29dBm <= RSCP < -28dBm"},
1123   { 88, "-28dBm <= RSCP < -27dBm"},
1124   { 89, "-27dBm <= RSCP < -26dBm"},
1125   { 90, "-26dBm <= RSCP < -25dBm"},
1126   { 91, "-25dBm <= RSCP"},
1127   {  0, NULL}
1128 };
1129 static value_string_ext lte_rrc_utra_RSCP_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_utra_RSCP_vals);
1130
1131 static const value_string lte_rrc_a3_a6_Offset_vals[] = {
1132   { -30, "-15dB"},
1133   { -29, "-14.5dB"},
1134   { -28, "-14dB"},
1135   { -27, "-13.5dB"},
1136   { -26, "-13dB"},
1137   { -25, "-12.5dB"},
1138   { -24, "-12dB"},
1139   { -23, "-11.5dB"},
1140   { -22, "-11dB"},
1141   { -21, "-10.5dB"},
1142   { -20, "-10dB"},
1143   { -19, "-9.5dB"},
1144   { -18, "-9dB"},
1145   { -17, "-8.5dB"},
1146   { -16, "-8dB"},
1147   { -15, "-7.5dB"},
1148   { -14, "-7dB"},
1149   { -13, "-6.5dB"},
1150   { -12, "-6dB"},
1151   { -11, "-5.5dB"},
1152   { -10, "-5dB"},
1153   {  -9, "-4.5dB"},
1154   {  -8, "-4dB"},
1155   {  -7, "-3.5dB"},
1156   {  -6, "-3dB"},
1157   {  -5, "-2.5dB"},
1158   {  -4, "-2dB"},
1159   {  -3, "-1.5dB"},
1160   {  -2, "-1dB"},
1161   {  -1, "-0.5dB"},
1162   {   0, "0dB"},
1163   {   1, "0.5dB"},
1164   {   2, "1dB"},
1165   {   3, "1.5dB"},
1166   {   4, "2dB"},
1167   {   5, "2.5dB"},
1168   {   6, "3dB"},
1169   {   7, "3.5dB"},
1170   {   8, "4dB"},
1171   {   9, "4.5dB"},
1172   {  10, "5dB"},
1173   {  11, "5.5dB"},
1174   {  12, "6dB"},
1175   {  13, "6.5dB"},
1176   {  14, "7dB"},
1177   {  15, "7.5dB"},
1178   {  16, "8dB"},
1179   {  17, "8.5dB"},
1180   {  18, "9dB"},
1181   {  19, "9.5dB"},
1182   {  20, "10dB"},
1183   {  21, "10.5dB"},
1184   {  22, "11dB"},
1185   {  23, "11.5dB"},
1186   {  24, "12dB"},
1187   {  25, "12.5dB"},
1188   {  26, "13dB"},
1189   {  27, "13.5dB"},
1190   {  28, "14dB"},
1191   {  29, "14.5dB"},
1192   {  30, "15dB"},
1193   {  0, NULL}
1194 };
1195 static value_string_ext lte_rrc_a3_a6_Offset_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_a3_a6_Offset_vals);
1196
1197 static const value_string lte_rrc_threshold_RSRP_vals[] = {
1198   {  0, "-140dBm"},
1199   {  1, "-139dBm"},
1200   {  2, "-138dBm"},
1201   {  3, "-137dBm"},
1202   {  4, "-136dBm"},
1203   {  5, "-135dBm"},
1204   {  6, "-134dBm"},
1205   {  7, "-133dBm"},
1206   {  8, "-132dBm"},
1207   {  9, "-131dBm"},
1208   { 10, "-130dBm"},
1209   { 11, "-129dBm"},
1210   { 12, "-128dBm"},
1211   { 13, "-127dBm"},
1212   { 14, "-126dBm"},
1213   { 15, "-125dBm"},
1214   { 16, "-124dBm"},
1215   { 17, "-123dBm"},
1216   { 18, "-122dBm"},
1217   { 19, "-121dBm"},
1218   { 20, "-120dBm"},
1219   { 21, "-119dBm"},
1220   { 22, "-118dBm"},
1221   { 23, "-117dBm"},
1222   { 24, "-116dBm"},
1223   { 25, "-115dBm"},
1224   { 26, "-114dBm"},
1225   { 27, "-113dBm"},
1226   { 28, "-112dBm"},
1227   { 29, "-111dBm"},
1228   { 30, "-110dBm"},
1229   { 31, "-109dBm"},
1230   { 32, "-108dBm"},
1231   { 33, "-107dBm"},
1232   { 34, "-106dBm"},
1233   { 35, "-105dBm"},
1234   { 36, "-104dBm"},
1235   { 37, "-103dBm"},
1236   { 38, "-102dBm"},
1237   { 39, "-101dBm"},
1238   { 40, "-100dBm"},
1239   { 41, "-99dBm"},
1240   { 42, "-98dBm"},
1241   { 43, "-97dBm"},
1242   { 44, "-96dBm"},
1243   { 45, "-95dBm"},
1244   { 46, "-94dBm"},
1245   { 47, "-93dBm"},
1246   { 48, "-92dBm"},
1247   { 49, "-91dBm"},
1248   { 50, "-90dBm"},
1249   { 51, "-89dBm"},
1250   { 52, "-88dBm"},
1251   { 53, "-87dBm"},
1252   { 54, "-86dBm"},
1253   { 55, "-85dBm"},
1254   { 56, "-84dBm"},
1255   { 57, "-83dBm"},
1256   { 58, "-82dBm"},
1257   { 59, "-81dBm"},
1258   { 60, "-80dBm"},
1259   { 61, "-79dBm"},
1260   { 62, "-78dBm"},
1261   { 63, "-77dBm"},
1262   { 64, "-76dBm"},
1263   { 65, "-75dBm"},
1264   { 66, "-74dBm"},
1265   { 67, "-73dBm"},
1266   { 68, "-72dBm"},
1267   { 69, "-71dBm"},
1268   { 70, "-70dBm"},
1269   { 71, "-69dBm"},
1270   { 72, "-68dBm"},
1271   { 73, "-67dBm"},
1272   { 74, "-66dBm"},
1273   { 75, "-65dBm"},
1274   { 76, "-64dBm"},
1275   { 77, "-63dBm"},
1276   { 78, "-62dBm"},
1277   { 79, "-61dBm"},
1278   { 80, "-60dBm"},
1279   { 81, "-59dBm"},
1280   { 82, "-58dBm"},
1281   { 83, "-57dBm"},
1282   { 84, "-56dBm"},
1283   { 85, "-55dBm"},
1284   { 86, "-54dBm"},
1285   { 87, "-53dBm"},
1286   { 88, "-52dBm"},
1287   { 89, "-51dBm"},
1288   { 90, "-50dBm"},
1289   { 91, "-49dBm"},
1290   { 92, "-48dBm"},
1291   { 93, "-47dBm"},
1292   { 94, "-46dBm"},
1293   { 95, "-45dBm"},
1294   { 96, "-44dBm"},
1295   { 97, "-43dBm"},
1296   {  0, NULL}
1297 };
1298 static value_string_ext lte_rrc_threshold_RSRP_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_threshold_RSRP_vals);
1299
1300 static const value_string lte_rrc_threshold_RSRQ_vals[] = {
1301   {  0, "-20dB"},
1302   {  1, "-19.5dB"},
1303   {  2, "-19dB"},
1304   {  3, "-18.5dB"},
1305   {  4, "-18dB"},
1306   {  5, "-17.5dB"},
1307   {  6, "-17dB"},
1308   {  7, "-16.5dB"},
1309   {  8, "-16dB"},
1310   {  9, "-15.5dB"},
1311   { 10, "-15dB"},
1312   { 11, "-14.5dB"},
1313   { 12, "-14dB"},
1314   { 13, "-13.5dB"},
1315   { 14, "-13dB"},
1316   { 15, "-12.5dB"},
1317   { 16, "-12dB"},
1318   { 17, "-11.5dB"},
1319   { 18, "-11dB"},
1320   { 19, "-10.5dB"},
1321   { 20, "-10dB"},
1322   { 21, "-9.5dB"},
1323   { 22, "-9dB"},
1324   { 23, "-8.5dB"},
1325   { 24, "-8dB"},
1326   { 25, "-7.5dB"},
1327   { 26, "-7dB"},
1328   { 27, "-6.5dB"},
1329   { 28, "-6dB"},
1330   { 29, "-5.5dB"},
1331   { 30, "-5dB"},
1332   { 31, "-4.5dB"},
1333   { 32, "-4dB"},
1334   { 33, "-3.5dB"},
1335   { 34, "-3dB"},
1336   {  0, NULL}
1337 };
1338 static value_string_ext lte_rrc_threshold_RSRQ_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_threshold_RSRQ_vals);
1339
1340 static const value_string lte_rrc_thresholdGERAN_vals[] = {
1341   { 0 , "-110dBm"},
1342   { 1 , "-109dBm"},
1343   { 2 , "-108dBm"},
1344   { 3 , "-107dBm"},
1345   { 4 , "-106dBm"},
1346   { 5 , "-105dBm"},
1347   { 6 , "-104dBm"},
1348   { 7 , "-103dBm"},
1349   { 8 , "-102dBm"},
1350   { 9 , "-101dBm"},
1351   { 10, "-100dBm"},
1352   { 11, "-99dBm"},
1353   { 12, "-98dBm"},
1354   { 13, "-97dBm"},
1355   { 14, "-96dBm"},
1356   { 15, "-95dBm"},
1357   { 16, "-94dBm"},
1358   { 17, "-93dBm"},
1359   { 18, "-92dBm"},
1360   { 19, "-91dBm"},
1361   { 20, "-90dBm"},
1362   { 21, "-89dBm"},
1363   { 22, "-88dBm"},
1364   { 23, "-87dBm"},
1365   { 24, "-86dBm"},
1366   { 25, "-85dBm"},
1367   { 26, "-84dBm"},
1368   { 27, "-83dBm"},
1369   { 28, "-82dBm"},
1370   { 29, "-81dBm"},
1371   { 30, "-80dBm"},
1372   { 31, "-79dBm"},
1373   { 32, "-78dBm"},
1374   { 33, "-77dBm"},
1375   { 34, "-76dBm"},
1376   { 35, "-75dBm"},
1377   { 36, "-74dBm"},
1378   { 37, "-73dBm"},
1379   { 38, "-72dBm"},
1380   { 39, "-71dBm"},
1381   { 40, "-70dBm"},
1382   { 41, "-69dBm"},
1383   { 42, "-68dBm"},
1384   { 43, "-67dBm"},
1385   { 44, "-66dBm"},
1386   { 45, "-65dBm"},
1387   { 46, "-64dBm"},
1388   { 47, "-63dBm"},
1389   { 48, "-62dBm"},
1390   { 49, "-61dBm"},
1391   { 50, "-60dBm"},
1392   { 51, "-59dBm"},
1393   { 52, "-58dBm"},
1394   { 53, "-57dBm"},
1395   { 54, "-56dBm"},
1396   { 55, "-55dBm"},
1397   { 56, "-54dBm"},
1398   { 57, "-53dBm"},
1399   { 58, "-52dBm"},
1400   { 59, "-51dBm"},
1401   { 60, "-50dBm"},
1402   { 61, "-49dBm"},
1403   { 62, "-48dBm"},
1404   { 63, "-47dBm"},
1405   {  0, NULL}
1406 };
1407 static value_string_ext lte_rrc_thresholdGERAN_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_thresholdGERAN_vals);
1408
1409 static const value_string lte_rrc_thresholdUTRA_EcN0_vals[] = {
1410   { 0 , "-24.5dB"},
1411   { 1 , "-24dB"},
1412   { 2 , "-23.5dB"},
1413   { 3 , "-23dB"},
1414   { 4 , "-22.5dB"},
1415   { 5 , "-22dB"},
1416   { 6 , "-21.5dB"},
1417   { 7 , "-21dB"},
1418   { 8 , "-20.5dB"},
1419   { 9 , "-20dB"},
1420   { 10, "-19.5dB"},
1421   { 11, "-19dB"},
1422   { 12, "-18.5dB"},
1423   { 13, "-18dB"},
1424   { 14, "-17.5dB"},
1425   { 15, "-17dB"},
1426   { 16, "-16.5dB"},
1427   { 17, "-16dB"},
1428   { 18, "-15.5dB"},
1429   { 19, "-15dB"},
1430   { 20, "-14.5dB"},
1431   { 21, "-14dB"},
1432   { 22, "-13.5dB"},
1433   { 23, "-13dB"},
1434   { 24, "-12.5dB"},
1435   { 25, "-12dB"},
1436   { 26, "-11.5dB"},
1437   { 27, "-11dB"},
1438   { 28, "-10.5dB"},
1439   { 29, "-10dB"},
1440   { 30, "-9.5dB"},
1441   { 31, "-9dB"},
1442   { 32, "-8.5dB"},
1443   { 33, "-8dB"},
1444   { 34, "-7.5dB"},
1445   { 35, "-7dB"},
1446   { 36, "-6.5dB"},
1447   { 37, "-6dB"},
1448   { 38, "-5.5dB"},
1449   { 39, "-5dB"},
1450   { 40, "-4.5dB"},
1451   { 41, "-4dB"},
1452   { 42, "-3.5dB"},
1453   { 43, "-3dB"},
1454   { 44, "-2.5dB"},
1455   { 45, "-2dB"},
1456   { 46, "-1.5dB"},
1457   { 47, "-1dB"},
1458   { 48, "-0.5dB"},
1459   { 49, "0dB"},
1460   {  0, NULL}
1461 };
1462 static value_string_ext lte_rrc_thresholdUTRA_EcN0_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_thresholdUTRA_EcN0_vals);
1463
1464 static const value_string lte_rrc_thresholdUTRA_RSCP_vals[] = {
1465   { -5, "-120dBm"},
1466   { -4, "-119dBm"},
1467   { -3, "-118dBm"},
1468   { -2, "-117dBm"},
1469   { -1, "-116dBm"},
1470   {  0, "-115dBm"},
1471   {  1, "-114dBm"},
1472   {  2, "-113dBm"},
1473   {  3, "-112dBm"},
1474   {  4, "-111dBm"},
1475   {  5, "-110dBm"},
1476   {  6, "-109dBm"},
1477   {  7, "-108dBm"},
1478   {  8, "-107dBm"},
1479   {  9, "-106dBm"},
1480   { 10, "-105dBm"},
1481   { 11, "-104dBm"},
1482   { 12, "-103dBm"},
1483   { 13, "-102dBm"},
1484   { 14, "-101dBm"},
1485   { 15, "-100dBm"},
1486   { 16, "-99dBm"},
1487   { 17, "-98dBm"},
1488   { 18, "-97dBm"},
1489   { 19, "-96dBm"},
1490   { 20, "-95dBm"},
1491   { 21, "-94dBm"},
1492   { 22, "-93dBm"},
1493   { 23, "-92dBm"},
1494   { 24, "-91dBm"},
1495   { 25, "-90dBm"},
1496   { 26, "-89dBm"},
1497   { 27, "-88dBm"},
1498   { 28, "-87dBm"},
1499   { 29, "-86dBm"},
1500   { 30, "-85dBm"},
1501   { 31, "-84dBm"},
1502   { 32, "-83dBm"},
1503   { 33, "-82dBm"},
1504   { 34, "-81dBm"},
1505   { 35, "-80dBm"},
1506   { 36, "-79dBm"},
1507   { 37, "-78dBm"},
1508   { 38, "-77dBm"},
1509   { 39, "-76dBm"},
1510   { 40, "-75dBm"},
1511   { 41, "-74dBm"},
1512   { 42, "-73dBm"},
1513   { 43, "-72dBm"},
1514   { 44, "-71dBm"},
1515   { 45, "-70dBm"},
1516   { 46, "-69dBm"},
1517   { 47, "-68dBm"},
1518   { 48, "-67dBm"},
1519   { 49, "-66dBm"},
1520   { 50, "-65dBm"},
1521   { 51, "-64dBm"},
1522   { 52, "-63dBm"},
1523   { 53, "-62dBm"},
1524   { 54, "-61dBm"},
1525   { 55, "-60dBm"},
1526   { 56, "-59dBm"},
1527   { 57, "-58dBm"},
1528   { 58, "-57dBm"},
1529   { 59, "-56dBm"},
1530   { 60, "-55dBm"},
1531   { 61, "-54dBm"},
1532   { 62, "-53dBm"},
1533   { 63, "-52dBm"},
1534   { 64, "-51dBm"},
1535   { 65, "-50dBm"},
1536   { 66, "-49dBm"},
1537   { 67, "-48dBm"},
1538   { 68, "-47dBm"},
1539   { 69, "-46dBm"},
1540   { 70, "-45dBm"},
1541   { 71, "-44dBm"},
1542   { 72, "-43dBm"},
1543   { 73, "-42dBm"},
1544   { 74, "-41dBm"},
1545   { 75, "-40dBm"},
1546   { 76, "-39dBm"},
1547   { 77, "-38dBm"},
1548   { 78, "-37dBm"},
1549   { 79, "-36dBm"},
1550   { 80, "-35dBm"},
1551   { 81, "-34dBm"},
1552   { 82, "-33dBm"},
1553   { 83, "-32dBm"},
1554   { 84, "-31dBm"},
1555   { 85, "-30dBm"},
1556   { 86, "-29dBm"},
1557   { 87, "-28dBm"},
1558   { 88, "-27dBm"},
1559   { 89, "-26dBm"},
1560   { 90, "-25dBm"},
1561   { 91, "-24dBm"},
1562   {  0, NULL}
1563 };
1564 static value_string_ext lte_rrc_thresholdUTRA_RSCP_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_thresholdUTRA_RSCP_vals);
1565
1566 static const value_string lte_rrc_RSRP_Range_vals[] = {
1567   {  0, "RSRP < -140dBm"},
1568   {  1, "-140dBm <= RSRP < -139dBm"},
1569   {  2, "-139dBm <= RSRP < -138dBm"},
1570   {  3, "-138dBm <= RSRP < -137dBm"},
1571   {  4, "-137dBm <= RSRP < -136dBm"},
1572   {  5, "-136dBm <= RSRP < -135dBm"},
1573   {  6, "-135dBm <= RSRP < -134dBm"},
1574   {  7, "-134dBm <= RSRP < -133dBm"},
1575   {  8, "-133dBm <= RSRP < -132dBm"},
1576   {  9, "-132dBm <= RSRP < -131dBm"},
1577   { 10, "-131dBm <= RSRP < -130dBm"},
1578   { 11, "-130dBm <= RSRP < -129dBm"},
1579   { 12, "-129dBm <= RSRP < -128dBm"},
1580   { 13, "-128dBm <= RSRP < -127dBm"},
1581   { 14, "-127dBm <= RSRP < -126dBm"},
1582   { 15, "-126dBm <= RSRP < -125dBm"},
1583   { 16, "-125dBm <= RSRP < -124dBm"},
1584   { 17, "-124dBm <= RSRP < -123dBm"},
1585   { 18, "-123dBm <= RSRP < -122dBm"},
1586   { 19, "-122dBm <= RSRP < -121dBm"},
1587   { 20, "-121dBm <= RSRP < -120dBm"},
1588   { 21, "-120dBm <= RSRP < -119dBm"},
1589   { 22, "-119dBm <= RSRP < -118dBm"},
1590   { 23, "-118dBm <= RSRP < -117dBm"},
1591   { 24, "-117dBm <= RSRP < -116dBm"},
1592   { 25, "-116dBm <= RSRP < -115dBm"},
1593   { 26, "-115dBm <= RSRP < -114dBm"},
1594   { 27, "-114dBm <= RSRP < -113dBm"},
1595   { 28, "-113dBm <= RSRP < -112dBm"},
1596   { 29, "-112dBm <= RSRP < -111dBm"},
1597   { 30, "-111dBm <= RSRP < -110dBm"},
1598   { 31, "-110dBm <= RSRP < -109dBm"},
1599   { 32, "-109dBm <= RSRP < -108dBm"},
1600   { 33, "-108dBm <= RSRP < -107dBm"},
1601   { 34, "-107dBm <= RSRP < -106dBm"},
1602   { 35, "-106dBm <= RSRP < -105dBm"},
1603   { 36, "-105dBm <= RSRP < -104dBm"},
1604   { 37, "-104dBm <= RSRP < -103dBm"},
1605   { 38, "-103dBm <= RSRP < -102dBm"},
1606   { 39, "-102dBm <= RSRP < -101dBm"},
1607   { 40, "-101dBm <= RSRP < -100dBm"},
1608   { 41, "-100dBm <= RSRP < -99dBm"},
1609   { 42, "-99dBm <= RSRP < -98dBm"},
1610   { 43, "-98dBm <= RSRP < -97dBm"},
1611   { 44, "-97dBm <= RSRP < -96dBm"},
1612   { 45, "-96dBm <= RSRP < -95dBm"},
1613   { 46, "-95dBm <= RSRP < -94dBm"},
1614   { 47, "-94dBm <= RSRP < -93dBm"},
1615   { 48, "-93dBm <= RSRP < -92dBm"},
1616   { 49, "-92dBm <= RSRP < -91dBm"},
1617   { 50, "-91dBm <= RSRP < -90dBm"},
1618   { 51, "-90dBm <= RSRP < -89dBm"},
1619   { 52, "-89dBm <= RSRP < -88dBm"},
1620   { 53, "-88dBm <= RSRP < -87dBm"},
1621   { 54, "-87dBm <= RSRP < -86dBm"},
1622   { 55, "-86dBm <= RSRP < -85dBm"},
1623   { 56, "-85dBm <= RSRP < -84dBm"},
1624   { 57, "-84dBm <= RSRP < -83dBm"},
1625   { 58, "-83dBm <= RSRP < -82dBm"},
1626   { 59, "-82dBm <= RSRP < -81dBm"},
1627   { 60, "-81dBm <= RSRP < -80dBm"},
1628   { 61, "-80dBm <= RSRP < -79dBm"},
1629   { 62, "-79dBm <= RSRP < -78dBm"},
1630   { 63, "-78dBm <= RSRP < -77dBm"},
1631   { 64, "-77dBm <= RSRP < -76dBm"},
1632   { 65, "-76dBm <= RSRP < -75dBm"},
1633   { 66, "-75dBm <= RSRP < -74dBm"},
1634   { 67, "-74dBm <= RSRP < -73dBm"},
1635   { 68, "-73dBm <= RSRP < -72dBm"},
1636   { 69, "-72dBm <= RSRP < -71dBm"},
1637   { 70, "-71dBm <= RSRP < -70dBm"},
1638   { 71, "-70dBm <= RSRP < -69dBm"},
1639   { 72, "-69dBm <= RSRP < -68dBm"},
1640   { 73, "-68dBm <= RSRP < -67dBm"},
1641   { 74, "-67dBm <= RSRP < -66dBm"},
1642   { 75, "-66dBm <= RSRP < -65dBm"},
1643   { 76, "-65dBm <= RSRP < -64dBm"},
1644   { 77, "-64dBm <= RSRP < -63dBm"},
1645   { 78, "-63dBm <= RSRP < -62dBm"},
1646   { 79, "-62dBm <= RSRP < -61dBm"},
1647   { 80, "-61dBm <= RSRP < -60dBm"},
1648   { 81, "-60dBm <= RSRP < -59dBm"},
1649   { 82, "-59dBm <= RSRP < -58dBm"},
1650   { 83, "-58dBm <= RSRP < -57dBm"},
1651   { 84, "-57dBm <= RSRP < -56dBm"},
1652   { 85, "-56dBm <= RSRP < -55dBm"},
1653   { 86, "-55dBm <= RSRP < -54dBm"},
1654   { 87, "-54dBm <= RSRP < -53dBm"},
1655   { 88, "-53dBm <= RSRP < -52dBm"},
1656   { 89, "-52dBm <= RSRP < -51dBm"},
1657   { 90, "-51dBm <= RSRP < -50dBm"},
1658   { 91, "-50dBm <= RSRP < -49dBm"},
1659   { 92, "-49dBm <= RSRP < -48dBm"},
1660   { 93, "-48dBm <= RSRP < -47dBm"},
1661   { 94, "-47dBm <= RSRP < -46dBm"},
1662   { 95, "-46dBm <= RSRP < -45dBm"},
1663   { 96, "-45dBm <= RSRP < -44dBm"},
1664   { 97, "-44dBm <= RSRP"},
1665   {  0, NULL}
1666 };
1667 static value_string_ext lte_rrc_RSRP_Range_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_RSRP_Range_vals);
1668
1669 static const value_string lte_rrc_RSRQ_Range_vals[] = {
1670   {  0, "RSRQ < -19.5dB"},
1671   {  1, "-19.5dB <= RSRQ < -19dB"},
1672   {  2, "-19dB <= RSRQ < -18.5dB"},
1673   {  3, "-18.5dB <= RSRQ < -18dB"},
1674   {  4, "-18dB <= RSRQ < -17.5dB"},
1675   {  5, "-17.5dB <= RSRQ < -17dB"},
1676   {  6, "-17dB <= RSRQ < -16.5dB"},
1677   {  7, "-16.5dB <= RSRQ < -16dB"},
1678   {  8, "-16dB <= RSRQ < -15.5dB"},
1679   {  9, "-15.5dB <= RSRQ < -15dB"},
1680   { 10, "-15dB <= RSRQ < -14.5dB"},
1681   { 11, "-14.5dB <= RSRQ < -14dB"},
1682   { 12, "-14dB <= RSRQ < -13.5dB"},
1683   { 13, "-13.5dB <= RSRQ < -13dB"},
1684   { 14, "-13dB <= RSRQ < -12.5dB"},
1685   { 15, "-12.5dB <= RSRQ < -12dB"},
1686   { 16, "-12dB <= RSRQ < -11.5dB"},
1687   { 17, "-11.5dB <= RSRQ < -11dB"},
1688   { 18, "-11dB <= RSRQ < -10.5dB"},
1689   { 19, "-10.5dB <= RSRQ < -10dB"},
1690   { 20, "-10dB <= RSRQ < -9.5dB"},
1691   { 21, "-9.5dB <= RSRQ < -9dB"},
1692   { 22, "-9dB <= RSRQ < -8.5dB"},
1693   { 23, "-8.5dB <= RSRQ < -8dB"},
1694   { 24, "-8dB <= RSRQ < -7.5dB"},
1695   { 25, "-7.5dB <= RSRQ < -7dB"},
1696   { 26, "-7dB <= RSRQ < -6.5dB"},
1697   { 27, "-6.5dB <= RSRQ < -6dB"},
1698   { 28, "-6dB <= RSRQ < -5.5dB"},
1699   { 29, "-5.5dB <= RSRQ < -5dB"},
1700   { 30, "-5dB <= RSRQ < -4.5dB"},
1701   { 31, "-4.5dB <= RSRQ < -4dB"},
1702   { 32, "-4dB <= RSRQ < -3.5dB"},
1703   { 33, "-3.5dB <= RSRQ < -3dB"},
1704   { 34, "-3dB <= RSRQ"},
1705   {  0, NULL}
1706 };
1707 static value_string_ext lte_rrc_RSRQ_Range_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_RSRQ_Range_vals);
1708
1709 static const true_false_string lte_rrc_duration_val = {
1710   "indefinite",
1711   "single"
1712 };
1713
1714 static const value_string lte_rrc_daylightSavingTime_vals[] = {
1715   { 0, "No adjustment for Daylight Saving Time"},
1716   { 1, "+1 hour adjustment for Daylight Saving Time"},
1717   { 2, "+2 hours adjustment for Daylight Saving Time"},
1718   { 3, "Reserved"},
1719   { 0, NULL},
1720 };
1721
1722 static const value_string lte_rrc_neighCellConfig_vals[] = {
1723   { 0, "Not all neighbour cells have the same MBSFN subframe allocation as serving cell"},
1724   { 1, "No MBSFN subframes are present in all neighbour cells"},
1725   { 2, "The MBSFN subframe allocations of all neighbour cells are identical to or subsets of that in the serving cell"},
1726   { 3, "Different UL/DL allocation in neighbouring cells for TDD compared to the serving cell"},
1727   { 0, NULL},
1728 };
1729
1730 static const value_string lte_rrc_messageIdentifier_vals[] = {
1731   { 0x1100, "ETWS Identifier for earthquake warning message"},
1732   { 0x1101, "ETWS Identifier for tsunami warning message"},
1733   { 0x1102, "ETWS Identifier for earthquake and tsunami combined warning message"},
1734   { 0x1103, "ETWS Identifier for test message"},
1735   { 0x1104, "ETWS Identifier for messages related to other emergency types"},
1736   { 0x1105, "ETWS Identifier for future extension"},
1737   { 0x1106, "ETWS Identifier for future extension"},
1738   { 0x1107, "ETWS Identifier for future extension"},
1739   { 0x1112, "CMAS Identifier for CMAS Presidential Level Alerts"},
1740   { 0x1113, "CMAS Identifier for CMAS Extreme Alerts with Severity of Extreme, Urgency of Immediate, and Certainty of Observed"},
1741   { 0x1114, "CMAS Identifier for CMAS Extreme Alerts with Severity of Extreme, Urgency of Immediate, and Certainty of Likely"},
1742   { 0x1115, "CMAS Identifier for CMAS Severe Alerts with Severity of Extreme, Urgency of Expected, and Certainty of Observed"},
1743   { 0x1116, "CMAS Identifier for CMAS Severe Alerts with Severity of Extreme, Urgency of Expected, and Certainty of Likely"},
1744   { 0x1117, "CMAS Identifier for CMAS Severe Alerts with Severity of Severe, Urgency of Immediate, and Certainty of Observed"},
1745   { 0x1118, "CMAS Identifier for CMAS Severe Alerts with Severity of Severe, Urgency of Immediate, and Certainty of Likely"},
1746   { 0x1119, "CMAS Identifier for CMAS Severe Alerts with Severity of Severe, Urgency of Expected, and Certainty of Observed"},
1747   { 0x111a, "CMAS Identifier for CMAS Severe Alerts with Severity of Severe, Urgency of Expected, and Certainty of Likely"},
1748   { 0x111b, "CMAS Identifier for Child Abduction Emergency (or Amber Alert)"},
1749   { 0x111c, "CMAS Identifier for the Required Monthly Test"},
1750   { 0x111d, "CMAS Identifier for CMAS Exercise"},
1751   { 0x111e, "CMAS Identifier for operator defined use"},
1752   { 0x111f, "CMAS Identifier for CMAS Presidential Level Alerts for additional languages"},
1753   { 0x1120, "CMAS Identifier for CMAS Extreme Alerts with Severity of Extreme, Urgency of Immediate, and Certainty of Observed for additional languages"},
1754   { 0x1121, "CMAS Identifier for CMAS Extreme Alerts with Severity of Extreme, Urgency of Immediate, and Certainty of Likely for additional languages"},
1755   { 0x1122, "CMAS Identifier for CMAS Severe Alerts with Severity of Extreme, Urgency of Expected, and Certainty of Observed for additional languages"},
1756   { 0x1123, "CMAS Identifier for CMAS Severe Alerts with Severity of Extreme, Urgency of Expected, and Certainty of Likely for additional languages"},
1757   { 0x1124, "CMAS Identifier for CMAS Severe Alerts with Severity of Severe, Urgency of Immediate, and Certainty of Observed for additional languages"},
1758   { 0x1125, "CMAS Identifier for CMAS Severe Alerts with Severity of Severe, Urgency of Immediate, and Certainty of Likely for additional languages"},
1759   { 0x1126, "CMAS Identifier for CMAS Severe Alerts with Severity of Severe, Urgency of Expected, and Certainty of Observed for additional languages"},
1760   { 0x1127, "CMAS Identifier for CMAS Severe Alerts with Severity of Severe, Urgency of Expected, and Certainty of Likely for additional languages"},
1761   { 0x1128, "CMAS Identifier for Child Abduction Emergency (or Amber Alert) for additional languages"},
1762   { 0x1129, "CMAS Identifier for the Required Monthly Test for additional languages"},
1763   { 0x112a, "CMAS Identifier for CMAS Exercise for additional languages"},
1764   { 0x112b, "CMAS Identifier for operator defined use for additional languages"},
1765   {      0, NULL},
1766 };
1767 static value_string_ext lte_rrc_messageIdentifier_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_messageIdentifier_vals);
1768
1769 static const value_string lte_rrc_serialNumber_gs_vals[] = {
1770   { 0, "Display mode immediate, cell wide"},
1771   { 1, "Display mode normal, PLMN wide"},
1772   { 2, "Display mode normal, tracking area wide"},
1773   { 3, "Display mode normal, cell wide"},
1774   { 0, NULL},
1775 };
1776
1777 static const value_string lte_rrc_warningType_vals[] = {
1778   { 0, "Earthquake"},
1779   { 1, "Tsunami"},
1780   { 2, "Earthquake and Tsunami"},
1781   { 3, "Test"},
1782   { 4, "Other"},
1783   { 0, NULL},
1784 };
1785
1786 static void
1787 lte_rrc_localTimeOffset_fmt(gchar *s, guint32 v)
1788 {
1789   gint32 time_offset = (gint32) v;
1790
1791   g_snprintf(s, ITEM_LABEL_LENGTH, "UTC time %c %dhr %dmin (%d)",
1792              (time_offset < 0) ? '-':'+', abs(time_offset) >> 2,
1793              (abs(time_offset) & 0x03) * 15, time_offset);
1794 }
1795
1796 static void
1797 dissect_lte_rrc_warningMessageSegment(tvbuff_t *warning_msg_seg_tvb, proto_tree *tree, packet_info *pinfo, guint8 dataCodingScheme)
1798 {
1799   guint32 offset;
1800   guint8 nb_of_pages, length, *str;
1801   proto_item *ti;
1802   tvbuff_t *cb_data_page_tvb, *cb_data_tvb;
1803   int i;
1804
1805   nb_of_pages = tvb_get_guint8(warning_msg_seg_tvb, 0);
1806   ti = proto_tree_add_uint(tree, hf_lte_rrc_warningMessageSegment_nb_pages, warning_msg_seg_tvb, 0, 1, nb_of_pages);
1807   if (nb_of_pages > 15) {
1808     expert_add_info_format_text(pinfo, ti, &ei_lte_rrc_number_pages_le15,
1809                            "Number of pages should be <=15 (found %u)", nb_of_pages);
1810     nb_of_pages = 15;
1811   }
1812   for (i = 0, offset = 1; i < nb_of_pages; i++) {
1813     length = tvb_get_guint8(warning_msg_seg_tvb, offset+82);
1814     cb_data_page_tvb = tvb_new_subset(warning_msg_seg_tvb, offset, length, length);
1815     cb_data_tvb = dissect_cbs_data(dataCodingScheme, cb_data_page_tvb, tree, pinfo, 0);
1816     if (cb_data_tvb) {
1817       str = tvb_get_ephemeral_string(cb_data_tvb, 0, tvb_length(cb_data_tvb));
1818       proto_tree_add_string_format(tree, hf_lte_rrc_warningMessageSegment_decoded_page, warning_msg_seg_tvb, offset, 83,
1819                                    str, "Decoded Page %u: %s", i+1, str);
1820     }
1821     offset += 83;
1822   }
1823 }
1824
1825 static void
1826 dissect_lte_rrc_featureGroupIndicators(tvbuff_t *featureGroupIndicators_tvb, asn1_ctx_t *actx)
1827 {
1828   proto_tree *subtree;
1829
1830   subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_featureGroupIndicators);
1831   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_1, featureGroupIndicators_tvb, 0, 1, ENC_BIG_ENDIAN);
1832   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_2, featureGroupIndicators_tvb, 1, 1, ENC_BIG_ENDIAN);
1833   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_3, featureGroupIndicators_tvb, 2, 1, ENC_BIG_ENDIAN);
1834   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_4, featureGroupIndicators_tvb, 3, 1, ENC_BIG_ENDIAN);
1835   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_5, featureGroupIndicators_tvb, 4, 1, ENC_BIG_ENDIAN);
1836   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_6, featureGroupIndicators_tvb, 5, 1, ENC_BIG_ENDIAN);
1837   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_7, featureGroupIndicators_tvb, 6, 1, ENC_BIG_ENDIAN);
1838   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_8, featureGroupIndicators_tvb, 7, 1, ENC_BIG_ENDIAN);
1839   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_9, featureGroupIndicators_tvb, 8, 1, ENC_BIG_ENDIAN);
1840   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_10, featureGroupIndicators_tvb, 9, 1, ENC_BIG_ENDIAN);
1841   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_11, featureGroupIndicators_tvb, 10, 1, ENC_BIG_ENDIAN);
1842   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_12, featureGroupIndicators_tvb, 11, 1, ENC_BIG_ENDIAN);
1843   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_13, featureGroupIndicators_tvb, 12, 1, ENC_BIG_ENDIAN);
1844   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_14, featureGroupIndicators_tvb, 13, 1, ENC_BIG_ENDIAN);
1845   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_15, featureGroupIndicators_tvb, 14, 1, ENC_BIG_ENDIAN);
1846   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_16, featureGroupIndicators_tvb, 15, 1, ENC_BIG_ENDIAN);
1847   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_17, featureGroupIndicators_tvb, 16, 1, ENC_BIG_ENDIAN);
1848   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_18, featureGroupIndicators_tvb, 17, 1, ENC_BIG_ENDIAN);
1849   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_19, featureGroupIndicators_tvb, 18, 1, ENC_BIG_ENDIAN);
1850   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_20, featureGroupIndicators_tvb, 19, 1, ENC_BIG_ENDIAN);
1851   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_21, featureGroupIndicators_tvb, 20, 1, ENC_BIG_ENDIAN);
1852   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_22, featureGroupIndicators_tvb, 21, 1, ENC_BIG_ENDIAN);
1853   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_23, featureGroupIndicators_tvb, 22, 1, ENC_BIG_ENDIAN);
1854   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_24, featureGroupIndicators_tvb, 23, 1, ENC_BIG_ENDIAN);
1855   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_25, featureGroupIndicators_tvb, 24, 1, ENC_BIG_ENDIAN);
1856   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_26, featureGroupIndicators_tvb, 25, 1, ENC_BIG_ENDIAN);
1857   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_27, featureGroupIndicators_tvb, 26, 1, ENC_BIG_ENDIAN);
1858   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_28, featureGroupIndicators_tvb, 27, 1, ENC_BIG_ENDIAN);
1859   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_29, featureGroupIndicators_tvb, 28, 1, ENC_BIG_ENDIAN);
1860   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_30, featureGroupIndicators_tvb, 29, 1, ENC_BIG_ENDIAN);
1861   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_31, featureGroupIndicators_tvb, 30, 1, ENC_BIG_ENDIAN);
1862   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_32, featureGroupIndicators_tvb, 31, 1, ENC_BIG_ENDIAN);
1863 }
1864
1865 static void
1866 dissect_lte_rrc_featureGroupIndRel10(tvbuff_t *featureGroupIndRel10_tvb, asn1_ctx_t *actx)
1867 {
1868   proto_tree *subtree;
1869
1870   subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_featureGroupIndRel10);
1871   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_101, featureGroupIndRel10_tvb, 0, 1, ENC_BIG_ENDIAN);
1872   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_102, featureGroupIndRel10_tvb, 1, 1, ENC_BIG_ENDIAN);
1873   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_103, featureGroupIndRel10_tvb, 2, 1, ENC_BIG_ENDIAN);
1874   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_104, featureGroupIndRel10_tvb, 3, 1, ENC_BIG_ENDIAN);
1875   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_105, featureGroupIndRel10_tvb, 4, 1, ENC_BIG_ENDIAN);
1876   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_106, featureGroupIndRel10_tvb, 5, 1, ENC_BIG_ENDIAN);
1877   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_107, featureGroupIndRel10_tvb, 6, 1, ENC_BIG_ENDIAN);
1878   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_108, featureGroupIndRel10_tvb, 7, 1, ENC_BIG_ENDIAN);
1879   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_109, featureGroupIndRel10_tvb, 8, 1, ENC_BIG_ENDIAN);
1880   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_110, featureGroupIndRel10_tvb, 9, 1, ENC_BIG_ENDIAN);
1881   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_111, featureGroupIndRel10_tvb, 10, 1, ENC_BIG_ENDIAN);
1882   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_112, featureGroupIndRel10_tvb, 11, 1, ENC_BIG_ENDIAN);
1883   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_113, featureGroupIndRel10_tvb, 12, 1, ENC_BIG_ENDIAN);
1884   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_114, featureGroupIndRel10_tvb, 13, 1, ENC_BIG_ENDIAN);
1885   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_115, featureGroupIndRel10_tvb, 14, 1, ENC_BIG_ENDIAN);
1886   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_116, featureGroupIndRel10_tvb, 15, 1, ENC_BIG_ENDIAN);
1887   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_117, featureGroupIndRel10_tvb, 16, 1, ENC_BIG_ENDIAN);
1888   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_118, featureGroupIndRel10_tvb, 17, 1, ENC_BIG_ENDIAN);
1889   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_119, featureGroupIndRel10_tvb, 18, 1, ENC_BIG_ENDIAN);
1890   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_120, featureGroupIndRel10_tvb, 19, 1, ENC_BIG_ENDIAN);
1891   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_121, featureGroupIndRel10_tvb, 20, 1, ENC_BIG_ENDIAN);
1892   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_122, featureGroupIndRel10_tvb, 21, 1, ENC_BIG_ENDIAN);
1893   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_123, featureGroupIndRel10_tvb, 22, 1, ENC_BIG_ENDIAN);
1894   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_124, featureGroupIndRel10_tvb, 23, 1, ENC_BIG_ENDIAN);
1895   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_125, featureGroupIndRel10_tvb, 24, 1, ENC_BIG_ENDIAN);
1896   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_126, featureGroupIndRel10_tvb, 25, 1, ENC_BIG_ENDIAN);
1897   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_127, featureGroupIndRel10_tvb, 26, 1, ENC_BIG_ENDIAN);
1898   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_128, featureGroupIndRel10_tvb, 27, 1, ENC_BIG_ENDIAN);
1899   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_129, featureGroupIndRel10_tvb, 28, 1, ENC_BIG_ENDIAN);
1900   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_130, featureGroupIndRel10_tvb, 29, 1, ENC_BIG_ENDIAN);
1901   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_131, featureGroupIndRel10_tvb, 30, 1, ENC_BIG_ENDIAN);
1902   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_132, featureGroupIndRel10_tvb, 31, 1, ENC_BIG_ENDIAN);
1903 }
1904
1905 static void
1906 dissect_lte_rrc_featureGroupIndRel9Add(tvbuff_t *featureGroupIndRel9Add_tvb, asn1_ctx_t *actx)
1907 {
1908   proto_tree *subtree;
1909
1910   subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_featureGroupIndRel9Add);
1911   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_33, featureGroupIndRel9Add_tvb, 0, 1, ENC_BIG_ENDIAN);
1912   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_34, featureGroupIndRel9Add_tvb, 1, 1, ENC_BIG_ENDIAN);
1913   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_35, featureGroupIndRel9Add_tvb, 2, 1, ENC_BIG_ENDIAN);
1914   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_36, featureGroupIndRel9Add_tvb, 3, 1, ENC_BIG_ENDIAN);
1915   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_37, featureGroupIndRel9Add_tvb, 4, 1, ENC_BIG_ENDIAN);
1916   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_38, featureGroupIndRel9Add_tvb, 5, 1, ENC_BIG_ENDIAN);
1917   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_39, featureGroupIndRel9Add_tvb, 6, 1, ENC_BIG_ENDIAN);
1918   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_40, featureGroupIndRel9Add_tvb, 7, 1, ENC_BIG_ENDIAN);
1919   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_41, featureGroupIndRel9Add_tvb, 8, 1, ENC_BIG_ENDIAN);
1920   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_42, featureGroupIndRel9Add_tvb, 9, 1, ENC_BIG_ENDIAN);
1921   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_43, featureGroupIndRel9Add_tvb, 10, 1, ENC_BIG_ENDIAN);
1922   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_44, featureGroupIndRel9Add_tvb, 11, 1, ENC_BIG_ENDIAN);
1923   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_45, featureGroupIndRel9Add_tvb, 12, 1, ENC_BIG_ENDIAN);
1924   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_46, featureGroupIndRel9Add_tvb, 13, 1, ENC_BIG_ENDIAN);
1925   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_47, featureGroupIndRel9Add_tvb, 14, 1, ENC_BIG_ENDIAN);
1926   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_48, featureGroupIndRel9Add_tvb, 15, 1, ENC_BIG_ENDIAN);
1927   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_49, featureGroupIndRel9Add_tvb, 16, 1, ENC_BIG_ENDIAN);
1928   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_50, featureGroupIndRel9Add_tvb, 17, 1, ENC_BIG_ENDIAN);
1929   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_51, featureGroupIndRel9Add_tvb, 18, 1, ENC_BIG_ENDIAN);
1930   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_52, featureGroupIndRel9Add_tvb, 19, 1, ENC_BIG_ENDIAN);
1931   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_53, featureGroupIndRel9Add_tvb, 20, 1, ENC_BIG_ENDIAN);
1932   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_54, featureGroupIndRel9Add_tvb, 21, 1, ENC_BIG_ENDIAN);
1933   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_55, featureGroupIndRel9Add_tvb, 22, 1, ENC_BIG_ENDIAN);
1934   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_56, featureGroupIndRel9Add_tvb, 23, 1, ENC_BIG_ENDIAN);
1935   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_57, featureGroupIndRel9Add_tvb, 24, 1, ENC_BIG_ENDIAN);
1936   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_58, featureGroupIndRel9Add_tvb, 25, 1, ENC_BIG_ENDIAN);
1937   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_59, featureGroupIndRel9Add_tvb, 26, 1, ENC_BIG_ENDIAN);
1938   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_60, featureGroupIndRel9Add_tvb, 27, 1, ENC_BIG_ENDIAN);
1939   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_61, featureGroupIndRel9Add_tvb, 28, 1, ENC_BIG_ENDIAN);
1940   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_62, featureGroupIndRel9Add_tvb, 29, 1, ENC_BIG_ENDIAN);
1941   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_63, featureGroupIndRel9Add_tvb, 30, 1, ENC_BIG_ENDIAN);
1942   proto_tree_add_bits_item(subtree, hf_lte_rrc_eutra_cap_feat_group_ind_64, featureGroupIndRel9Add_tvb, 31, 1, ENC_BIG_ENDIAN);
1943 }
1944
1945 #include "packet-lte-rrc-fn.c"
1946
1947 static void
1948 dissect_lte_rrc_DL_CCCH(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
1949 {
1950   proto_item *ti;
1951   proto_tree *lte_rrc_tree;
1952
1953   col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC DL_CCCH");
1954   col_clear(pinfo->cinfo, COL_INFO);
1955
1956   if (tree) {
1957     ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
1958     lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
1959     dissect_DL_CCCH_Message_PDU(tvb, pinfo, lte_rrc_tree, NULL);
1960   }
1961 }
1962
1963 static void
1964 dissect_lte_rrc_DL_DCCH(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
1965 {
1966   proto_item *ti;
1967   proto_tree *lte_rrc_tree;
1968
1969   col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC DL_DCCH");
1970   col_clear(pinfo->cinfo, COL_INFO);
1971
1972   ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
1973   lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
1974   dissect_DL_DCCH_Message_PDU(tvb, pinfo, lte_rrc_tree, NULL);
1975 }
1976
1977
1978 static void
1979 dissect_lte_rrc_UL_CCCH(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
1980 {
1981   proto_item *ti;
1982   proto_tree *lte_rrc_tree;
1983
1984   col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC UL_CCCH");
1985   col_clear(pinfo->cinfo, COL_INFO);
1986
1987   if (tree) {
1988     ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
1989     lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
1990     dissect_UL_CCCH_Message_PDU(tvb, pinfo, lte_rrc_tree, NULL);
1991   }
1992 }
1993
1994 static void
1995 dissect_lte_rrc_UL_DCCH(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
1996 {
1997   proto_item *ti;
1998   proto_tree *lte_rrc_tree;
1999
2000   col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC UL_DCCH");
2001   col_clear(pinfo->cinfo, COL_INFO);
2002
2003   if (tree) {
2004     ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
2005     lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
2006     dissect_UL_DCCH_Message_PDU(tvb, pinfo, lte_rrc_tree, NULL);
2007   }
2008 }
2009
2010 static void
2011 dissect_lte_rrc_BCCH_BCH(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
2012 {
2013   proto_item *ti;
2014   proto_tree *lte_rrc_tree;
2015
2016   col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC BCCH_BCH");
2017   col_clear(pinfo->cinfo, COL_INFO);
2018
2019   if (tree) {
2020     ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
2021     lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
2022     dissect_BCCH_BCH_Message_PDU(tvb, pinfo, lte_rrc_tree, NULL);
2023   }
2024 }
2025
2026 static void
2027 dissect_lte_rrc_BCCH_DL_SCH(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
2028 {
2029   proto_item *ti;
2030   proto_tree *lte_rrc_tree;
2031
2032   col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC DL_SCH");
2033   col_clear(pinfo->cinfo, COL_INFO);
2034
2035   /* Dissect regardless of whether tree is set, so that we can track whether
2036      systemInfoValue has changed */
2037   ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
2038   lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
2039   dissect_BCCH_DL_SCH_Message_PDU(tvb, pinfo, lte_rrc_tree, NULL);
2040 }
2041
2042 static void
2043 dissect_lte_rrc_PCCH(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
2044 {
2045   proto_item *ti;
2046   proto_tree *lte_rrc_tree;
2047
2048   col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC PCCH");
2049   col_clear(pinfo->cinfo, COL_INFO);
2050
2051   if (tree) {
2052     ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
2053     lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
2054     dissect_PCCH_Message_PDU(tvb, pinfo, lte_rrc_tree, NULL);
2055   }
2056 }
2057
2058 static void
2059 dissect_lte_rrc_MCCH(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
2060 {
2061   proto_item *ti;
2062   proto_tree *lte_rrc_tree;
2063
2064   col_set_str(pinfo->cinfo, COL_PROTOCOL, "LTE RRC MCCH");
2065   col_clear(pinfo->cinfo, COL_INFO);
2066
2067   if (tree) {
2068     ti = proto_tree_add_item(tree, proto_lte_rrc, tvb, 0, -1, ENC_NA);
2069     lte_rrc_tree = proto_item_add_subtree(ti, ett_lte_rrc);
2070     dissect_MCCH_Message_PDU(tvb, pinfo, lte_rrc_tree, NULL);
2071   }
2072 }
2073
2074 static void
2075 lte_rrc_init_protocol(void)
2076 {
2077   if (lte_rrc_etws_cmas_dcs_hash) {
2078     g_hash_table_destroy(lte_rrc_etws_cmas_dcs_hash);
2079   }
2080   if (lte_rrc_system_info_value_changed_hash) {
2081     g_hash_table_destroy(lte_rrc_system_info_value_changed_hash);
2082   }
2083
2084   lte_rrc_etws_cmas_dcs_hash = g_hash_table_new(g_direct_hash, g_direct_equal);
2085   lte_rrc_system_info_value_changed_hash = g_hash_table_new(g_direct_hash, g_direct_equal);
2086 }
2087
2088 /*--- proto_register_rrc -------------------------------------------*/
2089 void proto_register_lte_rrc(void) {
2090
2091   /* List of fields */
2092   static hf_register_info hf[] = {
2093
2094 #include "packet-lte-rrc-hfarr.c"
2095
2096     { &hf_lte_rrc_eutra_cap_feat_group_ind_1,
2097       { "Indicator 1", "lte-rrc.eutra_cap_feat_group_ind_1",
2098         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_1_val), 0,
2099         "EUTRA Feature Group Indicator 1", HFILL }},
2100     { &hf_lte_rrc_eutra_cap_feat_group_ind_2,
2101       { "Indicator 2", "lte-rrc.eutra_cap_feat_group_ind_2",
2102         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_2_val), 0,
2103         "EUTRA Feature Group Indicator 2", HFILL }},
2104     { &hf_lte_rrc_eutra_cap_feat_group_ind_3,
2105       { "Indicator 3", "lte-rrc.eutra_cap_feat_group_ind_3",
2106         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_3_val), 0,
2107         "EUTRA Feature Group Indicator 3", HFILL }},
2108     { &hf_lte_rrc_eutra_cap_feat_group_ind_4,
2109       { "Indicator 4", "lte-rrc.eutra_cap_feat_group_ind_4",
2110         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_4_val), 0,
2111         "EUTRA Feature Group Indicator 4", HFILL }},
2112     { &hf_lte_rrc_eutra_cap_feat_group_ind_5,
2113       { "Indicator 5", "lte-rrc.eutra_cap_feat_group_ind_5",
2114         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_5_val), 0,
2115         "EUTRA Feature Group Indicator 5", HFILL }},
2116     { &hf_lte_rrc_eutra_cap_feat_group_ind_6,
2117       { "Indicator 6", "lte-rrc.eutra_cap_feat_group_ind_6",
2118         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_6_val), 0,
2119         "EUTRA Feature Group Indicator 6", HFILL }},
2120     { &hf_lte_rrc_eutra_cap_feat_group_ind_7,
2121       { "Indicator 7", "lte-rrc.eutra_cap_feat_group_ind_7",
2122         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_7_val), 0,
2123         "EUTRA Feature Group Indicator 7", HFILL }},
2124     { &hf_lte_rrc_eutra_cap_feat_group_ind_8,
2125       { "Indicator 8", "lte-rrc.eutra_cap_feat_group_ind_8",
2126         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_8_val), 0,
2127         "EUTRA Feature Group Indicator 8", HFILL }},
2128     { &hf_lte_rrc_eutra_cap_feat_group_ind_9,
2129       { "Indicator 9", "lte-rrc.eutra_cap_feat_group_ind_9",
2130         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_9_val), 0,
2131         "EUTRA Feature Group Indicator 9", HFILL }},
2132     { &hf_lte_rrc_eutra_cap_feat_group_ind_10,
2133       { "Indicator 10", "lte-rrc.eutra_cap_feat_group_ind_10",
2134         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_10_val), 0,
2135         "EUTRA Feature Group Indicator 10", HFILL }},
2136     { &hf_lte_rrc_eutra_cap_feat_group_ind_11,
2137       { "Indicator 11", "lte-rrc.eutra_cap_feat_group_ind_11",
2138         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_11_val), 0,
2139         "EUTRA Feature Group Indicator 11", HFILL }},
2140     { &hf_lte_rrc_eutra_cap_feat_group_ind_12,
2141       { "Indicator 12", "lte-rrc.eutra_cap_feat_group_ind_12",
2142         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_12_val), 0,
2143         "EUTRA Feature Group Indicator 12", HFILL }},
2144     { &hf_lte_rrc_eutra_cap_feat_group_ind_13,
2145       { "Indicator 13", "lte-rrc.eutra_cap_feat_group_ind_13",
2146         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_13_val), 0,
2147         "EUTRA Feature Group Indicator", HFILL }},
2148     { &hf_lte_rrc_eutra_cap_feat_group_ind_14,
2149       { "Indicator 14", "lte-rrc.eutra_cap_feat_group_ind_14",
2150         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_14_val), 0,
2151         "EUTRA Feature Group Indicator 14", HFILL }},
2152     { &hf_lte_rrc_eutra_cap_feat_group_ind_15,
2153       { "Indicator 15", "lte-rrc.eutra_cap_feat_group_ind_15",
2154         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_15_val), 0,
2155         "EUTRA Feature Group Indicator 15", HFILL }},
2156     { &hf_lte_rrc_eutra_cap_feat_group_ind_16,
2157       { "Indicator 16", "lte-rrc.eutra_cap_feat_group_ind_16",
2158         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_16_val), 0,
2159         "EUTRA Feature Group Indicator 16", HFILL }},
2160     { &hf_lte_rrc_eutra_cap_feat_group_ind_17,
2161       { "Indicator 17", "lte-rrc.eutra_cap_feat_group_ind_17",
2162         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_17_val), 0,
2163         "EUTRA Feature Group Indicator 17", HFILL }},
2164     { &hf_lte_rrc_eutra_cap_feat_group_ind_18,
2165       { "Indicator 18", "lte-rrc.eutra_cap_feat_group_ind_18",
2166         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_18_val), 0,
2167         "EUTRA Feature Group Indicator 18", HFILL }},
2168     { &hf_lte_rrc_eutra_cap_feat_group_ind_19,
2169       { "Indicator 19", "lte-rrc.eutra_cap_feat_group_ind_19",
2170         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_19_val), 0,
2171         "EUTRA Feature Group Indicator 19", HFILL }},
2172     { &hf_lte_rrc_eutra_cap_feat_group_ind_20,
2173       { "Indicator 20", "lte-rrc.eutra_cap_feat_group_ind_20",
2174         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_20_val), 0,
2175         "EUTRA Feature Group Indicator 20", HFILL }},
2176     { &hf_lte_rrc_eutra_cap_feat_group_ind_21,
2177       { "Indicator 21", "lte-rrc.eutra_cap_feat_group_ind_21",
2178         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_21_val), 0,
2179         "EUTRA Feature Group Indicator 21", HFILL }},
2180     { &hf_lte_rrc_eutra_cap_feat_group_ind_22,
2181       { "Indicator 22", "lte-rrc.eutra_cap_feat_group_ind_22",
2182         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_22_val), 0,
2183         "EUTRA Feature Group Indicator 22", HFILL }},
2184     { &hf_lte_rrc_eutra_cap_feat_group_ind_23,
2185       { "Indicator 23", "lte-rrc.eutra_cap_feat_group_ind_23",
2186         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_23_val), 0,
2187         "EUTRA Feature Group Indicator 23", HFILL }},
2188     { &hf_lte_rrc_eutra_cap_feat_group_ind_24,
2189       { "Indicator 24", "lte-rrc.eutra_cap_feat_group_ind_24",
2190         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_24_val), 0,
2191         "EUTRA Feature Group Indicator 24", HFILL }},
2192     { &hf_lte_rrc_eutra_cap_feat_group_ind_25,
2193       { "Indicator 25", "lte-rrc.eutra_cap_feat_group_ind_25",
2194         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_25_val), 0,
2195         "EUTRA Feature Group Indicator 25", HFILL }},
2196     { &hf_lte_rrc_eutra_cap_feat_group_ind_26,
2197       { "Indicator 26", "lte-rrc.eutra_cap_feat_group_ind_26",
2198         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_26_val), 0,
2199         "EUTRA Feature Group Indicator 26", HFILL }},
2200     { &hf_lte_rrc_eutra_cap_feat_group_ind_27,
2201       { "Indicator 27", "lte-rrc.eutra_cap_feat_group_ind_27",
2202         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_27_val), 0,
2203         "EUTRA Feature Group Indicator 27", HFILL }},
2204     { &hf_lte_rrc_eutra_cap_feat_group_ind_28,
2205       { "Indicator 28", "lte-rrc.eutra_cap_feat_group_ind_28",
2206         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_28_val), 0,
2207         "EUTRA Feature Group Indicator 28", HFILL }},
2208     { &hf_lte_rrc_eutra_cap_feat_group_ind_29,
2209       { "Indicator 29", "lte-rrc.eutra_cap_feat_group_ind_29",
2210         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_29_val), 0,
2211         "EUTRA Feature Group Indicator 29", HFILL }},
2212     { &hf_lte_rrc_eutra_cap_feat_group_ind_30,
2213       { "Indicator 30", "lte-rrc.eutra_cap_feat_group_ind_30",
2214         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_30_val), 0,
2215         "EUTRA Feature Group Indicator 30", HFILL }},
2216     { &hf_lte_rrc_eutra_cap_feat_group_ind_31,
2217       { "Indicator 31", "lte-rrc.eutra_cap_feat_group_ind_31",
2218         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_31_val), 0,
2219         "EUTRA Feature Group Indicator 31", HFILL }},
2220     { &hf_lte_rrc_eutra_cap_feat_group_ind_32,
2221       { "Indicator 32", "lte-rrc.eutra_cap_feat_group_ind_32",
2222         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_32_val), 0,
2223         "EUTRA Feature Group Indicator 32", HFILL }},
2224     { &hf_lte_rrc_eutra_cap_feat_group_ind_33,
2225       { "Indicator 33", "lte-rrc.eutra_cap_feat_group_ind_33",
2226         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_33_val), 0,
2227         "EUTRA Feature Group Indicator 33", HFILL }},
2228     { &hf_lte_rrc_eutra_cap_feat_group_ind_34,
2229       { "Indicator 34", "lte-rrc.eutra_cap_feat_group_ind_34",
2230         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_34_val), 0,
2231         "EUTRA Feature Group Indicator 34", HFILL }},
2232     { &hf_lte_rrc_eutra_cap_feat_group_ind_35,
2233       { "Indicator 35", "lte-rrc.eutra_cap_feat_group_ind_35",
2234         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_35_val), 0,
2235         "EUTRA Feature Group Indicator 35", HFILL }},
2236     { &hf_lte_rrc_eutra_cap_feat_group_ind_36,
2237       { "Indicator 36", "lte-rrc.eutra_cap_feat_group_ind_36",
2238         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_36_val), 0,
2239         "EUTRA Feature Group Indicator 36", HFILL }},
2240     { &hf_lte_rrc_eutra_cap_feat_group_ind_37,
2241       { "Indicator 37", "lte-rrc.eutra_cap_feat_group_ind_37",
2242         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_37_val), 0,
2243         "EUTRA Feature Group Indicator 37", HFILL }},
2244     { &hf_lte_rrc_eutra_cap_feat_group_ind_38,
2245       { "Indicator 38", "lte-rrc.eutra_cap_feat_group_ind_38",
2246         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_38_val), 0,
2247         "EUTRA Feature Group Indicator 38", HFILL }},
2248     { &hf_lte_rrc_eutra_cap_feat_group_ind_39,
2249       { "Indicator 39", "lte-rrc.eutra_cap_feat_group_ind_39",
2250         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_39_val), 0,
2251         "EUTRA Feature Group Indicator 39", HFILL }},
2252     { &hf_lte_rrc_eutra_cap_feat_group_ind_40,
2253       { "Indicator 40", "lte-rrc.eutra_cap_feat_group_ind_40",
2254         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_40_val), 0,
2255         "EUTRA Feature Group Indicator 40", HFILL }},
2256     { &hf_lte_rrc_eutra_cap_feat_group_ind_41,
2257       { "Indicator 41", "lte-rrc.eutra_cap_feat_group_ind_41",
2258         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_41_val), 0,
2259         "EUTRA Feature Group Indicator 41", HFILL }},
2260     { &hf_lte_rrc_eutra_cap_feat_group_ind_42,
2261       { "Indicator 42", "lte-rrc.eutra_cap_feat_group_ind_42",
2262         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_42_val), 0,
2263         "EUTRA Feature Group Indicator 42", HFILL }},
2264     { &hf_lte_rrc_eutra_cap_feat_group_ind_43,
2265       { "Indicator 43", "lte-rrc.eutra_cap_feat_group_ind_43",
2266         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_43_val), 0,
2267         "EUTRA Feature Group Indicator 43", HFILL }},
2268     { &hf_lte_rrc_eutra_cap_feat_group_ind_44,
2269       { "Indicator 44", "lte-rrc.eutra_cap_feat_group_ind_44",
2270         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_44_val), 0,
2271         "EUTRA Feature Group Indicator 44", HFILL }},
2272     { &hf_lte_rrc_eutra_cap_feat_group_ind_45,
2273       { "Indicator 45", "lte-rrc.eutra_cap_feat_group_ind_45",
2274         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_45_val), 0,
2275         "EUTRA Feature Group Indicator 45", HFILL }},
2276     { &hf_lte_rrc_eutra_cap_feat_group_ind_46,
2277       { "Indicator 46", "lte-rrc.eutra_cap_feat_group_ind_46",
2278         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_46_val), 0,
2279         "EUTRA Feature Group Indicator 46", HFILL }},
2280     { &hf_lte_rrc_eutra_cap_feat_group_ind_47,
2281       { "Indicator 47", "lte-rrc.eutra_cap_feat_group_ind_47",
2282         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_47_val), 0,
2283         "EUTRA Feature Group Indicator 47", HFILL }},
2284     { &hf_lte_rrc_eutra_cap_feat_group_ind_48,
2285       { "Indicator 48", "lte-rrc.eutra_cap_feat_group_ind_48",
2286         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_48_val), 0,
2287         "EUTRA Feature Group Indicator 48", HFILL }},
2288     { &hf_lte_rrc_eutra_cap_feat_group_ind_49,
2289       { "Indicator 49", "lte-rrc.eutra_cap_feat_group_ind_49",
2290         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_49_val), 0,
2291         "EUTRA Feature Group Indicator 49", HFILL }},
2292     { &hf_lte_rrc_eutra_cap_feat_group_ind_50,
2293       { "Indicator 50", "lte-rrc.eutra_cap_feat_group_ind_50",
2294         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_50_val), 0,
2295         "EUTRA Feature Group Indicator 50", HFILL }},
2296     { &hf_lte_rrc_eutra_cap_feat_group_ind_51,
2297       { "Indicator 51", "lte-rrc.eutra_cap_feat_group_ind_51",
2298         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_51_val), 0,
2299         "EUTRA Feature Group Indicator 51", HFILL }},
2300     { &hf_lte_rrc_eutra_cap_feat_group_ind_52,
2301       { "Indicator 52", "lte-rrc.eutra_cap_feat_group_ind_52",
2302         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_52_val), 0,
2303         "EUTRA Feature Group Indicator 52", HFILL }},
2304     { &hf_lte_rrc_eutra_cap_feat_group_ind_53,
2305       { "Indicator 53", "lte-rrc.eutra_cap_feat_group_ind_53",
2306         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_53_val), 0,
2307         "EUTRA Feature Group Indicator 53", HFILL }},
2308     { &hf_lte_rrc_eutra_cap_feat_group_ind_54,
2309       { "Indicator 54", "lte-rrc.eutra_cap_feat_group_ind_54",
2310         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_54_val), 0,
2311         "EUTRA Feature Group Indicator 54", HFILL }},
2312     { &hf_lte_rrc_eutra_cap_feat_group_ind_55,
2313       { "Indicator 55", "lte-rrc.eutra_cap_feat_group_ind_55",
2314         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_55_val), 0,
2315         "EUTRA Feature Group Indicator 55", HFILL }},
2316     { &hf_lte_rrc_eutra_cap_feat_group_ind_56,
2317       { "Indicator 56", "lte-rrc.eutra_cap_feat_group_ind_56",
2318         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_56_val), 0,
2319         "EUTRA Feature Group Indicator 56", HFILL }},
2320     { &hf_lte_rrc_eutra_cap_feat_group_ind_57,
2321       { "Indicator 57", "lte-rrc.eutra_cap_feat_group_ind_57",
2322         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_57_val), 0,
2323         "EUTRA Feature Group Indicator 57", HFILL }},
2324     { &hf_lte_rrc_eutra_cap_feat_group_ind_58,
2325       { "Indicator 58", "lte-rrc.eutra_cap_feat_group_ind_58",
2326         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_58_val), 0,
2327         "EUTRA Feature Group Indicator 58", HFILL }},
2328     { &hf_lte_rrc_eutra_cap_feat_group_ind_59,
2329       { "Indicator 59", "lte-rrc.eutra_cap_feat_group_ind_59",
2330         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_59_val), 0,
2331         "EUTRA Feature Group Indicator 59", HFILL }},
2332     { &hf_lte_rrc_eutra_cap_feat_group_ind_60,
2333       { "Indicator 60", "lte-rrc.eutra_cap_feat_group_ind_60",
2334         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_60_val), 0,
2335         "EUTRA Feature Group Indicator 60", HFILL }},
2336     { &hf_lte_rrc_eutra_cap_feat_group_ind_61,
2337       { "Indicator 61", "lte-rrc.eutra_cap_feat_group_ind_61",
2338         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_61_val), 0,
2339         "EUTRA Feature Group Indicator 61", HFILL }},
2340     { &hf_lte_rrc_eutra_cap_feat_group_ind_62,
2341       { "Indicator 62", "lte-rrc.eutra_cap_feat_group_ind_62",
2342         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_62_val), 0,
2343         "EUTRA Feature Group Indicator 62", HFILL }},
2344     { &hf_lte_rrc_eutra_cap_feat_group_ind_63,
2345       { "Indicator 63", "lte-rrc.eutra_cap_feat_group_ind_63",
2346         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_63_val), 0,
2347         "EUTRA Feature Group Indicator 63", HFILL }},
2348     { &hf_lte_rrc_eutra_cap_feat_group_ind_64,
2349       { "Indicator 64", "lte-rrc.eutra_cap_feat_group_ind_64",
2350         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_64_val), 0,
2351         "EUTRA Feature Group Indicator 64", HFILL }},
2352     { &hf_lte_rrc_eutra_cap_feat_group_ind_101,
2353       { "Indicator 101", "lte-rrc.eutra_cap_feat_group_ind_101",
2354         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_101_val), 0,
2355         "EUTRA Feature Group Indicator 101", HFILL }},
2356     { &hf_lte_rrc_eutra_cap_feat_group_ind_102,
2357       { "Indicator 102", "lte-rrc.eutra_cap_feat_group_ind_102",
2358         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_102_val), 0,
2359         "EUTRA Feature Group Indicator 102", HFILL }},
2360     { &hf_lte_rrc_eutra_cap_feat_group_ind_103,
2361       { "Indicator 103", "lte-rrc.eutra_cap_feat_group_ind_103",
2362         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_103_val), 0,
2363         "EUTRA Feature Group Indicator 103", HFILL }},
2364     { &hf_lte_rrc_eutra_cap_feat_group_ind_104,
2365       { "Indicator 104", "lte-rrc.eutra_cap_feat_group_ind_104",
2366         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_104_val), 0,
2367         "EUTRA Feature Group Indicator 104", HFILL }},
2368     { &hf_lte_rrc_eutra_cap_feat_group_ind_105,
2369       { "Indicator 105", "lte-rrc.eutra_cap_feat_group_ind_105",
2370         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_105_val), 0,
2371         "EUTRA Feature Group Indicator 105", HFILL }},
2372     { &hf_lte_rrc_eutra_cap_feat_group_ind_106,
2373       { "Indicator 106", "lte-rrc.eutra_cap_feat_group_ind_106",
2374         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_106_val), 0,
2375         "EUTRA Feature Group Indicator 106", HFILL }},
2376     { &hf_lte_rrc_eutra_cap_feat_group_ind_107,
2377       { "Indicator 107", "lte-rrc.eutra_cap_feat_group_ind_107",
2378         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_107_val), 0,
2379         "EUTRA Feature Group Indicator 107", HFILL }},
2380     { &hf_lte_rrc_eutra_cap_feat_group_ind_108,
2381       { "Indicator 108", "lte-rrc.eutra_cap_feat_group_ind_108",
2382         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_108_val), 0,
2383         "EUTRA Feature Group Indicator 108", HFILL }},
2384     { &hf_lte_rrc_eutra_cap_feat_group_ind_109,
2385       { "Indicator 109", "lte-rrc.eutra_cap_feat_group_ind_109",
2386         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_109_val), 0,
2387         "EUTRA Feature Group Indicator 109", HFILL }},
2388     { &hf_lte_rrc_eutra_cap_feat_group_ind_110,
2389       { "Indicator 110", "lte-rrc.eutra_cap_feat_group_ind_110",
2390         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_110_val), 0,
2391         "EUTRA Feature Group Indicator 110", HFILL }},
2392     { &hf_lte_rrc_eutra_cap_feat_group_ind_111,
2393       { "Indicator 111", "lte-rrc.eutra_cap_feat_group_ind_111",
2394         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_111_val), 0,
2395         "EUTRA Feature Group Indicator 111", HFILL }},
2396     { &hf_lte_rrc_eutra_cap_feat_group_ind_112,
2397       { "Indicator 112", "lte-rrc.eutra_cap_feat_group_ind_112",
2398         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_112_val), 0,
2399         "EUTRA Feature Group Indicator 112", HFILL }},
2400     { &hf_lte_rrc_eutra_cap_feat_group_ind_113,
2401       { "Indicator 113", "lte-rrc.eutra_cap_feat_group_ind_113",
2402         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_113_val), 0,
2403         "EUTRA Feature Group Indicator 113", HFILL }},
2404     { &hf_lte_rrc_eutra_cap_feat_group_ind_114,
2405       { "Indicator 114", "lte-rrc.eutra_cap_feat_group_ind_114",
2406         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_114_val), 0,
2407         "EUTRA Feature Group Indicator 114", HFILL }},
2408     { &hf_lte_rrc_eutra_cap_feat_group_ind_115,
2409       { "Indicator 115", "lte-rrc.eutra_cap_feat_group_ind_115",
2410         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_115_val), 0,
2411         "EUTRA Feature Group Indicator 115", HFILL }},
2412     { &hf_lte_rrc_eutra_cap_feat_group_ind_116,
2413       { "Indicator 116", "lte-rrc.eutra_cap_feat_group_ind_116",
2414         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_116_val), 0,
2415         "EUTRA Feature Group Indicator 116", HFILL }},
2416     { &hf_lte_rrc_eutra_cap_feat_group_ind_117,
2417       { "Indicator 117", "lte-rrc.eutra_cap_feat_group_ind_117",
2418         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_117_val), 0,
2419         "EUTRA Feature Group Indicator 117", HFILL }},
2420     { &hf_lte_rrc_eutra_cap_feat_group_ind_118,
2421       { "Indicator 118", "lte-rrc.eutra_cap_feat_group_ind_118",
2422         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_118_val), 0,
2423         "EUTRA Feature Group Indicator 118", HFILL }},
2424     { &hf_lte_rrc_eutra_cap_feat_group_ind_119,
2425       { "Indicator 119", "lte-rrc.eutra_cap_feat_group_ind_119",
2426         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_119_val), 0,
2427         "EUTRA Feature Group Indicator 119", HFILL }},
2428     { &hf_lte_rrc_eutra_cap_feat_group_ind_120,
2429       { "Indicator 120", "lte-rrc.eutra_cap_feat_group_ind_120",
2430         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_120_val), 0,
2431         "EUTRA Feature Group Indicator 120", HFILL }},
2432     { &hf_lte_rrc_eutra_cap_feat_group_ind_121,
2433       { "Indicator 121", "lte-rrc.eutra_cap_feat_group_ind_121",
2434         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_121_val), 0,
2435         "EUTRA Feature Group Indicator 121", HFILL }},
2436     { &hf_lte_rrc_eutra_cap_feat_group_ind_122,
2437       { "Indicator 122", "lte-rrc.eutra_cap_feat_group_ind_122",
2438         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_122_val), 0,
2439         "EUTRA Feature Group Indicator 122", HFILL }},
2440     { &hf_lte_rrc_eutra_cap_feat_group_ind_123,
2441       { "Indicator 123", "lte-rrc.eutra_cap_feat_group_ind_123",
2442         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_123_val), 0,
2443         "EUTRA Feature Group Indicator 123", HFILL }},
2444     { &hf_lte_rrc_eutra_cap_feat_group_ind_124,
2445       { "Indicator 124", "lte-rrc.eutra_cap_feat_group_ind_124",
2446         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_124_val), 0,
2447         "EUTRA Feature Group Indicator 124", HFILL }},
2448     { &hf_lte_rrc_eutra_cap_feat_group_ind_125,
2449       { "Indicator 125", "lte-rrc.eutra_cap_feat_group_ind_125",
2450         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_125_val), 0,
2451         "EUTRA Feature Group Indicator 125", HFILL }},
2452     { &hf_lte_rrc_eutra_cap_feat_group_ind_126,
2453       { "Indicator 126", "lte-rrc.eutra_cap_feat_group_ind_126",
2454         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_126_val), 0,
2455         "EUTRA Feature Group Indicator 126", HFILL }},
2456     { &hf_lte_rrc_eutra_cap_feat_group_ind_127,
2457       { "Indicator 127", "lte-rrc.eutra_cap_feat_group_ind_127",
2458         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_127_val), 0,
2459         "EUTRA Feature Group Indicator 127", HFILL }},
2460     { &hf_lte_rrc_eutra_cap_feat_group_ind_128,
2461       { "Indicator 128", "lte-rrc.eutra_cap_feat_group_ind_128",
2462         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_128_val), 0,
2463         "EUTRA Feature Group Indicator 128", HFILL }},
2464     { &hf_lte_rrc_eutra_cap_feat_group_ind_129,
2465       { "Indicator 129", "lte-rrc.eutra_cap_feat_group_ind_129",
2466         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_129_val), 0,
2467         "EUTRA Feature Group Indicator 129", HFILL }},
2468     { &hf_lte_rrc_eutra_cap_feat_group_ind_130,
2469       { "Indicator 130", "lte-rrc.eutra_cap_feat_group_ind_130",
2470         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_130_val), 0,
2471         "EUTRA Feature Group Indicator 130", HFILL }},
2472     { &hf_lte_rrc_eutra_cap_feat_group_ind_131,
2473       { "Indicator 131", "lte-rrc.eutra_cap_feat_group_ind_131",
2474         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_131_val), 0,
2475         "EUTRA Feature Group Indicator 131", HFILL }},
2476     { &hf_lte_rrc_eutra_cap_feat_group_ind_132,
2477       { "Indicator 132", "lte-rrc.eutra_cap_feat_group_ind_132",
2478         FT_BOOLEAN, BASE_NONE, TFS(&lte_rrc_eutra_cap_feat_group_ind_132_val), 0,
2479         "EUTRA Feature Group Indicator 132", HFILL }},
2480     { &hf_lte_rrc_serialNumber_gs,
2481       { "Geographical Scope", "lte-rrc.serialNumber.gs",
2482         FT_UINT16, BASE_DEC, VALS(lte_rrc_serialNumber_gs_vals), 0xc000,
2483         NULL, HFILL }},
2484     { &hf_lte_rrc_serialNumber_msg_code,
2485       { "Message Code", "lte-rrc.serialNumber.msg_code",
2486         FT_UINT16, BASE_DEC, NULL, 0x3ff0,
2487         NULL, HFILL }},
2488     { &hf_lte_rrc_serialNumber_upd_nb,
2489       { "Update Number", "lte-rrc.serialNumber.upd_nb",
2490         FT_UINT16, BASE_DEC, NULL, 0x000f,
2491         NULL, HFILL }},
2492     { &hf_lte_rrc_warningType_value,
2493       { "Warning Type Value", "lte-rrc.warningType.value",
2494         FT_UINT16, BASE_DEC, VALS(lte_rrc_warningType_vals), 0xfe00,
2495         NULL, HFILL }},
2496     { &hf_lte_rrc_warningType_emergency_user_alert,
2497       { "Emergency User Alert", "lte-rrc.warningType.emergency_user_alert",
2498         FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0100,
2499         NULL, HFILL }},
2500     { &hf_lte_rrc_warningType_popup,
2501       { "Popup", "lte-rrc.warningType.popup",
2502         FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0080,
2503         NULL, HFILL }},
2504     { &hf_lte_rrc_warningMessageSegment_nb_pages,
2505       { "Number of Pages", "lte-rrc.warningMessageSegment.nb_pages",
2506         FT_UINT8, BASE_DEC, NULL, 0,
2507         NULL, HFILL }},
2508     { &hf_lte_rrc_warningMessageSegment_decoded_page,
2509       { "Decoded Page", "lte-rrc.warningMessageSegment.decoded_page",
2510         FT_STRING, BASE_NONE, NULL, 0,
2511         NULL, HFILL }},
2512   };
2513
2514   /* List of subtrees */
2515   static gint *ett[] = {
2516     &ett_lte_rrc,
2517 #include "packet-lte-rrc-ettarr.c"
2518
2519     &ett_lte_rrc_featureGroupIndicators,
2520     &ett_lte_rrc_featureGroupIndRel9Add,
2521     &ett_lte_rrc_featureGroupIndRel10,
2522     &ett_lte_rrc_absTimeInfo,
2523     &ett_lte_rrc_nas_SecurityParam,
2524     &ett_lte_rrc_targetRAT_MessageContainer,
2525     &ett_lte_rrc_siPsiSibContainer,
2526     &ett_lte_rrc_dedicatedInfoNAS,
2527     &ett_lte_rrc_timeInfo,
2528     &ett_lte_rrc_serialNumber,
2529     &ett_lte_rrc_warningType,
2530     &ett_lte_rrc_dataCodingScheme,
2531     &ett_lte_rrc_warningMessageSegment
2532   };
2533
2534   static ei_register_info ei[] = {
2535      { &ei_lte_rrc_number_pages_le15, { "lte_rrc.number_pages_le15", PI_MALFORMED, PI_ERROR, "Number of pages should be <=15", EXPFILL }},
2536      { &ei_lte_rrc_si_info_value_changed, { "lte_rrc.si_info_value_changed", PI_SEQUENCE, PI_WARN, "SI Info Value changed", EXPFILL }},
2537      { &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 }},
2538      { &ei_lte_rrc_earthquake_warning_sys, { "lte_rrc.earthquake_warning_sys", PI_SEQUENCE, PI_WARN, "Earthquake and Tsunami Warning System Indication!", EXPFILL }},
2539      { &ei_lte_rrc_commercial_mobile_alert_sys, { "lte_rrc.commercial_mobile_alert_sys", PI_SEQUENCE, PI_WARN, "Commercial Mobile Alert System Indication!", EXPFILL }},
2540      { &ei_lte_rrc_unexpected_type_value, { "lte_rrc.unexpected_type_value", PI_MALFORMED, PI_ERROR, "Unexpected type value", EXPFILL }},
2541      { &ei_lte_rrc_unexpected_length_value, { "lte_rrc.unexpected_length_value", PI_MALFORMED, PI_ERROR, "Unexpected type length", EXPFILL }},
2542      { &ei_lte_rrc_too_many_group_a_rapids, { "lte_rrc.too_many_groupa_rapids", PI_MALFORMED, PI_ERROR, "Unexpected type length", EXPFILL }},
2543   };
2544
2545   expert_module_t* expert_lte_rrc;
2546
2547   /* Register protocol */
2548   proto_lte_rrc = proto_register_protocol(PNAME, PSNAME, PFNAME);
2549
2550   /* These entry points will first create an lte_rrc root node */
2551   register_dissector("lte_rrc.dl_ccch", dissect_lte_rrc_DL_CCCH, proto_lte_rrc);
2552   register_dissector("lte_rrc.dl_dcch", dissect_lte_rrc_DL_DCCH, proto_lte_rrc);
2553   register_dissector("lte_rrc.ul_ccch", dissect_lte_rrc_UL_CCCH, proto_lte_rrc);
2554   register_dissector("lte_rrc.ul_dcch", dissect_lte_rrc_UL_DCCH, proto_lte_rrc);
2555   register_dissector("lte_rrc.bcch_bch", dissect_lte_rrc_BCCH_BCH, proto_lte_rrc);
2556   register_dissector("lte_rrc.bcch_dl_sch", dissect_lte_rrc_BCCH_DL_SCH, proto_lte_rrc);
2557   register_dissector("lte_rrc.pcch", dissect_lte_rrc_PCCH, proto_lte_rrc);
2558   register_dissector("lte_rrc.mcch", dissect_lte_rrc_MCCH, proto_lte_rrc);
2559
2560   /* Register fields and subtrees */
2561   proto_register_field_array(proto_lte_rrc, hf, array_length(hf));
2562   proto_register_subtree_array(ett, array_length(ett));
2563   expert_lte_rrc = expert_register_protocol(proto_lte_rrc);
2564   expert_register_field_array(expert_lte_rrc, ei, array_length(ei));
2565
2566   /* Register the dissectors defined in lte-rrc.conf */
2567 #include "packet-lte-rrc-dis-reg.c"
2568
2569   register_init_routine(&lte_rrc_init_protocol);
2570 }
2571
2572
2573 /*--- proto_reg_handoff_rrc ---------------------------------------*/
2574 void
2575 proto_reg_handoff_lte_rrc(void)
2576 {
2577         static dissector_handle_t lte_rrc_dl_ccch_handle;
2578
2579         lte_rrc_dl_ccch_handle = find_dissector("lte_rrc.dl_ccch");
2580         dissector_add_handle("udp.port", lte_rrc_dl_ccch_handle);
2581         nas_eps_handle = find_dissector("nas-eps");
2582         rrc_irat_ho_to_utran_cmd_handle = find_dissector("rrc.irat.ho_to_utran_cmd");
2583         rrc_sys_info_cont_handle = find_dissector("rrc.sysinfo.cont");
2584         gsm_a_dtap_handle = find_dissector("gsm_a_dtap");
2585         gsm_rlcmac_dl_handle = find_dissector("gsm_rlcmac_dl");
2586 }
2587
2588