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