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