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