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