blob: e4afd7b9dbf8247e924144c062c21687082e75aa [file] [log] [blame]
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03001/* gsm_rlcmac.c
2 * Routines for GSM RLC MAC control plane message dissection in wireshark.
3 * TS 44.060 and 24.008
4 *
5 * Copyright (C) 2011 Ivan Klyuchnikov
6 *
7 * By Vincent Helfre, based on original code by Jari Sassi
8 * with the gracious authorization of STE
9 * Copyright (c) 2011 ST-Ericsson
10 *
11 * $Id: packet-gsm_rlcmac.c 39164 2011-09-27 12:05:32Z etxrab $
12 *
13 * Wireshark - Network traffic analyzer
14 * By Gerald Combs <gerald@wireshark.org>
15 * Copyright 1998 Gerald Combs
16 *
17 * This program is free software; you can redistribute it and/or
18 * modify it under the terms of the GNU General Public License
19 * as published by the Free Software Foundation; either version 2
20 * of the License, or (at your option) any later version.
21 *
22 * This program is distributed in the hope that it will be useful,
23 * but WITHOUT ANY WARRANTY; without even the implied warranty of
24 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25 * GNU General Public License for more details.
26 *
27 * You should have received a copy of the GNU General Public License
28 * along with this program; if not, write to the Free Software
29 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
30 */
31
32#include "gsm_rlcmac.h"
33/* Initialize the protocol and registered fields
34*/
35#include <iostream>
36#include <cstdlib>
Ivan Kluchnikova9f1ff22012-05-24 22:25:06 +040037#include <gprs_debug.h>
Ivan Kluchnikov487a1412011-12-21 13:17:53 +030038using namespace std;
39
40/* Payload type as defined in TS 44.060 / 10.4.7 */
41#define PAYLOAD_TYPE_DATA 0
42#define PAYLOAD_TYPE_CTRL_NO_OPT_OCTET 1
43#define PAYLOAD_TYPE_CTRL_OPT_OCTET 2
44#define PAYLOAD_TYPE_RESERVED 3
45
46/* CSN1 structures */
47/*(not all parts of CSN_DESCR structure are always initialized.)*/
48static const
49CSN_DESCR_BEGIN(PLMN_t)
50 M_UINT (PLMN_t, MCC2, 4),
51 M_UINT (PLMN_t, MCC1, 4),
52 M_UINT (PLMN_t, MNC3, 4),
53 M_UINT (PLMN_t, MCC3, 4),
54 M_UINT (PLMN_t, MNC2, 4),
55 M_UINT (PLMN_t, MNC1, 4),
56CSN_DESCR_END (PLMN_t)
57
58static const
59CSN_DESCR_BEGIN(StartingTime_t)
60 M_UINT (StartingTime_t, N32, 5),
61 M_UINT (StartingTime_t, N51, 6),
62 M_UINT (StartingTime_t, N26, 5),
63CSN_DESCR_END (StartingTime_t)
64
65/*< Global TFI IE >*/
66static const
67CSN_DESCR_BEGIN(Global_TFI_t)
68 M_UNION (Global_TFI_t, 2),
69 M_UINT (Global_TFI_t, u.UPLINK_TFI, 5),
70 M_UINT (Global_TFI_t, u.DOWNLINK_TFI, 5),
71CSN_DESCR_END (Global_TFI_t)
72
73/*< Starting Frame Number Description IE >*/
74static const
75CSN_DESCR_BEGIN(Starting_Frame_Number_t)
76 M_UNION (Starting_Frame_Number_t, 2),
77 M_TYPE (Starting_Frame_Number_t, u.StartingTime, StartingTime_t),
78 M_UINT (Starting_Frame_Number_t, u.k, 13),
79CSN_DESCR_END(Starting_Frame_Number_t)
80
81/*< Ack/Nack Description IE >*/
82static const
83CSN_DESCR_BEGIN(Ack_Nack_Description_t)
84 M_UINT (Ack_Nack_Description_t, FINAL_ACK_INDICATION, 1),
85 M_UINT (Ack_Nack_Description_t, STARTING_SEQUENCE_NUMBER, 7),
86 M_BITMAP (Ack_Nack_Description_t, RECEIVED_BLOCK_BITMAP, 64),
87CSN_DESCR_END (Ack_Nack_Description_t)
88
89/*< Packet Timing Advance IE >*/
90static const
91CSN_DESCR_BEGIN(Packet_Timing_Advance_t)
92 M_NEXT_EXIST (Packet_Timing_Advance_t, Exist_TIMING_ADVANCE_VALUE, 1),
93 M_UINT (Packet_Timing_Advance_t, TIMING_ADVANCE_VALUE, 6),
94
95 M_NEXT_EXIST (Packet_Timing_Advance_t, Exist_IndexAndtimeSlot, 2),
96 M_UINT (Packet_Timing_Advance_t, TIMING_ADVANCE_INDEX, 4),
97 M_UINT (Packet_Timing_Advance_t, TIMING_ADVANCE_TIMESLOT_NUMBER, 3),
98CSN_DESCR_END (Packet_Timing_Advance_t)
99
100/*< Power Control Parameters IE >*/
101static const
102CSN_DESCR_BEGIN(GPRS_Power_Control_Parameters_t)
103 M_UINT (GPRS_Power_Control_Parameters_t, ALPHA, 4),
104 M_UINT (GPRS_Power_Control_Parameters_t, T_AVG_W, 5),
105 M_UINT (GPRS_Power_Control_Parameters_t, T_AVG_T, 5),
106 M_BIT (GPRS_Power_Control_Parameters_t, PC_MEAS_CHAN),
107 M_UINT (GPRS_Power_Control_Parameters_t, N_AVG_I, 4),
108CSN_DESCR_END (GPRS_Power_Control_Parameters_t)
109
110/*< Global Power Control Parameters IE >*/
111static const
112CSN_DESCR_BEGIN(Global_Power_Control_Parameters_t)
113 M_UINT (Global_Power_Control_Parameters_t, ALPHA, 4),
114 M_UINT (Global_Power_Control_Parameters_t, T_AVG_W, 5),
115 M_UINT (Global_Power_Control_Parameters_t, T_AVG_T, 5),
116 M_UINT (Global_Power_Control_Parameters_t, Pb, 4),
117 M_UINT (Global_Power_Control_Parameters_t, PC_MEAS_CHAN, 1),
118 M_UINT (Global_Power_Control_Parameters_t, INT_MEAS_CHANNEL_LIST_AVAIL, 1),
119 M_UINT (Global_Power_Control_Parameters_t, N_AVG_I, 4),
120CSN_DESCR_END (Global_Power_Control_Parameters_t)
121
122/*< Global Packet Timing Advance IE >*/
123static const
124CSN_DESCR_BEGIN(Global_Packet_Timing_Advance_t)
125 M_NEXT_EXIST (Global_Packet_Timing_Advance_t, Exist_TIMING_ADVANCE_VALUE, 1),
126 M_UINT (Global_Packet_Timing_Advance_t, TIMING_ADVANCE_VALUE, 6),
127
128 M_NEXT_EXIST (Global_Packet_Timing_Advance_t, Exist_UPLINK_TIMING_ADVANCE, 2),
129 M_UINT (Global_Packet_Timing_Advance_t, UPLINK_TIMING_ADVANCE_INDEX, 4),
130 M_UINT (Global_Packet_Timing_Advance_t, UPLINK_TIMING_ADVANCE_TIMESLOT_NUMBER, 3),
131
132 M_NEXT_EXIST (Global_Packet_Timing_Advance_t, Exist_DOWNLINK_TIMING_ADVANCE, 2),
133 M_UINT (Global_Packet_Timing_Advance_t, DOWNLINK_TIMING_ADVANCE_INDEX, 4),
134 M_UINT (Global_Packet_Timing_Advance_t, DOWNLINK_TIMING_ADVANCE_TIMESLOT_NUMBER, 3),
135CSN_DESCR_END (Global_Packet_Timing_Advance_t)
136
137/*< Channel Quality Report struct >*/
138static const
139CSN_DESCR_BEGIN(Channel_Quality_Report_t)
140 M_UINT (Channel_Quality_Report_t, C_VALUE, 6),
141 M_UINT (Channel_Quality_Report_t, RXQUAL, 3),
142 M_UINT (Channel_Quality_Report_t, SIGN_VAR, 6),
143
144 M_NEXT_EXIST (Channel_Quality_Report_t, Slot[0].Exist, 1),
145 M_UINT (Channel_Quality_Report_t, Slot[0].I_LEVEL_TN, 4),
146
147 M_NEXT_EXIST (Channel_Quality_Report_t, Slot[1].Exist, 1),
148 M_UINT (Channel_Quality_Report_t, Slot[1].I_LEVEL_TN, 4),
149
150 M_NEXT_EXIST (Channel_Quality_Report_t, Slot[2].Exist, 1),
151 M_UINT (Channel_Quality_Report_t, Slot[2].I_LEVEL_TN, 4),
152
153 M_NEXT_EXIST (Channel_Quality_Report_t, Slot[3].Exist, 1),
154 M_UINT (Channel_Quality_Report_t, Slot[3].I_LEVEL_TN, 4),
155
156 M_NEXT_EXIST (Channel_Quality_Report_t, Slot[4].Exist, 1),
157 M_UINT (Channel_Quality_Report_t, Slot[4].I_LEVEL_TN, 4),
158
159 M_NEXT_EXIST (Channel_Quality_Report_t, Slot[5].Exist, 1),
160 M_UINT (Channel_Quality_Report_t, Slot[5].I_LEVEL_TN, 4),
161
162 M_NEXT_EXIST (Channel_Quality_Report_t, Slot[6].Exist, 1),
163 M_UINT (Channel_Quality_Report_t, Slot[6].I_LEVEL_TN, 4),
164
165 M_NEXT_EXIST (Channel_Quality_Report_t, Slot[7].Exist, 1),
166 M_UINT (Channel_Quality_Report_t, Slot[7].I_LEVEL_TN, 4),
167CSN_DESCR_END (Channel_Quality_Report_t)
168
169/*< EGPRS Ack/Nack Description >*/
170static const
171CSN_DESCR_BEGIN (EGPRS_AckNack_t)
172 M_NEXT_EXIST (EGPRS_AckNack_t, Exist_LENGTH, 1),
173 M_UINT (EGPRS_AckNack_t, LENGTH, 8),
174
175 M_UINT (EGPRS_AckNack_t, FINAL_ACK_INDICATION, 1),
176 M_UINT (EGPRS_AckNack_t, BEGINNING_OF_WINDOW, 1),
177 M_UINT (EGPRS_AckNack_t, END_OF_WINDOW, 1),
178 M_UINT (EGPRS_AckNack_t, STARTING_SEQUENCE_NUMBER, 11),
179
180 M_NEXT_EXIST (EGPRS_AckNack_t, Exist_CRBB, 3),
181 M_UINT (EGPRS_AckNack_t, CRBB_LENGTH, 7),
182 M_UINT (EGPRS_AckNack_t, CRBB_STARTING_COLOR_CODE, 1),
183 M_LEFT_VAR_BMP (EGPRS_AckNack_t, CRBB, CRBB_LENGTH, 0),
184CSN_DESCR_END (EGPRS_AckNack_t)
185
186/*<P1 Rest Octets>*/
187/*<P2 Rest Octets>*/
188static const
189CSN_DESCR_BEGIN(MobileAllocationIE_t)
190 M_UINT (MobileAllocationIE_t, Length, 8),
191 M_VAR_ARRAY (MobileAllocationIE_t, MA, Length, 0),
192CSN_DESCR_END (MobileAllocationIE_t)
193
194static const
195CSN_DESCR_BEGIN(SingleRFChannel_t)
196 M_UINT (SingleRFChannel_t, spare, 2),
197 M_UINT (SingleRFChannel_t, ARFCN, 10),
198CSN_DESCR_END (SingleRFChannel_t)
199
200static const
201CSN_DESCR_BEGIN(RFHoppingChannel_t)
202 M_UINT (RFHoppingChannel_t, MAIO, 6),
203 M_UINT (RFHoppingChannel_t, HSN, 6),
204CSN_DESCR_END (RFHoppingChannel_t)
205
206static const
207CSN_DESCR_BEGIN(MobileAllocation_or_Frequency_Short_List_t)
208 M_UNION (MobileAllocation_or_Frequency_Short_List_t, 2),
209 M_BITMAP (MobileAllocation_or_Frequency_Short_List_t, u.Frequency_Short_List, 64),
210 M_TYPE (MobileAllocation_or_Frequency_Short_List_t, u.MA, MobileAllocationIE_t),
211CSN_DESCR_END (MobileAllocation_or_Frequency_Short_List_t)
212
213static const
214CSN_DESCR_BEGIN(Channel_Description_t)
215 M_UINT (Channel_Description_t, Channel_type_and_TDMA_offset, 5),
216 M_UINT (Channel_Description_t, TN, 3),
217 M_UINT (Channel_Description_t, TSC, 3),
218
219 M_UNION (Channel_Description_t, 2),
220 M_TYPE (Channel_Description_t, u.SingleRFChannel, SingleRFChannel_t),
221 M_TYPE (Channel_Description_t, u.RFHoppingChannel, RFHoppingChannel_t),
222CSN_DESCR_END(Channel_Description_t)
223
224static const
225CSN_DESCR_BEGIN(Group_Channel_Description_t)
226 M_TYPE (Group_Channel_Description_t, Channel_Description, Channel_Description_t),
227
228 M_NEXT_EXIST (Group_Channel_Description_t, Exist_Hopping, 1),
229 M_TYPE (Group_Channel_Description_t, MA_or_Frequency_Short_List, MobileAllocation_or_Frequency_Short_List_t),
230CSN_DESCR_END (Group_Channel_Description_t)
231
232static const
233CSN_DESCR_BEGIN(Group_Call_Reference_t)
234 M_UINT (Group_Call_Reference_t, value, 27),
235 M_BIT (Group_Call_Reference_t, SF),
236 M_BIT (Group_Call_Reference_t, AF),
237 M_UINT (Group_Call_Reference_t, call_priority, 3),
238 M_UINT (Group_Call_Reference_t, Ciphering_information, 4),
239CSN_DESCR_END (Group_Call_Reference_t)
240
241static const
242CSN_DESCR_BEGIN(Group_Call_information_t)
243 M_TYPE (Group_Call_information_t, Group_Call_Reference, Group_Call_Reference_t),
244
245 M_NEXT_EXIST (Group_Call_information_t, Exist_Group_Channel_Description, 1),
246 M_TYPE (Group_Call_information_t, Group_Channel_Description, Group_Channel_Description_t),
247CSN_DESCR_END (Group_Call_information_t)
248
249static const
250CSN_DESCR_BEGIN (P1_Rest_Octets_t)
251 M_NEXT_EXIST_LH(P1_Rest_Octets_t, Exist_NLN_PCH_and_NLN_status, 2),
252 M_UINT (P1_Rest_Octets_t, NLN_PCH, 2),
253 M_UINT (P1_Rest_Octets_t, NLN_status, 1),
254
255 M_NEXT_EXIST_LH(P1_Rest_Octets_t, Exist_Priority1, 1),
256 M_UINT (P1_Rest_Octets_t, Priority1, 3),
257
258 M_NEXT_EXIST_LH(P1_Rest_Octets_t, Exist_Priority2, 1),
259 M_UINT (P1_Rest_Octets_t, Priority2, 3),
260
261 M_NEXT_EXIST_LH(P1_Rest_Octets_t, Exist_Group_Call_information, 1),
262 M_TYPE (P1_Rest_Octets_t, Group_Call_information, Group_Call_information_t),
263
264 M_UINT_LH (P1_Rest_Octets_t, Packet_Page_Indication_1, 1),
265 M_UINT_LH (P1_Rest_Octets_t, Packet_Page_Indication_2, 1),
266CSN_DESCR_END (P1_Rest_Octets_t)
267
268static const
269CSN_DESCR_BEGIN (P2_Rest_Octets_t)
270 M_NEXT_EXIST_LH(P2_Rest_Octets_t, Exist_CN3, 1),
271 M_UINT (P2_Rest_Octets_t, CN3, 2),
272
273 M_NEXT_EXIST_LH(P2_Rest_Octets_t, Exist_NLN_and_status, 2),
274 M_UINT (P2_Rest_Octets_t, NLN, 2),
275 M_UINT (P2_Rest_Octets_t, NLN_status, 1),
276
277 M_NEXT_EXIST_LH(P2_Rest_Octets_t, Exist_Priority1, 1),
278 M_UINT (P2_Rest_Octets_t, Priority1, 3),
279
280 M_NEXT_EXIST_LH(P2_Rest_Octets_t, Exist_Priority2, 1),
281 M_UINT (P2_Rest_Octets_t, Priority2, 3),
282
283 M_NEXT_EXIST_LH(P2_Rest_Octets_t, Exist_Priority3, 1),
284 M_UINT (P2_Rest_Octets_t, Priority3, 3),
285
286 M_UINT_LH (P2_Rest_Octets_t, Packet_Page_Indication_3, 1),
287CSN_DESCR_END (P2_Rest_Octets_t)
288
289
290/* <IA Rest Octets>
291 * Note!!
292 * - first two bits skipped and frequencyparameters skipped
293 * - additions for R99 and EGPRS added
294 */
295static const
296CSN_DESCR_BEGIN(DynamicAllocation_t)
297 M_UINT (DynamicAllocation_t, USF, 3),
298 M_UINT (DynamicAllocation_t, USF_GRANULARITY, 1),
299
300 M_NEXT_EXIST (DynamicAllocation_t, Exist_P0_PR_MODE, 2),
301 M_UINT (DynamicAllocation_t, P0, 4),
302 M_UINT (DynamicAllocation_t, PR_MODE, 1),
303CSN_DESCR_END (DynamicAllocation_t)
304
305static const
306CSN_DESCR_BEGIN(EGPRS_TwoPhaseAccess_t)
307 M_NEXT_EXIST (EGPRS_TwoPhaseAccess_t, Exist_ALPHA, 1),
308 M_UINT (EGPRS_TwoPhaseAccess_t, ALPHA, 4),
309
310 M_UINT (EGPRS_TwoPhaseAccess_t, GAMMA, 5),
311 M_TYPE (EGPRS_TwoPhaseAccess_t, TBF_STARTING_TIME, StartingTime_t),
312 M_UINT (EGPRS_TwoPhaseAccess_t, NR_OF_RADIO_BLOCKS_ALLOCATED, 2),
313
314 M_NEXT_EXIST (EGPRS_TwoPhaseAccess_t, Exist_P0_BTS_PWR_CTRL_PR_MODE, 3),
315 M_UINT (EGPRS_TwoPhaseAccess_t, P0, 4),
316 M_UINT (EGPRS_TwoPhaseAccess_t, BTS_PWR_CTRL_MODE, 1),
317 M_UINT (EGPRS_TwoPhaseAccess_t, PR_MODE, 1),
318CSN_DESCR_END (EGPRS_TwoPhaseAccess_t)
319
320static const
321CSN_DESCR_BEGIN(EGPRS_OnePhaseAccess_t)
322 M_UINT (EGPRS_OnePhaseAccess_t, TFI_ASSIGNMENT, 5),
323 M_UINT (EGPRS_OnePhaseAccess_t, POLLING, 1),
324
325 M_UNION (EGPRS_OnePhaseAccess_t, 2),
326 M_TYPE (EGPRS_OnePhaseAccess_t, Allocation.DynamicAllocation, DynamicAllocation_t),
327 CSN_ERROR (EGPRS_OnePhaseAccess_t, "1 <Fixed Allocation>", CSN_ERROR_STREAM_NOT_SUPPORTED),
328
329 M_UINT (EGPRS_OnePhaseAccess_t, EGPRS_CHANNEL_CODING_COMMAND, 4),
330 M_UINT (EGPRS_OnePhaseAccess_t, TLLI_BLOCK_CHANNEL_CODING, 1),
331
332 M_NEXT_EXIST (EGPRS_OnePhaseAccess_t, Exist_BEP_PERIOD2, 1),
333 M_UINT (EGPRS_OnePhaseAccess_t, BEP_PERIOD2, 4),
334
335 M_UINT (EGPRS_OnePhaseAccess_t, RESEGMENT, 1),
336 M_UINT (EGPRS_OnePhaseAccess_t, EGPRS_WindowSize, 5),
337
338 M_NEXT_EXIST (EGPRS_OnePhaseAccess_t, Exist_ALPHA, 1),
339 M_UINT (EGPRS_OnePhaseAccess_t, ALPHA, 4),
340
341 M_UINT (EGPRS_OnePhaseAccess_t, GAMMA, 5),
342
343 M_NEXT_EXIST (EGPRS_OnePhaseAccess_t, Exist_TIMING_ADVANCE_INDEX, 1),
344 M_UINT (EGPRS_OnePhaseAccess_t, TIMING_ADVANCE_INDEX, 4),
345
346 M_NEXT_EXIST (EGPRS_OnePhaseAccess_t, Exist_TBF_STARTING_TIME, 1),
347 M_TYPE (EGPRS_OnePhaseAccess_t, TBF_STARTING_TIME, StartingTime_t),
348CSN_DESCR_END (EGPRS_OnePhaseAccess_t)
349
350static const
351CSN_DESCR_BEGIN(IA_EGPRS_00_t)
352 M_UINT (IA_EGPRS_00_t, ExtendedRA, 5),
353
354 M_REC_ARRAY (IA_EGPRS_00_t, AccessTechnologyType, NrOfAccessTechnologies, 4),
355
356 M_UNION (IA_EGPRS_00_t, 2),
357 M_TYPE (IA_EGPRS_00_t, Access.TwoPhaseAccess, EGPRS_TwoPhaseAccess_t),
358 M_TYPE (IA_EGPRS_00_t, Access.OnePhaseAccess, EGPRS_OnePhaseAccess_t),
359CSN_DESCR_END (IA_EGPRS_00_t)
360
361static const
362CSN_ChoiceElement_t IA_EGPRS_Choice[] =
363{
364 {2, 0x00, M_TYPE (IA_EGPRS_t, u.IA_EGPRS_PUA, IA_EGPRS_00_t)},
365 {2, 0x01, CSN_ERROR(IA_EGPRS_t, "01 <IA_EGPRS>", CSN_ERROR_STREAM_NOT_SUPPORTED)},
366 {1, 0x01, CSN_ERROR(IA_EGPRS_t, "1 <IA_EGPRS>", CSN_ERROR_STREAM_NOT_SUPPORTED)}
367};
368
369/* Please observe the double usage of UnionType element.
370 * First, it is used to store the second bit of LL/LH identification of EGPRS contents.
371 * Thereafter, UnionType will be used to store the index to detected choice.
372 */
373static const
374CSN_DESCR_BEGIN(IA_EGPRS_t)
375 M_UINT (IA_EGPRS_t, UnionType , 1 ),
376 M_CHOICE (IA_EGPRS_t, UnionType, IA_EGPRS_Choice, ElementsOf(IA_EGPRS_Choice)),
377CSN_DESCR_END (IA_EGPRS_t)
378
379static const
380CSN_DESCR_BEGIN(IA_FreqParamsBeforeTime_t)
381 M_UINT (IA_FreqParamsBeforeTime_t, Length, 6),
382 M_UINT (IA_FreqParamsBeforeTime_t, MAIO, 6),
383 M_VAR_ARRAY (IA_FreqParamsBeforeTime_t, MobileAllocation, Length, 8),
384CSN_DESCR_END (IA_FreqParamsBeforeTime_t)
385
386static const
387CSN_DESCR_BEGIN (GPRS_SingleBlockAllocation_t)
388 M_NEXT_EXIST (GPRS_SingleBlockAllocation_t, Exist_ALPHA, 1),
389 M_UINT (GPRS_SingleBlockAllocation_t, ALPHA, 4),
390
391 M_UINT (GPRS_SingleBlockAllocation_t, GAMMA, 5),
392 M_FIXED (GPRS_SingleBlockAllocation_t, 2, 0x01),
393 M_TYPE (GPRS_SingleBlockAllocation_t, TBF_STARTING_TIME, StartingTime_t), /*bit(16)*/
394
395 M_NEXT_EXIST_LH(GPRS_SingleBlockAllocation_t, Exist_P0_BTS_PWR_CTRL_PR_MODE, 3),
396 M_UINT (GPRS_SingleBlockAllocation_t, P0, 4),
397 M_UINT (GPRS_SingleBlockAllocation_t, BTS_PWR_CTRL_MODE, 1),
398 M_UINT (GPRS_SingleBlockAllocation_t, PR_MODE, 1),
399CSN_DESCR_END (GPRS_SingleBlockAllocation_t)
400
401static const
402CSN_DESCR_BEGIN (GPRS_DynamicOrFixedAllocation_t)
403 M_UINT (GPRS_DynamicOrFixedAllocation_t, TFI_ASSIGNMENT, 5),
404 M_UINT (GPRS_DynamicOrFixedAllocation_t, POLLING, 1),
405
406 M_UNION (GPRS_DynamicOrFixedAllocation_t, 2),
407 M_TYPE (GPRS_DynamicOrFixedAllocation_t, Allocation.DynamicAllocation, DynamicAllocation_t),
408 CSN_ERROR (GPRS_DynamicOrFixedAllocation_t, "1 <Fixed Allocation>", CSN_ERROR_STREAM_NOT_SUPPORTED),
409
410 M_UINT (GPRS_DynamicOrFixedAllocation_t, CHANNEL_CODING_COMMAND, 2),
411 M_UINT (GPRS_DynamicOrFixedAllocation_t, TLLI_BLOCK_CHANNEL_CODING, 1),
412
413 M_NEXT_EXIST (GPRS_DynamicOrFixedAllocation_t, Exist_ALPHA, 1),
414 M_UINT (GPRS_DynamicOrFixedAllocation_t, ALPHA, 4),
415
416 M_UINT (GPRS_DynamicOrFixedAllocation_t, GAMMA, 5),
417
418 M_NEXT_EXIST (GPRS_DynamicOrFixedAllocation_t, Exist_TIMING_ADVANCE_INDEX, 1),
419 M_UINT (GPRS_DynamicOrFixedAllocation_t, TIMING_ADVANCE_INDEX, 4),
420
421 M_NEXT_EXIST (GPRS_DynamicOrFixedAllocation_t, Exist_TBF_STARTING_TIME, 1),
422 M_TYPE (GPRS_DynamicOrFixedAllocation_t, TBF_STARTING_TIME, StartingTime_t),
423CSN_DESCR_END (GPRS_DynamicOrFixedAllocation_t)
424
425static const
426CSN_DESCR_BEGIN(PU_IA_AdditionsR99_t)
427 M_NEXT_EXIST (PU_IA_AdditionsR99_t, Exist_ExtendedRA, 1),
428 M_UINT (PU_IA_AdditionsR99_t, ExtendedRA, 5),
429CSN_DESCR_END (PU_IA_AdditionsR99_t)
430
431static const
432CSN_DESCR_BEGIN (Packet_Uplink_ImmAssignment_t)
433 M_UNION (Packet_Uplink_ImmAssignment_t, 2),
434 M_TYPE (Packet_Uplink_ImmAssignment_t, Access.SingleBlockAllocation, GPRS_SingleBlockAllocation_t),
435 M_TYPE (Packet_Uplink_ImmAssignment_t, Access.DynamicOrFixedAllocation, GPRS_DynamicOrFixedAllocation_t),
436
437 M_NEXT_EXIST_OR_NULL_LH(Packet_Uplink_ImmAssignment_t, Exist_AdditionsR99, 1),
438 M_TYPE (Packet_Uplink_ImmAssignment_t, AdditionsR99, PU_IA_AdditionsR99_t),
439CSN_DESCR_END (Packet_Uplink_ImmAssignment_t)
440
441static const
442CSN_DESCR_BEGIN(PD_IA_AdditionsR99_t)
443 M_UINT (PD_IA_AdditionsR99_t, EGPRS_WindowSize, 5),
444 M_UINT (PD_IA_AdditionsR99_t, LINK_QUALITY_MEASUREMENT_MODE, 2),
445
446 M_NEXT_EXIST (PD_IA_AdditionsR99_t, Exist_BEP_PERIOD2, 1),
447 M_UINT (PD_IA_AdditionsR99_t, BEP_PERIOD2, 4),
448CSN_DESCR_END (PD_IA_AdditionsR99_t)
449
450static const
451CSN_DESCR_BEGIN(Packet_Downlink_ImmAssignment_t)
452 M_UINT (Packet_Downlink_ImmAssignment_t, TLLI, 32),
453
454 M_NEXT_EXIST (Packet_Downlink_ImmAssignment_t, Exist_TFI_to_TA_VALID, 6 + 1),
455 M_UINT (Packet_Downlink_ImmAssignment_t, TFI_ASSIGNMENT, 5),
456 M_UINT (Packet_Downlink_ImmAssignment_t, RLC_MODE, 1),
457 M_NEXT_EXIST (Packet_Downlink_ImmAssignment_t, Exist_ALPHA, 1),
458 M_UINT (Packet_Downlink_ImmAssignment_t, ALPHA, 4),
459 M_UINT (Packet_Downlink_ImmAssignment_t, GAMMA, 5),
460 M_UINT (Packet_Downlink_ImmAssignment_t, POLLING, 1),
461 M_UINT (Packet_Downlink_ImmAssignment_t, TA_VALID, 1),
462
463 M_NEXT_EXIST (Packet_Downlink_ImmAssignment_t, Exist_TIMING_ADVANCE_INDEX, 1),
464 M_UINT (Packet_Downlink_ImmAssignment_t, TIMING_ADVANCE_INDEX, 4),
465
466 M_NEXT_EXIST (Packet_Downlink_ImmAssignment_t, Exist_TBF_STARTING_TIME, 1),
467 M_TYPE (Packet_Downlink_ImmAssignment_t, TBF_STARTING_TIME, StartingTime_t),
468
469 M_NEXT_EXIST (Packet_Downlink_ImmAssignment_t, Exist_P0_PR_MODE, 3),
470 M_UINT (Packet_Downlink_ImmAssignment_t, P0, 4),
471 M_UINT (Packet_Downlink_ImmAssignment_t, BTS_PWR_CTRL_MODE, 1),
472 M_UINT (Packet_Downlink_ImmAssignment_t, PR_MODE, 1),
473
474 M_NEXT_EXIST_OR_NULL_LH(Packet_Downlink_ImmAssignment_t, Exist_AdditionsR99, 1),
475 M_TYPE (Packet_Downlink_ImmAssignment_t, AdditionsR99, PD_IA_AdditionsR99_t),
476CSN_DESCR_END (Packet_Downlink_ImmAssignment_t)
477
478static const
479CSN_DESCR_BEGIN (Second_Part_Packet_Assignment_t)
480 M_NEXT_EXIST_OR_NULL_LH(Second_Part_Packet_Assignment_t, Exist_SecondPart, 2),
481 M_NEXT_EXIST (Second_Part_Packet_Assignment_t, Exist_ExtendedRA, 1),
482 M_UINT (Second_Part_Packet_Assignment_t, ExtendedRA, 5),
483CSN_DESCR_END (Second_Part_Packet_Assignment_t)
484
485static const
486CSN_DESCR_BEGIN(IA_PacketAssignment_UL_DL_t)
487 M_UNION (IA_PacketAssignment_UL_DL_t, 2),
488 M_TYPE (IA_PacketAssignment_UL_DL_t, ul_dl.Packet_Uplink_ImmAssignment, Packet_Uplink_ImmAssignment_t),
489 M_TYPE (IA_PacketAssignment_UL_DL_t, ul_dl.Packet_Downlink_ImmAssignment, Packet_Downlink_ImmAssignment_t),
490CSN_DESCR_END (IA_PacketAssignment_UL_DL_t)
491
492static const
493CSN_DESCR_BEGIN(IA_PacketAssignment_t)
494 M_UNION (IA_PacketAssignment_t, 2),
495 M_TYPE (IA_PacketAssignment_t, u.UplinkDownlinkAssignment, IA_PacketAssignment_UL_DL_t),
496 M_TYPE (IA_PacketAssignment_t, u.UplinkDownlinkAssignment, Second_Part_Packet_Assignment_t),
497CSN_DESCR_END (IA_PacketAssignment_t)
498
499/* <Packet Polling Request> */
500static const
501CSN_ChoiceElement_t PacketPollingID[] =
502{
503 {1, 0, M_TYPE(PacketPollingID_t, u.Global_TFI, Global_TFI_t)},
504 {2, 0x02, M_UINT(PacketPollingID_t, u.TLLI, 32)},
505 {3, 0x06, M_UINT(PacketPollingID_t, u.TQI, 16)},
506/*{3, 0x07 , M_TYPE(PacketUplinkID_t, u.Packet_Request_Reference, Packet_Request_Reference_t)},*/
507};
508
509static const
510CSN_DESCR_BEGIN(PacketPollingID_t)
511 M_CHOICE (PacketPollingID_t, UnionType, PacketPollingID, ElementsOf(PacketPollingID)),
512CSN_DESCR_END (PacketPollingID_t)
513
514static const
515CSN_DESCR_BEGIN(Packet_Polling_Request_t)
516 M_UINT (Packet_Polling_Request_t, MESSAGE_TYPE, 6),
517 M_UINT (Packet_Polling_Request_t, PAGE_MODE, 2),
518 M_TYPE (Packet_Polling_Request_t, ID, PacketPollingID_t),
519 M_BIT (Packet_Polling_Request_t, TYPE_OF_ACK),
520CSN_DESCR_END (Packet_Polling_Request_t)
521
522static const
523CSN_DESCR_BEGIN(MobileAllocation_t)
524 M_UINT_OFFSET(MobileAllocation_t, MA_BitLength, 6, 1),
525 M_VAR_BITMAP (MobileAllocation_t, MA_BITMAP, MA_BitLength, 0),
526CSN_DESCR_END (MobileAllocation_t)
527
528static const
529CSN_DESCR_BEGIN(ARFCN_index_list_t)
530 M_REC_ARRAY (ARFCN_index_list_t, ARFCN_INDEX, ElementsOf_ARFCN_INDEX, 6),
531CSN_DESCR_END (ARFCN_index_list_t)
532
533static const
534CSN_DESCR_BEGIN(GPRS_Mobile_Allocation_t)
535 M_UINT (GPRS_Mobile_Allocation_t, HSN, 6),
536 M_REC_ARRAY (GPRS_Mobile_Allocation_t, RFL_NUMBER, ElementsOf_RFL_NUMBER, 4),
537 M_UNION (GPRS_Mobile_Allocation_t, 2),
538 M_TYPE (GPRS_Mobile_Allocation_t, u.MA, MobileAllocation_t),
539 M_TYPE (GPRS_Mobile_Allocation_t, u.ARFCN_index_list, ARFCN_index_list_t),
540CSN_DESCR_END (GPRS_Mobile_Allocation_t)
541
542/*< SI 13 Rest Octets >*/
543static const
544CSN_DESCR_BEGIN (Extension_Bits_t)
545 M_UINT_OFFSET (Extension_Bits_t, extension_length, 6, 1),
546 M_LEFT_VAR_BMP(Extension_Bits_t, Extension_Info, extension_length, 0),
547CSN_DESCR_END (Extension_Bits_t)
548
549static const
550CSN_DESCR_BEGIN(GPRS_Cell_Options_t)
551 M_UINT (GPRS_Cell_Options_t, NMO, 2),
552 M_UINT_OFFSET(GPRS_Cell_Options_t, T3168, 3, 1),
553 M_UINT_OFFSET(GPRS_Cell_Options_t, T3192, 3, 1),
554 M_UINT (GPRS_Cell_Options_t, DRX_TIMER_MAX, 3),
555 M_BIT (GPRS_Cell_Options_t, ACCESS_BURST_TYPE),
556 M_BIT (GPRS_Cell_Options_t, CONTROL_ACK_TYPE),
557 M_UINT (GPRS_Cell_Options_t, BS_CV_MAX, 4),
558
559 M_NEXT_EXIST (GPRS_Cell_Options_t, Exist_PAN, 3),
560 M_UINT (GPRS_Cell_Options_t, PAN_DEC, 3),
561 M_UINT (GPRS_Cell_Options_t, PAN_INC, 3),
562 M_UINT (GPRS_Cell_Options_t, PAN_MAX, 3),
563
564 M_NEXT_EXIST (GPRS_Cell_Options_t, Exist_Extension_Bits, 1),
565 M_TYPE (GPRS_Cell_Options_t, Extension_Bits, Extension_Bits_t),
566CSN_DESCR_END (GPRS_Cell_Options_t)
567
568static const
569CSN_DESCR_BEGIN(PBCCH_Not_present_t)
570 M_UINT (PBCCH_Not_present_t, RAC, 8),
571 M_BIT (PBCCH_Not_present_t, SPGC_CCCH_SUP),
572 M_UINT (PBCCH_Not_present_t, PRIORITY_ACCESS_THR, 3),
573 M_UINT (PBCCH_Not_present_t, NETWORK_CONTROL_ORDER, 2),
574 M_TYPE (PBCCH_Not_present_t, GPRS_Cell_Options, GPRS_Cell_Options_t),
575 M_TYPE (PBCCH_Not_present_t, GPRS_Power_Control_Parameters, GPRS_Power_Control_Parameters_t),
576CSN_DESCR_END (PBCCH_Not_present_t)
577
578static const
579CSN_ChoiceElement_t SI13_PBCCH_Description_Channel[] =
580{/* this one is used in SI13*/
581 {2, 0x00 , M_NULL(PBCCH_Description_t, u.dummy)},/*Default to BCCH carrier*/
582 {2, 0x01 , M_UINT(PBCCH_Description_t, u.ARFCN, 10)},
583 {1, 0x01 , M_UINT(PBCCH_Description_t, u.MAIO, 6)},
584};
585
586static const
587CSN_DESCR_BEGIN(PBCCH_Description_t)/*SI13*/
588 M_UINT (PBCCH_Description_t, Pb, 4),
589 M_UINT (PBCCH_Description_t, TSC, 3),
590 M_UINT (PBCCH_Description_t, TN, 3),
591
592 M_CHOICE (PBCCH_Description_t, UnionType, SI13_PBCCH_Description_Channel, ElementsOf(SI13_PBCCH_Description_Channel)),
593CSN_DESCR_END (PBCCH_Description_t)
594
595static const
596CSN_DESCR_BEGIN(PBCCH_present_t)
597 M_UINT (PBCCH_present_t, PSI1_REPEAT_PERIOD, 4),
598 M_TYPE (PBCCH_present_t, PBCCH_Description, PBCCH_Description_t),
599CSN_DESCR_END (PBCCH_present_t)
600
601static const
602CSN_DESCR_BEGIN(SI13_AdditionsR6)
603 M_NEXT_EXIST (SI13_AdditionsR6, Exist_LB_MS_TXPWR_MAX_CCH, 1),
604 M_UINT (SI13_AdditionsR6, LB_MS_TXPWR_MAX_CCH, 5),
605 M_UINT (SI13_AdditionsR6, SI2n_SUPPORT, 2),
606CSN_DESCR_END (SI13_AdditionsR6)
607
608static const
609CSN_DESCR_BEGIN(SI13_AdditionsR4)
610 M_UINT (SI13_AdditionsR4, SI_STATUS_IND, 1),
611 M_NEXT_EXIST_OR_NULL_LH (SI13_AdditionsR4, Exist_AdditionsR6, 1),
612 M_TYPE (SI13_AdditionsR4, AdditionsR6, SI13_AdditionsR6),
613CSN_DESCR_END (SI13_AdditionsR4)
614
615static const
616CSN_DESCR_BEGIN(SI13_AdditionR99)
617 M_UINT (SI13_AdditionR99, SGSNR, 1),
618 M_NEXT_EXIST_OR_NULL_LH (SI13_AdditionR99, Exist_AdditionsR4, 1),
619 M_TYPE (SI13_AdditionR99, AdditionsR4, SI13_AdditionsR4),
620CSN_DESCR_END (SI13_AdditionR99)
621
622static const
623CSN_DESCR_BEGIN (SI_13_t)
624 M_THIS_EXIST_LH (SI_13_t),
625
626 M_UINT (SI_13_t, BCCH_CHANGE_MARK, 3),
627 M_UINT (SI_13_t, SI_CHANGE_FIELD, 4),
628
629 M_NEXT_EXIST (SI_13_t, Exist_MA, 2),
630 M_UINT (SI_13_t, SI13_CHANGE_MARK, 2),
631 M_TYPE (SI_13_t, GPRS_Mobile_Allocation, GPRS_Mobile_Allocation_t),
632
633 M_UNION (SI_13_t, 2),
634 M_TYPE (SI_13_t, u.PBCCH_Not_present, PBCCH_Not_present_t),
635 M_TYPE (SI_13_t, u.PBCCH_present, PBCCH_present_t),
636
637 M_NEXT_EXIST_OR_NULL_LH(SI_13_t, Exist_AdditionsR99, 1),
638 M_TYPE (SI_13_t, AdditionsR99, SI13_AdditionR99),
639CSN_DESCR_END (SI_13_t)
640
641/************************************************************/
642/* TS 44.060 messages */
643/************************************************************/
644
645/*< Packet TBF Release message content >*/
646static const
647CSN_DESCR_BEGIN(Packet_TBF_Release_t)
648 M_UINT (Packet_TBF_Release_t, MESSAGE_TYPE, 6),
649 M_UINT (Packet_TBF_Release_t, PAGE_MODE, 2),
650 M_FIXED (Packet_TBF_Release_t, 1, 0x00),
651 M_TYPE (Packet_TBF_Release_t, Global_TFI, Global_TFI_t),
652 M_BIT (Packet_TBF_Release_t, UPLINK_RELEASE),
653 M_BIT (Packet_TBF_Release_t, DOWNLINK_RELEASE),
654 M_UINT (Packet_TBF_Release_t, TBF_RELEASE_CAUSE, 4),
655CSN_DESCR_END (Packet_TBF_Release_t)
656
657/*< Packet Control Acknowledgement message content >*/
658
659static const
660CSN_DESCR_BEGIN (Packet_Control_Acknowledgement_AdditionsR6_t)
661 M_NEXT_EXIST (Packet_Control_Acknowledgement_AdditionsR6_t, Exist_CTRL_ACK_Extension, 1),
662 M_UINT (Packet_Control_Acknowledgement_AdditionsR6_t, CTRL_ACK_Extension, 9),
663CSN_DESCR_END (Packet_Control_Acknowledgement_AdditionsR6_t)
664
665static const
666CSN_DESCR_BEGIN (Packet_Control_Acknowledgement_AdditionsR5_t)
667 M_NEXT_EXIST (Packet_Control_Acknowledgement_AdditionsR5_t, Exist_TN_RRBP, 1),
668 M_UINT (Packet_Control_Acknowledgement_AdditionsR5_t, TN_RRBP, 3),
669 M_NEXT_EXIST (Packet_Control_Acknowledgement_AdditionsR5_t, Exist_G_RNTI_Extension, 1),
670 M_UINT (Packet_Control_Acknowledgement_AdditionsR5_t, G_RNTI_Extension, 4),
671
672 M_NEXT_EXIST_OR_NULL (Packet_Control_Acknowledgement_AdditionsR5_t, Exist_AdditionsR6, 1),
673 M_TYPE (Packet_Control_Acknowledgement_AdditionsR5_t, AdditionsR6, Packet_Control_Acknowledgement_AdditionsR6_t),
674CSN_DESCR_END (Packet_Control_Acknowledgement_AdditionsR5_t)
675
676static const
677CSN_DESCR_BEGIN (Packet_Control_Acknowledgement_t)
678 M_UINT (Packet_Control_Acknowledgement_t, PayloadType, 2),
679 M_UINT (Packet_Control_Acknowledgement_t, spare, 5),
680 M_BIT (Packet_Control_Acknowledgement_t, R),
681
682 M_UINT (Packet_Control_Acknowledgement_t, MESSAGE_TYPE, 6),
683 M_UINT (Packet_Control_Acknowledgement_t, TLLI, 32),
684 M_UINT (Packet_Control_Acknowledgement_t, CTRL_ACK, 2),
685 M_NEXT_EXIST_OR_NULL (Packet_Control_Acknowledgement_t, Exist_AdditionsR5, 1),
686 M_TYPE (Packet_Control_Acknowledgement_t, AdditionsR5, Packet_Control_Acknowledgement_AdditionsR5_t),
687CSN_DESCR_END (Packet_Control_Acknowledgement_t)
688
689/*< Packet Downlink Dummy Control Block message content >*/
690static const
691CSN_DESCR_BEGIN(Packet_Downlink_Dummy_Control_Block_t)
692 M_UINT (Packet_Downlink_Dummy_Control_Block_t, MESSAGE_TYPE, 6),
693 M_UINT (Packet_Downlink_Dummy_Control_Block_t, PAGE_MODE, 2),
694
695 M_NEXT_EXIST (Packet_Downlink_Dummy_Control_Block_t, Exist_PERSISTENCE_LEVEL, 1),
696 M_UINT_ARRAY (Packet_Downlink_Dummy_Control_Block_t, PERSISTENCE_LEVEL, 4, 4),
697CSN_DESCR_END (Packet_Downlink_Dummy_Control_Block_t)
698
699/*< Packet Uplink Dummy Control Block message content >*/
700static const
701CSN_DESCR_BEGIN(Packet_Uplink_Dummy_Control_Block_t)
702 M_UINT (Packet_Uplink_Dummy_Control_Block_t, PayloadType, 2),
703 M_UINT (Packet_Uplink_Dummy_Control_Block_t, spare, 5),
704 M_BIT (Packet_Uplink_Dummy_Control_Block_t, R),
705
706 M_UINT (Packet_Uplink_Dummy_Control_Block_t, MESSAGE_TYPE, 6),
707 M_UINT (Packet_Uplink_Dummy_Control_Block_t, TLLI, 32),
708/*M_FIXED (Packet_Uplink_Dummy_Control_Block_t, 1, 0),*/
709CSN_DESCR_END (Packet_Uplink_Dummy_Control_Block_t)
710
711static const
712CSN_DESCR_BEGIN(Receive_N_PDU_Number_t)
713 M_UINT (Receive_N_PDU_Number_t, nsapi, 4),
714 M_UINT (Receive_N_PDU_Number_t, value, 8),
715CSN_DESCR_END (Receive_N_PDU_Number_t)
716
Ivan Kluchnikov9b06ff02012-06-15 10:13:30 +0400717gint16 Receive_N_PDU_Number_list_Dissector(csnStream_t* ar, bitvec *vector, unsigned& readIndex, void* data)
Ivan Kluchnikov487a1412011-12-21 13:17:53 +0300718{
719 if (ar->direction == 0)
720 {
721 return csnStreamEncoder(ar, CSNDESCR(Receive_N_PDU_Number_t), vector, readIndex, data);
722 }
723 else
724 {
725 return csnStreamDecoder(ar, CSNDESCR(Receive_N_PDU_Number_t), vector, readIndex, data);
726 }
727}
728
729static const
730CSN_DESCR_BEGIN(Receive_N_PDU_Number_list_t)
731 M_SERIALIZE (Receive_N_PDU_Number_list_t, IEI, Receive_N_PDU_Number_list_Dissector),
732 M_VAR_TARRAY (Receive_N_PDU_Number_list_t, Receive_N_PDU_Number, Receive_N_PDU_Number_t, Count_Receive_N_PDU_Number),
733CSN_DESCR_END (Receive_N_PDU_Number_list_t)
734
735/*< MS Radio Access capability IE >*/
736static const
737CSN_DESCR_BEGIN (DTM_EGPRS_t)
738 M_NEXT_EXIST (DTM_EGPRS_t, Exist_DTM_EGPRS_multislot_class, 1),
739 M_UINT (DTM_EGPRS_t, DTM_EGPRS_multislot_class, 2),
740CSN_DESCR_END (DTM_EGPRS_t)
741
742static const
743CSN_DESCR_BEGIN (DTM_EGPRS_HighMultislotClass_t)
744 M_NEXT_EXIST (DTM_EGPRS_HighMultislotClass_t, Exist_DTM_EGPRS_HighMultislotClass, 1),
745 M_UINT (DTM_EGPRS_HighMultislotClass_t, DTM_EGPRS_HighMultislotClass, 3),
746CSN_DESCR_END (DTM_EGPRS_HighMultislotClass_t)
747
748static const
749CSN_DESCR_BEGIN (Multislot_capability_t)
750 M_NEXT_EXIST (Multislot_capability_t, Exist_HSCSD_multislot_class, 1),
751 M_UINT (Multislot_capability_t, HSCSD_multislot_class, 5),
752
753 M_NEXT_EXIST (Multislot_capability_t, Exist_GPRS_multislot_class, 2),
754 M_UINT (Multislot_capability_t, GPRS_multislot_class, 5),
755 M_UINT (Multislot_capability_t, GPRS_Extended_Dynamic_Allocation_Capability, 1),
756
757 M_NEXT_EXIST (Multislot_capability_t, Exist_SM, 2),
758 M_UINT (Multislot_capability_t, SMS_VALUE, 4),
759 M_UINT (Multislot_capability_t, SM_VALUE, 4),
760
761 M_NEXT_EXIST (Multislot_capability_t, Exist_ECSD_multislot_class, 1),
762 M_UINT (Multislot_capability_t, ECSD_multislot_class, 5),
763
764 M_NEXT_EXIST (Multislot_capability_t, Exist_EGPRS_multislot_class, 2),
765 M_UINT (Multislot_capability_t, EGPRS_multislot_class, 5),
766 M_UINT (Multislot_capability_t, EGPRS_Extended_Dynamic_Allocation_Capability, 1),
767
768 M_NEXT_EXIST (Multislot_capability_t, Exist_DTM_GPRS_multislot_class, 3),
769 M_UINT (Multislot_capability_t, DTM_GPRS_multislot_class, 2),
770 M_UINT (Multislot_capability_t, Single_Slot_DTM, 1),
771 M_TYPE (Multislot_capability_t, DTM_EGPRS_Params, DTM_EGPRS_t),
772CSN_DESCR_END (Multislot_capability_t)
773
774static const
775CSN_DESCR_BEGIN (Content_t)
776 M_UINT (Content_t, RF_Power_Capability, 3),
777
778 M_NEXT_EXIST (Content_t, Exist_A5_bits, 1),
779 M_UINT (Content_t, A5_bits, 7),
780
781 M_UINT (Content_t, ES_IND, 1),
782 M_UINT (Content_t, PS, 1),
783 M_UINT (Content_t, VGCS, 1),
784 M_UINT (Content_t, VBS, 1),
785
786 M_NEXT_EXIST_OR_NULL(Content_t, Exist_Multislot_capability, 1),
787 M_TYPE (Content_t, Multislot_capability, Multislot_capability_t),
788
789 M_NEXT_EXIST (Content_t, Exist_Eight_PSK_Power_Capability, 1),
790 M_UINT (Content_t, Eight_PSK_Power_Capability, 2),
791
792 M_UINT (Content_t, COMPACT_Interference_Measurement_Capability, 1),
793 M_UINT (Content_t, Revision_Level_Indicator, 1),
794 M_UINT (Content_t, UMTS_FDD_Radio_Access_Technology_Capability, 1),
795 M_UINT (Content_t, UMTS_384_TDD_Radio_Access_Technology_Capability, 1),
796 M_UINT (Content_t, CDMA2000_Radio_Access_Technology_Capability, 1),
797
798 M_UINT (Content_t, UMTS_128_TDD_Radio_Access_Technology_Capability, 1),
799 M_UINT (Content_t, GERAN_Feature_Package_1, 1),
800
801 M_NEXT_EXIST (Content_t, Exist_Extended_DTM_multislot_class, 2),
802 M_UINT (Content_t, Extended_DTM_GPRS_multislot_class, 2),
803 M_UINT (Content_t, Extended_DTM_EGPRS_multislot_class, 2),
804
805 M_UINT (Content_t, Modulation_based_multislot_class_support, 1),
806
807 M_NEXT_EXIST (Content_t, Exist_HighMultislotCapability, 1),
808 M_UINT (Content_t, HighMultislotCapability, 2),
809
810 M_NEXT_EXIST (Content_t, Exist_GERAN_lu_ModeCapability, 1),
811 M_UINT (Content_t, GERAN_lu_ModeCapability, 4),
812
813 M_UINT (Content_t, GMSK_MultislotPowerProfile, 2),
814 M_UINT (Content_t, EightPSK_MultislotProfile, 2),
815
816 M_UINT (Content_t, MultipleTBF_Capability, 1),
817 M_UINT (Content_t, DownlinkAdvancedReceiverPerformance, 2),
818 M_UINT (Content_t, ExtendedRLC_MAC_ControlMessageSegmentionsCapability, 1),
819 M_UINT (Content_t, DTM_EnhancementsCapability, 1),
820
821 M_NEXT_EXIST (Content_t, Exist_DTM_GPRS_HighMultislotClass, 2),
822 M_UINT (Content_t, DTM_GPRS_HighMultislotClass, 3),
823 M_TYPE (Content_t, DTM_EGPRS_HighMultislotClass, DTM_EGPRS_HighMultislotClass_t),
824
825 M_UINT (Content_t, PS_HandoverCapability, 1),
826CSN_DESCR_END (Content_t)
827
Ivan Kluchnikov9b06ff02012-06-15 10:13:30 +0400828gint16 Content_Dissector(csnStream_t* ar, bitvec *vector, unsigned& readIndex, void* data)
Ivan Kluchnikov487a1412011-12-21 13:17:53 +0300829{
830 if (ar->direction == 0)
831 {
832 return csnStreamEncoder(ar, CSNDESCR(Content_t), vector, readIndex, data);
833 }
834 else
835 {
836 return csnStreamDecoder(ar, CSNDESCR(Content_t), vector, readIndex, data);
837 }
838}
839
840static const
841CSN_DESCR_BEGIN (Additional_access_technologies_struct_t)
842 M_UINT (Additional_access_technologies_struct_t, Access_Technology_Type, 4),
843 M_UINT (Additional_access_technologies_struct_t, GMSK_Power_class, 3),
844 M_UINT (Additional_access_technologies_struct_t, Eight_PSK_Power_class, 2),
845CSN_DESCR_END (Additional_access_technologies_struct_t)
846
847static const
848CSN_DESCR_BEGIN (Additional_access_technologies_t)
849 M_REC_TARRAY (Additional_access_technologies_t, Additional_access_technologies[0], Additional_access_technologies_struct_t, Count_additional_access_technologies),
850CSN_DESCR_END (Additional_access_technologies_t)
851
Ivan Kluchnikov9b06ff02012-06-15 10:13:30 +0400852gint16 Additional_access_technologies_Dissector(csnStream_t* ar, bitvec* vector, unsigned& readIndex, void* data)
Ivan Kluchnikov487a1412011-12-21 13:17:53 +0300853{
854 if (ar->direction == 0)
855 {
856 return csnStreamEncoder(ar, CSNDESCR(Additional_access_technologies_t), vector, readIndex, data);
857 }
858 else
859 {
860 return csnStreamDecoder(ar, CSNDESCR(Additional_access_technologies_t), vector, readIndex, data);
861 }
862}
863
864static const
865CSN_ChoiceElement_t MS_RA_capability_value_Choice[] =
866{
867 {4, AccTech_GSMP, M_SERIALIZE (MS_RA_capability_value_t, u.Content, Content_Dissector)}, /* Long Form */
868 {4, AccTech_GSME, M_SERIALIZE (MS_RA_capability_value_t, u.Content, Content_Dissector)}, /* Long Form */
869 {4, AccTech_GSM1800, M_SERIALIZE (MS_RA_capability_value_t, u.Content, Content_Dissector)}, /* Long Form */
870 {4, AccTech_GSM1900, M_SERIALIZE (MS_RA_capability_value_t, u.Content, Content_Dissector)}, /* Long Form */
871 {4, AccTech_GSM850, M_SERIALIZE (MS_RA_capability_value_t, u.Content, Content_Dissector)}, /* Long Form */
872 {4, AccTech_GSMOther, M_SERIALIZE (MS_RA_capability_value_t, u.Additional_access_technologies, Additional_access_technologies_Dissector)}, /* Short Form */
873};
874
875static const
876CSN_DESCR_BEGIN(MS_RA_capability_value_t)
877 M_CHOICE (MS_RA_capability_value_t, IndexOfAccTech, MS_RA_capability_value_Choice, ElementsOf(MS_RA_capability_value_Choice)),
878CSN_DESCR_END (MS_RA_capability_value_t)
879
880static const
881CSN_DESCR_BEGIN (MS_Radio_Access_capability_t)
882/*Will be done in the main routines:*/
883/*M_UINT (MS_Radio_Access_capability_t, IEI, 8),*/
884/*M_UINT (MS_Radio_Access_capability_t, Length, 8),*/
885
886 M_REC_TARRAY_1(MS_Radio_Access_capability_t, MS_RA_capability_value[0], MS_RA_capability_value_t, Count_MS_RA_capability_value),
887CSN_DESCR_END (MS_Radio_Access_capability_t)
888
889/*< MS Classmark 3 IE >*/
890static const
891CSN_DESCR_BEGIN(ARC_t)
892 M_UINT (ARC_t, A5_Bits, 4),
893 M_UINT (ARC_t, Arc2_Spare, 4),
894 M_UINT (ARC_t, Arc1, 4),
895CSN_DESCR_END (ARC_t)
896
897static const
898CSN_ChoiceElement_t MultibandChoice[] =
899{
900 {3, 0x00, M_UINT(Multiband_t, u.A5_Bits, 4)},
901 {3, 0x05, M_TYPE(Multiband_t, u.ARC, ARC_t)},
902 {3, 0x06, M_TYPE(Multiband_t, u.ARC, ARC_t)},
903 {3, 0x01, M_TYPE(Multiband_t, u.ARC, ARC_t)},
904 {3, 0x02, M_TYPE(Multiband_t, u.ARC, ARC_t)},
905 {3, 0x04, M_TYPE(Multiband_t, u.ARC, ARC_t)},
906};
907
908static const
909CSN_DESCR_BEGIN(Multiband_t)
910 M_CHOICE (Multiband_t, Multiband, MultibandChoice, ElementsOf(MultibandChoice)),
911CSN_DESCR_END (Multiband_t)
912
913static const
914CSN_DESCR_BEGIN(EDGE_RF_Pwr_t)
915 M_NEXT_EXIST (EDGE_RF_Pwr_t, ExistEDGE_RF_PwrCap1, 1),
916 M_UINT (EDGE_RF_Pwr_t, EDGE_RF_PwrCap1, 2),
917
918 M_NEXT_EXIST (EDGE_RF_Pwr_t, ExistEDGE_RF_PwrCap2, 1),
919 M_UINT (EDGE_RF_Pwr_t, EDGE_RF_PwrCap2, 2),
920CSN_DESCR_END (EDGE_RF_Pwr_t)
921
922static const
923CSN_DESCR_BEGIN(MS_Class3_Unpacked_t)
924 M_UINT (MS_Class3_Unpacked_t, Spare1, 1),
925 M_TYPE (MS_Class3_Unpacked_t, Multiband, Multiband_t),
926
927 M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_R_Support, 1),
928 M_UINT (MS_Class3_Unpacked_t, R_GSM_Arc, 3),
929
930 M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_MultiSlotCapability, 1),
931 M_UINT (MS_Class3_Unpacked_t, MultiSlotClass, 5),
932
933 M_UINT (MS_Class3_Unpacked_t, UCS2, 1),
934 M_UINT (MS_Class3_Unpacked_t, ExtendedMeasurementCapability, 1),
935
936 M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_MS_MeasurementCapability, 2),
937 M_UINT (MS_Class3_Unpacked_t, SMS_VALUE, 4),
938 M_UINT (MS_Class3_Unpacked_t, SM_VALUE, 4),
939
940 M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_MS_PositioningMethodCapability, 1),
941 M_UINT (MS_Class3_Unpacked_t, MS_PositioningMethod, 5),
942
943 M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_EDGE_MultiSlotCapability, 1),
944 M_UINT (MS_Class3_Unpacked_t, EDGE_MultiSlotClass, 5),
945
946 M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_EDGE_Struct, 2),
947 M_UINT (MS_Class3_Unpacked_t, ModulationCapability, 1),
948 M_TYPE (MS_Class3_Unpacked_t, EDGE_RF_PwrCaps, EDGE_RF_Pwr_t),
949
950 M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_GSM400_Info, 2),
951 M_UINT (MS_Class3_Unpacked_t, GSM400_Bands, 2),
952 M_UINT (MS_Class3_Unpacked_t, GSM400_Arc, 4),
953
954 M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_GSM850_Arc, 1),
955 M_UINT (MS_Class3_Unpacked_t, GSM850_Arc, 4),
956
957 M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_PCS1900_Arc, 1),
958 M_UINT (MS_Class3_Unpacked_t, PCS1900_Arc, 4),
959
960 M_UINT (MS_Class3_Unpacked_t, UMTS_FDD_Radio_Access_Technology_Capability, 1),
961 M_UINT (MS_Class3_Unpacked_t, UMTS_384_TDD_Radio_Access_Technology_Capability, 1),
962 M_UINT (MS_Class3_Unpacked_t, CDMA2000_Radio_Access_Technology_Capability, 1),
963
964 M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_DTM_GPRS_multislot_class, 3),
965 M_UINT (MS_Class3_Unpacked_t, DTM_GPRS_multislot_class, 2),
966 M_UINT (MS_Class3_Unpacked_t, Single_Slot_DTM, 1),
967 M_TYPE (MS_Class3_Unpacked_t, DTM_EGPRS_Params, DTM_EGPRS_t),
968
969 M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_SingleBandSupport, 1),
970 M_UINT (MS_Class3_Unpacked_t, GSM_Band, 4),
971
972 M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_GSM_700_Associated_Radio_Capability, 1),
973 M_UINT (MS_Class3_Unpacked_t, GSM_700_Associated_Radio_Capability, 4),
974
975 M_UINT (MS_Class3_Unpacked_t, UMTS_128_TDD_Radio_Access_Technology_Capability, 1),
976 M_UINT (MS_Class3_Unpacked_t, GERAN_Feature_Package_1, 1),
977
978 M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_Extended_DTM_multislot_class, 2),
979 M_UINT (MS_Class3_Unpacked_t, Extended_DTM_GPRS_multislot_class, 2),
980 M_UINT (MS_Class3_Unpacked_t, Extended_DTM_EGPRS_multislot_class, 2),
981
982 M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_HighMultislotCapability, 1),
983 M_UINT (MS_Class3_Unpacked_t, HighMultislotCapability, 2),
984
985 M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_GERAN_lu_ModeCapability, 1),
986 M_UINT (MS_Class3_Unpacked_t, GERAN_lu_ModeCapability, 4),
987
988 M_UINT (MS_Class3_Unpacked_t, GERAN_FeaturePackage_2, 1),
989
990 M_UINT (MS_Class3_Unpacked_t, GMSK_MultislotPowerProfile, 2),
991 M_UINT (MS_Class3_Unpacked_t, EightPSK_MultislotProfile, 2),
992
993 M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_TGSM_400_Bands, 2),
994 M_UINT (MS_Class3_Unpacked_t, TGSM_400_BandsSupported, 2),
995 M_UINT (MS_Class3_Unpacked_t, TGSM_400_AssociatedRadioCapability, 4),
996
997 M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_TGSM_900_AssociatedRadioCapability, 1),
998 M_UINT (MS_Class3_Unpacked_t, TGSM_900_AssociatedRadioCapability, 4),
999
1000 M_UINT (MS_Class3_Unpacked_t, DownlinkAdvancedReceiverPerformance, 2),
1001 M_UINT (MS_Class3_Unpacked_t, DTM_EnhancementsCapability, 1),
1002
1003 M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_DTM_GPRS_HighMultislotClass, 3),
1004 M_UINT (MS_Class3_Unpacked_t, DTM_GPRS_HighMultislotClass, 3),
1005 M_UINT (MS_Class3_Unpacked_t, OffsetRequired, 1),
1006 M_TYPE (MS_Class3_Unpacked_t, DTM_EGPRS_HighMultislotClass, DTM_EGPRS_HighMultislotClass_t),
1007
1008 M_UINT (MS_Class3_Unpacked_t, RepeatedSACCH_Capability, 1),
1009 M_UINT (MS_Class3_Unpacked_t, Spare2, 1),
1010CSN_DESCR_END (MS_Class3_Unpacked_t)
1011
1012static const
1013CSN_DESCR_BEGIN(Channel_Request_Description_t)
1014 M_UINT (Channel_Request_Description_t, PEAK_THROUGHPUT_CLASS, 4),
1015 M_UINT (Channel_Request_Description_t, RADIO_PRIORITY, 2),
1016 M_BIT (Channel_Request_Description_t, RLC_MODE),
1017 M_BIT (Channel_Request_Description_t, LLC_PDU_TYPE),
1018 M_UINT (Channel_Request_Description_t, RLC_OCTET_COUNT, 16),
1019CSN_DESCR_END (Channel_Request_Description_t)
1020
1021/* < Packet Resource Request message content > */
1022static const
1023CSN_ChoiceElement_t PacketResourceRequestID[] =
1024{
1025 {1, 0, M_TYPE(PacketResourceRequestID_t, u.Global_TFI, Global_TFI_t)},
1026 {1, 0x01, M_UINT(PacketResourceRequestID_t, u.TLLI, 32)},
1027};
1028
1029static const
1030CSN_DESCR_BEGIN(PacketResourceRequestID_t)
1031 M_CHOICE (PacketResourceRequestID_t, UnionType, PacketResourceRequestID, ElementsOf(PacketResourceRequestID)),
1032CSN_DESCR_END (PacketResourceRequestID_t)
1033
1034static const
1035CSN_DESCR_BEGIN(BEP_MeasurementReport_t)
1036 M_NEXT_EXIST (BEP_MeasurementReport_t, Exist, 3),
1037 M_UNION (BEP_MeasurementReport_t, 2),
1038 M_UINT (BEP_MeasurementReport_t, u.MEAN_BEP_GMSK, 4),
1039 M_UINT (BEP_MeasurementReport_t, u.MEAN_BEP_8PSK, 4),
1040CSN_DESCR_END (BEP_MeasurementReport_t)
1041
1042static const
1043CSN_DESCR_BEGIN(InterferenceMeasurementReport_t)
1044 M_NEXT_EXIST (InterferenceMeasurementReport_t, Exist, 1),
1045 M_UINT (InterferenceMeasurementReport_t, I_LEVEL, 4),
1046CSN_DESCR_END (InterferenceMeasurementReport_t)
1047
1048static const
1049CSN_DESCR_BEGIN(EGPRS_TimeslotLinkQualityMeasurements_t)
1050 M_NEXT_EXIST (EGPRS_TimeslotLinkQualityMeasurements_t, Exist_BEP_MEASUREMENTS, 1),
1051 M_TYPE_ARRAY (EGPRS_TimeslotLinkQualityMeasurements_t, BEP_MEASUREMENTS, BEP_MeasurementReport_t, 8),
1052
1053 M_NEXT_EXIST (EGPRS_TimeslotLinkQualityMeasurements_t, Exist_INTERFERENCE_MEASUREMENTS, 1),
1054 M_TYPE_ARRAY (EGPRS_TimeslotLinkQualityMeasurements_t, INTERFERENCE_MEASUREMENTS, InterferenceMeasurementReport_t, 8),
1055CSN_DESCR_END (EGPRS_TimeslotLinkQualityMeasurements_t)
1056
1057static const
1058CSN_DESCR_BEGIN(EGPRS_BEP_LinkQualityMeasurements_t)
1059 M_NEXT_EXIST (EGPRS_BEP_LinkQualityMeasurements_t, Exist_MEAN_CV_BEP_GMSK, 2),
1060 M_UINT (EGPRS_BEP_LinkQualityMeasurements_t, MEAN_BEP_GMSK, 5),
1061 M_UINT (EGPRS_BEP_LinkQualityMeasurements_t, CV_BEP_GMSK, 3),
1062
1063 M_NEXT_EXIST (EGPRS_BEP_LinkQualityMeasurements_t, Exist_MEAN_CV_BEP_8PSK, 2),
1064 M_UINT (EGPRS_BEP_LinkQualityMeasurements_t, MEAN_BEP_8PSK, 5),
1065 M_UINT (EGPRS_BEP_LinkQualityMeasurements_t, CV_BEP_8PSK, 3),
1066CSN_DESCR_END (EGPRS_BEP_LinkQualityMeasurements_t)
1067
1068static const
1069CSN_DESCR_BEGIN(PRR_AdditionsR99_t)
1070 M_NEXT_EXIST (PRR_AdditionsR99_t, Exist_EGPRS_BEP_LinkQualityMeasurements, 1),
1071 M_TYPE (PRR_AdditionsR99_t, EGPRS_BEP_LinkQualityMeasurements, EGPRS_BEP_LinkQualityMeasurements_t),
1072
1073 M_NEXT_EXIST (PRR_AdditionsR99_t, Exist_EGPRS_TimeslotLinkQualityMeasurements, 1),
1074 M_TYPE (PRR_AdditionsR99_t, EGPRS_TimeslotLinkQualityMeasurements, EGPRS_TimeslotLinkQualityMeasurements_t),
1075
1076 M_NEXT_EXIST (PRR_AdditionsR99_t, Exist_PFI, 1),
1077 M_UINT (PRR_AdditionsR99_t, PFI, 7),
1078
1079 M_UINT (PRR_AdditionsR99_t, MS_RAC_AdditionalInformationAvailable, 1),
1080 M_UINT (PRR_AdditionsR99_t, RetransmissionOfPRR, 1),
1081CSN_DESCR_END (PRR_AdditionsR99_t)
1082
1083static const
1084CSN_DESCR_BEGIN (Packet_Resource_Request_t)
1085 /* Mac header */
1086 M_UINT (Packet_Resource_Request_t, PayloadType, 2),
1087 M_UINT (Packet_Resource_Request_t, spare, 5),
1088 M_UINT (Packet_Resource_Request_t, R, 1),
1089 M_UINT (Packet_Resource_Request_t, MESSAGE_TYPE, 6),
1090 /* Mac header */
1091
1092 M_NEXT_EXIST (Packet_Resource_Request_t, Exist_ACCESS_TYPE, 1),
1093 M_UINT (Packet_Resource_Request_t, ACCESS_TYPE, 2),
1094
1095 M_TYPE (Packet_Resource_Request_t, ID, PacketResourceRequestID_t),
1096
1097 M_NEXT_EXIST (Packet_Resource_Request_t, Exist_MS_Radio_Access_capability, 1),
1098 M_TYPE (Packet_Resource_Request_t, MS_Radio_Access_capability, MS_Radio_Access_capability_t),
1099
1100 M_TYPE (Packet_Resource_Request_t, Channel_Request_Description, Channel_Request_Description_t),
1101
1102 M_NEXT_EXIST (Packet_Resource_Request_t, Exist_CHANGE_MARK, 1),
1103 M_UINT (Packet_Resource_Request_t, CHANGE_MARK, 2),
1104
1105 M_UINT (Packet_Resource_Request_t, C_VALUE, 6),
1106
1107 M_NEXT_EXIST (Packet_Resource_Request_t, Exist_SIGN_VAR, 1),
1108 M_UINT (Packet_Resource_Request_t, SIGN_VAR, 6),
1109
1110 M_TYPE_ARRAY (Packet_Resource_Request_t, Slot, InterferenceMeasurementReport_t, 8),
1111
1112 M_NEXT_EXIST_OR_NULL(Packet_Resource_Request_t, Exist_AdditionsR99, 1),
1113 M_TYPE (Packet_Resource_Request_t, AdditionsR99, PRR_AdditionsR99_t),
1114CSN_DESCR_END (Packet_Resource_Request_t)
1115
1116/*< Packet Mobile TBF Status message content > */
1117static const
1118CSN_DESCR_BEGIN(Packet_Mobile_TBF_Status_t)
1119 /* Mac header */
1120 M_UINT (Packet_Mobile_TBF_Status_t, PayloadType, 2),
1121 M_UINT (Packet_Mobile_TBF_Status_t, spare, 5),
1122 M_UINT (Packet_Mobile_TBF_Status_t, R, 1),
1123 M_UINT (Packet_Mobile_TBF_Status_t, MESSAGE_TYPE, 6),
1124 /* Mac header */
1125
1126 M_TYPE (Packet_Mobile_TBF_Status_t, Global_TFI, Global_TFI_t),
1127 M_UINT (Packet_Mobile_TBF_Status_t, TBF_CAUSE, 3),
1128
1129 M_NEXT_EXIST (Packet_Mobile_TBF_Status_t, Exist_STATUS_MESSAGE_TYPE, 1),
1130 M_UINT (Packet_Mobile_TBF_Status_t, STATUS_MESSAGE_TYPE, 6),
1131CSN_DESCR_END (Packet_Mobile_TBF_Status_t)
1132
1133/*< Packet PSI Status message content > */
1134static const
1135CSN_DESCR_BEGIN(PSI_Message_t)
1136 M_UINT (PSI_Message_t, PSI_MESSAGE_TYPE, 6),
1137 M_UINT (PSI_Message_t, PSIX_CHANGE_MARK, 2),
1138 M_NEXT_EXIST (PSI_Message_t, Exist_PSIX_COUNT_and_Instance_Bitmap, 2),
1139 M_FIXED (PSI_Message_t, 4, 0), /* Placeholder for PSIX_COUNT (4 bits) */
1140 M_FIXED (PSI_Message_t, 1, 0), /* Placeholder for Instance bitmap (1 bit) */
1141CSN_DESCR_END (PSI_Message_t)
1142
1143static const
1144CSN_DESCR_BEGIN(PSI_Message_List_t)
1145 M_REC_TARRAY (PSI_Message_List_t, PSI_Message[0], PSI_Message_t, Count_PSI_Message),
1146 M_FIXED (PSI_Message_List_t, 1, 0x00),
1147 M_UINT (PSI_Message_List_t, ADDITIONAL_MSG_TYPE, 1),
1148CSN_DESCR_END (PSI_Message_List_t)
1149
1150static const
1151CSN_DESCR_BEGIN(Unknown_PSI_Message_List_t)
1152 M_FIXED (Unknown_PSI_Message_List_t, 1, 0x00),
1153 M_UINT (Unknown_PSI_Message_List_t, ADDITIONAL_MSG_TYPE, 1),
1154CSN_DESCR_END (Unknown_PSI_Message_List_t)
1155
1156static const
1157CSN_DESCR_BEGIN(Packet_PSI_Status_t)
1158 /* Mac header */
1159 M_UINT (Packet_PSI_Status_t, PayloadType, 2),
1160 M_UINT (Packet_PSI_Status_t, spare, 5),
1161 M_UINT (Packet_PSI_Status_t, R, 1),
1162 M_UINT (Packet_PSI_Status_t, MESSAGE_TYPE, 6),
1163 /* Mac header */
1164
1165 M_TYPE (Packet_PSI_Status_t, Global_TFI, Global_TFI_t),
1166 M_UINT (Packet_PSI_Status_t, PBCCH_CHANGE_MARK, 3),
1167 M_TYPE (Packet_PSI_Status_t, PSI_Message_List, PSI_Message_List_t),
1168 M_TYPE (Packet_PSI_Status_t, Unknown_PSI_Message_List, Unknown_PSI_Message_List_t),
1169CSN_DESCR_END (Packet_PSI_Status_t)
1170
1171/* < Packet SI Status message content > */
1172
1173static const
1174CSN_DESCR_BEGIN(SI_Message_t)
1175 M_UINT (SI_Message_t, SI_MESSAGE_TYPE, 8),
1176 M_UINT (SI_Message_t, MESS_REC, 2),
1177CSN_DESCR_END (SI_Message_t)
1178
1179static const
1180CSN_DESCR_BEGIN(SI_Message_List_t)
1181 M_REC_TARRAY (SI_Message_List_t, SI_Message[0], SI_Message_t, Count_SI_Message),
1182 M_FIXED (SI_Message_List_t, 1, 0x00),
1183 M_UINT (SI_Message_List_t, ADDITIONAL_MSG_TYPE, 1),
1184CSN_DESCR_END (SI_Message_List_t)
1185
1186static const
1187CSN_DESCR_BEGIN(Unknown_SI_Message_List_t)
1188 M_FIXED (Unknown_SI_Message_List_t, 1, 0x00),
1189 M_UINT (Unknown_SI_Message_List_t, ADDITIONAL_MSG_TYPE, 1),
1190CSN_DESCR_END (Unknown_SI_Message_List_t)
1191
1192static const
1193CSN_DESCR_BEGIN(Packet_SI_Status_t)
1194 /* Mac header */
1195 M_UINT (Packet_SI_Status_t, PayloadType, 2),
1196 M_UINT (Packet_SI_Status_t, spare, 5),
1197 M_UINT (Packet_SI_Status_t, R, 1),
1198 M_UINT (Packet_SI_Status_t, MESSAGE_TYPE, 6),
1199 /* Mac header */
1200
1201 M_TYPE (Packet_SI_Status_t, Global_TFI, Global_TFI_t),
1202 M_UINT (Packet_SI_Status_t, BCCH_CHANGE_MARK, 3),
1203 M_TYPE (Packet_SI_Status_t, SI_Message_List, SI_Message_List_t),
1204 M_TYPE (Packet_SI_Status_t, Unknown_SI_Message_List, Unknown_SI_Message_List_t),
1205CSN_DESCR_END (Packet_SI_Status_t)
1206
1207/* < Packet Downlink Ack/Nack message content > */
1208static const
1209CSN_DESCR_BEGIN(PD_AckNack_AdditionsR99_t)
1210 M_NEXT_EXIST (PD_AckNack_AdditionsR99_t, Exist_PFI, 1),
1211 M_UINT (PD_AckNack_AdditionsR99_t, PFI, 7),
1212CSN_DESCR_END (PD_AckNack_AdditionsR99_t)
1213
1214static const
1215CSN_DESCR_BEGIN (Packet_Downlink_Ack_Nack_t)
1216 M_UINT (Packet_Downlink_Ack_Nack_t, PayloadType, 2),
1217 M_UINT (Packet_Downlink_Ack_Nack_t, spare, 5),
1218 M_BIT (Packet_Downlink_Ack_Nack_t, R),
1219 M_UINT (Packet_Downlink_Ack_Nack_t, MESSAGE_TYPE, 6),
1220 M_UINT (Packet_Downlink_Ack_Nack_t, DOWNLINK_TFI, 5),
1221 M_TYPE (Packet_Downlink_Ack_Nack_t, Ack_Nack_Description, Ack_Nack_Description_t),
1222
1223 M_NEXT_EXIST (Packet_Downlink_Ack_Nack_t, Exist_Channel_Request_Description, 1),
1224 M_TYPE (Packet_Downlink_Ack_Nack_t, Channel_Request_Description, Channel_Request_Description_t),
1225
1226 M_TYPE (Packet_Downlink_Ack_Nack_t, Channel_Quality_Report, Channel_Quality_Report_t),
1227
1228 M_NEXT_EXIST_OR_NULL(Packet_Downlink_Ack_Nack_t, Exist_AdditionsR99, 1),
1229 M_TYPE (Packet_Downlink_Ack_Nack_t, AdditionsR99, PD_AckNack_AdditionsR99_t),
1230CSN_DESCR_END (Packet_Downlink_Ack_Nack_t)
1231
1232
1233/*< EGPRS Packet Downlink Ack/Nack message content > */
1234static const
1235CSN_DESCR_BEGIN(EGPRS_ChannelQualityReport_t)
1236 M_TYPE (EGPRS_ChannelQualityReport_t, EGPRS_BEP_LinkQualityMeasurements, EGPRS_BEP_LinkQualityMeasurements_t),
1237 M_UINT (EGPRS_ChannelQualityReport_t, C_VALUE, 6),
1238 M_TYPE (EGPRS_ChannelQualityReport_t, EGPRS_TimeslotLinkQualityMeasurements, EGPRS_TimeslotLinkQualityMeasurements_t),
1239CSN_DESCR_END (EGPRS_ChannelQualityReport_t)
1240
1241static const
1242CSN_DESCR_BEGIN(EGPRS_PD_AckNack_t)
1243/* M_CALLBACK (EGPRS_PD_AckNack_t, (void*)21, IsSupported, IsSupported), */
1244 M_UINT (EGPRS_PD_AckNack_t, PayloadType, 2),
1245 M_UINT (EGPRS_PD_AckNack_t, spare, 5),
1246 M_BIT (EGPRS_PD_AckNack_t, R),
1247
1248 M_UINT (EGPRS_PD_AckNack_t, MESSAGE_TYPE, 6),
1249 M_UINT (EGPRS_PD_AckNack_t, DOWNLINK_TFI, 5),
1250 M_UINT (EGPRS_PD_AckNack_t, MS_OUT_OF_MEMORY, 1),
1251
1252 M_NEXT_EXIST (EGPRS_PD_AckNack_t, Exist_EGPRS_ChannelQualityReport, 1),
1253 M_TYPE (EGPRS_PD_AckNack_t, EGPRS_ChannelQualityReport, EGPRS_ChannelQualityReport_t),
1254
1255 M_NEXT_EXIST (EGPRS_PD_AckNack_t, Exist_ChannelRequestDescription, 1),
1256 M_TYPE (EGPRS_PD_AckNack_t, ChannelRequestDescription, Channel_Request_Description_t),
1257
1258 M_NEXT_EXIST (EGPRS_PD_AckNack_t, Exist_PFI, 1),
1259 M_UINT (EGPRS_PD_AckNack_t, PFI, 7),
1260
1261 M_NEXT_EXIST (EGPRS_PD_AckNack_t, Exist_ExtensionBits, 1),
1262 M_TYPE (EGPRS_PD_AckNack_t, ExtensionBits, Extension_Bits_t),
1263
1264 M_TYPE (EGPRS_PD_AckNack_t, EGPRS_AckNack, EGPRS_AckNack_t),
1265/* M_CALLBACK (EGPRS_PD_AckNack_t, (void*)24, EGPRS_AckNack, EGPRS_AckNack), */
1266 M_LEFT_VAR_BMP (EGPRS_PD_AckNack_t, EGPRS_AckNack.URBB, EGPRS_AckNack.URBB_LENGTH, 0),
1267
1268CSN_DESCR_END (EGPRS_PD_AckNack_t)
1269
1270static const
1271CSN_DESCR_BEGIN(FDD_Target_Cell_t)
1272 M_UINT (FDD_Target_Cell_t, FDD_ARFCN, 14),
1273 M_UINT (FDD_Target_Cell_t, DIVERSITY, 1),
1274 M_NEXT_EXIST (FDD_Target_Cell_t, Exist_Bandwith_FDD, 1),
1275 M_UINT (FDD_Target_Cell_t, BANDWITH_FDD, 3),
1276 M_UINT (FDD_Target_Cell_t, SCRAMBLING_CODE, 9),
1277CSN_DESCR_END (FDD_Target_Cell_t)
1278
1279static const
1280CSN_DESCR_BEGIN(TDD_Target_Cell_t)
1281 M_UINT (TDD_Target_Cell_t, TDD_ARFCN, 14),
1282 M_UINT (TDD_Target_Cell_t, DIVERSITY_TDD, 1),
1283 M_NEXT_EXIST (TDD_Target_Cell_t, Exist_Bandwith_TDD, 1),
1284 M_UINT (TDD_Target_Cell_t, BANDWITH_TDD, 3),
1285 M_UINT (TDD_Target_Cell_t, CELL_PARAMETER, 7),
1286 M_UINT (TDD_Target_Cell_t, Sync_Case_TSTD, 1),
1287CSN_DESCR_END (TDD_Target_Cell_t)
1288
1289static const
1290CSN_DESCR_BEGIN(EUTRAN_Target_Cell_t)
1291 M_UINT (EUTRAN_Target_Cell_t, EARFCN, 16),
1292 M_NEXT_EXIST (EUTRAN_Target_Cell_t, Exist_Measurement_Bandwidth, 1),
1293 M_UINT (EUTRAN_Target_Cell_t, Measurement_Bandwidth, 3),
1294 M_UINT (EUTRAN_Target_Cell_t, Physical_Layer_Cell_Identity, 9),
1295CSN_DESCR_END (EUTRAN_Target_Cell_t)
1296
1297static const
1298CSN_DESCR_BEGIN(UTRAN_CSG_Target_Cell_t)
1299 M_UINT (UTRAN_CSG_Target_Cell_t, UTRAN_CI, 28),
1300 M_NEXT_EXIST (UTRAN_CSG_Target_Cell_t, Exist_PLMN_ID, 1),
1301 M_TYPE (UTRAN_CSG_Target_Cell_t, PLMN_ID, PLMN_t),
1302CSN_DESCR_END (UTRAN_CSG_Target_Cell_t)
1303
1304static const
1305CSN_DESCR_BEGIN(EUTRAN_CSG_Target_Cell_t)
1306 M_UINT (EUTRAN_CSG_Target_Cell_t, EUTRAN_CI, 28),
1307 M_UINT (EUTRAN_CSG_Target_Cell_t, Tracking_Area_Code, 16),
1308 M_NEXT_EXIST (EUTRAN_CSG_Target_Cell_t, Exist_PLMN_ID, 1),
1309 M_TYPE (EUTRAN_CSG_Target_Cell_t, PLMN_ID, PLMN_t),
1310CSN_DESCR_END (EUTRAN_CSG_Target_Cell_t)
1311
1312static const
1313CSN_DESCR_BEGIN(PCCF_AdditionsR9_t)
1314 M_NEXT_EXIST (PCCF_AdditionsR9_t, Exist_UTRAN_CSG_Target_Cell, 1),
1315 M_TYPE (PCCF_AdditionsR9_t, UTRAN_CSG_Target_Cell, UTRAN_CSG_Target_Cell_t),
1316 M_NEXT_EXIST (PCCF_AdditionsR9_t, Exist_EUTRAN_CSG_Target_Cell, 1),
1317 M_TYPE (PCCF_AdditionsR9_t, EUTRAN_CSG_Target_Cell, EUTRAN_CSG_Target_Cell_t),
1318CSN_DESCR_END (PCCF_AdditionsR9_t)
1319
1320static const
1321CSN_DESCR_BEGIN(PCCF_AdditionsR8_t)
1322 M_NEXT_EXIST (PCCF_AdditionsR8_t, Exist_EUTRAN_Target_Cell, 1),
1323 M_TYPE (PCCF_AdditionsR8_t, EUTRAN_Target_Cell, EUTRAN_Target_Cell_t),
1324 M_NEXT_EXIST_OR_NULL(PCCF_AdditionsR8_t, Exist_AdditionsR9, 1),
1325 M_TYPE (PCCF_AdditionsR8_t, AdditionsR9, PCCF_AdditionsR9_t),
1326CSN_DESCR_END (PCCF_AdditionsR8_t)
1327
1328static const
1329CSN_DESCR_BEGIN(PCCF_AdditionsR5_t)
1330 M_NEXT_EXIST (PCCF_AdditionsR5_t, Exist_G_RNTI_extention, 1),
1331 M_UINT (PCCF_AdditionsR5_t, G_RNTI_extention, 4),
1332 M_NEXT_EXIST_OR_NULL(PCCF_AdditionsR5_t, Exist_AdditionsR8, 1),
1333 M_TYPE (PCCF_AdditionsR5_t, AdditionsR8, PCCF_AdditionsR8_t),
1334CSN_DESCR_END (PCCF_AdditionsR5_t)
1335
1336static const
1337CSN_DESCR_BEGIN(PCCF_AdditionsR99_t)
1338 M_NEXT_EXIST (PCCF_AdditionsR99_t, Exist_FDD_Description, 1),
1339 M_TYPE (PCCF_AdditionsR99_t, FDD_Target_Cell, FDD_Target_Cell_t),
1340 M_NEXT_EXIST (PCCF_AdditionsR99_t, Exist_TDD_Description, 1),
1341 M_TYPE (PCCF_AdditionsR99_t, TDD_Target_Cell, TDD_Target_Cell_t),
1342 M_NEXT_EXIST_OR_NULL(PCCF_AdditionsR99_t, Exist_AdditionsR5, 1),
1343 M_TYPE (PCCF_AdditionsR99_t, AdditionsR5, PCCF_AdditionsR5_t),
1344CSN_DESCR_END (PCCF_AdditionsR99_t)
1345
1346/*< Packet Cell Change Failure message content > */
1347static const
1348CSN_DESCR_BEGIN(Packet_Cell_Change_Failure_t)
1349 /* Mac header */
1350 M_UINT (Packet_Cell_Change_Failure_t, PayloadType, 2),
1351 M_UINT (Packet_Cell_Change_Failure_t, spare, 5),
1352 M_UINT (Packet_Cell_Change_Failure_t, R, 1),
1353 M_UINT (Packet_Cell_Change_Failure_t, MESSAGE_TYPE, 6),
1354 /* Mac header */
1355
1356 M_UINT (Packet_Cell_Change_Failure_t, TLLI, 32),
1357 M_UINT (Packet_Cell_Change_Failure_t, ARFCN, 10),
1358 M_UINT (Packet_Cell_Change_Failure_t, BSIC, 6),
1359 M_UINT (Packet_Cell_Change_Failure_t, CAUSE, 4),
1360
1361 M_NEXT_EXIST_OR_NULL (Packet_Cell_Change_Failure_t, Exist_AdditionsR99, 1),
1362 M_TYPE (Packet_Cell_Change_Failure_t, AdditionsR99, PCCF_AdditionsR99_t),
1363CSN_DESCR_END (Packet_Cell_Change_Failure_t)
1364
1365/*< Packet Uplink Ack/Nack message content > */
1366static const
1367CSN_DESCR_BEGIN(Power_Control_Parameters_t)
1368 M_UINT (Power_Control_Parameters_t, ALPHA, 4),
1369
1370 M_NEXT_EXIST (Power_Control_Parameters_t, Slot[0].Exist, 1),
1371 M_UINT (Power_Control_Parameters_t, Slot[0].GAMMA_TN, 5),
1372
1373 M_NEXT_EXIST (Power_Control_Parameters_t, Slot[1].Exist, 1),
1374 M_UINT (Power_Control_Parameters_t, Slot[1].GAMMA_TN, 5),
1375
1376 M_NEXT_EXIST (Power_Control_Parameters_t, Slot[2].Exist, 1),
1377 M_UINT (Power_Control_Parameters_t, Slot[2].GAMMA_TN, 5),
1378
1379 M_NEXT_EXIST (Power_Control_Parameters_t, Slot[3].Exist, 1),
1380 M_UINT (Power_Control_Parameters_t, Slot[3].GAMMA_TN, 5),
1381
1382 M_NEXT_EXIST (Power_Control_Parameters_t, Slot[4].Exist, 1),
1383 M_UINT (Power_Control_Parameters_t, Slot[4].GAMMA_TN, 5),
1384
1385 M_NEXT_EXIST (Power_Control_Parameters_t, Slot[5].Exist, 1),
1386 M_UINT (Power_Control_Parameters_t, Slot[5].GAMMA_TN, 5),
1387
1388 M_NEXT_EXIST (Power_Control_Parameters_t, Slot[6].Exist, 1),
1389 M_UINT (Power_Control_Parameters_t, Slot[6].GAMMA_TN, 5),
1390
1391 M_NEXT_EXIST (Power_Control_Parameters_t, Slot[7].Exist, 1),
1392 M_UINT (Power_Control_Parameters_t, Slot[7].GAMMA_TN, 5),
1393CSN_DESCR_END (Power_Control_Parameters_t)
1394
1395static const
1396CSN_DESCR_BEGIN(PU_AckNack_GPRS_AdditionsR99_t)
1397 M_NEXT_EXIST (PU_AckNack_GPRS_AdditionsR99_t, Exist_PacketExtendedTimingAdvance, 1),
1398 M_UINT (PU_AckNack_GPRS_AdditionsR99_t, PacketExtendedTimingAdvance, 2),
1399
1400 M_UINT (PU_AckNack_GPRS_AdditionsR99_t, TBF_EST, 1),
1401CSN_DESCR_END (PU_AckNack_GPRS_AdditionsR99_t)
1402
1403static const
1404CSN_DESCR_BEGIN (PU_AckNack_GPRS_t)
1405 M_UINT (PU_AckNack_GPRS_t, CHANNEL_CODING_COMMAND, 2),
1406 M_TYPE (PU_AckNack_GPRS_t, Ack_Nack_Description, Ack_Nack_Description_t),
1407
1408 M_NEXT_EXIST (PU_AckNack_GPRS_t, Common_Uplink_Ack_Nack_Data.Exist_CONTENTION_RESOLUTION_TLLI, 1),
1409 M_UINT (PU_AckNack_GPRS_t, Common_Uplink_Ack_Nack_Data.CONTENTION_RESOLUTION_TLLI, 32),
1410
1411 M_NEXT_EXIST (PU_AckNack_GPRS_t, Common_Uplink_Ack_Nack_Data.Exist_Packet_Timing_Advance, 1),
1412 M_TYPE (PU_AckNack_GPRS_t, Common_Uplink_Ack_Nack_Data.Packet_Timing_Advance, Packet_Timing_Advance_t),
1413
1414 M_NEXT_EXIST (PU_AckNack_GPRS_t, Common_Uplink_Ack_Nack_Data.Exist_Power_Control_Parameters, 1),
1415 M_TYPE (PU_AckNack_GPRS_t, Common_Uplink_Ack_Nack_Data.Power_Control_Parameters, Power_Control_Parameters_t),
1416
1417 M_NEXT_EXIST (PU_AckNack_GPRS_t, Common_Uplink_Ack_Nack_Data.Exist_Extension_Bits, 1),
1418 M_TYPE (PU_AckNack_GPRS_t, Common_Uplink_Ack_Nack_Data.Extension_Bits, Extension_Bits_t),
1419
1420 M_UNION (PU_AckNack_GPRS_t, 2), /* Fixed Allocation was removed */
1421 M_UINT (PU_AckNack_GPRS_t, u.FixedAllocationDummy, 1),
1422 CSN_ERROR (PU_AckNack_GPRS_t, "01 <Fixed Allocation>", CSN_ERROR_STREAM_NOT_SUPPORTED),
1423
1424 M_NEXT_EXIST_OR_NULL(PU_AckNack_GPRS_t, Exist_AdditionsR99, 1),
1425 M_TYPE (PU_AckNack_GPRS_t, AdditionsR99, PU_AckNack_GPRS_AdditionsR99_t),
1426CSN_DESCR_END (PU_AckNack_GPRS_t)
1427
1428static const
1429CSN_DESCR_BEGIN(PU_AckNack_EGPRS_00_t)
1430 M_UINT (PU_AckNack_EGPRS_00_t, EGPRS_ChannelCodingCommand, 4),
1431 M_UINT (PU_AckNack_EGPRS_00_t, RESEGMENT, 1),
1432 M_UINT (PU_AckNack_EGPRS_00_t, PRE_EMPTIVE_TRANSMISSION, 1),
1433 M_UINT (PU_AckNack_EGPRS_00_t, PRR_RETRANSMISSION_REQUEST, 1),
1434 M_UINT (PU_AckNack_EGPRS_00_t, ARAC_RETRANSMISSION_REQUEST, 1),
1435
1436 M_NEXT_EXIST (PU_AckNack_EGPRS_00_t, Common_Uplink_Ack_Nack_Data.Exist_CONTENTION_RESOLUTION_TLLI, 1),
1437 M_UINT (PU_AckNack_EGPRS_00_t, Common_Uplink_Ack_Nack_Data.CONTENTION_RESOLUTION_TLLI, 32),
1438
1439 M_UINT (PU_AckNack_EGPRS_00_t, TBF_EST, 1),
1440
1441 M_NEXT_EXIST (PU_AckNack_EGPRS_00_t, Common_Uplink_Ack_Nack_Data.Exist_Packet_Timing_Advance, 1),
1442 M_TYPE (PU_AckNack_EGPRS_00_t, Common_Uplink_Ack_Nack_Data.Packet_Timing_Advance, Packet_Timing_Advance_t),
1443
1444 M_NEXT_EXIST (PU_AckNack_EGPRS_00_t, Exist_Packet_Extended_Timing_Advance, 1),
1445 M_UINT (PU_AckNack_EGPRS_00_t, Packet_Extended_Timing_Advance, 2),
1446
1447 M_NEXT_EXIST (PU_AckNack_EGPRS_00_t, Common_Uplink_Ack_Nack_Data.Exist_Power_Control_Parameters, 1),
1448 M_TYPE (PU_AckNack_EGPRS_00_t, Common_Uplink_Ack_Nack_Data.Power_Control_Parameters, Power_Control_Parameters_t),
1449
1450 M_NEXT_EXIST (PU_AckNack_EGPRS_00_t, Common_Uplink_Ack_Nack_Data.Exist_Extension_Bits, 1),
1451 M_TYPE (PU_AckNack_EGPRS_00_t, Common_Uplink_Ack_Nack_Data.Extension_Bits, Extension_Bits_t),
1452
1453 M_TYPE (PU_AckNack_EGPRS_00_t, EGPRS_AckNack, EGPRS_AckNack_t),
1454/* M_CALLBACK (PU_AckNack_EGPRS_00_t, (void*)24, EGPRS_AckNack, EGPRS_AckNack), */
1455 M_LEFT_VAR_BMP (PU_AckNack_EGPRS_00_t, EGPRS_AckNack.URBB, EGPRS_AckNack.URBB_LENGTH, 0),
1456CSN_DESCR_END (PU_AckNack_EGPRS_00_t)
1457
1458static const
1459CSN_DESCR_BEGIN(PU_AckNack_EGPRS_t)
1460/* M_CALLBACK (PU_AckNack_EGPRS_t, (void*)21, IsSupported, IsSupported), */
1461 M_UNION (PU_AckNack_EGPRS_t, 4),
1462 M_TYPE (PU_AckNack_EGPRS_t, u.PU_AckNack_EGPRS_00, PU_AckNack_EGPRS_00_t),
1463 CSN_ERROR (PU_AckNack_EGPRS_t, "01 <PU_AckNack_EGPRS>", CSN_ERROR_STREAM_NOT_SUPPORTED),
1464 CSN_ERROR (PU_AckNack_EGPRS_t, "10 <PU_AckNack_EGPRS>", CSN_ERROR_STREAM_NOT_SUPPORTED),
1465 CSN_ERROR (PU_AckNack_EGPRS_t, "11 <PU_AckNack_EGPRS>", CSN_ERROR_STREAM_NOT_SUPPORTED),
1466CSN_DESCR_END (PU_AckNack_EGPRS_t)
1467
1468static const
1469CSN_DESCR_BEGIN(Packet_Uplink_Ack_Nack_t)
1470 M_UINT (Packet_Uplink_Ack_Nack_t, MESSAGE_TYPE, 6),
1471 M_UINT (Packet_Uplink_Ack_Nack_t, PAGE_MODE, 2),
1472 M_FIXED (Packet_Uplink_Ack_Nack_t, 2, 0x00),
1473 M_UINT (Packet_Uplink_Ack_Nack_t, UPLINK_TFI, 5),
1474
1475 M_UNION (Packet_Uplink_Ack_Nack_t, 2),
1476 M_TYPE (Packet_Uplink_Ack_Nack_t, u.PU_AckNack_GPRS_Struct, PU_AckNack_GPRS_t),
1477 M_TYPE (Packet_Uplink_Ack_Nack_t, u.PU_AckNack_EGPRS_Struct, PU_AckNack_EGPRS_t),
1478CSN_DESCR_END (Packet_Uplink_Ack_Nack_t)
1479
1480/*< Packet Uplink Assignment message content > */
1481static const
1482CSN_DESCR_BEGIN(CHANGE_MARK_t)
1483 M_UINT (CHANGE_MARK_t, CHANGE_MARK_1, 2),
1484
1485 M_NEXT_EXIST (CHANGE_MARK_t, Exist_CHANGE_MARK_2, 1),
1486 M_UINT (CHANGE_MARK_t, CHANGE_MARK_2, 2),
1487CSN_DESCR_END (CHANGE_MARK_t)
1488
1489static const
1490CSN_DESCR_BEGIN(Indirect_encoding_t)
1491 M_UINT (Indirect_encoding_t, MAIO, 6),
1492 M_UINT (Indirect_encoding_t, MA_NUMBER, 4),
1493
1494 M_NEXT_EXIST (Indirect_encoding_t, Exist_CHANGE_MARK, 1),
1495 M_TYPE (Indirect_encoding_t, CHANGE_MARK, CHANGE_MARK_t),
1496CSN_DESCR_END (Indirect_encoding_t)
1497
1498static const
1499CSN_DESCR_BEGIN(Direct_encoding_1_t)
1500 M_UINT (Direct_encoding_1_t, MAIO, 6),
1501 M_TYPE (Direct_encoding_1_t, GPRS_Mobile_Allocation, GPRS_Mobile_Allocation_t),
1502CSN_DESCR_END (Direct_encoding_1_t)
1503
1504static const
1505CSN_DESCR_BEGIN(Direct_encoding_2_t)
1506 M_UINT (Direct_encoding_2_t, MAIO, 6),
1507 M_UINT (Direct_encoding_2_t, HSN, 6),
1508 M_UINT_OFFSET(Direct_encoding_2_t, Length_of_MA_Frequency_List, 4, 3),
1509 M_VAR_ARRAY (Direct_encoding_2_t, MA_Frequency_List, Length_of_MA_Frequency_List, 0),
1510CSN_DESCR_END (Direct_encoding_2_t)
1511
1512static const
1513CSN_DESCR_BEGIN(Frequency_Parameters_t)
1514 M_UINT (Frequency_Parameters_t, TSC, 3),
1515
1516 M_UNION (Frequency_Parameters_t, 4),
1517 M_UINT (Frequency_Parameters_t, u.ARFCN, 10),
1518 M_TYPE (Frequency_Parameters_t, u.Indirect_encoding, Indirect_encoding_t),
1519 M_TYPE (Frequency_Parameters_t, u.Direct_encoding_1, Direct_encoding_1_t),
1520 M_TYPE (Frequency_Parameters_t, u.Direct_encoding_2, Direct_encoding_2_t),
1521CSN_DESCR_END (Frequency_Parameters_t)
1522
1523static const
1524CSN_DESCR_BEGIN(Packet_Request_Reference_t)
1525 M_UINT (Packet_Request_Reference_t, RANDOM_ACCESS_INFORMATION, 11),
1526 M_UINT_ARRAY (Packet_Request_Reference_t, FRAME_NUMBER, 8, 2),
1527CSN_DESCR_END (Packet_Request_Reference_t)
1528
1529static const
1530CSN_DESCR_BEGIN(Timeslot_Allocation_t)
1531 M_NEXT_EXIST (Timeslot_Allocation_t, Exist, 1),
1532 M_UINT (Timeslot_Allocation_t, USF_TN, 3),
1533CSN_DESCR_END (Timeslot_Allocation_t)
1534
1535static const
1536CSN_DESCR_BEGIN(Timeslot_Allocation_Power_Ctrl_Param_t)
1537 M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, ALPHA, 4),
1538
1539 M_NEXT_EXIST (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[0].Exist, 2),
1540 M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[0].USF_TN, 3),
1541 M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[0].GAMMA_TN, 5),
1542
1543 M_NEXT_EXIST (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[1].Exist, 2),
1544 M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[1].USF_TN, 3),
1545 M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[1].GAMMA_TN, 5),
1546
1547 M_NEXT_EXIST (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[2].Exist, 2),
1548 M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[2].USF_TN, 3),
1549 M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[2].GAMMA_TN, 5),
1550
1551 M_NEXT_EXIST (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[3].Exist, 2),
1552 M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[3].USF_TN, 3),
1553 M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[3].GAMMA_TN, 5),
1554
1555 M_NEXT_EXIST (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[4].Exist, 2),
1556 M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[4].USF_TN, 3),
1557 M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[4].GAMMA_TN, 5),
1558
1559 M_NEXT_EXIST (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[5].Exist, 2),
1560 M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[5].USF_TN, 3),
1561 M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[5].GAMMA_TN, 5),
1562
1563 M_NEXT_EXIST (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[6].Exist, 2),
1564 M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[6].USF_TN, 3),
1565 M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[6].GAMMA_TN, 5),
1566
1567 M_NEXT_EXIST (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[7].Exist, 2),
1568 M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[7].USF_TN, 3),
1569 M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[7].GAMMA_TN, 5),
1570CSN_DESCR_END (Timeslot_Allocation_Power_Ctrl_Param_t)
1571
1572/* USED in <Packet Uplink Assignment message content> */
1573static const
1574CSN_DESCR_BEGIN(Dynamic_Allocation_t)
1575 M_UINT (Dynamic_Allocation_t, Extended_Dynamic_Allocation, 1),
1576
1577 M_NEXT_EXIST (Dynamic_Allocation_t, Exist_P0, 2),
1578 M_UINT (Dynamic_Allocation_t, P0, 4),
1579 M_UINT (Dynamic_Allocation_t, PR_MODE, 1),
1580
1581 M_UINT (Dynamic_Allocation_t, USF_GRANULARITY, 1),
1582
1583 M_NEXT_EXIST (Dynamic_Allocation_t, Exist_UPLINK_TFI_ASSIGNMENT, 1),
1584 M_UINT (Dynamic_Allocation_t, UPLINK_TFI_ASSIGNMENT, 5),
1585
1586 M_NEXT_EXIST (Dynamic_Allocation_t, Exist_RLC_DATA_BLOCKS_GRANTED, 1),
1587 M_UINT (Dynamic_Allocation_t, RLC_DATA_BLOCKS_GRANTED, 8),
1588
1589 M_NEXT_EXIST (Dynamic_Allocation_t, Exist_TBF_Starting_Time, 1),
1590 M_TYPE (Dynamic_Allocation_t, TBF_Starting_Time, Starting_Frame_Number_t),
1591
1592 M_UNION (Dynamic_Allocation_t, 2),
1593 M_TYPE_ARRAY (Dynamic_Allocation_t, u.Timeslot_Allocation, Timeslot_Allocation_t, 8),
1594 M_TYPE (Dynamic_Allocation_t, u.Timeslot_Allocation_Power_Ctrl_Param, Timeslot_Allocation_Power_Ctrl_Param_t),
1595CSN_DESCR_END (Dynamic_Allocation_t)
1596
1597static const
1598CSN_DESCR_BEGIN(Single_Block_Allocation_t)
1599 M_UINT (Single_Block_Allocation_t, TIMESLOT_NUMBER, 3),
1600
1601 M_NEXT_EXIST (Single_Block_Allocation_t, Exist_ALPHA_and_GAMMA_TN, 2),
1602 M_UINT (Single_Block_Allocation_t, ALPHA, 4),
1603 M_UINT (Single_Block_Allocation_t, GAMMA_TN, 5),
1604
1605 M_NEXT_EXIST (Single_Block_Allocation_t, Exist_P0, 3),
1606 M_UINT (Single_Block_Allocation_t, P0, 4),
1607 M_UINT (Single_Block_Allocation_t, BTS_PWR_CTRL_MODE, 1),
1608 M_UINT (Single_Block_Allocation_t, PR_MODE, 1),
1609
1610 M_TYPE (Single_Block_Allocation_t, TBF_Starting_Time, Starting_Frame_Number_t),
1611CSN_DESCR_END (Single_Block_Allocation_t)
1612
1613static const
1614CSN_DESCR_BEGIN(DTM_Dynamic_Allocation_t)
1615 M_UINT (DTM_Dynamic_Allocation_t, Extended_Dynamic_Allocation, 1),
1616
1617 M_NEXT_EXIST (DTM_Dynamic_Allocation_t, Exist_P0, 2),
1618 M_UINT (DTM_Dynamic_Allocation_t, P0, 4),
1619 M_UINT (DTM_Dynamic_Allocation_t, PR_MODE, 1),
1620
1621 M_UINT (DTM_Dynamic_Allocation_t, USF_GRANULARITY, 1),
1622
1623 M_NEXT_EXIST (DTM_Dynamic_Allocation_t, Exist_UPLINK_TFI_ASSIGNMENT, 1),
1624 M_UINT (DTM_Dynamic_Allocation_t, UPLINK_TFI_ASSIGNMENT, 5),
1625
1626 M_NEXT_EXIST (DTM_Dynamic_Allocation_t, Exist_RLC_DATA_BLOCKS_GRANTED, 1),
1627 M_UINT (DTM_Dynamic_Allocation_t, RLC_DATA_BLOCKS_GRANTED, 8),
1628
1629 M_UNION (DTM_Dynamic_Allocation_t, 2),
1630 M_TYPE_ARRAY (DTM_Dynamic_Allocation_t, u.Timeslot_Allocation, Timeslot_Allocation_t, 8),
1631 M_TYPE (DTM_Dynamic_Allocation_t, u.Timeslot_Allocation_Power_Ctrl_Param, Timeslot_Allocation_Power_Ctrl_Param_t),
1632CSN_DESCR_END (DTM_Dynamic_Allocation_t)
1633
1634static const
1635CSN_DESCR_BEGIN(DTM_Single_Block_Allocation_t)
1636 M_UINT (DTM_Single_Block_Allocation_t, TIMESLOT_NUMBER, 3),
1637
1638 M_NEXT_EXIST (DTM_Single_Block_Allocation_t, Exist_ALPHA_and_GAMMA_TN, 2),
1639 M_UINT (DTM_Single_Block_Allocation_t, ALPHA, 4),
1640 M_UINT (DTM_Single_Block_Allocation_t, GAMMA_TN, 5),
1641
1642 M_NEXT_EXIST (DTM_Single_Block_Allocation_t, Exist_P0, 3),
1643 M_UINT (DTM_Single_Block_Allocation_t, P0, 4),
1644 M_UINT (DTM_Single_Block_Allocation_t, BTS_PWR_CTRL_MODE, 1),
1645 M_UINT (DTM_Single_Block_Allocation_t, PR_MODE, 1),
1646CSN_DESCR_END (DTM_Single_Block_Allocation_t)
1647
1648
1649/* Help structures */
1650typedef struct
1651{
1652 Global_TFI_t Global_TFI; /* 0 < Global TFI : < Global TFI IE > > */
1653} h0_Global_TFI_t;
1654
1655static const
1656CSN_DESCR_BEGIN(h0_Global_TFI_t)
1657 M_FIXED (h0_Global_TFI_t, 1, 0x00),
1658 M_TYPE (h0_Global_TFI_t, Global_TFI, Global_TFI_t),
1659CSN_DESCR_END (h0_Global_TFI_t)
1660
1661typedef struct
1662{
1663 guint32 TLLI;/* | 10 < TLLI : bit (32) >*/
1664} h10_TLLI_t;
1665
1666static const
1667CSN_DESCR_BEGIN(h10_TLLI_t)
1668 M_FIXED (h10_TLLI_t, 2, 0x02),
1669 M_UINT (h10_TLLI_t, TLLI, 32),
1670CSN_DESCR_END (h10_TLLI_t)
1671
1672typedef struct
1673{
1674 guint16 TQI;/*| 110 < TQI : bit (16) > */
1675} h110_TQI_t;
1676
1677static const
1678CSN_DESCR_BEGIN(h110_TQI_t)
1679 M_FIXED (h110_TQI_t, 3, 0x06),
1680 M_UINT (h110_TQI_t, TQI, 16),
1681CSN_DESCR_END (h110_TQI_t)
1682
1683typedef struct
1684{
1685 Packet_Request_Reference_t Packet_Request_Reference;/*| 111 < Packet Request Reference : < Packet Request Reference IE > > }*/
1686} h111_Packet_Request_Reference_t;
1687
1688static const
1689CSN_DESCR_BEGIN(h111_Packet_Request_Reference_t)
1690 M_FIXED (h111_Packet_Request_Reference_t, 3, 0x07),
1691 M_TYPE (h111_Packet_Request_Reference_t, Packet_Request_Reference, Packet_Request_Reference_t),
1692CSN_DESCR_END (h111_Packet_Request_Reference_t)
1693
1694static const
1695CSN_ChoiceElement_t PacketUplinkID[] =
1696{
1697 {1, 0 , M_TYPE(PacketUplinkID_t, u.Global_TFI, Global_TFI_t)},
1698 {2, 0x02 , M_UINT(PacketUplinkID_t, u.TLLI, 32)},
1699 {3, 0x06 , M_UINT(PacketUplinkID_t, u.TQI, 16)},
1700 {3, 0x07 , M_TYPE(PacketUplinkID_t, u.Packet_Request_Reference, Packet_Request_Reference_t)},
1701};
1702
1703static const
1704CSN_DESCR_BEGIN(PacketUplinkID_t)
1705 M_CHOICE (PacketUplinkID_t, UnionType, PacketUplinkID, ElementsOf(PacketUplinkID)),
1706CSN_DESCR_END (PacketUplinkID_t)
1707
1708static const
1709CSN_DESCR_BEGIN(PUA_GPRS_AdditionsR99_t)
1710 M_NEXT_EXIST (PUA_GPRS_AdditionsR99_t, Exist_Packet_Extended_Timing_Advance, 1),
1711 M_UINT (PUA_GPRS_AdditionsR99_t, Packet_Extended_Timing_Advance, 2),
1712CSN_DESCR_END (PUA_GPRS_AdditionsR99_t)
1713
1714static const
1715CSN_DESCR_BEGIN (PUA_GPRS_t)
1716 M_UINT (PUA_GPRS_t, CHANNEL_CODING_COMMAND, 2),
1717 M_BIT (PUA_GPRS_t, TLLI_BLOCK_CHANNEL_CODING),
1718 M_TYPE (PUA_GPRS_t, Packet_Timing_Advance, Packet_Timing_Advance_t),
1719
1720 M_NEXT_EXIST (PUA_GPRS_t, Exist_Frequency_Parameters, 1),
1721 M_TYPE (PUA_GPRS_t, Frequency_Parameters, Frequency_Parameters_t),
1722
1723 M_UNION (PUA_GPRS_t, 4),
1724 CSN_ERROR (PUA_GPRS_t, "00 <extension> not implemented", CSN_ERROR_STREAM_NOT_SUPPORTED),
1725 M_TYPE (PUA_GPRS_t, u.Dynamic_Allocation, Dynamic_Allocation_t),
1726 M_TYPE (PUA_GPRS_t, u.Single_Block_Allocation, Single_Block_Allocation_t),
1727 CSN_ERROR (PUA_GPRS_t, "11 <Fixed Allocation> not supported", CSN_ERROR_STREAM_NOT_SUPPORTED),
1728
1729 M_NEXT_EXIST_OR_NULL(PUA_GPRS_t, Exist_AdditionsR99, 1),
1730 M_TYPE (PUA_GPRS_t, AdditionsR99, PUA_GPRS_AdditionsR99_t),
1731CSN_DESCR_END (PUA_GPRS_t)
1732
1733static const
1734CSN_DESCR_BEGIN(COMPACT_ReducedMA_t)
1735 M_UINT (COMPACT_ReducedMA_t, BitmapLength, 7),
1736 M_VAR_BITMAP (COMPACT_ReducedMA_t, ReducedMA_Bitmap, BitmapLength, 0),
1737
1738 M_NEXT_EXIST (COMPACT_ReducedMA_t, Exist_MAIO_2, 1),
1739 M_UINT (COMPACT_ReducedMA_t, MAIO_2, 6),
1740CSN_DESCR_END (COMPACT_TeducedMA_t)
1741
1742static const
1743CSN_DESCR_BEGIN(MultiBlock_Allocation_t)
1744 M_UINT (MultiBlock_Allocation_t, TIMESLOT_NUMBER, 3),
1745
1746 M_NEXT_EXIST (MultiBlock_Allocation_t, Exist_ALPHA_GAMMA_TN, 2),
1747 M_UINT (MultiBlock_Allocation_t, ALPHA, 4),
1748 M_UINT (MultiBlock_Allocation_t, GAMMA_TN, 5),
1749
1750 M_NEXT_EXIST (MultiBlock_Allocation_t, Exist_P0_BTS_PWR_CTRL_PR_MODE, 3),
1751 M_UINT (MultiBlock_Allocation_t, P0, 4),
1752 M_UINT (MultiBlock_Allocation_t, BTS_PWR_CTRL_MODE, 1),
1753 M_UINT (MultiBlock_Allocation_t, PR_MODE, 1),
1754
1755 M_TYPE (MultiBlock_Allocation_t, TBF_Starting_Time, Starting_Frame_Number_t),
1756 M_UINT (MultiBlock_Allocation_t, NUMBER_OF_RADIO_BLOCKS_ALLOCATED, 2),
1757CSN_DESCR_END (MultiBlock_Allocation_t)
1758
1759static const
1760CSN_DESCR_BEGIN (PUA_EGPRS_00_t)
1761 M_NEXT_EXIST (PUA_EGPRS_00_t, Exist_CONTENTION_RESOLUTION_TLLI, 1),
1762 M_UINT (PUA_EGPRS_00_t, CONTENTION_RESOLUTION_TLLI, 32),
1763
1764 M_NEXT_EXIST (PUA_EGPRS_00_t, Exist_COMPACT_ReducedMA, 1),
1765 M_TYPE (PUA_EGPRS_00_t, COMPACT_ReducedMA, COMPACT_ReducedMA_t),
1766
1767 M_UINT (PUA_EGPRS_00_t, EGPRS_CHANNEL_CODING_COMMAND, 4),
1768 M_UINT (PUA_EGPRS_00_t, RESEGMENT, 1),
1769 M_UINT (PUA_EGPRS_00_t, EGPRS_WindowSize, 5),
1770
1771 M_REC_ARRAY (PUA_EGPRS_00_t, AccessTechnologyType, NrOfAccessTechnologies, 4),
1772
1773 M_UINT (PUA_EGPRS_00_t, ARAC_RETRANSMISSION_REQUEST, 1),
1774 M_UINT (PUA_EGPRS_00_t, TLLI_BLOCK_CHANNEL_CODING, 1),
1775
1776 M_NEXT_EXIST (PUA_EGPRS_00_t, Exist_BEP_PERIOD2, 1),
1777 M_UINT (PUA_EGPRS_00_t, BEP_PERIOD2, 4),
1778
1779 M_TYPE (PUA_EGPRS_00_t, PacketTimingAdvance, Packet_Timing_Advance_t),
1780
1781 M_NEXT_EXIST (PUA_EGPRS_00_t, Exist_Packet_Extended_Timing_Advance, 1),
1782 M_UINT (PUA_EGPRS_00_t, Packet_Extended_Timing_Advance, 2),
1783
1784 M_NEXT_EXIST (PUA_EGPRS_00_t, Exist_Frequency_Parameters, 1),
1785 M_TYPE (PUA_EGPRS_00_t, Frequency_Parameters, Frequency_Parameters_t),
1786
1787 M_UNION (PUA_EGPRS_00_t, 4),
1788 CSN_ERROR (PUA_EGPRS_00_t, "00 <extension>", CSN_ERROR_STREAM_NOT_SUPPORTED),
1789 M_TYPE (PUA_EGPRS_00_t, u.Dynamic_Allocation, Dynamic_Allocation_t),
1790 M_TYPE (PUA_EGPRS_00_t, u.MultiBlock_Allocation, MultiBlock_Allocation_t),
1791 CSN_ERROR (PUA_EGPRS_00_t, "11 <Fixed Allocation>", CSN_ERROR_STREAM_NOT_SUPPORTED),
1792CSN_DESCR_END (PUA_EGPRS_00_t)
1793
1794static const
1795CSN_DESCR_BEGIN(PUA_EGPRS_t)
1796 M_UNION (PUA_EGPRS_t, 4),
1797 M_TYPE (PUA_EGPRS_t, u.PUA_EGPRS_00, PUA_EGPRS_00_t),
1798 CSN_ERROR (PUA_EGPRS_t, "01 <PUA EGPRS>", CSN_ERROR_STREAM_NOT_SUPPORTED),
1799 CSN_ERROR (PUA_EGPRS_t, "10 <PUA EGPRS>", CSN_ERROR_STREAM_NOT_SUPPORTED),
1800 CSN_ERROR (PUA_EGPRS_t, "11 <PUA EGPRS>", CSN_ERROR_STREAM_NOT_SUPPORTED),
1801CSN_DESCR_END (PUA_EGPRS_t)
1802
1803static const
1804CSN_DESCR_BEGIN(Packet_Uplink_Assignment_t)
1805 M_UINT (Packet_Uplink_Assignment_t, MESSAGE_TYPE, 6),
1806 M_UINT (Packet_Uplink_Assignment_t, PAGE_MODE, 2),
1807
1808 M_NEXT_EXIST (Packet_Uplink_Assignment_t, Exist_PERSISTENCE_LEVEL, 1),
1809 M_UINT_ARRAY (Packet_Uplink_Assignment_t, PERSISTENCE_LEVEL, 4, 4),
1810
1811 M_TYPE (Packet_Uplink_Assignment_t, ID, PacketUplinkID_t),
1812
1813 M_UNION (Packet_Uplink_Assignment_t, 2),
1814 M_TYPE (Packet_Uplink_Assignment_t, u.PUA_GPRS_Struct, PUA_GPRS_t),
1815 M_TYPE (Packet_Uplink_Assignment_t, u.PUA_EGPRS_Struct, PUA_EGPRS_t),
1816CSN_DESCR_END (Packet_Uplink_Assignment_t)
1817
1818/*< Packet Downlink Assignment message content > */
1819static const
1820CSN_DESCR_BEGIN(Measurement_Mapping_struct_t)
1821 M_TYPE (Measurement_Mapping_struct_t, Measurement_Starting_Time, Starting_Frame_Number_t),
1822 M_UINT (Measurement_Mapping_struct_t, MEASUREMENT_INTERVAL, 5),
1823 M_UINT (Measurement_Mapping_struct_t, MEASUREMENT_BITMAP, 8),
1824CSN_DESCR_END (Measurement_Mapping_struct_t)
1825
1826static const
1827CSN_ChoiceElement_t PacketDownlinkID[] =
1828{
1829 {1, 0, M_TYPE(PacketDownlinkID_t, u.Global_TFI, Global_TFI_t)},
1830 {2, 0x02, M_UINT(PacketDownlinkID_t, u.TLLI, 32)},
1831};
1832
1833static const
1834CSN_DESCR_BEGIN(PacketDownlinkID_t)
1835 M_CHOICE (PacketDownlinkID_t, UnionType, PacketDownlinkID, ElementsOf(PacketDownlinkID)),
1836CSN_DESCR_END (PacketDownlinkID_t)
1837
1838static const
1839CSN_DESCR_BEGIN(PDA_AdditionsR99_t)
1840 M_NEXT_EXIST (PDA_AdditionsR99_t, Exist_EGPRS_Params, 4), /*if Exist_EGPRS_Params == FALSE then none of the following 4 vars exist */
1841 M_UINT (PDA_AdditionsR99_t, EGPRS_WindowSize, 5),
1842 M_UINT (PDA_AdditionsR99_t, LINK_QUALITY_MEASUREMENT_MODE, 2),
1843 M_NEXT_EXIST (PDA_AdditionsR99_t, Exist_BEP_PERIOD2, 1),
1844 M_UINT (PDA_AdditionsR99_t, BEP_PERIOD2, 4),
1845
1846 M_NEXT_EXIST (PDA_AdditionsR99_t, Exist_Packet_Extended_Timing_Advance, 1),
1847 M_UINT (PDA_AdditionsR99_t, Packet_Extended_Timing_Advance, 2),
1848
1849 M_NEXT_EXIST (PDA_AdditionsR99_t, Exist_COMPACT_ReducedMA, 1),
1850 M_TYPE (PDA_AdditionsR99_t, COMPACT_ReducedMA, COMPACT_ReducedMA_t),
1851CSN_DESCR_END (PDA_AdditionsR99_t)
1852
1853static const
1854CSN_DESCR_BEGIN (Packet_Downlink_Assignment_t)
1855 M_UINT (Packet_Downlink_Assignment_t, MESSAGE_TYPE, 6),
1856 M_UINT (Packet_Downlink_Assignment_t, PAGE_MODE, 2),
1857
1858 M_NEXT_EXIST (Packet_Downlink_Assignment_t, Exist_PERSISTENCE_LEVEL, 1),
1859 M_UINT_ARRAY (Packet_Downlink_Assignment_t, PERSISTENCE_LEVEL, 4, 4),
1860
1861 M_TYPE (Packet_Downlink_Assignment_t, ID, PacketDownlinkID_t),
1862
1863 M_FIXED (Packet_Downlink_Assignment_t, 1, 0x00),/*-- Message escape */
1864
1865 M_UINT (Packet_Downlink_Assignment_t, MAC_MODE, 2),
1866 M_BIT (Packet_Downlink_Assignment_t, RLC_MODE),
1867 M_BIT (Packet_Downlink_Assignment_t, CONTROL_ACK),
1868 M_UINT (Packet_Downlink_Assignment_t, TIMESLOT_ALLOCATION, 8),
1869 M_TYPE (Packet_Downlink_Assignment_t, Packet_Timing_Advance, Packet_Timing_Advance_t),
1870
1871 M_NEXT_EXIST (Packet_Downlink_Assignment_t, Exist_P0_and_BTS_PWR_CTRL_MODE, 3),
1872 M_UINT (Packet_Downlink_Assignment_t, P0, 4),
1873 M_BIT (Packet_Downlink_Assignment_t, BTS_PWR_CTRL_MODE),
1874 M_UINT (Packet_Downlink_Assignment_t, PR_MODE, 1),
1875
1876 M_NEXT_EXIST (Packet_Downlink_Assignment_t, Exist_Frequency_Parameters, 1),
1877 M_TYPE (Packet_Downlink_Assignment_t, Frequency_Parameters, Frequency_Parameters_t),
1878
1879 M_NEXT_EXIST (Packet_Downlink_Assignment_t, Exist_DOWNLINK_TFI_ASSIGNMENT, 1),
1880 M_UINT (Packet_Downlink_Assignment_t, DOWNLINK_TFI_ASSIGNMENT, 5),
1881
1882 M_NEXT_EXIST (Packet_Downlink_Assignment_t, Exist_Power_Control_Parameters, 1),
1883 M_TYPE (Packet_Downlink_Assignment_t, Power_Control_Parameters, Power_Control_Parameters_t),
1884
1885 M_NEXT_EXIST (Packet_Downlink_Assignment_t, Exist_TBF_Starting_Time, 1),
1886 M_TYPE (Packet_Downlink_Assignment_t, TBF_Starting_Time, Starting_Frame_Number_t),
1887
1888 M_NEXT_EXIST (Packet_Downlink_Assignment_t, Exist_Measurement_Mapping, 1),
1889 M_TYPE (Packet_Downlink_Assignment_t, Measurement_Mapping, Measurement_Mapping_struct_t),
1890
1891 M_NEXT_EXIST_OR_NULL(Packet_Downlink_Assignment_t, Exist_AdditionsR99, 1),
1892 M_TYPE (Packet_Downlink_Assignment_t, AdditionsR99, PDA_AdditionsR99_t),
1893CSN_DESCR_END (Packet_Downlink_Assignment_t)
1894
1895typedef Packet_Downlink_Assignment_t pdlaCheck_t;
1896
1897static const
1898CSN_DESCR_BEGIN(pdlaCheck_t)
1899 M_UINT (pdlaCheck_t, MESSAGE_TYPE, 6),
1900 M_UINT (pdlaCheck_t, PAGE_MODE, 2),
1901
1902 M_NEXT_EXIST (pdlaCheck_t, Exist_PERSISTENCE_LEVEL, 1),
1903 M_UINT_ARRAY (pdlaCheck_t, PERSISTENCE_LEVEL, 4, 4),
1904
1905 M_TYPE (pdlaCheck_t, ID, PacketDownlinkID_t),
1906CSN_DESCR_END (pdlaCheck_t)
1907
1908/* DTM Packet UL Assignment */
1909static const
1910CSN_DESCR_BEGIN(DTM_Packet_Uplink_Assignment_t)
1911 M_UINT (DTM_Packet_Uplink_Assignment_t, CHANNEL_CODING_COMMAND, 2),
1912 M_BIT (DTM_Packet_Uplink_Assignment_t, TLLI_BLOCK_CHANNEL_CODING),
1913 M_TYPE (DTM_Packet_Uplink_Assignment_t, Packet_Timing_Advance, Packet_Timing_Advance_t),
1914
1915 M_UNION (DTM_Packet_Uplink_Assignment_t, 3),
1916 CSN_ERROR (DTM_Packet_Uplink_Assignment_t, "Not Implemented", CSN_ERROR_STREAM_NOT_SUPPORTED),
1917 M_TYPE (DTM_Packet_Uplink_Assignment_t, u.DTM_Dynamic_Allocation, DTM_Dynamic_Allocation_t),
1918 M_TYPE (DTM_Packet_Uplink_Assignment_t, u.DTM_Single_Block_Allocation, DTM_Single_Block_Allocation_t),
1919 M_NEXT_EXIST_OR_NULL (DTM_Packet_Uplink_Assignment_t, Exist_EGPRS_Parameters, 3),
1920 M_UINT (DTM_Packet_Uplink_Assignment_t, EGPRS_CHANNEL_CODING_COMMAND, 4),
1921 M_UINT (DTM_Packet_Uplink_Assignment_t, RESEGMENT, 1),
1922 M_UINT (DTM_Packet_Uplink_Assignment_t, EGPRS_WindowSize, 5),
1923 M_NEXT_EXIST (DTM_Packet_Uplink_Assignment_t, Exist_Packet_Extended_Timing_Advance, 1),
1924 M_UINT (DTM_Packet_Uplink_Assignment_t, Packet_Extended_Timing_Advance, 2),
1925CSN_DESCR_END(DTM_Packet_Uplink_Assignment_t)
1926
1927static const
1928CSN_DESCR_BEGIN(DTM_UL_t)
1929 M_TYPE (DTM_UL_t, DTM_Packet_Uplink_Assignment, DTM_Packet_Uplink_Assignment_t),
1930CSN_DESCR_END(DTM_UL_t)
1931
1932/* DTM Packet DL Assignment */
1933static const
1934CSN_DESCR_BEGIN(DTM_Packet_Downlink_Assignment_t)
1935 M_UINT (DTM_Packet_Downlink_Assignment_t, MAC_MODE, 2),
1936 M_BIT (DTM_Packet_Downlink_Assignment_t, RLC_MODE),
1937 M_UINT (DTM_Packet_Downlink_Assignment_t, TIMESLOT_ALLOCATION, 8),
1938 M_TYPE (DTM_Packet_Downlink_Assignment_t, Packet_Timing_Advance, Packet_Timing_Advance_t),
1939
1940 M_NEXT_EXIST (DTM_Packet_Downlink_Assignment_t, Exist_P0_and_BTS_PWR_CTRL_MODE, 3),
1941 M_UINT (DTM_Packet_Downlink_Assignment_t, P0, 4),
1942 M_BIT (DTM_Packet_Downlink_Assignment_t, BTS_PWR_CTRL_MODE),
1943 M_UINT (DTM_Packet_Downlink_Assignment_t, PR_MODE, 1),
1944
1945 M_NEXT_EXIST (DTM_Packet_Downlink_Assignment_t, Exist_Power_Control_Parameters, 1),
1946 M_TYPE (DTM_Packet_Downlink_Assignment_t, Power_Control_Parameters, Power_Control_Parameters_t),
1947
1948 M_NEXT_EXIST (DTM_Packet_Downlink_Assignment_t, Exist_DOWNLINK_TFI_ASSIGNMENT, 1),
1949 M_UINT (DTM_Packet_Downlink_Assignment_t, DOWNLINK_TFI_ASSIGNMENT, 5),
1950
1951 M_NEXT_EXIST (DTM_Packet_Downlink_Assignment_t, Exist_Measurement_Mapping, 1),
1952 M_TYPE (DTM_Packet_Downlink_Assignment_t, Measurement_Mapping, Measurement_Mapping_struct_t),
1953 M_NEXT_EXIST_OR_NULL (DTM_Packet_Downlink_Assignment_t, EGPRS_Mode, 2),
1954 M_UINT (DTM_Packet_Downlink_Assignment_t, EGPRS_WindowSize, 5),
1955 M_UINT (DTM_Packet_Downlink_Assignment_t, LINK_QUALITY_MEASUREMENT_MODE, 2),
1956 M_NEXT_EXIST (DTM_Packet_Downlink_Assignment_t, Exist_Packet_Extended_Timing_Advance, 1),
1957 M_UINT (DTM_Packet_Downlink_Assignment_t, Packet_Extended_Timing_Advance, 2),
1958CSN_DESCR_END(DTM_Packet_Downlink_Assignment_t)
1959
1960static const
1961CSN_DESCR_BEGIN(DTM_DL_t)
1962 M_TYPE (DTM_DL_t, DTM_Packet_Downlink_Assignment, DTM_Packet_Downlink_Assignment_t),
1963CSN_DESCR_END(DTM_DL_t)
1964
1965/* GPRS Broadcast Information */
1966static const
1967CSN_DESCR_BEGIN(DTM_GPRS_Broadcast_Information_t)
1968 M_TYPE (DTM_GPRS_Broadcast_Information_t, GPRS_Cell_Options, GPRS_Cell_Options_t),
1969 M_TYPE (DTM_GPRS_Broadcast_Information_t, GPRS_Power_Control_Parameters, GPRS_Power_Control_Parameters_t),
1970CSN_DESCR_END(DTM_GPRS_Broadcast_Information_t)
1971
1972static const
1973CSN_DESCR_BEGIN(DTM_GPRS_B_t)
1974 M_TYPE (DTM_GPRS_B_t, DTM_GPRS_Broadcast_Information, DTM_GPRS_Broadcast_Information_t),
1975CSN_DESCR_END(DTM_GPRS_B_t)
1976
1977static const
1978CSN_DESCR_BEGIN(DTM_Channel_Request_Description_t)
1979 M_UINT (DTM_Channel_Request_Description_t, DTM_Pkt_Est_Cause, 2),
1980 M_TYPE (DTM_Channel_Request_Description_t, Channel_Request_Description, Channel_Request_Description_t),
1981 M_NEXT_EXIST (DTM_Channel_Request_Description_t, Exist_PFI, 1),
1982 M_UINT (DTM_Channel_Request_Description_t, PFI, 7),
1983CSN_DESCR_END(DTM_Channel_Request_Description_t)
1984/* DTM */
1985
1986/*< Packet Paging Request message content > */
1987typedef struct
1988{
1989 guint8 Length_of_Mobile_Identity_contents;/* bit (4) */
1990 guint8 Mobile_Identity[8];/* octet (val (Length of Mobile Identity contents)) */
1991} Mobile_Identity_t; /* helper */
1992
1993static const
1994CSN_DESCR_BEGIN(Mobile_Identity_t)
1995 M_UINT (Mobile_Identity_t, Length_of_Mobile_Identity_contents, 4),
1996 M_VAR_ARRAY (Mobile_Identity_t, Mobile_Identity, Length_of_Mobile_Identity_contents, 0),
1997CSN_DESCR_END (Mobile_Identity_t)
1998
1999static const
2000CSN_DESCR_BEGIN(Page_request_for_TBF_establishment_t)
2001 M_UNION (Page_request_for_TBF_establishment_t, 2),
2002 M_UINT_ARRAY (Page_request_for_TBF_establishment_t, u.PTMSI, 8, 4),/* bit (32) == 8*4 */
2003 M_TYPE (Page_request_for_TBF_establishment_t, u.Mobile_Identity, Mobile_Identity_t),
2004CSN_DESCR_END (Page_request_for_TBF_establishment_t)
2005
2006static const
2007CSN_DESCR_BEGIN(Page_request_for_RR_conn_t)
2008 M_UNION (Page_request_for_RR_conn_t, 2),
2009 M_UINT_ARRAY (Page_request_for_RR_conn_t, u.TMSI, 8, 4),/* bit (32) == 8*4 */
2010 M_TYPE (Page_request_for_RR_conn_t, u.Mobile_Identity, Mobile_Identity_t),
2011
2012 M_UINT (Page_request_for_RR_conn_t, CHANNEL_NEEDED, 2),
2013
2014 M_NEXT_EXIST (Page_request_for_RR_conn_t, Exist_eMLPP_PRIORITY, 1),
2015 M_UINT (Page_request_for_RR_conn_t, eMLPP_PRIORITY, 3),
2016CSN_DESCR_END (Page_request_for_RR_conn_t)
2017
2018static const
2019CSN_DESCR_BEGIN(Repeated_Page_info_t)
2020 M_UNION (Repeated_Page_info_t, 2),
2021 M_TYPE (Repeated_Page_info_t, u.Page_req_TBF, Page_request_for_TBF_establishment_t),
2022 M_TYPE (Repeated_Page_info_t, u.Page_req_RR, Page_request_for_RR_conn_t),
2023CSN_DESCR_END (Repeated_Page_info_t)
2024
2025static const
2026CSN_DESCR_BEGIN(Packet_Paging_Request_t)
2027 M_UINT (Packet_Paging_Request_t, MESSAGE_TYPE, 6),
2028 M_UINT (Packet_Paging_Request_t, PAGE_MODE, 2),
2029
2030 M_NEXT_EXIST (Packet_Paging_Request_t, Exist_PERSISTENCE_LEVEL, 1),
2031 M_UINT_ARRAY (Packet_Paging_Request_t, PERSISTENCE_LEVEL, 4, 4), /* 4bit*4 */
2032
2033 M_NEXT_EXIST (Packet_Paging_Request_t, Exist_NLN, 1),
2034 M_UINT (Packet_Paging_Request_t, NLN, 2),
2035
2036 M_REC_TARRAY (Packet_Paging_Request_t, Repeated_Page_info, Repeated_Page_info_t, Count_Repeated_Page_info),
2037CSN_DESCR_END (Packet_Paging_Request_t)
2038
2039static const
2040CSN_DESCR_BEGIN(Packet_PDCH_Release_t)
2041 M_UINT (Packet_PDCH_Release_t, MESSAGE_TYPE, 6),
2042 M_UINT (Packet_PDCH_Release_t, PAGE_MODE, 2),
2043
2044 M_FIXED (Packet_PDCH_Release_t, 1, 0x01),
2045 M_UINT (Packet_PDCH_Release_t, TIMESLOTS_AVAILABLE, 8),
2046CSN_DESCR_END (Packet_PDCH_Release_t)
2047
2048/*< Packet Power Control/Timing Advance message content >*/
2049static const
2050CSN_DESCR_BEGIN(GlobalTimingAndPower_t)
2051 M_TYPE (GlobalTimingAndPower_t, Global_Packet_Timing_Advance, Global_Packet_Timing_Advance_t),
2052 M_TYPE (GlobalTimingAndPower_t, Power_Control_Parameters, Power_Control_Parameters_t),
2053CSN_DESCR_END (GlobalTimingAndPower_t)
2054
2055static const
2056CSN_DESCR_BEGIN(GlobalTimingOrPower_t)
2057 M_UNION (GlobalTimingOrPower_t, 2),
2058 M_TYPE (GlobalTimingOrPower_t, u.Global_Packet_Timing_Advance, Global_Packet_Timing_Advance_t),
2059 M_TYPE (GlobalTimingOrPower_t, u.Power_Control_Parameters, Power_Control_Parameters_t),
2060CSN_DESCR_END (GlobalTimingOrPower_t)
2061
2062static const
2063CSN_ChoiceElement_t PacketPowerControlTimingAdvanceID[] =
2064{
2065 {1, 0, M_TYPE(PacketPowerControlTimingAdvanceID_t, u.Global_TFI, Global_TFI_t)},
2066 {3, 0x06, M_UINT(PacketPowerControlTimingAdvanceID_t, u.TQI, 16)},
2067 {3, 0x07, M_TYPE(PacketPowerControlTimingAdvanceID_t, u.Packet_Request_Reference, Packet_Request_Reference_t)},
2068};
2069
2070static const
2071CSN_DESCR_BEGIN(PacketPowerControlTimingAdvanceID_t)
2072 M_CHOICE (PacketPowerControlTimingAdvanceID_t, UnionType, PacketPowerControlTimingAdvanceID, ElementsOf(PacketPowerControlTimingAdvanceID)),
2073CSN_DESCR_END (PacketPowerControlTimingAdvanceID_t)
2074
2075static const
2076CSN_DESCR_BEGIN(Packet_Power_Control_Timing_Advance_t)
2077 M_UINT (Packet_Power_Control_Timing_Advance_t, MESSAGE_TYPE, 6),
2078 M_UINT (Packet_Power_Control_Timing_Advance_t, PAGE_MODE, 2),
2079
2080 M_TYPE (Packet_Power_Control_Timing_Advance_t, ID, PacketPowerControlTimingAdvanceID_t),
2081
2082 /*-- Message escape*/
2083 M_FIXED (Packet_Power_Control_Timing_Advance_t, 1, 0x00),
2084
2085 M_NEXT_EXIST (Packet_Power_Control_Timing_Advance_t, Exist_Global_Power_Control_Parameters, 1),
2086 M_TYPE (Packet_Power_Control_Timing_Advance_t, Global_Power_Control_Parameters, Global_Power_Control_Parameters_t),
2087
2088 M_UNION (Packet_Power_Control_Timing_Advance_t, 2),
2089 M_TYPE (Packet_Power_Control_Timing_Advance_t, u.GlobalTimingAndPower, GlobalTimingAndPower_t),
2090 M_TYPE (Packet_Power_Control_Timing_Advance_t, u.GlobalTimingOrPower, GlobalTimingOrPower_t),
2091CSN_DESCR_END (Packet_Power_Control_Timing_Advance_t)
2092
2093/*< Packet Queueing Notification message content > */
2094static const
2095CSN_DESCR_BEGIN(Packet_Queueing_Notification_t)
2096 M_UINT (Packet_Queueing_Notification_t, MESSAGE_TYPE, 6),
2097 M_UINT (Packet_Queueing_Notification_t, PAGE_MODE, 2),
2098
2099 M_FIXED (Packet_Queueing_Notification_t, 3, 0x07),/* 111 Fixed */
2100 M_TYPE (Packet_Queueing_Notification_t, Packet_Request_Reference, Packet_Request_Reference_t),
2101
2102 M_UINT (Packet_Queueing_Notification_t, TQI, 16),
2103CSN_DESCR_END (Packet_Queueing_Notification_t)
2104
2105/* USED in Packet Timeslot Reconfigure message content
2106 * This is almost the same structure as used in
2107 * <Packet Uplink Assignment message content> but UPLINK_TFI_ASSIGNMENT is removed.
2108 */
2109static const
2110CSN_DESCR_BEGIN(TRDynamic_Allocation_t)
2111 M_UINT (TRDynamic_Allocation_t, Extended_Dynamic_Allocation, 1),
2112
2113 M_NEXT_EXIST (TRDynamic_Allocation_t, Exist_P0, 2),
2114 M_UINT (TRDynamic_Allocation_t, P0, 4),
2115 M_UINT (TRDynamic_Allocation_t, PR_MODE, 1),
2116
2117 M_UINT (TRDynamic_Allocation_t, USF_GRANULARITY, 1),
2118
2119 M_NEXT_EXIST (TRDynamic_Allocation_t, Exist_RLC_DATA_BLOCKS_GRANTED, 1),
2120 M_UINT (TRDynamic_Allocation_t, RLC_DATA_BLOCKS_GRANTED, 8),
2121
2122 M_NEXT_EXIST (TRDynamic_Allocation_t, Exist_TBF_Starting_Time, 1),
2123 M_TYPE (TRDynamic_Allocation_t, TBF_Starting_Time, Starting_Frame_Number_t),
2124
2125 M_UNION (TRDynamic_Allocation_t, 2),
2126 M_TYPE_ARRAY (TRDynamic_Allocation_t, u.Timeslot_Allocation, Timeslot_Allocation_t, 8),
2127 M_TYPE (TRDynamic_Allocation_t, u.Timeslot_Allocation_Power_Ctrl_Param, Timeslot_Allocation_Power_Ctrl_Param_t),
2128CSN_DESCR_END (TRDynamic_Allocation_t)
2129
2130/*< Packet Timeslot Reconfigure message content > */
2131static const
2132CSN_DESCR_BEGIN(PTR_GPRS_AdditionsR99_t)
2133 M_NEXT_EXIST (PTR_GPRS_AdditionsR99_t, Exist_Packet_Extended_Timing_Advance, 1),
2134 M_UINT (PTR_GPRS_AdditionsR99_t, Packet_Extended_Timing_Advance, 2),
2135CSN_DESCR_END (PTR_GPRS_AdditionsR99_t)
2136
2137static const
2138CSN_DESCR_BEGIN (PTR_GPRS_t)
2139 M_UINT (PTR_GPRS_t, CHANNEL_CODING_COMMAND, 2),
2140 M_TYPE (PTR_GPRS_t, Common_Timeslot_Reconfigure_Data.Global_Packet_Timing_Advance, Global_Packet_Timing_Advance_t),
2141 M_UINT (PTR_GPRS_t, Common_Timeslot_Reconfigure_Data.DOWNLINK_RLC_MODE, 1),
2142 M_UINT (PTR_GPRS_t, Common_Timeslot_Reconfigure_Data.CONTROL_ACK, 1),
2143
2144 M_NEXT_EXIST (PTR_GPRS_t, Common_Timeslot_Reconfigure_Data.Exist_DOWNLINK_TFI_ASSIGNMENT, 1),
2145 M_UINT (PTR_GPRS_t, Common_Timeslot_Reconfigure_Data.DOWNLINK_TFI_ASSIGNMENT, 5),
2146
2147 M_NEXT_EXIST (PTR_GPRS_t, Common_Timeslot_Reconfigure_Data.Exist_UPLINK_TFI_ASSIGNMENT, 1),
2148 M_UINT (PTR_GPRS_t, Common_Timeslot_Reconfigure_Data.UPLINK_TFI_ASSIGNMENT, 5),
2149
2150 M_UINT (PTR_GPRS_t, Common_Timeslot_Reconfigure_Data.DOWNLINK_TIMESLOT_ALLOCATION, 8),
2151
2152 M_NEXT_EXIST (PTR_GPRS_t, Common_Timeslot_Reconfigure_Data.Exist_Frequency_Parameters, 1),
2153 M_TYPE (PTR_GPRS_t, Common_Timeslot_Reconfigure_Data.Frequency_Parameters, Frequency_Parameters_t),
2154
2155 M_UNION (PTR_GPRS_t, 2),
2156 M_TYPE (PTR_GPRS_t, u.Dynamic_Allocation, TRDynamic_Allocation_t),
2157 CSN_ERROR (PTR_GPRS_t, "1 - Fixed Allocation was removed", CSN_ERROR_STREAM_NOT_SUPPORTED),
2158
2159 M_NEXT_EXIST_OR_NULL(PTR_GPRS_t, Exist_AdditionsR99, 1),
2160 M_TYPE (PTR_GPRS_t, AdditionsR99, PTR_GPRS_AdditionsR99_t),
2161CSN_DESCR_END (PTR_GPRS_t)
2162
2163static const
2164CSN_DESCR_BEGIN(PTR_EGPRS_00_t)
2165 M_NEXT_EXIST (PTR_EGPRS_00_t, Exist_COMPACT_ReducedMA, 1),
2166 M_TYPE (PTR_EGPRS_00_t, COMPACT_ReducedMA, COMPACT_ReducedMA_t),
2167
2168 M_UINT (PTR_EGPRS_00_t, EGPRS_ChannelCodingCommand, 4),
2169 M_UINT (PTR_EGPRS_00_t, RESEGMENT, 1),
2170
2171 M_NEXT_EXIST (PTR_EGPRS_00_t, Exist_DOWNLINK_EGPRS_WindowSize, 1),
2172 M_UINT (PTR_EGPRS_00_t, DOWNLINK_EGPRS_WindowSize, 5),
2173
2174 M_NEXT_EXIST (PTR_EGPRS_00_t, Exist_UPLINK_EGPRS_WindowSize, 1),
2175 M_UINT (PTR_EGPRS_00_t, UPLINK_EGPRS_WindowSize, 5),
2176
2177 M_UINT (PTR_EGPRS_00_t, LINK_QUALITY_MEASUREMENT_MODE, 2),
2178
2179 M_TYPE (PTR_EGPRS_00_t, Common_Timeslot_Reconfigure_Data.Global_Packet_Timing_Advance, Global_Packet_Timing_Advance_t),
2180
2181 M_NEXT_EXIST (PTR_EGPRS_00_t, Exist_Packet_Extended_Timing_Advance, 1),
2182 M_UINT (PTR_EGPRS_00_t, Packet_Extended_Timing_Advance, 2),
2183
2184 M_UINT (PTR_EGPRS_00_t, Common_Timeslot_Reconfigure_Data.DOWNLINK_RLC_MODE, 1),
2185 M_UINT (PTR_EGPRS_00_t, Common_Timeslot_Reconfigure_Data.CONTROL_ACK, 1),
2186
2187 M_NEXT_EXIST (PTR_EGPRS_00_t, Common_Timeslot_Reconfigure_Data.Exist_DOWNLINK_TFI_ASSIGNMENT, 1),
2188 M_UINT (PTR_EGPRS_00_t, Common_Timeslot_Reconfigure_Data.DOWNLINK_TFI_ASSIGNMENT, 5),
2189
2190 M_NEXT_EXIST (PTR_EGPRS_00_t, Common_Timeslot_Reconfigure_Data.Exist_UPLINK_TFI_ASSIGNMENT, 1),
2191 M_UINT (PTR_EGPRS_00_t, Common_Timeslot_Reconfigure_Data.UPLINK_TFI_ASSIGNMENT, 5),
2192
2193 M_UINT (PTR_EGPRS_00_t, Common_Timeslot_Reconfigure_Data.DOWNLINK_TIMESLOT_ALLOCATION, 8),
2194
2195 M_NEXT_EXIST (PTR_EGPRS_00_t, Common_Timeslot_Reconfigure_Data.Exist_Frequency_Parameters, 1),
2196 M_TYPE (PTR_EGPRS_00_t, Common_Timeslot_Reconfigure_Data.Frequency_Parameters, Frequency_Parameters_t),
2197
2198 M_UNION (PTR_EGPRS_00_t, 2),
2199 M_TYPE (PTR_EGPRS_00_t, u.Dynamic_Allocation, TRDynamic_Allocation_t),
2200 CSN_ERROR (PTR_EGPRS_00_t, "1 <Fixed Allocation>", CSN_ERROR_STREAM_NOT_SUPPORTED),
2201CSN_DESCR_END (PTR_EGPRS_00_t)
2202
2203static const
2204CSN_DESCR_BEGIN(PTR_EGPRS_t)
2205 M_UNION (PTR_EGPRS_t, 4),
2206 M_TYPE (PTR_EGPRS_t, u.PTR_EGPRS_00, PTR_EGPRS_00_t),
2207 CSN_ERROR (PTR_EGPRS_t, "01 <PTR_EGPRS>", CSN_ERROR_STREAM_NOT_SUPPORTED),
2208 CSN_ERROR (PTR_EGPRS_t, "10 <PTR_EGPRS>", CSN_ERROR_STREAM_NOT_SUPPORTED),
2209 CSN_ERROR (PTR_EGPRS_t, "11 <PTR_EGPRS>", CSN_ERROR_STREAM_NOT_SUPPORTED),
2210CSN_DESCR_END (PTR_EGPRS_t)
2211
2212static const
2213CSN_DESCR_BEGIN(Packet_Timeslot_Reconfigure_t)
2214 M_UINT (Packet_Timeslot_Reconfigure_t, MESSAGE_TYPE, 6),
2215 M_UINT (Packet_Timeslot_Reconfigure_t, PAGE_MODE, 2),
2216
2217 M_FIXED (Packet_Timeslot_Reconfigure_t, 1, 0x00),
2218 M_TYPE (Packet_Timeslot_Reconfigure_t, Global_TFI, Global_TFI_t),
2219
2220 M_UNION (Packet_Timeslot_Reconfigure_t, 2),
2221 M_TYPE (Packet_Timeslot_Reconfigure_t, u.PTR_GPRS_Struct, PTR_GPRS_t),
2222 M_TYPE (Packet_Timeslot_Reconfigure_t, u.PTR_EGPRS_Struct, PTR_EGPRS_t),
2223CSN_DESCR_END (Packet_Timeslot_Reconfigure_t)
2224
2225typedef Packet_Timeslot_Reconfigure_t PTRCheck_t;
2226
2227static const
2228CSN_DESCR_BEGIN(PTRCheck_t)
2229 M_UINT (PTRCheck_t, MESSAGE_TYPE, 6),
2230 M_UINT (PTRCheck_t, PAGE_MODE, 2),
2231 M_FIXED (PTRCheck_t, 1, 0x00),/* 0 fixed */
2232 M_TYPE (PTRCheck_t, Global_TFI, Global_TFI_t),
2233CSN_DESCR_END (PTRCheck_t)
2234
2235/*< Packet PRACH Parameters message content > */
2236static const
2237CSN_DESCR_BEGIN(PRACH_Control_t)
2238 M_UINT_ARRAY (PRACH_Control_t, ACC_CONTR_CLASS, 8, 2), /* bit (16) == 8bit*2 */
2239 M_UINT_ARRAY (PRACH_Control_t, MAX_RETRANS, 2, 4), /* bit (2) * 4 */
2240 M_UINT (PRACH_Control_t, S, 4),
2241 M_UINT (PRACH_Control_t, TX_INT, 4),
2242 M_NEXT_EXIST (PRACH_Control_t, Exist_PERSISTENCE_LEVEL, 1),
2243 M_UINT_ARRAY (PRACH_Control_t, PERSISTENCE_LEVEL, 4, 4),
2244CSN_DESCR_END (PRACH_Control_t)
2245
2246static const
2247CSN_DESCR_BEGIN(Cell_Allocation_t)
2248 M_REC_ARRAY (Cell_Allocation_t, RFL_Number, NoOfRFLs, 4),
2249CSN_DESCR_END (Cell_Allocation_t)
2250
2251static const
2252CSN_DESCR_BEGIN(HCS_t)
2253 M_UINT (HCS_t, PRIORITY_CLASS, 3),
2254 M_UINT (HCS_t, HCS_THR, 5),
2255CSN_DESCR_END (HCS_t)
2256
2257static const
2258CSN_DESCR_BEGIN(Location_Repeat_t)
2259 M_UINT (Location_Repeat_t, PBCCH_LOCATION, 2),
2260 M_UINT (Location_Repeat_t, PSI1_REPEAT_PERIOD, 4),
2261CSN_DESCR_END (Location_Repeat_t)
2262
2263static const
2264CSN_DESCR_BEGIN(SI13_PBCCH_Location_t)
2265 M_UNION (SI13_PBCCH_Location_t, 2),
2266 M_UINT (SI13_PBCCH_Location_t, u.SI13_LOCATION, 1),
2267 M_TYPE (SI13_PBCCH_Location_t, u.lr, Location_Repeat_t),
2268CSN_DESCR_END (SI13_PBCCH_Location_t)
2269
2270static const
2271CSN_DESCR_BEGIN(Cell_Selection_t)
2272 M_UINT (Cell_Selection_t, BSIC, 6),
2273 M_UINT (Cell_Selection_t, CELL_BAR_ACCESS_2, 1),
2274 M_UINT (Cell_Selection_t, EXC_ACC, 1),
2275 M_UINT (Cell_Selection_t, SAME_RA_AS_SERVING_CELL, 1),
2276 M_NEXT_EXIST (Cell_Selection_t, Exist_RXLEV_and_TXPWR, 2),
2277 M_UINT (Cell_Selection_t, GPRS_RXLEV_ACCESS_MIN, 6),
2278 M_UINT (Cell_Selection_t, GPRS_MS_TXPWR_MAX_CCH, 5),
2279 M_NEXT_EXIST (Cell_Selection_t, Exist_OFFSET_and_TIME, 2),
2280 M_UINT (Cell_Selection_t, GPRS_TEMPORARY_OFFSET, 3),
2281 M_UINT (Cell_Selection_t, GPRS_PENALTY_TIME, 5),
2282 M_NEXT_EXIST (Cell_Selection_t, Exist_GPRS_RESELECT_OFFSET, 1),
2283 M_UINT (Cell_Selection_t, GPRS_RESELECT_OFFSET, 5),
2284 M_NEXT_EXIST (Cell_Selection_t, Exist_HCS, 1),
2285 M_TYPE (Cell_Selection_t, HCS, HCS_t),
2286 M_NEXT_EXIST (Cell_Selection_t, Exist_SI13_PBCCH_Location, 1),
2287 M_TYPE (Cell_Selection_t, SI13_PBCCH_Location, SI13_PBCCH_Location_t),
2288CSN_DESCR_END (Cell_Selection_t)
2289
2290static const
2291CSN_DESCR_BEGIN(Cell_Selection_Params_With_FreqDiff_t)
2292 M_VAR_BITMAP (Cell_Selection_Params_With_FreqDiff_t, FREQUENCY_DIFF, FREQ_DIFF_LENGTH, 0),
2293 M_TYPE (Cell_Selection_Params_With_FreqDiff_t, Cell_SelectionParams, Cell_Selection_t),
2294CSN_DESCR_END (Cell_Selection_Params_With_FreqDiff_t)
2295
2296static const
2297CSN_DESCR_BEGIN(NeighbourCellParameters_t)
2298 M_UINT (NeighbourCellParameters_t, START_FREQUENCY, 10),
2299 M_TYPE (NeighbourCellParameters_t, Cell_Selection, Cell_Selection_t),
2300 M_UINT (NeighbourCellParameters_t, NR_OF_REMAINING_CELLS, 4),
2301 M_UINT_OFFSET(NeighbourCellParameters_t, FREQ_DIFF_LENGTH, 3, 1),/* offset 1 */
2302 M_VAR_TARRAY (NeighbourCellParameters_t, Cell_Selection_Params_With_FreqDiff, Cell_Selection_Params_With_FreqDiff_t, NR_OF_REMAINING_CELLS),
2303CSN_DESCR_END (NeighbourCellParameters_t)
2304
2305static const
2306CSN_DESCR_BEGIN(NeighbourCellList_t)
2307 M_REC_TARRAY (NeighbourCellList_t, Parameters, NeighbourCellParameters_t, Count),
2308CSN_DESCR_END (NeighbourCellList_t)
2309
2310static const
2311CSN_DESCR_BEGIN(Cell_Selection_2_t)
2312 M_UINT (Cell_Selection_2_t, CELL_BAR_ACCESS_2, 1),
2313 M_UINT (Cell_Selection_2_t, EXC_ACC, 1),
2314 M_UINT (Cell_Selection_2_t, SAME_RA_AS_SERVING_CELL, 1),
2315 M_NEXT_EXIST (Cell_Selection_2_t, Exist_RXLEV_and_TXPWR, 2),
2316 M_UINT (Cell_Selection_2_t, GPRS_RXLEV_ACCESS_MIN, 6),
2317 M_UINT (Cell_Selection_2_t, GPRS_MS_TXPWR_MAX_CCH, 5),
2318 M_NEXT_EXIST (Cell_Selection_2_t, Exist_OFFSET_and_TIME, 2),
2319 M_UINT (Cell_Selection_2_t, GPRS_TEMPORARY_OFFSET, 3),
2320 M_UINT (Cell_Selection_2_t, GPRS_PENALTY_TIME, 5),
2321 M_NEXT_EXIST (Cell_Selection_2_t, Exist_GPRS_RESELECT_OFFSET, 1),
2322 M_UINT (Cell_Selection_2_t, GPRS_RESELECT_OFFSET, 5),
2323 M_NEXT_EXIST (Cell_Selection_2_t, Exist_HCS, 1),
2324 M_TYPE (Cell_Selection_2_t, HCS, HCS_t),
2325 M_NEXT_EXIST (Cell_Selection_2_t, Exist_SI13_PBCCH_Location, 1),
2326 M_TYPE (Cell_Selection_2_t, SI13_PBCCH_Location, SI13_PBCCH_Location_t),
2327CSN_DESCR_END (Cell_Selection_2_t)
2328
2329static const
2330CSN_DESCR_BEGIN(Packet_PRACH_Parameters_t)
2331 M_UINT (Packet_PRACH_Parameters_t, MESSAGE_TYPE, 6),
2332 M_UINT (Packet_PRACH_Parameters_t, PAGE_MODE, 2),
2333
2334 M_TYPE (Packet_PRACH_Parameters_t, PRACH_Control, PRACH_Control_t),
2335CSN_DESCR_END (Packet_PRACH_Parameters_t)
2336
2337/* < Packet Access Reject message content > */
2338static const
2339CSN_ChoiceElement_t RejectID[] =
2340{
2341 {1, 0x00, M_UINT(RejectID_t, u.TLLI, 32)},
2342 {2, 0x02, M_TYPE(RejectID_t, u.Packet_Request_Reference, Packet_Request_Reference_t)},
2343 {2, 0x03, M_TYPE(RejectID_t, u.Global_TFI, Global_TFI_t)},
2344};
2345
2346static const
2347CSN_DESCR_BEGIN(RejectID_t)
2348 M_CHOICE (RejectID_t, UnionType, RejectID, ElementsOf(RejectID)),
2349CSN_DESCR_END (RejectID_t)
2350
2351static const
2352CSN_DESCR_BEGIN(Reject_t)
2353 M_TYPE (Reject_t, ID, RejectID_t),
2354
2355 M_NEXT_EXIST (Reject_t, Exist_Wait, 2),
2356 M_UINT (Reject_t, WAIT_INDICATION, 8),
2357 M_UINT (Reject_t, WAIT_INDICATION_SIZE, 1),
2358CSN_DESCR_END (Reject_t)
2359
2360static const
2361CSN_DESCR_BEGIN(Packet_Access_Reject_t)
2362 M_UINT (Packet_Access_Reject_t, MESSAGE_TYPE, 6),
2363 M_UINT (Packet_Access_Reject_t, PAGE_MODE, 2),
2364
2365 M_TYPE (Packet_Access_Reject_t, Reject, Reject_t),
2366 M_REC_TARRAY (Packet_Access_Reject_t, Reject[1], Reject_t, Count_Reject),
2367CSN_DESCR_END (Packet_Access_Reject_t)
2368
2369/* < Packet Cell Change Order message content > */
2370static const
2371CSN_ChoiceElement_t PacketCellChangeOrderID[] =
2372{
2373 {1, 0, M_TYPE(PacketCellChangeOrderID_t, u.Global_TFI, Global_TFI_t)},
2374 {2, 0x02, M_UINT(PacketCellChangeOrderID_t, u.TLLI, 32)},
2375};
2376/* PacketCellChangeOrderID_t; */
2377
2378static const
2379CSN_DESCR_BEGIN(PacketCellChangeOrderID_t)
2380 M_CHOICE (PacketCellChangeOrderID_t, UnionType, PacketCellChangeOrderID, ElementsOf(PacketCellChangeOrderID)),
2381CSN_DESCR_END (PacketCellChangeOrderID_t)
2382
2383static const
2384CSN_DESCR_BEGIN(h_FreqBsicCell_t)
2385 M_UINT (h_FreqBsicCell_t, BSIC, 6),
2386 M_TYPE (h_FreqBsicCell_t, Cell_Selection, Cell_Selection_t),
2387CSN_DESCR_END (h_FreqBsicCell_t)
2388
2389static const CSN_DESCR_BEGIN(CellSelectionParamsWithFreqDiff_t)
2390 /*FREQUENCY_DIFF is really an integer but the number of bits to decode it are stored in FREQ_DIFF_LENGTH*/
2391 M_VAR_BITMAP (CellSelectionParamsWithFreqDiff_t, FREQUENCY_DIFF, FREQ_DIFF_LENGTH, 0),
2392 M_UINT (CellSelectionParamsWithFreqDiff_t, BSIC, 6),
2393 M_NEXT_EXIST (CellSelectionParamsWithFreqDiff_t, Exist_CellSelectionParams, 1),
2394 M_TYPE (CellSelectionParamsWithFreqDiff_t, CellSelectionParams, Cell_Selection_2_t),
2395CSN_DESCR_END (CellSelectionParamsWithFreqDiff_t)
2396
2397static const
2398CSN_DESCR_BEGIN(Add_Frequency_list_t)
2399 M_UINT (Add_Frequency_list_t, START_FREQUENCY, 10),
2400 M_UINT (Add_Frequency_list_t, BSIC, 6),
2401
2402 M_NEXT_EXIST (Add_Frequency_list_t, Exist_Cell_Selection, 1),
2403 M_TYPE (Add_Frequency_list_t, Cell_Selection, Cell_Selection_2_t),
2404
2405 M_UINT (Add_Frequency_list_t, NR_OF_FREQUENCIES, 5),
2406 M_UINT_OFFSET(Add_Frequency_list_t, FREQ_DIFF_LENGTH, 3, 1),/*offset 1*/
2407
2408 M_VAR_TARRAY (Add_Frequency_list_t, CellSelectionParamsWithFreqDiff, CellSelectionParamsWithFreqDiff_t, NR_OF_FREQUENCIES),
2409CSN_DESCR_END (Add_Frequency_list_t)
2410
2411static const CSN_DESCR_BEGIN(Removed_Freq_Index_t)
2412 M_UINT(Removed_Freq_Index_t, REMOVED_FREQ_INDEX, 6),
2413CSN_DESCR_END(Removed_Freq_Index_t)
2414
2415static const
2416CSN_DESCR_BEGIN(NC_Frequency_list_t)
2417 M_NEXT_EXIST (NC_Frequency_list_t, Exist_REMOVED_FREQ, 2),
2418 M_UINT_OFFSET(NC_Frequency_list_t, NR_OF_REMOVED_FREQ, 5, 1),/*offset 1*/
2419 M_VAR_TARRAY (NC_Frequency_list_t, Removed_Freq_Index, Removed_Freq_Index_t, NR_OF_REMOVED_FREQ),
2420 M_REC_TARRAY (NC_Frequency_list_t, Add_Frequency, Add_Frequency_list_t, Count_Add_Frequency),
2421CSN_DESCR_END (NC_Frequency_list_t)
2422
2423static const
2424CSN_DESCR_BEGIN(NC_Measurement_Parameters_t)
2425 M_UINT (NC_Measurement_Parameters_t, NETWORK_CONTROL_ORDER, 2),
2426
2427 M_NEXT_EXIST (NC_Measurement_Parameters_t, Exist_NC, 3),
2428 M_UINT (NC_Measurement_Parameters_t, NC_NON_DRX_PERIOD, 3),
2429 M_UINT (NC_Measurement_Parameters_t, NC_REPORTING_PERIOD_I, 3),
2430 M_UINT (NC_Measurement_Parameters_t, NC_REPORTING_PERIOD_T, 3),
2431CSN_DESCR_END (NC_Measurement_Parameters_t)
2432
2433static const
2434CSN_DESCR_BEGIN(NC_Measurement_Parameters_with_Frequency_List_t)
2435 M_UINT (NC_Measurement_Parameters_with_Frequency_List_t, NETWORK_CONTROL_ORDER, 2),
2436
2437 M_NEXT_EXIST (NC_Measurement_Parameters_with_Frequency_List_t, Exist_NC, 3),
2438 M_UINT (NC_Measurement_Parameters_with_Frequency_List_t, NC_NON_DRX_PERIOD, 3),
2439 M_UINT (NC_Measurement_Parameters_with_Frequency_List_t, NC_REPORTING_PERIOD_I, 3),
2440 M_UINT (NC_Measurement_Parameters_with_Frequency_List_t, NC_REPORTING_PERIOD_T, 3),
2441
2442 M_NEXT_EXIST (NC_Measurement_Parameters_with_Frequency_List_t, Exist_NC_FREQUENCY_LIST, 1),
2443 M_TYPE (NC_Measurement_Parameters_with_Frequency_List_t, NC_Frequency_list, NC_Frequency_list_t),
2444CSN_DESCR_END (NC_Measurement_Parameters_with_Frequency_List_t)
2445
2446/*< Packet Cell Change Order message contents >*/
2447static const
2448CSN_DESCR_BEGIN(BA_IND_t)
2449 M_UINT (BA_IND_t, BA_IND, 1),
2450 M_UINT (BA_IND_t, BA_IND_3G, 1),
2451CSN_DESCR_END (BA_IND_t)
2452
2453static const
2454CSN_DESCR_BEGIN(GPRSReportPriority_t)
2455 M_UINT (GPRSReportPriority_t, NUMBER_CELLS, 7),
2456 M_VAR_BITMAP (GPRSReportPriority_t, REPORT_PRIORITY, NUMBER_CELLS, 0),
2457CSN_DESCR_END (GPRSReportPriority_t)
2458
2459static const
2460CSN_DESCR_BEGIN(OffsetThreshold_t)
2461 M_UINT (OffsetThreshold_t, REPORTING_OFFSET, 3),
2462 M_UINT (OffsetThreshold_t, REPORTING_THRESHOLD, 3),
2463CSN_DESCR_END (OffsetThreshold_t)
2464
2465static const
2466CSN_DESCR_BEGIN(GPRSMeasurementParams_PMO_PCCO_t)
2467 M_NEXT_EXIST (GPRSMeasurementParams_PMO_PCCO_t, Exist_MULTI_BAND_REPORTING, 1),
2468 M_UINT (GPRSMeasurementParams_PMO_PCCO_t, MULTI_BAND_REPORTING, 2),
2469
2470 M_NEXT_EXIST (GPRSMeasurementParams_PMO_PCCO_t, Exist_SERVING_BAND_REPORTING, 1),
2471 M_UINT (GPRSMeasurementParams_PMO_PCCO_t, SERVING_BAND_REPORTING, 2),
2472
2473 M_UINT (GPRSMeasurementParams_PMO_PCCO_t, SCALE_ORD, 2),
2474
2475 M_NEXT_EXIST (GPRSMeasurementParams_PMO_PCCO_t, Exist_OffsetThreshold900, 1),
2476 M_TYPE (GPRSMeasurementParams_PMO_PCCO_t, OffsetThreshold900, OffsetThreshold_t),
2477
2478 M_NEXT_EXIST (GPRSMeasurementParams_PMO_PCCO_t, Exist_OffsetThreshold1800, 1),
2479 M_TYPE (GPRSMeasurementParams_PMO_PCCO_t, OffsetThreshold1800, OffsetThreshold_t),
2480
2481 M_NEXT_EXIST (GPRSMeasurementParams_PMO_PCCO_t, Exist_OffsetThreshold400, 1),
2482 M_TYPE (GPRSMeasurementParams_PMO_PCCO_t, OffsetThreshold400, OffsetThreshold_t),
2483
2484 M_NEXT_EXIST (GPRSMeasurementParams_PMO_PCCO_t, Exist_OffsetThreshold1900, 1),
2485 M_TYPE (GPRSMeasurementParams_PMO_PCCO_t, OffsetThreshold1900, OffsetThreshold_t),
2486
2487 M_NEXT_EXIST (GPRSMeasurementParams_PMO_PCCO_t, Exist_OffsetThreshold850, 1),
2488 M_TYPE (GPRSMeasurementParams_PMO_PCCO_t, OffsetThreshold850, OffsetThreshold_t),
2489CSN_DESCR_END (GPRSMeasurementParams_PMO_PCCO_t)
2490
2491static const
2492CSN_DESCR_BEGIN(GPRSMeasurementParams3G_t)
2493 M_UINT (GPRSMeasurementParams3G_t, Qsearch_p, 4),
2494 M_UINT (GPRSMeasurementParams3G_t, SearchPrio3G, 1),
2495
2496 M_NEXT_EXIST (GPRSMeasurementParams3G_t, existRepParamsFDD, 2),
2497 M_UINT (GPRSMeasurementParams3G_t, RepQuantFDD, 1),
2498 M_UINT (GPRSMeasurementParams3G_t, MultiratReportingFDD, 2),
2499
2500 M_NEXT_EXIST (GPRSMeasurementParams3G_t, existReportingParamsFDD, 2),
2501 M_UINT (GPRSMeasurementParams3G_t, ReportingOffsetFDD, 3),
2502 M_UINT (GPRSMeasurementParams3G_t, ReportingThresholdFDD, 3),
2503
2504 M_NEXT_EXIST (GPRSMeasurementParams3G_t, existMultiratReportingTDD, 1),
2505 M_UINT (GPRSMeasurementParams3G_t, MultiratReportingTDD, 2),
2506
2507 M_NEXT_EXIST (GPRSMeasurementParams3G_t, existOffsetThresholdTDD, 2),
2508 M_UINT (GPRSMeasurementParams3G_t, ReportingOffsetTDD, 3),
2509 M_UINT (GPRSMeasurementParams3G_t, ReportingThresholdTDD, 3),
2510CSN_DESCR_END (GPRSMeasurementParams3G_t)
2511
2512static const
2513CSN_DESCR_BEGIN(MultiratParams3G_t)
2514 M_NEXT_EXIST (MultiratParams3G_t, existMultiratReporting, 1),
2515 M_UINT (MultiratParams3G_t, MultiratReporting, 2),
2516
2517 M_NEXT_EXIST (MultiratParams3G_t, existOffsetThreshold, 1),
2518 M_TYPE (MultiratParams3G_t, OffsetThreshold, OffsetThreshold_t),
2519CSN_DESCR_END (MultiratParams3G_t)
2520
2521static const
2522CSN_DESCR_BEGIN(ENH_GPRSMeasurementParams3G_PMO_t)
2523 M_UINT (ENH_GPRSMeasurementParams3G_PMO_t, Qsearch_P, 4),
2524 M_UINT (ENH_GPRSMeasurementParams3G_PMO_t, SearchPrio3G, 1),
2525
2526 M_NEXT_EXIST (ENH_GPRSMeasurementParams3G_PMO_t, existRepParamsFDD, 2),
2527 M_UINT (ENH_GPRSMeasurementParams3G_PMO_t, RepQuantFDD, 1),
2528 M_UINT (ENH_GPRSMeasurementParams3G_PMO_t, MultiratReportingFDD, 2),
2529
2530 M_NEXT_EXIST (ENH_GPRSMeasurementParams3G_PMO_t, existOffsetThreshold, 1),
2531 M_TYPE (ENH_GPRSMeasurementParams3G_PMO_t, OffsetThreshold, OffsetThreshold_t),
2532
2533 M_TYPE (ENH_GPRSMeasurementParams3G_PMO_t, ParamsTDD, MultiratParams3G_t),
2534 M_TYPE (ENH_GPRSMeasurementParams3G_PMO_t, ParamsCDMA2000, MultiratParams3G_t),
2535CSN_DESCR_END (ENH_GPRSMeasurementParams3G_PMO_t)
2536
2537static const
2538CSN_DESCR_BEGIN(ENH_GPRSMeasurementParams3G_PCCO_t)
2539 M_UINT (ENH_GPRSMeasurementParams3G_PCCO_t, Qsearch_P, 4),
2540 M_UINT (ENH_GPRSMeasurementParams3G_PCCO_t, SearchPrio3G, 1),
2541
2542 M_NEXT_EXIST (ENH_GPRSMeasurementParams3G_PCCO_t, existRepParamsFDD, 2),
2543 M_UINT (ENH_GPRSMeasurementParams3G_PCCO_t, RepQuantFDD, 1),
2544 M_UINT (ENH_GPRSMeasurementParams3G_PCCO_t, MultiratReportingFDD, 2),
2545
2546 M_NEXT_EXIST (ENH_GPRSMeasurementParams3G_PCCO_t, existOffsetThreshold, 1),
2547 M_TYPE (ENH_GPRSMeasurementParams3G_PCCO_t, OffsetThreshold, OffsetThreshold_t),
2548
2549 M_TYPE (ENH_GPRSMeasurementParams3G_PCCO_t, ParamsTDD, MultiratParams3G_t),
2550CSN_DESCR_END (ENH_GPRSMeasurementParams3G_PCCO_t)
2551
2552static const
2553CSN_DESCR_BEGIN(N2_t)
2554 M_UINT (N2_t, REMOVED_3GCELL_INDEX, 7),
2555 M_UINT (N2_t, CELL_DIFF_LENGTH_3G, 3),
2556 M_VAR_BITMAP (N2_t, CELL_DIFF_3G, CELL_DIFF_LENGTH_3G, 0),
2557CSN_DESCR_END (N2_t)
2558
2559static const
2560CSN_DESCR_BEGIN (N1_t)
2561 M_UINT_OFFSET (N1_t, N2_Count, 5, 1), /*offset 1*/
2562 M_VAR_TARRAY (N1_t, N2s, N2_t, N2_Count),
2563CSN_DESCR_END (N1_t)
2564
2565static const
2566CSN_DESCR_BEGIN (Removed3GCellDescription_t)
2567 M_UINT_OFFSET (Removed3GCellDescription_t, N1_Count, 2, 1), /* offset 1 */
2568 M_VAR_TARRAY (Removed3GCellDescription_t, N1s, N1_t, N1_Count),
2569CSN_DESCR_END (Removed3GCellDescription_t)
2570
2571static const
2572CSN_DESCR_BEGIN(CDMA2000_Description_t)
2573 M_UINT (CDMA2000_Description_t, Complete_This, 1),
2574 CSN_ERROR (CDMA2000_Description_t, "Not Implemented", CSN_ERROR_STREAM_NOT_SUPPORTED),
2575CSN_DESCR_END (CDMA2000_Description_t)
2576
2577static const
2578CSN_DESCR_BEGIN(UTRAN_FDD_NeighbourCells_t)
2579 M_UINT (UTRAN_FDD_NeighbourCells_t, ZERO, 1),
2580 M_UINT (UTRAN_FDD_NeighbourCells_t, UARFCN, 14),
2581 M_UINT (UTRAN_FDD_NeighbourCells_t, Indic0, 1),
2582 M_UINT (UTRAN_FDD_NeighbourCells_t, NrOfCells, 5),
2583/* M_CALLBACK (UTRAN_FDD_NeighbourCells_t, (void*) 14, NrOfCells, BitsInCellInfo), */
2584 M_VAR_BITMAP (UTRAN_FDD_NeighbourCells_t, CellInfo, BitsInCellInfo, 0),
2585CSN_DESCR_END (UTRAN_FDD_NeighbourCells_t)
2586
2587static const
2588CSN_DESCR_BEGIN(UTRAN_FDD_Description_t)
2589 M_NEXT_EXIST (UTRAN_FDD_Description_t, existBandwidth, 1),
2590 M_UINT (UTRAN_FDD_Description_t, Bandwidth, 3),
2591 M_REC_TARRAY (UTRAN_FDD_Description_t, CellParams, UTRAN_FDD_NeighbourCells_t, NrOfFrequencies),
2592CSN_DESCR_END (UTRAN_FDD_Description_t)
2593
2594static const
2595CSN_DESCR_BEGIN(UTRAN_TDD_NeighbourCells_t)
2596 M_UINT (UTRAN_TDD_NeighbourCells_t, ZERO, 1),
2597 M_UINT (UTRAN_TDD_NeighbourCells_t, UARFCN, 14),
2598 M_UINT (UTRAN_TDD_NeighbourCells_t, Indic0, 1),
2599 M_UINT (UTRAN_TDD_NeighbourCells_t, NrOfCells, 5),
2600/* M_CALLBACK (UTRAN_TDD_NeighbourCells_t, (void*) 23, NrOfCells, BitsInCellInfo), */
2601 M_VAR_BITMAP (UTRAN_TDD_NeighbourCells_t, CellInfo, BitsInCellInfo, 0),
2602CSN_DESCR_END (UTRAN_TDD_NeighbourCells_t)
2603
2604static const
2605CSN_DESCR_BEGIN(UTRAN_TDD_Description_t)
2606 M_NEXT_EXIST (UTRAN_TDD_Description_t, existBandwidth, 1),
2607 M_UINT (UTRAN_TDD_Description_t, Bandwidth, 3),
2608 M_REC_TARRAY (UTRAN_TDD_Description_t, CellParams, UTRAN_TDD_NeighbourCells_t, NrOfFrequencies),
2609CSN_DESCR_END (UTRAN_TDD_Description_t)
2610
2611static const
2612CSN_DESCR_BEGIN(NeighbourCellDescription3G_PMO_t)
2613 M_NEXT_EXIST (NeighbourCellDescription3G_PMO_t, Exist_Index_Start_3G, 1),
2614 M_UINT (NeighbourCellDescription3G_PMO_t, Index_Start_3G, 7),
2615 M_NEXT_EXIST (NeighbourCellDescription3G_PMO_t, Exist_Absolute_Index_Start_EMR, 1),
2616 M_UINT (NeighbourCellDescription3G_PMO_t, Absolute_Index_Start_EMR, 7),
2617 M_NEXT_EXIST (NeighbourCellDescription3G_PMO_t, Exist_UTRAN_FDD_Description, 1),
2618 M_TYPE (NeighbourCellDescription3G_PMO_t, UTRAN_FDD_Description, UTRAN_FDD_Description_t),
2619 M_NEXT_EXIST (NeighbourCellDescription3G_PMO_t, Exist_UTRAN_TDD_Description, 1),
2620 M_TYPE (NeighbourCellDescription3G_PMO_t, UTRAN_TDD_Description, UTRAN_TDD_Description_t),
2621 M_NEXT_EXIST (NeighbourCellDescription3G_PMO_t, Exist_CDMA2000_Description, 1),
2622 M_TYPE (NeighbourCellDescription3G_PMO_t, CDMA2000_Description, CDMA2000_Description_t),
2623 M_NEXT_EXIST (NeighbourCellDescription3G_PMO_t, Exist_Removed3GCellDescription, 1),
2624 M_TYPE (NeighbourCellDescription3G_PMO_t, Removed3GCellDescription, Removed3GCellDescription_t),
2625CSN_DESCR_END (NeighbourCellDescription3G_PMO_t)
2626
2627static const
2628CSN_DESCR_BEGIN(NeighbourCellDescription3G_PCCO_t)
2629 M_NEXT_EXIST (NeighbourCellDescription3G_PCCO_t, Exist_Index_Start_3G, 1),
2630 M_UINT (NeighbourCellDescription3G_PCCO_t, Index_Start_3G, 7),
2631 M_NEXT_EXIST (NeighbourCellDescription3G_PCCO_t, Exist_Absolute_Index_Start_EMR, 1),
2632 M_UINT (NeighbourCellDescription3G_PCCO_t, Absolute_Index_Start_EMR, 7),
2633 M_NEXT_EXIST (NeighbourCellDescription3G_PCCO_t, Exist_UTRAN_FDD_Description, 1),
2634 M_TYPE (NeighbourCellDescription3G_PCCO_t, UTRAN_FDD_Description, UTRAN_FDD_Description_t),
2635 M_NEXT_EXIST (NeighbourCellDescription3G_PCCO_t, Exist_UTRAN_TDD_Description, 1),
2636 M_TYPE (NeighbourCellDescription3G_PCCO_t, UTRAN_TDD_Description, UTRAN_TDD_Description_t),
2637 M_NEXT_EXIST (NeighbourCellDescription3G_PCCO_t, Exist_Removed3GCellDescription, 1),
2638 M_TYPE (NeighbourCellDescription3G_PCCO_t, Removed3GCellDescription, Removed3GCellDescription_t),
2639CSN_DESCR_END (NeighbourCellDescription3G_PCCO_t)
2640
2641static const
2642CSN_DESCR_BEGIN(ENH_Measurement_Parameters_PMO_t)
2643 M_UNION (ENH_Measurement_Parameters_PMO_t, 2),
2644 M_TYPE (ENH_Measurement_Parameters_PMO_t, u.BA_IND, BA_IND_t),
2645 M_UINT (ENH_Measurement_Parameters_PMO_t, u.PSI3_CHANGE_MARK, 2),
2646 M_UINT (ENH_Measurement_Parameters_PMO_t, PMO_IND, 1),
2647
2648 M_UINT (ENH_Measurement_Parameters_PMO_t, REPORT_TYPE, 1),
2649 M_UINT (ENH_Measurement_Parameters_PMO_t, REPORTING_RATE, 1),
2650 M_UINT (ENH_Measurement_Parameters_PMO_t, INVALID_BSIC_REPORTING, 1),
2651
2652 M_NEXT_EXIST (ENH_Measurement_Parameters_PMO_t, Exist_NeighbourCellDescription3G, 1),
2653 M_TYPE (ENH_Measurement_Parameters_PMO_t, NeighbourCellDescription3G, NeighbourCellDescription3G_PMO_t),
2654
2655 M_NEXT_EXIST (ENH_Measurement_Parameters_PMO_t, Exist_GPRSReportPriority, 1),
2656 M_TYPE (ENH_Measurement_Parameters_PMO_t, GPRSReportPriority, GPRSReportPriority_t),
2657
2658 M_NEXT_EXIST (ENH_Measurement_Parameters_PMO_t, Exist_GPRSMeasurementParams, 1),
2659 M_TYPE (ENH_Measurement_Parameters_PMO_t, GPRSMeasurementParams, GPRSMeasurementParams_PMO_PCCO_t),
2660
2661 M_NEXT_EXIST (ENH_Measurement_Parameters_PMO_t, Exist_GPRSMeasurementParams3G, 1),
2662 M_TYPE (ENH_Measurement_Parameters_PMO_t, GPRSMeasurementParams3G, ENH_GPRSMeasurementParams3G_PMO_t),
2663CSN_DESCR_END (ENH_Measurement_Parameters_PMO_t)
2664
2665static const
2666CSN_DESCR_BEGIN(ENH_Measurement_Parameters_PCCO_t)
2667 M_UNION (ENH_Measurement_Parameters_PCCO_t, 2),
2668 M_TYPE (ENH_Measurement_Parameters_PCCO_t, u.BA_IND, BA_IND_t),
2669 M_UINT (ENH_Measurement_Parameters_PCCO_t, u.PSI3_CHANGE_MARK, 2),
2670 M_UINT (ENH_Measurement_Parameters_PCCO_t, PMO_IND, 1),
2671
2672 M_UINT (ENH_Measurement_Parameters_PCCO_t, REPORT_TYPE, 1),
2673 M_UINT (ENH_Measurement_Parameters_PCCO_t, REPORTING_RATE, 1),
2674 M_UINT (ENH_Measurement_Parameters_PCCO_t, INVALID_BSIC_REPORTING, 1),
2675
2676 M_NEXT_EXIST (ENH_Measurement_Parameters_PCCO_t, Exist_NeighbourCellDescription3G, 1),
2677 M_TYPE (ENH_Measurement_Parameters_PCCO_t, NeighbourCellDescription3G, NeighbourCellDescription3G_PCCO_t),
2678
2679 M_NEXT_EXIST (ENH_Measurement_Parameters_PCCO_t, Exist_GPRSReportPriority, 1),
2680 M_TYPE (ENH_Measurement_Parameters_PCCO_t, GPRSReportPriority, GPRSReportPriority_t),
2681
2682 M_NEXT_EXIST (ENH_Measurement_Parameters_PCCO_t, Exist_GPRSMeasurementParams, 1),
2683 M_TYPE (ENH_Measurement_Parameters_PCCO_t, GPRSMeasurementParams, GPRSMeasurementParams_PMO_PCCO_t),
2684
2685 M_NEXT_EXIST (ENH_Measurement_Parameters_PCCO_t, Exist_GPRSMeasurementParams3G, 1),
2686 M_TYPE (ENH_Measurement_Parameters_PCCO_t, GPRSMeasurementParams3G, ENH_GPRSMeasurementParams3G_PCCO_t),
2687CSN_DESCR_END (ENH_Measurement_Parameters_PCCO_t)
2688
2689static const
2690CSN_DESCR_BEGIN(CCN_Support_Description_t)
2691 M_UINT (CCN_Support_Description_t, NUMBER_CELLS, 7),
2692 M_VAR_BITMAP (CCN_Support_Description_t, CCN_SUPPORTED, NUMBER_CELLS, 0),
2693CSN_DESCR_END (CCN_Support_Description_t)
2694
2695static const
2696CSN_DESCR_BEGIN(lu_ModeCellSelectionParameters_t)
2697 M_UINT (lu_ModeCellSelectionParameters_t, CELL_BAR_QUALIFY_3, 2),
2698 M_NEXT_EXIST (lu_ModeCellSelectionParameters_t, Exist_SI13_Alt_PBCCH_Location, 1),
2699 M_TYPE (lu_ModeCellSelectionParameters_t, SI13_Alt_PBCCH_Location, SI13_PBCCH_Location_t),
2700CSN_DESCR_END (lu_ModeCellSelectionParameters_t)
2701
2702static const
2703CSN_DESCR_BEGIN(lu_ModeCellSelectionParams_t)
2704 M_NEXT_EXIST (lu_ModeCellSelectionParams_t, Exist_lu_ModeCellSelectionParams, 1),
2705 M_TYPE (lu_ModeCellSelectionParams_t, lu_ModeCellSelectionParameters, lu_ModeCellSelectionParameters_t),
2706CSN_DESCR_END (lu_ModeCellSelectionParams_t)
2707
2708static const
2709CSN_DESCR_BEGIN(lu_ModeNeighbourCellParams_t)
2710 M_TYPE (lu_ModeNeighbourCellParams_t, lu_ModeCellSelectionParameters, lu_ModeCellSelectionParams_t),
2711 M_UINT (lu_ModeNeighbourCellParams_t, NR_OF_FREQUENCIES, 5),
2712 M_VAR_TARRAY (lu_ModeNeighbourCellParams_t, lu_ModeCellSelectionParams, lu_ModeCellSelectionParams_t, NR_OF_FREQUENCIES),
2713CSN_DESCR_END (lu_ModeNeighbourCellParams_t)
2714
2715static const
2716CSN_DESCR_BEGIN(lu_ModeOnlyCellSelection_t)
2717 M_UINT (lu_ModeOnlyCellSelection_t, CELL_BAR_QUALIFY_3, 2),
2718 M_UINT (lu_ModeOnlyCellSelection_t, SAME_RA_AS_SERVING_CELL, 1),
2719
2720 M_NEXT_EXIST (lu_ModeOnlyCellSelection_t, Exist_RXLEV_and_TXPWR, 2),
2721 M_UINT (lu_ModeOnlyCellSelection_t, GPRS_RXLEV_ACCESS_MIN, 6),
2722 M_UINT (lu_ModeOnlyCellSelection_t, GPRS_MS_TXPWR_MAX_CCH, 5),
2723
2724 M_NEXT_EXIST (lu_ModeOnlyCellSelection_t, Exist_OFFSET_and_TIME, 2),
2725 M_UINT (lu_ModeOnlyCellSelection_t, GPRS_TEMPORARY_OFFSET, 3),
2726 M_UINT (lu_ModeOnlyCellSelection_t, GPRS_PENALTY_TIME, 5),
2727
2728 M_NEXT_EXIST (lu_ModeOnlyCellSelection_t, Exist_GPRS_RESELECT_OFFSET, 1),
2729 M_UINT (lu_ModeOnlyCellSelection_t, GPRS_RESELECT_OFFSET, 5),
2730
2731 M_NEXT_EXIST (lu_ModeOnlyCellSelection_t, Exist_HCS, 1),
2732 M_TYPE (lu_ModeOnlyCellSelection_t, HCS, HCS_t),
2733
2734 M_NEXT_EXIST (lu_ModeOnlyCellSelection_t, Exist_SI13_Alt_PBCCH_Location, 1),
2735 M_TYPE (lu_ModeOnlyCellSelection_t, SI13_Alt_PBCCH_Location, SI13_PBCCH_Location_t),
2736CSN_DESCR_END (lu_ModeOnlyCellSelection_t)
2737
2738static const
2739CSN_DESCR_BEGIN(lu_ModeOnlyCellSelectionParamsWithFreqDiff_t)
2740 /*FREQUENCY_DIFF is really an integer but the number of bits to decode it are stored in FREQ_DIFF_LENGTH*/
2741 M_VAR_BITMAP (lu_ModeOnlyCellSelectionParamsWithFreqDiff_t, FREQUENCY_DIFF, FREQ_DIFF_LENGTH, 0),
2742 M_UINT (lu_ModeOnlyCellSelectionParamsWithFreqDiff_t, BSIC, 6),
2743 M_NEXT_EXIST (lu_ModeOnlyCellSelectionParamsWithFreqDiff_t, Exist_lu_ModeOnlyCellSelectionParams, 1),
2744 M_TYPE (lu_ModeOnlyCellSelectionParamsWithFreqDiff_t, lu_ModeOnlyCellSelectionParams, lu_ModeOnlyCellSelection_t),
2745CSN_DESCR_END (lu_ModeOnlyCellSelectionParamsWithFreqDiff_t)
2746
2747static const
2748CSN_DESCR_BEGIN(Add_lu_ModeOnlyFrequencyList_t)
2749 M_UINT (Add_lu_ModeOnlyFrequencyList_t, START_FREQUENCY, 10),
2750 M_UINT (Add_lu_ModeOnlyFrequencyList_t, BSIC, 6),
2751
2752 M_NEXT_EXIST (Add_lu_ModeOnlyFrequencyList_t, Exist_lu_ModeCellSelection, 1),
2753 M_TYPE (Add_lu_ModeOnlyFrequencyList_t, lu_ModeOnlyCellSelection, lu_ModeOnlyCellSelection_t),
2754
2755 M_UINT (Add_lu_ModeOnlyFrequencyList_t, NR_OF_FREQUENCIES, 5),
2756 M_UINT (Add_lu_ModeOnlyFrequencyList_t, FREQ_DIFF_LENGTH, 3),
2757
2758 M_VAR_TARRAY (Add_lu_ModeOnlyFrequencyList_t, lu_ModeOnlyCellSelectionParamsWithFreqDiff, lu_ModeOnlyCellSelectionParamsWithFreqDiff_t, NR_OF_FREQUENCIES),
2759CSN_DESCR_END (Add_lu_ModeOnlyFrequencyList_t)
2760
2761static const
2762CSN_DESCR_BEGIN(NC_lu_ModeOnlyCapableCellList_t)
2763 M_REC_TARRAY (NC_lu_ModeOnlyCapableCellList_t, Add_lu_ModeOnlyFrequencyList, Add_lu_ModeOnlyFrequencyList_t, Count_Add_lu_ModeOnlyFrequencyList),
2764CSN_DESCR_END (NC_lu_ModeOnlyCapableCellList_t)
2765
2766static const
2767CSN_DESCR_BEGIN(GPRS_AdditionalMeasurementParams3G_t)
2768 M_NEXT_EXIST (GPRS_AdditionalMeasurementParams3G_t, Exist_FDD_REPORTING_THRESHOLD_2, 1),
2769 M_UINT (GPRS_AdditionalMeasurementParams3G_t, FDD_REPORTING_THRESHOLD_2, 6),
2770CSN_DESCR_END (GPRS_AdditionalMeasurementParams3G_t)
2771
2772static const
2773CSN_DESCR_BEGIN(ServingCellPriorityParametersDescription_t)
2774 M_UINT (ServingCellPriorityParametersDescription_t, GERAN_PRIORITY, 3),
2775 M_UINT (ServingCellPriorityParametersDescription_t, THRESH_Priority_Search, 4),
2776 M_UINT (ServingCellPriorityParametersDescription_t, THRESH_GSM_low, 4),
2777 M_UINT (ServingCellPriorityParametersDescription_t, H_PRIO, 2),
2778 M_UINT (ServingCellPriorityParametersDescription_t, T_Reselection, 2),
2779CSN_DESCR_END (ServingCellPriorityParametersDescription_t)
2780
2781static const
2782CSN_DESCR_BEGIN(RepeatedUTRAN_PriorityParameters_t)
2783 M_REC_ARRAY (RepeatedUTRAN_PriorityParameters_t, UTRAN_FREQUENCY_INDEX_a, NumberOfFrequencyIndexes, 5),
2784
2785 M_NEXT_EXIST (RepeatedUTRAN_PriorityParameters_t, existUTRAN_PRIORITY, 1),
2786 M_UINT (RepeatedUTRAN_PriorityParameters_t, UTRAN_PRIORITY, 3),
2787
2788 M_UINT (RepeatedUTRAN_PriorityParameters_t, THRESH_UTRAN_high, 5),
2789
2790 M_NEXT_EXIST (RepeatedUTRAN_PriorityParameters_t, existTHRESH_UTRAN_low, 1),
2791 M_UINT (RepeatedUTRAN_PriorityParameters_t, THRESH_UTRAN_low, 5),
2792
2793 M_NEXT_EXIST (RepeatedUTRAN_PriorityParameters_t, existUTRAN_QRXLEVMIN, 1),
2794 M_UINT (RepeatedUTRAN_PriorityParameters_t, UTRAN_QRXLEVMIN, 5),
2795CSN_DESCR_END (RepeatedUTRAN_PriorityParameters_t)
2796
2797static const
2798CSN_DESCR_BEGIN(PriorityParametersDescription3G_PMO_t)
2799
2800 M_NEXT_EXIST (PriorityParametersDescription3G_PMO_t, existDEFAULT_UTRAN_Parameters, 3),
2801 M_UINT (PriorityParametersDescription3G_PMO_t, DEFAULT_UTRAN_PRIORITY, 3),
2802 M_UINT (PriorityParametersDescription3G_PMO_t, DEFAULT_THRESH_UTRAN, 5),
2803 M_UINT (PriorityParametersDescription3G_PMO_t, DEFAULT_UTRAN_QRXLEVMIN, 5),
2804
2805 M_REC_TARRAY (PriorityParametersDescription3G_PMO_t, RepeatedUTRAN_PriorityParameters_a, RepeatedUTRAN_PriorityParameters_t, NumberOfPriorityParameters),
2806CSN_DESCR_END (PriorityParametersDescription3G_PMO_t)
2807
2808static const
2809CSN_DESCR_BEGIN(EUTRAN_REPORTING_THRESHOLD_OFFSET_t)
2810 M_NEXT_EXIST (EUTRAN_REPORTING_THRESHOLD_OFFSET_t, existEUTRAN_FDD_REPORTING_THRESHOLD_OFFSET, 5),
2811 M_UINT (EUTRAN_REPORTING_THRESHOLD_OFFSET_t, EUTRAN_FDD_REPORTING_THRESHOLD, 3),
2812 M_NEXT_EXIST (EUTRAN_REPORTING_THRESHOLD_OFFSET_t, existEUTRAN_FDD_REPORTING_THRESHOLD_2, 1),
2813 M_UINT (EUTRAN_REPORTING_THRESHOLD_OFFSET_t, EUTRAN_FDD_REPORTING_THRESHOLD_2, 6),
2814 M_NEXT_EXIST (EUTRAN_REPORTING_THRESHOLD_OFFSET_t, existEUTRAN_FDD_REPORTING_OFFSET, 1),
2815 M_UINT (EUTRAN_REPORTING_THRESHOLD_OFFSET_t, EUTRAN_FDD_REPORTING_OFFSET, 3),
2816
2817 M_NEXT_EXIST (EUTRAN_REPORTING_THRESHOLD_OFFSET_t, existEUTRAN_TDD_REPORTING_THRESHOLD_OFFSET, 5),
2818 M_UINT (EUTRAN_REPORTING_THRESHOLD_OFFSET_t, EUTRAN_TDD_REPORTING_THRESHOLD, 3),
2819 M_NEXT_EXIST (EUTRAN_REPORTING_THRESHOLD_OFFSET_t, existEUTRAN_TDD_REPORTING_THRESHOLD_2, 1),
2820 M_UINT (EUTRAN_REPORTING_THRESHOLD_OFFSET_t, EUTRAN_TDD_REPORTING_THRESHOLD_2, 6),
2821 M_NEXT_EXIST (EUTRAN_REPORTING_THRESHOLD_OFFSET_t, existEUTRAN_TDD_REPORTING_OFFSET, 1),
2822 M_UINT (EUTRAN_REPORTING_THRESHOLD_OFFSET_t, EUTRAN_TDD_REPORTING_OFFSET, 3),
2823CSN_DESCR_END (EUTRAN_REPORTING_THRESHOLD_OFFSET_t)
2824
2825static const
2826CSN_DESCR_BEGIN(GPRS_EUTRAN_MeasurementParametersDescription_t)
2827 M_UINT (GPRS_EUTRAN_MeasurementParametersDescription_t, Qsearch_P_EUTRAN, 4),
2828 M_BIT (GPRS_EUTRAN_MeasurementParametersDescription_t, EUTRAN_REP_QUANT),
2829 M_UINT (GPRS_EUTRAN_MeasurementParametersDescription_t, EUTRAN_MULTIRAT_REPORTING, 2),
2830 M_TYPE (GPRS_EUTRAN_MeasurementParametersDescription_t, EUTRAN_REPORTING_THRESHOLD_OFFSET, EUTRAN_REPORTING_THRESHOLD_OFFSET_t),
2831CSN_DESCR_END (GPRS_EUTRAN_MeasurementParametersDescription_t)
2832
2833static const
2834CSN_DESCR_BEGIN(RepeatedEUTRAN_Cells_t)
2835 M_UINT (RepeatedEUTRAN_Cells_t, EARFCN, 16),
2836 M_NEXT_EXIST (RepeatedEUTRAN_Cells_t, existMeasurementBandwidth, 1),
2837 M_UINT (RepeatedEUTRAN_Cells_t, MeasurementBandwidth, 3),
2838CSN_DESCR_END (RepeatedEUTRAN_Cells_t)
2839
2840static const
2841CSN_DESCR_BEGIN(RepeatedEUTRAN_NeighbourCells_t)
2842 M_REC_TARRAY (RepeatedEUTRAN_NeighbourCells_t, EUTRAN_Cells_a, RepeatedEUTRAN_Cells_t, nbrOfEUTRAN_Cells),
2843
2844 M_NEXT_EXIST (RepeatedEUTRAN_NeighbourCells_t, existEUTRAN_PRIORITY, 1),
2845 M_UINT (RepeatedEUTRAN_NeighbourCells_t, EUTRAN_PRIORITY, 3),
2846
2847 M_UINT (RepeatedEUTRAN_NeighbourCells_t, THRESH_EUTRAN_high, 5),
2848
2849 M_NEXT_EXIST (RepeatedEUTRAN_NeighbourCells_t, existTHRESH_EUTRAN_low, 1),
2850 M_UINT (RepeatedEUTRAN_NeighbourCells_t, THRESH_EUTRAN_low, 5),
2851
2852 M_NEXT_EXIST (RepeatedEUTRAN_NeighbourCells_t, existEUTRAN_QRXLEVMIN, 1),
2853 M_UINT (RepeatedEUTRAN_NeighbourCells_t, EUTRAN_QRXLEVMIN, 5),
2854CSN_DESCR_END (RepeatedEUTRAN_NeighbourCells_t)
2855
2856static const
2857CSN_DESCR_BEGIN(PCID_Pattern_t)
2858 M_UINT (PCID_Pattern_t, PCID_Pattern_length, 3),
2859 M_VAR_BITMAP (PCID_Pattern_t, PCID_Pattern, PCID_Pattern_length, 1), /* offset 1, 44.060 12.57 */
2860 M_UINT (PCID_Pattern_t, PCID_Pattern_sense, 1),
2861CSN_DESCR_END (PCID_Pattern_t)
2862
2863static const
2864CSN_DESCR_BEGIN(PCID_Group_IE_t)
2865
2866 M_REC_ARRAY (PCID_Group_IE_t, PCID_a, NumberOfPCIDs, 9),
2867
2868 M_NEXT_EXIST (PCID_Group_IE_t, existPCID_BITMAP_GROUP, 1),
2869 M_UINT (PCID_Group_IE_t, PCID_BITMAP_GROUP, 6),
2870
2871 M_REC_TARRAY (PCID_Group_IE_t, PCID_Pattern_a, PCID_Pattern_t, NumberOfPCID_Patterns),
2872CSN_DESCR_END (PCID_Group_IE_t)
2873
2874static const
2875CSN_DESCR_BEGIN(EUTRAN_FREQUENCY_INDEX_t)
2876 M_UINT (EUTRAN_FREQUENCY_INDEX_t, EUTRAN_FREQUENCY_INDEX, 3),
2877CSN_DESCR_END (EUTRAN_FREQUENCY_INDEX_t)
2878
2879static const
2880CSN_DESCR_BEGIN(RepeatedEUTRAN_NotAllowedCells_t)
2881 M_TYPE (RepeatedEUTRAN_NotAllowedCells_t, NotAllowedCells, PCID_Group_IE_t),
2882
2883 M_REC_TARRAY (RepeatedEUTRAN_NotAllowedCells_t, EUTRAN_FREQUENCY_INDEX_a, EUTRAN_FREQUENCY_INDEX_t, NumberOfFrequencyIndexes),
2884CSN_DESCR_END (RepeatedEUTRAN_NotAllowedCells_t)
2885
2886static const
2887CSN_DESCR_BEGIN(RepeatedEUTRAN_PCID_to_TA_mapping_t)
2888 M_REC_TARRAY (RepeatedEUTRAN_PCID_to_TA_mapping_t, PCID_ToTA_Mapping_a, PCID_Group_IE_t, NumberOfMappings),
2889 M_REC_TARRAY (RepeatedEUTRAN_PCID_to_TA_mapping_t, EUTRAN_FREQUENCY_INDEX_a, EUTRAN_FREQUENCY_INDEX_t, NumberOfFrequencyIndexes),
2890CSN_DESCR_END (RepeatedEUTRAN_PCID_to_TA_mapping_t)
2891
2892static const
2893CSN_DESCR_BEGIN(EUTRAN_ParametersDescription_PMO_t)
2894 M_BIT (EUTRAN_ParametersDescription_PMO_t, EUTRAN_CCN_ACTIVE),
2895
2896 M_NEXT_EXIST (EUTRAN_ParametersDescription_PMO_t, existGPRS_EUTRAN_MeasurementParametersDescription, 1),
2897 M_TYPE (EUTRAN_ParametersDescription_PMO_t, GPRS_EUTRAN_MeasurementParametersDescription, GPRS_EUTRAN_MeasurementParametersDescription_t),
2898
2899 M_REC_TARRAY (EUTRAN_ParametersDescription_PMO_t, RepeatedEUTRAN_NeighbourCells_a, RepeatedEUTRAN_NeighbourCells_t, nbrOfRepeatedEUTRAN_NeighbourCellsStructs),
2900 M_REC_TARRAY (EUTRAN_ParametersDescription_PMO_t, RepeatedEUTRAN_NotAllowedCells_a, RepeatedEUTRAN_NotAllowedCells_t, NumberOfNotAllowedCells),
2901 M_REC_TARRAY (EUTRAN_ParametersDescription_PMO_t, RepeatedEUTRAN_PCID_to_TA_mapping_a, RepeatedEUTRAN_PCID_to_TA_mapping_t, NumberOfMappings),
2902CSN_DESCR_END (EUTRAN_ParametersDescription_PMO_t)
2903
2904static const
2905CSN_DESCR_BEGIN(PSC_Pattern_t)
2906 M_UINT (PSC_Pattern_t, PSC_Pattern_length, 3),
2907 M_VAR_BITMAP (PSC_Pattern_t, PSC_Pattern, PSC_Pattern_length, 1),
2908 M_BIT (PSC_Pattern_t, PSC_Pattern_sense),
2909CSN_DESCR_END (PSC_Pattern_t)
2910
2911static const
2912CSN_DESCR_BEGIN(PSC_Group_t)
2913 M_REC_ARRAY (PSC_Group_t, PSC, PSC_Count, 9),
2914 M_REC_TARRAY (PSC_Group_t, PSC_Pattern, PSC_Pattern_t, PSC_Pattern_Count),
2915CSN_DESCR_END (PSC_Group_t)
2916
2917static const
2918CSN_DESCR_BEGIN(ThreeG_CSG_Description_Body_t)
2919 M_TYPE (ThreeG_CSG_Description_Body_t, CSG_PSC_SPLIT, PSC_Group_t),
2920 M_REC_ARRAY (ThreeG_CSG_Description_Body_t, UTRAN_FREQUENCY_INDEX, Count, 5),
2921CSN_DESCR_END (ThreeG_CSG_Description_Body_t)
2922
2923static const
2924CSN_DESCR_BEGIN(ThreeG_CSG_Description_t)
2925 M_REC_TARRAY (ThreeG_CSG_Description_t, ThreeG_CSG_Description_Body, ThreeG_CSG_Description_Body_t, Count),
2926CSN_DESCR_END (ThreeG_CSG_Description_t)
2927
2928static const
2929CSN_DESCR_BEGIN(EUTRAN_CSG_Description_Body_t)
2930 M_TYPE (EUTRAN_CSG_Description_Body_t, CSG_PCI_SPLIT, PSC_Group_t),
2931 M_REC_ARRAY (EUTRAN_CSG_Description_Body_t, EUTRAN_FREQUENCY_INDEX, Count, 3),
2932CSN_DESCR_END (EUTRAN_CSG_Description_Body_t)
2933
2934static const
2935CSN_DESCR_BEGIN(EUTRAN_CSG_Description_t)
2936 M_REC_TARRAY (EUTRAN_CSG_Description_t, EUTRAN_CSG_Description_Body, EUTRAN_CSG_Description_Body_t, Count),
2937CSN_DESCR_END (EUTRAN_CSG_Description_t)
2938
2939static const
2940CSN_DESCR_BEGIN(Meas_Ctrl_Param_Desp_t)
2941 M_NEXT_EXIST (Meas_Ctrl_Param_Desp_t, existMeasurement_Control_EUTRAN, 3),
2942 M_BIT (Meas_Ctrl_Param_Desp_t, Measurement_Control_EUTRAN),
2943 M_UINT (Meas_Ctrl_Param_Desp_t, EUTRAN_FREQUENCY_INDEX_top, 3),
2944 M_REC_ARRAY (Meas_Ctrl_Param_Desp_t, EUTRAN_FREQUENCY_INDEX, Count_EUTRAN_FREQUENCY_INDEX, 3),
2945 M_NEXT_EXIST (Meas_Ctrl_Param_Desp_t, existMeasurement_Control_UTRAN, 1),
2946 M_BIT (Meas_Ctrl_Param_Desp_t, Measurement_Control_UTRAN),
2947 M_UINT (Meas_Ctrl_Param_Desp_t, UTRAN_FREQUENCY_INDEX_top, 5),
2948 M_REC_ARRAY (Meas_Ctrl_Param_Desp_t, UTRAN_FREQUENCY_INDEX, Count_UTRAN_FREQUENCY_INDEX, 5),
2949CSN_DESCR_END (Meas_Ctrl_Param_Desp_t)
2950
2951static const
2952CSN_DESCR_BEGIN(Reselection_Based_On_RSRQ_t)
2953 M_UINT (Reselection_Based_On_RSRQ_t, THRESH_EUTRAN_high_Q, 5),
2954 M_NEXT_EXIST (Reselection_Based_On_RSRQ_t, existTHRESH_EUTRAN_low_Q, 1),
2955 M_UINT (Reselection_Based_On_RSRQ_t, THRESH_EUTRAN_low_Q, 5),
2956 M_NEXT_EXIST (Reselection_Based_On_RSRQ_t, existEUTRAN_QQUALMIN, 1),
2957 M_UINT (Reselection_Based_On_RSRQ_t, EUTRAN_QQUALMIN, 4),
2958 M_NEXT_EXIST (Reselection_Based_On_RSRQ_t, existEUTRAN_RSRPmin, 1),
2959 M_UINT (Reselection_Based_On_RSRQ_t, EUTRAN_RSRPmin, 5),
2960CSN_DESCR_END (Reselection_Based_On_RSRQ_t)
2961
2962static const
2963CSN_DESCR_BEGIN(Rept_EUTRAN_Enh_Cell_Resel_Param_t)
2964 M_REC_ARRAY (Rept_EUTRAN_Enh_Cell_Resel_Param_t, EUTRAN_FREQUENCY_INDEX, Count_EUTRAN_FREQUENCY_INDEX, 3),
2965 M_UNION (Rept_EUTRAN_Enh_Cell_Resel_Param_t, 2),
2966 M_UINT (Rept_EUTRAN_Enh_Cell_Resel_Param_t, u.EUTRAN_Qmin, 4),
2967 M_TYPE (Rept_EUTRAN_Enh_Cell_Resel_Param_t, u.Reselection_Based_On_RSRQ, Reselection_Based_On_RSRQ_t),
2968CSN_DESCR_END (Rept_EUTRAN_Enh_Cell_Resel_Param_t)
2969
2970static const
2971CSN_DESCR_BEGIN(Enh_Cell_Reselect_Param_Desp_t)
2972 M_REC_TARRAY (Enh_Cell_Reselect_Param_Desp_t, Repeated_EUTRAN_Enhanced_Cell_Reselection_Parameters, Rept_EUTRAN_Enh_Cell_Resel_Param_t, Count),
2973CSN_DESCR_END (Enh_Cell_Reselect_Param_Desp_t)
2974
2975static const
2976CSN_DESCR_BEGIN(UTRAN_CSG_Cells_Reporting_Desp_t)
2977 M_NEXT_EXIST (UTRAN_CSG_Cells_Reporting_Desp_t, existUTRAN_CSG_FDD_REPORTING_THRESHOLD, 2),
2978 M_UINT (UTRAN_CSG_Cells_Reporting_Desp_t, UTRAN_CSG_FDD_REPORTING_THRESHOLD, 3),
2979 M_UINT (UTRAN_CSG_Cells_Reporting_Desp_t, UTRAN_CSG_FDD_REPORTING_THRESHOLD_2, 6),
2980 M_NEXT_EXIST (UTRAN_CSG_Cells_Reporting_Desp_t, existUTRAN_CSG_TDD_REPORTING_THRESHOLD, 1),
2981 M_UINT (UTRAN_CSG_Cells_Reporting_Desp_t, UTRAN_CSG_TDD_REPORTING_THRESHOLD, 3),
2982CSN_DESCR_END (UTRAN_CSG_Cells_Reporting_Desp_t)
2983
2984static const
2985CSN_DESCR_BEGIN(EUTRAN_CSG_Cells_Reporting_Desp_t)
2986 M_NEXT_EXIST (EUTRAN_CSG_Cells_Reporting_Desp_t, existEUTRAN_CSG_FDD_REPORTING_THRESHOLD, 2),
2987 M_UINT (EUTRAN_CSG_Cells_Reporting_Desp_t, EUTRAN_CSG_FDD_REPORTING_THRESHOLD, 3),
2988 M_UINT (EUTRAN_CSG_Cells_Reporting_Desp_t, EUTRAN_CSG_FDD_REPORTING_THRESHOLD_2, 6),
2989 M_NEXT_EXIST (EUTRAN_CSG_Cells_Reporting_Desp_t, existEUTRAN_CSG_TDD_REPORTING_THRESHOLD, 2),
2990 M_UINT (EUTRAN_CSG_Cells_Reporting_Desp_t, EUTRAN_CSG_TDD_REPORTING_THRESHOLD, 3),
2991 M_UINT (EUTRAN_CSG_Cells_Reporting_Desp_t, EUTRAN_CSG_TDD_REPORTING_THRESHOLD_2, 6),
2992CSN_DESCR_END (EUTRAN_CSG_Cells_Reporting_Desp_t)
2993
2994
2995static const
2996CSN_DESCR_BEGIN(CSG_Cells_Reporting_Desp_t)
2997 M_NEXT_EXIST (CSG_Cells_Reporting_Desp_t, existUTRAN_CSG_Cells_Reporting_Description, 1),
2998 M_TYPE (CSG_Cells_Reporting_Desp_t, UTRAN_CSG_Cells_Reporting_Description, UTRAN_CSG_Cells_Reporting_Desp_t),
2999 M_NEXT_EXIST (CSG_Cells_Reporting_Desp_t, existEUTRAN_CSG_Cells_Reporting_Description, 1),
3000 M_TYPE (CSG_Cells_Reporting_Desp_t, EUTRAN_CSG_Cells_Reporting_Description, EUTRAN_CSG_Cells_Reporting_Desp_t),
3001CSN_DESCR_END (CSG_Cells_Reporting_Desp_t)
3002
3003static const
3004CSN_DESCR_BEGIN (PriorityAndEUTRAN_ParametersDescription_PMO_t)
3005 M_NEXT_EXIST (PriorityAndEUTRAN_ParametersDescription_PMO_t, existServingCellPriorityParametersDescription, 1),
3006 M_TYPE (PriorityAndEUTRAN_ParametersDescription_PMO_t, ServingCellPriorityParametersDescription, ServingCellPriorityParametersDescription_t),
3007 M_NEXT_EXIST (PriorityAndEUTRAN_ParametersDescription_PMO_t, existPriorityParametersDescription3G_PMO, 1),
3008 M_TYPE (PriorityAndEUTRAN_ParametersDescription_PMO_t, PriorityParametersDescription3G_PMO, PriorityParametersDescription3G_PMO_t),
3009 M_NEXT_EXIST (PriorityAndEUTRAN_ParametersDescription_PMO_t, existEUTRAN_ParametersDescription_PMO, 1),
3010 M_TYPE (PriorityAndEUTRAN_ParametersDescription_PMO_t, EUTRAN_ParametersDescription_PMO, EUTRAN_ParametersDescription_PMO_t),
3011CSN_DESCR_END (PriorityAndEUTRAN_ParametersDescription_PMO_t)
3012
3013
3014static const
3015CSN_DESCR_BEGIN (Delete_All_Stored_Individual_Priorities_t)
3016 M_NULL (Delete_All_Stored_Individual_Priorities_t, dummy),
3017CSN_DESCR_END (Delete_All_Stored_Individual_Priorities_t)
3018
3019static const
3020CSN_DESCR_BEGIN (Individual_UTRAN_Priority_FDD_t)
3021 M_REC_ARRAY (Individual_UTRAN_Priority_FDD_t, FDD_ARFCN, Count, 14),
3022CSN_DESCR_END (Individual_UTRAN_Priority_FDD_t)
3023
3024static const
3025CSN_DESCR_BEGIN (Individual_UTRAN_Priority_TDD_t)
3026 M_REC_ARRAY (Individual_UTRAN_Priority_TDD_t, TDD_ARFCN, Count, 14),
3027CSN_DESCR_END (Individual_UTRAN_Priority_TDD_t)
3028
3029static const
3030CSN_DESCR_BEGIN (Repeated_Individual_UTRAN_Priority_Parameters_t)
3031 M_UNION (Repeated_Individual_UTRAN_Priority_Parameters_t, 2),
3032 M_TYPE (Repeated_Individual_UTRAN_Priority_Parameters_t, u.Individual_UTRAN_Priority_FDD, Individual_UTRAN_Priority_FDD_t),
3033 M_TYPE (Repeated_Individual_UTRAN_Priority_Parameters_t, u.Individual_UTRAN_Priority_TDD, Individual_UTRAN_Priority_TDD_t),
3034 M_UINT (Repeated_Individual_UTRAN_Priority_Parameters_t, UTRAN_PRIORITY, 3),
3035CSN_DESCR_END (Repeated_Individual_UTRAN_Priority_Parameters_t)
3036
3037static const
3038CSN_DESCR_BEGIN (ThreeG_Individual_Priority_Parameters_Description_t)
3039 M_NEXT_EXIST (ThreeG_Individual_Priority_Parameters_Description_t, Exist_DEFAULT_UTRAN_PRIORITY, 1),
3040 M_UINT (ThreeG_Individual_Priority_Parameters_Description_t, DEFAULT_UTRAN_PRIORITY, 3),
3041 M_REC_TARRAY (ThreeG_Individual_Priority_Parameters_Description_t, Repeated_Individual_UTRAN_Priority_Parameters, Repeated_Individual_UTRAN_Priority_Parameters_t, Repeated_Individual_UTRAN_Priority_Parameters_Count),
3042CSN_DESCR_END (ThreeG_Individual_Priority_Parameters_Description_t)
3043
3044static const
3045CSN_DESCR_BEGIN (Repeated_Individual_EUTRAN_Priority_Parameters_t)
3046 M_REC_ARRAY (Repeated_Individual_EUTRAN_Priority_Parameters_t, EARFCN, Count, 16),
3047 M_UINT (Repeated_Individual_EUTRAN_Priority_Parameters_t, EUTRAN_PRIORITY, 3),
3048CSN_DESCR_END (Repeated_Individual_EUTRAN_Priority_Parameters_t)
3049
3050static const
3051CSN_DESCR_BEGIN (EUTRAN_Individual_Priority_Parameters_Description_t)
3052 M_NEXT_EXIST (EUTRAN_Individual_Priority_Parameters_Description_t, Exist_DEFAULT_EUTRAN_PRIORITY, 1),
3053 M_UINT (EUTRAN_Individual_Priority_Parameters_Description_t, DEFAULT_EUTRAN_PRIORITY, 3),
3054 M_REC_TARRAY (EUTRAN_Individual_Priority_Parameters_Description_t, Repeated_Individual_EUTRAN_Priority_Parameters, Repeated_Individual_EUTRAN_Priority_Parameters_t, Count),
3055CSN_DESCR_END (EUTRAN_Individual_Priority_Parameters_Description_t)
3056
3057static const
3058CSN_DESCR_BEGIN (Provide_Individual_Priorities_t)
3059 M_UINT (Provide_Individual_Priorities_t, GERAN_PRIORITY, 3),
3060 M_NEXT_EXIST (Provide_Individual_Priorities_t, Exist_3G_Individual_Priority_Parameters_Description, 1),
3061 M_TYPE (Provide_Individual_Priorities_t, ThreeG_Individual_Priority_Parameters_Description, ThreeG_Individual_Priority_Parameters_Description_t),
3062 M_NEXT_EXIST (Provide_Individual_Priorities_t, Exist_EUTRAN_Individual_Priority_Parameters_Description, 1),
3063 M_TYPE (Provide_Individual_Priorities_t, EUTRAN_Individual_Priority_Parameters_Description, EUTRAN_Individual_Priority_Parameters_Description_t),
3064 M_NEXT_EXIST (Provide_Individual_Priorities_t, Exist_T3230_timeout_value, 1),
3065 M_UINT (Provide_Individual_Priorities_t, T3230_timeout_value, 3),
3066CSN_DESCR_END (Provide_Individual_Priorities_t)
3067
3068static const
3069CSN_DESCR_BEGIN (Individual_Priorities_t)
3070 M_UNION (Individual_Priorities_t, 2),
3071 M_TYPE (Individual_Priorities_t, u.Delete_All_Stored_Individual_Priorities, Delete_All_Stored_Individual_Priorities_t),
3072 M_TYPE (Individual_Priorities_t, u.Provide_Individual_Priorities, Provide_Individual_Priorities_t),
3073CSN_DESCR_END (Individual_Priorities_t)
3074
3075static const
3076CSN_DESCR_BEGIN (PMO_AdditionsR9_t)
3077 M_NEXT_EXIST (PMO_AdditionsR9_t, existEnhanced_Cell_Reselection_Parameters_Description, 1),
3078 M_TYPE (PMO_AdditionsR9_t, Enhanced_Cell_Reselection_Parameters_Description, Enh_Cell_Reselect_Param_Desp_t),
3079 M_NEXT_EXIST (PMO_AdditionsR9_t, existCSG_Cells_Reporting_Description, 1),
3080 M_TYPE (PMO_AdditionsR9_t, CSG_Cells_Reporting_Description, CSG_Cells_Reporting_Desp_t),
3081CSN_DESCR_END (PMO_AdditionsR9_t)
3082
3083static const
3084CSN_DESCR_BEGIN (PMO_AdditionsR8_t)
3085 M_NEXT_EXIST (PMO_AdditionsR8_t, existBA_IND_3G_PMO_IND, 2),
3086 M_BIT (PMO_AdditionsR8_t, BA_IND_3G),
3087 M_BIT (PMO_AdditionsR8_t, PMO_IND),
3088 M_NEXT_EXIST (PMO_AdditionsR8_t, existPriorityAndEUTRAN_ParametersDescription_PMO, 1),
3089 M_TYPE (PMO_AdditionsR8_t, PriorityAndEUTRAN_ParametersDescription_PMO, PriorityAndEUTRAN_ParametersDescription_PMO_t),
3090 M_NEXT_EXIST (PMO_AdditionsR8_t, existIndividualPriorities_PMO, 1),
3091 M_TYPE (PMO_AdditionsR8_t, IndividualPriorities_PMO, Individual_Priorities_t),
3092 M_NEXT_EXIST (PMO_AdditionsR8_t, existThreeG_CSG_Description, 1),
3093 M_TYPE (PMO_AdditionsR8_t, ThreeG_CSG_Description_PMO, ThreeG_CSG_Description_t),
3094 M_NEXT_EXIST (PMO_AdditionsR8_t, existEUTRAN_CSG_Description, 1),
3095 M_TYPE (PMO_AdditionsR8_t, EUTRAN_CSG_Description_PMO, EUTRAN_CSG_Description_t),
3096 M_NEXT_EXIST (PMO_AdditionsR8_t, existMeasurement_Control_Parameters_Description, 1),
3097 M_TYPE (PMO_AdditionsR8_t, Measurement_Control_Parameters_Description_PMO, Meas_Ctrl_Param_Desp_t),
3098 M_NEXT_EXIST_OR_NULL (PMO_AdditionsR8_t, existAdditionsR9, 1),
3099 M_TYPE (PMO_AdditionsR8_t, AdditionsR9, PMO_AdditionsR9_t),
3100CSN_DESCR_END (PMO_AdditionsR8_t)
3101
3102static const
3103CSN_DESCR_BEGIN (PMO_AdditionsR7_t)
3104 M_NEXT_EXIST (PMO_AdditionsR7_t, existREPORTING_OFFSET_THRESHOLD_700, 2),
3105 M_UINT (PMO_AdditionsR7_t, REPORTING_OFFSET_700, 3),
3106 M_UINT (PMO_AdditionsR7_t, REPORTING_THRESHOLD_700, 3),
3107
3108 M_NEXT_EXIST (PMO_AdditionsR7_t, existREPORTING_OFFSET_THRESHOLD_810, 2),
3109 M_UINT (PMO_AdditionsR7_t, REPORTING_OFFSET_810, 3),
3110 M_UINT (PMO_AdditionsR7_t, REPORTING_THRESHOLD_810, 3),
3111
3112 M_NEXT_EXIST_OR_NULL (PMO_AdditionsR7_t, existAdditionsR8, 1),
3113 M_TYPE (PMO_AdditionsR7_t, additionsR8, PMO_AdditionsR8_t),
3114CSN_DESCR_END (PMO_AdditionsR7_t)
3115
3116static const
3117CSN_DESCR_BEGIN (PMO_AdditionsR6_t)
3118 M_UINT (PMO_AdditionsR6_t, CCN_ACTIVE_3G, 1),
3119 M_NEXT_EXIST_OR_NULL (PMO_AdditionsR6_t, existAdditionsR7, 1),
3120 M_TYPE (PMO_AdditionsR6_t, additionsR7, PMO_AdditionsR7_t),
3121CSN_DESCR_END (PMO_AdditionsR6_t)
3122
3123static const
3124CSN_DESCR_BEGIN(PCCO_AdditionsR6_t)
3125 M_UINT (PCCO_AdditionsR6_t, CCN_ACTIVE_3G, 1),
3126CSN_DESCR_END (PCCO_AdditionsR6_t)
3127
3128static const
3129CSN_DESCR_BEGIN (PMO_AdditionsR5_t)
3130 M_NEXT_EXIST (PMO_AdditionsR5_t, existGRNTI_Extension, 1),
3131 M_UINT (PMO_AdditionsR5_t, GRNTI, 4),
3132 M_NEXT_EXIST (PMO_AdditionsR5_t, exist_lu_ModeNeighbourCellParams, 1),
3133 M_REC_TARRAY (PMO_AdditionsR5_t, lu_ModeNeighbourCellParams, lu_ModeNeighbourCellParams_t, count_lu_ModeNeighbourCellParams),
3134 M_NEXT_EXIST (PMO_AdditionsR5_t, existNC_lu_ModeOnlyCapableCellList, 1),
3135 M_TYPE (PMO_AdditionsR5_t, NC_lu_ModeOnlyCapableCellList, NC_lu_ModeOnlyCapableCellList_t),
3136 M_NEXT_EXIST (PMO_AdditionsR5_t, existGPRS_AdditionalMeasurementParams3G, 1),
3137 M_TYPE (PMO_AdditionsR5_t, GPRS_AdditionalMeasurementParams3G, GPRS_AdditionalMeasurementParams3G_t),
3138 M_NEXT_EXIST_OR_NULL (PMO_AdditionsR5_t, existAdditionsR6, 1),
3139 M_TYPE (PMO_AdditionsR5_t, additionsR6, PMO_AdditionsR6_t),
3140CSN_DESCR_END (PMO_AdditionsR5_t)
3141
3142static const
3143CSN_DESCR_BEGIN (PCCO_AdditionsR5_t)
3144 M_NEXT_EXIST (PCCO_AdditionsR5_t, existGRNTI_Extension, 1),
3145 M_UINT (PCCO_AdditionsR5_t, GRNTI, 4),
3146 M_NEXT_EXIST (PCCO_AdditionsR5_t, exist_lu_ModeNeighbourCellParams, 1),
3147 M_REC_TARRAY (PCCO_AdditionsR5_t, lu_ModeNeighbourCellParams, lu_ModeNeighbourCellParams_t, count_lu_ModeNeighbourCellParams),
3148 M_NEXT_EXIST (PCCO_AdditionsR5_t, existNC_lu_ModeOnlyCapableCellList, 1),
3149 M_TYPE (PCCO_AdditionsR5_t, NC_lu_ModeOnlyCapableCellList, NC_lu_ModeOnlyCapableCellList_t),
3150 M_NEXT_EXIST (PCCO_AdditionsR5_t, existGPRS_AdditionalMeasurementParams3G, 1),
3151 M_TYPE (PCCO_AdditionsR5_t, GPRS_AdditionalMeasurementParams3G, GPRS_AdditionalMeasurementParams3G_t),
3152 M_NEXT_EXIST_OR_NULL (PCCO_AdditionsR5_t, existAdditionsR6, 1),
3153 M_TYPE (PCCO_AdditionsR5_t, additionsR6, PCCO_AdditionsR6_t),
3154CSN_DESCR_END (PCCO_AdditionsR5_t)
3155
3156static const
3157CSN_DESCR_BEGIN (PMO_AdditionsR4_t)
3158 M_UINT (PMO_AdditionsR4_t, CCN_ACTIVE, 1),
3159 M_NEXT_EXIST (PMO_AdditionsR4_t, Exist_CCN_Support_Description_ID, 1),
3160 M_TYPE (PMO_AdditionsR4_t, CCN_Support_Description, CCN_Support_Description_t),
3161 M_NEXT_EXIST_OR_NULL (PMO_AdditionsR4_t, Exist_AdditionsR5, 1),
3162 M_TYPE (PMO_AdditionsR4_t, AdditionsR5, PMO_AdditionsR5_t),
3163CSN_DESCR_END (PMO_AdditionsR4_t)
3164
3165static const
3166CSN_DESCR_BEGIN (PMO_AdditionsR99_t)
3167 M_NEXT_EXIST (PMO_AdditionsR99_t, Exist_ENH_Measurement_Parameters, 1),
3168 M_TYPE (PMO_AdditionsR99_t, ENH_Measurement_Parameters, ENH_Measurement_Parameters_PMO_t),
3169 M_NEXT_EXIST_OR_NULL (PMO_AdditionsR99_t, Exist_AdditionsR4, 1),
3170 M_TYPE (PMO_AdditionsR99_t, AdditionsR4, PMO_AdditionsR4_t),
3171CSN_DESCR_END (PMO_AdditionsR99_t)
3172
3173static const
3174CSN_DESCR_BEGIN (PCCO_AdditionsR4_t)
3175 M_UINT (PCCO_AdditionsR4_t, CCN_ACTIVE, 1),
3176 M_NEXT_EXIST (PCCO_AdditionsR4_t, Exist_Container_ID, 1),
3177 M_UINT (PCCO_AdditionsR4_t, CONTAINER_ID, 2),
3178 M_NEXT_EXIST (PCCO_AdditionsR4_t, Exist_CCN_Support_Description_ID, 1),
3179 M_TYPE (PCCO_AdditionsR4_t, CCN_Support_Description, CCN_Support_Description_t),
3180 M_NEXT_EXIST_OR_NULL (PCCO_AdditionsR4_t, Exist_AdditionsR5, 1),
3181 M_TYPE (PCCO_AdditionsR4_t, AdditionsR5, PCCO_AdditionsR5_t),
3182CSN_DESCR_END (PCCO_AdditionsR4_t)
3183
3184static const
3185CSN_DESCR_BEGIN (PCCO_AdditionsR99_t)
3186 M_TYPE (PCCO_AdditionsR99_t, ENH_Measurement_Parameters, ENH_Measurement_Parameters_PCCO_t),
3187 M_NEXT_EXIST_OR_NULL (PCCO_AdditionsR99_t, Exist_AdditionsR4, 1),
3188 M_TYPE (PCCO_AdditionsR99_t, AdditionsR4, PCCO_AdditionsR4_t),
3189CSN_DESCR_END (PCCO_AdditionsR99_t)
3190
3191static const
3192CSN_DESCR_BEGIN(LSA_ID_Info_Element_t)
3193 M_UNION (LSA_ID_Info_Element_t, 2),
3194 M_UINT (LSA_ID_Info_Element_t, u.LSA_ID, 24),
3195 M_UINT (LSA_ID_Info_Element_t, u.ShortLSA_ID, 10),
3196CSN_DESCR_END (LSA_ID_Info_Element_t)
3197
3198static const
3199CSN_DESCR_BEGIN(LSA_ID_Info_t)
3200 M_REC_TARRAY (LSA_ID_Info_t, LSA_ID_Info_Elements, LSA_ID_Info_Element_t, Count_LSA_ID_Info_Element),
3201CSN_DESCR_END (LSA_ID_Info_t)
3202
3203static const
3204CSN_DESCR_BEGIN(LSA_Parameters_t)
3205 M_UINT (LSA_Parameters_t, NR_OF_FREQ_OR_CELLS, 5),
3206 M_VAR_TARRAY (LSA_Parameters_t, LSA_ID_Info, LSA_ID_Info_t, NR_OF_FREQ_OR_CELLS),
3207CSN_DESCR_END (LSA_Parameters_t)
3208
3209static const
3210CSN_DESCR_BEGIN (PMO_AdditionsR98_t)
3211 M_NEXT_EXIST (PMO_AdditionsR98_t, Exist_LSA_Parameters, 1),
3212 M_TYPE (PMO_AdditionsR98_t, LSA_Parameters, LSA_Parameters_t),
3213
3214 M_NEXT_EXIST_OR_NULL (PMO_AdditionsR98_t, Exist_AdditionsR99, 1),
3215 M_TYPE (PMO_AdditionsR98_t, AdditionsR99, PMO_AdditionsR99_t),
3216CSN_DESCR_END (PMO_AdditionsR98_t)
3217
3218static const
3219CSN_DESCR_BEGIN (PCCO_AdditionsR98_t)
3220 M_NEXT_EXIST (PCCO_AdditionsR98_t, Exist_LSA_Parameters, 1),
3221 M_TYPE (PCCO_AdditionsR98_t, LSA_Parameters, LSA_Parameters_t),
3222
3223 M_NEXT_EXIST_OR_NULL (PCCO_AdditionsR98_t, Exist_AdditionsR99, 1),
3224 M_TYPE (PCCO_AdditionsR98_t, AdditionsR99, PCCO_AdditionsR99_t),
3225CSN_DESCR_END (PCCO_AdditionsR98_t)
3226
3227static const
3228CSN_DESCR_BEGIN (Target_Cell_GSM_t)
3229 M_UINT (Target_Cell_GSM_t, IMMEDIATE_REL, 1),
3230 M_UINT (Target_Cell_GSM_t, ARFCN, 10),
3231 M_UINT (Target_Cell_GSM_t, BSIC, 6),
3232 M_TYPE (Target_Cell_GSM_t, NC_Measurement_Parameters, NC_Measurement_Parameters_with_Frequency_List_t),
3233 M_NEXT_EXIST_OR_NULL (Target_Cell_GSM_t, Exist_AdditionsR98, 1),
3234 M_TYPE (Target_Cell_GSM_t, AdditionsR98, PCCO_AdditionsR98_t),
3235CSN_DESCR_END (Target_Cell_GSM_t)
3236
3237static const
3238CSN_DESCR_BEGIN (Target_Cell_3G_AdditionsR8_t)
3239 M_NEXT_EXIST (Target_Cell_3G_AdditionsR8_t, Exist_EUTRAN_Target_Cell, 1),
3240 M_TYPE (Target_Cell_3G_AdditionsR8_t, EUTRAN_Target_Cell, EUTRAN_Target_Cell_t),
3241 M_NEXT_EXIST (Target_Cell_3G_AdditionsR8_t, Exist_Individual_Priorities, 1),
3242 M_TYPE (Target_Cell_3G_AdditionsR8_t, Individual_Priorities, Individual_Priorities_t),
3243CSN_DESCR_END (Target_Cell_3G_AdditionsR8_t)
3244
3245static const
3246CSN_DESCR_BEGIN (Target_Cell_3G_AdditionsR5_t)
3247 M_NEXT_EXIST (Target_Cell_3G_AdditionsR5_t, Exist_G_RNTI_Extention, 1),
3248 M_UINT (Target_Cell_3G_AdditionsR5_t, G_RNTI_Extention, 4),
3249 M_NEXT_EXIST_OR_NULL (Target_Cell_3G_AdditionsR5_t, Exist_AdditionsR8, 1),
3250 M_TYPE (Target_Cell_3G_AdditionsR5_t, AdditionsR8, Target_Cell_3G_AdditionsR8_t),
3251CSN_DESCR_END (Target_Cell_3G_AdditionsR5_t)
3252
3253static const
3254CSN_DESCR_BEGIN(Target_Cell_3G_t)
3255 /* 00 -- Message escape */
3256 M_FIXED (Target_Cell_3G_t, 2, 0x00),
3257 M_UINT (Target_Cell_3G_t, IMMEDIATE_REL, 1),
3258 M_NEXT_EXIST (Target_Cell_3G_t, Exist_FDD_Description, 1),
3259 M_TYPE (Target_Cell_3G_t, FDD_Target_Cell, FDD_Target_Cell_t),
3260 M_NEXT_EXIST (Target_Cell_3G_t, Exist_TDD_Description, 1),
3261 M_TYPE (Target_Cell_3G_t, TDD_Target_Cell, TDD_Target_Cell_t),
3262 M_NEXT_EXIST_OR_NULL (Target_Cell_3G_t, Exist_AdditionsR5, 1),
3263 M_TYPE (Target_Cell_3G_t, AdditionsR5, Target_Cell_3G_AdditionsR5_t),
3264CSN_DESCR_END (Target_Cell_3G_t)
3265
3266static const
3267CSN_DESCR_BEGIN(Packet_Cell_Change_Order_t)
3268 M_UINT (Packet_Cell_Change_Order_t, MESSAGE_TYPE, 6),
3269 M_UINT (Packet_Cell_Change_Order_t, PAGE_MODE, 2),
3270
3271 M_TYPE (Packet_Cell_Change_Order_t, ID, PacketCellChangeOrderID_t),
3272
3273 M_UNION (Packet_Cell_Change_Order_t, 2),
3274 M_TYPE (Packet_Cell_Change_Order_t, u.Target_Cell_GSM, Target_Cell_GSM_t),
3275 M_TYPE (Packet_Cell_Change_Order_t, u.Target_Cell_3G, Target_Cell_3G_t),
3276CSN_DESCR_END (Packet_Cell_Change_Order_t)
3277
3278/*< Packet (Enhanced) Measurement Report message contents > */
3279static const
3280CSN_DESCR_BEGIN(BA_USED_t)
3281 M_UINT (BA_USED_t, BA_USED, 1),
3282 M_UINT (BA_USED_t, BA_USED_3G, 1),
3283CSN_DESCR_END (BA_USED_t)
3284
3285static const
3286CSN_DESCR_BEGIN(Serving_Cell_Data_t)
3287 M_UINT (Serving_Cell_Data_t, RXLEV_SERVING_CELL, 6),
3288 M_FIXED (Serving_Cell_Data_t, 1, 0),
3289CSN_DESCR_END (Serving_Cell_Data_t)
3290
3291static const
3292CSN_DESCR_BEGIN(NC_Measurements_t)
3293 M_UINT (NC_Measurements_t, FREQUENCY_N, 6),
3294
3295 M_NEXT_EXIST (NC_Measurements_t, Exist_BSIC_N, 1),
3296 M_UINT (NC_Measurements_t, BSIC_N, 6),
3297 M_UINT (NC_Measurements_t, RXLEV_N, 6),
3298CSN_DESCR_END (NC_Measurements_t)
3299
3300static const
3301CSN_DESCR_BEGIN(RepeatedInvalid_BSIC_Info_t)
3302 M_UINT (RepeatedInvalid_BSIC_Info_t, BCCH_FREQ_N, 5),
3303 M_UINT (RepeatedInvalid_BSIC_Info_t, BSIC_N, 6),
3304 M_UINT (RepeatedInvalid_BSIC_Info_t, RXLEV_N, 6),
3305CSN_DESCR_END (RepeatedInvalid_BSIC_Info_t)
3306
3307static const
3308CSN_DESCR_BEGIN(REPORTING_QUANTITY_Instance_t)
3309 M_NEXT_EXIST (REPORTING_QUANTITY_Instance_t, Exist_REPORTING_QUANTITY, 1),
3310 M_UINT (REPORTING_QUANTITY_Instance_t, REPORTING_QUANTITY, 6),
3311CSN_DESCR_END (REPORTING_QUANTITY_Instance_t)
3312
3313static const
3314CSN_DESCR_BEGIN(NC_Measurement_Report_t)
3315 M_UINT (NC_Measurement_Report_t, NC_MODE, 1),
3316 M_TYPE (NC_Measurement_Report_t, Serving_Cell_Data, Serving_Cell_Data_t),
3317 M_UINT (NC_Measurement_Report_t, NUMBER_OF_NC_MEASUREMENTS, 3),
3318 M_VAR_TARRAY (NC_Measurement_Report_t, NC_Measurements, NC_Measurements_t, NUMBER_OF_NC_MEASUREMENTS),
3319CSN_DESCR_END (NC_Measurement_Report_t)
3320
3321static const
3322CSN_DESCR_BEGIN(ENH_NC_Measurement_Report_t)
3323 M_UINT (ENH_NC_Measurement_Report_t, NC_MODE, 1),
3324 M_UNION (ENH_NC_Measurement_Report_t, 2),
3325 M_TYPE (ENH_NC_Measurement_Report_t, u.BA_USED, BA_USED_t),
3326 M_UINT (ENH_NC_Measurement_Report_t, u.PSI3_CHANGE_MARK, 2),
3327 M_UINT (ENH_NC_Measurement_Report_t, PMO_USED, 1),
3328 M_UINT (ENH_NC_Measurement_Report_t, BSIC_Seen, 1),
3329 M_UINT (ENH_NC_Measurement_Report_t, SCALE, 1),
3330 M_NEXT_EXIST (ENH_NC_Measurement_Report_t, Exist_Serving_Cell_Data, 1),
3331 M_TYPE (ENH_NC_Measurement_Report_t, Serving_Cell_Data, Serving_Cell_Data_t),
3332 M_REC_TARRAY (ENH_NC_Measurement_Report_t, RepeatedInvalid_BSIC_Info[0], RepeatedInvalid_BSIC_Info_t, Count_RepeatedInvalid_BSIC_Info),
3333 M_NEXT_EXIST (ENH_NC_Measurement_Report_t, Exist_ReportBitmap, 1),
3334 M_VAR_TARRAY (ENH_NC_Measurement_Report_t, REPORTING_QUANTITY_Instances, REPORTING_QUANTITY_Instance_t, Count_REPORTING_QUANTITY_Instances),
3335CSN_DESCR_END (ENH_NC_Measurement_Report_t)
3336
3337
3338static const
3339CSN_DESCR_BEGIN(EXT_Measurement_Report_t)
3340 M_UINT (EXT_Measurement_Report_t, EXT_REPORTING_TYPE, 2),
3341
3342 M_NEXT_EXIST (EXT_Measurement_Report_t, Exist_I_LEVEL, 1),
3343
3344 M_NEXT_EXIST (EXT_Measurement_Report_t, Slot[0].Exist, 1),
3345 M_UINT (EXT_Measurement_Report_t, Slot[0].I_LEVEL, 6),
3346
3347 M_NEXT_EXIST (EXT_Measurement_Report_t, Slot[1].Exist, 1),
3348 M_UINT (EXT_Measurement_Report_t, Slot[1].I_LEVEL, 6),
3349
3350 M_NEXT_EXIST (EXT_Measurement_Report_t, Slot[2].Exist, 1),
3351 M_UINT (EXT_Measurement_Report_t, Slot[2].I_LEVEL, 6),
3352
3353 M_NEXT_EXIST (EXT_Measurement_Report_t, Slot[3].Exist, 1),
3354 M_UINT (EXT_Measurement_Report_t, Slot[3].I_LEVEL, 6),
3355
3356 M_NEXT_EXIST (EXT_Measurement_Report_t, Slot[4].Exist, 1),
3357 M_UINT (EXT_Measurement_Report_t, Slot[4].I_LEVEL, 6),
3358
3359 M_NEXT_EXIST (EXT_Measurement_Report_t, Slot[5].Exist, 1),
3360 M_UINT (EXT_Measurement_Report_t, Slot[5].I_LEVEL, 6),
3361
3362 M_NEXT_EXIST (EXT_Measurement_Report_t, Slot[6].Exist, 1),
3363 M_UINT (EXT_Measurement_Report_t, Slot[6].I_LEVEL, 6),
3364
3365 M_NEXT_EXIST (EXT_Measurement_Report_t, Slot[7].Exist, 1),
3366 M_UINT (EXT_Measurement_Report_t, Slot[7].I_LEVEL, 6),
3367
3368 M_UINT (EXT_Measurement_Report_t, NUMBER_OF_EXT_MEASUREMENTS, 5),
3369 M_VAR_TARRAY (EXT_Measurement_Report_t, EXT_Measurements, NC_Measurements_t, NUMBER_OF_EXT_MEASUREMENTS),
3370CSN_DESCR_END (EXT_Measurement_Report_t)
3371
3372static const
3373CSN_DESCR_BEGIN (Measurements_3G_t)
3374 M_UINT (Measurements_3G_t, CELL_LIST_INDEX_3G, 7),
3375 M_UINT (Measurements_3G_t, REPORTING_QUANTITY, 6),
3376CSN_DESCR_END (Measurements_3G_t)
3377
3378static const
3379CSN_DESCR_BEGIN (EUTRAN_Measurement_Report_Body_t)
3380 M_UINT (EUTRAN_Measurement_Report_Body_t, EUTRAN_FREQUENCY_INDEX, 3),
3381 M_UINT (EUTRAN_Measurement_Report_Body_t, CELL_IDENTITY, 9),
3382 M_UINT (EUTRAN_Measurement_Report_Body_t, REPORTING_QUANTITY, 6),
3383CSN_DESCR_END (EUTRAN_Measurement_Report_Body_t)
3384
3385static const
3386CSN_DESCR_BEGIN (EUTRAN_Measurement_Report_t)
3387 M_UINT_OFFSET (EUTRAN_Measurement_Report_t, N_EUTRAN, 2, 1),
3388 M_VAR_TARRAY (EUTRAN_Measurement_Report_t, Report, EUTRAN_Measurement_Report_Body_t, N_EUTRAN),
3389CSN_DESCR_END (EUTRAN_Measurement_Report_t)
3390
3391static const
3392CSN_DESCR_BEGIN(UTRAN_CSG_Measurement_Report_t)
3393 M_UINT (UTRAN_CSG_Measurement_Report_t, UTRAN_CGI, 28),
3394 M_NEXT_EXIST (UTRAN_CSG_Measurement_Report_t, Exist_PLMN_ID, 1),
3395 M_TYPE (UTRAN_CSG_Measurement_Report_t, Plmn_ID, PLMN_t),
3396 M_UINT (UTRAN_CSG_Measurement_Report_t, CSG_ID, 27),
3397 M_BIT (UTRAN_CSG_Measurement_Report_t, Access_Mode),
3398 M_UINT (UTRAN_CSG_Measurement_Report_t, REPORTING_QUANTITY, 6),
3399CSN_DESCR_END (UTRAN_CSG_Measurement_Report_t)
3400
3401static const
3402CSN_DESCR_BEGIN(EUTRAN_CSG_Measurement_Report_t)
3403 M_UINT (EUTRAN_CSG_Measurement_Report_t, EUTRAN_CGI, 28),
3404 M_UINT (EUTRAN_CSG_Measurement_Report_t, Tracking_Area_Code, 16),
3405 M_NEXT_EXIST (EUTRAN_CSG_Measurement_Report_t, Exist_PLMN_ID, 1),
3406 M_TYPE (EUTRAN_CSG_Measurement_Report_t, Plmn_ID, PLMN_t),
3407 M_UINT (EUTRAN_CSG_Measurement_Report_t, CSG_ID, 27),
3408 M_BIT (EUTRAN_CSG_Measurement_Report_t, Access_Mode),
3409 M_UINT (EUTRAN_CSG_Measurement_Report_t, REPORTING_QUANTITY, 6),
3410CSN_DESCR_END (EUTRAN_CSG_Measurement_Report_t)
3411
3412static const
3413CSN_DESCR_BEGIN (PMR_AdditionsR9_t)
3414 M_NEXT_EXIST (PMR_AdditionsR9_t, Exist_UTRAN_CSG_Meas_Rpt, 1),
3415 M_TYPE (PMR_AdditionsR9_t, UTRAN_CSG_Meas_Rpt, UTRAN_CSG_Measurement_Report_t),
3416 M_NEXT_EXIST (PMR_AdditionsR9_t, Exist_EUTRAN_CSG_Meas_Rpt, 1),
3417 M_TYPE (PMR_AdditionsR9_t, EUTRAN_CSG_Meas_Rpt, EUTRAN_CSG_Measurement_Report_t),
3418CSN_DESCR_END (PMR_AdditionsR9_t)
3419
3420static const
3421CSN_DESCR_BEGIN (PMR_AdditionsR8_t)
3422 M_NEXT_EXIST (PMR_AdditionsR8_t, Exist_EUTRAN_Meas_Rpt, 1),
3423 M_TYPE (PMR_AdditionsR8_t, EUTRAN_Meas_Rpt, EUTRAN_Measurement_Report_t),
3424 M_NEXT_EXIST_OR_NULL(PMR_AdditionsR8_t, Exist_AdditionsR9, 1),
3425 M_TYPE (PMR_AdditionsR8_t, AdditionsR9, PMR_AdditionsR9_t),
3426CSN_DESCR_END (PMR_AdditionsR8_t)
3427
3428static const
3429CSN_DESCR_BEGIN (PMR_AdditionsR5_t)
3430 M_NEXT_EXIST (PMR_AdditionsR5_t, Exist_GRNTI, 4),
3431 M_UINT (PMR_AdditionsR5_t, GRNTI, 4),
3432 M_NEXT_EXIST_OR_NULL (PMR_AdditionsR5_t, Exist_AdditionsR8, 1),
3433 M_TYPE (PMR_AdditionsR5_t, AdditionsR8, PMR_AdditionsR8_t),
3434CSN_DESCR_END (PMR_AdditionsR5_t)
3435
3436static const
3437CSN_DESCR_BEGIN (PMR_AdditionsR99_t)
3438 M_NEXT_EXIST (PMR_AdditionsR99_t, Exist_Info3G, 4),
3439 M_UNION (PMR_AdditionsR99_t, 2),
3440 M_TYPE (PMR_AdditionsR99_t, u.BA_USED, BA_USED_t),
3441 M_UINT (PMR_AdditionsR99_t, u.PSI3_CHANGE_MARK, 2),
3442 M_UINT (PMR_AdditionsR99_t, PMO_USED, 1),
3443
3444 M_NEXT_EXIST (PMR_AdditionsR99_t, Exist_MeasurementReport3G, 2),
3445 M_UINT_OFFSET (PMR_AdditionsR99_t, N_3G, 3, 1), /* offset 1 */
3446 M_VAR_TARRAY_OFFSET (PMR_AdditionsR99_t, Measurements_3G, Measurements_3G_t, N_3G),
3447
3448 M_NEXT_EXIST_OR_NULL (PMR_AdditionsR99_t, Exist_AdditionsR5, 1),
3449 M_TYPE (PMR_AdditionsR99_t, AdditionsR5, PMR_AdditionsR5_t),
3450CSN_DESCR_END (PMR_AdditionsR99_t)
3451
3452static const
3453CSN_DESCR_BEGIN(EMR_ServingCell_t)
3454 /*CSN_MEMBER_BIT (EMR_ServingCell_t, DTX_USED),*/
3455 M_BIT (EMR_ServingCell_t, DTX_USED),
3456 M_UINT (EMR_ServingCell_t, RXLEV_VAL, 6),
3457 M_UINT (EMR_ServingCell_t, RX_QUAL_FULL, 3),
3458 M_UINT (EMR_ServingCell_t, MEAN_BEP, 5),
3459 M_UINT (EMR_ServingCell_t, CV_BEP, 3),
3460 M_UINT (EMR_ServingCell_t, NBR_RCVD_BLOCKS, 5),
3461CSN_DESCR_END(EMR_ServingCell_t)
3462
3463static const
3464CSN_DESCR_BEGIN (EnhancedMeasurementReport_t)
3465 M_UINT (EnhancedMeasurementReport_t, RR_Short_PD, 1),
3466 M_UINT (EnhancedMeasurementReport_t, MESSAGE_TYPE, 5),
3467 M_UINT (EnhancedMeasurementReport_t, ShortLayer2_Header, 2),
3468 M_TYPE (EnhancedMeasurementReport_t, BA_USED, BA_USED_t),
3469 M_UINT (EnhancedMeasurementReport_t, BSIC_Seen, 1),
3470 M_UINT (EnhancedMeasurementReport_t, SCALE, 1),
3471 M_NEXT_EXIST (EnhancedMeasurementReport_t, Exist_ServingCellData, 1),
3472 M_TYPE (EnhancedMeasurementReport_t, ServingCellData, EMR_ServingCell_t),
3473 M_REC_TARRAY (EnhancedMeasurementReport_t, RepeatedInvalid_BSIC_Info[0], RepeatedInvalid_BSIC_Info_t,
3474 Count_RepeatedInvalid_BSIC_Info),
3475 M_NEXT_EXIST (EnhancedMeasurementReport_t, Exist_ReportBitmap, 1),
3476 M_VAR_TARRAY (EnhancedMeasurementReport_t, REPORTING_QUANTITY_Instances, REPORTING_QUANTITY_Instance_t, Count_REPORTING_QUANTITY_Instances),
3477CSN_DESCR_END (EnhancedMeasurementReport_t)
3478
3479static const
3480CSN_DESCR_BEGIN (Packet_Measurement_Report_t)
3481 /* Mac header */
3482 M_UINT (Packet_Measurement_Report_t, PayloadType, 2),
3483 M_UINT (Packet_Measurement_Report_t, spare, 5),
3484 M_UINT (Packet_Measurement_Report_t, R, 1),
3485 M_UINT (Packet_Measurement_Report_t, MESSAGE_TYPE, 6),
3486 /* Mac header */
3487
3488 M_UINT (Packet_Measurement_Report_t, TLLI, 32),
3489
3490 M_NEXT_EXIST (Packet_Measurement_Report_t, Exist_PSI5_CHANGE_MARK, 1),
3491 M_UINT (Packet_Measurement_Report_t, PSI5_CHANGE_MARK, 2),
3492
3493 M_UNION (Packet_Measurement_Report_t, 2),
3494 M_TYPE (Packet_Measurement_Report_t, u.NC_Measurement_Report, NC_Measurement_Report_t),
3495 M_TYPE (Packet_Measurement_Report_t, u.EXT_Measurement_Report, EXT_Measurement_Report_t),
3496
3497 M_NEXT_EXIST_OR_NULL(Packet_Measurement_Report_t, Exist_AdditionsR99, 1),
3498 M_TYPE (Packet_Measurement_Report_t, AdditionsR99, PMR_AdditionsR99_t),
3499CSN_DESCR_END (Packet_Measurement_Report_t)
3500
3501static const
3502CSN_DESCR_BEGIN (PEMR_AdditionsR9_t)
3503 M_NEXT_EXIST (PEMR_AdditionsR9_t, Exist_UTRAN_CSG_Target_Cell, 1),
3504 M_TYPE (PEMR_AdditionsR9_t, UTRAN_CSG_Target_Cell, UTRAN_CSG_Target_Cell_t),
3505 M_NEXT_EXIST (PEMR_AdditionsR9_t, Exist_EUTRAN_CSG_Target_Cell, 1),
3506 M_TYPE (PEMR_AdditionsR9_t, EUTRAN_CSG_Target_Cell, EUTRAN_CSG_Target_Cell_t),
3507CSN_DESCR_END (PEMR_AdditionsR9_t)
3508
3509static const
3510CSN_DESCR_BEGIN (Bitmap_Report_Quantity_t)
3511 M_NEXT_EXIST (Bitmap_Report_Quantity_t, Exist_REPORTING_QUANTITY, 1),
3512 M_UINT (Bitmap_Report_Quantity_t, REPORTING_QUANTITY, 6),
3513CSN_DESCR_END (Bitmap_Report_Quantity_t)
3514
3515static const
3516CSN_DESCR_BEGIN (PEMR_AdditionsR8_t)
3517 M_UINT_OFFSET (PEMR_AdditionsR8_t, BITMAP_LENGTH, 7, 1),
3518 M_VAR_TARRAY (PEMR_AdditionsR8_t, Bitmap_Report_Quantity, Bitmap_Report_Quantity_t, BITMAP_LENGTH),
3519 M_NEXT_EXIST (PEMR_AdditionsR8_t, Exist_EUTRAN_Meas_Rpt, 1),
3520 M_TYPE (PEMR_AdditionsR8_t, EUTRAN_Meas_Rpt, EUTRAN_Measurement_Report_t),
3521 M_NEXT_EXIST_OR_NULL(PEMR_AdditionsR8_t, Exist_AdditionsR9, 1),
3522 M_TYPE (PEMR_AdditionsR8_t, AdditionsR9, PEMR_AdditionsR9_t),
3523CSN_DESCR_END (PEMR_AdditionsR8_t)
3524
3525static const
3526CSN_DESCR_BEGIN (PEMR_AdditionsR5_t)
3527 M_NEXT_EXIST (PEMR_AdditionsR5_t, Exist_GRNTI_Ext, 1),
3528 M_UINT (PEMR_AdditionsR5_t, GRNTI_Ext, 4),
3529 M_NEXT_EXIST_OR_NULL(PEMR_AdditionsR5_t, Exist_AdditionsR8, 1),
3530 M_TYPE (PEMR_AdditionsR5_t, AdditionsR8, PEMR_AdditionsR8_t),
3531CSN_DESCR_END (PEMR_AdditionsR5_t)
3532
3533
3534static const
3535CSN_DESCR_BEGIN (Packet_Enh_Measurement_Report_t)
3536 /* Mac header */
3537 M_UINT (Packet_Enh_Measurement_Report_t, PayloadType, 2),
3538 M_UINT (Packet_Enh_Measurement_Report_t, spare, 5),
3539 M_UINT (Packet_Enh_Measurement_Report_t, R, 1),
3540 M_UINT (Packet_Enh_Measurement_Report_t, MESSAGE_TYPE, 6),
3541 /* Mac header */
3542
3543 M_UINT (Packet_Enh_Measurement_Report_t, TLLI, 32),
3544
3545 M_TYPE (Packet_Enh_Measurement_Report_t, Measurements, ENH_NC_Measurement_Report_t),
3546
3547 M_NEXT_EXIST_OR_NULL(Packet_Enh_Measurement_Report_t, Exist_AdditionsR5, 1),
3548 M_TYPE (Packet_Enh_Measurement_Report_t, AdditionsR5, PEMR_AdditionsR5_t),
3549CSN_DESCR_END (Packet_Enh_Measurement_Report_t)
3550
3551/*< Packet Measurement Order message contents >*/
3552static const
3553CSN_DESCR_BEGIN(EXT_Frequency_List_t)
3554 M_UINT (EXT_Frequency_List_t, START_FREQUENCY, 10),
3555 M_UINT (EXT_Frequency_List_t, NR_OF_FREQUENCIES, 5),
3556 M_UINT (EXT_Frequency_List_t, FREQ_DIFF_LENGTH, 3),
3557
3558/* TBD: Count_FREQUENCY_DIFF
3559 * guint8 FREQUENCY_DIFF[31];
3560 * bit (FREQ_DIFF_LENGTH) * NR_OF_FREQUENCIES --> MAX is bit(7) * 31
3561 */
3562CSN_DESCR_END (EXT_Frequency_List_t)
3563
3564static const
3565CSN_DESCR_BEGIN (Packet_Measurement_Order_t)
3566 M_UINT (Packet_Measurement_Order_t, MESSAGE_TYPE, 6),
3567 M_UINT (Packet_Measurement_Order_t, PAGE_MODE, 2),
3568
3569 M_TYPE (Packet_Measurement_Order_t, ID, PacketDownlinkID_t), /* reuse the PDA ID type */
3570
3571 M_UINT (Packet_Measurement_Order_t, PMO_INDEX, 3),
3572 M_UINT (Packet_Measurement_Order_t, PMO_COUNT, 3),
3573
3574 M_NEXT_EXIST (Packet_Measurement_Order_t, Exist_NC_Measurement_Parameters, 1),
3575 M_TYPE (Packet_Measurement_Order_t, NC_Measurement_Parameters, NC_Measurement_Parameters_with_Frequency_List_t),
3576
3577 M_NEXT_EXIST (Packet_Measurement_Order_t, Exist_EXT_Measurement_Parameters, 1),
3578 M_FIXED (Packet_Measurement_Order_t, 2, 0x0), /* EXT_Measurement_Parameters not handled */
3579
3580 M_NEXT_EXIST_OR_NULL (Packet_Measurement_Order_t, Exist_AdditionsR98, 1),
3581 M_TYPE (Packet_Measurement_Order_t, AdditionsR98, PMO_AdditionsR98_t),
3582CSN_DESCR_END (Packet_Measurement_Order_t)
3583
3584static const
3585CSN_DESCR_BEGIN(CCN_Measurement_Report_t)
3586 M_UINT (CCN_Measurement_Report_t, RXLEV_SERVING_CELL, 6),
3587 M_FIXED (CCN_Measurement_Report_t, 1, 0),
3588 M_UINT (CCN_Measurement_Report_t, NUMBER_OF_NC_MEASUREMENTS, 3),
3589 M_VAR_TARRAY (CCN_Measurement_Report_t, NC_Measurements, NC_Measurements_t, NUMBER_OF_NC_MEASUREMENTS),
3590CSN_DESCR_END (CCN_Measurement_Report_t)
3591
3592static const
3593CSN_DESCR_BEGIN(Target_Cell_GSM_Notif_t)
3594 M_UINT (Target_Cell_GSM_Notif_t, ARFCN, 10),
3595 M_UINT (Target_Cell_GSM_Notif_t, BSIC, 6),
3596CSN_DESCR_END (Target_Cell_GSM_Notif_t)
3597
3598static const
3599CSN_DESCR_BEGIN(FDD_Target_Cell_Notif_t)
3600 M_UINT (FDD_Target_Cell_Notif_t, FDD_ARFCN, 14),
3601 M_NEXT_EXIST (FDD_Target_Cell_Notif_t, Exist_Bandwith_FDD, 1),
3602 M_UINT (FDD_Target_Cell_Notif_t, BANDWITH_FDD, 3),
3603 M_UINT (FDD_Target_Cell_Notif_t, SCRAMBLING_CODE, 9),
3604CSN_DESCR_END (FDD_Target_Cell_Notif_t)
3605
3606static const
3607CSN_DESCR_BEGIN(TDD_Target_Cell_Notif_t)
3608 M_UINT (TDD_Target_Cell_Notif_t, TDD_ARFCN, 14),
3609 M_NEXT_EXIST (TDD_Target_Cell_Notif_t, Exist_Bandwith_TDD, 1),
3610 M_UINT (TDD_Target_Cell_Notif_t, BANDWITH_TDD, 3),
3611 M_UINT (TDD_Target_Cell_Notif_t, CELL_PARAMETER, 7),
3612 M_UINT (TDD_Target_Cell_Notif_t, Sync_Case_TSTD, 1),
3613CSN_DESCR_END (TDD_Target_Cell_Notif_t)
3614
3615static const
3616CSN_DESCR_BEGIN(Target_Cell_3G_Notif_t)
3617 M_NEXT_EXIST (Target_Cell_3G_Notif_t, Exist_FDD_Description, 1),
3618 M_TYPE (Target_Cell_3G_Notif_t, FDD_Target_Cell_Notif, FDD_Target_Cell_Notif_t),
3619 M_NEXT_EXIST (Target_Cell_3G_Notif_t, Exist_TDD_Description, 1),
3620 M_TYPE (Target_Cell_3G_Notif_t, TDD_Target_Cell, TDD_Target_Cell_Notif_t),
3621 M_UINT (Target_Cell_3G_Notif_t, REPORTING_QUANTITY, 6),
3622CSN_DESCR_END (Target_Cell_3G_Notif_t)
3623
3624static const
3625CSN_DESCR_BEGIN(Target_EUTRAN_Cell_Notif_t)
3626 M_UINT (Target_EUTRAN_Cell_Notif_t, EARFCN, 16),
3627 M_NEXT_EXIST (Target_EUTRAN_Cell_Notif_t, Exist_Measurement_Bandwidth, 1),
3628 M_UINT (Target_EUTRAN_Cell_Notif_t, Measurement_Bandwidth, 3),
3629 M_UINT (Target_EUTRAN_Cell_Notif_t, Physical_Layer_Cell_Identity, 9),
3630 M_UINT (Target_EUTRAN_Cell_Notif_t, Reporting_Quantity, 6),
3631CSN_DESCR_END (Target_EUTRAN_Cell_Notif_t)
3632
3633static const
3634CSN_DESCR_BEGIN(Eutran_Ccn_Measurement_Report_Cell_t)
3635 M_UINT (Eutran_Ccn_Measurement_Report_Cell_t, EUTRAN_FREQUENCY_INDEX, 3),
3636 M_UINT (Eutran_Ccn_Measurement_Report_Cell_t, CELL_IDENTITY, 9),
3637 M_UINT (Eutran_Ccn_Measurement_Report_Cell_t, REPORTING_QUANTITY, 6),
3638CSN_DESCR_END (Eutran_Ccn_Measurement_Report_Cell_t)
3639
3640
3641static const
3642CSN_DESCR_BEGIN(Eutran_Ccn_Measurement_Report_t)
3643 M_BIT (Eutran_Ccn_Measurement_Report_t, ThreeG_BA_USED),
3644 M_UINT_OFFSET(Eutran_Ccn_Measurement_Report_t, N_EUTRAN, 2, 1),
3645 M_VAR_TARRAY (Eutran_Ccn_Measurement_Report_t, Eutran_Ccn_Measurement_Report_Cell, Eutran_Ccn_Measurement_Report_Cell_t, N_EUTRAN),
3646CSN_DESCR_END (Eutran_Ccn_Measurement_Report_t)
3647
3648static const
3649CSN_DESCR_BEGIN(Target_Cell_4G_Notif_t)
3650 M_NEXT_EXIST (Target_Cell_4G_Notif_t, Exist_Arfcn, 2),
3651 M_UINT (Target_Cell_4G_Notif_t, Arfcn, 10),
3652 M_UINT (Target_Cell_4G_Notif_t, bsic, 6),
3653 M_NEXT_EXIST (Target_Cell_4G_Notif_t, Exist_3G_Target_Cell, 1),
3654 M_TYPE (Target_Cell_4G_Notif_t, Target_Cell_3G_Notif, Target_Cell_3G_Notif_t),
3655 M_NEXT_EXIST (Target_Cell_4G_Notif_t, Exist_Eutran_Target_Cell, 1),
3656 M_TYPE (Target_Cell_4G_Notif_t, Target_EUTRAN_Cell, Target_EUTRAN_Cell_Notif_t),
3657 M_NEXT_EXIST (Target_Cell_4G_Notif_t, Exist_Eutran_Ccn_Measurement_Report, 1),
3658 M_TYPE (Target_Cell_4G_Notif_t, Eutran_Ccn_Measurement_Report, Eutran_Ccn_Measurement_Report_t),
3659CSN_DESCR_END (Target_Cell_4G_Notif_t)
3660
3661static const
3662CSN_DESCR_BEGIN(Target_Cell_CSG_Notif_t)
3663 M_FIXED (Target_Cell_CSG_Notif_t, 1, 0x00),
3664 M_UNION (Target_Cell_CSG_Notif_t, 2),
3665 M_TYPE (Target_Cell_CSG_Notif_t, u.UTRAN_CSG_Measurement_Report, UTRAN_CSG_Measurement_Report_t),
3666 M_TYPE (Target_Cell_CSG_Notif_t, u.EUTRAN_CSG_Measurement_Report, EUTRAN_CSG_Measurement_Report_t),
3667 M_NEXT_EXIST (Target_Cell_CSG_Notif_t, Exist_Eutran_Ccn_Measurement_Report, 1),
3668 M_TYPE (Target_Cell_CSG_Notif_t, Eutran_Ccn_Measurement_Report, Eutran_Ccn_Measurement_Report_t),
3669CSN_DESCR_END (Target_Cell_CSG_Notif_t)
3670
3671static const
3672CSN_DESCR_BEGIN(Target_Other_RAT_2_Notif_t)
3673 /* 110 vs 1110 */
3674 M_UNION (Target_Other_RAT_2_Notif_t, 2),
3675 M_TYPE (Target_Other_RAT_2_Notif_t, u.Target_Cell_4G_Notif, Target_Cell_4G_Notif_t),
3676 M_TYPE (Target_Other_RAT_2_Notif_t, u.Target_Cell_CSG_Notif, Target_Cell_CSG_Notif_t),
3677CSN_DESCR_END (Target_Other_RAT_2_Notif_t)
3678
3679static const
3680CSN_DESCR_BEGIN(Target_Other_RAT_Notif_t)
3681 /* 10 vs 110 */
3682 M_UNION (Target_Other_RAT_Notif_t, 2),
3683 M_TYPE (Target_Other_RAT_Notif_t, u.Target_Cell_3G_Notif, Target_Cell_3G_Notif_t),
3684 M_TYPE (Target_Other_RAT_Notif_t, u.Target_Other_RAT_2_Notif, Target_Other_RAT_2_Notif_t),
3685CSN_DESCR_END (Target_Other_RAT_Notif_t)
3686
3687static const
3688CSN_DESCR_BEGIN(Target_Cell_t)
3689 /* 0 vs 10 */
3690 M_UNION (Target_Cell_t, 2),
3691 M_TYPE (Target_Cell_t, u.Target_Cell_GSM_Notif, Target_Cell_GSM_Notif_t),
3692 M_TYPE (Target_Cell_t, u.Target_Other_RAT_Notif, Target_Other_RAT_Notif_t),
3693CSN_DESCR_END (Target_Cell_t)
3694
3695static const
3696CSN_DESCR_BEGIN (PCCN_AdditionsR6_t)
3697 M_NEXT_EXIST (PCCN_AdditionsR6_t, Exist_BA_USED_3G, 1),
3698 M_UINT (PCCN_AdditionsR6_t, BA_USED_3G, 1),
3699
3700 M_UINT_OFFSET (PCCN_AdditionsR6_t, N_3G, 3, 1), /* offset 1 */
3701 M_VAR_TARRAY_OFFSET (PCCN_AdditionsR6_t, Measurements_3G, Measurements_3G_t, N_3G),
3702CSN_DESCR_END (PCCN_AdditionsR6_t)
3703
3704/*< Packet Cell Change Notification message contents > */
3705static const
3706CSN_DESCR_BEGIN(Packet_Cell_Change_Notification_t)
3707 /* Mac header */
3708 M_UINT (Packet_Cell_Change_Notification_t, PayloadType, 2),
3709 M_UINT (Packet_Cell_Change_Notification_t, spare, 5),
3710 M_UINT (Packet_Cell_Change_Notification_t, R, 1),
3711 M_UINT (Packet_Cell_Change_Notification_t, MESSAGE_TYPE, 6),
3712 /* Mac header */
3713
3714 M_TYPE (Packet_Cell_Change_Notification_t, Global_TFI, Global_TFI_t),
3715 M_TYPE (Packet_Cell_Change_Notification_t, Target_Cell, Target_Cell_t),
3716
3717 M_UNION (Packet_Cell_Change_Notification_t, 2),
3718 M_UINT (Packet_Cell_Change_Notification_t, u.BA_IND, 1),
3719 M_UINT (Packet_Cell_Change_Notification_t, u.PSI3_CHANGE_MARK, 2),
3720
3721 M_UINT (Packet_Cell_Change_Notification_t, PMO_USED, 1),
3722 M_UINT (Packet_Cell_Change_Notification_t, PCCN_SENDING, 1),
3723 M_TYPE (Packet_Cell_Change_Notification_t, CCN_Measurement_Report, CCN_Measurement_Report_t),
3724
3725 M_NEXT_EXIST_OR_NULL(Packet_Cell_Change_Notification_t, Exist_AdditionsR6, 1),
3726 M_TYPE (Packet_Cell_Change_Notification_t, AdditionsR6, PCCN_AdditionsR6_t),
3727CSN_DESCR_END (Packet_Cell_Change_Notification_t)
3728
3729/*< Packet Cell Change Continue message contents > */
3730static const
3731CSN_DESCR_BEGIN(Packet_Cell_Change_Continue_t)
3732 M_UINT (Packet_Cell_Change_Continue_t, MESSAGE_TYPE, 6),
3733 M_UINT (Packet_Cell_Change_Continue_t, PAGE_MODE, 2),
3734 M_FIXED (Packet_Cell_Change_Continue_t, 1, 0x00),
3735 M_TYPE (Packet_Cell_Change_Continue_t, Global_TFI, Global_TFI_t),
3736
3737 M_NEXT_EXIST (Packet_Cell_Change_Continue_t, Exist_ID, 3),
3738 M_UINT (Packet_Cell_Change_Continue_t, ARFCN, 10),
3739 M_UINT (Packet_Cell_Change_Continue_t, BSIC, 6),
3740 M_UINT (Packet_Cell_Change_Continue_t, CONTAINER_ID, 2),
3741CSN_DESCR_END (Packet_Cell_Change_Continue_t)
3742
3743/*< Packet Neighbour Cell Data message contents > */
3744static const
3745CSN_DESCR_BEGIN(PNCD_Container_With_ID_t)
3746 M_UINT (PNCD_Container_With_ID_t, ARFCN, 10),
3747 M_UINT (PNCD_Container_With_ID_t, BSIC, 6),
3748 M_UINT_ARRAY (PNCD_Container_With_ID_t, CONTAINER, 8, 17),/* 8*17 bits */
3749CSN_DESCR_END (PNCD_Container_With_ID_t)
3750
3751static const
3752CSN_DESCR_BEGIN(PNCD_Container_Without_ID_t)
3753 M_UINT_ARRAY (PNCD_Container_Without_ID_t, CONTAINER, 8, 19),/* 8*19 bits */
3754CSN_DESCR_END (PNCD_Container_Without_ID_t)
3755
3756static const
3757CSN_ChoiceElement_t PNCDContainer[] =
3758{
3759 {1, 0x0, M_TYPE(PNCDContainer_t, u.PNCD_Container_Without_ID, PNCD_Container_Without_ID_t)},
3760 {1, 0x1, M_TYPE(PNCDContainer_t, u.PNCD_Container_With_ID, PNCD_Container_With_ID_t)},
3761};
3762
3763static const
3764CSN_DESCR_BEGIN(PNCDContainer_t)
3765 M_CHOICE (PNCDContainer_t, UnionType, PNCDContainer, ElementsOf(PNCDContainer)),
3766CSN_DESCR_END (PNCDContainer_t)
3767
3768static const
3769CSN_DESCR_BEGIN(Packet_Neighbour_Cell_Data_t)
3770 M_UINT (Packet_Neighbour_Cell_Data_t, MESSAGE_TYPE, 6),
3771 M_UINT (Packet_Neighbour_Cell_Data_t, PAGE_MODE, 2),
3772 M_FIXED (Packet_Neighbour_Cell_Data_t, 1, 0x00),
3773 M_TYPE (Packet_Neighbour_Cell_Data_t, Global_TFI, Global_TFI_t),
3774
3775 M_UINT (Packet_Neighbour_Cell_Data_t, CONTAINER_ID, 2),
3776 M_UINT (Packet_Neighbour_Cell_Data_t, spare, 1),
3777 M_UINT (Packet_Neighbour_Cell_Data_t, CONTAINER_INDEX, 5),
3778
3779 M_TYPE (Packet_Neighbour_Cell_Data_t, Container, PNCDContainer_t),
3780CSN_DESCR_END (Packet_Neighbour_Cell_Data_t)
3781
3782/*< Packet Serving Cell Data message contents > */
3783static const
3784CSN_DESCR_BEGIN(Packet_Serving_Cell_Data_t)
3785 M_UINT (Packet_Serving_Cell_Data_t, MESSAGE_TYPE, 6),
3786 M_UINT (Packet_Serving_Cell_Data_t, PAGE_MODE, 2),
3787 M_FIXED (Packet_Serving_Cell_Data_t, 1, 0x00),
3788 M_TYPE (Packet_Serving_Cell_Data_t, Global_TFI, Global_TFI_t),
3789
3790 M_UINT (Packet_Serving_Cell_Data_t, spare, 4),
3791 M_UINT (Packet_Serving_Cell_Data_t, CONTAINER_INDEX, 5),
3792 M_UINT_ARRAY (Packet_Serving_Cell_Data_t, CONTAINER, 8, 19),/* 8*19 bits */
3793CSN_DESCR_END (Packet_Serving_Cell_Data_t)
3794
3795
3796/* Enhanced Measurement Report */
3797static const
3798CSN_DESCR_BEGIN (ServingCellData_t)
3799 M_UINT (ServingCellData_t, RXLEV_SERVING_CELL, 6),
3800 M_FIXED (ServingCellData_t, 1, 0),
3801CSN_DESCR_END (ServingCellData_t)
3802
3803static const
3804CSN_DESCR_BEGIN (Repeated_Invalid_BSIC_Info_t)
3805 M_UINT (Repeated_Invalid_BSIC_Info_t, BCCH_FREQ_NCELL, 5),
3806 M_UINT (Repeated_Invalid_BSIC_Info_t, BSIC, 6),
3807 M_UINT (Repeated_Invalid_BSIC_Info_t, RXLEV_NCELL, 5),
3808CSN_DESCR_END (Repeated_Invalid_BSIC_Info_t)
3809
3810static const
3811CSN_DESCR_BEGIN (REPORTING_QUANTITY_t)
3812 M_NEXT_EXIST (REPORTING_QUANTITY_t, Exist_REPORTING_QUANTITY, 1),
3813 M_UINT (REPORTING_QUANTITY_t, REPORTING_QUANTITY, 6),
3814CSN_DESCR_END (REPORTING_QUANTITY_t)
3815
3816
3817static const
3818CSN_DESCR_BEGIN (NC_MeasurementReport_t)
3819 M_BIT (NC_MeasurementReport_t, NC_MODE),
3820 M_UNION (NC_MeasurementReport_t, 2),
3821 M_TYPE (NC_MeasurementReport_t, u.BA_USED, BA_USED_t),
3822 M_UINT (NC_MeasurementReport_t, u.PSI3_CHANGE_MARK, 2),
3823 M_BIT (NC_MeasurementReport_t, PMO_USED),
3824 M_BIT (NC_MeasurementReport_t, SCALE),
3825
3826 M_NEXT_EXIST (NC_MeasurementReport_t, Exist_ServingCellData, 1),
3827 M_TYPE (NC_MeasurementReport_t, ServingCellData, ServingCellData_t),
3828
3829 M_REC_TARRAY (NC_MeasurementReport_t, Repeated_Invalid_BSIC_Info, Repeated_Invalid_BSIC_Info_t, Count_Repeated_Invalid_BSIC_Info),
3830
3831 M_NEXT_EXIST (NC_MeasurementReport_t, Exist_Repeated_REPORTING_QUANTITY, 1),
3832 M_VAR_TARRAY (NC_MeasurementReport_t, Repeated_REPORTING_QUANTITY, REPORTING_QUANTITY_t, Count_Repeated_Reporting_Quantity),
3833CSN_DESCR_END (NC_MeasurementReport_t)
3834
3835
3836
3837/*< Packet Handover Command message content > */
3838static const
3839CSN_DESCR_BEGIN (GlobalTimeslotDescription_t)
3840 M_UNION (GlobalTimeslotDescription_t, 2),
3841 M_UINT (GlobalTimeslotDescription_t, u.MS_TimeslotAllocation, 8),
3842 M_TYPE (GlobalTimeslotDescription_t, u.Power_Control_Parameters, Power_Control_Parameters_t),
3843CSN_DESCR_END (GlobalTimeslotDescription_t)
3844
3845static const
3846CSN_DESCR_BEGIN (PHO_DownlinkAssignment_t)
3847 M_UINT (PHO_DownlinkAssignment_t, TimeslotAllocation, 8),
3848 M_UINT (PHO_DownlinkAssignment_t, PFI, 7),
3849 M_BIT (PHO_DownlinkAssignment_t, RLC_Mode),
3850 M_UINT (PHO_DownlinkAssignment_t, TFI_Assignment, 5),
3851 M_BIT (PHO_DownlinkAssignment_t, ControlACK),
3852
3853 M_NEXT_EXIST (PHO_DownlinkAssignment_t, Exist_EGPRS_WindowSize, 1),
3854 M_UINT (PHO_DownlinkAssignment_t, EGPRS_WindowSize, 5),
3855CSN_DESCR_END (PHO_DownlinkAssignment_t)
3856
3857static const
3858CSN_DESCR_BEGIN (PHO_USF_1_7_t)
3859 M_NEXT_EXIST (PHO_USF_1_7_t, Exist_USF, 1),
3860 M_UINT (PHO_USF_1_7_t, USF, 3),
3861CSN_DESCR_END (PHO_USF_1_7_t)
3862
3863static const
3864CSN_DESCR_BEGIN (USF_AllocationArray_t)
3865 M_UINT (USF_AllocationArray_t, USF_0, 3),
3866 M_VAR_TARRAY_OFFSET (USF_AllocationArray_t, USF_1_7, PHO_USF_1_7_t, NBR_OfAllocatedTimeslots),
3867CSN_DESCR_END (USF_AllocationArray_t)
3868
3869static const
3870CSN_DESCR_BEGIN (PHO_UplinkAssignment_t)
3871 M_UINT (PHO_UplinkAssignment_t, PFI, 7),
3872 M_BIT (PHO_UplinkAssignment_t, RLC_Mode),
3873 M_UINT (PHO_UplinkAssignment_t, TFI_Assignment, 5),
3874
3875 M_NEXT_EXIST (PHO_UplinkAssignment_t, Exist_ChannelCodingCommand, 1),
3876 M_UINT (PHO_UplinkAssignment_t, ChannelCodingCommand, 2),
3877
3878 M_NEXT_EXIST (PHO_UplinkAssignment_t, Exist_EGPRS_ChannelCodingCommand, 1),
3879 M_UINT (PHO_UplinkAssignment_t, EGPRS_ChannelCodingCommand, 4),
3880
3881 M_NEXT_EXIST (PHO_UplinkAssignment_t, Exist_EGPRS_WindowSize, 1),
3882 M_UINT (PHO_UplinkAssignment_t, EGPRS_WindowSize, 5),
3883
3884 M_BIT (PHO_UplinkAssignment_t, USF_Granularity),
3885
3886 M_NEXT_EXIST (PHO_UplinkAssignment_t, Exist_TBF_TimeslotAllocation, 1),
3887 M_LEFT_VAR_BMP (PHO_UplinkAssignment_t, TBF_TimeslotAllocation, u.USF_AllocationArray.NBR_OfAllocatedTimeslots, 0),
3888
3889 M_UNION (PHO_UplinkAssignment_t, 2),
3890 M_UINT (PHO_UplinkAssignment_t, u.USF_SingleAllocation, 3),
3891 M_TYPE (PHO_UplinkAssignment_t, u.USF_AllocationArray, USF_AllocationArray_t),
3892CSN_DESCR_END (PHO_UplinkAssignment_t)
3893
3894static const
3895CSN_DESCR_BEGIN (GlobalTimeslotDescription_UA_t)
3896 M_TYPE (GlobalTimeslotDescription_UA_t, GlobalTimeslotDescription, GlobalTimeslotDescription_t),
3897 M_NEXT_EXIST (GlobalTimeslotDescription_UA_t, Exist_PHO_UA, 3), /* Don't use M_REC_TARRAY as we don't support multiple TBFs */
3898
3899 M_TYPE (GlobalTimeslotDescription_UA_t, PHO_UA, PHO_UplinkAssignment_t),
3900 M_FIXED (GlobalTimeslotDescription_UA_t, 1, 0x0), /* Escape recursive */
3901CSN_DESCR_END (GlobalTimeslotDescription_UA_t)
3902
3903static const
3904CSN_DESCR_BEGIN (PHO_GPRS_t)
3905 M_NEXT_EXIST (PHO_GPRS_t, Exist_ChannelCodingCommand, 1),
3906 M_UINT (PHO_GPRS_t, ChannelCodingCommand, 2),
3907
3908 M_NEXT_EXIST (PHO_GPRS_t, Exist_GlobalTimeslotDescription_UA, 1),
3909 M_TYPE (PHO_GPRS_t, GTD_UA, GlobalTimeslotDescription_UA_t),
3910
3911 M_NEXT_EXIST (PHO_GPRS_t, Exist_DownlinkAssignment, 2), /* Don't use M_REC_TARRAY as we don't support multiple TBFs */
3912 M_TYPE (PHO_GPRS_t, DownlinkAssignment, PHO_DownlinkAssignment_t),
3913 M_FIXED (PHO_GPRS_t, 1, 0x0), /* Escape recursive */
3914CSN_DESCR_END (PHO_GPRS_t)
3915
3916static const
3917CSN_DESCR_BEGIN (EGPRS_Description_t)
3918 M_NEXT_EXIST (EGPRS_Description_t, Exist_EGPRS_WindowSize, 1),
3919 M_UINT (EGPRS_Description_t, EGPRS_WindowSize, 5),
3920
3921 M_UINT (EGPRS_Description_t, LinkQualityMeasurementMode, 2),
3922 M_NEXT_EXIST (EGPRS_Description_t, Exist_BEP_Period2, 1),
3923 M_UINT (EGPRS_Description_t, BEP_Period2, 4),
3924CSN_DESCR_END (EGPRS_Description_t)
3925
3926static const
3927CSN_DESCR_BEGIN (DownlinkTBF_t)
3928 M_NEXT_EXIST (DownlinkTBF_t, Exist_EGPRS_Description, 1),
3929 M_TYPE (DownlinkTBF_t, EGPRS_Description, EGPRS_Description_t),
3930
3931 M_NEXT_EXIST (DownlinkTBF_t, Exist_DownlinkAssignment, 2), /* Don't use M_REC_TARRAY as we don't support multiple TBFs */
3932 M_TYPE (DownlinkTBF_t, DownlinkAssignment, PHO_DownlinkAssignment_t),
3933 M_FIXED (DownlinkTBF_t, 1, 0x0), /* Escape recursive */
3934CSN_DESCR_END (DownlinkTBF_t)
3935
3936static const
3937CSN_DESCR_BEGIN (PHO_EGPRS_t)
3938 M_NEXT_EXIST (PHO_EGPRS_t, Exist_EGPRS_WindowSize, 1),
3939 M_UINT (PHO_EGPRS_t, EGPRS_WindowSize, 5),
3940
3941 M_NEXT_EXIST (PHO_EGPRS_t, Exist_EGPRS_ChannelCodingCommand, 1),
3942 M_UINT (PHO_EGPRS_t, EGPRS_ChannelCodingCommand, 4),
3943
3944 M_NEXT_EXIST (PHO_EGPRS_t, Exist_BEP_Period2, 1),
3945 M_UINT (PHO_EGPRS_t, BEP_Period2, 4),
3946
3947 M_NEXT_EXIST (PHO_EGPRS_t, Exist_GlobalTimeslotDescription_UA, 1),
3948 M_TYPE (PHO_EGPRS_t, GTD_UA, GlobalTimeslotDescription_UA_t),
3949
3950 M_NEXT_EXIST (PHO_EGPRS_t, Exist_DownlinkTBF, 2),
3951 M_TYPE (PHO_EGPRS_t, DownlinkTBF, DownlinkTBF_t),
3952CSN_DESCR_END (PHO_EGPRS_t)
3953
3954static const
3955CSN_DESCR_BEGIN(PHO_TimingAdvance_t)
3956 M_TYPE (PHO_TimingAdvance_t, GlobalPacketTimingAdvance, Global_Packet_Timing_Advance_t),
3957 M_NEXT_EXIST (PHO_TimingAdvance_t, Exist_PacketExtendedTimingAdvance, 1),
3958 M_UINT (PHO_TimingAdvance_t, PacketExtendedTimingAdvance, 2),
3959CSN_DESCR_END (PHO_TimingAdvance_t)
3960
3961static const
3962CSN_DESCR_BEGIN(NAS_Container_t)
3963 M_UINT (NAS_Container_t, NAS_ContainerLength, 7),
3964 M_VAR_ARRAY (NAS_Container_t, NAS_Container, NAS_ContainerLength, 0),
3965CSN_DESCR_END (NAS_Container_t)
3966
3967static const
3968CSN_DESCR_BEGIN(PS_HandoverTo_UTRAN_Payload_t)
3969 M_UINT (PS_HandoverTo_UTRAN_Payload_t, RRC_ContainerLength, 8),
3970 M_VAR_ARRAY (PS_HandoverTo_UTRAN_Payload_t, RRC_Container, RRC_ContainerLength, 0),
3971CSN_DESCR_END (PS_HandoverTo_UTRAN_Payload_t)
3972
3973
3974static const
3975CSN_DESCR_BEGIN(PHO_RadioResources_t)
3976 M_NEXT_EXIST (PHO_RadioResources_t, Exist_HandoverReference, 1),
3977 M_UINT (PHO_RadioResources_t, HandoverReference, 8),
3978
3979 M_UINT (PHO_RadioResources_t, ARFCN, 10),
3980 M_UINT (PHO_RadioResources_t, SI, 2),
3981 M_BIT (PHO_RadioResources_t, NCI),
3982 M_UINT (PHO_RadioResources_t, BSIC, 6),
3983 M_NEXT_EXIST (PHO_RadioResources_t, Exist_CCN_Active, 1),
3984 M_BIT (PHO_RadioResources_t, CCN_Active),
3985
3986 M_NEXT_EXIST (PHO_RadioResources_t, Exist_CCN_Active_3G, 1),
3987 M_BIT (PHO_RadioResources_t, CCN_Active_3G),
3988
3989 M_NEXT_EXIST (PHO_RadioResources_t, Exist_CCN_Support_Description, 1),
3990 M_TYPE (PHO_RadioResources_t, CCN_Support_Description, CCN_Support_Description_t),
3991
3992 M_TYPE (PHO_RadioResources_t, Frequency_Parameters, Frequency_Parameters_t),
3993 M_UINT (PHO_RadioResources_t, NetworkControlOrder, 2),
3994 M_NEXT_EXIST (PHO_RadioResources_t, Exist_PHO_TimingAdvance, 1),
3995 M_TYPE (PHO_RadioResources_t, PHO_TimingAdvance, PHO_TimingAdvance_t),
3996
3997 M_BIT (PHO_RadioResources_t, Extended_Dynamic_Allocation),
3998 M_BIT (PHO_RadioResources_t, RLC_Reset),
3999 M_NEXT_EXIST (PHO_RadioResources_t, Exist_PO_PR, 2),
4000 M_UINT (PHO_RadioResources_t, PO, 4),
4001 M_BIT (PHO_RadioResources_t, PR_Mode),
4002
4003
4004 M_NEXT_EXIST (PHO_RadioResources_t, Exist_UplinkControlTimeslot, 1),
4005 M_UINT (PHO_RadioResources_t, UplinkControlTimeslot, 3),
4006
4007 M_UNION (PHO_RadioResources_t, 2),
4008 M_TYPE (PHO_RadioResources_t, u.PHO_GPRS_Mode, PHO_GPRS_t),
4009 M_TYPE (PHO_RadioResources_t, u.PHO_EGPRS_Mode, PHO_EGPRS_t),
4010CSN_DESCR_END (PHO_RadioResources_t)
4011
4012static const
4013CSN_DESCR_BEGIN(PS_HandoverTo_A_GB_ModePayload_t)
4014 M_FIXED (PS_HandoverTo_A_GB_ModePayload_t, 2, 0x00), /* For future extension to enum. */
4015 M_TYPE (PS_HandoverTo_A_GB_ModePayload_t, PHO_RadioResources, PHO_RadioResources_t),
4016
4017 M_NEXT_EXIST (PS_HandoverTo_A_GB_ModePayload_t, Exist_NAS_Container, 1),
4018 M_TYPE (PS_HandoverTo_A_GB_ModePayload_t, NAS_Container, NAS_Container_t),
4019CSN_DESCR_END (PS_HandoverTo_A_GB_ModePayload_t)
4020
4021static const
4022CSN_DESCR_BEGIN(Packet_Handover_Command_t)
4023 M_UINT (Packet_Handover_Command_t, MessageType, 6),
4024 M_UINT (Packet_Handover_Command_t, PageMode, 2),
4025
4026 M_FIXED (Packet_Handover_Command_t, 1, 0x00), /* 0 fixed */
4027 M_TYPE (Packet_Handover_Command_t, Global_TFI, Global_TFI_t),
4028
4029 M_UINT (Packet_Handover_Command_t, ContainerID, 2),
4030
4031 M_UNION (Packet_Handover_Command_t, 4),
4032 M_TYPE (Packet_Handover_Command_t, u.PS_HandoverTo_A_GB_ModePayload, PS_HandoverTo_A_GB_ModePayload_t),
4033 M_TYPE (Packet_Handover_Command_t, u.PS_HandoverTo_UTRAN_Payload, PS_HandoverTo_UTRAN_Payload_t),
4034 CSN_ERROR (Packet_Handover_Command_t, "10 <extension> not implemented", CSN_ERROR_STREAM_NOT_SUPPORTED),
4035 CSN_ERROR (Packet_Handover_Command_t, "11 <extension> not implemented", CSN_ERROR_STREAM_NOT_SUPPORTED),
4036CSN_DESCR_END (Packet_Handover_Command_t)
4037
4038/*< End Packet Handover Command >*/
4039
4040/*< Packet Physical Information message content > */
4041
4042static const
4043CSN_DESCR_BEGIN(Packet_PhysicalInformation_t)
4044 M_UINT (Packet_PhysicalInformation_t, MessageType, 6),
4045 M_UINT (Packet_PhysicalInformation_t, PageMode, 2),
4046
4047 M_TYPE (Packet_PhysicalInformation_t, Global_TFI, Global_TFI_t),
4048
4049 M_UINT (Packet_PhysicalInformation_t, TimingAdvance, 8),
4050CSN_DESCR_END (Packet_PhysicalInformation_t)
4051
4052/*< End Packet Physical Information > */
4053
4054
4055/*< ADDITIONAL MS RADIO ACCESS CAPABILITIES content > */
4056static const
4057CSN_ChoiceElement_t AdditionalMsRadAccessCapID[] =
4058{
4059 {1, 0, M_TYPE(AdditionalMsRadAccessCapID_t, u.Global_TFI, Global_TFI_t)},
4060 {1, 0x01, M_UINT(AdditionalMsRadAccessCapID_t, u.TLLI, 32)},
4061};
4062
4063static const
4064CSN_DESCR_BEGIN(AdditionalMsRadAccessCapID_t)
4065 M_CHOICE (AdditionalMsRadAccessCapID_t, UnionType, AdditionalMsRadAccessCapID, ElementsOf(AdditionalMsRadAccessCapID)),
4066CSN_DESCR_END (AdditionalMsRadAccessCapID_t)
4067
4068
4069static const
4070CSN_DESCR_BEGIN (Additional_MS_Rad_Access_Cap_t)
4071 /* Mac header */
4072 M_UINT (Additional_MS_Rad_Access_Cap_t, PayloadType, 2),
4073 M_UINT (Additional_MS_Rad_Access_Cap_t, spare, 5),
4074 M_UINT (Additional_MS_Rad_Access_Cap_t, R, 1),
4075 M_UINT (Additional_MS_Rad_Access_Cap_t, MESSAGE_TYPE, 6),
4076 /* Mac header */
4077
4078 M_TYPE (Additional_MS_Rad_Access_Cap_t, ID, AdditionalMsRadAccessCapID_t),
4079 M_TYPE (Additional_MS_Rad_Access_Cap_t, MS_Radio_Access_capability, MS_Radio_Access_capability_t),
4080CSN_DESCR_END (Additional_MS_Rad_Access_Cap_t)
4081
4082
4083/*< End ADDITIONAL MS RADIO ACCESS CAPABILITIES > */
4084
4085
4086/*< Packet Pause content > */
4087
4088static const
4089CSN_DESCR_BEGIN (Packet_Pause_t)
4090 M_UINT (Packet_Pause_t, MESSAGE_TYPE, 2),
4091 M_UINT (Packet_Pause_t, TLLI, 32),
4092 M_BITMAP (Packet_Pause_t, RAI, 48),
4093CSN_DESCR_END (Packet_Pause_t)
4094
4095
4096/*< End Packet Pause > */
4097
4098
4099/*< Packet System Information Type 1 message content >*/
4100static const
4101CSN_DESCR_BEGIN(PSI1_AdditionsR99_t)
4102 M_UINT (PSI1_AdditionsR99_t, MSCR, 1),
4103 M_UINT (PSI1_AdditionsR99_t, SGSNR, 1),
4104 M_UINT (PSI1_AdditionsR99_t, BandIndicator, 1),
4105CSN_DESCR_END (PSI1_AdditionsR99_t)
4106
4107static const
4108CSN_DESCR_BEGIN(PCCCH_Organization_t)
4109 M_UINT (PCCCH_Organization_t, BS_PCC_REL, 1),
4110 M_UINT (PCCCH_Organization_t, BS_PBCCH_BLKS, 2),
4111 M_UINT (PCCCH_Organization_t, BS_PAG_BLKS_RES, 4),
4112 M_UINT (PCCCH_Organization_t, BS_PRACH_BLKS, 4),
4113CSN_DESCR_END (PCCCH_Organization_t)
4114
4115
4116static const
4117CSN_DESCR_BEGIN(PSI1_t)
4118 M_UINT (PSI1_t, MESSAGE_TYPE, 6),
4119 M_UINT (PSI1_t, PAGE_MODE, 2),
4120
4121 M_UINT (PSI1_t, PBCCH_CHANGE_MARK, 3),
4122 M_UINT (PSI1_t, PSI_CHANGE_FIELD, 4),
4123 M_UINT (PSI1_t, PSI1_REPEAT_PERIOD, 4),
4124 M_UINT (PSI1_t, PSI_COUNT_LR, 6),
4125
4126 M_NEXT_EXIST (PSI1_t, Exist_PSI_COUNT_HR, 1),
4127 M_UINT (PSI1_t, PSI_COUNT_HR, 4),
4128
4129 M_UINT (PSI1_t, MEASUREMENT_ORDER, 1),
4130 M_TYPE (PSI1_t, GPRS_Cell_Options, GPRS_Cell_Options_t),
4131 M_TYPE (PSI1_t, PRACH_Control, PRACH_Control_t),
4132 M_TYPE (PSI1_t, PCCCH_Organization, PCCCH_Organization_t),
4133 M_TYPE (PSI1_t, Global_Power_Control_Parameters, Global_Power_Control_Parameters_t),
4134 M_UINT (PSI1_t, PSI_STATUS_IND, 1),
4135
4136 M_NEXT_EXIST (PSI1_t, Exist_AdditionsR99, 1),
4137 M_TYPE (PSI1_t, AdditionsR99, PSI1_AdditionsR99_t),
4138CSN_DESCR_END (PSI1_t)
4139/*< End Packet System Information Type 1 message content >*/
4140
4141
4142/*< Packet System Information Type 2 message content >*/
4143
4144static const
4145CSN_DESCR_BEGIN(LAI_t)
4146 M_TYPE (LAI_t, PLMN, PLMN_t),
4147 M_UINT (LAI_t, LAC, 16),
4148CSN_DESCR_END (LAI_t)
4149
4150static const
4151CSN_DESCR_BEGIN(Cell_Identification_t)
4152 M_TYPE (Cell_Identification_t, LAI, LAI_t),
4153 M_UINT (Cell_Identification_t, RAC, 8),
4154 M_UINT (Cell_Identification_t, Cell_Identity, 16),
4155CSN_DESCR_END (Cell_Identification_t)
4156
4157static const
4158CSN_DESCR_BEGIN(Non_GPRS_Cell_Options_t)
4159 M_BIT (Non_GPRS_Cell_Options_t, ATT),
4160
4161 M_NEXT_EXIST (Non_GPRS_Cell_Options_t, Exist_T3212, 1),
4162 M_UINT (Non_GPRS_Cell_Options_t, T3212, 8),
4163
4164 M_BIT (Non_GPRS_Cell_Options_t, NECI),
4165 M_BIT (Non_GPRS_Cell_Options_t, PWRC),
4166 M_UINT (Non_GPRS_Cell_Options_t, DTX, 2),
4167 M_UINT (Non_GPRS_Cell_Options_t, RADIO_LINK_TIMEOUT, 4),
4168 M_UINT (Non_GPRS_Cell_Options_t, BS_AG_BLKS_RES, 3),
4169 M_UINT (Non_GPRS_Cell_Options_t, CCCH_CONF, 3),
4170 M_UINT (Non_GPRS_Cell_Options_t, BS_PA_MFRMS, 3),
4171 M_UINT (Non_GPRS_Cell_Options_t, MAX_RETRANS, 2),
4172 M_UINT (Non_GPRS_Cell_Options_t, TX_INTEGER, 4),
4173 M_BIT (Non_GPRS_Cell_Options_t, EC),
4174 M_UINT (Non_GPRS_Cell_Options_t, MS_TXPWR_MAX_CCCH, 5),
4175
4176 M_NEXT_EXIST (Non_GPRS_Cell_Options_t, Exist_Extension_Bits, 1),
4177 M_TYPE (Non_GPRS_Cell_Options_t, Extension_Bits, Extension_Bits_t),
4178CSN_DESCR_END (Non_GPRS_Cell_Options_t)
4179
4180static const
4181CSN_DESCR_BEGIN(Reference_Frequency_t)
4182 M_UINT(Reference_Frequency_t, NUMBER, 4),
4183 M_UINT_OFFSET(Reference_Frequency_t, Length, 4, 3),
4184 M_VAR_ARRAY (Reference_Frequency_t, Contents[0], Length, 0),
4185CSN_DESCR_END (Reference_Frequency_t)
4186
4187static const
4188CSN_DESCR_BEGIN(PSI2_MA_t)
4189 M_UINT(PSI2_MA_t, NUMBER, 4),
4190 M_TYPE(PSI2_MA_t, Mobile_Allocation, GPRS_Mobile_Allocation_t),
4191CSN_DESCR_END (PSI2_MA_t)
4192
4193static const
4194CSN_DESCR_BEGIN(Non_Hopping_PCCCH_Carriers_t)
4195 M_UINT(Non_Hopping_PCCCH_Carriers_t, ARFCN, 10),
4196 M_UINT(Non_Hopping_PCCCH_Carriers_t, TIMESLOT_ALLOCATION, 8),
4197CSN_DESCR_END (Non_Hopping_PCCCH_Carriers_t)
4198
4199static const
4200CSN_DESCR_BEGIN(NonHoppingPCCCH_t)
4201 M_REC_TARRAY (NonHoppingPCCCH_t, Carriers[0], Non_Hopping_PCCCH_Carriers_t, Count_Carriers),
4202CSN_DESCR_END (NonHoppingPCCCH_t)
4203
4204static const
4205CSN_DESCR_BEGIN(Hopping_PCCCH_Carriers_t)
4206 M_UINT(Hopping_PCCCH_Carriers_t, MAIO, 6),
4207 M_UINT(Hopping_PCCCH_Carriers_t, TIMESLOT_ALLOCATION, 8),
4208CSN_DESCR_END (Hopping_PCCCH_Carriers_t)
4209
4210static const
4211CSN_DESCR_BEGIN(HoppingPCCCH_t)
4212 M_UINT(HoppingPCCCH_t, MA_NUMBER, 4),
4213 M_REC_TARRAY (HoppingPCCCH_t, Carriers[0], Hopping_PCCCH_Carriers_t, Count_Carriers),
4214CSN_DESCR_END (HoppingPCCCH_t)
4215
4216static const
4217CSN_DESCR_BEGIN(PCCCH_Description_t)
4218 M_UINT(PCCCH_Description_t, TSC, 3),
4219 M_UNION (PCCCH_Description_t, 2),
4220 M_TYPE (PCCCH_Description_t, u.NonHopping, NonHoppingPCCCH_t),
4221 M_TYPE (PCCCH_Description_t, u.Hopping, HoppingPCCCH_t),
4222CSN_DESCR_END (PCCCH_Description_t)
4223
4224static const
4225CSN_DESCR_BEGIN(PSI2_t)
4226 M_UINT (PSI2_t, MESSAGE_TYPE, 6),
4227 M_UINT (PSI2_t, PAGE_MODE, 2),
4228
4229 M_UINT (PSI2_t, CHANGE_MARK, 2),
4230 M_UINT (PSI2_t, INDEX, 3),
4231 M_UINT (PSI2_t, COUNT, 3),
4232
4233 M_NEXT_EXIST (PSI2_t, Exist_Cell_Identification, 1),
4234 M_TYPE (PSI2_t, Cell_Identification, Cell_Identification_t),
4235
4236 M_NEXT_EXIST (PSI2_t, Exist_Non_GPRS_Cell_Options, 1),
4237 M_TYPE (PSI2_t, Non_GPRS_Cell_Options, Non_GPRS_Cell_Options_t),
4238
4239 M_REC_TARRAY (PSI2_t, Reference_Frequency[0], Reference_Frequency_t, Count_Reference_Frequency),
4240 M_TYPE (PSI2_t, Cell_Allocation, Cell_Allocation_t),
4241 M_REC_TARRAY (PSI2_t, GPRS_MA[0], PSI2_MA_t, Count_GPRS_MA),
4242 M_REC_TARRAY (PSI2_t, PCCCH_Description[0], PCCCH_Description_t, Count_PCCCH_Description),
4243CSN_DESCR_END (PSI2_t)
4244/*< End Packet System Information Type 2 message content >*/
4245
4246
4247
4248/*< Packet System Information Type 3 message content >*/
4249static const
4250CSN_DESCR_BEGIN(Serving_Cell_params_t)
4251 M_BIT (Serving_Cell_params_t, CELL_BAR_ACCESS_2),
4252 M_BIT (Serving_Cell_params_t, EXC_ACC),
4253 M_UINT (Serving_Cell_params_t, GPRS_RXLEV_ACCESS_MIN, 6),
4254 M_UINT (Serving_Cell_params_t, GPRS_MS_TXPWR_MAX_CCH, 5),
4255 M_NEXT_EXIST (Serving_Cell_params_t, Exist_HCS, 1),
4256 M_TYPE (Serving_Cell_params_t, HCS, HCS_t),
4257 M_UINT (Serving_Cell_params_t, MULTIBAND_REPORTING, 2),
4258CSN_DESCR_END (Serving_Cell_params_t)
4259
4260
4261static const
4262CSN_DESCR_BEGIN(Gen_Cell_Sel_t)
4263 M_UINT (Gen_Cell_Sel_t, GPRS_CELL_RESELECT_HYSTERESIS, 3),
4264 M_BIT (Gen_Cell_Sel_t, C31_HYST),
4265 M_BIT (Gen_Cell_Sel_t, C32_QUAL),
4266 M_FIXED (Gen_Cell_Sel_t, 1, 0x01),
4267
4268 M_NEXT_EXIST (Gen_Cell_Sel_t, Exist_T_RESEL, 1),
4269 M_UINT (Gen_Cell_Sel_t, T_RESEL, 3),
4270
4271 M_NEXT_EXIST (Gen_Cell_Sel_t, Exist_RA_RESELECT_HYSTERESIS, 1),
4272 M_UINT (Gen_Cell_Sel_t, RA_RESELECT_HYSTERESIS, 3),
4273CSN_DESCR_END (Gen_Cell_Sel_t)
4274
4275
4276static const
4277CSN_DESCR_BEGIN(COMPACT_Cell_Sel_t)
4278 M_UINT (COMPACT_Cell_Sel_t, bsic, 6),
4279 M_BIT (COMPACT_Cell_Sel_t, CELL_BAR_ACCESS_2),
4280 M_BIT (COMPACT_Cell_Sel_t, EXC_ACC),
4281 M_BIT (COMPACT_Cell_Sel_t, SAME_RA_AS_SERVING_CELL),
4282 M_NEXT_EXIST (COMPACT_Cell_Sel_t, Exist_GPRS_RXLEV_ACCESS_MIN, 2),
4283 M_UINT (COMPACT_Cell_Sel_t, GPRS_RXLEV_ACCESS_MIN, 6),
4284 M_UINT (COMPACT_Cell_Sel_t, GPRS_MS_TXPWR_MAX_CCH, 5),
4285 M_NEXT_EXIST (COMPACT_Cell_Sel_t, Exist_GPRS_TEMPORARY_OFFSET, 2),
4286 M_UINT (COMPACT_Cell_Sel_t, GPRS_TEMPORARY_OFFSET, 3),
4287 M_UINT (COMPACT_Cell_Sel_t, GPRS_PENALTY_TIME, 5),
4288 M_NEXT_EXIST (COMPACT_Cell_Sel_t, Exist_GPRS_RESELECT_OFFSET, 1),
4289 M_UINT (COMPACT_Cell_Sel_t, GPRS_RESELECT_OFFSET, 5),
4290 M_NEXT_EXIST (COMPACT_Cell_Sel_t, Exist_Hcs_Parm, 1),
4291 M_TYPE (COMPACT_Cell_Sel_t, HCS_Param, HCS_t),
4292 M_NEXT_EXIST (COMPACT_Cell_Sel_t, Exist_TIME_GROUP, 1),
4293 M_UINT (COMPACT_Cell_Sel_t, TIME_GROUP, 2),
4294 M_NEXT_EXIST (COMPACT_Cell_Sel_t, Exist_GUAR_CONSTANT_PWR_BLKS, 1),
4295 M_UINT (COMPACT_Cell_Sel_t, GUAR_CONSTANT_PWR_BLKS, 2),
4296CSN_DESCR_END (COMPACT_Cell_Sel_t)
4297
4298static const
4299CSN_DESCR_BEGIN(COMPACT_Neighbour_Cell_Param_Remaining_t)
4300 /* this FREQ_DIFF_LENGTH is not initialised, it should be the SAME as COMPACT_Neighbour_Cell_Param_t.FREQ_DIFF_LENGTH.
4301 * So it is buggy, but there is no way to handle it. Same issue is in Cell_Selection_Params_With_FreqDiff_t.FREQ_DIFF_LENGTH.
4302 */
4303 M_VAR_BITMAP (COMPACT_Neighbour_Cell_Param_Remaining_t, FREQUENCY_DIFF, FREQ_DIFF_LENGTH, 0),
4304 M_TYPE (COMPACT_Neighbour_Cell_Param_Remaining_t, COMPACT_Cell_Sel_Remain_Cells, COMPACT_Cell_Sel_t),
4305CSN_DESCR_END (COMPACT_Neighbour_Cell_Param_Remaining_t)
4306
4307
4308static const
4309CSN_DESCR_BEGIN(COMPACT_Neighbour_Cell_Param_t)
4310 M_UINT (COMPACT_Neighbour_Cell_Param_t, START_FREQUENCY, 10),
4311 M_TYPE (COMPACT_Neighbour_Cell_Param_t, COMPACT_Cell_Sel, COMPACT_Cell_Sel_t),
4312 M_UINT (COMPACT_Neighbour_Cell_Param_t, NR_OF_REMAINING_CELLS, 4),
4313 M_UINT_OFFSET(COMPACT_Neighbour_Cell_Param_t, FREQ_DIFF_LENGTH, 3, 1),
4314 M_VAR_TARRAY (COMPACT_Neighbour_Cell_Param_t, COMPACT_Neighbour_Cell_Param_Remaining, COMPACT_Neighbour_Cell_Param_Remaining_t, NR_OF_REMAINING_CELLS),
4315CSN_DESCR_END (COMPACT_Neighbour_Cell_Param_t)
4316
4317
4318static const
4319CSN_DESCR_BEGIN(COMPACT_Info_t)
4320 M_TYPE (COMPACT_Info_t, Cell_Identification, Cell_Identification_t),
4321 M_REC_TARRAY (COMPACT_Info_t, COMPACT_Neighbour_Cell_Param, COMPACT_Neighbour_Cell_Param_t, COMPACT_Neighbour_Cell_Param_Count),
4322CSN_DESCR_END (COMPACT_Info_t)
4323
4324
4325static const
4326CSN_DESCR_BEGIN(PSI3_AdditionR4_t)
4327 M_NEXT_EXIST (PSI3_AdditionR4_t, Exist_CCN_Support_Desc, 1),
4328 M_TYPE (PSI3_AdditionR4_t, CCN_Support_Desc, CCN_Support_Description_t),
4329CSN_DESCR_END (PSI3_AdditionR4_t)
4330
4331
4332static const
4333CSN_DESCR_BEGIN(PSI3_AdditionR99_t)
4334 M_FIXED (PSI3_AdditionR99_t, 2, 0x00),
4335 M_NEXT_EXIST (PSI3_AdditionR99_t, Exist_COMPACT_Info, 1),
4336 M_TYPE (PSI3_AdditionR99_t, COMPACT_Info, COMPACT_Info_t),
4337 M_FIXED (PSI3_AdditionR99_t, 1, 0x00),
4338 M_NEXT_EXIST (PSI3_AdditionR99_t, Exist_AdditionR4, 1),
4339 M_TYPE (PSI3_AdditionR99_t, AdditionR4, PSI3_AdditionR4_t),
4340CSN_DESCR_END (PSI3_AdditionR99_t)
4341
4342
4343static const
4344CSN_DESCR_BEGIN(PSI3_AdditionR98_t)
4345 M_TYPE (PSI3_AdditionR98_t, Scell_LSA_ID_Info, LSA_ID_Info_t),
4346
4347 M_NEXT_EXIST (PSI3_AdditionR98_t, Exist_LSA_Parameters, 1),
4348 M_TYPE (PSI3_AdditionR98_t, LSA_Parameters, LSA_Parameters_t),
4349
4350 M_NEXT_EXIST (PSI3_AdditionR98_t, Exist_AdditionR99, 1),
4351 M_TYPE (PSI3_AdditionR98_t, AdditionR99, PSI3_AdditionR99_t),
4352CSN_DESCR_END (PSI3_AdditionR98_t)
4353
4354
4355static const
4356CSN_DESCR_BEGIN(PSI3_t)
4357 M_UINT (PSI3_t, MESSAGE_TYPE, 6),
4358 M_UINT (PSI3_t, PAGE_MODE, 2),
4359 M_UINT (PSI3_t, CHANGE_MARK, 2),
4360 M_UINT (PSI3_t, BIS_COUNT, 4),
4361 M_TYPE (PSI3_t, Serving_Cell_params, Serving_Cell_params_t),
4362 M_TYPE (PSI3_t, General_Cell_Selection, Gen_Cell_Sel_t),
4363 M_TYPE (PSI3_t, NeighbourCellList, NeighbourCellList_t),
4364
4365 M_NEXT_EXIST (PSI3_t, Exist_AdditionR98, 1),
4366 M_TYPE (PSI3_t, AdditionR98, PSI3_AdditionR98_t),
4367CSN_DESCR_END (PSI3_t)
4368/*< End Packet System Information Type 3 message content >*/
4369
4370
4371/*< Packet System Information Type 5 message content >*/
4372static const
4373CSN_DESCR_BEGIN(MeasurementParams_t)
4374 M_NEXT_EXIST (MeasurementParams_t, Exist_MULTI_BAND_REPORTING, 1),
4375 M_UINT (MeasurementParams_t, MULTI_BAND_REPORTING, 2),
4376
4377 M_NEXT_EXIST (MeasurementParams_t, Exist_SERVING_BAND_REPORTING, 1),
4378 M_UINT (MeasurementParams_t, SERVING_BAND_REPORTING, 2),
4379
4380 M_NEXT_EXIST (MeasurementParams_t, Exist_SCALE_ORD, 1),
4381 M_UINT (MeasurementParams_t, SCALE_ORD, 2),
4382
4383 M_NEXT_EXIST (MeasurementParams_t, Exist_OffsetThreshold900, 1),
4384 M_TYPE (MeasurementParams_t, OffsetThreshold900, OffsetThreshold_t),
4385
4386 M_NEXT_EXIST (MeasurementParams_t, Exist_OffsetThreshold1800, 1),
4387 M_TYPE (MeasurementParams_t, OffsetThreshold1800, OffsetThreshold_t),
4388
4389 M_NEXT_EXIST (MeasurementParams_t, Exist_OffsetThreshold400, 1),
4390 M_TYPE (MeasurementParams_t, OffsetThreshold400, OffsetThreshold_t),
4391
4392 M_NEXT_EXIST (MeasurementParams_t, Exist_OffsetThreshold1900, 1),
4393 M_TYPE (MeasurementParams_t, OffsetThreshold1900, OffsetThreshold_t),
4394
4395 M_NEXT_EXIST (MeasurementParams_t, Exist_OffsetThreshold850, 1),
4396 M_TYPE (MeasurementParams_t, OffsetThreshold850, OffsetThreshold_t),
4397CSN_DESCR_END (MeasurementParams_t)
4398
4399static const
4400CSN_DESCR_BEGIN(GPRSMeasurementParams3G_PSI5_t)
4401 M_NEXT_EXIST (GPRSMeasurementParams3G_PSI5_t, existRepParamsFDD, 2),
4402 M_UINT (GPRSMeasurementParams3G_PSI5_t, RepQuantFDD, 1),
4403 M_UINT (GPRSMeasurementParams3G_PSI5_t, MultiratReportingFDD, 2),
4404
4405 M_NEXT_EXIST (GPRSMeasurementParams3G_PSI5_t, existReportingParamsFDD, 2),
4406 M_UINT (GPRSMeasurementParams3G_PSI5_t, ReportingOffsetFDD, 3),
4407 M_UINT (GPRSMeasurementParams3G_PSI5_t, ReportingThresholdFDD, 3),
4408
4409 M_NEXT_EXIST (GPRSMeasurementParams3G_PSI5_t, existMultiratReportingTDD, 1),
4410 M_UINT (GPRSMeasurementParams3G_PSI5_t, MultiratReportingTDD, 2),
4411
4412 M_NEXT_EXIST (GPRSMeasurementParams3G_PSI5_t, existOffsetThresholdTDD, 2),
4413 M_UINT (GPRSMeasurementParams3G_PSI5_t, ReportingOffsetTDD, 3),
4414 M_UINT (GPRSMeasurementParams3G_PSI5_t, ReportingThresholdTDD, 3),
4415CSN_DESCR_END (GPRSMeasurementParams3G_PSI5_t)
4416
4417static const
4418CSN_DESCR_BEGIN(ENH_Reporting_Parameters_t)
4419 M_UINT (ENH_Reporting_Parameters_t, REPORT_TYPE, 1),
4420 M_UINT (ENH_Reporting_Parameters_t, REPORTING_RATE, 1),
4421 M_UINT (ENH_Reporting_Parameters_t, INVALID_BSIC_REPORTING, 1),
4422
4423 M_NEXT_EXIST (ENH_Reporting_Parameters_t, Exist_NCC_PERMITTED, 1),
4424 M_UINT (ENH_Reporting_Parameters_t, NCC_PERMITTED, 8),
4425
4426 M_NEXT_EXIST (ENH_Reporting_Parameters_t, Exist_GPRSMeasurementParams, 1),
4427 M_TYPE (ENH_Reporting_Parameters_t, GPRSMeasurementParams, MeasurementParams_t),
4428
4429 M_NEXT_EXIST (ENH_Reporting_Parameters_t, Exist_GPRSMeasurementParams3G, 1),
4430 M_TYPE (ENH_Reporting_Parameters_t, GPRSMeasurementParams3G, GPRSMeasurementParams3G_PSI5_t),
4431CSN_DESCR_END (ENH_Reporting_Parameters_t)
4432
4433static const
4434CSN_DESCR_BEGIN(PSI5_AdditionsR7)
4435 M_NEXT_EXIST (PSI5_AdditionsR7, Exist_OffsetThreshold_700, 1),
4436 M_TYPE (PSI5_AdditionsR7, OffsetThreshold_700, OffsetThreshold_t),
4437
4438 M_NEXT_EXIST (PSI5_AdditionsR7, Exist_OffsetThreshold_810, 1),
4439 M_TYPE (PSI5_AdditionsR7, OffsetThreshold_810, OffsetThreshold_t),
4440CSN_DESCR_END (PSI5_AdditionsR7)
4441
4442static const
4443CSN_DESCR_BEGIN(PSI5_AdditionsR5)
4444 M_NEXT_EXIST (PSI5_AdditionsR5, Exist_GPRS_AdditionalMeasurementParams3G, 1),
4445 M_TYPE (PSI5_AdditionsR5, GPRS_AdditionalMeasurementParams3G, GPRS_AdditionalMeasurementParams3G_t),
4446
4447 M_NEXT_EXIST (PSI5_AdditionsR5, Exist_AdditionsR7, 1),
4448 M_TYPE (PSI5_AdditionsR5, AdditionsR7, PSI5_AdditionsR7),
4449CSN_DESCR_END (PSI5_AdditionsR5)
4450
4451static const
4452CSN_DESCR_BEGIN(PSI5_AdditionsR99)
4453 M_NEXT_EXIST (PSI5_AdditionsR99, Exist_ENH_Reporting_Param, 1),
4454 M_TYPE (PSI5_AdditionsR99, ENH_Reporting_Param, ENH_Reporting_Parameters_t),
4455
4456 M_NEXT_EXIST (PSI5_AdditionsR99, Exist_AdditionsR5, 1),
4457 M_TYPE (PSI5_AdditionsR99, AdditionisR5, PSI5_AdditionsR5),
4458CSN_DESCR_END (PSI5_AdditionsR99)
4459
4460static const
4461CSN_DESCR_BEGIN(PSI5_t)
4462 M_UINT (PSI5_t, MESSAGE_TYPE, 6),
4463 M_UINT (PSI5_t, PAGE_MODE, 2),
4464 M_UINT (PSI5_t, CHANGE_MARK, 2),
4465 M_UINT (PSI5_t, INDEX, 3),
4466 M_UINT (PSI5_t, COUNT, 3),
4467
4468 M_NEXT_EXIST (PSI5_t, Eixst_NC_Meas_Param, 1),
4469 M_TYPE (PSI5_t, NC_Meas_Param, NC_Measurement_Parameters_t),
4470
4471 M_FIXED (PSI5_t, 1, 0x00),
4472
4473 M_NEXT_EXIST (PSI5_t, Exist_AdditionsR99, 1),
4474 M_TYPE (PSI5_t, AdditionsR99, PSI5_AdditionsR99),
4475CSN_DESCR_END (PSI5_t)
4476/*< End Packet System Information Type 5 message content >*/
4477
4478
4479/*< Packet System Information Type 13 message content >*/
4480static const
4481CSN_DESCR_BEGIN(PSI13_AdditionsR6)
4482 M_NEXT_EXIST (PSI13_AdditionsR6, Exist_LB_MS_TXPWR_MAX_CCH, 1),
4483 M_UINT (PSI13_AdditionsR6, LB_MS_TXPWR_MAX_CCH, 5),
4484 M_UINT (PSI13_AdditionsR6, SI2n_SUPPORT, 2),
4485CSN_DESCR_END (PSI13_AdditionsR6)
4486
4487static const
4488CSN_DESCR_BEGIN(PSI13_AdditionsR4)
4489 M_UINT (PSI13_AdditionsR4, SI_STATUS_IND, 1),
4490 M_NEXT_EXIST (PSI13_AdditionsR4, Exist_AdditionsR6, 1),
4491 M_TYPE (PSI13_AdditionsR4, AdditionsR6, PSI13_AdditionsR6),
4492CSN_DESCR_END (PSI13_AdditionsR4)
4493
4494static const
4495CSN_DESCR_BEGIN(PSI13_AdditionR99)
4496 M_UINT (PSI13_AdditionR99, SGSNR, 1),
4497 M_NEXT_EXIST (PSI13_AdditionR99, Exist_AdditionsR4, 1),
4498 M_TYPE (PSI13_AdditionR99, AdditionsR4, PSI13_AdditionsR4),
4499CSN_DESCR_END (PSI13_AdditionR99)
4500
4501static const
4502CSN_DESCR_BEGIN(PSI13_t)
4503 M_UINT (PSI13_t, MESSAGE_TYPE, 6),
4504 M_UINT (PSI13_t, PAGE_MODE, 2),
4505 M_UINT (PSI13_t, BCCH_CHANGE_MARK, 3),
4506 M_UINT (PSI13_t, SI_CHANGE_FIELD, 4),
4507
4508 M_NEXT_EXIST (PSI13_t, Exist_MA, 2),
4509 M_UINT (PSI13_t, SI13_CHANGE_MARK, 2),
4510 M_TYPE (PSI13_t, GPRS_Mobile_Allocation, GPRS_Mobile_Allocation_t),
4511
4512 M_UNION (PSI13_t, 2),
4513 M_TYPE (PSI13_t, u.PBCCH_Not_present, PBCCH_Not_present_t),
4514 M_TYPE (PSI13_t, u.PBCCH_present, PBCCH_present_t),
4515
4516 M_NEXT_EXIST (PSI13_t, Exist_AdditionsR99, 1),
4517 M_TYPE (PSI13_t, AdditionsR99, PSI13_AdditionR99),
4518CSN_DESCR_END (PSI13_t)
4519/*< End Packet System Information Type 13 message content >*/
4520
4521
4522
4523//typedef char* MT_Strings_t;
4524
4525static const char* szMT_Downlink[] = {
4526 "Invalid Message Type", /* 0x00 */
4527 "PACKET_CELL_CHANGE_ORDER", /* 0x01 */
4528 "PACKET_DOWNLINK_ASSIGNMENT", /* 0x02 */
4529 "PACKET_MEASUREMENT_ORDER", /* 0x03 */
4530 "PACKET_POLLING_REQUEST", /* 0x04 */
4531 "PACKET_POWER_CONTROL_TIMING_ADVANCE", /* 0x05 */
4532 "PACKET_QUEUEING_NOTIFICATION", /* 0x06 */
4533 "PACKET_TIMESLOT_RECONFIGURE", /* 0x07 */
4534 "PACKET_TBF_RELEASE", /* 0x08 */
4535 "PACKET_UPLINK_ACK_NACK", /* 0x09 */
4536 "PACKET_UPLINK_ASSIGNMENT", /* 0x0A */
4537 "PACKET_CELL_CHANGE_CONTINUE", /* 0x0B */
4538 "PACKET_NEIGHBOUR_CELL_DATA", /* 0x0C */
4539 "PACKET_SERVING_CELL_DATA", /* 0x0D */
4540 "Invalid Message Type", /* 0x0E */
4541 "Invalid Message Type", /* 0x0F */
4542 "Invalid Message Type", /* 0x10 */
4543 "Invalid Message Type", /* 0x11 */
4544 "Invalid Message Type", /* 0x12 */
4545 "Invalid Message Type", /* 0x13 */
4546 "Invalid Message Type", /* 0x14 */
4547 "PACKET_HANDOVER_COMMAND", /* 0x15 */
4548 "PACKET_PHYSICAL_INFORMATION", /* 0x16 */
4549 "Invalid Message Type", /* 0x17 */
4550 "Invalid Message Type", /* 0x18 */
4551 "Invalid Message Type", /* 0x19 */
4552 "Invalid Message Type", /* 0x1A */
4553 "Invalid Message Type", /* 0x1B */
4554 "Invalid Message Type", /* 0x1C */
4555 "Invalid Message Type", /* 0x1D */
4556 "Invalid Message Type", /* 0x1E */
4557 "Invalid Message Type", /* 0x1F */
4558 "Invalid Message Type", /* 0x20 */
4559 "PACKET_ACCESS_REJECT", /* 0x21 */
4560 "PACKET_PAGING_REQUEST", /* 0x22 */
4561 "PACKET_PDCH_RELEASE", /* 0x23 */
4562 "PACKET_PRACH_PARAMETERS", /* 0x24 */
4563 "PACKET_DOWNLINK_DUMMY_CONTROL_BLOCK", /* 0x25 */
4564 "Invalid Message Type", /* 0x26 */
4565 "Invalid Message Type", /* 0x27 */
4566 "Invalid Message Type", /* 0x28 */
4567 "Invalid Message Type", /* 0x29 */
4568 "Invalid Message Type", /* 0x2A */
4569 "Invalid Message Type", /* 0x2B */
4570 "Invalid Message Type", /* 0x2C */
4571 "Invalid Message Type", /* 0x2D */
4572 "Invalid Message Type", /* 0x2E */
4573 "Invalid Message Type", /* 0x2F */
4574 "PACKET_SYSTEM_INFO_6", /* 0x30 */
4575 "PACKET_SYSTEM_INFO_1", /* 0x31 */
4576 "PACKET_SYSTEM_INFO_2", /* 0x32 */
4577 "PACKET_SYSTEM_INFO_3", /* 0x33 */
4578 "PACKET_SYSTEM_INFO_3_BIS", /* 0x34 */
4579 "PACKET_SYSTEM_INFO_4", /* 0x35 */
4580 "PACKET_SYSTEM_INFO_5", /* 0x36 */
4581 "PACKET_SYSTEM_INFO_13", /* 0x37 */
4582 "PACKET_SYSTEM_INFO_7", /* 0x38 */
4583 "PACKET_SYSTEM_INFO_8", /* 0x39 */
4584 "PACKET_SYSTEM_INFO_14", /* 0x3A */
4585 "Invalid Message Type", /* 0x3B */
4586 "PACKET_SYSTEM_INFO_3_TER", /* 0x3C */
4587 "PACKET_SYSTEM_INFO_3_QUATER", /* 0x3D */
4588 "PACKET_SYSTEM_INFO_15" /* 0x3E */
4589};
4590
4591static const char* szMT_Uplink[] = {
4592 "PACKET_CELL_CHANGE_FAILURE", /* 0x00 */
4593 "PACKET_CONTROL_ACKNOWLEDGEMENT", /* 0x01 */
4594 "PACKET_DOWNLINK_ACK_NACK", /* 0x02 */
4595 "PACKET_UPLINK_DUMMY_CONTROL_BLOCK", /* 0x03 */
4596 "PACKET_MEASUREMENT_REPORT", /* 0x04 */
4597 "PACKET_RESOURCE_REQUEST", /* 0x05 */
4598 "PACKET_MOBILE_TBF_STATUS", /* 0x06 */
4599 "PACKET_PSI_STATUS", /* 0x07 */
4600 "EGPRS_PACKET_DOWNLINK_ACK_NACK", /* 0x08 */
4601 "PACKET_PAUSE", /* 0x09 */
4602 "PACKET_ENHANCED_MEASUREMENT_REPORT", /* 0x0A */
4603 "ADDITIONAL_MS_RAC", /* 0x0B */
4604 "PACKET_CELL_CHANGE_NOTIFICATION", /* 0x0C */
4605 "PACKET_SI_STATUS", /* 0x0D */
4606};
4607
4608const char*
4609MT_DL_TextGet(guint8 mt)
4610{
4611 if (mt < ElementsOf(szMT_Downlink))
4612 {
4613 return(szMT_Downlink[mt]);
4614 }
4615 else
4616 {
4617 return("Unknown message type");
4618 }
4619}
4620
4621const char*
4622MT_UL_TextGet(guint8 mt)
4623{
4624 if (mt < ElementsOf(szMT_Uplink))
4625 {
4626 return(szMT_Uplink[mt]);
4627 }
4628 else
4629 {
4630 return("Unknown message type");
4631 }
4632}
4633
4634
4635/* SI1_RestOctet_t */
4636
4637static const
4638CSN_DESCR_BEGIN (SI1_RestOctet_t)
4639 M_NEXT_EXIST_LH(SI1_RestOctet_t, Exist_NCH_Position, 1),
4640 M_UINT (SI1_RestOctet_t, NCH_Position, 5),
4641
4642 M_UINT_LH (SI1_RestOctet_t, BandIndicator, 1),
4643CSN_DESCR_END (SI1_RestOctet_t)
4644
4645/* SI3_Rest_Octet_t */
4646static const
4647CSN_DESCR_BEGIN(Selection_Parameters_t)
4648 M_UINT (Selection_Parameters_t, CBQ, 1),
4649 M_UINT (Selection_Parameters_t, CELL_RESELECT_OFFSET, 6),
4650 M_UINT (Selection_Parameters_t, TEMPORARY_OFFSET, 3),
4651 M_UINT (Selection_Parameters_t, PENALTY_TIME, 5),
4652CSN_DESCR_END (Selection_Parameters_t)
4653
4654static const
4655CSN_DESCR_BEGIN (SI3_Rest_Octet_t)
4656 M_NEXT_EXIST_LH(SI3_Rest_Octet_t, Exist_Selection_Parameters, 1),
4657 M_TYPE (SI3_Rest_Octet_t, Selection_Parameters, Selection_Parameters_t),
4658
4659 M_NEXT_EXIST_LH(SI3_Rest_Octet_t, Exist_Power_Offset, 1),
4660 M_UINT (SI3_Rest_Octet_t, Power_Offset, 2),
4661
4662 M_UINT_LH (SI3_Rest_Octet_t, System_Information_2ter_Indicator, 1),
4663 M_UINT_LH (SI3_Rest_Octet_t, Early_Classmark_Sending_Control, 1),
4664
4665 M_NEXT_EXIST_LH(SI3_Rest_Octet_t, Exist_WHERE, 1),
4666 M_UINT (SI3_Rest_Octet_t, WHERE, 3),
4667
4668 M_NEXT_EXIST_LH(SI3_Rest_Octet_t, Exist_GPRS_Indicator, 2),
4669 M_UINT (SI3_Rest_Octet_t, RA_COLOUR, 3),
4670 M_UINT (SI3_Rest_Octet_t, SI13_POSITION, 1),
4671
4672 M_UINT_LH (SI3_Rest_Octet_t, ECS_Restriction3G, 1),
4673
4674 M_NEXT_EXIST_LH(SI3_Rest_Octet_t, ExistSI2quaterIndicator, 1),
4675 M_UINT (SI3_Rest_Octet_t, SI2quaterIndicator, 1),
4676CSN_DESCR_END (SI3_Rest_Octet_t)
4677
4678static const
4679CSN_DESCR_BEGIN (SI4_Rest_Octet_t)
4680 M_NEXT_EXIST_LH(SI4_Rest_Octet_t, Exist_Selection_Parameters, 1),
4681 M_TYPE (SI4_Rest_Octet_t, Selection_Parameters, Selection_Parameters_t),
4682
4683 M_NEXT_EXIST_LH(SI4_Rest_Octet_t, Exist_Power_Offset, 1),
4684 M_UINT (SI4_Rest_Octet_t, Power_Offset, 2),
4685
4686 M_NEXT_EXIST_LH(SI4_Rest_Octet_t, Exist_GPRS_Indicator, 2),
4687 M_UINT (SI4_Rest_Octet_t, RA_COLOUR, 3),
4688 M_UINT (SI4_Rest_Octet_t, SI13_POSITION, 1),
4689CSN_DESCR_END (SI4_Rest_Octet_t)
4690
4691/* SI6_RestOctet_t */
4692
4693static const
4694CSN_DESCR_BEGIN(PCH_and_NCH_Info_t)
4695 M_UINT (PCH_and_NCH_Info_t, PagingChannelRestructuring, 1),
4696 M_UINT (PCH_and_NCH_Info_t, NLN_SACCH, 2),
4697
4698 M_NEXT_EXIST (PCH_and_NCH_Info_t, Exist_CallPriority, 1),
4699 M_UINT (PCH_and_NCH_Info_t, CallPriority, 3),
4700
4701 M_UINT (PCH_and_NCH_Info_t, NLN_Status, 1),
4702CSN_DESCR_END (PCH_and_NCH_Info_t)
4703
4704static const
4705CSN_DESCR_BEGIN (SI6_RestOctet_t)
4706 M_NEXT_EXIST_LH(SI6_RestOctet_t, Exist_PCH_and_NCH_Info, 1),
4707 M_TYPE (SI6_RestOctet_t, PCH_and_NCH_Info, PCH_and_NCH_Info_t),
4708
4709 M_NEXT_EXIST_LH(SI6_RestOctet_t, Exist_VBS_VGCS_Options, 1),
4710 M_UINT (SI6_RestOctet_t, VBS_VGCS_Options, 2),
4711
4712 M_NEXT_EXIST_LH(SI6_RestOctet_t, Exist_DTM_Support, 2),
4713 M_UINT (SI6_RestOctet_t, RAC, 8),
4714 M_UINT (SI6_RestOctet_t, MAX_LAPDm, 3),
4715
4716 M_UINT_LH (SI6_RestOctet_t, BandIndicator, 1),
4717CSN_DESCR_END (SI6_RestOctet_t)
4718
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04004719void decode_gsm_rlcmac_uplink(bitvec * vector, RlcMacUplink_t * data)
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004720{
4721 csnStream_t ar;
Ivan Kluchnikov9b06ff02012-06-15 10:13:30 +04004722 unsigned readIndex = 0;
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04004723 guint8 payload_type = bitvec_read_field(vector, readIndex, 2);
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004724
4725 if (payload_type == PAYLOAD_TYPE_DATA)
4726 {
Ivan Kluchnikova9f1ff22012-05-24 22:25:06 +04004727 LOGPC(DRLCMACDATA, LOGL_NOTICE, "Payload Type: DATA (0), not implemented");
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004728 return;
4729 }
4730 else if (payload_type == PAYLOAD_TYPE_RESERVED)
4731 {
Ivan Kluchnikova9f1ff22012-05-24 22:25:06 +04004732 LOGPC(DRLCMACDATA, LOGL_NOTICE, "Payload Type: RESERVED (3)");
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004733 return;
4734 }
4735 data->NrOfBits = (23 - 1) * 8;
4736 csnStreamInit(&ar, 0, data->NrOfBits);
4737 readIndex += 6;
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04004738 data->u.MESSAGE_TYPE = bitvec_read_field(vector, readIndex, 6);
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004739 readIndex = 0;
4740 switch (data->u.MESSAGE_TYPE)
4741 {
4742 case MT_PACKET_CELL_CHANGE_FAILURE:
4743 {
4744 /*
4745 * data is the pointer to the unpack struct that hold the unpack value
4746 * CSNDESCR is an array that holds the different element types
4747 * ar is the csn context holding the bitcount, offset and output
4748 */
4749 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_Cell_Change_Failure_t), vector, readIndex, &data->u.Packet_Cell_Change_Failure);
4750 break;
4751 }
4752 case MT_PACKET_CONTROL_ACK:
4753 {
4754 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_Control_Acknowledgement_t), vector, readIndex, &data->u.Packet_Control_Acknowledgement);
4755 break;
4756 }
4757 case MT_PACKET_DOWNLINK_ACK_NACK:
4758 {
4759 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_Downlink_Ack_Nack_t), vector, readIndex, &data->u.Packet_Downlink_Ack_Nack);
4760 break;
4761 }
4762 case MT_PACKET_UPLINK_DUMMY_CONTROL_BLOCK:
4763 {
4764 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_Uplink_Dummy_Control_Block_t), vector, readIndex, &data->u.Packet_Uplink_Dummy_Control_Block);
4765 break;
4766 }
4767 case MT_PACKET_MEASUREMENT_REPORT:
4768 {
4769 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_Measurement_Report_t), vector, readIndex, &data->u.Packet_Measurement_Report);
4770 break;
4771 }
4772 case MT_PACKET_RESOURCE_REQUEST:
4773 {
4774 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_Resource_Request_t), vector, readIndex, &data->u.Packet_Resource_Request);
4775 break;
4776 }
4777
4778 case MT_PACKET_MOBILE_TBF_STATUS:
4779 {
4780 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_Mobile_TBF_Status_t), vector, readIndex, &data->u.Packet_Mobile_TBF_Status);
4781 break;
4782 }
4783 case MT_PACKET_PSI_STATUS:
4784 {
4785 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_PSI_Status_t), vector, readIndex, &data->u.Packet_PSI_Status);
4786 break;
4787 }
4788 case MT_EGPRS_PACKET_DOWNLINK_ACK_NACK:
4789 {
4790 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(EGPRS_PD_AckNack_t), vector, readIndex, &data->u.Egprs_Packet_Downlink_Ack_Nack);
4791 break;
4792 }
4793 case MT_PACKET_PAUSE:
4794 {
4795 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_Pause_t), vector, readIndex, &data->u.Packet_Pause);
4796 break;
4797 }
4798 case MT_PACKET_ENHANCED_MEASUREMENT_REPORT:
4799 {
4800 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_Enh_Measurement_Report_t), vector, readIndex, &data->u.Packet_Enh_Measurement_Report);
4801 break;
4802 }
4803 case MT_ADDITIONAL_MS_RAC:
4804 {
4805 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Additional_MS_Rad_Access_Cap_t), vector, readIndex, &data->u.Additional_MS_Rad_Access_Cap);
4806 break;
4807 }
4808 case MT_PACKET_CELL_CHANGE_NOTIFICATION:
4809 {
4810 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_Cell_Change_Notification_t), vector, readIndex, &data->u.Packet_Cell_Change_Notification);
4811 break;
4812 }
4813 case MT_PACKET_SI_STATUS:
4814 {
4815 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_SI_Status_t), vector, readIndex, &data->u.Packet_SI_Status);
4816 break;
4817 }
4818 default:
4819 /*ret = -1;*/
4820 break;
4821 }
4822}
4823
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04004824void decode_gsm_rlcmac_downlink(bitvec * vector, RlcMacDownlink_t * data)
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004825{
4826 csnStream_t ar;
4827 /* See RLC/MAC downlink control block structure in TS 44.060 / 10.3.1 */
4828 gint bit_offset = 0;
4829 gint bit_length;
Ivan Kluchnikov9b06ff02012-06-15 10:13:30 +04004830 unsigned readIndex = 0;
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04004831 data->PAYLOAD_TYPE = bitvec_read_field(vector, readIndex, 2);
4832 data->RRBP = bitvec_read_field(vector, readIndex, 2);
4833 data->SP = bitvec_read_field(vector, readIndex, 1);
4834 data->USF = bitvec_read_field(vector, readIndex, 3);
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004835
4836 if (data->PAYLOAD_TYPE == PAYLOAD_TYPE_DATA)
4837 {
Ivan Kluchnikova9f1ff22012-05-24 22:25:06 +04004838 LOGPC(DRLCMACDATA, LOGL_NOTICE, "Payload Type: DATA (0), not implemented");
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004839 return;
4840 }
4841 else if (data->PAYLOAD_TYPE == PAYLOAD_TYPE_RESERVED)
4842 {
Ivan Kluchnikova9f1ff22012-05-24 22:25:06 +04004843 LOGPC(DRLCMACDATA, LOGL_NOTICE, "Payload Type: RESERVED (3)");
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004844 return;
4845 }
4846 /* We can decode the message */
4847 else
4848 {
4849 /* First print the message type and create a tree item */
4850 bit_offset = 8;
4851 if (data->PAYLOAD_TYPE == PAYLOAD_TYPE_CTRL_OPT_OCTET)
4852 {
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04004853 data->RBSN = bitvec_read_field(vector, readIndex, 1);
4854 data->RTI = bitvec_read_field(vector, readIndex, 5);
4855 data->FS = bitvec_read_field(vector, readIndex, 1);
4856 data->AC = bitvec_read_field(vector, readIndex, 1);
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004857 bit_offset += 8;
4858 if (data->AC == 1)
4859 {
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04004860 data->PR = bitvec_read_field(vector, readIndex, 2);
4861 data->TFI = bitvec_read_field(vector, readIndex, 5);
4862 data->D = bitvec_read_field(vector, readIndex, 1);
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004863 bit_offset += 8;
4864 }
4865 if ((data->RBSN == 1) && (data->FS == 0))
4866 {
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04004867 data->RBSNe = bitvec_read_field(vector, readIndex, 3);
4868 data->FSe = bitvec_read_field(vector, readIndex, 1);
4869 data->spare = bitvec_read_field(vector, readIndex, 4);
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004870 bit_offset += 8;
4871 }
4872 }
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04004873 data->u.MESSAGE_TYPE = bitvec_read_field(vector, readIndex, 6);
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004874 }
4875
4876 /* Initialize the contexts */
4877 bit_length = 23*8 - bit_offset;
4878 data->NrOfBits = bit_length;
4879 readIndex = bit_offset;
4880
4881 csnStreamInit(&ar, bit_offset, bit_length);
4882
4883 switch (data->u.MESSAGE_TYPE)
4884 {
4885 case MT_PACKET_ACCESS_REJECT:
4886 {
4887 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_Access_Reject_t), vector, readIndex, &data->u.Packet_Access_Reject);
4888 break;
4889 }
4890 case MT_PACKET_CELL_CHANGE_ORDER:
4891 {
4892 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_Cell_Change_Order_t), vector, readIndex, &data->u.Packet_Cell_Change_Order);
4893 break;
4894 }
4895 case MT_PACKET_CELL_CHANGE_CONTINUE:
4896 {
4897 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_Cell_Change_Continue_t), vector, readIndex, &data->u.Packet_Cell_Change_Continue);
4898 break;
4899 }
4900 case MT_PACKET_DOWNLINK_ASSIGNMENT:
4901 {
4902 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_Downlink_Assignment_t), vector, readIndex, &data->u.Packet_Downlink_Assignment);
4903 break;
4904 }
4905 case MT_PACKET_MEASUREMENT_ORDER:
4906 {
4907 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_Measurement_Order_t), vector, readIndex, &data->u.Packet_Measurement_Order);
4908 break;
4909 }
4910 case MT_PACKET_NEIGHBOUR_CELL_DATA:
4911 {
4912 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_Neighbour_Cell_Data_t), vector, readIndex, &data->u.Packet_Neighbour_Cell_Data);
4913 break;
4914 }
4915 case MT_PACKET_SERVING_CELL_DATA:
4916 {
4917 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_Serving_Cell_Data_t), vector, readIndex, &data->u.Packet_Serving_Cell_Data);
4918 break;
4919 }
4920 case MT_PACKET_PAGING_REQUEST:
4921 {
4922 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_Paging_Request_t), vector, readIndex, &data->u.Packet_Paging_Request);
4923 break;
4924 }
4925 case MT_PACKET_PDCH_RELEASE:
4926 {
4927 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_PDCH_Release_t), vector, readIndex, &data->u.Packet_PDCH_Release);
4928 break;
4929 }
4930 case MT_PACKET_POLLING_REQ:
4931 {
4932 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_Polling_Request_t), vector, readIndex, &data->u.Packet_Polling_Request);
4933 break;
4934 }
4935 case MT_PACKET_POWER_CONTROL_TIMING_ADVANCE:
4936 {
4937 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_Power_Control_Timing_Advance_t), vector, readIndex, &data->u.Packet_Power_Control_Timing_Advance);
4938 break;
4939 }
4940 case MT_PACKET_PRACH_PARAMETERS:
4941 {
4942 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_PRACH_Parameters_t), vector, readIndex, &data->u.Packet_PRACH_Parameters);
4943 break;
4944 }
4945 case MT_PACKET_QUEUEING_NOTIFICATION:
4946 {
4947 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_Queueing_Notification_t), vector, readIndex, &data->u.Packet_Queueing_Notification);
4948 break;
4949 }
4950 case MT_PACKET_TIMESLOT_RECONFIGURE:
4951 {
4952 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_Timeslot_Reconfigure_t), vector, readIndex, &data->u.Packet_Timeslot_Reconfigure);
4953 break;
4954 }
4955 case MT_PACKET_TBF_RELEASE:
4956 {
4957 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_TBF_Release_t), vector, readIndex, &data->u.Packet_TBF_Release);
4958 break;
4959 }
4960 case MT_PACKET_UPLINK_ACK_NACK:
4961 {
4962 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_Uplink_Ack_Nack_t), vector, readIndex, &data->u.Packet_Uplink_Ack_Nack);
4963 break;
4964 }
4965 case MT_PACKET_UPLINK_ASSIGNMENT:
4966 {
4967 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_Uplink_Assignment_t), vector, readIndex, &data->u.Packet_Uplink_Assignment);
4968 break;
4969 }
4970 case MT_PACKET_HANDOVER_COMMAND:
4971 {
4972 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_Handover_Command_t), vector, readIndex, &data->u.Packet_Handover_Command);
4973 break;
4974 }
4975 case MT_PACKET_PHYSICAL_INFORMATION:
4976 {
4977 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_PhysicalInformation_t), vector, readIndex, &data->u.Packet_Handover_Command);
4978 break;
4979 }
4980 case MT_PACKET_DOWNLINK_DUMMY_CONTROL_BLOCK:
4981 {
4982 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(Packet_Downlink_Dummy_Control_Block_t), vector, readIndex, &data->u.Packet_Downlink_Dummy_Control_Block);
4983 break;
4984 }
4985 case MT_PACKET_SYSTEM_INFO_1:
4986 {
4987 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(PSI1_t), vector, readIndex, &data->u.PSI1);
4988 break;
4989 }
4990 case MT_PACKET_SYSTEM_INFO_2:
4991 {
4992 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(PSI2_t), vector, readIndex, &data->u.PSI2);
4993 break;
4994 }
4995 case MT_PACKET_SYSTEM_INFO_3:
4996 {
4997 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(PSI3_t), vector, readIndex, &data->u.PSI3);
4998 break;
4999 }
5000 case MT_PACKET_SYSTEM_INFO_5:
5001 {
5002 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(PSI5_t), vector, readIndex, &data->u.PSI5);
5003 break;
5004 }
5005 case MT_PACKET_SYSTEM_INFO_13:
5006 {
5007 /*ret =*/ csnStreamDecoder(&ar, CSNDESCR(PSI13_t), vector, readIndex, &data->u.PSI13);
5008 break;
5009 }
5010 default:
5011 /*ret = -1;*/
5012 break;
5013 }
5014}
5015
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04005016void encode_gsm_rlcmac_uplink(bitvec * vector, RlcMacUplink_t * data)
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03005017{
5018 csnStream_t ar;
Ivan Kluchnikov9b06ff02012-06-15 10:13:30 +04005019 unsigned writeIndex = 0;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03005020 data->NrOfBits = (23 - 1) * 8;
5021 csnStreamInit(&ar, 0, data->NrOfBits);
5022 writeIndex = 0;
5023 switch (data->u.MESSAGE_TYPE)
5024 {
5025 case MT_PACKET_CELL_CHANGE_FAILURE:
5026 {
5027 /*
5028 * data is the pointer to the unpack struct that hold the unpack value
5029 * CSNDESCR is an array that holds the different element types
5030 * ar is the csn context holding the bitcount, offset and output
5031 */
5032 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_Cell_Change_Failure_t), vector, writeIndex, &data->u.Packet_Cell_Change_Failure);
5033 break;
5034 }
5035 case MT_PACKET_CONTROL_ACK:
5036 {
5037 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_Control_Acknowledgement_t), vector, writeIndex, &data->u.Packet_Control_Acknowledgement);
5038 break;
5039 }
5040 case MT_PACKET_DOWNLINK_ACK_NACK:
5041 {
5042 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_Downlink_Ack_Nack_t), vector, writeIndex, &data->u.Packet_Downlink_Ack_Nack);
5043 break;
5044 }
5045 case MT_PACKET_UPLINK_DUMMY_CONTROL_BLOCK:
5046 {
5047 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_Uplink_Dummy_Control_Block_t), vector, writeIndex, &data->u.Packet_Uplink_Dummy_Control_Block);
5048 break;
5049 }
5050 case MT_PACKET_MEASUREMENT_REPORT:
5051 {
5052 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_Measurement_Report_t), vector, writeIndex, &data->u.Packet_Measurement_Report);
5053 break;
5054 }
5055 case MT_PACKET_RESOURCE_REQUEST:
5056 {
5057 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_Resource_Request_t), vector, writeIndex, &data->u.Packet_Resource_Request);
5058 break;
5059 }
5060
5061 case MT_PACKET_MOBILE_TBF_STATUS:
5062 {
5063 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_Mobile_TBF_Status_t), vector, writeIndex, &data->u.Packet_Mobile_TBF_Status);
5064 break;
5065 }
5066 case MT_PACKET_PSI_STATUS:
5067 {
5068 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_PSI_Status_t), vector, writeIndex, &data->u.Packet_PSI_Status);
5069 break;
5070 }
5071 case MT_EGPRS_PACKET_DOWNLINK_ACK_NACK:
5072 {
5073 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(EGPRS_PD_AckNack_t), vector, writeIndex, &data->u.Egprs_Packet_Downlink_Ack_Nack);
5074 break;
5075 }
5076 case MT_PACKET_PAUSE:
5077 {
5078 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_Pause_t), vector, writeIndex, &data->u.Packet_Pause);
5079 break;
5080 }
5081 case MT_PACKET_ENHANCED_MEASUREMENT_REPORT:
5082 {
5083 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_Enh_Measurement_Report_t), vector, writeIndex, &data->u.Packet_Enh_Measurement_Report);
5084 break;
5085 }
5086 case MT_ADDITIONAL_MS_RAC:
5087 {
5088 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Additional_MS_Rad_Access_Cap_t), vector, writeIndex, &data->u.Additional_MS_Rad_Access_Cap);
5089 break;
5090 }
5091 case MT_PACKET_CELL_CHANGE_NOTIFICATION:
5092 {
5093 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_Cell_Change_Notification_t), vector, writeIndex, &data->u.Packet_Cell_Change_Notification);
5094 break;
5095 }
5096 case MT_PACKET_SI_STATUS:
5097 {
5098 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_SI_Status_t), vector, writeIndex, &data->u.Packet_SI_Status);
5099 break;
5100 }
5101 default:
5102 /*ret = -1;*/
5103 break;
5104 }
5105}
5106
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04005107void encode_gsm_rlcmac_downlink(bitvec * vector, RlcMacDownlink_t * data)
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03005108{
5109 csnStream_t ar;
5110
5111 /* See RLC/MAC downlink control block structure in TS 44.060 / 10.3.1 */
5112 gint bit_offset = 0;
5113 gint bit_length;
Ivan Kluchnikov9b06ff02012-06-15 10:13:30 +04005114 unsigned writeIndex = 0;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03005115
5116 if (data->PAYLOAD_TYPE == PAYLOAD_TYPE_DATA)
5117 {
Ivan Kluchnikova9f1ff22012-05-24 22:25:06 +04005118 LOGPC(DRLCMACDATA, LOGL_NOTICE, "Payload Type: DATA (0), not implemented");
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03005119 return;
5120 }
5121 else if (data->PAYLOAD_TYPE == PAYLOAD_TYPE_RESERVED)
5122 {
Ivan Kluchnikova9f1ff22012-05-24 22:25:06 +04005123 LOGPC(DRLCMACDATA, LOGL_NOTICE, "Payload Type: RESERVED (3)");
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03005124 return;
5125 }
5126 /* We can decode the message */
5127 else
5128 {
5129 /* First print the message type and create a tree item */
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04005130 bitvec_write_field(vector, writeIndex, data->PAYLOAD_TYPE, 2);
5131 bitvec_write_field(vector, writeIndex, data->RRBP, 2);
5132 bitvec_write_field(vector, writeIndex, data->SP, 1);
5133 bitvec_write_field(vector, writeIndex, data->USF, 3);
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03005134 bit_offset = 8;
5135 if (data->PAYLOAD_TYPE == PAYLOAD_TYPE_CTRL_OPT_OCTET)
5136 {
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04005137 bitvec_write_field(vector, writeIndex, data->RBSN, 1);
5138 bitvec_write_field(vector, writeIndex, data->RTI, 5);
5139 bitvec_write_field(vector, writeIndex, data->FS, 1);
5140 bitvec_write_field(vector, writeIndex, data->AC, 1);
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03005141 bit_offset += 8;
5142 if (data->AC == 1)
5143 {
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04005144 bitvec_write_field(vector, writeIndex, data->PR, 2);
5145 bitvec_write_field(vector, writeIndex, data->TFI, 5);
5146 bitvec_write_field(vector, writeIndex, data->D, 1);
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03005147 bit_offset += 8;
5148 }
5149 if ((data->RBSN == 1) && (data->FS == 0))
5150 {
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04005151 bitvec_write_field(vector, writeIndex, data->RBSNe, 3);
5152 bitvec_write_field(vector, writeIndex, data->FSe, 1);
5153 bitvec_write_field(vector, writeIndex, data->spare, 4);
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03005154 bit_offset += 8;
5155 }
5156 }
5157 }
5158
5159 /* Initialize the contexts */
5160 bit_length = 23*8 - bit_offset;
5161 data->NrOfBits = bit_length;
5162
5163 csnStreamInit(&ar, bit_offset, bit_length);
5164
5165 switch (data->u.MESSAGE_TYPE)
5166 {
5167 case MT_PACKET_ACCESS_REJECT:
5168 {
5169 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_Access_Reject_t), vector, writeIndex, &data->u.Packet_Access_Reject);
5170 break;
5171 }
5172 case MT_PACKET_CELL_CHANGE_ORDER:
5173 {
5174 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_Cell_Change_Order_t), vector, writeIndex, &data->u.Packet_Cell_Change_Order);
5175 break;
5176 }
5177 case MT_PACKET_CELL_CHANGE_CONTINUE:
5178 {
5179 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_Cell_Change_Continue_t), vector, writeIndex, &data->u.Packet_Cell_Change_Continue);
5180 break;
5181 }
5182 case MT_PACKET_DOWNLINK_ASSIGNMENT:
5183 {
5184 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_Downlink_Assignment_t), vector, writeIndex, &data->u.Packet_Downlink_Assignment);
5185 break;
5186 }
5187 case MT_PACKET_MEASUREMENT_ORDER:
5188 {
5189 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_Measurement_Order_t), vector, writeIndex, &data->u.Packet_Measurement_Order);
5190 break;
5191 }
5192 case MT_PACKET_NEIGHBOUR_CELL_DATA:
5193 {
5194 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_Neighbour_Cell_Data_t), vector, writeIndex, &data->u.Packet_Neighbour_Cell_Data);
5195 break;
5196 }
5197 case MT_PACKET_SERVING_CELL_DATA:
5198 {
5199 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_Serving_Cell_Data_t), vector, writeIndex, &data->u.Packet_Serving_Cell_Data);
5200 break;
5201 }
5202 case MT_PACKET_PAGING_REQUEST:
5203 {
5204 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_Paging_Request_t), vector, writeIndex, &data->u.Packet_Paging_Request);
5205 break;
5206 }
5207 case MT_PACKET_PDCH_RELEASE:
5208 {
5209 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_PDCH_Release_t), vector, writeIndex, &data->u.Packet_PDCH_Release);
5210 break;
5211 }
5212 case MT_PACKET_POLLING_REQ:
5213 {
5214 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_Polling_Request_t), vector, writeIndex, &data->u.Packet_Polling_Request);
5215 break;
5216 }
5217 case MT_PACKET_POWER_CONTROL_TIMING_ADVANCE:
5218 {
5219 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_Power_Control_Timing_Advance_t), vector, writeIndex, &data->u.Packet_Power_Control_Timing_Advance);
5220 break;
5221 }
5222 case MT_PACKET_PRACH_PARAMETERS:
5223 {
5224 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_PRACH_Parameters_t), vector, writeIndex, &data->u.Packet_PRACH_Parameters);
5225 break;
5226 }
5227 case MT_PACKET_QUEUEING_NOTIFICATION:
5228 {
5229 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_Queueing_Notification_t), vector, writeIndex, &data->u.Packet_Queueing_Notification);
5230 break;
5231 }
5232 case MT_PACKET_TIMESLOT_RECONFIGURE:
5233 {
5234 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_Timeslot_Reconfigure_t), vector, writeIndex, &data->u.Packet_Timeslot_Reconfigure);
5235 break;
5236 }
5237 case MT_PACKET_TBF_RELEASE:
5238 {
5239 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_TBF_Release_t), vector, writeIndex, &data->u.Packet_TBF_Release);
5240 break;
5241 }
5242 case MT_PACKET_UPLINK_ACK_NACK:
5243 {
5244 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_Uplink_Ack_Nack_t), vector, writeIndex, &data->u.Packet_Uplink_Ack_Nack);
5245 break;
5246 }
5247 case MT_PACKET_UPLINK_ASSIGNMENT:
5248 {
5249 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_Uplink_Assignment_t), vector, writeIndex, &data->u.Packet_Uplink_Assignment);
5250 break;
5251 }
5252 case MT_PACKET_HANDOVER_COMMAND:
5253 {
5254 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_Handover_Command_t), vector, writeIndex, &data->u.Packet_Handover_Command);
5255 break;
5256 }
5257 case MT_PACKET_PHYSICAL_INFORMATION:
5258 {
5259 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_PhysicalInformation_t), vector, writeIndex, &data->u.Packet_Handover_Command);
5260 break;
5261 }
5262 case MT_PACKET_DOWNLINK_DUMMY_CONTROL_BLOCK:
5263 {
5264 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(Packet_Downlink_Dummy_Control_Block_t), vector, writeIndex, &data->u.Packet_Downlink_Dummy_Control_Block);
5265 break;
5266 }
5267 case MT_PACKET_SYSTEM_INFO_1:
5268 {
5269 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(PSI1_t), vector, writeIndex, &data->u.PSI1);
5270 break;
5271 }
5272 case MT_PACKET_SYSTEM_INFO_2:
5273 {
5274 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(PSI2_t), vector, writeIndex, &data->u.PSI2);
5275 break;
5276 }
5277 case MT_PACKET_SYSTEM_INFO_3:
5278 {
5279 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(PSI3_t), vector, writeIndex, &data->u.PSI3);
5280 break;
5281 }
5282 case MT_PACKET_SYSTEM_INFO_5:
5283 {
5284 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(PSI5_t), vector, writeIndex, &data->u.PSI5);
5285 break;
5286 }
5287 case MT_PACKET_SYSTEM_INFO_13:
5288 {
5289 /*ret =*/ csnStreamEncoder(&ar, CSNDESCR(PSI13_t), vector, writeIndex, &data->u.PSI13);
5290 break;
5291 }
5292 default:
5293 /*ret = -1;*/
5294 break;
5295 }
5296}
Ivan Kluchnikovd5f01332012-02-05 01:41:25 +04005297
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04005298void decode_gsm_rlcmac_uplink_data(bitvec * vector, RlcMacUplinkDataBlock_t * data)
Ivan Kluchnikovd5f01332012-02-05 01:41:25 +04005299{
Ivan Kluchnikov9b06ff02012-06-15 10:13:30 +04005300 unsigned readIndex = 0;
Ivan Kluchnikovd5f01332012-02-05 01:41:25 +04005301 //unsigned dataLen = 0;
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04005302 guint8 payload_type = bitvec_read_field(vector, readIndex, 2);
Ivan Kluchnikovd5f01332012-02-05 01:41:25 +04005303 if (payload_type == PAYLOAD_TYPE_DATA)
5304 {
5305 readIndex = 0;
5306 // MAC header
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04005307 data->PAYLOAD_TYPE = bitvec_read_field(vector, readIndex, 2);
5308 data->CV = bitvec_read_field(vector, readIndex, 4);
5309 data->SI = bitvec_read_field(vector, readIndex, 1);
5310 data->R = bitvec_read_field(vector, readIndex, 1);
Ivan Kluchnikova9f1ff22012-05-24 22:25:06 +04005311 LOGPC(DRLCMACDATA, LOGL_NOTICE, "PAYLOAD_TYPE = %u ", (unsigned)(data->PAYLOAD_TYPE));
5312 LOGPC(DRLCMACDATA, LOGL_NOTICE, "CV = %u ", (unsigned)(data->CV));
5313 LOGPC(DRLCMACDATA, LOGL_NOTICE, "SI = %u ", (unsigned)(data->SI));
5314 LOGPC(DRLCMACDATA, LOGL_NOTICE, "R = %u ", (unsigned)(data->R));
Ivan Kluchnikovd5f01332012-02-05 01:41:25 +04005315 // Octet 1
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04005316 data->spare = bitvec_read_field(vector, readIndex, 1);
5317 data->PI = bitvec_read_field(vector, readIndex, 1);
5318 data->TFI = bitvec_read_field(vector, readIndex, 5);
5319 data->TI = bitvec_read_field(vector, readIndex, 1);
Ivan Kluchnikova9f1ff22012-05-24 22:25:06 +04005320 LOGPC(DRLCMACDATA, LOGL_NOTICE, "spare = %u ", (unsigned)(data->spare));
5321 LOGPC(DRLCMACDATA, LOGL_NOTICE, "PI = %u ", (unsigned)(data->PI));
5322 LOGPC(DRLCMACDATA, LOGL_NOTICE, "TFI = %u ", (unsigned)(data->TFI));
5323 LOGPC(DRLCMACDATA, LOGL_NOTICE, "TI = %u ", (unsigned)(data->TI));
Ivan Kluchnikovd5f01332012-02-05 01:41:25 +04005324
5325 // Octet 2
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04005326 data->BSN = bitvec_read_field(vector, readIndex, 7);
5327 data->E_1 = bitvec_read_field(vector, readIndex, 1);
Ivan Kluchnikova9f1ff22012-05-24 22:25:06 +04005328 LOGPC(DRLCMACDATA, LOGL_NOTICE, "BSN = %u ", (unsigned)(data->BSN));
5329 LOGPC(DRLCMACDATA, LOGL_NOTICE, "E_1 = %u ", (unsigned)(data->E_1));
5330
Ivan Kluchnikovd5f01332012-02-05 01:41:25 +04005331
5332 if(data->E_1 == 0) // Extension octet follows immediately
5333 {
5334 // Octet 3 (optional)
5335 unsigned i = 0;
5336 do
5337 {
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04005338 data->LENGTH_INDICATOR[i] = bitvec_read_field(vector, readIndex, 6);
5339 data->M[i] = bitvec_read_field(vector, readIndex, 1);
5340 data->E[i] = bitvec_read_field(vector, readIndex, 1);
Ivan Kluchnikova9f1ff22012-05-24 22:25:06 +04005341 LOGPC(DRLCMACDATA, LOGL_NOTICE, "LENGTH_INDICATOR[%u] = %u ", i, (unsigned)(data->LENGTH_INDICATOR[i]));
5342 LOGPC(DRLCMACDATA, LOGL_NOTICE, "M[%u] = %u ", i, (unsigned)(data->M[i]));
5343 LOGPC(DRLCMACDATA, LOGL_NOTICE, "E[%u] = %u ", i, (unsigned)(data->E[i]));
Ivan Kluchnikovd5f01332012-02-05 01:41:25 +04005344 i++;
5345 } while((data->M[i-1] == 1)&&(data->E[i-1] == 0));
5346 }
5347 if(data->TI == 1) // TLLI field is present
5348 {
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04005349 data->TLLI = bitvec_read_field(vector, readIndex, 32);
Ivan Kluchnikova9f1ff22012-05-24 22:25:06 +04005350 LOGPC(DRLCMACDATA, LOGL_NOTICE, "TLLI = %08x ", data->TLLI);
Ivan Kluchnikovd5f01332012-02-05 01:41:25 +04005351 if (data->PI == 1) // PFI is present if TI field indicates presence of TLLI
5352 {
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04005353 data->PFI = bitvec_read_field(vector, readIndex, 7);
5354 data->E_2 = bitvec_read_field(vector, readIndex, 1);
Ivan Kluchnikova9f1ff22012-05-24 22:25:06 +04005355 LOGPC(DRLCMACDATA, LOGL_NOTICE, "PFI = %u ", (unsigned)(data->PFI));
5356 LOGPC(DRLCMACDATA, LOGL_NOTICE, "E_2 = %u ", (unsigned)(data->E_2));
Ivan Kluchnikovd5f01332012-02-05 01:41:25 +04005357 }
5358 }
5359 unsigned dataLen = 23 - readIndex/8;
Ivan Kluchnikova9f1ff22012-05-24 22:25:06 +04005360 LOGPC(DRLCMACDATA, LOGL_NOTICE, "DATA[%u] = ", dataLen);
Ivan Kluchnikovd5f01332012-02-05 01:41:25 +04005361 for (unsigned i = 0; i < dataLen; i++)
5362 {
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04005363 data->RLC_DATA[i] = bitvec_read_field(vector, readIndex, 8);
Ivan Kluchnikova9f1ff22012-05-24 22:25:06 +04005364 LOGPC(DRLCMACDATA, LOGL_NOTICE, "%02x", (unsigned)(data->RLC_DATA[i]));
Ivan Kluchnikovd5f01332012-02-05 01:41:25 +04005365 }
Ivan Kluchnikova9f1ff22012-05-24 22:25:06 +04005366 LOGPC(DRLCMACDATA, LOGL_NOTICE, "\n");
Ivan Kluchnikovd5f01332012-02-05 01:41:25 +04005367 }
5368 else
5369 {
Ivan Kluchnikova9f1ff22012-05-24 22:25:06 +04005370 LOGPC(DRLCMACDATA, LOGL_NOTICE, "Payload Type: RESERVED (3)");
Ivan Kluchnikovd5f01332012-02-05 01:41:25 +04005371 return;
5372 }
5373}
Ivan Kluchnikov92ac6372012-02-20 15:04:25 +04005374
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04005375void encode_gsm_rlcmac_downlink_data(bitvec * vector, RlcMacDownlinkDataBlock_t * data)
Ivan Kluchnikov92ac6372012-02-20 15:04:25 +04005376{
Ivan Kluchnikov9b06ff02012-06-15 10:13:30 +04005377 unsigned writeIndex = 0;
Ivan Kluchnikov92ac6372012-02-20 15:04:25 +04005378
5379 if (data->PAYLOAD_TYPE == PAYLOAD_TYPE_DATA)
5380 {
5381 // MAC header
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04005382 bitvec_write_field(vector, writeIndex, data->PAYLOAD_TYPE, 2);
5383 bitvec_write_field(vector, writeIndex, data->RRBP, 2);
5384 bitvec_write_field(vector, writeIndex, data->SP, 1);
5385 bitvec_write_field(vector, writeIndex, data->USF, 3);
Ivan Kluchnikova9f1ff22012-05-24 22:25:06 +04005386 LOGPC(DRLCMACDATA, LOGL_NOTICE, "PAYLOAD_TYPE = %u ", (unsigned)(data->PAYLOAD_TYPE));
5387 LOGPC(DRLCMACDATA, LOGL_NOTICE, "RRBP = %u ", (unsigned)(data->RRBP));
5388 LOGPC(DRLCMACDATA, LOGL_NOTICE, "SP = %u ", (unsigned)(data->SP));
5389 LOGPC(DRLCMACDATA, LOGL_NOTICE, "USF = %u ", (unsigned)(data->USF));
5390
Ivan Kluchnikov92ac6372012-02-20 15:04:25 +04005391 // Octet 1
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04005392 bitvec_write_field(vector, writeIndex, data->PR, 2);
5393 bitvec_write_field(vector, writeIndex, data->TFI, 5);
5394 bitvec_write_field(vector, writeIndex, data->FBI, 1);
Ivan Kluchnikova9f1ff22012-05-24 22:25:06 +04005395 LOGPC(DRLCMACDATA, LOGL_NOTICE, "PR = %u ", (unsigned)(data->PR));
5396 LOGPC(DRLCMACDATA, LOGL_NOTICE, "TFI = %u ", (unsigned)(data->TFI));
5397 LOGPC(DRLCMACDATA, LOGL_NOTICE, "FBI = %u ", (unsigned)(data->FBI));
5398
Ivan Kluchnikov92ac6372012-02-20 15:04:25 +04005399 // Octet 2
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04005400 bitvec_write_field(vector, writeIndex, data->BSN, 7);
5401 bitvec_write_field(vector, writeIndex, data->E_1, 1);
Ivan Kluchnikova9f1ff22012-05-24 22:25:06 +04005402 LOGPC(DRLCMACDATA, LOGL_NOTICE, "BSN = %u ", (unsigned)(data->BSN));
5403 LOGPC(DRLCMACDATA, LOGL_NOTICE, "E_1 = %u ", (unsigned)(data->E_1));
5404
Ivan Kluchnikov92ac6372012-02-20 15:04:25 +04005405 // Octet 3 (optional)
5406 if(data->E_1 == 0)
5407 {
5408 unsigned i = 0;
5409 do
5410 {
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04005411 bitvec_write_field(vector, writeIndex, data->LENGTH_INDICATOR[i], 6);
5412 bitvec_write_field(vector, writeIndex, data->M[i], 1);
5413 bitvec_write_field(vector, writeIndex, data->E[i], 1);
Ivan Kluchnikova9f1ff22012-05-24 22:25:06 +04005414 LOGPC(DRLCMACDATA, LOGL_NOTICE, "LENGTH_INDICATOR[%u] = %u ", i, (unsigned)(data->LENGTH_INDICATOR[i]));
5415 LOGPC(DRLCMACDATA, LOGL_NOTICE, "M[%u] = %u ", i, (unsigned)(data->M[i]));
5416 LOGPC(DRLCMACDATA, LOGL_NOTICE, "E[%u] = %u ", i, (unsigned)(data->E[i]));
Ivan Kluchnikov92ac6372012-02-20 15:04:25 +04005417 i++;
5418 }
5419 while ((data->M[i-1] == 1) && (data->E[i-1] == 0));
5420 }
5421 unsigned dataNumOctets = 23 - writeIndex/8;
Ivan Kluchnikova9f1ff22012-05-24 22:25:06 +04005422 LOGPC(DRLCMACDATA, LOGL_NOTICE, "DATA[%u] = ", dataNumOctets);
Ivan Kluchnikov92ac6372012-02-20 15:04:25 +04005423 for (unsigned i = 0; i < dataNumOctets; i++)
5424 {
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04005425 bitvec_write_field(vector, writeIndex, data->RLC_DATA[i], 8);
Ivan Kluchnikova9f1ff22012-05-24 22:25:06 +04005426 LOGPC(DRLCMACDATA, LOGL_NOTICE, "%02x", (unsigned)(data->RLC_DATA[i]));
Ivan Kluchnikov92ac6372012-02-20 15:04:25 +04005427 }
Ivan Kluchnikova9f1ff22012-05-24 22:25:06 +04005428 LOGPC(DRLCMACDATA, LOGL_NOTICE, "\n");
Ivan Kluchnikov92ac6372012-02-20 15:04:25 +04005429 }
5430}