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