blob: d0bd9f6e8002dbbaa1e587e33692dd0ede911419 [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 Pedrol10ec5062020-03-25 14:32:30 +01001245
1246/* Maximum entries in one message, Enum above, applying restrictions from section
Pau Espin Pedrol7faa5da2020-03-21 00:13:33 +01001247 12.30 "MS Radio Access Capability 2": */
1248#define MAX_ACCESS_TECHNOLOGIES_COUNT 11
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03001249
1250typedef struct
1251{
1252 AccessTechnology_t Access_Technology_Type;
1253 guint8 GMSK_Power_class;
1254 guint8 Eight_PSK_Power_class;
1255} Additional_access_technologies_struct_t;
1256
1257typedef struct
1258{
1259 guint8 Count_additional_access_technologies;
1260 /* The value 0xf cannot be set for the first ATT, therefore we can only have
Pau Espin Pedrol7faa5da2020-03-21 00:13:33 +01001261 MAX_ACCESS_TECHNOLOGIES_COUNT-1 additional access technologies. */
1262 Additional_access_technologies_struct_t Additional_access_technologies[MAX_ACCESS_TECHNOLOGIES_COUNT-1];
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03001263} Additional_access_technologies_t;
1264
1265typedef struct
1266{
1267 guint8 IndexOfAccTech; /* Position in AccessTechnology_t */
1268 union
1269 {
1270 /* Long Form */
1271 Content_t Content;
1272 /* Short Form */
1273 Additional_access_technologies_t Additional_access_technologies;
1274 } u;
1275} MS_RA_capability_value_t;
1276
1277typedef struct
1278{
1279 guint8 Count_MS_RA_capability_value; /* Recursive */
Pau Espin Pedrol7faa5da2020-03-21 00:13:33 +01001280 MS_RA_capability_value_t MS_RA_capability_value[MAX_ACCESS_TECHNOLOGIES_COUNT];
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03001281} MS_Radio_Access_capability_t;
1282
1283
1284typedef struct
1285{
1286 guint8 ExistEDGE_RF_PwrCap1;
1287 guint8 EDGE_RF_PwrCap1;
1288 guint8 ExistEDGE_RF_PwrCap2;
1289 guint8 EDGE_RF_PwrCap2;
1290} EDGE_RF_Pwr_t;
1291
1292typedef struct
1293{
1294 guint8 A5_Bits;
1295 guint8 Arc2_Spare;
1296 guint8 Arc1;
1297} ARC_t;
1298
1299typedef struct
1300{
1301 guint8 Multiband;
1302 union
1303 {
1304 guint8 A5_Bits;
1305 ARC_t ARC;
1306 } u;
1307} Multiband_t;
1308
1309typedef struct /* MS classmark 3 R99 */
1310{
1311 guint8 Spare1;
1312 Multiband_t Multiband;
1313
1314 guint8 Exist_R_Support;
1315 guint8 R_GSM_Arc;
1316
1317 guint8 Exist_MultiSlotCapability;
1318 guint8 MultiSlotClass;
1319
1320 guint8 UCS2;
1321 guint8 ExtendedMeasurementCapability;
1322
1323 guint8 Exist_MS_MeasurementCapability;
1324 guint8 SMS_VALUE;
1325 guint8 SM_VALUE;
1326
1327 guint8 Exist_MS_PositioningMethodCapability;
1328 guint8 MS_PositioningMethod;
1329
1330 guint8 Exist_EDGE_MultiSlotCapability;
1331 guint8 EDGE_MultiSlotClass;
1332
1333 guint8 Exist_EDGE_Struct;
1334 guint8 ModulationCapability;
1335 EDGE_RF_Pwr_t EDGE_RF_PwrCaps;
1336
1337 guint8 Exist_GSM400_Info;
1338 guint8 GSM400_Bands;
1339 guint8 GSM400_Arc;
1340
1341 guint8 Exist_GSM850_Arc;
1342 guint8 GSM850_Arc;
1343
1344 guint8 Exist_PCS1900_Arc;
1345 guint8 PCS1900_Arc;
1346
1347 guint8 UMTS_FDD_Radio_Access_Technology_Capability;
1348 guint8 UMTS_384_TDD_Radio_Access_Technology_Capability;
1349 guint8 CDMA2000_Radio_Access_Technology_Capability;
1350
1351 guint8 Exist_DTM_GPRS_multislot_class;
1352 guint8 DTM_GPRS_multislot_class;
1353 guint8 Single_Slot_DTM;
1354 DTM_EGPRS_t DTM_EGPRS_Params;
1355
1356 /* -------- R4 additions */
1357 guint8 Exist_SingleBandSupport;
1358 guint8 GSM_Band;
1359
1360 guint8 Exist_GSM_700_Associated_Radio_Capability;
1361 guint8 GSM_700_Associated_Radio_Capability;
1362
1363 guint8 UMTS_128_TDD_Radio_Access_Technology_Capability;
1364 guint8 GERAN_Feature_Package_1;
1365
1366 guint8 Exist_Extended_DTM_multislot_class;
1367 guint8 Extended_DTM_GPRS_multislot_class;
1368 guint8 Extended_DTM_EGPRS_multislot_class;
1369
1370 /* -------- R5 additions */
1371 guint8 Exist_HighMultislotCapability;
1372 guint8 HighMultislotCapability;
1373
1374 guint8 Exist_GERAN_lu_ModeCapability;
1375 guint8 GERAN_lu_ModeCapability;
1376
1377 guint8 GERAN_FeaturePackage_2;
1378
1379 guint8 GMSK_MultislotPowerProfile;
1380 guint8 EightPSK_MultislotProfile;
1381
1382 /* -------- R6 additions */
1383 guint8 Exist_TGSM_400_Bands;
1384 guint8 TGSM_400_BandsSupported;
1385 guint8 TGSM_400_AssociatedRadioCapability;
1386
1387 guint8 Exist_TGSM_900_AssociatedRadioCapability;
1388 guint8 TGSM_900_AssociatedRadioCapability;
1389
1390 guint8 DownlinkAdvancedReceiverPerformance;
1391 guint8 DTM_EnhancementsCapability;
1392
1393 guint8 Exist_DTM_GPRS_HighMultislotClass;
1394 guint8 DTM_GPRS_HighMultislotClass;
1395 guint8 OffsetRequired;
1396 DTM_EGPRS_HighMultislotClass_t DTM_EGPRS_HighMultislotClass;
1397 guint8 RepeatedSACCH_Capability;
1398
1399 guint8 Spare2;
1400} MS_Class3_Unpacked_t;
1401
1402
1403/* < Packet Resource Request message content > */
1404typedef struct
1405{
1406 gboolean Exist;
1407 guint8 UnionType;
1408 union
1409 {
1410 guint8 MEAN_BEP_GMSK;
1411 guint8 MEAN_BEP_8PSK;
1412 } u;
1413} BEP_MeasurementReport_t;
1414
1415typedef struct
1416{
1417 gboolean Exist;
1418 guint8 I_LEVEL;
1419} InterferenceMeasurementReport_t;
1420
1421typedef struct
1422{
1423 gboolean Exist_BEP_MEASUREMENTS;
1424 BEP_MeasurementReport_t BEP_MEASUREMENTS[8];
1425
1426 gboolean Exist_INTERFERENCE_MEASUREMENTS;
1427 InterferenceMeasurementReport_t INTERFERENCE_MEASUREMENTS[8];
1428} EGPRS_TimeslotLinkQualityMeasurements_t;
1429
1430typedef struct
1431{
1432 gboolean Exist_MEAN_CV_BEP_GMSK;
1433 guint8 MEAN_BEP_GMSK;
1434 guint8 CV_BEP_GMSK;
1435
1436 gboolean Exist_MEAN_CV_BEP_8PSK;
1437 guint8 MEAN_BEP_8PSK;
1438 guint8 CV_BEP_8PSK;
1439} EGPRS_BEP_LinkQualityMeasurements_t;
1440
AndersBroman2d075be2020-01-28 19:01:50 +01001441typedef struct{
1442guint8 RB_ID;
1443guint8 RADIO_PRIORITY;
1444
1445gboolean Exist_RLC_BLOCK_COUNT;
1446guint8 RLC_BLOCK_COUNT;
1447
1448gboolean Exist_Iu_Mode_ChRequestDesk;
1449//IU_Mode_Channel_Request_Desk_t IU_Mode_Channel_Request_Desk1;
1450
1451} IU_Mode_Channel_Request_Desk_t;
1452
1453typedef struct{
1454 gboolean Exist_G_RNTI_Extension;
1455 guint8 G_RNTI_Extension;
1456 IU_Mode_Channel_Request_Desk_t IU_Mode_Channel_Request_Desk;
1457
1458} IU_Mode_Channel_Request_Desk_RNTI_t;
1459
1460typedef struct{
1461 guint8 PFI;
1462 guint8 RADIO_PRIORITY;
1463 guint8 RLC_Mode;
1464
1465 gboolean Exist_LCC_PDU;
1466 guint8 LCC_PDU;
1467
1468 gboolean Exist_Ext_Channel_Request_desc;
1469
1470} Ext_Channel_Request_desc_t;
1471
1472
1473typedef struct{
1474 gboolean Exist_GMSK_MEAN_BEP;
1475 guint8 GMSK_MEAN_BEP;
1476 guint8 GMSK_CV_BEP;
1477
1478 gboolean Exist_8PSK_MEAN_BEP;
1479 guint8 p8PSK_MEAN_BEP;
1480 guint8 p8PSK_CV_BEP;
1481
1482 gboolean Exist_QPSK_MEAN_BEP;
1483 guint8 QPSK_MEAN_BEP;
1484 guint8 QPSK_CV_BEP;
1485
1486 gboolean Exist_16QAM_NSR_MEAN_BEP;
1487 guint8 p16QAM_NSR_MEAN_BEP;
1488 guint8 p16QAM_NSR_CV_BEP;
1489
1490 gboolean Exist_32QAM_NSR_MEAN_BEP;
1491 guint8 p32QAM_NSR_MEAN_BEP;
1492 guint8 p32QAM_NSR_CV_BEP;
1493
1494 gboolean Exist_16QAM_HSR_MEAN_BEP;
1495 guint8 p16QAM_HSR_MEAN_BEP;
1496 guint8 p16QAM_HSR_CV_BEP;
1497
1498 gboolean Exist_32QAM_HSR_MEAN_BEP;
1499 guint8 p32QAM_HSR_MEAN_BEP;
1500 guint8 p32QAM_HSR_CV_BEP;
1501
1502} EGPRS_BEP_LinkQualityMeasurements_type2_t;
1503
1504typedef struct
1505{
1506 gboolean Exist;
1507 guint8 REPORTED_MODULATION;
1508 guint8 MEAN_BEP_TN;
1509
1510} BEP_MeasurementReport_type2_t;
1511
1512typedef struct
1513{
1514 gboolean Exist;
1515 guint8 I_LEVEL;
1516} InterferenceMeasurementReport_type2_t;
1517
1518typedef struct
1519{
1520 gboolean Exist_BEP_MEASUREMENTS;
1521 BEP_MeasurementReport_type2_t BEP_MEASUREMENTS[8];
1522
1523 gboolean Exist_INTERFERENCE_MEASUREMENTS;
1524 InterferenceMeasurementReport_type2_t INTERFERENCE_MEASUREMENTS[8];
1525
1526} EGPRS_TimeslotLinkQualityMeasurements_type2_t;
1527
1528
1529typedef struct
1530{
1531 gboolean Exist_Downlink_eTFI;
1532 guint8 DOWNLINK_ETFI;
1533
1534} PRR_AdditionsR12_t;
1535
1536typedef struct
1537{
1538 guint8 LOW_ACCESS_PRIORITY_SIGNALLING;
1539
1540 gboolean Exist_AdditionsR12;
1541 PRR_AdditionsR12_t AdditionsR12;
1542
1543} PRR_AdditionsR10_t;
1544
1545typedef struct
1546{
1547 guint8 EARLY_TBF_ESTABLISHMENT;
1548
1549 gboolean Exist_EGPRS_BEP_LinkQualityMeasurements_type2;
1550 EGPRS_BEP_LinkQualityMeasurements_type2_t EGPRS_BEP_LinkQualityMeasurements_type2;
1551
1552 gboolean Exist_EGPRS_TimeslotLinkQualityMeasurements_type2;
1553 EGPRS_TimeslotLinkQualityMeasurements_type2_t EGPRS_TimeslotLinkQualityMeasurements_type2;
1554
1555 gboolean Exist_AdditionsR10;
1556 PRR_AdditionsR10_t AdditionsR10;
1557
1558} PRR_AdditionsR7_t;
1559
1560typedef struct
1561{
1562 gboolean Exist_Ext_Channel_Request_desc;
1563 Ext_Channel_Request_desc_t Ext_Channel_Request_desc;
1564
1565 guint8 Exist_AdditionsR7;
1566 PRR_AdditionsR7_t AdditionsR7;
1567
1568} PRR_AdditionsR6_t;
1569
1570typedef struct
1571{
1572 guint8 Exist_Iu_Mode_ChRequestDesk;
1573 IU_Mode_Channel_Request_Desk_RNTI_t IU_Mode_Channel_Request_Desk_RNTI;
1574
1575 guint8 Exist_HFN_LSB;
1576 guint8 HFN_LSb;
1577
1578 guint8 Exist_AdditionsR6;
1579 PRR_AdditionsR6_t AdditionsR6;
1580
1581} PRR_AdditionsR5_t;
1582
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03001583typedef struct
1584{
1585 gboolean Exist_EGPRS_BEP_LinkQualityMeasurements;
1586 EGPRS_BEP_LinkQualityMeasurements_t EGPRS_BEP_LinkQualityMeasurements;
1587
1588 gboolean Exist_EGPRS_TimeslotLinkQualityMeasurements;
1589 EGPRS_TimeslotLinkQualityMeasurements_t EGPRS_TimeslotLinkQualityMeasurements;
1590
1591 gboolean Exist_PFI;
1592 guint8 PFI;
1593
1594 guint8 MS_RAC_AdditionalInformationAvailable;
1595 guint8 RetransmissionOfPRR;
AndersBroman2d075be2020-01-28 19:01:50 +01001596
1597 guint8 Exist_AdditionsR5;
1598 PRR_AdditionsR5_t AdditionsR5;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03001599} PRR_AdditionsR99_t;
1600
1601typedef struct
1602{
1603 guint8 UnionType;
1604 union
1605 {
1606 Global_TFI_t Global_TFI;
1607 guint32 TLLI;
1608 } u;
1609} PacketResourceRequestID_t;
1610
1611typedef struct
1612{
1613 guint8 MESSAGE_TYPE;
1614 guint8 PayloadType;
1615 guint8 spare;
1616 guint8 R;
1617
1618 guint8 Exist_ACCESS_TYPE;
1619 guint8 ACCESS_TYPE;
1620
1621 PacketResourceRequestID_t ID;
1622
Pau Espin Pedrole50ce6e2020-03-23 18:49:16 +01001623 guint8 Exist_MS_Radio_Access_capability2;
1624 MS_Radio_Access_capability_t MS_Radio_Access_capability2;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03001625
1626 Channel_Request_Description_t Channel_Request_Description;
1627
1628 guint8 Exist_CHANGE_MARK;
1629 guint8 CHANGE_MARK;
1630
1631 guint8 C_VALUE;
1632
1633 guint8 Exist_SIGN_VAR;
1634 guint8 SIGN_VAR;
1635
Pau Espin Pedrol0daf9132020-02-23 16:11:28 +07001636 InterferenceMeasurementReport_t I_LEVEL_TN[8];
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03001637
1638 guint8 Exist_AdditionsR99;
1639 PRR_AdditionsR99_t AdditionsR99;
1640} Packet_Resource_Request_t;
1641
1642/* < Packet Mobile TBF Status message content >*/
1643typedef struct
1644{
1645 guint8 MESSAGE_TYPE;
1646 guint8 PayloadType;
1647 guint8 spare;
1648 guint8 R;
1649
1650 Global_TFI_t Global_TFI;
1651 guint8 TBF_CAUSE;
1652
1653 guint8 Exist_STATUS_MESSAGE_TYPE;
1654 guint8 STATUS_MESSAGE_TYPE;
1655} Packet_Mobile_TBF_Status_t;
1656
1657/* < Packet PSI Status message content >*/
1658typedef struct
1659{
1660 guint8 PSI_MESSAGE_TYPE;
1661 guint8 PSIX_CHANGE_MARK;
1662 guint8 Exist_PSIX_COUNT_and_Instance_Bitmap;
1663} PSI_Message_t;
1664
1665typedef struct
1666{
1667 guint8 Count_PSI_Message;
1668 PSI_Message_t PSI_Message[10];
1669
1670 guint8 ADDITIONAL_MSG_TYPE;
1671} PSI_Message_List_t;
1672
1673typedef struct
1674{
1675 guint8 ADDITIONAL_MSG_TYPE;
1676} Unknown_PSI_Message_List_t;
1677
1678typedef struct
1679{
1680 guint8 MESSAGE_TYPE;
1681 guint8 PayloadType;
1682 guint8 spare;
1683 guint8 R;
1684
1685 Global_TFI_t Global_TFI;
1686 guint8 PBCCH_CHANGE_MARK;
1687
1688 PSI_Message_List_t PSI_Message_List;
1689 Unknown_PSI_Message_List_t Unknown_PSI_Message_List;
1690} Packet_PSI_Status_t;
1691
1692/* < Packet SI Status message content > */
1693typedef struct
1694{
1695 guint8 SI_MESSAGE_TYPE;
1696 guint8 MESS_REC;
1697 guint8 SIX_CHANGE_MARK;
1698
1699 guint8 SIX_COUNT;
1700 guint8 Instance_bitmap[2];
1701} SI_Message_t;
1702
1703typedef struct
1704{
1705 guint8 Count_SI_Message;
1706 SI_Message_t SI_Message[10];
1707
1708 guint8 ADDITIONAL_MSG_TYPE;
1709} SI_Message_List_t;
1710
1711typedef struct
1712{
1713 guint8 ADDITIONAL_MSG_TYPE;
1714} Unknown_SI_Message_List_t;
1715
1716typedef struct
1717{
1718 guint8 MESSAGE_TYPE;
1719 guint8 PayloadType;
1720 guint8 spare;
1721 guint8 R;
1722
1723 Global_TFI_t Global_TFI;
1724 guint8 BCCH_CHANGE_MARK;
1725
1726 SI_Message_List_t SI_Message_List;
1727 Unknown_SI_Message_List_t Unknown_SI_Message_List;
1728} Packet_SI_Status_t;
1729
1730typedef struct
1731{
1732 guint16 FDD_ARFCN;
1733 guint8 DIVERSITY;
1734 guint8 Exist_Bandwith_FDD;
1735 guint8 BANDWITH_FDD;
1736 guint16 SCRAMBLING_CODE;
1737} FDD_Target_Cell_t;
1738
1739typedef struct
1740{
1741 guint16 TDD_ARFCN;
1742 guint8 DIVERSITY_TDD;
1743 guint8 Exist_Bandwith_TDD;
1744 guint8 BANDWITH_TDD;
1745 guint16 CELL_PARAMETER;
1746 guint8 Sync_Case_TSTD;
1747} TDD_Target_Cell_t;
1748
1749typedef struct
1750{
1751 guint16 EARFCN;
1752 guint8 Exist_Measurement_Bandwidth;
1753 guint8 Measurement_Bandwidth;
1754 guint16 Physical_Layer_Cell_Identity;
Bill Meierbcc64082020-01-28 15:50:46 +01001755} EUTRAN_Target_Cell_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03001756
1757typedef struct
1758{
1759 guint32 UTRAN_CI;
1760 guint8 Exist_PLMN_ID;
1761 PLMN_t PLMN_ID;
Bill Meierbcc64082020-01-28 15:50:46 +01001762} UTRAN_CSG_Target_Cell_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03001763
1764typedef struct
1765{
1766 guint32 EUTRAN_CI;
1767 guint16 Tracking_Area_Code;
1768 guint8 Exist_PLMN_ID;
1769 PLMN_t PLMN_ID;
Bill Meierbcc64082020-01-28 15:50:46 +01001770} EUTRAN_CSG_Target_Cell_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03001771
1772typedef struct
1773{
1774 guint8 Exist_UTRAN_CSG_Target_Cell;
1775 UTRAN_CSG_Target_Cell_t UTRAN_CSG_Target_Cell;
1776 guint8 Exist_EUTRAN_CSG_Target_Cell;
1777 EUTRAN_CSG_Target_Cell_t EUTRAN_CSG_Target_Cell;
Bill Meierbcc64082020-01-28 15:50:46 +01001778} PCCF_AdditionsR9_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03001779
1780typedef struct
1781{
1782 guint8 Exist_EUTRAN_Target_Cell;
1783 EUTRAN_Target_Cell_t EUTRAN_Target_Cell;
1784 guint8 Exist_AdditionsR9;
1785 PCCF_AdditionsR9_t AdditionsR9;
Bill Meierbcc64082020-01-28 15:50:46 +01001786} PCCF_AdditionsR8_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03001787
1788typedef struct
1789{
Thorsten Alteholz8bb79042018-10-06 10:42:58 +02001790 guint8 Exist_G_RNTI_extension;
1791 guint8 G_RNTI_extension;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03001792 guint8 Exist_AdditionsR8;
1793 PCCF_AdditionsR8_t AdditionsR8;
1794} PCCF_AdditionsR5_t;
1795
1796typedef struct
1797{
1798 guint8 Exist_FDD_Description;
1799 FDD_Target_Cell_t FDD_Target_Cell;
1800 guint8 Exist_TDD_Description;
1801 TDD_Target_Cell_t TDD_Target_Cell;
1802 guint8 Exist_AdditionsR5;
1803 PCCF_AdditionsR5_t AdditionsR5;
1804} PCCF_AdditionsR99_t;
1805
1806/* < Packet Cell Change Failure message content > */
1807typedef struct
1808{
1809 guint8 MESSAGE_TYPE;
1810 guint8 PayloadType;
1811 guint8 spare;
1812 guint8 R;
1813
1814 guint32 TLLI;
1815 guint16 ARFCN;
1816 guint8 BSIC;
1817 guint8 CAUSE;
1818 gboolean Exist_AdditionsR99;
1819 PCCF_AdditionsR99_t AdditionsR99;
1820} Packet_Cell_Change_Failure_t;
1821
1822/* < Packet Downlink Ack/Nack message content > */
1823typedef struct
1824{
1825 gboolean Exist_PFI;
1826 guint8 PFI;
1827} PD_AckNack_AdditionsR99_t;
1828
1829typedef struct
1830{
1831 guint8 MESSAGE_TYPE;
1832 guint8 PayloadType;
1833 guint8 spare;
1834 guint8 R;
1835
1836 guint8 DOWNLINK_TFI;
1837 Ack_Nack_Description_t Ack_Nack_Description;
1838
1839 guint8 Exist_Channel_Request_Description;
1840 Channel_Request_Description_t Channel_Request_Description;
1841
1842 Channel_Quality_Report_t Channel_Quality_Report;
1843
1844 gboolean Exist_AdditionsR99;
1845 PD_AckNack_AdditionsR99_t AdditionsR99;
1846} Packet_Downlink_Ack_Nack_t;
1847
1848/* < EGPRS Packet Downlink Ack/Nack message content > */
1849typedef struct
1850{
1851 EGPRS_BEP_LinkQualityMeasurements_t EGPRS_BEP_LinkQualityMeasurements;
1852 guint8 C_VALUE;
1853 EGPRS_TimeslotLinkQualityMeasurements_t EGPRS_TimeslotLinkQualityMeasurements;
1854} EGPRS_ChannelQualityReport_t;
1855
1856typedef struct
1857{
1858 guint8 MESSAGE_TYPE;
1859 guint8 PayloadType;
1860 guint8 spare;
1861 guint8 R;
1862
1863 guint8 DOWNLINK_TFI;
1864 guint8 MS_OUT_OF_MEMORY;
1865
1866 gboolean Exist_EGPRS_ChannelQualityReport;
1867 EGPRS_ChannelQualityReport_t EGPRS_ChannelQualityReport;
1868
1869 gboolean Exist_ChannelRequestDescription;
1870 Channel_Request_Description_t ChannelRequestDescription;
1871
1872 gboolean Exist_PFI;
1873 guint8 PFI;
1874
1875 gboolean Exist_ExtensionBits;
1876 Extension_Bits_t ExtensionBits;
1877
1878 EGPRS_AckNack_t EGPRS_AckNack;
1879} EGPRS_PD_AckNack_t;
1880
1881/* < Packet Uplink Ack/Nack message content 04.60 sec.11.2.28 > */
1882
1883typedef struct
1884{
1885 guint8 Exist_CONTENTION_RESOLUTION_TLLI;
1886 guint32 CONTENTION_RESOLUTION_TLLI;
1887
1888 guint8 Exist_Packet_Timing_Advance;
1889 Packet_Timing_Advance_t Packet_Timing_Advance;
1890
1891 guint8 Exist_Extension_Bits;
1892 Extension_Bits_t Extension_Bits;
1893
1894 guint8 Exist_Power_Control_Parameters;
1895 Power_Control_Parameters_t Power_Control_Parameters;
1896} Common_Uplink_Ack_Nack_Data_t;
1897
1898typedef struct
1899{
1900 gboolean Exist_PacketExtendedTimingAdvance;
1901 guint8 PacketExtendedTimingAdvance;
1902 guint8 TBF_EST;
1903} PU_AckNack_GPRS_AdditionsR99_t;
1904
1905typedef struct
1906{
1907 guint8 CHANNEL_CODING_COMMAND;
1908 Ack_Nack_Description_t Ack_Nack_Description;
1909
1910 guint8 UnionType;
1911 union
1912 {
1913 guint8 FixedAllocationDummy;
1914 guint8 Error;
1915 } u;
1916
1917 gboolean Exist_AdditionsR99;
1918 PU_AckNack_GPRS_AdditionsR99_t AdditionsR99;
1919
1920
1921 Common_Uplink_Ack_Nack_Data_t Common_Uplink_Ack_Nack_Data;
1922} PU_AckNack_GPRS_t;
1923
1924typedef struct
1925{
1926 guint8 EGPRS_ChannelCodingCommand;
1927 guint8 RESEGMENT;
1928 guint8 PRE_EMPTIVE_TRANSMISSION;
1929 guint8 PRR_RETRANSMISSION_REQUEST;
1930 guint8 ARAC_RETRANSMISSION_REQUEST;
1931
1932 guint8 TBF_EST;
1933
1934 gboolean Exist_Packet_Extended_Timing_Advance;
1935 guint8 Packet_Extended_Timing_Advance;
1936
1937 EGPRS_AckNack_t EGPRS_AckNack;
1938
1939
1940 Common_Uplink_Ack_Nack_Data_t Common_Uplink_Ack_Nack_Data;
1941} PU_AckNack_EGPRS_00_t;
1942
1943typedef struct
1944{
1945 guint8 UnionType;
1946 union
1947 {
1948 PU_AckNack_EGPRS_00_t PU_AckNack_EGPRS_00;
1949 guint8 extension_01;
1950 guint8 extension_10;
1951 guint8 extension_11;
1952 } u;
1953} PU_AckNack_EGPRS_t;
1954
Bill Meierbcc64082020-01-28 15:50:46 +01001955#if 0
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03001956enum PUAN_Type
1957{
1958 PUAN_GPRS,
1959 PUAN_EGPRS
1960};
Bill Meierbcc64082020-01-28 15:50:46 +01001961#endif
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03001962
1963typedef struct
1964{
1965 guint8 MESSAGE_TYPE;
1966 guint8 PAGE_MODE;
1967 guint8 UPLINK_TFI;
1968
1969 guint8 UnionType;
1970 union
1971 {
1972 PU_AckNack_GPRS_t PU_AckNack_GPRS_Struct;
1973 PU_AckNack_EGPRS_t PU_AckNack_EGPRS_Struct;
1974 } u;
1975} Packet_Uplink_Ack_Nack_t;
1976
1977/* < Packet Uplink Assignment message content > */
1978typedef struct
1979{
1980 guint8 CHANGE_MARK_1;
1981 guint8 Exist_CHANGE_MARK_2;
1982 guint8 CHANGE_MARK_2;
1983} CHANGE_MARK_t;
1984
1985typedef struct
1986{
1987 guint8 MAIO;
1988 guint8 MA_NUMBER;
1989
1990 guint8 Exist_CHANGE_MARK;
1991 CHANGE_MARK_t CHANGE_MARK;
1992} Indirect_encoding_t;
1993
1994typedef struct
1995{
1996 guint8 MAIO;
1997 GPRS_Mobile_Allocation_t GPRS_Mobile_Allocation;
1998} Direct_encoding_1_t;
1999
2000typedef struct
2001{
2002 guint8 MAIO;
2003 guint8 HSN;
2004 guint8 Length_of_MA_Frequency_List;
2005 guint8 MA_Frequency_List[15+3];
2006} Direct_encoding_2_t;
2007
2008typedef struct
2009{
2010 guint8 TSC;
2011 guint8 UnionType;
2012 union
2013 {
2014 guint16 ARFCN;
2015 Indirect_encoding_t Indirect_encoding;
2016 Direct_encoding_1_t Direct_encoding_1;
2017 Direct_encoding_2_t Direct_encoding_2;
2018 } u;
2019} Frequency_Parameters_t;
2020
2021typedef struct
2022{
2023 guint8 Exist;
2024 guint8 USF_TN;
2025} Timeslot_Allocation_t;
2026
2027typedef struct
2028{
2029 guint8 ALPHA;
2030
2031 struct
2032 {
2033 guint8 Exist;
2034 guint8 USF_TN;
2035 guint8 GAMMA_TN;
2036 } Slot[8];
2037} Timeslot_Allocation_Power_Ctrl_Param_t;
2038
2039typedef struct
2040{
2041 guint8 Extended_Dynamic_Allocation;
2042
2043 guint8 Exist_P0;
2044 guint8 P0;
2045 guint8 PR_MODE;
2046
2047 guint8 USF_GRANULARITY;
2048
2049 guint8 Exist_UPLINK_TFI_ASSIGNMENT;
2050 guint8 UPLINK_TFI_ASSIGNMENT;
2051
2052 guint8 Exist_RLC_DATA_BLOCKS_GRANTED;
2053 guint8 RLC_DATA_BLOCKS_GRANTED;
2054
2055 guint8 Exist_TBF_Starting_Time;
2056 Starting_Frame_Number_t TBF_Starting_Time;
2057
2058 guint8 UnionType;
2059 union
2060 {
2061 Timeslot_Allocation_t Timeslot_Allocation[8];
2062 Timeslot_Allocation_Power_Ctrl_Param_t Timeslot_Allocation_Power_Ctrl_Param;
2063 } u;
2064} Dynamic_Allocation_t;
2065
2066typedef struct
2067{
2068 guint8 Extended_Dynamic_Allocation;
2069
2070 guint8 Exist_P0;
2071 guint8 P0;
2072 guint8 PR_MODE;
2073
2074 guint8 USF_GRANULARITY;
2075
2076 guint8 Exist_UPLINK_TFI_ASSIGNMENT;
2077 guint8 UPLINK_TFI_ASSIGNMENT;
2078
2079 guint8 Exist_RLC_DATA_BLOCKS_GRANTED;
2080 guint8 RLC_DATA_BLOCKS_GRANTED;
2081
2082 guint8 UnionType;
2083 union
2084 {
2085 Timeslot_Allocation_t Timeslot_Allocation[8];
2086 Timeslot_Allocation_Power_Ctrl_Param_t Timeslot_Allocation_Power_Ctrl_Param;
2087 } u;
2088} DTM_Dynamic_Allocation_t;
2089
2090typedef struct
2091{
2092 guint8 TIMESLOT_NUMBER;
2093
2094 guint8 Exist_ALPHA_and_GAMMA_TN;
2095 guint8 ALPHA;
2096 guint8 GAMMA_TN;
2097
2098 guint8 Exist_P0;
2099 guint8 P0;
2100 guint8 BTS_PWR_CTRL_MODE;
2101 guint8 PR_MODE;
2102
2103 Starting_Frame_Number_t TBF_Starting_Time;
2104} Single_Block_Allocation_t;
2105
2106typedef struct
2107{
2108 guint8 TIMESLOT_NUMBER;
2109
2110 guint8 Exist_ALPHA_and_GAMMA_TN;
2111 guint8 ALPHA;
2112 guint8 GAMMA_TN;
2113
2114 guint8 Exist_P0;
2115 guint8 P0;
2116 guint8 BTS_PWR_CTRL_MODE;
2117 guint8 PR_MODE;
2118
2119} DTM_Single_Block_Allocation_t;
2120
2121typedef struct
2122{
2123 guint8 UnionType;
2124 union
2125 {
2126 Global_TFI_t Global_TFI;
2127 guint32 TLLI;
2128 guint16 TQI;
2129 Packet_Request_Reference_t Packet_Request_Reference;
2130 } u;
2131} PacketUplinkID_t;
2132
2133typedef struct
2134{
2135 gboolean Exist_Packet_Extended_Timing_Advance;
2136 guint8 Packet_Extended_Timing_Advance;
2137} PUA_GPRS_AdditionsR99_t;
2138
2139typedef struct
2140{
2141 guint8 CHANNEL_CODING_COMMAND;
2142 guint8 TLLI_BLOCK_CHANNEL_CODING;
2143 Packet_Timing_Advance_t Packet_Timing_Advance;
2144
2145 guint8 Exist_Frequency_Parameters;
2146 Frequency_Parameters_t Frequency_Parameters;
2147
2148 guint8 UnionType;
2149 union
2150 {
2151 guint8 extension;
2152 Dynamic_Allocation_t Dynamic_Allocation;
2153 Single_Block_Allocation_t Single_Block_Allocation;
2154 guint8 FixedAllocationDummy;
2155 } u;
2156
2157 gboolean Exist_AdditionsR99;
2158 PUA_GPRS_AdditionsR99_t AdditionsR99;
2159} PUA_GPRS_t;
2160
2161typedef struct
2162{
2163 guint8 BitmapLength;
2164 guint8 ReducedMA_Bitmap[127 / 8 + 1];
2165
2166 gboolean Exist_MAIO_2;
2167 guint8 MAIO_2;
2168} COMPACT_ReducedMA_t;
2169
2170typedef struct
2171{
2172 guint8 TIMESLOT_NUMBER;
2173
2174 gboolean Exist_ALPHA_GAMMA_TN;
2175 guint8 ALPHA;
2176 guint8 GAMMA_TN;
2177
2178 gboolean Exist_P0_BTS_PWR_CTRL_PR_MODE;
2179 guint8 P0;
2180 guint8 BTS_PWR_CTRL_MODE;
2181 guint8 PR_MODE;
2182
2183 Starting_Frame_Number_t TBF_Starting_Time;
2184 guint8 NUMBER_OF_RADIO_BLOCKS_ALLOCATED;
2185} MultiBlock_Allocation_t;
2186
2187typedef struct
2188{
2189 gboolean Exist_CONTENTION_RESOLUTION_TLLI;
2190 guint32 CONTENTION_RESOLUTION_TLLI;
2191
2192 gboolean Exist_COMPACT_ReducedMA;
2193 COMPACT_ReducedMA_t COMPACT_ReducedMA;
2194
2195 guint8 EGPRS_CHANNEL_CODING_COMMAND;
2196 guint8 RESEGMENT;
2197 guint8 EGPRS_WindowSize;
2198
2199 guint8 NrOfAccessTechnologies; /* will hold the number of list elements */
2200 guint8 AccessTechnologyType[MAX_ACCESS_TECHOLOGY_TYPES]; /* for max size of array see 24.008/Table 10.5.146 */
2201
2202 guint8 ARAC_RETRANSMISSION_REQUEST;
2203 guint8 TLLI_BLOCK_CHANNEL_CODING;
2204
2205 gboolean Exist_BEP_PERIOD2;
2206 guint8 BEP_PERIOD2;
2207
2208 Packet_Timing_Advance_t PacketTimingAdvance;
2209
2210 gboolean Exist_Packet_Extended_Timing_Advance;
2211 guint8 Packet_Extended_Timing_Advance;
2212
2213 gboolean Exist_Frequency_Parameters;
2214 Frequency_Parameters_t Frequency_Parameters;
2215
2216 guint8 UnionType;
2217 union
2218 {
2219 guint8 extension;
2220 Dynamic_Allocation_t Dynamic_Allocation;
2221 MultiBlock_Allocation_t MultiBlock_Allocation;
2222 guint8 FixedAllocationDummy;/* Fixed Allocation is not used */
2223 } u;
2224} PUA_EGPRS_00_t;
2225
2226typedef struct
2227{
2228 guint8 UnionType;
2229 union
2230 {
2231 PUA_EGPRS_00_t PUA_EGPRS_00;
2232 guint8 PUA_EGPRS_01;
2233 guint8 PUA_EGPRS_10;
2234 guint8 PUA_EGPRS_11;
2235 } u;
2236} PUA_EGPRS_t;
2237
Bill Meierbcc64082020-01-28 15:50:46 +01002238#if 0
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03002239enum PUA_Type
2240{
2241 PUA_GPRS,
2242 PUA_EGPRS
2243};
Bill Meierbcc64082020-01-28 15:50:46 +01002244#endif
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03002245
2246typedef struct
2247{
2248 guint8 MESSAGE_TYPE;
2249 guint8 PAGE_MODE;
2250
2251 guint8 Exist_PERSISTENCE_LEVEL;
2252 guint8 PERSISTENCE_LEVEL[4];
2253
2254 PacketUplinkID_t ID;
2255
2256 guint8 UnionType;
2257 union
2258 {
2259 PUA_GPRS_t PUA_GPRS_Struct;
2260 PUA_EGPRS_t PUA_EGPRS_Struct;
2261 } u;
2262} Packet_Uplink_Assignment_t;
2263
2264
2265/* < DTM Packet Uplink Assignment message content > */
2266typedef struct
2267{
2268 guint8 CHANNEL_CODING_COMMAND;
2269 guint8 TLLI_BLOCK_CHANNEL_CODING;
2270 Packet_Timing_Advance_t Packet_Timing_Advance;
2271
2272 guint8 UnionType;
2273 union
2274 {
2275 guint8 extension;
2276 DTM_Dynamic_Allocation_t DTM_Dynamic_Allocation;
2277 DTM_Single_Block_Allocation_t DTM_Single_Block_Allocation;
2278 } u;
2279 gboolean Exist_EGPRS_Parameters;
2280 guint8 EGPRS_CHANNEL_CODING_COMMAND;
2281 guint8 RESEGMENT;
2282 guint8 EGPRS_WindowSize;
2283 gboolean Exist_Packet_Extended_Timing_Advance;
2284 guint8 Packet_Extended_Timing_Advance;
2285} DTM_Packet_Uplink_Assignment_t;
2286
2287typedef struct
2288{
2289 DTM_Packet_Uplink_Assignment_t DTM_Packet_Uplink_Assignment;
Bill Meierbcc64082020-01-28 15:50:46 +01002290} DTM_UL_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03002291
2292/* < DTM Packet Channel Request message content > */
2293typedef struct
2294{
2295 guint8 DTM_Pkt_Est_Cause;
2296 Channel_Request_Description_t Channel_Request_Description;
2297 gboolean Exist_PFI;
2298 guint8 PFI;
Bill Meierbcc64082020-01-28 15:50:46 +01002299} DTM_Channel_Request_Description_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03002300
2301/* < Packet Downlink Assignment message content > */
2302typedef struct
2303{
2304 Starting_Frame_Number_t Measurement_Starting_Time;
2305 guint8 MEASUREMENT_INTERVAL;
2306 guint8 MEASUREMENT_BITMAP;
2307} Measurement_Mapping_struct_t;
2308
2309typedef struct
2310{
2311 guint8 UnionType;
2312 union
2313 {
2314 Global_TFI_t Global_TFI;
2315 guint32 TLLI;
2316 } u;
2317} PacketDownlinkID_t;
2318
2319typedef struct
2320{
2321 gboolean Exist_EGPRS_Params; /* if Exist_EGPRS_Params == FALSE then none of the following 4 vars exist */
2322 guint8 EGPRS_WindowSize;
2323 guint8 LINK_QUALITY_MEASUREMENT_MODE;
2324 gboolean Exist_BEP_PERIOD2;
2325 guint8 BEP_PERIOD2;
2326
2327 gboolean Exist_Packet_Extended_Timing_Advance;
2328 guint8 Packet_Extended_Timing_Advance;
2329
2330 gboolean Exist_COMPACT_ReducedMA;
2331 COMPACT_ReducedMA_t COMPACT_ReducedMA;
2332} PDA_AdditionsR99_t;
2333
2334typedef struct
2335{
2336 guint8 MESSAGE_TYPE;
2337 guint8 PAGE_MODE;
2338
2339 gboolean Exist_PERSISTENCE_LEVEL;
2340 guint8 PERSISTENCE_LEVEL[4];
2341
2342 PacketDownlinkID_t ID;
2343
2344 guint8 MAC_MODE;
2345 guint8 RLC_MODE;
2346 guint8 CONTROL_ACK;
2347 guint8 TIMESLOT_ALLOCATION;
2348 Packet_Timing_Advance_t Packet_Timing_Advance;
2349
2350 gboolean Exist_P0_and_BTS_PWR_CTRL_MODE;
2351 guint8 P0;
2352 guint8 BTS_PWR_CTRL_MODE;
2353 guint8 PR_MODE;
2354
2355 gboolean Exist_Frequency_Parameters;
2356 Frequency_Parameters_t Frequency_Parameters;
2357
2358 gboolean Exist_DOWNLINK_TFI_ASSIGNMENT;
2359 guint8 DOWNLINK_TFI_ASSIGNMENT;
2360
2361 gboolean Exist_Power_Control_Parameters;
2362 Power_Control_Parameters_t Power_Control_Parameters;
2363
2364 gboolean Exist_TBF_Starting_Time;
2365 Starting_Frame_Number_t TBF_Starting_Time;
2366
2367 guint8 Exist_Measurement_Mapping;
2368 Measurement_Mapping_struct_t Measurement_Mapping;
2369
2370 gboolean Exist_AdditionsR99;
2371 PDA_AdditionsR99_t AdditionsR99;
2372} Packet_Downlink_Assignment_t;
2373
2374/* < DTM Packet Downlink Assignment message content > */
2375typedef struct
2376{
2377 guint8 MAC_MODE;
2378 guint8 RLC_MODE;
2379 guint8 TIMESLOT_ALLOCATION;
2380 Packet_Timing_Advance_t Packet_Timing_Advance;
2381
2382 guint8 Exist_P0_and_BTS_PWR_CTRL_MODE;
2383 guint8 P0;
2384 guint8 BTS_PWR_CTRL_MODE;
2385 guint8 PR_MODE;
2386
2387 guint8 Exist_Power_Control_Parameters;
2388 Power_Control_Parameters_t Power_Control_Parameters;
2389
2390 guint8 Exist_DOWNLINK_TFI_ASSIGNMENT;
2391 guint8 DOWNLINK_TFI_ASSIGNMENT;
2392
2393 guint8 Exist_Measurement_Mapping;
2394 Measurement_Mapping_struct_t Measurement_Mapping;
2395 gboolean EGPRS_Mode;
2396 guint8 EGPRS_WindowSize;
2397 guint8 LINK_QUALITY_MEASUREMENT_MODE;
2398 gboolean Exist_Packet_Extended_Timing_Advance;
2399 guint8 Packet_Extended_Timing_Advance;
2400} DTM_Packet_Downlink_Assignment_t;
2401
2402typedef struct
2403{
2404 DTM_Packet_Downlink_Assignment_t DTM_Packet_Downlink_Assignment;
Bill Meierbcc64082020-01-28 15:50:46 +01002405} DTM_DL_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03002406
2407typedef struct
2408{
2409 GPRS_Cell_Options_t GPRS_Cell_Options;
2410 GPRS_Power_Control_Parameters_t GPRS_Power_Control_Parameters;
Bill Meierbcc64082020-01-28 15:50:46 +01002411} DTM_GPRS_Broadcast_Information_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03002412
2413typedef struct
2414{
2415 DTM_GPRS_Broadcast_Information_t DTM_GPRS_Broadcast_Information;
Bill Meierbcc64082020-01-28 15:50:46 +01002416} DTM_GPRS_B_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03002417
2418/* < Packet Paging Request message content > */
2419typedef struct
2420{
2421 guint8 UnionType;
2422 union
2423 {
2424 TMSI_t PTMSI;
2425 struct MobileId Mobile_Identity;
2426 } u;
2427} Page_request_for_TBF_establishment_t;
2428
2429typedef struct
2430{
2431 guint8 UnionType;
2432 union
2433 {
2434 TMSI_t TMSI;
2435 struct MobileId Mobile_Identity;
2436 } u;
2437
2438 guint8 CHANNEL_NEEDED;
2439
2440 guint8 Exist_eMLPP_PRIORITY;
2441 guint8 eMLPP_PRIORITY;
2442} Page_request_for_RR_conn_t;
2443
2444typedef struct
2445{
2446 guint8 UnionType;
2447 union
2448 {
2449 Page_request_for_TBF_establishment_t Page_req_TBF;
2450 Page_request_for_RR_conn_t Page_req_RR;
2451 } u;
2452} Repeated_Page_info_t;
2453
2454typedef struct
2455{
2456 guint8 MESSAGE_TYPE;
2457 guint8 PAGE_MODE;
2458
2459 guint8 Exist_PERSISTENCE_LEVEL;
2460 guint8 PERSISTENCE_LEVEL[4];
2461
2462 guint8 Exist_NLN;
2463 guint8 NLN;
2464
2465 guint8 Count_Repeated_Page_info;
2466 Repeated_Page_info_t Repeated_Page_info[5];
Bill Meierbcc64082020-01-28 15:50:46 +01002467} Packet_Paging_Request_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03002468
2469typedef struct
2470{
2471 guint8 MESSAGE_TYPE;
2472 guint8 PAGE_MODE;
2473
2474 guint8 TIMESLOTS_AVAILABLE;
2475} Packet_PDCH_Release_t;
2476
2477/* < Packet Power Control/Timing Advance message content > */
2478typedef struct
2479{
2480 guint8 UnionType;
2481 union
2482 {
2483 Global_TFI_t Global_TFI;
2484 guint16 TQI;
2485 Packet_Request_Reference_t Packet_Request_Reference;
2486 } u;
2487} PacketPowerControlTimingAdvanceID_t;
2488
2489typedef struct
2490{
2491 Global_Packet_Timing_Advance_t Global_Packet_Timing_Advance;
2492 Power_Control_Parameters_t Power_Control_Parameters;
2493} GlobalTimingAndPower_t;
2494
2495typedef struct
2496{
2497 guint8 UnionType;
2498 union
2499 {
2500 Global_Packet_Timing_Advance_t Global_Packet_Timing_Advance;
2501 Power_Control_Parameters_t Power_Control_Parameters;
2502 } u;
2503} GlobalTimingOrPower_t;
2504
2505typedef struct
2506{
2507 guint8 MESSAGE_TYPE;
2508 guint8 PAGE_MODE;
2509
2510 PacketPowerControlTimingAdvanceID_t ID;
2511
2512 /* -- Message escape */
2513 guint8 Exist_Global_Power_Control_Parameters;
2514 Global_Power_Control_Parameters_t Global_Power_Control_Parameters;
2515
2516 guint8 UnionType;
2517 union
2518 {
2519 GlobalTimingAndPower_t GlobalTimingAndPower;
2520 GlobalTimingOrPower_t GlobalTimingOrPower;
2521 } u;
2522} Packet_Power_Control_Timing_Advance_t;
2523
2524/* < Packet Queueing Notification message content > */
2525typedef struct
2526{
2527 guint8 MESSAGE_TYPE;
2528 guint8 PAGE_MODE;
2529
2530 /* 111 Fixed */
2531 Packet_Request_Reference_t Packet_Request_Reference;
2532 guint16 TQI;
2533} Packet_Queueing_Notification_t;
2534
2535/* < Packet Timeslot Reconfigure message content 04.60 sec. 11.2.31> */
2536
2537typedef Dynamic_Allocation_t TRDynamic_Allocation_t;
2538
2539typedef struct
2540{
2541 Global_Packet_Timing_Advance_t Global_Packet_Timing_Advance;
2542
2543 guint8 DOWNLINK_RLC_MODE;
2544 guint8 CONTROL_ACK;
2545
2546 guint8 Exist_DOWNLINK_TFI_ASSIGNMENT;
2547 guint8 DOWNLINK_TFI_ASSIGNMENT;
2548
2549 guint8 Exist_UPLINK_TFI_ASSIGNMENT;
2550 guint8 UPLINK_TFI_ASSIGNMENT;
2551
2552 guint8 DOWNLINK_TIMESLOT_ALLOCATION;
2553
2554 guint8 Exist_Frequency_Parameters;
2555 Frequency_Parameters_t Frequency_Parameters;
2556} Common_Timeslot_Reconfigure_t;
2557
2558typedef struct
2559{
2560 gboolean Exist_Packet_Extended_Timing_Advance;
2561 guint8 Packet_Extended_Timing_Advance;
2562} PTR_GPRS_AdditionsR99_t;
2563
2564typedef struct
2565{
2566 guint8 CHANNEL_CODING_COMMAND;
2567
2568 Common_Timeslot_Reconfigure_t Common_Timeslot_Reconfigure_Data;
2569
2570 guint8 UnionType;
2571 union
2572 {
2573 TRDynamic_Allocation_t Dynamic_Allocation;
2574 guint8 Fixed_AllocationDummy;
2575 } u;
2576
2577 gboolean Exist_AdditionsR99;
2578 PTR_GPRS_AdditionsR99_t AdditionsR99;
2579} PTR_GPRS_t;
2580
2581typedef struct
2582{
2583 gboolean Exist_COMPACT_ReducedMA;
2584 COMPACT_ReducedMA_t COMPACT_ReducedMA;
2585
2586 guint8 EGPRS_ChannelCodingCommand;
2587 guint8 RESEGMENT;
2588
2589 gboolean Exist_DOWNLINK_EGPRS_WindowSize;
2590 guint8 DOWNLINK_EGPRS_WindowSize;
2591
2592 gboolean Exist_UPLINK_EGPRS_WindowSize;
2593 guint8 UPLINK_EGPRS_WindowSize;
2594
2595 guint8 LINK_QUALITY_MEASUREMENT_MODE;
2596
2597 gboolean Exist_Packet_Extended_Timing_Advance;
2598 guint8 Packet_Extended_Timing_Advance;
2599
2600 Common_Timeslot_Reconfigure_t Common_Timeslot_Reconfigure_Data;
2601
2602 guint8 UnionType;
2603 union
2604 {
2605 TRDynamic_Allocation_t Dynamic_Allocation;
2606 guint8 FixedAllocationDummy;
2607 } u;
2608} PTR_EGPRS_00_t;
2609
2610typedef struct
2611{
2612 guint8 UnionType;
2613 union
2614 {
2615 PTR_EGPRS_00_t PTR_EGPRS_00;
2616 guint8 extension_01;
2617 guint8 extension_10;
2618 guint8 extension_11;
2619 } u;
2620} PTR_EGPRS_t;
2621
Bill Meierbcc64082020-01-28 15:50:46 +01002622#if 0
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03002623enum PTR_Type
2624{
2625 PTR_GPRS,
2626 PTR_EGPRS
2627};
Bill Meierbcc64082020-01-28 15:50:46 +01002628#endif
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03002629
2630typedef struct
2631{
2632 guint8 MESSAGE_TYPE;
2633 guint8 PAGE_MODE;
2634
2635 Global_TFI_t Global_TFI;
2636
2637 guint8 UnionType;
2638 union
2639 {
2640 PTR_GPRS_t PTR_GPRS_Struct;
2641 PTR_EGPRS_t PTR_EGPRS_Struct;
2642 } u;
2643} Packet_Timeslot_Reconfigure_t;
2644
2645
2646/* < PSI1 message content > */
2647typedef struct
2648{
2649 guint8 ACC_CONTR_CLASS[2];
2650 guint8 MAX_RETRANS[4];
2651 guint8 S;
2652 guint8 TX_INT;
2653
2654 guint8 Exist_PERSISTENCE_LEVEL;
2655 guint8 PERSISTENCE_LEVEL[4];
2656} PRACH_Control_t;
2657
2658typedef struct
2659{
2660 guint8 BS_PCC_REL;
2661 guint8 BS_PBCCH_BLKS;
2662 guint8 BS_PAG_BLKS_RES;
2663 guint8 BS_PRACH_BLKS;
2664} PCCCH_Organization_t;
2665
2666typedef struct
2667{
Pascal Quantin29248d62020-01-28 17:13:17 +01002668 guint8 LB_MS_TXPWR_MAX_CCH;
2669} PSI1_AdditionsR6_t;
2670
2671typedef struct
2672{
2673 guint8 MSCR;
2674 guint8 SGSNR;
2675 guint8 BandIndicator;
2676 gboolean Exist_AdditionsR6;
2677 PSI1_AdditionsR6_t AdditionsR6;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03002678} PSI1_AdditionsR99_t;
2679
2680typedef struct
2681{
2682 guint8 MESSAGE_TYPE;
2683
2684 guint8 PAGE_MODE;
2685 guint8 PBCCH_CHANGE_MARK;
2686 guint8 PSI_CHANGE_FIELD;
2687 guint8 PSI1_REPEAT_PERIOD;
2688 guint8 PSI_COUNT_LR;
2689
2690 guint8 Exist_PSI_COUNT_HR;
2691 guint8 PSI_COUNT_HR;
2692
2693 guint8 MEASUREMENT_ORDER;
2694 GPRS_Cell_Options_t GPRS_Cell_Options;
2695 PRACH_Control_t PRACH_Control;
2696 PCCCH_Organization_t PCCCH_Organization;
2697 Global_Power_Control_Parameters_t Global_Power_Control_Parameters;
2698 guint8 PSI_STATUS_IND;
2699
2700 gboolean Exist_AdditionsR99;
2701 PSI1_AdditionsR99_t AdditionsR99;
2702} PSI1_t;
2703
2704/* < PSI2 message content > */
2705typedef struct
2706{
2707 guint8 NUMBER;
2708
2709 guint8 Length;
2710 guint8 Contents[15 + 3];/* octet (val(Length of RFL contents) + 3) */
2711} Reference_Frequency_t;
2712
2713typedef struct
2714{
2715 guint8 NoOfRFLs;
2716 guint8 RFL_Number[MAX_RFLS];
2717} Cell_Allocation_t;
2718
2719typedef struct
2720{
2721 guint8 NUMBER;
2722 GPRS_Mobile_Allocation_t Mobile_Allocation;
2723} PSI2_MA_t;
2724
2725typedef struct
2726{
2727 guint16 ARFCN;
2728 guint8 TIMESLOT_ALLOCATION;
2729} Non_Hopping_PCCCH_Carriers_t;
2730
2731typedef struct
2732{
2733 guint8 Count_Carriers;
2734 Non_Hopping_PCCCH_Carriers_t Carriers[7];
2735} NonHoppingPCCCH_t;
2736
2737typedef struct
2738{
2739 guint8 MAIO;
2740 guint8 TIMESLOT_ALLOCATION;
2741} Hopping_PCCCH_Carriers_t;
2742
2743typedef struct
2744{
2745 guint8 MA_NUMBER;
2746
2747 guint8 Count_Carriers;
2748 Hopping_PCCCH_Carriers_t Carriers[10];/* MAX_PCCCH but 10 is theoretical max. */
2749} HoppingPCCCH_t;
2750
2751typedef struct
2752{
2753 guint8 TSC;
2754
2755 guint8 UnionType;
2756 union
2757 {
2758 NonHoppingPCCCH_t NonHopping;
2759 HoppingPCCCH_t Hopping;
2760 } u;
2761} PCCCH_Description_t;
2762
2763typedef struct
2764{
2765 LAI_t LAI;
2766 guint8 RAC;
2767 CellId_t Cell_Identity;
2768} Cell_Identification_t;
2769
2770typedef struct
2771{
2772 guint8 ATT;
2773
2774 guint8 Exist_T3212;
2775 guint8 T3212;
2776
2777 guint8 NECI;
2778 guint8 PWRC;
2779 guint8 DTX;
2780 guint8 RADIO_LINK_TIMEOUT;
2781 guint8 BS_AG_BLKS_RES;
2782 guint8 CCCH_CONF;
2783 guint8 BS_PA_MFRMS;
2784 guint8 MAX_RETRANS;
2785 guint8 TX_INTEGER;
2786 guint8 EC;
2787 guint8 MS_TXPWR_MAX_CCCH;
2788
2789 guint8 Exist_Extension_Bits;
2790 Extension_Bits_t Extension_Bits;
2791} Non_GPRS_Cell_Options_t;
2792
2793typedef struct
2794{
2795 guint8 MESSAGE_TYPE;
2796 guint8 PAGE_MODE;
2797 guint8 CHANGE_MARK;
2798 guint8 INDEX;
2799 guint8 COUNT;
2800
2801 guint8 Exist_Cell_Identification;
2802 Cell_Identification_t Cell_Identification;
2803
2804 guint8 Exist_Non_GPRS_Cell_Options;
2805 Non_GPRS_Cell_Options_t Non_GPRS_Cell_Options;
2806
2807 guint8 Count_Reference_Frequency;
2808 Reference_Frequency_t Reference_Frequency[MAX_RFLS];
2809
2810 Cell_Allocation_t Cell_Allocation;
2811
2812 guint8 Count_GPRS_MA;
2813 PSI2_MA_t GPRS_MA[MAX_MA_LISTS_IN_PSI2];
2814
2815 guint8 Count_PCCCH_Description;
2816 PCCCH_Description_t PCCCH_Description[7];/* MAX_PCCCH but it is impossible that more than 7 can be decoded */
2817} PSI2_t;
2818
2819/* < PSI3 message content > */
2820typedef struct
2821{
2822 guint8 PRIORITY_CLASS;
2823 guint8 HCS_THR;
2824} HCS_t;
2825
2826typedef struct
2827{
2828 guint8 CELL_BAR_ACCESS_2;
2829 guint8 EXC_ACC;
2830 guint8 GPRS_RXLEV_ACCESS_MIN;
2831 guint8 GPRS_MS_TXPWR_MAX_CCH;
2832
2833 guint8 Exist_HCS;
2834 HCS_t HCS;
2835 guint8 MULTIBAND_REPORTING;
2836} Serving_Cell_params_t;
2837
2838typedef struct
2839{
2840 guint8 GPRS_CELL_RESELECT_HYSTERESIS;
2841 guint8 C31_HYST;
2842 guint8 C32_QUAL;
2843 guint8 RANDOM_ACCESS_RETRY;
2844
2845 guint8 Exist_T_RESEL;
2846 guint8 T_RESEL;
2847
2848 guint8 Exist_RA_RESELECT_HYSTERESIS;
2849 guint8 RA_RESELECT_HYSTERESIS;
2850} Gen_Cell_Sel_t;
2851
2852typedef struct
2853{
2854 guint8 PBCCH_LOCATION;
2855 guint8 PSI1_REPEAT_PERIOD;
2856} Location_Repeat_t;
2857
2858typedef struct
2859{
2860 guint8 UnionType;
2861 union
2862 {
2863 guint8 SI13_LOCATION;
2864 Location_Repeat_t lr;
2865 } u;
2866} SI13_PBCCH_Location_t;
2867
2868typedef struct
2869{
2870 guint8 BSIC;
2871 guint8 CELL_BAR_ACCESS_2;
2872 guint8 EXC_ACC;
2873 guint8 SAME_RA_AS_SERVING_CELL;
2874
2875 guint8 Exist_RXLEV_and_TXPWR;
2876 guint8 GPRS_RXLEV_ACCESS_MIN;
2877 guint8 GPRS_MS_TXPWR_MAX_CCH;
2878
2879 guint8 Exist_OFFSET_and_TIME;
2880 guint8 GPRS_TEMPORARY_OFFSET;
2881 guint8 GPRS_PENALTY_TIME;
2882
2883 guint8 Exist_GPRS_RESELECT_OFFSET;
2884 guint8 GPRS_RESELECT_OFFSET;
2885
2886 guint8 Exist_HCS;
2887 HCS_t HCS;
2888
2889 guint8 Exist_SI13_PBCCH_Location;
2890 SI13_PBCCH_Location_t SI13_PBCCH_Location;
2891} Cell_Selection_t;
2892
2893/* Neigbour cell list as used in PSI3 and PSI3bis */
2894typedef struct
2895{
2896 guint8 FREQ_DIFF_LENGTH;
2897 guint8 FREQUENCY_DIFF;
2898
2899 Cell_Selection_t Cell_SelectionParams;
2900} Cell_Selection_Params_With_FreqDiff_t;
2901
2902typedef struct
2903{
2904 guint16 START_FREQUENCY;
2905 Cell_Selection_t Cell_Selection;
2906 guint8 NR_OF_REMAINING_CELLS;
2907 guint8 FREQ_DIFF_LENGTH;
2908
2909 Cell_Selection_Params_With_FreqDiff_t Cell_Selection_Params_With_FreqDiff[16];
2910} NeighbourCellParameters_t;
2911
2912typedef struct
2913{
2914 guint8 Count;
2915 NeighbourCellParameters_t Parameters[32];
2916} NeighbourCellList_t;
2917
2918/* < PSI3 message content > */
2919
2920typedef struct
2921{
2922 guint8 bsic;
2923 guint8 CELL_BAR_ACCESS_2;
2924 guint8 EXC_ACC;
2925 guint8 SAME_RA_AS_SERVING_CELL;
2926 guint8 Exist_GPRS_RXLEV_ACCESS_MIN;
2927 guint8 GPRS_RXLEV_ACCESS_MIN;
2928 guint8 GPRS_MS_TXPWR_MAX_CCH;
2929 guint8 Exist_GPRS_TEMPORARY_OFFSET;
2930 guint8 GPRS_TEMPORARY_OFFSET;
2931 guint8 GPRS_PENALTY_TIME;
2932 guint8 Exist_GPRS_RESELECT_OFFSET;
2933 guint8 GPRS_RESELECT_OFFSET;
2934 guint8 Exist_Hcs_Parm;
2935 HCS_t HCS_Param;
2936 guint8 Exist_TIME_GROUP;
2937 guint8 TIME_GROUP;
2938 guint8 Exist_GUAR_CONSTANT_PWR_BLKS;
2939 guint8 GUAR_CONSTANT_PWR_BLKS;
Bill Meierbcc64082020-01-28 15:50:46 +01002940} COMPACT_Cell_Sel_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03002941
2942typedef struct
2943{
2944 guint8 FREQ_DIFF_LENGTH;
2945 guint16 FREQUENCY_DIFF;
2946 COMPACT_Cell_Sel_t COMPACT_Cell_Sel_Remain_Cells;
Bill Meierbcc64082020-01-28 15:50:46 +01002947} COMPACT_Neighbour_Cell_Param_Remaining_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03002948
2949typedef struct
2950{
2951 guint16 START_FREQUENCY;
2952 COMPACT_Cell_Sel_t COMPACT_Cell_Sel;
2953 guint8 NR_OF_REMAINING_CELLS;
2954 guint8 FREQ_DIFF_LENGTH;
2955 COMPACT_Neighbour_Cell_Param_Remaining_t COMPACT_Neighbour_Cell_Param_Remaining[16];
Bill Meierbcc64082020-01-28 15:50:46 +01002956} COMPACT_Neighbour_Cell_Param_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03002957
2958typedef struct
2959{
2960 Cell_Identification_t Cell_Identification;
2961 guint8 COMPACT_Neighbour_Cell_Param_Count;
2962 COMPACT_Neighbour_Cell_Param_t COMPACT_Neighbour_Cell_Param[8];
Bill Meierbcc64082020-01-28 15:50:46 +01002963} COMPACT_Info_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03002964
2965typedef struct
2966{
2967 guint8 Exist_CCN_Support_Desc;
2968 CCN_Support_Description_t CCN_Support_Desc;
Bill Meierbcc64082020-01-28 15:50:46 +01002969} PSI3_AdditionR4_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03002970
2971typedef struct
2972{
2973 guint8 Exist_COMPACT_Info;
2974 COMPACT_Info_t COMPACT_Info;
2975 guint8 Exist_AdditionR4;
2976 PSI3_AdditionR4_t AdditionR4;
Bill Meierbcc64082020-01-28 15:50:46 +01002977} PSI3_AdditionR99_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03002978
2979typedef struct
2980{
2981 LSA_ID_Info_t Scell_LSA_ID_Info;
2982 guint8 Exist_LSA_Parameters;
2983 LSA_Parameters_t LSA_Parameters;
2984 guint8 Exist_AdditionR99;
2985 PSI3_AdditionR99_t AdditionR99;
Bill Meierbcc64082020-01-28 15:50:46 +01002986} PSI3_AdditionR98_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03002987
2988typedef struct
2989{
2990 guint8 MESSAGE_TYPE;
2991 guint8 PAGE_MODE;
2992 guint8 CHANGE_MARK;
2993 guint8 BIS_COUNT;
2994
2995 Serving_Cell_params_t Serving_Cell_params;
2996
2997 Gen_Cell_Sel_t General_Cell_Selection;
2998 NeighbourCellList_t NeighbourCellList;
2999
3000 guint8 Exist_AdditionR98;
3001 PSI3_AdditionR98_t AdditionR98;
3002} PSI3_t;
3003
3004/* < PSI3_BIS message content > */
3005typedef struct
3006{
3007 guint8 MESSAGE_TYPE;
3008 guint8 PAGE_MODE;
3009 guint8 CHANGE_MARK;
3010 guint8 BIS_INDEX;
3011 guint8 BIS_COUNT;
3012
3013 NeighbourCellList_t NeighbourCellList;
3014} PSI3_BIS_t;
3015
3016/* < PSI4 message content > */
3017typedef struct
3018{
3019 guint8 MA_NUMBER;
3020 guint8 MAIO;
3021} h_CG_t;
3022
3023typedef struct
3024{
3025 guint8 UnionType;
3026 union
3027 {
3028 guint16 ARFCN;
3029 h_CG_t h_CG;
3030 } u;
3031
3032 guint8 TIMESLOT_ALLOCATION;
3033} Channel_Group_t;
3034
3035typedef struct
3036{
3037 /* Channel_Group_t Channel_Group
3038 * At least one
3039 * the first one is unpacked in the index
3040 */
3041 guint8 Count_Channel_Group;
3042 Channel_Group_t Channel_Group[8];
3043} Channel_List_t;
3044
3045typedef struct
3046{
3047 guint8 MESSAGE_TYPE;
3048
3049 guint8 PAGE_MODE;
3050 guint8 CHANGE_MARK;
3051 guint8 INDEX;
3052 guint8 COUNT;
3053
3054 Channel_List_t Channel_List;
3055
3056} PSI4_t;
3057
3058
3059/* < PSI5 message content > */
3060typedef struct
3061{
3062 guint8 existRepParamsFDD;
3063 guint8 RepQuantFDD;
3064 guint8 MultiratReportingFDD;
3065
3066 guint8 existReportingParamsFDD;
3067 guint8 ReportingOffsetFDD;
3068 guint8 ReportingThresholdFDD;
3069
3070 guint8 existMultiratReportingTDD;
3071 guint8 MultiratReportingTDD;
3072
3073 guint8 existOffsetThresholdTDD;
3074 guint8 ReportingOffsetTDD;
3075 guint8 ReportingThresholdTDD;
3076} GPRSMeasurementParams3G_PSI5_t;
3077
3078typedef struct
3079{
3080 guint8 REPORT_TYPE;
3081 guint8 REPORTING_RATE;
3082 guint8 INVALID_BSIC_REPORTING;
3083 guint8 Exist_NCC_PERMITTED;
3084 guint8 NCC_PERMITTED;
Bill Meierbcc64082020-01-28 15:50:46 +01003085
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03003086 gboolean Exist_GPRSMeasurementParams;
3087 MeasurementParams_t GPRSMeasurementParams;
3088 gboolean Exist_GPRSMeasurementParams3G;
3089 GPRSMeasurementParams3G_PSI5_t GPRSMeasurementParams3G;
3090} ENH_Reporting_Parameters_t;
3091
3092typedef struct
3093{
3094 guint8 Exist_OffsetThreshold_700;
3095 OffsetThreshold_t OffsetThreshold_700;
3096 guint8 Exist_OffsetThreshold_810;
3097 OffsetThreshold_t OffsetThreshold_810;
Bill Meierbcc64082020-01-28 15:50:46 +01003098} PSI5_AdditionsR7;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03003099
3100typedef struct
3101{
3102 guint8 Exist_GPRS_AdditionalMeasurementParams3G;
3103 GPRS_AdditionalMeasurementParams3G_t GPRS_AdditionalMeasurementParams3G;
3104 guint8 Exist_AdditionsR7;
3105 PSI5_AdditionsR7 AdditionsR7;
Bill Meierbcc64082020-01-28 15:50:46 +01003106} PSI5_AdditionsR5;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03003107
3108typedef struct
3109{
3110 guint8 Exist_ENH_Reporting_Param;
3111 ENH_Reporting_Parameters_t ENH_Reporting_Param;
3112 guint8 Exist_AdditionsR5;
3113 PSI5_AdditionsR5 AdditionisR5;
Bill Meierbcc64082020-01-28 15:50:46 +01003114} PSI5_AdditionsR99;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03003115
3116typedef struct
3117{
3118 guint8 MESSAGE_TYPE;
3119
3120 guint8 PAGE_MODE;
3121 guint8 CHANGE_MARK;
3122 guint8 INDEX;
3123 guint8 COUNT;
3124
3125 guint8 Eixst_NC_Meas_Param;
3126 NC_Measurement_Parameters_t NC_Meas_Param;
3127 guint8 Exist_AdditionsR99;
3128 PSI5_AdditionsR99 AdditionsR99;
3129} PSI5_t;
3130
3131
3132
3133
3134/* < PSI13 message content >
3135 * Combined with SI13
3136 */
3137typedef struct
3138{
3139 guint8 Exist_LB_MS_TXPWR_MAX_CCH;
3140 guint8 LB_MS_TXPWR_MAX_CCH;
3141 guint8 SI2n_SUPPORT;
3142}PSI13_AdditionsR6;
3143
3144typedef PSI13_AdditionsR6 SI13_AdditionsR6;
3145
3146typedef struct
3147{
3148 guint8 SI_STATUS_IND;
3149 guint8 Exist_AdditionsR6;
3150 PSI13_AdditionsR6 AdditionsR6;
3151}PSI13_AdditionsR4;
3152
3153typedef PSI13_AdditionsR4 SI13_AdditionsR4;
3154
3155typedef struct
3156{
3157 guint8 SGSNR;
3158 gboolean Exist_AdditionsR4;
3159 PSI13_AdditionsR4 AdditionsR4;
3160}PSI13_AdditionR99;
3161
3162typedef PSI13_AdditionR99 SI13_AdditionR99;
3163
3164typedef struct
3165{
3166 guint8 Exist;
3167 guint8 MESSAGE_TYPE;
3168
3169 guint8 PAGE_MODE;
3170 guint8 BCCH_CHANGE_MARK;
3171 guint8 SI_CHANGE_FIELD;
3172
3173 guint8 Exist_MA;
3174 guint8 SI13_CHANGE_MARK;
3175 GPRS_Mobile_Allocation_t GPRS_Mobile_Allocation;
3176
3177 guint8 UnionType;
3178 union
3179 {
3180 PBCCH_Not_present_t PBCCH_Not_present;
3181 PBCCH_present_t PBCCH_present;
3182 } u;
3183
3184 gboolean Exist_AdditionsR99;
3185 PSI13_AdditionR99 AdditionsR99;
3186} PSI13_t;
3187
3188/* SI_13_t is combined in the PSI13 structure */
3189typedef PSI13_t SI_13_t;
3190
3191/* < Packet PRACH Parameters message content > */
3192typedef struct
3193{
3194 guint8 MESSAGE_TYPE;
3195 guint8 PAGE_MODE;
3196
3197
3198 PRACH_Control_t PRACH_Control;
3199} Packet_PRACH_Parameters_t;
3200
3201/* < Packet Access Reject message content > */
3202typedef struct
3203{
3204 guint8 UnionType;
3205 union
3206 {
3207 guint32 TLLI;
3208 Packet_Request_Reference_t Packet_Request_Reference;
3209 Global_TFI_t Global_TFI;
3210 } u;
3211} RejectID_t;
3212
3213typedef struct
3214{
3215 RejectID_t ID;
3216
3217 guint8 Exist_Wait;
3218 guint8 WAIT_INDICATION;
3219 guint8 WAIT_INDICATION_SIZE;
3220} Reject_t;
3221
3222typedef struct
3223{
3224 guint8 MESSAGE_TYPE;
3225 guint8 PAGE_MODE;
3226
3227 guint8 IndexToOur;
3228 guint8 Count_Reject;
3229 Reject_t Reject[5];
3230} Packet_Access_Reject_t;
3231
3232/* < Packet Cell Change Order message content > */
3233typedef struct
3234{
3235 guint8 CELL_BAR_ACCESS_2;
3236 guint8 EXC_ACC;
3237 guint8 SAME_RA_AS_SERVING_CELL;
3238
3239 guint8 Exist_RXLEV_and_TXPWR;
3240 guint8 GPRS_RXLEV_ACCESS_MIN;
3241 guint8 GPRS_MS_TXPWR_MAX_CCH;
3242
3243 guint8 Exist_OFFSET_and_TIME;
3244 guint8 GPRS_TEMPORARY_OFFSET;
3245 guint8 GPRS_PENALTY_TIME;
3246
3247 guint8 Exist_GPRS_RESELECT_OFFSET;
3248 guint8 GPRS_RESELECT_OFFSET;
3249
3250 guint8 Exist_HCS;
3251 HCS_t HCS;
3252
3253 guint8 Exist_SI13_PBCCH_Location;
3254 SI13_PBCCH_Location_t SI13_PBCCH_Location;
3255} Cell_Selection_2_t;
3256
3257typedef struct
3258{
3259 guint8 FREQUENCY_DIFF;
3260 guint8 BSIC;
3261 Cell_Selection_t Cell_Selection;
3262} h_FreqBsicCell_t;
3263
3264typedef struct
3265{
3266 guint8 FREQ_DIFF_LENGTH;
3267 guint8 FREQUENCY_DIFF;
3268 guint8 BSIC;
3269
3270 gboolean Exist_CellSelectionParams;
3271 Cell_Selection_2_t CellSelectionParams;
3272} CellSelectionParamsWithFreqDiff_t;
3273
3274typedef struct
3275{
3276 guint16 START_FREQUENCY;
3277 guint8 BSIC;
3278
3279 guint8 Exist_Cell_Selection;
3280 Cell_Selection_2_t Cell_Selection;
3281
3282 guint8 NR_OF_FREQUENCIES;
3283 guint8 FREQ_DIFF_LENGTH;
3284
3285
3286 CellSelectionParamsWithFreqDiff_t CellSelectionParamsWithFreqDiff[32];
3287} Add_Frequency_list_t;
3288
3289typedef struct
3290{
3291 guint8 REMOVED_FREQ_INDEX;
3292} Removed_Freq_Index_t;
3293
3294typedef struct
3295{
3296 guint8 Exist_REMOVED_FREQ;
3297 guint8 NR_OF_REMOVED_FREQ;
3298 Removed_Freq_Index_t Removed_Freq_Index[32];
3299
3300 guint8 Count_Add_Frequency;
3301 Add_Frequency_list_t Add_Frequency[32];
3302} NC_Frequency_list_t;
3303
3304
3305typedef struct
3306{
3307 guint8 NETWORK_CONTROL_ORDER;
3308
3309 guint8 Exist_NC;
3310 guint8 NC_NON_DRX_PERIOD;
3311 guint8 NC_REPORTING_PERIOD_I;
3312 guint8 NC_REPORTING_PERIOD_T;
3313
3314 guint8 Exist_NC_FREQUENCY_LIST;
3315 NC_Frequency_list_t NC_Frequency_list;
3316} NC_Measurement_Parameters_with_Frequency_List_t;
3317
3318
3319typedef struct
3320{
3321 guint8 BA_IND;
3322 guint8 BA_IND_3G;
3323} BA_IND_t;
3324
3325typedef struct
3326{
3327 guint8 BA_USED;
3328 guint8 BA_USED_3G;
3329} BA_USED_t;
3330
3331typedef struct
3332{
3333 guint8 RXLEV_SERVING_CELL;
3334} Serving_Cell_Data_t;
3335
3336typedef struct
3337{
3338 guint8 FREQUENCY_N;
3339 guint8 Exist_BSIC_N;
3340 guint8 BSIC_N;
3341 guint8 RXLEV_N;
3342} NC_Measurements_t;
3343
3344typedef struct
3345{
3346 guint8 BCCH_FREQ_N;
3347 guint8 BSIC_N;
3348 guint8 RXLEV_N;
3349} RepeatedInvalid_BSIC_Info_t;
3350
3351typedef struct
3352{
3353 guint8 Exist_REPORTING_QUANTITY;
3354 guint8 REPORTING_QUANTITY;
3355} REPORTING_QUANTITY_Instance_t;
3356
3357typedef struct
3358{
3359 guint8 NC_MODE;
3360 Serving_Cell_Data_t Serving_Cell_Data;
3361
3362 guint8 NUMBER_OF_NC_MEASUREMENTS;
3363 NC_Measurements_t NC_Measurements[6]; /* NC_Measurements * (val(NUMBER_OF_NC_MEASUREMENTS))
3364 Max 7 NC Measurements in one PACKET MEASUREMENT REPORT,
3365 but only 6 cells are updated in PACKET IDLE. */
3366} NC_Measurement_Report_t;
3367
3368typedef struct
3369{
3370 guint8 EXT_REPORTING_TYPE;
3371
3372 guint8 Exist_I_LEVEL;
3373 struct
3374 {
3375 guint8 Exist;
3376 guint8 I_LEVEL;
3377 } Slot[8];
3378
3379 guint8 NUMBER_OF_EXT_MEASUREMENTS;
3380 NC_Measurements_t EXT_Measurements[9]; /* EXT_Measurements * (val(NUMBER_OF_NC_MEASUREMENTS))
3381 Max 9 Ext Measurements in one PACKET MEASUREMENT REPORT */
3382} EXT_Measurement_Report_t;
3383
3384typedef struct
3385{
3386 guint8 CELL_LIST_INDEX_3G;
3387 guint8 REPORTING_QUANTITY;
3388} Measurements_3G_t;
3389
3390typedef struct
3391{
3392 guint32 UTRAN_CGI;
3393 guint8 Exist_PLMN_ID;
3394 PLMN_t Plmn_ID;
3395 guint32 CSG_ID;
3396 gboolean Access_Mode;
3397 guint8 REPORTING_QUANTITY;
Bill Meierbcc64082020-01-28 15:50:46 +01003398} UTRAN_CSG_Measurement_Report_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03003399
3400typedef struct
3401{
3402 guint32 EUTRAN_CGI;
3403 guint16 Tracking_Area_Code;
3404 guint8 Exist_PLMN_ID;
3405 PLMN_t Plmn_ID;
3406 guint32 CSG_ID;
3407 gboolean Access_Mode;
3408 guint8 REPORTING_QUANTITY;
Bill Meierbcc64082020-01-28 15:50:46 +01003409} EUTRAN_CSG_Measurement_Report_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03003410
3411typedef struct
3412{
3413 gboolean Exist_UTRAN_CSG_Meas_Rpt;
3414 UTRAN_CSG_Measurement_Report_t UTRAN_CSG_Meas_Rpt;
3415 gboolean Exist_EUTRAN_CSG_Meas_Rpt;
3416 EUTRAN_CSG_Measurement_Report_t EUTRAN_CSG_Meas_Rpt;
Bill Meierbcc64082020-01-28 15:50:46 +01003417} PMR_AdditionsR9_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03003418
3419typedef struct
3420{
3421 guint8 EUTRAN_FREQUENCY_INDEX;
3422 guint16 CELL_IDENTITY;
3423 guint8 REPORTING_QUANTITY;
Bill Meierbcc64082020-01-28 15:50:46 +01003424} EUTRAN_Measurement_Report_Body_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03003425
3426typedef struct
3427{
3428 guint8 N_EUTRAN;
3429 EUTRAN_Measurement_Report_Body_t Report[4];
Bill Meierbcc64082020-01-28 15:50:46 +01003430} EUTRAN_Measurement_Report_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03003431
3432typedef struct
3433{
3434 gboolean Exist_EUTRAN_Meas_Rpt;
3435 EUTRAN_Measurement_Report_t EUTRAN_Meas_Rpt;
3436 gboolean Exist_AdditionsR9;
3437 PMR_AdditionsR9_t AdditionsR9;
Bill Meierbcc64082020-01-28 15:50:46 +01003438} PMR_AdditionsR8_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03003439
3440typedef struct
3441{
3442 gboolean Exist_GRNTI;
3443 guint8 GRNTI;
3444 gboolean Exist_AdditionsR8;
3445 PMR_AdditionsR8_t AdditionsR8;
Bill Meierbcc64082020-01-28 15:50:46 +01003446} PMR_AdditionsR5_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03003447
3448typedef struct
3449{
3450 gboolean Exist_Info3G;
3451 guint8 UnionType;
3452 union
3453 {
3454 BA_USED_t BA_USED;
3455 guint8 PSI3_CHANGE_MARK;
3456 } u;
3457 guint8 PMO_USED;
3458
3459 /* N_3G bit(3): max value 7
3460 * Report part (csn): {<3G_CELL_LIST_INDEX:bit(7)><REPORTING_QUANTITY:bit(6)>}*(val(N_3G + 1))
3461 * Max 6 3G measurement structs in one PMR
3462 */
3463 gboolean Exist_MeasurementReport3G;
3464 guint8 N_3G;
3465 Measurements_3G_t Measurements_3G[6];
3466
3467 gboolean Exist_AdditionsR5;
3468 PMR_AdditionsR5_t AdditionsR5;
3469} PMR_AdditionsR99_t;
3470
3471typedef struct
3472{
3473 guint8 MESSAGE_TYPE;
3474 guint8 PayloadType;
3475 guint8 spare;
3476 guint8 R;
3477
3478 guint32 TLLI;
3479 guint8 Exist_PSI5_CHANGE_MARK;
3480 guint8 PSI5_CHANGE_MARK;
3481
3482 guint8 UnionType;
3483 union
3484 {
3485 NC_Measurement_Report_t NC_Measurement_Report;
3486 EXT_Measurement_Report_t EXT_Measurement_Report;
3487 } u;
3488
3489 gboolean Exist_AdditionsR99;
3490 PMR_AdditionsR99_t AdditionsR99;
3491} Packet_Measurement_Report_t;
3492
3493#define INV_BSIC_LIST_LEN (16)
3494
3495#define REPORT_QUANTITY_LIST_LEN (96) /* Specification specified up to 96 */
3496
3497typedef struct
3498{
3499 guint8 NC_MODE;
3500 guint8 UnionType;
3501 union
3502 {
3503 BA_USED_t BA_USED;
3504 guint8 PSI3_CHANGE_MARK;
3505 } u;
3506
3507 guint8 PMO_USED;
3508 guint8 BSIC_Seen;
3509 guint8 SCALE;
3510
3511 guint8 Exist_Serving_Cell_Data;
3512 Serving_Cell_Data_t Serving_Cell_Data;
3513
3514 guint8 Count_RepeatedInvalid_BSIC_Info;
3515 RepeatedInvalid_BSIC_Info_t RepeatedInvalid_BSIC_Info[INV_BSIC_LIST_LEN];
3516
3517 guint8 Exist_ReportBitmap;
3518 guint8 Count_REPORTING_QUANTITY_Instances;
3519 REPORTING_QUANTITY_Instance_t REPORTING_QUANTITY_Instances[REPORT_QUANTITY_LIST_LEN];
3520
3521} ENH_NC_Measurement_Report_t;
3522
3523typedef struct
3524{
3525 guint8 Exist_UTRAN_CSG_Target_Cell;
3526 UTRAN_CSG_Target_Cell_t UTRAN_CSG_Target_Cell;
3527 guint8 Exist_EUTRAN_CSG_Target_Cell;
Bill Meierbcc64082020-01-28 15:50:46 +01003528 EUTRAN_CSG_Target_Cell_t EUTRAN_CSG_Target_Cell;
3529} PEMR_AdditionsR9_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03003530
3531typedef struct
3532{
3533 gboolean Exist_REPORTING_QUANTITY;
3534 guint8 REPORTING_QUANTITY;
Bill Meierbcc64082020-01-28 15:50:46 +01003535} Bitmap_Report_Quantity_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03003536
3537typedef struct
3538{
3539 guint8 BITMAP_LENGTH;
3540 Bitmap_Report_Quantity_t Bitmap_Report_Quantity[128];
3541 gboolean Exist_EUTRAN_Meas_Rpt;
3542 EUTRAN_Measurement_Report_t EUTRAN_Meas_Rpt;
3543 gboolean Exist_AdditionsR9;
3544 PEMR_AdditionsR9_t AdditionsR9;
Bill Meierbcc64082020-01-28 15:50:46 +01003545} PEMR_AdditionsR8_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03003546
3547typedef struct
3548{
3549 gboolean Exist_GRNTI_Ext;
3550 guint8 GRNTI_Ext;
3551 gboolean Exist_AdditionsR8;
3552 PEMR_AdditionsR8_t AdditionsR8;
Bill Meierbcc64082020-01-28 15:50:46 +01003553} PEMR_AdditionsR5_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03003554
3555typedef struct
3556{
3557 guint8 MESSAGE_TYPE;
3558 guint8 PayloadType;
3559 guint8 spare;
3560 guint8 R;
3561
3562 guint32 TLLI;
3563
3564 ENH_NC_Measurement_Report_t Measurements;
3565
3566 gboolean Exist_AdditionsR5;
3567 PEMR_AdditionsR5_t AdditionsR5;
3568} Packet_Enh_Measurement_Report_t;
3569
3570typedef struct
3571{
3572 guint8 RXLEV_SERVING_CELL;
3573
3574 guint8 NUMBER_OF_NC_MEASUREMENTS;
3575 NC_Measurements_t NC_Measurements[6]; /* NC_Measurements * (val(NUMBER_OF_NC_MEASUREMENTS))
3576 Max 7 NC Measurements in one PACKET MEASUREMENT REPORT,
3577 but only 6 cells are updated in PACKET IDLE. */
3578} CCN_Measurement_Report_t;
3579
3580typedef struct
3581{
3582 guint16 ARFCN;
3583 guint8 BSIC;
3584} Target_Cell_GSM_Notif_t;
3585
3586typedef struct
3587{
3588 guint16 FDD_ARFCN;
3589 guint8 Exist_Bandwith_FDD;
3590 guint8 BANDWITH_FDD;
3591 guint16 SCRAMBLING_CODE;
3592} FDD_Target_Cell_Notif_t;
3593
3594typedef struct
3595{
3596 guint16 TDD_ARFCN;
3597 guint8 Exist_Bandwith_TDD;
3598 guint8 BANDWITH_TDD;
3599 guint8 CELL_PARAMETER;
3600 guint8 Sync_Case_TSTD;
Bill Meierbcc64082020-01-28 15:50:46 +01003601} TDD_Target_Cell_Notif_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03003602
3603typedef struct
3604{
3605 guint8 Exist_FDD_Description;
3606 FDD_Target_Cell_Notif_t FDD_Target_Cell_Notif;
3607 guint8 Exist_TDD_Description;
3608 TDD_Target_Cell_Notif_t TDD_Target_Cell;
3609 guint8 REPORTING_QUANTITY;
3610} Target_Cell_3G_Notif_t;
3611
3612typedef struct
3613{
3614 guint16 EARFCN;
3615 guint8 Exist_Measurement_Bandwidth;
3616 guint8 Measurement_Bandwidth;
3617 guint16 Physical_Layer_Cell_Identity;
3618 guint8 Reporting_Quantity;
Bill Meierbcc64082020-01-28 15:50:46 +01003619} Target_EUTRAN_Cell_Notif_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03003620
3621typedef struct
3622{
3623 guint8 EUTRAN_FREQUENCY_INDEX;
3624 guint16 CELL_IDENTITY;
3625 guint8 REPORTING_QUANTITY;
Bill Meierbcc64082020-01-28 15:50:46 +01003626} Eutran_Ccn_Measurement_Report_Cell_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03003627
3628typedef struct
3629{
3630 gboolean ThreeG_BA_USED;
3631 guint8 N_EUTRAN;
3632 Eutran_Ccn_Measurement_Report_Cell_t Eutran_Ccn_Measurement_Report_Cell[4];
Bill Meierbcc64082020-01-28 15:50:46 +01003633} Eutran_Ccn_Measurement_Report_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03003634
3635typedef struct
3636{
3637 guint8 Exist_Arfcn;
3638 guint16 Arfcn;
3639 guint8 bsic;
3640 guint8 Exist_3G_Target_Cell;
3641 Target_Cell_3G_Notif_t Target_Cell_3G_Notif;
3642 guint8 Exist_Eutran_Target_Cell;
3643 Target_EUTRAN_Cell_Notif_t Target_EUTRAN_Cell;
3644 guint8 Exist_Eutran_Ccn_Measurement_Report;
3645 Eutran_Ccn_Measurement_Report_t Eutran_Ccn_Measurement_Report;
Bill Meierbcc64082020-01-28 15:50:46 +01003646} Target_Cell_4G_Notif_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03003647
3648typedef struct
3649{
3650 guint8 UnionType;
3651 union
3652 {
3653 UTRAN_CSG_Measurement_Report_t UTRAN_CSG_Measurement_Report;
3654 EUTRAN_CSG_Measurement_Report_t EUTRAN_CSG_Measurement_Report;
3655 } u;
3656 guint8 Exist_Eutran_Ccn_Measurement_Report;
3657 Eutran_Ccn_Measurement_Report_t Eutran_Ccn_Measurement_Report;
Bill Meierbcc64082020-01-28 15:50:46 +01003658} Target_Cell_CSG_Notif_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03003659
3660typedef struct
3661{
3662 guint8 UnionType;
3663 union
3664 {
3665 Target_Cell_4G_Notif_t Target_Cell_4G_Notif;
3666 Target_Cell_CSG_Notif_t Target_Cell_CSG_Notif;
3667 } u;
Bill Meierbcc64082020-01-28 15:50:46 +01003668} Target_Other_RAT_2_Notif_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03003669
3670typedef struct
3671{
3672 guint8 UnionType;
3673 union
3674 {
3675 Target_Cell_3G_Notif_t Target_Cell_3G_Notif;
3676 Target_Other_RAT_2_Notif_t Target_Other_RAT_2_Notif;
3677 } u;
Bill Meierbcc64082020-01-28 15:50:46 +01003678
3679} Target_Other_RAT_Notif_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03003680
3681typedef struct
3682{
3683 guint8 UnionType;
3684 union
3685 {
3686 Target_Cell_GSM_Notif_t Target_Cell_GSM_Notif;
3687 Target_Other_RAT_Notif_t Target_Other_RAT_Notif;
3688 } u;
3689} Target_Cell_t;
3690
3691typedef struct
3692{
3693 guint8 Exist_BA_USED_3G;
3694 guint8 BA_USED_3G;
3695
3696 guint8 N_3G;
3697 Measurements_3G_t Measurements_3G[6];
3698} PCCN_AdditionsR6_t;
3699
3700/* < Packet Cell Change Notification message contents > */
3701typedef struct
3702{
3703 guint8 MESSAGE_TYPE;
3704 guint8 PayloadType;
3705 guint8 spare;
3706 guint8 R;
3707
3708 Global_TFI_t Global_TFI;
3709
3710 Target_Cell_t Target_Cell;
3711
3712 guint8 UnionType;
3713 union
3714 {
3715 guint8 BA_IND;
3716 guint8 PSI3_CHANGE_MARK;
3717 } u;
3718 guint8 PMO_USED;
3719 guint8 PCCN_SENDING;
3720 CCN_Measurement_Report_t CCN_Measurement_Report;
3721
3722 gboolean Exist_AdditionsR6;
3723 PCCN_AdditionsR6_t AdditionsR6;
3724} Packet_Cell_Change_Notification_t;
3725
3726/* < Packet Cell Change Order message contents > */
3727
3728
3729typedef struct
3730{
3731 guint8 FrequencyScrolling;
3732 guint8 BSIC;
3733} BSICDesc_t;
3734
3735
3736#define MAX_BSIC_DESCS (19) /* Due to message size (23 bytes) and header etc,
3737 * there cannot be more than 19 DESCS.
3738 */
3739
3740typedef struct
3741{
3742 gboolean Exist_IndexStartBA;
3743 guint8 IndexStartBA;
3744 guint8 BSIC;
3745 guint8 NumRemainingBSICs;
3746 BSICDesc_t BSICDesc[MAX_BSIC_DESCS];
3747} BSICList_t;
3748
3749typedef BSICList_t GPRSBSICList_t;
3750
3751#define MAX_RTD_VALUES (6)
3752
3753typedef struct
3754{
3755 guint8 NumRTDValues;
3756 guint16 RTD[MAX_RTD_VALUES];
3757} RTDValues_t;
3758
3759typedef struct
3760{
3761 gboolean Exist_StartValue;
3762 guint8 StartValue;
3763} BAIndexStartRTD_t;
3764
3765#define MAX_RTD_FREQS (32)
3766
3767typedef struct
3768{
3769 BAIndexStartRTD_t BAIndexStart;
3770 guint8 NumFreqs;
3771 RTDValues_t RTD_s[MAX_RTD_FREQS];
3772} RTDList_t;
3773
3774typedef struct
3775{
3776 gboolean Exist_ListRTD6;
3777 RTDList_t ListRTD6;
3778
3779 gboolean Exist_ListRTD12;
3780 RTDList_t ListRTD12;
3781} RealTimeDiffs_t;
3782
3783
3784typedef MeasurementParams_t GPRSMeasurementParams_PMO_PCCO_t;
3785
3786typedef struct {
3787 gboolean existMultiratReporting;
3788 guint8 MultiratReporting;
3789
3790 gboolean existOffsetThreshold;
3791 OffsetThreshold_t OffsetThreshold;
3792} MultiratParams3G_t;
3793
3794typedef struct
3795{
3796 guint8 Qsearch_P;
3797 guint8 SearchPrio3G;
3798
3799 gboolean existRepParamsFDD;
3800 guint8 RepQuantFDD;
3801 guint8 MultiratReportingFDD;
3802
3803 gboolean existOffsetThreshold;
3804 OffsetThreshold_t OffsetThreshold;
3805
3806 MultiratParams3G_t ParamsTDD;
3807 MultiratParams3G_t ParamsCDMA2000;
3808} ENH_GPRSMeasurementParams3G_PMO_t;
3809
3810
3811typedef struct
3812{
3813 guint8 Qsearch_P;
3814 guint8 SearchPrio3G;
3815
3816 gboolean existRepParamsFDD;
3817 guint8 RepQuantFDD;
3818 guint8 MultiratReportingFDD;
3819
3820 gboolean existOffsetThreshold;
3821 OffsetThreshold_t OffsetThreshold;
3822
3823 MultiratParams3G_t ParamsTDD;
3824} ENH_GPRSMeasurementParams3G_PCCO_t;
3825
3826
3827typedef struct
3828{
3829 guint8 Qsearch_p;
3830 guint8 SearchPrio3G;
3831
3832 guint8 existRepParamsFDD;
3833 guint8 RepQuantFDD;
3834 guint8 MultiratReportingFDD;
3835
3836 guint8 existReportingParamsFDD;
3837 guint8 ReportingOffsetFDD;
3838 guint8 ReportingThresholdFDD;
3839
3840 guint8 existMultiratReportingTDD;
3841 guint8 MultiratReportingTDD;
3842
3843 guint8 existOffsetThresholdTDD;
3844 guint8 ReportingOffsetTDD;
3845 guint8 ReportingThresholdTDD;
3846} GPRSMeasurementParams3G_t;
3847
3848typedef struct
3849{
3850 guint8 REMOVED_3GCELL_INDEX;
3851 guint8 CELL_DIFF_LENGTH_3G;
3852 guint8 CELL_DIFF_3G;
3853} N2_t;
3854
3855typedef struct
3856{
3857 guint8 N2_Count;
3858 N2_t N2s[32];
3859} N1_t;
3860
3861typedef struct
3862{
3863 guint8 N1_Count;
3864 N1_t N1s[4];
3865} Removed3GCellDescription_t;
3866
3867typedef struct
3868{
3869 guint8 Complete_This;
3870} CDMA2000_Description_t;
3871
3872typedef struct {
3873 guint8 ZERO;
3874 guint16 UARFCN;
3875 guint8 Indic0;
3876 guint8 NrOfCells;
3877 guint8 BitsInCellInfo;
3878 guint8 CellInfo[16]; /* bitmap compressed according to "Range 1024" algorithm (04.18/9.1.54) */
3879} UTRAN_FDD_NeighbourCells_t;
3880
3881typedef struct {
3882 gboolean existBandwidth;
3883 guint8 Bandwidth;
3884 guint8 NrOfFrequencies;
3885 UTRAN_FDD_NeighbourCells_t CellParams[8];
3886} UTRAN_FDD_Description_t;
3887
3888typedef struct {
3889 guint8 ZERO;
3890 guint16 UARFCN;
3891 guint8 Indic0;
3892 guint8 NrOfCells;
3893 guint8 BitsInCellInfo;
3894 guint8 CellInfo[16]; /* bitmap compressed according to "Range 512" algorithm */
3895} UTRAN_TDD_NeighbourCells_t;
3896
3897typedef struct {
3898 gboolean existBandwidth;
3899 guint8 Bandwidth;
3900 guint8 NrOfFrequencies;
3901 UTRAN_TDD_NeighbourCells_t CellParams[8];
3902} UTRAN_TDD_Description_t;
3903
3904typedef struct
3905{
3906 guint8 Exist_Index_Start_3G;
3907 guint8 Index_Start_3G;
3908 guint8 Exist_Absolute_Index_Start_EMR;
3909 guint8 Absolute_Index_Start_EMR;
3910 guint8 Exist_UTRAN_FDD_Description;
3911 UTRAN_FDD_Description_t UTRAN_FDD_Description;
3912 guint8 Exist_UTRAN_TDD_Description;
3913 UTRAN_TDD_Description_t UTRAN_TDD_Description;
3914 guint8 Exist_CDMA2000_Description;
3915 CDMA2000_Description_t CDMA2000_Description;
3916 guint8 Exist_Removed3GCellDescription;
3917 Removed3GCellDescription_t Removed3GCellDescription;
3918} NeighbourCellDescription3G_PMO_t;
3919
3920typedef struct
3921{
3922 guint8 Exist_Index_Start_3G;
3923 guint8 Index_Start_3G;
3924 guint8 Exist_Absolute_Index_Start_EMR;
3925 guint8 Absolute_Index_Start_EMR;
3926 guint8 Exist_UTRAN_FDD_Description;
3927 UTRAN_FDD_Description_t UTRAN_FDD_Description;
3928 guint8 Exist_UTRAN_TDD_Description;
3929 UTRAN_TDD_Description_t UTRAN_TDD_Description;
3930 guint8 Exist_Removed3GCellDescription;
3931 Removed3GCellDescription_t Removed3GCellDescription;
3932} NeighbourCellDescription3G_PCCO_t;
3933
3934typedef struct
3935{
3936 guint8 UnionType;
3937 union
3938 {
3939 BA_IND_t BA_IND;
3940 guint8 PSI3_CHANGE_MARK;
3941 } u;
3942
3943 guint8 PMO_IND;
3944
3945 guint8 REPORT_TYPE;
3946 guint8 REPORTING_RATE;
3947 guint8 INVALID_BSIC_REPORTING;
3948
3949 gboolean Exist_NeighbourCellDescription3G;
3950 NeighbourCellDescription3G_PMO_t NeighbourCellDescription3G;
3951
3952 gboolean Exist_GPRSReportPriority;
3953 GPRSReportPriority_t GPRSReportPriority;
3954
3955 gboolean Exist_GPRSMeasurementParams;
3956 GPRSMeasurementParams_PMO_PCCO_t GPRSMeasurementParams;
3957 gboolean Exist_GPRSMeasurementParams3G;
3958 ENH_GPRSMeasurementParams3G_PMO_t GPRSMeasurementParams3G;
3959} ENH_Measurement_Parameters_PMO_t;
3960
3961typedef struct
3962{
3963 guint8 UnionType;
3964 union
3965 {
3966 BA_IND_t BA_IND;
3967 guint8 PSI3_CHANGE_MARK;
3968 } u;
3969
3970 guint8 PMO_IND;
3971
3972 guint8 REPORT_TYPE;
3973 guint8 REPORTING_RATE;
3974 guint8 INVALID_BSIC_REPORTING;
3975
3976 gboolean Exist_NeighbourCellDescription3G;
3977 NeighbourCellDescription3G_PCCO_t NeighbourCellDescription3G;
3978
3979 gboolean Exist_GPRSReportPriority;
3980 GPRSReportPriority_t GPRSReportPriority;
3981
3982 gboolean Exist_GPRSMeasurementParams;
3983 GPRSMeasurementParams_PMO_PCCO_t GPRSMeasurementParams;
3984 gboolean Exist_GPRSMeasurementParams3G;
3985 ENH_GPRSMeasurementParams3G_PCCO_t GPRSMeasurementParams3G;
3986} ENH_Measurement_Parameters_PCCO_t;
3987
3988typedef struct
3989{
3990 guint8 UnionType;
3991 union
3992 {
3993 Global_TFI_t Global_TFI;
3994 guint32 TLLI;
3995 } u;
3996} PacketCellChangeOrderID_t;
3997
3998typedef struct
3999{
4000 guint8 CELL_BAR_QUALIFY_3;
4001 guint8 Exist_SI13_Alt_PBCCH_Location;
4002 SI13_PBCCH_Location_t SI13_Alt_PBCCH_Location;
4003} lu_ModeCellSelectionParameters_t;
4004
4005typedef struct
4006{
4007 guint8 Exist_lu_ModeCellSelectionParams;
4008 lu_ModeCellSelectionParameters_t lu_ModeCellSelectionParameters;
4009} lu_ModeCellSelectionParams_t;
4010
4011typedef struct
4012{
4013 lu_ModeCellSelectionParams_t lu_ModeCellSelectionParameters;
4014 guint8 NR_OF_FREQUENCIES;
4015 lu_ModeCellSelectionParams_t lu_ModeCellSelectionParams[32];
4016} lu_ModeNeighbourCellParams_t;
4017
4018typedef struct
4019{
4020 guint8 CELL_BAR_QUALIFY_3;
4021 guint8 SAME_RA_AS_SERVING_CELL;
4022
4023 guint8 Exist_RXLEV_and_TXPWR;
4024 guint8 GPRS_RXLEV_ACCESS_MIN;
4025 guint8 GPRS_MS_TXPWR_MAX_CCH;
4026
4027 guint8 Exist_OFFSET_and_TIME;
4028 guint8 GPRS_TEMPORARY_OFFSET;
4029 guint8 GPRS_PENALTY_TIME;
4030
4031 guint8 Exist_GPRS_RESELECT_OFFSET;
4032 guint8 GPRS_RESELECT_OFFSET;
4033
4034 guint8 Exist_HCS;
4035 HCS_t HCS;
4036
4037 guint8 Exist_SI13_Alt_PBCCH_Location;
4038 SI13_PBCCH_Location_t SI13_Alt_PBCCH_Location;
4039} lu_ModeOnlyCellSelection_t;
4040
4041typedef struct
4042{
4043 guint8 FREQ_DIFF_LENGTH;
4044 guint8 FREQUENCY_DIFF;
4045 guint8 BSIC;
4046
4047 gboolean Exist_lu_ModeOnlyCellSelectionParams;
4048 lu_ModeOnlyCellSelection_t lu_ModeOnlyCellSelectionParams;
4049} lu_ModeOnlyCellSelectionParamsWithFreqDiff_t;
4050
4051typedef struct
4052{
4053 guint16 START_FREQUENCY;
4054 guint8 BSIC;
4055
4056 guint8 Exist_lu_ModeCellSelection;
4057 lu_ModeOnlyCellSelection_t lu_ModeOnlyCellSelection;
4058
4059 guint8 NR_OF_FREQUENCIES;
4060 guint8 FREQ_DIFF_LENGTH;
4061
4062 lu_ModeOnlyCellSelectionParamsWithFreqDiff_t lu_ModeOnlyCellSelectionParamsWithFreqDiff[32];
4063} Add_lu_ModeOnlyFrequencyList_t;
4064
4065typedef struct
4066{
4067 guint8 Count_Add_lu_ModeOnlyFrequencyList;
4068 Add_lu_ModeOnlyFrequencyList_t Add_lu_ModeOnlyFrequencyList[32];
4069} NC_lu_ModeOnlyCapableCellList_t;
4070
4071
4072typedef struct
4073{
4074 guint8 NumberOfFrequencyIndexes;
4075 guint8 UTRAN_FREQUENCY_INDEX_a[18];
4076
4077 gboolean existUTRAN_PRIORITY;
4078 guint8 UTRAN_PRIORITY;
4079
4080 guint8 THRESH_UTRAN_high;
4081
4082 gboolean existTHRESH_UTRAN_low;
4083 guint8 THRESH_UTRAN_low;
4084
4085 gboolean existUTRAN_QRXLEVMIN;
4086 guint8 UTRAN_QRXLEVMIN;
4087} RepeatedUTRAN_PriorityParameters_t;
4088
4089typedef struct
4090{
4091 gboolean existDEFAULT_UTRAN_Parameters;
4092 guint8 DEFAULT_UTRAN_PRIORITY;
4093 guint8 DEFAULT_THRESH_UTRAN;
4094 guint8 DEFAULT_UTRAN_QRXLEVMIN;
4095
4096 guint8 NumberOfPriorityParameters;
4097 RepeatedUTRAN_PriorityParameters_t RepeatedUTRAN_PriorityParameters_a[8];
4098} PriorityParametersDescription3G_PMO_t;
4099
4100typedef struct
4101{
4102 gboolean existEUTRAN_FDD_REPORTING_THRESHOLD_OFFSET;
4103 guint8 EUTRAN_FDD_REPORTING_THRESHOLD;
4104 gboolean existEUTRAN_FDD_REPORTING_THRESHOLD_2;
4105 guint8 EUTRAN_FDD_REPORTING_THRESHOLD_2;
4106 gboolean existEUTRAN_FDD_REPORTING_OFFSET;
4107 guint8 EUTRAN_FDD_REPORTING_OFFSET;
4108
4109 gboolean existEUTRAN_TDD_REPORTING_THRESHOLD_OFFSET;
4110 guint8 EUTRAN_TDD_REPORTING_THRESHOLD;
4111 gboolean existEUTRAN_TDD_REPORTING_THRESHOLD_2;
4112 guint8 EUTRAN_TDD_REPORTING_THRESHOLD_2;
4113 gboolean existEUTRAN_TDD_REPORTING_OFFSET;
4114 guint8 EUTRAN_TDD_REPORTING_OFFSET;
4115} EUTRAN_REPORTING_THRESHOLD_OFFSET_t;
4116
4117typedef struct
4118{
4119 guint8 Qsearch_P_EUTRAN;
4120 guint8 EUTRAN_REP_QUANT;
4121 guint8 EUTRAN_MULTIRAT_REPORTING;
4122 EUTRAN_REPORTING_THRESHOLD_OFFSET_t EUTRAN_REPORTING_THRESHOLD_OFFSET;
4123} GPRS_EUTRAN_MeasurementParametersDescription_t;
4124
4125typedef struct
4126{
4127 guint16 EARFCN;
4128 gboolean existMeasurementBandwidth;
4129 guint8 MeasurementBandwidth;
4130} RepeatedEUTRAN_Cells_t;
4131
4132typedef struct
4133{
4134 guint8 nbrOfEUTRAN_Cells;
4135 RepeatedEUTRAN_Cells_t EUTRAN_Cells_a[6];
4136
4137 gboolean existEUTRAN_PRIORITY;
4138 guint8 EUTRAN_PRIORITY;
4139
4140 guint8 THRESH_EUTRAN_high;
4141
4142 gboolean existTHRESH_EUTRAN_low;
4143 guint8 THRESH_EUTRAN_low;
4144
4145 gboolean existEUTRAN_QRXLEVMIN;
4146 guint8 EUTRAN_QRXLEVMIN;
4147} RepeatedEUTRAN_NeighbourCells_t;
4148
4149typedef struct
4150{
4151 guint16 PCID;
4152} PCID_t;
4153
4154typedef struct
4155{
4156 guint8 PCID_Pattern_length;
4157 guint8 PCID_Pattern;
4158 guint8 PCID_Pattern_sense;
4159} PCID_Pattern_t;
4160
4161typedef struct
4162{
4163 guint8 NumberOfPCIDs;
4164 guint16 PCID_a[11];
4165
4166 gboolean existPCID_BITMAP_GROUP;
4167 guint8 PCID_BITMAP_GROUP;
4168
4169 guint8 NumberOfPCID_Patterns;
4170 PCID_Pattern_t PCID_Pattern_a[19];
4171} PCID_Group_IE_t;
4172
4173typedef struct
4174{
4175 guint8 EUTRAN_FREQUENCY_INDEX;
4176} EUTRAN_FREQUENCY_INDEX_t;
4177
4178typedef struct
4179{
4180 PCID_Group_IE_t NotAllowedCells;
4181 guint8 NumberOfFrequencyIndexes;
4182 EUTRAN_FREQUENCY_INDEX_t EUTRAN_FREQUENCY_INDEX_a[28];
4183} RepeatedEUTRAN_NotAllowedCells_t;
4184
4185typedef struct
4186{
4187 guint8 NumberOfMappings;
4188 PCID_Group_IE_t PCID_ToTA_Mapping_a[14];
4189
4190 guint8 NumberOfFrequencyIndexes;
4191 EUTRAN_FREQUENCY_INDEX_t EUTRAN_FREQUENCY_INDEX_a[28];
4192} RepeatedEUTRAN_PCID_to_TA_mapping_t;
4193
4194typedef struct
4195{
4196 guint8 EUTRAN_CCN_ACTIVE;
4197
4198 gboolean existGPRS_EUTRAN_MeasurementParametersDescription;
4199 GPRS_EUTRAN_MeasurementParametersDescription_t GPRS_EUTRAN_MeasurementParametersDescription;
4200
4201 guint8 nbrOfRepeatedEUTRAN_NeighbourCellsStructs;
4202 RepeatedEUTRAN_NeighbourCells_t RepeatedEUTRAN_NeighbourCells_a[4];
4203
4204 guint8 NumberOfNotAllowedCells;
4205 RepeatedEUTRAN_NotAllowedCells_t RepeatedEUTRAN_NotAllowedCells_a[14];
4206
4207 guint8 NumberOfMappings;
4208 RepeatedEUTRAN_PCID_to_TA_mapping_t RepeatedEUTRAN_PCID_to_TA_mapping_a[19];
4209} EUTRAN_ParametersDescription_PMO_t;
4210
4211typedef struct
4212{
4213 guint8 GERAN_PRIORITY;
4214 guint8 THRESH_Priority_Search;
4215 guint8 THRESH_GSM_low;
4216 guint8 H_PRIO;
4217 guint8 T_Reselection;
4218} ServingCellPriorityParametersDescription_t;
4219
4220typedef struct
4221{
4222 gboolean existServingCellPriorityParametersDescription;
4223 ServingCellPriorityParametersDescription_t ServingCellPriorityParametersDescription;
4224
4225 gboolean existPriorityParametersDescription3G_PMO;
4226 PriorityParametersDescription3G_PMO_t PriorityParametersDescription3G_PMO;
4227
4228 gboolean existEUTRAN_ParametersDescription_PMO;
4229 EUTRAN_ParametersDescription_PMO_t EUTRAN_ParametersDescription_PMO;
4230} PriorityAndEUTRAN_ParametersDescription_PMO_t;
4231
4232typedef struct
4233{
4234 guint8 PSC_Pattern_length;
4235 guint8 PSC_Pattern;
4236 gboolean PSC_Pattern_sense;
Bill Meierbcc64082020-01-28 15:50:46 +01004237} PSC_Pattern_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004238
4239typedef struct
4240{
4241 guint8 PSC_Count;
4242 guint16 PSC[32];
4243 guint8 PSC_Pattern_Count;
4244 PSC_Pattern_t PSC_Pattern[32];
Bill Meierbcc64082020-01-28 15:50:46 +01004245} PSC_Group_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004246
4247typedef struct
4248{
4249 PSC_Group_t CSG_PSC_SPLIT;
4250 guint8 Count;
4251 guint8 UTRAN_FREQUENCY_INDEX[32];
Bill Meierbcc64082020-01-28 15:50:46 +01004252} ThreeG_CSG_Description_Body_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004253
4254typedef struct
4255{
4256 guint8 Count;
4257 ThreeG_CSG_Description_Body_t ThreeG_CSG_Description_Body[32];
Bill Meierbcc64082020-01-28 15:50:46 +01004258} ThreeG_CSG_Description_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004259
4260typedef struct
4261{
4262 PSC_Group_t CSG_PCI_SPLIT;
4263 guint8 Count;
4264 guint8 EUTRAN_FREQUENCY_INDEX[32];
Bill Meierbcc64082020-01-28 15:50:46 +01004265} EUTRAN_CSG_Description_Body_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004266
4267typedef struct
4268{
4269 guint8 Count;
4270 EUTRAN_CSG_Description_Body_t EUTRAN_CSG_Description_Body[32];
Bill Meierbcc64082020-01-28 15:50:46 +01004271} EUTRAN_CSG_Description_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004272
4273typedef struct
4274{
4275 gboolean existMeasurement_Control_EUTRAN;
4276 gboolean Measurement_Control_EUTRAN;
4277 guint8 EUTRAN_FREQUENCY_INDEX_top;
4278 guint8 Count_EUTRAN_FREQUENCY_INDEX;
4279 guint8 EUTRAN_FREQUENCY_INDEX[32];
Bill Meierbcc64082020-01-28 15:50:46 +01004280
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004281 gboolean existMeasurement_Control_UTRAN;
4282 gboolean Measurement_Control_UTRAN;
4283 guint8 UTRAN_FREQUENCY_INDEX_top;
4284 guint8 Count_UTRAN_FREQUENCY_INDEX;
4285 guint8 UTRAN_FREQUENCY_INDEX[32];
Bill Meierbcc64082020-01-28 15:50:46 +01004286} Meas_Ctrl_Param_Desp_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004287
4288typedef struct
4289{
4290 guint8 THRESH_EUTRAN_high_Q;
4291 gboolean existTHRESH_EUTRAN_low_Q;
4292 guint8 THRESH_EUTRAN_low_Q;
4293 gboolean existEUTRAN_QQUALMIN;
4294 guint8 EUTRAN_QQUALMIN;
4295 gboolean existEUTRAN_RSRPmin;
4296 guint8 EUTRAN_RSRPmin;
Bill Meierbcc64082020-01-28 15:50:46 +01004297} Reselection_Based_On_RSRQ_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004298
4299typedef struct
4300{
4301 guint8 Count_EUTRAN_FREQUENCY_INDEX;
4302 guint8 EUTRAN_FREQUENCY_INDEX[32];
4303 guint8 UnionType;
4304 union
4305 {
4306 guint8 EUTRAN_Qmin;
4307 Reselection_Based_On_RSRQ_t Reselection_Based_On_RSRQ;
4308 } u;
Bill Meierbcc64082020-01-28 15:50:46 +01004309} Rept_EUTRAN_Enh_Cell_Resel_Param_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004310
4311typedef struct
4312{
4313 guint8 Count;
4314 Rept_EUTRAN_Enh_Cell_Resel_Param_t Repeated_EUTRAN_Enhanced_Cell_Reselection_Parameters[32];
Bill Meierbcc64082020-01-28 15:50:46 +01004315} Enh_Cell_Reselect_Param_Desp_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004316
4317typedef struct
4318{
4319 gboolean existUTRAN_CSG_FDD_REPORTING_THRESHOLD;
4320 guint8 UTRAN_CSG_FDD_REPORTING_THRESHOLD;
4321 guint8 UTRAN_CSG_FDD_REPORTING_THRESHOLD_2;
4322 gboolean existUTRAN_CSG_TDD_REPORTING_THRESHOLD;
4323 guint8 UTRAN_CSG_TDD_REPORTING_THRESHOLD;
Bill Meierbcc64082020-01-28 15:50:46 +01004324} UTRAN_CSG_Cells_Reporting_Desp_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004325
4326typedef struct
4327{
4328 gboolean existEUTRAN_CSG_FDD_REPORTING_THRESHOLD;
4329 guint8 EUTRAN_CSG_FDD_REPORTING_THRESHOLD;
4330 guint8 EUTRAN_CSG_FDD_REPORTING_THRESHOLD_2;
4331 gboolean existEUTRAN_CSG_TDD_REPORTING_THRESHOLD;
4332 guint8 EUTRAN_CSG_TDD_REPORTING_THRESHOLD;
4333 guint8 EUTRAN_CSG_TDD_REPORTING_THRESHOLD_2;
Bill Meierbcc64082020-01-28 15:50:46 +01004334} EUTRAN_CSG_Cells_Reporting_Desp_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004335
4336typedef struct
4337{
4338 gboolean existUTRAN_CSG_Cells_Reporting_Description;
4339 UTRAN_CSG_Cells_Reporting_Desp_t UTRAN_CSG_Cells_Reporting_Description;
4340 gboolean existEUTRAN_CSG_Cells_Reporting_Description;
4341 EUTRAN_CSG_Cells_Reporting_Desp_t EUTRAN_CSG_Cells_Reporting_Description;
Bill Meierbcc64082020-01-28 15:50:46 +01004342} CSG_Cells_Reporting_Desp_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004343
4344typedef struct
4345{
4346 gboolean existEnhanced_Cell_Reselection_Parameters_Description;
4347 Enh_Cell_Reselect_Param_Desp_t Enhanced_Cell_Reselection_Parameters_Description;
Bill Meierbcc64082020-01-28 15:50:46 +01004348
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004349 gboolean existCSG_Cells_Reporting_Description;
4350 CSG_Cells_Reporting_Desp_t CSG_Cells_Reporting_Description;
Bill Meierbcc64082020-01-28 15:50:46 +01004351} PMO_AdditionsR9_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004352
4353typedef struct
4354{
4355 guint8 dummy;
Bill Meierbcc64082020-01-28 15:50:46 +01004356} Delete_All_Stored_Individual_Priorities_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004357
4358typedef struct
4359{
4360 guint8 Count;
4361 guint16 FDD_ARFCN[32];
Bill Meierbcc64082020-01-28 15:50:46 +01004362} Individual_UTRAN_Priority_FDD_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004363
4364typedef struct
4365{
4366 guint8 Count;
4367 guint16 TDD_ARFCN[32];
Bill Meierbcc64082020-01-28 15:50:46 +01004368} Individual_UTRAN_Priority_TDD_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004369
4370typedef struct
4371{
4372 guint8 UnionType;
4373 union
4374 {
4375 Individual_UTRAN_Priority_FDD_t Individual_UTRAN_Priority_FDD;
4376 Individual_UTRAN_Priority_TDD_t Individual_UTRAN_Priority_TDD;
4377 } u;
4378 guint8 UTRAN_PRIORITY;
Bill Meierbcc64082020-01-28 15:50:46 +01004379} Repeated_Individual_UTRAN_Priority_Parameters_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004380
4381typedef struct
4382{
4383 guint8 Exist_DEFAULT_UTRAN_PRIORITY;
4384 guint8 DEFAULT_UTRAN_PRIORITY;
4385 guint8 Repeated_Individual_UTRAN_Priority_Parameters_Count;
4386 Repeated_Individual_UTRAN_Priority_Parameters_t Repeated_Individual_UTRAN_Priority_Parameters[32];
Bill Meierbcc64082020-01-28 15:50:46 +01004387} ThreeG_Individual_Priority_Parameters_Description_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004388
4389typedef struct
4390{
4391 guint8 Count;
4392 guint16 EARFCN[32];
4393 guint8 EUTRAN_PRIORITY;
Bill Meierbcc64082020-01-28 15:50:46 +01004394} Repeated_Individual_EUTRAN_Priority_Parameters_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004395
4396typedef struct
4397{
4398 guint8 Exist_DEFAULT_EUTRAN_PRIORITY;
4399 guint8 DEFAULT_EUTRAN_PRIORITY;
4400 guint8 Count;
4401 Repeated_Individual_EUTRAN_Priority_Parameters_t Repeated_Individual_EUTRAN_Priority_Parameters[32];
Bill Meierbcc64082020-01-28 15:50:46 +01004402} EUTRAN_Individual_Priority_Parameters_Description_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004403
4404typedef struct
4405{
4406 guint8 GERAN_PRIORITY;
4407 guint8 Exist_3G_Individual_Priority_Parameters_Description;
4408 ThreeG_Individual_Priority_Parameters_Description_t ThreeG_Individual_Priority_Parameters_Description;
4409 guint8 Exist_EUTRAN_Individual_Priority_Parameters_Description;
4410 EUTRAN_Individual_Priority_Parameters_Description_t EUTRAN_Individual_Priority_Parameters_Description;
4411 guint8 Exist_T3230_timeout_value;
4412 guint8 T3230_timeout_value;
Bill Meierbcc64082020-01-28 15:50:46 +01004413} Provide_Individual_Priorities_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004414
4415typedef struct
4416{
4417 guint8 UnionType;
4418 union
4419 {
4420 Delete_All_Stored_Individual_Priorities_t Delete_All_Stored_Individual_Priorities;
4421 Provide_Individual_Priorities_t Provide_Individual_Priorities;
4422 } u;
Bill Meierbcc64082020-01-28 15:50:46 +01004423} Individual_Priorities_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004424
4425typedef struct
4426{
4427 gboolean existBA_IND_3G_PMO_IND;
4428 guint8 BA_IND_3G;
4429 guint8 PMO_IND;
4430
4431 gboolean existPriorityAndEUTRAN_ParametersDescription_PMO;
4432 PriorityAndEUTRAN_ParametersDescription_PMO_t PriorityAndEUTRAN_ParametersDescription_PMO;
4433
4434 gboolean existIndividualPriorities_PMO;
4435 Individual_Priorities_t IndividualPriorities_PMO;
4436
4437 gboolean existThreeG_CSG_Description;
4438 ThreeG_CSG_Description_t ThreeG_CSG_Description_PMO;
4439
4440 gboolean existEUTRAN_CSG_Description;
4441 EUTRAN_CSG_Description_t EUTRAN_CSG_Description_PMO;
4442
4443 gboolean existMeasurement_Control_Parameters_Description;
4444 Meas_Ctrl_Param_Desp_t Measurement_Control_Parameters_Description_PMO;
4445
4446 gboolean existAdditionsR9;
4447 PMO_AdditionsR9_t AdditionsR9;
4448} PMO_AdditionsR8_t;
4449
4450typedef struct
4451{
4452 gboolean existREPORTING_OFFSET_THRESHOLD_700;
4453 guint8 REPORTING_OFFSET_700;
4454 guint8 REPORTING_THRESHOLD_700;
4455
4456 gboolean existREPORTING_OFFSET_THRESHOLD_810;
4457 guint8 REPORTING_OFFSET_810;
4458 guint8 REPORTING_THRESHOLD_810;
4459
4460 guint8 existAdditionsR8;
4461 PMO_AdditionsR8_t additionsR8;
4462} PMO_AdditionsR7_t;
4463
4464typedef struct
4465{
4466 guint8 CCN_ACTIVE_3G;
4467 guint8 existAdditionsR7;
4468 PMO_AdditionsR7_t additionsR7;
4469} PMO_AdditionsR6_t;
4470
4471typedef struct
4472{
4473 guint8 CCN_ACTIVE_3G;
4474} PCCO_AdditionsR6_t;
4475
4476typedef struct
4477{
4478 guint8 existGRNTI_Extension;
4479 guint8 GRNTI;
4480 guint8 exist_lu_ModeNeighbourCellParams;
4481 guint8 count_lu_ModeNeighbourCellParams;
4482 lu_ModeNeighbourCellParams_t lu_ModeNeighbourCellParams[32];
4483 guint8 existNC_lu_ModeOnlyCapableCellList;
4484 NC_lu_ModeOnlyCapableCellList_t NC_lu_ModeOnlyCapableCellList;
4485 guint8 existGPRS_AdditionalMeasurementParams3G;
4486 GPRS_AdditionalMeasurementParams3G_t GPRS_AdditionalMeasurementParams3G;
4487 guint8 existAdditionsR6;
4488 PMO_AdditionsR6_t additionsR6;
4489} PMO_AdditionsR5_t;
4490
4491typedef struct
4492{
4493 guint8 existGRNTI_Extension;
4494 guint8 GRNTI;
4495 guint8 exist_lu_ModeNeighbourCellParams;
4496 guint8 count_lu_ModeNeighbourCellParams;
4497 lu_ModeNeighbourCellParams_t lu_ModeNeighbourCellParams[32];
4498 guint8 existNC_lu_ModeOnlyCapableCellList;
4499 NC_lu_ModeOnlyCapableCellList_t NC_lu_ModeOnlyCapableCellList;
4500 guint8 existGPRS_AdditionalMeasurementParams3G;
4501 GPRS_AdditionalMeasurementParams3G_t GPRS_AdditionalMeasurementParams3G;
4502 guint8 existAdditionsR6;
4503 PCCO_AdditionsR6_t additionsR6;
4504} PCCO_AdditionsR5_t;
4505
4506typedef struct
4507{
4508 guint8 CCN_ACTIVE;
4509 guint8 Exist_CCN_Support_Description_ID;
4510 CCN_Support_Description_t CCN_Support_Description;
4511 guint8 Exist_AdditionsR5;
4512 PMO_AdditionsR5_t AdditionsR5;
4513} PMO_AdditionsR4_t;
4514
4515typedef struct
4516{
4517 guint8 CCN_ACTIVE;
4518 guint8 Exist_Container_ID;
4519 guint8 CONTAINER_ID;
4520 guint8 Exist_CCN_Support_Description_ID;
4521 CCN_Support_Description_t CCN_Support_Description;
4522 guint8 Exist_AdditionsR5;
4523 PCCO_AdditionsR5_t AdditionsR5;
4524} PCCO_AdditionsR4_t;
4525
4526typedef struct
4527{
4528 ENH_Measurement_Parameters_PCCO_t ENH_Measurement_Parameters;
4529 guint8 Exist_AdditionsR4;
4530 PCCO_AdditionsR4_t AdditionsR4;
4531} PCCO_AdditionsR99_t;
4532
4533typedef struct
4534{
4535 guint8 Exist_ENH_Measurement_Parameters;
4536 ENH_Measurement_Parameters_PMO_t ENH_Measurement_Parameters;
4537 guint8 Exist_AdditionsR4;
4538 PMO_AdditionsR4_t AdditionsR4;
4539} PMO_AdditionsR99_t;
4540
4541typedef struct
4542{
4543 guint8 Exist_LSA_Parameters;
4544 LSA_Parameters_t LSA_Parameters;
4545
4546 guint8 Exist_AdditionsR99;
4547 PMO_AdditionsR99_t AdditionsR99;
4548} PMO_AdditionsR98_t;
4549
4550typedef struct
4551{
4552 guint8 Exist_LSA_Parameters;
4553 LSA_Parameters_t LSA_Parameters;
4554
4555 guint8 Exist_AdditionsR99;
4556 PCCO_AdditionsR99_t AdditionsR99;
4557} PCCO_AdditionsR98_t;
4558
4559typedef struct
4560{
4561 guint8 IMMEDIATE_REL;
4562 guint16 ARFCN;
4563 guint8 BSIC;
4564 NC_Measurement_Parameters_with_Frequency_List_t NC_Measurement_Parameters;
4565
4566 guint8 Exist_AdditionsR98;
4567 PCCO_AdditionsR98_t AdditionsR98;
4568} Target_Cell_GSM_t;
4569
4570typedef struct
4571{
4572 guint8 Exist_EUTRAN_Target_Cell;
4573 EUTRAN_Target_Cell_t EUTRAN_Target_Cell;
4574 guint8 Exist_Individual_Priorities;
4575 Individual_Priorities_t Individual_Priorities;
Bill Meierbcc64082020-01-28 15:50:46 +01004576} Target_Cell_3G_AdditionsR8_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004577
4578typedef struct
4579{
4580 guint8 Exist_G_RNTI_Extention;
4581 guint8 G_RNTI_Extention;
4582 guint8 Exist_AdditionsR8;
4583 Target_Cell_3G_AdditionsR8_t AdditionsR8;
Bill Meierbcc64082020-01-28 15:50:46 +01004584} Target_Cell_3G_AdditionsR5_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004585
4586typedef struct
4587{
4588 /* 00 -- Message escape */
4589 guint8 IMMEDIATE_REL;
4590 guint8 Exist_FDD_Description;
4591 FDD_Target_Cell_t FDD_Target_Cell;
4592 guint8 Exist_TDD_Description;
4593 TDD_Target_Cell_t TDD_Target_Cell;
4594 guint8 Exist_AdditionsR5;
4595 Target_Cell_3G_AdditionsR5_t AdditionsR5;
4596} Target_Cell_3G_t;
4597
Bill Meierbcc64082020-01-28 15:50:46 +01004598#if 0
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004599#define TARGET_CELL_GSM 0
4600#define TARGET_CELL_3G 1
Bill Meierbcc64082020-01-28 15:50:46 +01004601#endif
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004602
4603typedef struct
4604{
4605 guint8 MESSAGE_TYPE;
4606 guint8 PAGE_MODE;
4607
4608 PacketCellChangeOrderID_t ID;
4609
4610 guint8 UnionType;
4611 union
4612 {
4613 Target_Cell_GSM_t Target_Cell_GSM;
4614 Target_Cell_3G_t Target_Cell_3G;
4615 } u;
4616
4617} Packet_Cell_Change_Order_t;
4618
4619/* < Packet Cell Change Continue message contents > */
4620typedef struct
4621{
4622 guint8 MESSAGE_TYPE;
4623 guint8 PAGE_MODE;
4624
4625 Global_TFI_t Global_TFI;
4626 guint8 Exist_ID;
4627 guint16 ARFCN;
4628 guint8 BSIC;
4629 guint8 CONTAINER_ID;
4630} Packet_Cell_Change_Continue_t;
4631
4632
4633/* < Packet Neighbour Cell Data message contents > */
4634typedef struct
4635{
4636 guint16 ARFCN;
4637 guint8 BSIC;
4638 guint8 CONTAINER[17]; /* PD (3 bits) + CD_LENGTH (5 bits) + 16 bytes of CONTAINER_DATA (max!) */
4639} PNCD_Container_With_ID_t;
4640
4641typedef struct
4642{
4643 guint8 CONTAINER[19]; /* PD (3 bits) + CD_LENGTH (5 bits) + 18 bytes of CONTAINER_DATA (max!) */
4644} PNCD_Container_Without_ID_t;
4645
4646typedef struct
4647{
4648 guint8 UnionType;
4649 union
4650 {
4651 PNCD_Container_Without_ID_t PNCD_Container_Without_ID;
4652 PNCD_Container_With_ID_t PNCD_Container_With_ID;
4653 } u;
4654} PNCDContainer_t;
4655
4656typedef struct
4657{
4658 guint8 MESSAGE_TYPE;
4659 guint8 PAGE_MODE;
4660 /* Fixed 0 */
4661 Global_TFI_t Global_TFI;
4662 guint8 CONTAINER_ID;
4663 guint8 spare;
4664 guint8 CONTAINER_INDEX;
4665
4666 PNCDContainer_t Container;
4667} Packet_Neighbour_Cell_Data_t;
4668
4669/* < Packet Serving Cell Data message contents > */
4670typedef struct
4671{
4672 guint8 MESSAGE_TYPE;
4673 guint8 PAGE_MODE;
4674 /* Fixed 0 */
4675 Global_TFI_t Global_TFI;
4676 guint8 spare;
4677 guint8 CONTAINER_INDEX;
4678 guint8 CONTAINER[19]; /* PD (3 bits) + CD_LENGTH (5 bits) + 18 bytes of CONTAINER_DATA (max!) */
4679} Packet_Serving_Cell_Data_t;
4680
4681/* < Packet Measurement Order message contents > */
4682typedef struct
4683{
4684 guint16 START_FREQUENCY;
4685 guint8 NR_OF_FREQUENCIES;
4686 guint8 FREQ_DIFF_LENGTH;
4687
4688 guint8 Count_FREQUENCY_DIFF;
4689 guint8 FREQUENCY_DIFF[31];/* bit (FREQ_DIFF_LENGTH) * NR_OF_FREQUENCIES --> MAX is bit(7) * 31 */
4690} EXT_Frequency_List_t;
4691
4692typedef struct
4693{
4694 guint8 MESSAGE_TYPE;
4695 guint8 PAGE_MODE;
4696
4697 PacketDownlinkID_t ID; /* use the PDA ID as it is the same as as the PMO */
4698
4699 guint8 PMO_INDEX;
4700 guint8 PMO_COUNT;
4701
4702 guint8 Exist_NC_Measurement_Parameters;
4703 NC_Measurement_Parameters_with_Frequency_List_t NC_Measurement_Parameters;
4704
4705 guint8 Exist_EXT_Measurement_Parameters;
4706
4707 guint8 Exist_AdditionsR98;
4708 PMO_AdditionsR98_t AdditionsR98;
4709} Packet_Measurement_Order_t;
4710
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004711/* Enhanced measurement report */
4712
4713typedef struct
4714{
4715 guint8 RXLEV_SERVING_CELL;
4716} ServingCellData_t;
4717
4718typedef struct
4719{
4720 guint8 BCCH_FREQ_NCELL;
4721 guint8 BSIC;
4722 guint8 RXLEV_NCELL;
4723} Repeated_Invalid_BSIC_Info_t;
4724
4725typedef struct
4726{
4727 gboolean Exist_REPORTING_QUANTITY;
4728 guint8 REPORTING_QUANTITY;
4729} REPORTING_QUANTITY_t;
4730
4731typedef struct
4732{
4733 guint8 NC_MODE;
4734 guint8 UnionType;
4735 union
4736 {
4737 BA_USED_t BA_USED;
4738 guint8 PSI3_CHANGE_MARK;
4739 } u;
4740 guint8 PMO_USED;
4741 guint8 SCALE;
4742 guint8 Exist_ServingCellData;
4743 ServingCellData_t ServingCellData;
4744 guint8 Count_Repeated_Invalid_BSIC_Info;
4745 Repeated_Invalid_BSIC_Info_t Repeated_Invalid_BSIC_Info[32];
4746
4747 gboolean Exist_Repeated_REPORTING_QUANTITY;
4748 guint8 Count_Repeated_Reporting_Quantity;
4749 REPORTING_QUANTITY_t Repeated_REPORTING_QUANTITY[96];
4750} NC_MeasurementReport_t;
4751
4752/* Packet Handover PHO ----------------- */
4753
4754typedef struct
4755{
4756 guint8 UnionType;
4757 union
4758 {
4759 guint8 MS_TimeslotAllocation;
4760 Power_Control_Parameters_t Power_Control_Parameters;
4761 } u;
4762} GlobalTimeslotDescription_t;
4763
4764typedef struct
4765{
4766 guint8 TimeslotAllocation;
4767 guint8 PFI;
4768 guint8 RLC_Mode;
4769 guint8 TFI_Assignment;
4770 guint8 ControlACK;
4771 guint8 Exist_EGPRS_WindowSize;
4772 guint8 EGPRS_WindowSize;
4773} PHO_DownlinkAssignment_t;
4774
4775typedef struct
4776{
4777 gboolean Exist_USF;
4778 guint8 USF;
4779} PHO_USF_1_7_t;
4780
4781typedef struct
4782{
4783 guint8 USF_0;
4784 PHO_USF_1_7_t USF_1_7[7];
4785 guint8 NBR_OfAllocatedTimeslots;
4786} USF_AllocationArray_t;
4787
4788typedef struct
4789{
4790 guint8 PFI;
4791 guint8 RLC_Mode;
4792 guint8 TFI_Assignment;
4793 guint8 Exist_ChannelCodingCommand;
4794 guint8 ChannelCodingCommand;
4795 guint8 Exist_EGPRS_ChannelCodingCommand;
4796 guint8 EGPRS_ChannelCodingCommand;
4797 guint8 Exist_EGPRS_WindowSize;
4798 guint8 EGPRS_WindowSize;
4799 guint8 USF_Granularity;
4800 guint8 Exist_TBF_TimeslotAllocation;
4801 guint8 TBF_TimeslotAllocation;
4802 guint8 UnionType;
4803 union
4804 {
4805 guint8 USF_SingleAllocation;
4806 USF_AllocationArray_t USF_AllocationArray;
4807 } u;
4808} PHO_UplinkAssignment_t;
4809
4810typedef struct
4811{
4812 GlobalTimeslotDescription_t GlobalTimeslotDescription;
4813 guint8 Exist_PHO_UA;
4814 PHO_UplinkAssignment_t PHO_UA;
4815} GlobalTimeslotDescription_UA_t;
4816
4817typedef struct
4818{
4819 guint8 Exist_ChannelCodingCommand;
4820 guint8 ChannelCodingCommand;
4821 guint8 Exist_GlobalTimeslotDescription_UA;
4822 GlobalTimeslotDescription_UA_t GTD_UA;
4823 guint8 Exist_DownlinkAssignment;
4824 PHO_DownlinkAssignment_t DownlinkAssignment;
4825} PHO_GPRS_t;
4826
4827
4828typedef struct
4829{
4830 guint8 Exist_EGPRS_WindowSize;
4831 guint8 EGPRS_WindowSize;
4832 guint8 LinkQualityMeasurementMode;
4833 guint8 Exist_BEP_Period2;
4834 guint8 BEP_Period2;
4835} EGPRS_Description_t;
4836
4837typedef struct
4838{
4839 guint8 Exist_EGPRS_Description;
4840 EGPRS_Description_t EGPRS_Description;
4841 guint8 Exist_DownlinkAssignment;
4842 PHO_DownlinkAssignment_t DownlinkAssignment;
4843} DownlinkTBF_t;
4844
4845typedef struct
4846{
4847 guint8 Exist_EGPRS_WindowSize;
4848 guint8 EGPRS_WindowSize;
4849 guint8 Exist_EGPRS_ChannelCodingCommand;
4850 guint8 EGPRS_ChannelCodingCommand;
4851 guint8 Exist_BEP_Period2;
4852 guint8 BEP_Period2;
4853 guint8 Exist_GlobalTimeslotDescription_UA;
4854 GlobalTimeslotDescription_UA_t GTD_UA;
4855 guint8 Exist_DownlinkTBF;
4856 DownlinkTBF_t DownlinkTBF;
Bill Meierbcc64082020-01-28 15:50:46 +01004857} PHO_EGPRS_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004858
4859typedef struct
4860{
4861 Global_Packet_Timing_Advance_t GlobalPacketTimingAdvance;
4862 guint8 Exist_PacketExtendedTimingAdvance;
4863 guint8 PacketExtendedTimingAdvance;
4864} PHO_TimingAdvance_t;
4865
4866typedef struct
4867{
4868 guint8 NAS_ContainerLength;
Vincent Helfree525bf92020-01-28 18:14:30 +01004869 guint8 Spare_1a;
4870 guint8 Spare_1b;
4871 guint8 Spare_1c;
4872 guint8 Old_XID;
4873 guint8 Spare_1e;
4874 guint8 Type_of_Ciphering_Algo;
4875 guint32 IOV_UI_value;
4876} NAS_Container_For_PS_HO_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004877
4878typedef struct
4879{
4880 guint8 RRC_ContainerLength;
4881 guint8 RRC_Container[MAX_RRC_CONTAINER_LENGTH];
4882} PS_HandoverTo_UTRAN_Payload_t;
4883
4884
4885typedef struct
4886{
4887 guint8 Exist_HandoverReference;
4888 guint8 HandoverReference;
4889 guint8 ARFCN;
4890 guint8 SI;
4891 guint8 NCI;
4892 guint8 BSIC;
4893 guint8 Exist_CCN_Active;
4894 guint8 CCN_Active;
4895 guint8 Exist_CCN_Active_3G;
4896 guint8 CCN_Active_3G;
4897 guint8 Exist_CCN_Support_Description;
4898 CCN_Support_Description_t CCN_Support_Description;
4899 Frequency_Parameters_t Frequency_Parameters;
4900 guint8 NetworkControlOrder;
4901 guint8 Exist_PHO_TimingAdvance;
4902 PHO_TimingAdvance_t PHO_TimingAdvance;
4903 guint8 Extended_Dynamic_Allocation;
4904 guint8 RLC_Reset;
4905 guint8 Exist_PO_PR;
4906 guint8 PO;
4907 guint8 PR_Mode;
4908 guint8 Exist_UplinkControlTimeslot;
4909 guint8 UplinkControlTimeslot;
4910 guint8 UnionType;
4911 union
4912 {
4913 PHO_GPRS_t PHO_GPRS_Mode;
4914 PHO_EGPRS_t PHO_EGPRS_Mode;
4915 } u;
4916} PHO_RadioResources_t;
4917
4918typedef struct
4919{
4920 PHO_RadioResources_t PHO_RadioResources;
4921 guint8 Exist_NAS_Container;
Vincent Helfree525bf92020-01-28 18:14:30 +01004922 NAS_Container_For_PS_HO_t NAS_Container;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004923} PS_HandoverTo_A_GB_ModePayload_t;
4924
4925typedef struct
4926{
4927 guint8 MessageType;
4928 guint8 PageMode;
4929 Global_TFI_t Global_TFI;
4930 guint8 ContainerID;
4931 guint8 UnionType;
4932 union
4933 {
4934 PS_HandoverTo_A_GB_ModePayload_t PS_HandoverTo_A_GB_ModePayload;
4935 PS_HandoverTo_UTRAN_Payload_t PS_HandoverTo_UTRAN_Payload;
4936 } u;
4937} Packet_Handover_Command_t;
4938
4939/* End Packet Handover */
4940
4941/* Packet Physical Information ----------------- */
4942
4943typedef struct
4944{
4945 guint8 MessageType;
4946 guint8 PageMode;
4947 Global_TFI_t Global_TFI;
4948 guint8 TimingAdvance;
4949} Packet_PhysicalInformation_t;
4950
4951/* End Packet Physical Information */
4952
4953
4954
4955/* ADDITIONAL MS RADIO ACCESS CAPABILITIES -----------------*/
4956typedef struct
4957{
4958 guint8 UnionType;
4959 union
4960 {
4961 Global_TFI_t Global_TFI;
4962 guint32 TLLI;
4963 } u;
4964} AdditionalMsRadAccessCapID_t;
4965
4966
4967typedef struct
4968{
4969 guint8 MESSAGE_TYPE;
4970 guint8 PayloadType;
4971 guint8 spare;
4972 guint8 R;
4973
4974 AdditionalMsRadAccessCapID_t ID;
Pau Espin Pedrolde635482020-03-25 20:26:02 +01004975 MS_Radio_Access_capability_t MS_Radio_Access_capability2;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03004976} Additional_MS_Rad_Access_Cap_t;
4977
4978/* End ADDITIONAL MS RADIO ACCESS CAPABILITIES */
4979
4980
4981/* Packet Pause -----------------*/
4982
4983typedef struct
4984{
4985 guint8 MESSAGE_TYPE;
4986
4987 guint32 TLLI;
4988 guint8 RAI[48/8];
4989} Packet_Pause_t;
4990
4991/* End Packet Pause */
4992
4993
4994/*
4995< NC Measurement Parameters struct > ::=
4996 < NETWORK_CONTROL_ORDER : bit (2) >
4997 { 0 | 1 < NC_ NON_DRX_PERIOD : bit (3) >
4998 < NC_REPORTING_PERIOD_I : bit (3) >
4999 < NC_REPORTING_PERIOD_T : bit (3) > } ;
5000< Cell Selection struct > ::=
5001 < EXC_ACC : bit >
5002 < CELL_BAR_ACCESS_2 : bit (1) >
5003 < SAME_RA_AS_SERVING_CELL : bit (1) >
5004 { 0 | 1 < GPRS_RXLEV_ACCESS_MIN : bit (6) >
5005 < GPRS_MS_TXPWR_MAX_CCH : bit (5) > }
5006{ 0 | 1 < GPRS_TEMPORARY_OFFSET : bit (3) >
5007 < GPRS_PENALTY_TIME : bit (5) > }
5008Table 25 (concluded): PACKET CELL CHANGE ORDER message content
5009 { 0 | 1 < GPRS_RESELECT_OFFSET : bit (5) > }
5010{ 0 | 1 < HCS params : < HCS struct > > }
5011{ 0 | 1 < SI13_PBCCH_LOCATION : < SI13_PBCCH_LOCATION struct > > } ;
5012
5013< SI13_PBCCH_LOCATION struct > ::=
5014 { 0 < SI13_LOCATION : bit (1) >
5015 | 1 < PBCCH_LOCATION : bit (2) >
5016 < PSI1_REPEAT_PERIOD : bit (4) > } ;
5017
5018< HCS struct > ::=
5019 < GPRS_PRIORITY_CLASS : bit (3) >
5020 < GPRS_HCS_THR : bit (5) > ;
5021*/
5022
5023/* < Downlink RLC/MAC control message > */
5024#define MT_PACKET_CELL_CHANGE_ORDER 0x01
5025#define MT_PACKET_DOWNLINK_ASSIGNMENT 0x02
5026#define MT_PACKET_MEASUREMENT_ORDER 0x03
5027#define MT_PACKET_POLLING_REQ 0x04
5028#define MT_PACKET_POWER_CONTROL_TIMING_ADVANCE 0x05
5029#define MT_PACKET_QUEUEING_NOTIFICATION 0x06
5030#define MT_PACKET_TIMESLOT_RECONFIGURE 0x07
5031#define MT_PACKET_TBF_RELEASE 0x08
5032#define MT_PACKET_UPLINK_ACK_NACK 0x09
5033#define MT_PACKET_UPLINK_ASSIGNMENT 0x0A
5034#define MT_PACKET_CELL_CHANGE_CONTINUE 0x0B
5035#define MT_PACKET_NEIGHBOUR_CELL_DATA 0x0C
5036#define MT_PACKET_SERVING_CELL_DATA 0x0D
5037#define MT_PACKET_HANDOVER_COMMAND 0x15
5038#define MT_PACKET_PHYSICAL_INFORMATION 0x16
5039#define MT_PACKET_ACCESS_REJECT 0x21
5040#define MT_PACKET_PAGING_REQUEST 0x22
5041#define MT_PACKET_PDCH_RELEASE 0x23
5042#define MT_PACKET_PRACH_PARAMETERS 0x24
5043#define MT_PACKET_DOWNLINK_DUMMY_CONTROL_BLOCK 0x25
5044#define MT_PACKET_SYSTEM_INFO_6 0x30
5045#define MT_PACKET_SYSTEM_INFO_1 0x31
5046#define MT_PACKET_SYSTEM_INFO_2 0x32
5047#define MT_PACKET_SYSTEM_INFO_3 0x33
5048#define MT_PACKET_SYSTEM_INFO_3_BIS 0x34
5049#define MT_PACKET_SYSTEM_INFO_4 0x35
5050#define MT_PACKET_SYSTEM_INFO_5 0x36
5051#define MT_PACKET_SYSTEM_INFO_13 0x37
5052#define MT_PACKET_SYSTEM_INFO_7 0x38
5053#define MT_PACKET_SYSTEM_INFO_8 0x39
5054#define MT_PACKET_SYSTEM_INFO_14 0x3A
5055#define MT_PACKET_SYSTEM_INFO_3_TER 0x3C
5056#define MT_PACKET_SYSTEM_INFO_3_QUATER 0x3D
5057#define MT_PACKET_SYSTEM_INFO_15 0x3E
5058
5059/* < Uplink RLC/MAC control message > */
5060#define MT_PACKET_CELL_CHANGE_FAILURE 0x00
5061#define MT_PACKET_CONTROL_ACK 0x01
5062#define MT_PACKET_DOWNLINK_ACK_NACK 0x02
5063#define MT_PACKET_UPLINK_DUMMY_CONTROL_BLOCK 0x03
5064#define MT_PACKET_MEASUREMENT_REPORT 0x04
5065#define MT_PACKET_RESOURCE_REQUEST 0x05
5066#define MT_PACKET_MOBILE_TBF_STATUS 0x06
5067#define MT_PACKET_PSI_STATUS 0x07
5068#define MT_EGPRS_PACKET_DOWNLINK_ACK_NACK 0x08
5069#define MT_PACKET_PAUSE 0x09
5070#define MT_PACKET_ENHANCED_MEASUREMENT_REPORT 0x0A
5071#define MT_ADDITIONAL_MS_RAC 0x0B
5072#define MT_PACKET_CELL_CHANGE_NOTIFICATION 0x0C
5073#define MT_PACKET_SI_STATUS 0x0D
5074#define MT_ENHANCED_MEASUREMENT_REPORT 0x04
5075
5076/* < Downlink RLC/MAC control message > */
5077typedef struct
5078{
5079 union
5080 {
5081 guint8 MESSAGE_TYPE;
Pascal Quantincc76d412020-01-28 16:45:31 +01005082 Packet_Access_Reject_t Packet_Access_Reject;
5083 Packet_Cell_Change_Order_t Packet_Cell_Change_Order;
5084 Packet_Cell_Change_Continue_t Packet_Cell_Change_Continue;
5085 Packet_Downlink_Assignment_t Packet_Downlink_Assignment;
5086 Packet_Measurement_Order_t Packet_Measurement_Order;
5087 Packet_Neighbour_Cell_Data_t Packet_Neighbour_Cell_Data;
5088 Packet_Serving_Cell_Data_t Packet_Serving_Cell_Data;
5089 Packet_Paging_Request_t Packet_Paging_Request;
5090 Packet_PDCH_Release_t Packet_PDCH_Release;
5091 Packet_Polling_Request_t Packet_Polling_Request;
5092 Packet_Power_Control_Timing_Advance_t Packet_Power_Control_Timing_Advance;
5093 Packet_PRACH_Parameters_t Packet_PRACH_Parameters;
5094 Packet_Queueing_Notification_t Packet_Queueing_Notification;
5095 Packet_Timeslot_Reconfigure_t Packet_Timeslot_Reconfigure;
5096 Packet_TBF_Release_t Packet_TBF_Release;
5097 Packet_Uplink_Ack_Nack_t Packet_Uplink_Ack_Nack;
5098 Packet_Uplink_Assignment_t Packet_Uplink_Assignment;
5099 Packet_Uplink_Dummy_Control_Block_t Packet_Uplink_Dummy_Control_Block;
5100 Packet_Handover_Command_t Packet_Handover_Command;
5101 Packet_PhysicalInformation_t Packet_PhysicalInformation;
5102 Packet_Downlink_Dummy_Control_Block_t Packet_Downlink_Dummy_Control_Block;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03005103 PSI1_t PSI1;
5104 PSI2_t PSI2;
5105 PSI3_t PSI3;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03005106 PSI5_t PSI5;
Pascal Quantincc76d412020-01-28 16:45:31 +01005107 PSI13_t PSI13;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03005108 } u;
5109
5110 /* NrOfBits is placed after union to avoid unnecessary code changes when addressing the union members
5111 * NrOfBits serves dual purpose:
5112 * 1. before unpacking it will hold the max number of bits for the CSN.1 unpacking function
5113 * 2. after successful unpacking it will hold the number of bits unpacked from a message.
5114 * This will be needed for some EGPRS messages to compute the length of included variable bitmap
5115 */
5116 guint8 PAYLOAD_TYPE;
5117 guint8 RRBP;
5118 guint8 SP;
5119 guint8 USF;
5120 guint8 RBSN;
5121 guint8 RTI;
5122 guint8 FS;
5123 guint8 AC;
5124 guint8 PR;
5125 guint8 TFI;
5126 guint8 D;
5127 guint8 RBSNe;
5128 guint8 FSe;
5129 guint8 spare;
5130 gint16 NrOfBits;
5131} RlcMacDownlink_t;
5132
5133typedef gint16 MSGGPRS_Status_t;
5134/* < Uplink RLC/MAC control message > */
5135typedef struct
5136{
5137 union
5138 {
5139 guint8 MESSAGE_TYPE;
5140 Packet_Cell_Change_Failure_t Packet_Cell_Change_Failure;
5141 Packet_Control_Acknowledgement_t Packet_Control_Acknowledgement;
5142 Packet_Downlink_Ack_Nack_t Packet_Downlink_Ack_Nack;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03005143 Packet_Uplink_Dummy_Control_Block_t Packet_Uplink_Dummy_Control_Block;
5144 Packet_Measurement_Report_t Packet_Measurement_Report;
5145 Packet_Resource_Request_t Packet_Resource_Request;
5146 Packet_Mobile_TBF_Status_t Packet_Mobile_TBF_Status;
5147 Packet_PSI_Status_t Packet_PSI_Status;
Pascal Quantincc76d412020-01-28 16:45:31 +01005148 EGPRS_PD_AckNack_t Egprs_Packet_Downlink_Ack_Nack;
5149 Packet_Pause_t Packet_Pause;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03005150 Packet_Enh_Measurement_Report_t Packet_Enh_Measurement_Report;
Pascal Quantincc76d412020-01-28 16:45:31 +01005151 Additional_MS_Rad_Access_Cap_t Additional_MS_Rad_Access_Cap;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03005152 Packet_Cell_Change_Notification_t Packet_Cell_Change_Notification;
5153 Packet_SI_Status_t Packet_SI_Status;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03005154 } u;
5155 gint16 NrOfBits;
5156} RlcMacUplink_t;
5157
Ivan Kluchnikovd5f01332012-02-05 01:41:25 +04005158/* < Uplink RLC/MAC data block message > */
5159typedef struct
5160{
5161 guint8 PAYLOAD_TYPE;
5162 guint8 CV;
5163 guint8 SI;
5164 guint8 R;
5165 guint8 spare;
5166 guint8 PI;
5167 guint8 TFI;
5168 guint8 TI;
5169 guint8 BSN;
5170 guint8 E_1;
5171 guint8 LENGTH_INDICATOR[MAX_NUMBER_LLC_PDU];
5172 guint8 M[MAX_NUMBER_LLC_PDU];
5173 guint8 E[MAX_NUMBER_LLC_PDU];
5174 guint32 TLLI;
5175 guint8 PFI;
5176 guint8 E_2;
5177 guint8 RLC_DATA[20];
5178 guint8 MESSAGE_TYPE;
5179} RlcMacUplinkDataBlock_t;
5180
5181
5182/* < Downlink RLC/MAC data block message > */
5183typedef struct
5184{
5185 guint8 PAYLOAD_TYPE;
5186 guint8 RRBP;
5187 guint8 SP;
5188 guint8 USF;
5189 guint8 PR;
5190 guint8 TFI;
5191 guint8 FBI;
5192 guint8 BSN;
5193 guint8 E_1;
5194 guint8 LENGTH_INDICATOR[MAX_NUMBER_LLC_PDU];
5195 guint8 M[MAX_NUMBER_LLC_PDU];
5196 guint8 E[MAX_NUMBER_LLC_PDU];
5197 guint8 RLC_DATA[20];
5198 guint8 MESSAGE_TYPE;
5199} RlcMacDownlinkDataBlock_t;
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03005200
5201void GPRSMSG_Profile(gint16 i);
5202
5203/* SI1_RestOctet_t */
5204
5205typedef struct
5206{
5207 gboolean Exist_NCH_Position;
5208 guint8 NCH_Position;
5209
5210 guint8 BandIndicator;
5211} SI1_RestOctet_t;
5212
5213/* SI3_Rest_Octet_t */
5214typedef struct
5215{
5216 guint8 CBQ;
5217 guint8 CELL_RESELECT_OFFSET;
5218 guint8 TEMPORARY_OFFSET;
5219 guint8 PENALTY_TIME;
5220} Selection_Parameters_t;
5221
5222typedef struct
5223{
5224 guint8 Exist_Selection_Parameters;
5225 Selection_Parameters_t Selection_Parameters;
5226
5227 guint8 Exist_Power_Offset;
5228 guint8 Power_Offset;
5229
5230 guint8 System_Information_2ter_Indicator;
5231 guint8 Early_Classmark_Sending_Control;
5232
5233 guint8 Exist_WHERE;
5234 guint8 WHERE;
5235
5236 guint8 Exist_GPRS_Indicator;
5237 guint8 RA_COLOUR;
5238 guint8 SI13_POSITION;
5239 guint8 ECS_Restriction3G;
5240 guint8 ExistSI2quaterIndicator;
5241 guint8 SI2quaterIndicator;
5242} SI3_Rest_Octet_t;
5243
5244typedef struct
5245{
5246 guint8 Exist_Selection_Parameters;
5247 Selection_Parameters_t Selection_Parameters;
5248
5249 guint8 Exist_Power_Offset;
5250 guint8 Power_Offset;
5251
5252 guint8 Exist_GPRS_Indicator;
5253 guint8 RA_COLOUR;
5254 guint8 SI13_POSITION;
5255} SI4_Rest_Octet_t;
5256
Bill Meierbcc64082020-01-28 15:50:46 +01005257#if 0
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03005258typedef SI4_Rest_Octet_t SI7_Rest_Octet_t;
5259typedef SI4_Rest_Octet_t SI8_Rest_Octet_t;
Bill Meierbcc64082020-01-28 15:50:46 +01005260#endif
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03005261
5262/* SI6_RestOctet_t */
5263
5264typedef struct
5265{
5266 guint8 PagingChannelRestructuring;
5267 guint8 NLN_SACCH;
5268
5269 gboolean Exist_CallPriority;
5270 guint8 CallPriority;
5271
5272 guint8 NLN_Status;
5273} PCH_and_NCH_Info_t;
5274
5275typedef struct
5276{
5277 gboolean Exist_PCH_and_NCH_Info;
5278 PCH_and_NCH_Info_t PCH_and_NCH_Info;
5279
5280 gboolean Exist_VBS_VGCS_Options;
5281 guint8 VBS_VGCS_Options;
5282
5283 /* The meaning of Exist_DTM_Support is as follows:
5284 * FALSE => DTM is not supported in the serving cell, RAC and MAX_LAPDm are absent in bitstream
5285 * TRUE => DTM is supported in the serving cell, RAC and MAX_LAPDm are present in bitstream
5286 */
5287 gboolean Exist_DTM_Support;
5288 guint8 RAC;
5289 guint8 MAX_LAPDm;
5290
5291 guint8 BandIndicator; /* bit(1) L/H, L => ARFCN in 1800 band H => ARFCN in 1900 band */
5292} SI6_RestOctet_t;
5293
5294/*************************************************
5295 * Enhanced Measurement Report. TS 04.18 9.1.55. *
5296 *************************************************/
5297
5298typedef struct
5299{
5300 guint8 DTX_USED;
5301 guint8 RXLEV_VAL;
5302 guint8 RX_QUAL_FULL;
5303 guint8 MEAN_BEP;
5304 guint8 CV_BEP;
5305 guint8 NBR_RCVD_BLOCKS;
5306} EMR_ServingCell_t;
5307
5308typedef struct
5309{
5310 guint8 RR_Short_PD;
5311 guint8 MESSAGE_TYPE;
5312 guint8 ShortLayer2_Header;
5313
5314 BA_USED_t BA_USED;
5315 guint8 BSIC_Seen;
5316
5317 guint8 SCALE;
5318
5319 guint8 Exist_ServingCellData;
5320 EMR_ServingCell_t ServingCellData;
5321
5322 guint8 Count_RepeatedInvalid_BSIC_Info; /* Number of instances */
5323 RepeatedInvalid_BSIC_Info_t RepeatedInvalid_BSIC_Info[INV_BSIC_LIST_LEN];
5324
5325 guint8 Exist_ReportBitmap;
5326 guint8 Count_REPORTING_QUANTITY_Instances; /* Number of instances */
5327 REPORTING_QUANTITY_Instance_t REPORTING_QUANTITY_Instances[REPORT_QUANTITY_LIST_LEN];
5328
5329} EnhancedMeasurementReport_t;
5330
Pau Espin Pedrol47de2322020-02-03 16:35:03 +01005331 int decode_gsm_rlcmac_uplink(bitvec *vector, RlcMacUplink_t *data);
5332 int decode_gsm_rlcmac_downlink(bitvec *vector, RlcMacDownlink_t *data);
5333 int encode_gsm_rlcmac_downlink(bitvec *vector, RlcMacDownlink_t *data);
5334 int encode_gsm_rlcmac_uplink(bitvec *vector, RlcMacUplink_t *data);
Ivan Kluchnikov835f91e2012-04-30 18:00:36 +04005335 void decode_gsm_rlcmac_uplink_data(bitvec * vector, RlcMacUplinkDataBlock_t * data);
5336 void encode_gsm_rlcmac_downlink_data(bitvec * vector, RlcMacDownlinkDataBlock_t * data);
Pau Espin Pedrolcdbc5db2020-01-23 21:00:19 +01005337 int decode_gsm_ra_cap(bitvec * vector, MS_Radio_Access_capability_t * data);
Ivan Kluchnikov487a1412011-12-21 13:17:53 +03005338#endif /* __PACKET_GSM_RLCMAC_H__ */