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