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