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