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