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