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