diff --git a/gsm_rlcmac.h b/gsm_rlcmac.h
new file mode 100644
index 0000000..e854925
--- /dev/null
+++ b/gsm_rlcmac.h
@@ -0,0 +1,5084 @@
+/* gsm_rlcmac.h
+ * Definitions for GSM RLC MAC control plane message dissection in wireshark.
+ * TS 44.060 and 24.008
+ *
+ * Copyright (C) 2011 Ivan Klyuchnikov
+ *
+ * By Vincent Helfre, based on original code by Jari Sassi
+ * with the gracious authorization of STE
+ * Copyright (c) 2011 ST-Ericsson
+ *
+ * $Id: packet-gsm_rlcmac.h 38909 2011-09-07 04:54:19Z etxrab $
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+
+#include "csn1.h"
+#include <iostream>
+#include <cstdlib>
+#ifndef __PACKET_GSM_RLCMAC_H__
+#define __PACKET_GSM_RLCMAC_H__
+
+#ifndef PRE_PACKED
+#define PRE_PACKED
+#endif
+
+#ifndef POST_PACKED
+#define POST_PACKED
+#endif
+
+typedef guint8 TFI_t;
+
+typedef guint8 N32_t;
+typedef guint8 N51_t;
+typedef guint8 N26_t;
+
+/*  Starting Time IE as specified in 04.08 */
+typedef struct
+{
+  N32_t N32;  /* 04.08 refers to T1' := (FN div 1326) mod 32 */
+  N51_t N51;  /* 04.08 refers to T3 := FN mod 51 */
+  N26_t N26;  /* 04.08 refers to T2 := FN mod 26 */
+} StartingTime_t;
+
+typedef struct
+{
+  guint8 UnionType;/* UnionType is index */
+  union
+  {
+    guint8 UPLINK_TFI;
+    guint8 DOWNLINK_TFI;
+  } u;
+} Global_TFI_t;
+
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    StartingTime_t StartingTime;
+    guint16 k;
+  } u;
+} Starting_Frame_Number_t;
+
+typedef struct
+{
+  guint8 FINAL_ACK_INDICATION;
+  guint8 STARTING_SEQUENCE_NUMBER;
+  guint8 RECEIVED_BLOCK_BITMAP[64/8];
+} Ack_Nack_Description_t;
+
+
+typedef struct
+{
+  guint8 Exist_TIMING_ADVANCE_VALUE;
+  guint8 TIMING_ADVANCE_VALUE;
+
+  guint8 Exist_IndexAndtimeSlot;
+  guint8 TIMING_ADVANCE_INDEX;
+  guint8 TIMING_ADVANCE_TIMESLOT_NUMBER;
+} Packet_Timing_Advance_t;
+
+typedef struct
+{
+  guint8 ALPHA;
+
+  struct
+  {
+    guint8 Exist;
+    guint8 GAMMA_TN;
+  } Slot[8];
+} Power_Control_Parameters_t;
+
+typedef struct
+{
+  guint8 ALPHA;
+  guint8 T_AVG_W;
+  guint8 T_AVG_T;
+  guint8 Pb;
+  guint8 PC_MEAS_CHAN;
+  guint8 INT_MEAS_CHANNEL_LIST_AVAIL;
+  guint8 N_AVG_I;
+} Global_Power_Control_Parameters_t;
+
+typedef struct
+{
+  guint8 Exist_TIMING_ADVANCE_VALUE;
+  guint8 TIMING_ADVANCE_VALUE;
+
+  guint8 Exist_UPLINK_TIMING_ADVANCE;
+  guint8 UPLINK_TIMING_ADVANCE_INDEX;
+  guint8 UPLINK_TIMING_ADVANCE_TIMESLOT_NUMBER;
+
+  guint8 Exist_DOWNLINK_TIMING_ADVANCE;
+  guint8 DOWNLINK_TIMING_ADVANCE_INDEX;
+  guint8 DOWNLINK_TIMING_ADVANCE_TIMESLOT_NUMBER;
+} Global_Packet_Timing_Advance_t;
+
+
+typedef struct
+{
+  guint8 C_VALUE;
+  guint8 RXQUAL;
+  guint8 SIGN_VAR;
+
+  struct
+  {
+    guint8 Exist;
+    guint8 I_LEVEL_TN;
+  } Slot[8];
+} Channel_Quality_Report_t;
+
+typedef enum
+{
+  RLC_MODE_ACKNOWLEDGED = 0,
+  RLC_MODE_UNACKNOWLEDGED = 1
+} RLC_MODE_t;
+
+typedef struct
+{
+  guint8 PEAK_THROUGHPUT_CLASS;
+  guint8 RADIO_PRIORITY;
+  RLC_MODE_t RLC_MODE;
+  guint8 LLC_PDU_TYPE;
+  guint16 RLC_OCTET_COUNT;
+} Channel_Request_Description_t;
+
+typedef struct
+{
+  guint16 RANDOM_ACCESS_INFORMATION;
+  guint8 FRAME_NUMBER[2];
+} Packet_Request_Reference_t;
+
+typedef PRE_PACKED struct
+{
+  guint8 nsapi;
+  guint8 value;
+} Receive_N_PDU_Number_t POST_PACKED;
+
+typedef PRE_PACKED struct
+{
+  guint8 IEI;
+  guint8 Length;
+
+  guint8 Count_Receive_N_PDU_Number;
+  Receive_N_PDU_Number_t Receive_N_PDU_Number[11];
+} Receive_N_PDU_Number_list_t POST_PACKED;
+
+/** IMSI length */
+#define IMSI_LEN  9
+
+/** TMSI length */
+#define TMSI_LEN  4
+
+typedef  struct
+{
+  guint8 MCC1;
+  guint8 MCC2;
+  guint8 MCC3;
+  guint8 MNC3;
+  guint8 MNC1;
+  guint8 MNC2;
+} PLMN_t;
+
+
+/** This type is used to describe LAI codes */
+typedef PRE_PACKED struct
+{
+  PLMN_t  PLMN;
+  guint16  LAC;
+} LAI_t POST_PACKED;
+
+
+/** Length of LAI */
+#define LAI_LEN  (sizeof(LAI_t))
+
+typedef struct
+{
+  guint8       TMSI[TMSI_LEN];
+}TMSI_t;
+
+typedef guint16 CellId_t;
+
+
+#define CKSN_NOT_VALID                7
+
+#define IMEI_LEN                      9
+
+#define IMEISV_LEN                    10
+
+#define MAX_ELEMENTS_IN_EQPLMN_LIST   16
+
+
+typedef struct
+{
+  guint8 NUMBER_CELLS;
+  guint8 CCN_SUPPORTED[16];  /* bit (1), max size: 16 x 8 => 128 bits */
+} CCN_Support_Description_t;
+
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    guint8 LSA_ID;
+    guint8 ShortLSA_ID;
+  } u;
+} LSA_ID_Info_Element_t;
+
+#define LSA_ID_INFO_ELEMENTS_MAX (16)
+
+typedef struct
+{
+  guint8 Count_LSA_ID_Info_Element;
+  LSA_ID_Info_Element_t LSA_ID_Info_Elements[LSA_ID_INFO_ELEMENTS_MAX];
+} LSA_ID_Info_t;
+
+#define NR_OF_FREQ_OR_CELLS_MAX (32)
+
+typedef struct
+{
+  guint8 NR_OF_FREQ_OR_CELLS;
+  LSA_ID_Info_t LSA_ID_Info[NR_OF_FREQ_OR_CELLS_MAX];
+} LSA_Parameters_t;
+
+#define MAX_REPORT_PRIORITY_CELLS (16)
+
+typedef struct
+{
+  guint8 NUMBER_CELLS;
+  guint8 REPORT_PRIORITY[MAX_REPORT_PRIORITY_CELLS];
+} ReportPriority_t;
+
+typedef ReportPriority_t GPRSReportPriority_t;
+
+typedef struct
+{
+  guint8 REPORTING_OFFSET;
+  guint8 REPORTING_THRESHOLD;
+} OffsetThreshold_t;
+
+
+typedef struct
+{
+  guint8             Exist_MULTI_BAND_REPORTING;
+  guint8             MULTI_BAND_REPORTING;
+
+  guint8             Exist_SERVING_BAND_REPORTING;
+  guint8             SERVING_BAND_REPORTING;
+
+  /* Warning:
+   *
+   * SI2quater, MI, PMO, and PCCO always specify Scale Ord.  There is no
+   * "exist SCALE_ORD" bit in the CSN.1 descriptions for these messages.
+   * However, this struct is shared with the PSI5 message which may or may
+   * not specify SCALE_ORD, thus necessitating the inclusion of member
+   * Exist_SCALE_ORD in the struct.  This member is never set for SI2quater, MI,
+   * PMO, and PCCO so to check it (in these cases) would be erroneous.
+   */
+  guint8             Exist_SCALE_ORD;
+  guint8             SCALE_ORD;
+
+  guint8             Exist_OffsetThreshold900;
+  OffsetThreshold_t OffsetThreshold900;
+
+  guint8             Exist_OffsetThreshold1800;
+  OffsetThreshold_t OffsetThreshold1800;
+
+  guint8             Exist_OffsetThreshold400;
+  OffsetThreshold_t OffsetThreshold400;
+
+  guint8             Exist_OffsetThreshold1900;
+  OffsetThreshold_t OffsetThreshold1900;
+
+  guint8             Exist_OffsetThreshold850;
+  OffsetThreshold_t OffsetThreshold850;
+
+} MeasurementParams_t;
+
+typedef struct
+{
+  guint8 Exist_FDD_REPORTING_THRESHOLD_2;
+  guint8 FDD_REPORTING_THRESHOLD_2;
+} GPRS_AdditionalMeasurementParams3G_t;
+
+
+typedef struct
+{
+  guint8 NETWORK_CONTROL_ORDER;
+
+  guint8 Exist_NC;
+  guint8 NC_NON_DRX_PERIOD;
+  guint8 NC_REPORTING_PERIOD_I;
+  guint8 NC_REPORTING_PERIOD_T;
+} NC_Measurement_Parameters_t;
+
+
+/*
+**========================================================================
+**  Global types
+**========================================================================
+*/
+
+struct MobileId     /* Mobile id, -> TMSI, IMEI or IMSI */
+{
+  guint8 Length:8;
+  guint8 IdType:3;
+  guint8 OddEven:1;
+  guint8 Dig1:4;
+  union
+  {
+    unsigned char TMSI[TMSI_LEN];
+    unsigned char IMEI[IMEI_LEN - 2];
+    unsigned char IMSI[IMEI_LEN - 2];
+    unsigned char IMEISV[IMEISV_LEN - 2];
+  } Id;
+};
+
+struct OV_MobileId    /* Struct for optional mobile identity */
+{
+  unsigned char   IEI;
+  struct MobileId MV;
+};
+
+#define LAC_INVALID 0xFEFF
+
+typedef enum
+{
+  LAI_PRIORITY_AVAILABLE,
+  LAI_PRIORITY_FORBIDDEN,
+  LAI_PRIORITY_FORCED
+}LAI_Priority_t;
+
+typedef enum
+{
+  NOM_I,
+  NOM_II,
+  NOM_III,
+  NOM_GSM,
+  NOM_PS_ONLY,
+  NOM_UNKNOWN
+}NMO_t;
+
+typedef enum
+{
+  COMBINED,
+  NOT_COMBINED,
+  SAME_AS_BEFORE
+}ProcedureMode_t;
+
+typedef struct
+{
+  guint8               Cause;
+  LAI_t               LAI;
+  struct OV_MobileId  MobileId;
+}CombinedResult_t;
+
+typedef enum
+{
+  R97,
+  R99
+}MSCR_t, SGSNR_t;
+
+typedef struct
+{
+  guint8    NbrOfElements;
+  PLMN_t   Element[MAX_ELEMENTS_IN_EQPLMN_LIST];
+}EqPLMN_List_t;
+
+#define MAX_PCCCH                       16
+#define MAX_RFL_LENGTH                  16 /* length of RFL in PSI2 */
+#define MAX_RFLS                         4 /* Max number of RFLs */
+#define MAX_MA_LISTS_IN_PSI2             8 /* MAX MA lists = 8 */
+#define MAX_ALLOCATION_BITMAP_LENGTH   128 /* max length of Fixed Allocation bitmap in BITS (2^7) */
+#define MAX_VAR_LENGTH_BITMAP_LENGTH   176 /* max length ever possible for variable length fixed allocation bitmap */
+#define MAX_RRC_CONTAINER_LENGTH       255
+#define MAX_NAS_CONTAINER_LENGTH       127
+
+
+typedef struct
+{
+  guint8 MA_LENGTH;/* =(MA_BitLength +7) MA_BitLength_ converted to bytes */
+  guint8 MA_BITMAP[(63+1)/8];/* : bit (val (MA_LENGTH) + 1) > */
+  /* The above should not change order! */
+  guint8 MA_BitLength;
+} MobileAllocation_t;
+
+typedef struct
+{
+  guint8 ElementsOf_ARFCN_INDEX;
+  guint8 ARFCN_INDEX[16];
+} ARFCN_index_list_t;
+
+typedef struct
+{
+  guint8 HSN;
+
+  guint8 ElementsOf_RFL_NUMBER;
+  guint8 RFL_NUMBER[4];
+
+  guint8 UnionType;
+  union
+  {
+    MobileAllocation_t MA;
+    ARFCN_index_list_t ARFCN_index_list;
+  } u;
+} GPRS_Mobile_Allocation_t;
+
+/* < EGPRS Ack/Nack Description >
+ * CRBB - Compressed Received Blocks Bitmap
+ * URBB - Uncompressed Received Blocks Bitmap
+ */
+#define EGPRS_ACK_NACK_MAX_BITS 0x0FF /* 255 bits/32 bytes */
+#define CRBB_MAX_BITS           0x07F /* 127 bits/16 bytes */
+#define URBB_MAX_BITS           0x150 /* 336 bits/42 bytes */
+
+typedef struct
+{
+  gboolean Exist_LENGTH;
+  guint8   LENGTH;
+
+  guint8   FINAL_ACK_INDICATION;
+  guint8   BEGINNING_OF_WINDOW;
+  guint8   END_OF_WINDOW;
+  guint16  STARTING_SEQUENCE_NUMBER;
+
+  gboolean Exist_CRBB;
+  guint8   CRBB_LENGTH;
+  guint8   CRBB_STARTING_COLOR_CODE;
+  guint8   CRBB[CRBB_MAX_BITS/8 + 1];
+
+  guint16  URBB_LENGTH;
+  guint8   URBB[URBB_MAX_BITS/8];
+} EGPRS_AckNack_t;
+
+
+/* <P1 Rest Octets>
+ * <P2 Rest Octets>
+ */
+#define  SF_VBS  0   /* VBS (broadcast call reference) */
+#define  SF_VGCS  1  /* VGCS (group call reference) */
+
+#define  AF_AckIsNotRequired  0  /* acknowledgement is not required */
+#define  AF_AckIsRequired    1  /* acknowledgement is required */
+
+typedef struct
+{
+  guint32 value;
+  guint8 SF;
+  guint8 AF;
+  guint8 call_priority;
+  guint8 Ciphering_information;
+} Group_Call_Reference_t;
+
+/* Mobile allocation is coded differently but uses the same type! */
+typedef struct
+{
+  guint8 Length;
+  guint8 MA[8];
+} MobileAllocationIE_t;
+
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    MobileAllocationIE_t MA;
+    guint8 Frequency_Short_List[64/8];
+  } u;
+} MobileAllocation_or_Frequency_Short_List_t;
+
+typedef struct
+{
+  guint8 spare;
+  guint16 ARFCN;
+} SingleRFChannel_t;
+
+typedef struct
+{
+  guint8 MAIO;
+  guint8 HSN;
+} RFHoppingChannel_t;
+
+typedef struct
+{
+  guint8 Channel_type_and_TDMA_offset;
+  guint8 TN;
+  guint8 TSC;
+
+  guint8 UnionType;
+  union
+  {
+    SingleRFChannel_t SingleRFChannel;
+    RFHoppingChannel_t RFHoppingChannel;
+  } u;
+} Channel_Description_t;
+
+typedef struct
+{
+  Channel_Description_t Channel_Description;
+
+  guint8 Exist_Hopping;
+  MobileAllocation_or_Frequency_Short_List_t MA_or_Frequency_Short_List;
+
+} Group_Channel_Description_t;
+
+typedef struct
+{
+  Group_Call_Reference_t Group_Call_Reference;
+
+  guint8 Exist_Group_Channel_Description;
+  Group_Channel_Description_t Group_Channel_Description;
+} Group_Call_information_t;
+
+typedef struct
+{
+  guint8 Exist_NLN_PCH_and_NLN_status;
+  guint8 NLN_PCH;
+  guint8 NLN_status;
+
+  guint8 Exist_Priority1;
+  guint8 Priority1;
+
+  guint8 Exist_Priority2;
+  guint8 Priority2;
+
+  guint8 Exist_Group_Call_information;
+  Group_Call_information_t Group_Call_information;
+
+  guint8 Packet_Page_Indication_1;
+  guint8 Packet_Page_Indication_2;
+} P1_Rest_Octets_t;
+
+typedef struct
+{
+  guint8 Exist_CN3;
+  guint8 CN3;
+
+  guint8 Exist_NLN_and_status;
+  guint8 NLN;
+  guint8 NLN_status;
+
+  guint8 Exist_Priority1;
+  guint8 Priority1;
+
+  guint8 Exist_Priority2;
+  guint8 Priority2;
+
+  guint8 Exist_Priority3;
+  guint8 Priority3;
+
+  guint8 Packet_Page_Indication_3;
+} P2_Rest_Octets_t;
+
+/* <IA Rest Octets> incl additions for R99 and EGPRS */
+
+typedef struct
+{
+  guint8 USF;
+  guint8 USF_GRANULARITY;
+
+  guint8 Exist_P0_PR_MODE;
+  guint8 P0;
+  guint8 PR_MODE;
+} DynamicAllocation_t;
+
+typedef struct
+{
+  gboolean Exist_ALPHA;
+  guint8   ALPHA;
+
+  guint8   GAMMA;
+  StartingTime_t TBF_STARTING_TIME;
+  guint8   NR_OF_RADIO_BLOCKS_ALLOCATED;
+
+  gboolean Exist_P0_BTS_PWR_CTRL_PR_MODE;
+  guint8   P0;
+  guint8   BTS_PWR_CTRL_MODE;
+  guint8   PR_MODE;
+} EGPRS_TwoPhaseAccess_t;
+
+typedef struct
+{
+  guint8 TFI_ASSIGNMENT;
+  guint8 POLLING;
+
+  guint8 UnionType;
+  union
+  {
+    DynamicAllocation_t DynamicAllocation;
+    guint8               FixedAllocationDummy;   /* Fixed Allocation was removed */
+  } Allocation;
+
+  guint8   EGPRS_CHANNEL_CODING_COMMAND;
+  guint8   TLLI_BLOCK_CHANNEL_CODING;
+
+  gboolean Exist_BEP_PERIOD2;
+  guint8   BEP_PERIOD2;
+
+  guint8   RESEGMENT;
+  guint8   EGPRS_WindowSize;
+
+  gboolean Exist_ALPHA;
+  guint8   ALPHA;
+
+  guint8   GAMMA;
+
+  gboolean Exist_TIMING_ADVANCE_INDEX;
+  guint8   TIMING_ADVANCE_INDEX;
+
+  gboolean            Exist_TBF_STARTING_TIME;
+  StartingTime_t TBF_STARTING_TIME;
+} EGPRS_OnePhaseAccess_t;
+
+#define MAX_ACCESS_TECHOLOGY_TYPES 12
+
+typedef struct
+{
+  guint8 ExtendedRA;
+
+  guint8 NrOfAccessTechnologies;
+  guint8 AccessTechnologyType[MAX_ACCESS_TECHOLOGY_TYPES];
+
+  guint8 UnionType;
+  union
+  {
+    EGPRS_TwoPhaseAccess_t TwoPhaseAccess; /* 04.18/10.5.2.16 Multiblock allocation */
+    EGPRS_OnePhaseAccess_t OnePhaseAccess; /* 04.60/10.5.2.16 TFI using Dynamic or Fixed Allocation */
+  } Access;
+} IA_EGPRS_00_t;
+
+typedef struct
+{
+  guint8           UnionType;
+  union
+  {
+    IA_EGPRS_00_t IA_EGPRS_PUA; /* 00 < EGPRS Packet Uplink Assignment >*/
+    guint8         IA_EGPRS_01;  /* 01 reserved for future use */
+    guint8         IA_EGPRS_1;   /* 1  reserved for future use */
+  } u;
+} IA_EGPRS_t;
+
+typedef struct
+{
+  guint8 Length;
+  guint8 MAIO;
+  guint8 MobileAllocation[62];
+} IA_FreqParamsBeforeTime_t;
+
+typedef struct
+{
+  gboolean Exist_ALPHA;
+  guint8   ALPHA;
+
+  guint8   GAMMA;
+  guint8   R97_CompatibilityBits;
+  StartingTime_t TBF_STARTING_TIME;
+
+  gboolean Exist_P0_BTS_PWR_CTRL_PR_MODE;
+  guint8   P0;
+  guint8   BTS_PWR_CTRL_MODE;
+  guint8   PR_MODE;
+} GPRS_SingleBlockAllocation_t;
+
+typedef struct
+{
+  guint8 TFI_ASSIGNMENT;
+  guint8 POLLING;
+
+  guint8 UnionType;
+  union
+  {
+    DynamicAllocation_t DynamicAllocation;
+    guint8               FixedAllocationDummy;
+  } Allocation;
+
+  guint8              CHANNEL_CODING_COMMAND;
+  guint8              TLLI_BLOCK_CHANNEL_CODING;
+
+  guint8              Exist_ALPHA;
+  guint8              ALPHA;
+
+  guint8              GAMMA;
+
+  guint8              Exist_TIMING_ADVANCE_INDEX;
+  guint8              TIMING_ADVANCE_INDEX;
+
+  guint8              Exist_TBF_STARTING_TIME;
+  StartingTime_t TBF_STARTING_TIME;
+} GPRS_DynamicOrFixedAllocation_t;
+
+typedef struct
+{
+  gboolean Exist_ExtendedRA;
+  guint8   ExtendedRA;
+} PU_IA_AdditionsR99_t;
+
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    GPRS_SingleBlockAllocation_t    SingleBlockAllocation;
+    GPRS_DynamicOrFixedAllocation_t DynamicOrFixedAllocation;
+  } Access;
+
+  gboolean               Exist_AdditionsR99;
+  PU_IA_AdditionsR99_t  AdditionsR99;
+} Packet_Uplink_ImmAssignment_t;
+
+typedef struct
+{
+  guint8   EGPRS_WindowSize;
+  guint8   LINK_QUALITY_MEASUREMENT_MODE;
+
+  gboolean Exist_BEP_PERIOD2;
+  guint8   BEP_PERIOD2;
+} PD_IA_AdditionsR99_t;
+
+typedef struct
+{
+  guint32               TLLI;
+
+  guint8                Exist_TFI_to_TA_VALID;
+  guint8                TFI_ASSIGNMENT;
+  guint8                RLC_MODE;
+  guint8                Exist_ALPHA;
+  guint8                ALPHA;
+  guint8                GAMMA;
+  guint8                POLLING;
+  guint8                TA_VALID;
+
+  guint8                Exist_TIMING_ADVANCE_INDEX;
+  guint8                TIMING_ADVANCE_INDEX;
+
+  guint8                Exist_TBF_STARTING_TIME;
+  StartingTime_t       TBF_STARTING_TIME;
+
+  guint8                Exist_P0_PR_MODE;
+  guint8                P0;
+  guint8                BTS_PWR_CTRL_MODE;
+  guint8                PR_MODE;
+
+  gboolean              Exist_AdditionsR99;
+  PD_IA_AdditionsR99_t AdditionsR99;
+} Packet_Downlink_ImmAssignment_t;
+
+typedef struct
+{
+  gboolean Exist_SecondPart;
+
+  gboolean Exist_ExtendedRA;
+  guint8   ExtendedRA;
+} Second_Part_Packet_Assignment_t;
+
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    Packet_Uplink_ImmAssignment_t   Packet_Uplink_ImmAssignment;
+    Packet_Downlink_ImmAssignment_t Packet_Downlink_ImmAssignment;
+  } ul_dl;
+} IA_PacketAssignment_UL_DL_t;
+
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    IA_PacketAssignment_UL_DL_t     UplinkDownlinkAssignment;
+    Second_Part_Packet_Assignment_t Second_Part_Packet_Assignment;
+  } u;
+} IA_PacketAssignment_t;
+
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    IA_FreqParamsBeforeTime_t IA_FrequencyParams;
+    IA_PacketAssignment_t     IA_PacketAssignment;
+  } u;
+} IA_GPRS_t;
+
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    IA_EGPRS_t IA_EGPRS_Struct;
+    IA_GPRS_t  IA_GPRS_Struct;
+  } u;
+} IA_t;
+
+
+/* <IAR Rest Octets> ref: 04.18/10.5.2.17 */
+typedef struct
+{
+  guint8 Exist_ExtendedRA;
+  guint8 ExtendedRA;
+} ExtendedRA_Info_t;
+
+typedef ExtendedRA_Info_t ExtendedRA_Info_Array_t[4];
+
+typedef struct
+{
+  ExtendedRA_Info_Array_t ExtendedRA_Info;
+} IAR_t;
+
+
+/* Packet Polling Request */
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    Global_TFI_t Global_TFI;
+    guint32 TLLI;
+    guint16 TQI;
+  } u;
+} PacketPollingID_t;
+
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+  guint8 PAGE_MODE;
+  PacketPollingID_t ID;
+  guint8 TYPE_OF_ACK;
+} Packet_Polling_Request_t;
+
+/* < SI 13 Rest Octets > */
+#define MAX_EXTENSION_LENGTH_IN_BYTES (8) /* max value = 64 (coded on 6 bits) */
+
+typedef struct
+{
+  guint8 extension_length;
+  guint8 Extension_Info[MAX_EXTENSION_LENGTH_IN_BYTES];/* ( val (extension length)+1 ) 04.60/12.26 */
+} Extension_Bits_t;
+
+typedef struct
+{
+  guint8 DTM_SUPPORT                  : 1;
+  guint8 PFC_FEATURE_MODE             : 1;
+  guint8 BEP_PERIOD                   : 4;
+  guint8 EGPRS_PACKET_CHANNEL_REQUEST : 1;
+  guint8 EGPRS_Support                  : 1;
+
+  guint8 NotUsed                        : 3;
+  guint8 EXT_UTBF_NODATA              : 1;
+  guint8 MULTIPLE_TBF_CAPABILITY      : 1;
+  guint8 NW_EXT_UTBF                  : 1;
+  guint8 CCN_ACTIVE                   : 1;
+  guint8 BSS_PAGING_COORDINATION      : 1;
+} GPRS_ExtensionInfoWithEGPRS_t;
+
+typedef struct
+{
+  guint8 EXT_UTBF_NODATA         : 1;
+  guint8 MULTIPLE_TBF_CAPABILITY : 1;
+  guint8 NW_EXT_UTBF             : 1;
+  guint8 CCN_ACTIVE              : 1;
+  guint8 BSS_PAGING_COORDINATION : 1;
+  guint8 DTM_SUPPORT             : 1;
+  guint8 PFC_FEATURE_MODE        : 1;
+  guint8 EGPRS_Support             : 1;
+} GPRS_ExtensionInfoWithoutEGPRS_t;
+
+typedef struct
+{
+  guint8 NotUsed                   : 7;
+  guint8 EGPRS_Support             : 1;
+} EGPRS_Support_t;
+
+typedef struct
+{
+  guint8 ECSC    : 1;
+  guint8 ECSR_3G : 1;
+} NonGPRS_ExtensionInfo_t;
+
+typedef struct
+{
+  guint8 Extension_Length;
+  union
+  {
+    EGPRS_Support_t                  EGPRS_Support;
+    GPRS_ExtensionInfoWithEGPRS_t    GPRS_ExtensionInfoWithEGPRS;
+    GPRS_ExtensionInfoWithoutEGPRS_t GPRS_ExtensionInfoWithoutEGPRS;
+    NonGPRS_ExtensionInfo_t          NonGPRS_ExtensionInfo;
+    guint8                            Extension_Information[MAX_EXTENSION_LENGTH_IN_BYTES];
+  } u;
+} Optional_Extension_Information_t;
+
+typedef struct
+{
+  gboolean EGPRS_Support;
+  guint8   BEP_PERIOD;
+  gboolean EGPRS_PACKET_CHANNEL_REQUEST;
+} EGPRS_OptionalExtensionInformation_t;
+
+
+typedef struct
+{
+  guint8 NMO;
+  guint8 T3168;
+  guint8 T3192;
+  guint8 DRX_TIMER_MAX;
+  guint8 ACCESS_BURST_TYPE;
+  guint8 CONTROL_ACK_TYPE;
+  guint8 BS_CV_MAX;
+
+  guint8 Exist_PAN;
+  guint8 PAN_DEC;
+  guint8 PAN_INC;
+  guint8 PAN_MAX;
+
+  guint8 Exist_Extension_Bits;
+  Extension_Bits_t Extension_Bits;
+} GPRS_Cell_Options_t;
+
+typedef struct
+{
+  guint8 ALPHA;
+  guint8 T_AVG_W;
+  guint8 T_AVG_T;
+  guint8 PC_MEAS_CHAN;
+  guint8 N_AVG_I;
+} GPRS_Power_Control_Parameters_t;
+
+typedef struct
+{
+  guint8 RAC;
+  guint8 SPGC_CCCH_SUP;
+  guint8 PRIORITY_ACCESS_THR;
+  guint8 NETWORK_CONTROL_ORDER;
+  GPRS_Cell_Options_t GPRS_Cell_Options;
+  GPRS_Power_Control_Parameters_t GPRS_Power_Control_Parameters;
+} PBCCH_Not_present_t;
+
+typedef struct
+{
+  guint8 Pb;
+  guint8 TSC;
+  guint8 TN;
+
+  guint8 UnionType;
+  union
+  {
+    guint8 dummy;
+    guint16 ARFCN;
+    guint8 MAIO;
+  } u;
+} PBCCH_Description_t;
+
+typedef struct
+{
+  guint8 PSI1_REPEAT_PERIOD;
+  PBCCH_Description_t PBCCH_Description;
+} PBCCH_present_t;
+
+
+
+/* < Packet TBF Release message content > */
+typedef guint8 TBF_RELEASE_CAUSE_t;
+#define  TBF_RELEASE_CAUSE_NORMAL (0x00)
+#define  TBF_RELEASE_CAUSE_ABNORMAL (0x02)
+
+typedef struct
+{
+  guint8               MESSAGE_TYPE;
+  guint8               PAGE_MODE;
+  Global_TFI_t        Global_TFI;
+  guint8               UPLINK_RELEASE;
+  guint8               DOWNLINK_RELEASE;
+  TBF_RELEASE_CAUSE_t TBF_RELEASE_CAUSE;
+} Packet_TBF_Release_t;
+
+/* < Packet Control Acknowledgement message content > */
+typedef struct
+{
+  guint8  Exist_CTRL_ACK_Extension;
+  guint16 CTRL_ACK_Extension;
+} Packet_Control_Acknowledgement_AdditionsR6_t;
+
+typedef struct
+{
+  guint8 Exist_TN_RRBP;
+  guint8 TN_RRBP;
+  guint8 Exist_G_RNTI_Extension;
+  guint8 G_RNTI_Extension;
+  gboolean Exist_AdditionsR6;
+  Packet_Control_Acknowledgement_AdditionsR6_t AdditionsR6;
+} Packet_Control_Acknowledgement_AdditionsR5_t;
+
+typedef struct
+{  /* Mac header */
+  guint8 MESSAGE_TYPE;
+  guint8 PayloadType;
+  guint8 spare;
+  guint8 R;
+
+  guint32 TLLI;
+  guint8 CTRL_ACK;
+  gboolean Exist_AdditionsR5;
+  Packet_Control_Acknowledgement_AdditionsR5_t AdditionsR5;
+} Packet_Control_Acknowledgement_t;
+
+typedef Packet_Control_Acknowledgement_t Packet_Ctrl_Ack_t;
+
+typedef struct
+{
+  guint8 CTRL_ACK;
+} Packet_Control_Acknowledgement_11_bit_t, Packet_Control_Acknowledgement_8_bit_t;
+
+/* < Packet Downlink Dummy Control Block message content > */
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+  guint8 PAGE_MODE;
+
+  guint8 Exist_PERSISTENCE_LEVEL;
+  guint8 PERSISTENCE_LEVEL[4];
+} Packet_Downlink_Dummy_Control_Block_t;
+
+/* < Packet Uplink Dummy Control Block message content > */
+typedef struct
+{ /* Mac header */
+  guint8 MESSAGE_TYPE;
+  guint8 PayloadType;
+  guint8 spare;
+  guint8 R;
+
+  guint32 TLLI;
+} Packet_Uplink_Dummy_Control_Block_t;
+
+/*< MS Radio Access capability IE >
+ * 24.008 (10.5.5.12a)
+ */
+typedef 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 */
+
+typedef struct
+{
+  guint8 Exist_DTM_EGPRS_multislot_class;
+  guint8 DTM_EGPRS_multislot_class;
+} DTM_EGPRS_t;
+
+typedef struct
+{
+  guint8 Exist_DTM_EGPRS_HighMultislotClass;
+  guint8 DTM_EGPRS_HighMultislotClass;
+} DTM_EGPRS_HighMultislotClass_t;
+
+typedef struct
+{
+  guint8 Exist_HSCSD_multislot_class;
+  guint8 HSCSD_multislot_class;
+
+  guint8 Exist_GPRS_multislot_class;
+  guint8 GPRS_multislot_class;
+  guint8 GPRS_Extended_Dynamic_Allocation_Capability;
+
+  guint8 Exist_SM;
+  guint8 SMS_VALUE;
+  guint8 SM_VALUE;
+
+/*-------- Rel 99 additions */
+  guint8 Exist_ECSD_multislot_class;
+  guint8 ECSD_multislot_class;
+
+  guint8 Exist_EGPRS_multislot_class;
+  guint8 EGPRS_multislot_class;
+  guint8 EGPRS_Extended_Dynamic_Allocation_Capability;
+
+  guint8 Exist_DTM_GPRS_multislot_class;
+  guint8 DTM_GPRS_multislot_class;
+  guint8 Single_Slot_DTM;
+  DTM_EGPRS_t DTM_EGPRS_Params;
+} Multislot_capability_t;
+
+typedef struct
+{
+  guint8 RF_Power_Capability;
+
+  guint8 Exist_A5_bits;
+  A5_bits_t A5_bits;
+  /*-- zero means that the same values apply for parameters as in the immediately preceeding Access capabilities field within this IE
+  *-- The presence of the A5 bits is mandatory in the 1st Access capabilies struct within this IE.
+  */
+
+  guint8 ES_IND;
+  guint8 PS;
+  guint8 VGCS;
+  guint8 VBS;
+
+  guint8 Exist_Multislot_capability;
+  Multislot_capability_t Multislot_capability;
+  /* -- zero means that the same values apply for multislot parameters as in the immediately preceeding Access capabilities field within this IE.
+   * -- The presence of the Multislot capability struct is mandatory in the 1st Access capabilites struct within this IE.
+   */
+  /* -------- Rel 99 additions */
+  guint8 Exist_Eight_PSK_Power_Capability;
+  guint8 Eight_PSK_Power_Capability;
+
+  guint8 COMPACT_Interference_Measurement_Capability;
+  guint8 Revision_Level_Indicator;
+  guint8 UMTS_FDD_Radio_Access_Technology_Capability;
+  guint8 UMTS_384_TDD_Radio_Access_Technology_Capability;
+  guint8 CDMA2000_Radio_Access_Technology_Capability;
+
+  /* -------- R4 additions */
+  guint8 UMTS_128_TDD_Radio_Access_Technology_Capability;
+  guint8 GERAN_Feature_Package_1;
+
+  guint8 Exist_Extended_DTM_multislot_class;
+  guint8 Extended_DTM_GPRS_multislot_class;
+  guint8 Extended_DTM_EGPRS_multislot_class;
+
+  guint8 Modulation_based_multislot_class_support;
+
+  /* -------- R5 additions */
+  guint8 Exist_HighMultislotCapability;
+  guint8 HighMultislotCapability;
+
+  guint8 Exist_GERAN_lu_ModeCapability;
+  guint8 GERAN_lu_ModeCapability;
+
+  guint8 GMSK_MultislotPowerProfile;
+  guint8 EightPSK_MultislotProfile;
+
+  /* -------- R6 additions */
+  guint8 MultipleTBF_Capability;
+  guint8 DownlinkAdvancedReceiverPerformance;
+  guint8 ExtendedRLC_MAC_ControlMessageSegmentionsCapability;
+  guint8 DTM_EnhancementsCapability;
+
+  guint8 Exist_DTM_GPRS_HighMultislotClass;
+  guint8 DTM_GPRS_HighMultislotClass;
+  DTM_EGPRS_HighMultislotClass_t DTM_EGPRS_HighMultislotClass;
+  guint8 PS_HandoverCapability;
+} Content_t;
+
+#define ABSOLUTE_MAX_BANDS            2 /*  New fields for R4 extend the length of the capabilities message so we can only send 2 */
+
+#define MAX_ACCESS_TECHNOLOGIES_COUNT 16 /* No more than 16 instances */
+
+typedef enum
+{/* See TS 24.008 table 10.5.146, GSM R and GSM 450/480 excluded */
+  AccTech_GSMP     = 0x0,
+  AccTech_GSME     = 0x1,
+  AccTech_GSM1800  = 0x3,
+  AccTech_GSM1900  = 0x4,
+  AccTech_GSM850   = 0x7,
+  AccTech_GSMOther = 0xf
+} AccessTechnology_t;
+
+typedef struct
+{
+  guint8              CountAccessTechnologies;
+  AccessTechnology_t AccessTechnologies[MAX_ACCESS_TECHNOLOGIES_COUNT];
+} AccessTechnologiesRequest_t;
+
+typedef struct
+{
+  AccessTechnology_t Access_Technology_Type;
+  guint8              GMSK_Power_class;
+  guint8              Eight_PSK_Power_class;
+} Additional_access_technologies_struct_t;
+
+typedef struct
+{
+  guint8 Count_additional_access_technologies;
+  /* The value 0xf cannot be set for the first ATT, therefore we can only have
+     ABSOLUTE_MAX_BANDS-1 additional access technologies. */
+  Additional_access_technologies_struct_t Additional_access_technologies[ABSOLUTE_MAX_BANDS-1];
+} Additional_access_technologies_t;
+
+typedef struct
+{
+  guint8 IndexOfAccTech; /* Position in AccessTechnology_t */
+  union
+  {
+    /* Long Form */
+    Content_t                        Content;
+    /* Short Form */
+    Additional_access_technologies_t Additional_access_technologies;
+  } u;
+} MS_RA_capability_value_t;
+
+typedef struct
+{
+  guint8 Count_MS_RA_capability_value; /* Recursive */
+  MS_RA_capability_value_t MS_RA_capability_value[ABSOLUTE_MAX_BANDS];
+} MS_Radio_Access_capability_t;
+
+
+typedef struct
+{
+  guint8   ExistEDGE_RF_PwrCap1;
+  guint8   EDGE_RF_PwrCap1;
+  guint8   ExistEDGE_RF_PwrCap2;
+  guint8   EDGE_RF_PwrCap2;
+} EDGE_RF_Pwr_t;
+
+typedef struct
+{
+  guint8 A5_Bits;
+  guint8 Arc2_Spare;
+  guint8 Arc1;
+} ARC_t;
+
+typedef struct
+{
+  guint8   Multiband;
+  union
+  {
+    guint8 A5_Bits;
+    ARC_t ARC;
+  } u;
+} Multiband_t;
+
+typedef struct              /* MS classmark 3 R99 */
+{
+  guint8         Spare1;
+  Multiband_t   Multiband;
+
+  guint8         Exist_R_Support;
+  guint8         R_GSM_Arc;
+
+  guint8         Exist_MultiSlotCapability;
+  guint8         MultiSlotClass;
+
+  guint8         UCS2;
+  guint8         ExtendedMeasurementCapability;
+
+  guint8         Exist_MS_MeasurementCapability;
+  guint8         SMS_VALUE;
+  guint8         SM_VALUE;
+
+  guint8         Exist_MS_PositioningMethodCapability;
+  guint8         MS_PositioningMethod;
+
+  guint8         Exist_EDGE_MultiSlotCapability;
+  guint8         EDGE_MultiSlotClass;
+
+  guint8         Exist_EDGE_Struct;
+  guint8         ModulationCapability;
+  EDGE_RF_Pwr_t EDGE_RF_PwrCaps;
+
+  guint8         Exist_GSM400_Info;
+  guint8         GSM400_Bands;
+  guint8         GSM400_Arc;
+
+  guint8         Exist_GSM850_Arc;
+  guint8         GSM850_Arc;
+
+  guint8         Exist_PCS1900_Arc;
+  guint8         PCS1900_Arc;
+
+  guint8         UMTS_FDD_Radio_Access_Technology_Capability;
+  guint8         UMTS_384_TDD_Radio_Access_Technology_Capability;
+  guint8         CDMA2000_Radio_Access_Technology_Capability;
+
+  guint8         Exist_DTM_GPRS_multislot_class;
+  guint8         DTM_GPRS_multislot_class;
+  guint8         Single_Slot_DTM;
+  DTM_EGPRS_t   DTM_EGPRS_Params;
+
+  /* -------- R4 additions */
+  guint8         Exist_SingleBandSupport;
+  guint8         GSM_Band;
+
+  guint8         Exist_GSM_700_Associated_Radio_Capability;
+  guint8         GSM_700_Associated_Radio_Capability;
+
+  guint8         UMTS_128_TDD_Radio_Access_Technology_Capability;
+  guint8         GERAN_Feature_Package_1;
+
+  guint8         Exist_Extended_DTM_multislot_class;
+  guint8         Extended_DTM_GPRS_multislot_class;
+  guint8         Extended_DTM_EGPRS_multislot_class;
+
+  /* -------- R5 additions */
+  guint8         Exist_HighMultislotCapability;
+  guint8         HighMultislotCapability;
+
+  guint8         Exist_GERAN_lu_ModeCapability;
+  guint8         GERAN_lu_ModeCapability;
+
+  guint8         GERAN_FeaturePackage_2;
+
+  guint8         GMSK_MultislotPowerProfile;
+  guint8         EightPSK_MultislotProfile;
+
+  /* -------- R6 additions */
+  guint8         Exist_TGSM_400_Bands;
+  guint8         TGSM_400_BandsSupported;
+  guint8         TGSM_400_AssociatedRadioCapability;
+
+  guint8         Exist_TGSM_900_AssociatedRadioCapability;
+  guint8         TGSM_900_AssociatedRadioCapability;
+
+  guint8         DownlinkAdvancedReceiverPerformance;
+  guint8         DTM_EnhancementsCapability;
+
+  guint8         Exist_DTM_GPRS_HighMultislotClass;
+  guint8         DTM_GPRS_HighMultislotClass;
+  guint8         OffsetRequired;
+  DTM_EGPRS_HighMultislotClass_t   DTM_EGPRS_HighMultislotClass;
+  guint8         RepeatedSACCH_Capability;
+
+  guint8         Spare2;
+} MS_Class3_Unpacked_t;
+
+
+/* < Packet Resource Request message content > */
+typedef struct
+{
+  gboolean Exist;
+  guint8   UnionType;
+  union
+  {
+    guint8 MEAN_BEP_GMSK;
+    guint8 MEAN_BEP_8PSK;
+  } u;
+} BEP_MeasurementReport_t;
+
+typedef struct
+{
+  gboolean Exist;
+  guint8   I_LEVEL;
+} InterferenceMeasurementReport_t;
+
+typedef struct
+{
+  gboolean                 Exist_BEP_MEASUREMENTS;
+  BEP_MeasurementReport_t BEP_MEASUREMENTS[8];
+
+  gboolean                         Exist_INTERFERENCE_MEASUREMENTS;
+  InterferenceMeasurementReport_t INTERFERENCE_MEASUREMENTS[8];
+} EGPRS_TimeslotLinkQualityMeasurements_t;
+
+typedef struct
+{
+  gboolean Exist_MEAN_CV_BEP_GMSK;
+  guint8   MEAN_BEP_GMSK;
+  guint8   CV_BEP_GMSK;
+
+  gboolean Exist_MEAN_CV_BEP_8PSK;
+  guint8   MEAN_BEP_8PSK;
+  guint8   CV_BEP_8PSK;
+} EGPRS_BEP_LinkQualityMeasurements_t;
+
+typedef struct
+{
+  gboolean                                 Exist_EGPRS_BEP_LinkQualityMeasurements;
+  EGPRS_BEP_LinkQualityMeasurements_t     EGPRS_BEP_LinkQualityMeasurements;
+
+  gboolean                                 Exist_EGPRS_TimeslotLinkQualityMeasurements;
+  EGPRS_TimeslotLinkQualityMeasurements_t EGPRS_TimeslotLinkQualityMeasurements;
+
+  gboolean                                 Exist_PFI;
+  guint8                                   PFI;
+
+  guint8                                   MS_RAC_AdditionalInformationAvailable;
+  guint8                                   RetransmissionOfPRR;
+} PRR_AdditionsR99_t;
+
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    Global_TFI_t Global_TFI;
+    guint32 TLLI;
+  } u;
+} PacketResourceRequestID_t;
+
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+  guint8 PayloadType;
+  guint8 spare;
+  guint8 R;
+
+  guint8 Exist_ACCESS_TYPE;
+  guint8 ACCESS_TYPE;
+
+  PacketResourceRequestID_t ID;
+
+  guint8 Exist_MS_Radio_Access_capability;
+  MS_Radio_Access_capability_t MS_Radio_Access_capability;
+
+  Channel_Request_Description_t Channel_Request_Description;
+
+  guint8 Exist_CHANGE_MARK;
+  guint8 CHANGE_MARK;
+
+  guint8 C_VALUE;
+
+  guint8 Exist_SIGN_VAR;
+  guint8 SIGN_VAR;
+
+  InterferenceMeasurementReport_t  Slot[8];
+
+  guint8                            Exist_AdditionsR99;
+  PRR_AdditionsR99_t               AdditionsR99;
+} Packet_Resource_Request_t;
+
+/* < Packet Mobile TBF Status message content >*/
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+  guint8 PayloadType;
+  guint8 spare;
+  guint8 R;
+
+  Global_TFI_t Global_TFI;
+  guint8 TBF_CAUSE;
+
+  guint8 Exist_STATUS_MESSAGE_TYPE;
+  guint8 STATUS_MESSAGE_TYPE;
+} Packet_Mobile_TBF_Status_t;
+
+/* < Packet PSI Status message content >*/
+typedef struct
+{
+  guint8 PSI_MESSAGE_TYPE;
+  guint8 PSIX_CHANGE_MARK;
+  guint8 Exist_PSIX_COUNT_and_Instance_Bitmap;
+} PSI_Message_t;
+
+typedef struct
+{
+  guint8 Count_PSI_Message;
+  PSI_Message_t PSI_Message[10];
+
+  guint8 ADDITIONAL_MSG_TYPE;
+} PSI_Message_List_t;
+
+typedef struct
+{
+  guint8 ADDITIONAL_MSG_TYPE;
+} Unknown_PSI_Message_List_t;
+
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+  guint8 PayloadType;
+  guint8 spare;
+  guint8 R;
+
+  Global_TFI_t Global_TFI;
+  guint8 PBCCH_CHANGE_MARK;
+
+  PSI_Message_List_t PSI_Message_List;
+  Unknown_PSI_Message_List_t Unknown_PSI_Message_List;
+} Packet_PSI_Status_t;
+
+/* < Packet SI Status message content > */
+typedef struct
+{
+  guint8 SI_MESSAGE_TYPE;
+  guint8 MESS_REC;
+  guint8 SIX_CHANGE_MARK;
+
+  guint8 SIX_COUNT;
+  guint8 Instance_bitmap[2];
+} SI_Message_t;
+
+typedef struct
+{
+  guint8 Count_SI_Message;
+  SI_Message_t SI_Message[10];
+
+  guint8 ADDITIONAL_MSG_TYPE;
+} SI_Message_List_t;
+
+typedef struct
+{
+  guint8 ADDITIONAL_MSG_TYPE;
+} Unknown_SI_Message_List_t;
+
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+  guint8 PayloadType;
+  guint8 spare;
+  guint8 R;
+
+  Global_TFI_t Global_TFI;
+  guint8 BCCH_CHANGE_MARK;
+
+  SI_Message_List_t SI_Message_List;
+  Unknown_SI_Message_List_t Unknown_SI_Message_List;
+} Packet_SI_Status_t;
+
+typedef struct
+{
+  guint16 FDD_ARFCN;
+  guint8 DIVERSITY;
+  guint8 Exist_Bandwith_FDD;
+  guint8 BANDWITH_FDD;
+  guint16 SCRAMBLING_CODE;
+} FDD_Target_Cell_t;
+
+typedef struct
+{
+  guint16 TDD_ARFCN;
+  guint8  DIVERSITY_TDD;
+  guint8 Exist_Bandwith_TDD;
+  guint8  BANDWITH_TDD;
+  guint16 CELL_PARAMETER;
+  guint8  Sync_Case_TSTD;
+} TDD_Target_Cell_t;
+
+typedef struct
+{
+  guint16 EARFCN;
+  guint8 Exist_Measurement_Bandwidth;
+  guint8 Measurement_Bandwidth;
+  guint16 Physical_Layer_Cell_Identity;
+}EUTRAN_Target_Cell_t;
+
+typedef struct
+{
+  guint32 UTRAN_CI;
+  guint8 Exist_PLMN_ID;
+  PLMN_t  PLMN_ID;
+}UTRAN_CSG_Target_Cell_t;
+
+typedef struct
+{
+  guint32 EUTRAN_CI;
+  guint16 Tracking_Area_Code;
+  guint8 Exist_PLMN_ID;
+  PLMN_t  PLMN_ID;
+}EUTRAN_CSG_Target_Cell_t;
+
+typedef struct
+{
+  guint8 Exist_UTRAN_CSG_Target_Cell;
+  UTRAN_CSG_Target_Cell_t UTRAN_CSG_Target_Cell;
+  guint8 Exist_EUTRAN_CSG_Target_Cell;
+  EUTRAN_CSG_Target_Cell_t EUTRAN_CSG_Target_Cell;
+}PCCF_AdditionsR9_t;
+
+typedef struct
+{
+  guint8 Exist_EUTRAN_Target_Cell;
+  EUTRAN_Target_Cell_t EUTRAN_Target_Cell;
+  guint8 Exist_AdditionsR9;
+  PCCF_AdditionsR9_t AdditionsR9;
+}PCCF_AdditionsR8_t;
+
+typedef struct
+{
+  guint8 Exist_G_RNTI_extention;
+  guint8  G_RNTI_extention;
+  guint8 Exist_AdditionsR8;
+  PCCF_AdditionsR8_t AdditionsR8;
+} PCCF_AdditionsR5_t;
+
+typedef struct
+{
+  guint8 Exist_FDD_Description;
+  FDD_Target_Cell_t FDD_Target_Cell;
+  guint8 Exist_TDD_Description;
+  TDD_Target_Cell_t TDD_Target_Cell;
+  guint8 Exist_AdditionsR5;
+  PCCF_AdditionsR5_t AdditionsR5;
+} PCCF_AdditionsR99_t;
+
+/* < Packet Cell Change Failure message content > */
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+  guint8 PayloadType;
+  guint8 spare;
+  guint8 R;
+
+  guint32 TLLI;
+  guint16 ARFCN;
+  guint8 BSIC;
+  guint8 CAUSE;
+  gboolean Exist_AdditionsR99;
+  PCCF_AdditionsR99_t AdditionsR99;
+} Packet_Cell_Change_Failure_t;
+
+/* < Packet Downlink Ack/Nack message content > */
+typedef struct
+{
+  gboolean Exist_PFI;
+  guint8   PFI;
+} PD_AckNack_AdditionsR99_t;
+
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+  guint8 PayloadType;
+  guint8 spare;
+  guint8 R;
+
+  guint8 DOWNLINK_TFI;
+  Ack_Nack_Description_t Ack_Nack_Description;
+
+  guint8 Exist_Channel_Request_Description;
+  Channel_Request_Description_t Channel_Request_Description;
+
+  Channel_Quality_Report_t Channel_Quality_Report;
+
+  gboolean                       Exist_AdditionsR99;
+  PD_AckNack_AdditionsR99_t     AdditionsR99;
+} Packet_Downlink_Ack_Nack_t;
+
+/* < EGPRS Packet Downlink Ack/Nack message content > */
+typedef struct
+{
+  EGPRS_BEP_LinkQualityMeasurements_t     EGPRS_BEP_LinkQualityMeasurements;
+  guint8                                   C_VALUE;
+  EGPRS_TimeslotLinkQualityMeasurements_t EGPRS_TimeslotLinkQualityMeasurements;
+} EGPRS_ChannelQualityReport_t;
+
+typedef struct
+{
+  guint8   MESSAGE_TYPE;
+  guint8   PayloadType;
+  guint8   spare;
+  guint8   R;
+
+  guint8   DOWNLINK_TFI;
+  guint8   MS_OUT_OF_MEMORY;
+
+  gboolean                       Exist_EGPRS_ChannelQualityReport;
+  EGPRS_ChannelQualityReport_t  EGPRS_ChannelQualityReport;
+
+  gboolean                       Exist_ChannelRequestDescription;
+  Channel_Request_Description_t ChannelRequestDescription;
+
+  gboolean Exist_PFI;
+  guint8   PFI;
+
+  gboolean          Exist_ExtensionBits;
+  Extension_Bits_t ExtensionBits;
+
+  EGPRS_AckNack_t  EGPRS_AckNack;
+} EGPRS_PD_AckNack_t;
+
+/* < Packet Uplink Ack/Nack message content  04.60 sec.11.2.28 > */
+
+typedef struct
+{
+  guint8                      Exist_CONTENTION_RESOLUTION_TLLI;
+  guint32                     CONTENTION_RESOLUTION_TLLI;
+
+  guint8                      Exist_Packet_Timing_Advance;
+  Packet_Timing_Advance_t    Packet_Timing_Advance;
+
+  guint8                      Exist_Extension_Bits;
+  Extension_Bits_t           Extension_Bits;
+
+  guint8                      Exist_Power_Control_Parameters;
+  Power_Control_Parameters_t Power_Control_Parameters;
+} Common_Uplink_Ack_Nack_Data_t;
+
+typedef struct
+{
+  gboolean Exist_PacketExtendedTimingAdvance;
+  guint8   PacketExtendedTimingAdvance;
+  guint8   TBF_EST;
+} PU_AckNack_GPRS_AdditionsR99_t;
+
+typedef struct
+{
+  guint8                  CHANNEL_CODING_COMMAND;
+  Ack_Nack_Description_t Ack_Nack_Description;
+
+  guint8 UnionType;
+  union
+  {
+    guint8 FixedAllocationDummy;
+    guint8 Error;
+  } u;
+
+  gboolean                        Exist_AdditionsR99;
+  PU_AckNack_GPRS_AdditionsR99_t AdditionsR99;
+
+
+  Common_Uplink_Ack_Nack_Data_t Common_Uplink_Ack_Nack_Data;
+} PU_AckNack_GPRS_t;
+
+typedef struct
+{
+  guint8   EGPRS_ChannelCodingCommand;
+  guint8   RESEGMENT;
+  guint8   PRE_EMPTIVE_TRANSMISSION;
+  guint8   PRR_RETRANSMISSION_REQUEST;
+  guint8   ARAC_RETRANSMISSION_REQUEST;
+
+  guint8   TBF_EST;
+
+  gboolean Exist_Packet_Extended_Timing_Advance;
+  guint8   Packet_Extended_Timing_Advance;
+
+  EGPRS_AckNack_t  EGPRS_AckNack;
+
+
+  Common_Uplink_Ack_Nack_Data_t Common_Uplink_Ack_Nack_Data;
+} PU_AckNack_EGPRS_00_t;
+
+typedef struct
+{
+  guint8   UnionType;
+  union
+  {
+    PU_AckNack_EGPRS_00_t PU_AckNack_EGPRS_00;
+    guint8                 extension_01;
+    guint8                 extension_10;
+    guint8                 extension_11;
+  } u;
+} PU_AckNack_EGPRS_t;
+
+enum PUAN_Type
+{
+  PUAN_GPRS,
+  PUAN_EGPRS
+};
+
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+  guint8 PAGE_MODE;
+  guint8 UPLINK_TFI;
+
+  guint8 UnionType;
+  union
+  {
+    PU_AckNack_GPRS_t  PU_AckNack_GPRS_Struct;
+    PU_AckNack_EGPRS_t PU_AckNack_EGPRS_Struct;
+  } u;
+} Packet_Uplink_Ack_Nack_t;
+
+/* < Packet Uplink Assignment message content > */
+typedef struct
+{
+  guint8 CHANGE_MARK_1;
+  guint8 Exist_CHANGE_MARK_2;
+  guint8 CHANGE_MARK_2;
+} CHANGE_MARK_t;
+
+typedef struct
+{
+  guint8 MAIO;
+  guint8 MA_NUMBER;
+
+  guint8 Exist_CHANGE_MARK;
+  CHANGE_MARK_t CHANGE_MARK;
+} Indirect_encoding_t;
+
+typedef struct
+{
+  guint8 MAIO;
+  GPRS_Mobile_Allocation_t GPRS_Mobile_Allocation;
+} Direct_encoding_1_t;
+
+typedef struct
+{
+  guint8 MAIO;
+  guint8 HSN;
+  guint8 Length_of_MA_Frequency_List;
+  guint8 MA_Frequency_List[15+3];
+} Direct_encoding_2_t;
+
+typedef struct
+{
+  guint8 TSC;
+  guint8 UnionType;
+  union
+  {
+    guint16 ARFCN;
+    Indirect_encoding_t Indirect_encoding;
+    Direct_encoding_1_t Direct_encoding_1;
+    Direct_encoding_2_t Direct_encoding_2;
+  } u;
+} Frequency_Parameters_t;
+
+typedef struct
+{
+  guint8 Exist;
+  guint8 USF_TN;
+} Timeslot_Allocation_t;
+
+typedef struct
+{
+  guint8 ALPHA;
+
+  struct
+  {
+    guint8 Exist;
+    guint8 USF_TN;
+    guint8 GAMMA_TN;
+  } Slot[8];
+} Timeslot_Allocation_Power_Ctrl_Param_t;
+
+typedef struct
+{
+  guint8 Extended_Dynamic_Allocation;
+
+  guint8 Exist_P0;
+  guint8 P0;
+  guint8 PR_MODE;
+
+  guint8 USF_GRANULARITY;
+
+  guint8 Exist_UPLINK_TFI_ASSIGNMENT;
+  guint8 UPLINK_TFI_ASSIGNMENT;
+
+  guint8 Exist_RLC_DATA_BLOCKS_GRANTED;
+  guint8 RLC_DATA_BLOCKS_GRANTED;
+
+  guint8 Exist_TBF_Starting_Time;
+  Starting_Frame_Number_t TBF_Starting_Time;
+
+  guint8 UnionType;
+  union
+  {
+    Timeslot_Allocation_t                  Timeslot_Allocation[8];
+    Timeslot_Allocation_Power_Ctrl_Param_t Timeslot_Allocation_Power_Ctrl_Param;
+  } u;
+} Dynamic_Allocation_t;
+
+typedef struct
+{
+  guint8 Extended_Dynamic_Allocation;
+
+  guint8 Exist_P0;
+  guint8 P0;
+  guint8 PR_MODE;
+
+  guint8 USF_GRANULARITY;
+
+  guint8 Exist_UPLINK_TFI_ASSIGNMENT;
+  guint8 UPLINK_TFI_ASSIGNMENT;
+
+  guint8 Exist_RLC_DATA_BLOCKS_GRANTED;
+  guint8 RLC_DATA_BLOCKS_GRANTED;
+
+  guint8 UnionType;
+  union
+  {
+    Timeslot_Allocation_t Timeslot_Allocation[8];
+    Timeslot_Allocation_Power_Ctrl_Param_t Timeslot_Allocation_Power_Ctrl_Param;
+  } u;
+} DTM_Dynamic_Allocation_t;
+
+typedef struct
+{
+  guint8 TIMESLOT_NUMBER;
+
+  guint8 Exist_ALPHA_and_GAMMA_TN;
+  guint8 ALPHA;
+  guint8 GAMMA_TN;
+
+  guint8 Exist_P0;
+  guint8 P0;
+  guint8 BTS_PWR_CTRL_MODE;
+  guint8 PR_MODE;
+
+  Starting_Frame_Number_t TBF_Starting_Time;
+} Single_Block_Allocation_t;
+
+typedef struct
+{
+  guint8 TIMESLOT_NUMBER;
+
+  guint8 Exist_ALPHA_and_GAMMA_TN;
+  guint8 ALPHA;
+  guint8 GAMMA_TN;
+
+  guint8 Exist_P0;
+  guint8 P0;
+  guint8 BTS_PWR_CTRL_MODE;
+  guint8 PR_MODE;
+
+} DTM_Single_Block_Allocation_t;
+
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    Global_TFI_t Global_TFI;
+    guint32 TLLI;
+    guint16 TQI;
+    Packet_Request_Reference_t Packet_Request_Reference;
+  } u;
+} PacketUplinkID_t;
+
+typedef struct
+{
+  gboolean Exist_Packet_Extended_Timing_Advance;
+  guint8   Packet_Extended_Timing_Advance;
+} PUA_GPRS_AdditionsR99_t;
+
+typedef struct
+{
+  guint8                       CHANNEL_CODING_COMMAND;
+  guint8                       TLLI_BLOCK_CHANNEL_CODING;
+  Packet_Timing_Advance_t     Packet_Timing_Advance;
+
+  guint8                       Exist_Frequency_Parameters;
+  Frequency_Parameters_t      Frequency_Parameters;
+
+  guint8                       UnionType;
+  union
+  {
+    guint8                     extension;
+    Dynamic_Allocation_t      Dynamic_Allocation;
+    Single_Block_Allocation_t Single_Block_Allocation;
+    guint8                     FixedAllocationDummy;
+  } u;
+
+  gboolean                     Exist_AdditionsR99;
+  PUA_GPRS_AdditionsR99_t     AdditionsR99;
+} PUA_GPRS_t;
+
+typedef struct
+{
+  guint8   BitmapLength;
+  guint8   ReducedMA_Bitmap[127 / 8 + 1];
+
+  gboolean Exist_MAIO_2;
+  guint8   MAIO_2;
+} COMPACT_ReducedMA_t;
+
+typedef struct
+{
+  guint8                   TIMESLOT_NUMBER;
+
+  gboolean                 Exist_ALPHA_GAMMA_TN;
+  guint8                   ALPHA;
+  guint8                   GAMMA_TN;
+
+  gboolean                 Exist_P0_BTS_PWR_CTRL_PR_MODE;
+  guint8                   P0;
+  guint8                   BTS_PWR_CTRL_MODE;
+  guint8                   PR_MODE;
+
+  Starting_Frame_Number_t TBF_Starting_Time;
+  guint8                   NUMBER_OF_RADIO_BLOCKS_ALLOCATED;
+} MultiBlock_Allocation_t;
+
+typedef struct
+{
+  gboolean                     Exist_CONTENTION_RESOLUTION_TLLI;
+  guint32                      CONTENTION_RESOLUTION_TLLI;
+
+  gboolean                     Exist_COMPACT_ReducedMA;
+  COMPACT_ReducedMA_t         COMPACT_ReducedMA;
+
+  guint8                       EGPRS_CHANNEL_CODING_COMMAND;
+  guint8                       RESEGMENT;
+  guint8                       EGPRS_WindowSize;
+
+  guint8                       NrOfAccessTechnologies;  /* will hold the number of list elements */
+  guint8                       AccessTechnologyType[MAX_ACCESS_TECHOLOGY_TYPES]; /* for max size of array see 24.008/Table 10.5.146 */
+
+  guint8                       ARAC_RETRANSMISSION_REQUEST;
+  guint8                       TLLI_BLOCK_CHANNEL_CODING;
+
+  gboolean                     Exist_BEP_PERIOD2;
+  guint8                       BEP_PERIOD2;
+
+  Packet_Timing_Advance_t     PacketTimingAdvance;
+
+  gboolean                     Exist_Packet_Extended_Timing_Advance;
+  guint8                       Packet_Extended_Timing_Advance;
+
+  gboolean                     Exist_Frequency_Parameters;
+  Frequency_Parameters_t      Frequency_Parameters;
+
+  guint8                       UnionType;
+  union
+  {
+    guint8                     extension;
+    Dynamic_Allocation_t      Dynamic_Allocation;
+    MultiBlock_Allocation_t   MultiBlock_Allocation;
+    guint8                     FixedAllocationDummy;/* Fixed Allocation is not used */
+  } u;
+} PUA_EGPRS_00_t;
+
+typedef struct
+{
+  guint8            UnionType;
+  union
+  {
+    PUA_EGPRS_00_t PUA_EGPRS_00;
+    guint8          PUA_EGPRS_01;
+    guint8          PUA_EGPRS_10;
+    guint8          PUA_EGPRS_11;
+  } u;
+} PUA_EGPRS_t;
+
+enum PUA_Type
+{
+  PUA_GPRS,
+  PUA_EGPRS
+};
+
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+  guint8 PAGE_MODE;
+
+  guint8 Exist_PERSISTENCE_LEVEL;
+  guint8 PERSISTENCE_LEVEL[4];
+
+  PacketUplinkID_t ID;
+
+  guint8 UnionType;
+  union
+  {
+    PUA_GPRS_t  PUA_GPRS_Struct;
+    PUA_EGPRS_t PUA_EGPRS_Struct;
+  } u;
+} Packet_Uplink_Assignment_t;
+
+
+/* < DTM Packet Uplink Assignment message content > */
+typedef struct
+{
+  guint8 CHANNEL_CODING_COMMAND;
+  guint8 TLLI_BLOCK_CHANNEL_CODING;
+  Packet_Timing_Advance_t Packet_Timing_Advance;
+
+  guint8 UnionType;
+  union
+  {
+    guint8 extension;
+    DTM_Dynamic_Allocation_t DTM_Dynamic_Allocation;
+    DTM_Single_Block_Allocation_t DTM_Single_Block_Allocation;
+  } u;
+  gboolean Exist_EGPRS_Parameters;
+  guint8 EGPRS_CHANNEL_CODING_COMMAND;
+  guint8 RESEGMENT;
+  guint8 EGPRS_WindowSize;
+  gboolean Exist_Packet_Extended_Timing_Advance;
+  guint8 Packet_Extended_Timing_Advance;
+} DTM_Packet_Uplink_Assignment_t;
+
+typedef struct
+{
+  DTM_Packet_Uplink_Assignment_t DTM_Packet_Uplink_Assignment;
+}DTM_UL_t;
+
+/* < DTM Packet Channel Request message content > */
+typedef struct
+{
+  guint8 DTM_Pkt_Est_Cause;
+  Channel_Request_Description_t Channel_Request_Description;
+  gboolean                                 Exist_PFI;
+  guint8                                   PFI;
+}DTM_Channel_Request_Description_t;
+
+/* < Packet Downlink Assignment message content > */
+typedef struct
+{
+  Starting_Frame_Number_t Measurement_Starting_Time;
+  guint8 MEASUREMENT_INTERVAL;
+  guint8 MEASUREMENT_BITMAP;
+} Measurement_Mapping_struct_t;
+
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    Global_TFI_t Global_TFI;
+    guint32 TLLI;
+  } u;
+} PacketDownlinkID_t;
+
+typedef struct
+{
+  gboolean Exist_EGPRS_Params; /* if Exist_EGPRS_Params == FALSE then none of the following 4 vars exist */
+  guint8   EGPRS_WindowSize;
+  guint8   LINK_QUALITY_MEASUREMENT_MODE;
+  gboolean Exist_BEP_PERIOD2;
+  guint8   BEP_PERIOD2;
+
+  gboolean Exist_Packet_Extended_Timing_Advance;
+  guint8   Packet_Extended_Timing_Advance;
+
+  gboolean             Exist_COMPACT_ReducedMA;
+  COMPACT_ReducedMA_t COMPACT_ReducedMA;
+} PDA_AdditionsR99_t;
+
+typedef struct
+{
+  guint8                        MESSAGE_TYPE;
+  guint8                        PAGE_MODE;
+
+  gboolean                      Exist_PERSISTENCE_LEVEL;
+  guint8                        PERSISTENCE_LEVEL[4];
+
+  PacketDownlinkID_t           ID;
+
+  guint8                        MAC_MODE;
+  guint8                        RLC_MODE;
+  guint8                        CONTROL_ACK;
+  guint8                        TIMESLOT_ALLOCATION;
+  Packet_Timing_Advance_t      Packet_Timing_Advance;
+
+  gboolean                      Exist_P0_and_BTS_PWR_CTRL_MODE;
+  guint8                        P0;
+  guint8                        BTS_PWR_CTRL_MODE;
+  guint8                        PR_MODE;
+
+  gboolean                      Exist_Frequency_Parameters;
+  Frequency_Parameters_t       Frequency_Parameters;
+
+  gboolean                      Exist_DOWNLINK_TFI_ASSIGNMENT;
+  guint8                        DOWNLINK_TFI_ASSIGNMENT;
+
+  gboolean                      Exist_Power_Control_Parameters;
+  Power_Control_Parameters_t   Power_Control_Parameters;
+
+  gboolean                      Exist_TBF_Starting_Time;
+  Starting_Frame_Number_t      TBF_Starting_Time;
+
+  guint8                        Exist_Measurement_Mapping;
+  Measurement_Mapping_struct_t Measurement_Mapping;
+
+  gboolean                      Exist_AdditionsR99;
+  PDA_AdditionsR99_t           AdditionsR99;
+} Packet_Downlink_Assignment_t;
+
+/* < DTM Packet Downlink Assignment message content > */
+typedef struct
+{
+  guint8 MAC_MODE;
+  guint8 RLC_MODE;
+  guint8 TIMESLOT_ALLOCATION;
+  Packet_Timing_Advance_t Packet_Timing_Advance;
+
+  guint8 Exist_P0_and_BTS_PWR_CTRL_MODE;
+  guint8 P0;
+  guint8 BTS_PWR_CTRL_MODE;
+  guint8 PR_MODE;
+
+  guint8 Exist_Power_Control_Parameters;
+  Power_Control_Parameters_t Power_Control_Parameters;
+
+  guint8 Exist_DOWNLINK_TFI_ASSIGNMENT;
+  guint8 DOWNLINK_TFI_ASSIGNMENT;
+
+  guint8 Exist_Measurement_Mapping;
+  Measurement_Mapping_struct_t Measurement_Mapping;
+  gboolean EGPRS_Mode;
+  guint8 EGPRS_WindowSize;
+  guint8 LINK_QUALITY_MEASUREMENT_MODE;
+  gboolean Exist_Packet_Extended_Timing_Advance;
+  guint8   Packet_Extended_Timing_Advance;
+} DTM_Packet_Downlink_Assignment_t;
+
+typedef struct
+{
+  DTM_Packet_Downlink_Assignment_t DTM_Packet_Downlink_Assignment;
+}DTM_DL_t;
+
+typedef struct
+{
+  GPRS_Cell_Options_t GPRS_Cell_Options;
+  GPRS_Power_Control_Parameters_t GPRS_Power_Control_Parameters;
+}DTM_GPRS_Broadcast_Information_t;
+
+typedef struct
+{
+  DTM_GPRS_Broadcast_Information_t DTM_GPRS_Broadcast_Information;
+}DTM_GPRS_B_t;
+
+/* < Packet Paging Request message content > */
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    TMSI_t PTMSI;
+    struct MobileId Mobile_Identity;
+  } u;
+} Page_request_for_TBF_establishment_t;
+
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    TMSI_t TMSI;
+    struct MobileId Mobile_Identity;
+  } u;
+
+  guint8 CHANNEL_NEEDED;
+
+  guint8 Exist_eMLPP_PRIORITY;
+  guint8 eMLPP_PRIORITY;
+} Page_request_for_RR_conn_t;
+
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    Page_request_for_TBF_establishment_t Page_req_TBF;
+    Page_request_for_RR_conn_t Page_req_RR;
+  } u;
+} Repeated_Page_info_t;
+
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+  guint8 PAGE_MODE;
+
+  guint8 Exist_PERSISTENCE_LEVEL;
+  guint8 PERSISTENCE_LEVEL[4];
+
+  guint8 Exist_NLN;
+  guint8 NLN;
+
+  guint8 Count_Repeated_Page_info;
+  Repeated_Page_info_t Repeated_Page_info[5];
+}  Packet_Paging_Request_t;
+
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+  guint8 PAGE_MODE;
+
+  guint8 TIMESLOTS_AVAILABLE;
+} Packet_PDCH_Release_t;
+
+/* < Packet Power Control/Timing Advance message content > */
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    Global_TFI_t Global_TFI;
+    guint16 TQI;
+    Packet_Request_Reference_t Packet_Request_Reference;
+  } u;
+} PacketPowerControlTimingAdvanceID_t;
+
+typedef struct
+{
+  Global_Packet_Timing_Advance_t Global_Packet_Timing_Advance;
+  Power_Control_Parameters_t Power_Control_Parameters;
+} GlobalTimingAndPower_t;
+
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    Global_Packet_Timing_Advance_t Global_Packet_Timing_Advance;
+    Power_Control_Parameters_t Power_Control_Parameters;
+  } u;
+} GlobalTimingOrPower_t;
+
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+  guint8 PAGE_MODE;
+
+  PacketPowerControlTimingAdvanceID_t ID;
+
+  /* -- Message escape */
+  guint8 Exist_Global_Power_Control_Parameters;
+  Global_Power_Control_Parameters_t Global_Power_Control_Parameters;
+
+  guint8 UnionType;
+  union
+  {
+    GlobalTimingAndPower_t GlobalTimingAndPower;
+    GlobalTimingOrPower_t GlobalTimingOrPower;
+  } u;
+} Packet_Power_Control_Timing_Advance_t;
+
+/* < Packet Queueing Notification message content > */
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+  guint8 PAGE_MODE;
+
+  /* 111 Fixed */
+  Packet_Request_Reference_t Packet_Request_Reference;
+  guint16 TQI;
+} Packet_Queueing_Notification_t;
+
+/* < Packet Timeslot Reconfigure message content 04.60 sec. 11.2.31> */
+
+typedef Dynamic_Allocation_t TRDynamic_Allocation_t;
+
+typedef struct
+{
+  Global_Packet_Timing_Advance_t Global_Packet_Timing_Advance;
+
+  guint8                          DOWNLINK_RLC_MODE;
+  guint8                          CONTROL_ACK;
+
+  guint8                          Exist_DOWNLINK_TFI_ASSIGNMENT;
+  guint8                          DOWNLINK_TFI_ASSIGNMENT;
+
+  guint8                          Exist_UPLINK_TFI_ASSIGNMENT;
+  guint8                          UPLINK_TFI_ASSIGNMENT;
+
+  guint8                          DOWNLINK_TIMESLOT_ALLOCATION;
+
+  guint8                          Exist_Frequency_Parameters;
+  Frequency_Parameters_t         Frequency_Parameters;
+} Common_Timeslot_Reconfigure_t;
+
+typedef struct
+{
+  gboolean Exist_Packet_Extended_Timing_Advance;
+  guint8   Packet_Extended_Timing_Advance;
+} PTR_GPRS_AdditionsR99_t;
+
+typedef struct
+{
+  guint8                          CHANNEL_CODING_COMMAND;
+
+  Common_Timeslot_Reconfigure_t  Common_Timeslot_Reconfigure_Data;
+
+  guint8 UnionType;
+  union
+  {
+    TRDynamic_Allocation_t       Dynamic_Allocation;
+    guint8                        Fixed_AllocationDummy;
+  } u;
+
+   gboolean                       Exist_AdditionsR99;
+   PTR_GPRS_AdditionsR99_t       AdditionsR99;
+} PTR_GPRS_t;
+
+typedef struct
+{
+  gboolean                        Exist_COMPACT_ReducedMA;
+  COMPACT_ReducedMA_t            COMPACT_ReducedMA;
+
+  guint8                          EGPRS_ChannelCodingCommand;
+  guint8                          RESEGMENT;
+
+  gboolean                        Exist_DOWNLINK_EGPRS_WindowSize;
+  guint8                          DOWNLINK_EGPRS_WindowSize;
+
+  gboolean                        Exist_UPLINK_EGPRS_WindowSize;
+  guint8                          UPLINK_EGPRS_WindowSize;
+
+  guint8                          LINK_QUALITY_MEASUREMENT_MODE;
+
+  gboolean                        Exist_Packet_Extended_Timing_Advance;
+  guint8                          Packet_Extended_Timing_Advance;
+
+  Common_Timeslot_Reconfigure_t  Common_Timeslot_Reconfigure_Data;
+
+  guint8                          UnionType;
+  union
+  {
+    TRDynamic_Allocation_t       Dynamic_Allocation;
+    guint8                        FixedAllocationDummy;
+  } u;
+} PTR_EGPRS_00_t;
+
+typedef struct
+{
+  guint8            UnionType;
+  union
+  {
+    PTR_EGPRS_00_t PTR_EGPRS_00;
+    guint8          extension_01;
+    guint8          extension_10;
+    guint8          extension_11;
+  } u;
+} PTR_EGPRS_t;
+
+enum PTR_Type
+{
+  PTR_GPRS,
+  PTR_EGPRS
+};
+
+typedef struct
+{
+  guint8          MESSAGE_TYPE;
+  guint8          PAGE_MODE;
+
+  Global_TFI_t   Global_TFI;
+
+   guint8         UnionType;
+   union
+   {
+     PTR_GPRS_t  PTR_GPRS_Struct;
+     PTR_EGPRS_t PTR_EGPRS_Struct;
+   } u;
+} Packet_Timeslot_Reconfigure_t;
+
+
+/* < PSI1 message content > */
+typedef struct
+{
+  guint8 ACC_CONTR_CLASS[2];
+  guint8 MAX_RETRANS[4];
+  guint8 S;
+  guint8 TX_INT;
+
+  guint8 Exist_PERSISTENCE_LEVEL;
+  guint8 PERSISTENCE_LEVEL[4];
+} PRACH_Control_t;
+
+typedef struct
+{
+  guint8 BS_PCC_REL;
+  guint8 BS_PBCCH_BLKS;
+  guint8 BS_PAG_BLKS_RES;
+  guint8 BS_PRACH_BLKS;
+} PCCCH_Organization_t;
+
+typedef struct
+{
+  guint8 MSCR;
+  guint8 SGSNR;
+  guint8 BandIndicator;
+} PSI1_AdditionsR99_t;
+
+typedef struct
+{
+  guint8                             MESSAGE_TYPE;
+
+  guint8                             PAGE_MODE;
+  guint8                             PBCCH_CHANGE_MARK;
+  guint8                             PSI_CHANGE_FIELD;
+  guint8                             PSI1_REPEAT_PERIOD;
+  guint8                             PSI_COUNT_LR;
+
+  guint8                             Exist_PSI_COUNT_HR;
+  guint8                             PSI_COUNT_HR;
+
+  guint8                             MEASUREMENT_ORDER;
+  GPRS_Cell_Options_t               GPRS_Cell_Options;
+  PRACH_Control_t                   PRACH_Control;
+  PCCCH_Organization_t              PCCCH_Organization;
+  Global_Power_Control_Parameters_t Global_Power_Control_Parameters;
+  guint8                             PSI_STATUS_IND;
+
+  gboolean                           Exist_AdditionsR99;
+  PSI1_AdditionsR99_t               AdditionsR99;
+} PSI1_t;
+
+/* < PSI2 message content > */
+typedef struct
+{
+  guint8 NUMBER;
+
+  guint8 Length;
+  guint8 Contents[15 + 3];/* octet (val(Length of RFL contents) + 3) */
+} Reference_Frequency_t;
+
+typedef struct
+{
+  guint8 NoOfRFLs;
+  guint8 RFL_Number[MAX_RFLS];
+} Cell_Allocation_t;
+
+typedef struct
+{
+  guint8 NUMBER;
+  GPRS_Mobile_Allocation_t Mobile_Allocation;
+} PSI2_MA_t;
+
+typedef struct
+{
+  guint16 ARFCN;
+  guint8 TIMESLOT_ALLOCATION;
+} Non_Hopping_PCCCH_Carriers_t;
+
+typedef struct
+{
+  guint8 Count_Carriers;
+  Non_Hopping_PCCCH_Carriers_t Carriers[7];
+} NonHoppingPCCCH_t;
+
+typedef struct
+{
+  guint8 MAIO;
+  guint8 TIMESLOT_ALLOCATION;
+} Hopping_PCCCH_Carriers_t;
+
+typedef struct
+{
+  guint8 MA_NUMBER;
+
+  guint8 Count_Carriers;
+  Hopping_PCCCH_Carriers_t Carriers[10];/* MAX_PCCCH but 10 is theoretical max. */
+} HoppingPCCCH_t;
+
+typedef struct
+{
+  guint8 TSC;
+
+  guint8 UnionType;
+  union
+  {
+    NonHoppingPCCCH_t NonHopping;
+    HoppingPCCCH_t Hopping;
+  } u;
+} PCCCH_Description_t;
+
+typedef struct
+{
+  LAI_t LAI;
+  guint8 RAC;
+  CellId_t Cell_Identity;
+} Cell_Identification_t;
+
+typedef struct
+{
+  guint8 ATT;
+
+  guint8 Exist_T3212;
+  guint8 T3212;
+
+  guint8 NECI;
+  guint8 PWRC;
+  guint8 DTX;
+  guint8 RADIO_LINK_TIMEOUT;
+  guint8 BS_AG_BLKS_RES;
+  guint8 CCCH_CONF;
+  guint8 BS_PA_MFRMS;
+  guint8 MAX_RETRANS;
+  guint8 TX_INTEGER;
+  guint8 EC;
+  guint8 MS_TXPWR_MAX_CCCH;
+
+  guint8 Exist_Extension_Bits;
+  Extension_Bits_t Extension_Bits;
+} Non_GPRS_Cell_Options_t;
+
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+  guint8 PAGE_MODE;
+  guint8 CHANGE_MARK;
+  guint8 INDEX;
+  guint8 COUNT;
+
+  guint8 Exist_Cell_Identification;
+  Cell_Identification_t Cell_Identification;
+
+  guint8 Exist_Non_GPRS_Cell_Options;
+  Non_GPRS_Cell_Options_t Non_GPRS_Cell_Options;
+
+  guint8 Count_Reference_Frequency;
+  Reference_Frequency_t Reference_Frequency[MAX_RFLS];
+
+  Cell_Allocation_t Cell_Allocation;
+
+  guint8 Count_GPRS_MA;
+  PSI2_MA_t GPRS_MA[MAX_MA_LISTS_IN_PSI2];
+
+  guint8 Count_PCCCH_Description;
+  PCCCH_Description_t PCCCH_Description[7];/* MAX_PCCCH but it is impossible that more than 7 can be decoded */
+} PSI2_t;
+
+/* < PSI3 message content > */
+typedef struct
+{
+  guint8 PRIORITY_CLASS;
+  guint8 HCS_THR;
+} HCS_t;
+
+typedef struct
+{
+  guint8 CELL_BAR_ACCESS_2;
+  guint8 EXC_ACC;
+  guint8 GPRS_RXLEV_ACCESS_MIN;
+  guint8 GPRS_MS_TXPWR_MAX_CCH;
+
+  guint8 Exist_HCS;
+  HCS_t HCS;
+  guint8 MULTIBAND_REPORTING;
+} Serving_Cell_params_t;
+
+typedef struct
+{
+  guint8 GPRS_CELL_RESELECT_HYSTERESIS;
+  guint8 C31_HYST;
+  guint8 C32_QUAL;
+  guint8 RANDOM_ACCESS_RETRY;
+
+  guint8 Exist_T_RESEL;
+  guint8 T_RESEL;
+
+  guint8 Exist_RA_RESELECT_HYSTERESIS;
+  guint8 RA_RESELECT_HYSTERESIS;
+} Gen_Cell_Sel_t;
+
+typedef struct
+{
+  guint8 PBCCH_LOCATION;
+  guint8 PSI1_REPEAT_PERIOD;
+} Location_Repeat_t;
+
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    guint8 SI13_LOCATION;
+    Location_Repeat_t lr;
+  } u;
+} SI13_PBCCH_Location_t;
+
+typedef struct
+{
+  guint8 BSIC;
+  guint8 CELL_BAR_ACCESS_2;
+  guint8 EXC_ACC;
+  guint8 SAME_RA_AS_SERVING_CELL;
+
+  guint8 Exist_RXLEV_and_TXPWR;
+  guint8 GPRS_RXLEV_ACCESS_MIN;
+  guint8 GPRS_MS_TXPWR_MAX_CCH;
+
+  guint8 Exist_OFFSET_and_TIME;
+  guint8 GPRS_TEMPORARY_OFFSET;
+  guint8 GPRS_PENALTY_TIME;
+
+  guint8 Exist_GPRS_RESELECT_OFFSET;
+  guint8 GPRS_RESELECT_OFFSET;
+
+  guint8 Exist_HCS;
+  HCS_t HCS;
+
+  guint8 Exist_SI13_PBCCH_Location;
+  SI13_PBCCH_Location_t SI13_PBCCH_Location;
+} Cell_Selection_t;
+
+/* Neigbour cell list as used in PSI3 and PSI3bis */
+typedef struct
+{
+  guint8 FREQ_DIFF_LENGTH;
+  guint8 FREQUENCY_DIFF;
+
+  Cell_Selection_t Cell_SelectionParams;
+} Cell_Selection_Params_With_FreqDiff_t;
+
+typedef struct
+{
+  guint16 START_FREQUENCY;
+  Cell_Selection_t Cell_Selection;
+  guint8 NR_OF_REMAINING_CELLS;
+  guint8 FREQ_DIFF_LENGTH;
+
+  Cell_Selection_Params_With_FreqDiff_t Cell_Selection_Params_With_FreqDiff[16];
+} NeighbourCellParameters_t;
+
+typedef struct
+{
+  guint8 Count;
+  NeighbourCellParameters_t Parameters[32];
+} NeighbourCellList_t;
+
+/* < PSI3 message content > */
+
+typedef struct
+{
+  guint8  bsic;
+  guint8  CELL_BAR_ACCESS_2;
+  guint8  EXC_ACC;
+  guint8  SAME_RA_AS_SERVING_CELL;
+  guint8 Exist_GPRS_RXLEV_ACCESS_MIN;
+  guint8  GPRS_RXLEV_ACCESS_MIN;
+  guint8  GPRS_MS_TXPWR_MAX_CCH;
+  guint8 Exist_GPRS_TEMPORARY_OFFSET;
+  guint8  GPRS_TEMPORARY_OFFSET;
+  guint8  GPRS_PENALTY_TIME;
+  guint8 Exist_GPRS_RESELECT_OFFSET;
+  guint8  GPRS_RESELECT_OFFSET;
+  guint8 Exist_Hcs_Parm;
+  HCS_t   HCS_Param;
+  guint8 Exist_TIME_GROUP;
+  guint8  TIME_GROUP;
+  guint8 Exist_GUAR_CONSTANT_PWR_BLKS;
+  guint8  GUAR_CONSTANT_PWR_BLKS;
+}COMPACT_Cell_Sel_t;
+
+typedef struct
+{
+  guint8  FREQ_DIFF_LENGTH;
+  guint16 FREQUENCY_DIFF;
+  COMPACT_Cell_Sel_t  COMPACT_Cell_Sel_Remain_Cells;
+}COMPACT_Neighbour_Cell_Param_Remaining_t;
+
+typedef struct
+{
+  guint16 START_FREQUENCY;
+  COMPACT_Cell_Sel_t COMPACT_Cell_Sel;
+  guint8  NR_OF_REMAINING_CELLS;
+  guint8  FREQ_DIFF_LENGTH;
+  COMPACT_Neighbour_Cell_Param_Remaining_t  COMPACT_Neighbour_Cell_Param_Remaining[16];
+}COMPACT_Neighbour_Cell_Param_t;
+
+typedef struct
+{
+  Cell_Identification_t Cell_Identification;
+  guint8  COMPACT_Neighbour_Cell_Param_Count;
+  COMPACT_Neighbour_Cell_Param_t COMPACT_Neighbour_Cell_Param[8];
+}COMPACT_Info_t;
+
+typedef struct
+{
+  guint8  Exist_CCN_Support_Desc;
+  CCN_Support_Description_t CCN_Support_Desc;
+}PSI3_AdditionR4_t;
+
+typedef struct
+{
+  guint8 Exist_COMPACT_Info;
+  COMPACT_Info_t COMPACT_Info;
+  guint8 Exist_AdditionR4;
+  PSI3_AdditionR4_t AdditionR4;
+}PSI3_AdditionR99_t;
+
+typedef struct
+{
+  LSA_ID_Info_t Scell_LSA_ID_Info;
+  guint8 Exist_LSA_Parameters;
+  LSA_Parameters_t LSA_Parameters;
+  guint8 Exist_AdditionR99;
+  PSI3_AdditionR99_t AdditionR99;
+}PSI3_AdditionR98_t;
+
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+  guint8 PAGE_MODE;
+  guint8 CHANGE_MARK;
+  guint8 BIS_COUNT;
+
+  Serving_Cell_params_t Serving_Cell_params;
+
+  Gen_Cell_Sel_t General_Cell_Selection;
+  NeighbourCellList_t NeighbourCellList;
+
+  guint8 Exist_AdditionR98;
+  PSI3_AdditionR98_t AdditionR98;
+} PSI3_t;
+
+/* < PSI3_BIS message content > */
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+  guint8 PAGE_MODE;
+  guint8 CHANGE_MARK;
+  guint8 BIS_INDEX;
+  guint8 BIS_COUNT;
+
+  NeighbourCellList_t NeighbourCellList;
+} PSI3_BIS_t;
+
+/* < PSI4 message content > */
+typedef struct
+{
+  guint8 MA_NUMBER;
+  guint8 MAIO;
+} h_CG_t;
+
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    guint16 ARFCN;
+    h_CG_t h_CG;
+  } u;
+
+  guint8 TIMESLOT_ALLOCATION;
+} Channel_Group_t;
+
+typedef struct
+{
+  /* Channel_Group_t Channel_Group
+   * At least one
+   * the first one is unpacked in the index
+   */
+  guint8 Count_Channel_Group;
+  Channel_Group_t Channel_Group[8];
+} Channel_List_t;
+
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+
+  guint8 PAGE_MODE;
+  guint8 CHANGE_MARK;
+  guint8 INDEX;
+  guint8 COUNT;
+
+  Channel_List_t Channel_List;
+
+} PSI4_t;
+
+
+/* < PSI5 message content > */
+typedef struct
+{
+  guint8 existRepParamsFDD;
+  guint8 RepQuantFDD;
+  guint8 MultiratReportingFDD;
+
+  guint8 existReportingParamsFDD;
+  guint8 ReportingOffsetFDD;
+  guint8 ReportingThresholdFDD;
+
+  guint8 existMultiratReportingTDD;
+  guint8 MultiratReportingTDD;
+
+  guint8 existOffsetThresholdTDD;
+  guint8 ReportingOffsetTDD;
+  guint8 ReportingThresholdTDD;
+} GPRSMeasurementParams3G_PSI5_t;
+
+typedef struct
+{
+  guint8   REPORT_TYPE;
+  guint8   REPORTING_RATE;
+  guint8   INVALID_BSIC_REPORTING;
+  guint8  Exist_NCC_PERMITTED;
+  guint8   NCC_PERMITTED;
+  
+  gboolean Exist_GPRSMeasurementParams;
+  MeasurementParams_t   GPRSMeasurementParams;
+  gboolean Exist_GPRSMeasurementParams3G;
+  GPRSMeasurementParams3G_PSI5_t  GPRSMeasurementParams3G;
+} ENH_Reporting_Parameters_t;
+
+typedef struct
+{
+  guint8 Exist_OffsetThreshold_700;
+  OffsetThreshold_t OffsetThreshold_700;
+  guint8 Exist_OffsetThreshold_810;
+  OffsetThreshold_t OffsetThreshold_810;
+}PSI5_AdditionsR7;
+
+typedef struct
+{
+  guint8 Exist_GPRS_AdditionalMeasurementParams3G;
+  GPRS_AdditionalMeasurementParams3G_t GPRS_AdditionalMeasurementParams3G;
+  guint8 Exist_AdditionsR7;
+  PSI5_AdditionsR7 AdditionsR7;
+}PSI5_AdditionsR5;
+
+typedef struct
+{
+  guint8 Exist_ENH_Reporting_Param;
+  ENH_Reporting_Parameters_t ENH_Reporting_Param;
+  guint8 Exist_AdditionsR5;
+  PSI5_AdditionsR5 AdditionisR5;
+}PSI5_AdditionsR99;
+
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+
+  guint8 PAGE_MODE;
+  guint8 CHANGE_MARK;
+  guint8 INDEX;
+  guint8 COUNT;
+
+  guint8 Eixst_NC_Meas_Param;
+  NC_Measurement_Parameters_t NC_Meas_Param;
+  guint8 Exist_AdditionsR99;
+  PSI5_AdditionsR99 AdditionsR99;
+} PSI5_t;
+
+
+
+
+/* < PSI13 message content >
+ * Combined with SI13
+ */
+typedef struct
+{
+  guint8 Exist_LB_MS_TXPWR_MAX_CCH;
+  guint8 LB_MS_TXPWR_MAX_CCH;
+  guint8 SI2n_SUPPORT;
+}PSI13_AdditionsR6;
+
+typedef PSI13_AdditionsR6 SI13_AdditionsR6;
+
+typedef struct
+{
+  guint8                SI_STATUS_IND;
+  guint8                Exist_AdditionsR6;
+  PSI13_AdditionsR6     AdditionsR6;
+}PSI13_AdditionsR4;
+
+typedef PSI13_AdditionsR4 SI13_AdditionsR4;
+
+typedef struct
+{
+  guint8                SGSNR;
+  gboolean              Exist_AdditionsR4;
+  PSI13_AdditionsR4     AdditionsR4;
+}PSI13_AdditionR99;
+
+typedef PSI13_AdditionR99 SI13_AdditionR99;
+
+typedef struct
+{
+  guint8 Exist;
+  guint8 MESSAGE_TYPE;
+
+  guint8 PAGE_MODE;
+  guint8 BCCH_CHANGE_MARK;
+  guint8 SI_CHANGE_FIELD;
+
+  guint8 Exist_MA;
+  guint8 SI13_CHANGE_MARK;
+  GPRS_Mobile_Allocation_t GPRS_Mobile_Allocation;
+
+  guint8 UnionType;
+  union
+  {
+    PBCCH_Not_present_t PBCCH_Not_present;
+    PBCCH_present_t PBCCH_present;
+  } u;
+
+  gboolean              Exist_AdditionsR99;
+  PSI13_AdditionR99     AdditionsR99;
+} PSI13_t;
+
+/* SI_13_t is combined in the PSI13 structure */
+typedef PSI13_t SI_13_t;
+
+/* < Packet PRACH Parameters message content > */
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+  guint8 PAGE_MODE;
+
+
+  PRACH_Control_t PRACH_Control;
+} Packet_PRACH_Parameters_t;
+
+/* < Packet Access Reject message content > */
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    guint32 TLLI;
+    Packet_Request_Reference_t Packet_Request_Reference;
+    Global_TFI_t Global_TFI;
+  } u;
+} RejectID_t;
+
+typedef struct
+{
+  RejectID_t ID;
+
+  guint8 Exist_Wait;
+  guint8 WAIT_INDICATION;
+  guint8 WAIT_INDICATION_SIZE;
+} Reject_t;
+
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+  guint8 PAGE_MODE;
+
+  guint8 IndexToOur;
+  guint8 Count_Reject;
+  Reject_t Reject[5];
+} Packet_Access_Reject_t;
+
+/* < Packet Cell Change Order message content > */
+typedef struct
+{
+  guint8 CELL_BAR_ACCESS_2;
+  guint8 EXC_ACC;
+  guint8 SAME_RA_AS_SERVING_CELL;
+
+  guint8 Exist_RXLEV_and_TXPWR;
+  guint8 GPRS_RXLEV_ACCESS_MIN;
+  guint8 GPRS_MS_TXPWR_MAX_CCH;
+
+  guint8 Exist_OFFSET_and_TIME;
+  guint8 GPRS_TEMPORARY_OFFSET;
+  guint8 GPRS_PENALTY_TIME;
+
+  guint8 Exist_GPRS_RESELECT_OFFSET;
+  guint8 GPRS_RESELECT_OFFSET;
+
+  guint8 Exist_HCS;
+  HCS_t HCS;
+
+  guint8 Exist_SI13_PBCCH_Location;
+  SI13_PBCCH_Location_t SI13_PBCCH_Location;
+} Cell_Selection_2_t;
+
+typedef struct
+{
+  guint8 FREQUENCY_DIFF;
+  guint8 BSIC;
+  Cell_Selection_t Cell_Selection;
+} h_FreqBsicCell_t;
+
+typedef struct
+{
+  guint8 FREQ_DIFF_LENGTH;
+  guint8 FREQUENCY_DIFF;
+  guint8 BSIC;
+
+  gboolean Exist_CellSelectionParams;
+  Cell_Selection_2_t CellSelectionParams;
+} CellSelectionParamsWithFreqDiff_t;
+
+typedef struct
+{
+  guint16 START_FREQUENCY;
+  guint8 BSIC;
+
+  guint8 Exist_Cell_Selection;
+  Cell_Selection_2_t Cell_Selection;
+
+  guint8 NR_OF_FREQUENCIES;
+  guint8 FREQ_DIFF_LENGTH;
+
+
+  CellSelectionParamsWithFreqDiff_t CellSelectionParamsWithFreqDiff[32];
+} Add_Frequency_list_t;
+
+typedef struct
+{
+  guint8 REMOVED_FREQ_INDEX;
+} Removed_Freq_Index_t;
+
+typedef struct
+{
+  guint8 Exist_REMOVED_FREQ;
+  guint8 NR_OF_REMOVED_FREQ;
+  Removed_Freq_Index_t Removed_Freq_Index[32];
+
+  guint8 Count_Add_Frequency;
+  Add_Frequency_list_t Add_Frequency[32];
+} NC_Frequency_list_t;
+
+
+typedef struct
+{
+  guint8 NETWORK_CONTROL_ORDER;
+
+  guint8 Exist_NC;
+  guint8 NC_NON_DRX_PERIOD;
+  guint8 NC_REPORTING_PERIOD_I;
+  guint8 NC_REPORTING_PERIOD_T;
+
+  guint8 Exist_NC_FREQUENCY_LIST;
+  NC_Frequency_list_t NC_Frequency_list;
+} NC_Measurement_Parameters_with_Frequency_List_t;
+
+
+typedef struct
+{
+  guint8 BA_IND;
+  guint8 BA_IND_3G;
+} BA_IND_t;
+
+typedef struct
+{
+  guint8 BA_USED;
+  guint8 BA_USED_3G;
+} BA_USED_t;
+
+typedef struct
+{
+  guint8 RXLEV_SERVING_CELL;
+} Serving_Cell_Data_t;
+
+typedef struct
+{
+  guint8 FREQUENCY_N;
+  guint8 Exist_BSIC_N;
+  guint8 BSIC_N;
+  guint8 RXLEV_N;
+} NC_Measurements_t;
+
+typedef struct
+{
+  guint8 BCCH_FREQ_N;
+  guint8 BSIC_N;
+  guint8 RXLEV_N;
+} RepeatedInvalid_BSIC_Info_t;
+
+typedef struct
+{
+  guint8 Exist_REPORTING_QUANTITY;
+  guint8 REPORTING_QUANTITY;
+} REPORTING_QUANTITY_Instance_t;
+
+typedef struct
+{
+  guint8 NC_MODE;
+  Serving_Cell_Data_t Serving_Cell_Data;
+
+  guint8 NUMBER_OF_NC_MEASUREMENTS;
+  NC_Measurements_t NC_Measurements[6];  /* NC_Measurements * (val(NUMBER_OF_NC_MEASUREMENTS))
+                                           Max 7 NC Measurements in one PACKET MEASUREMENT REPORT,
+                                           but only 6 cells are updated in PACKET IDLE. */
+} NC_Measurement_Report_t;
+
+typedef struct
+{
+  guint8 EXT_REPORTING_TYPE;
+
+  guint8 Exist_I_LEVEL;
+  struct
+  {
+    guint8 Exist;
+    guint8 I_LEVEL;
+  } Slot[8];
+
+  guint8 NUMBER_OF_EXT_MEASUREMENTS;
+  NC_Measurements_t EXT_Measurements[9];  /* EXT_Measurements * (val(NUMBER_OF_NC_MEASUREMENTS))
+                                            Max 9 Ext Measurements in one PACKET MEASUREMENT REPORT */
+} EXT_Measurement_Report_t;
+
+typedef struct
+{
+  guint8 CELL_LIST_INDEX_3G;
+  guint8 REPORTING_QUANTITY;
+} Measurements_3G_t;
+
+typedef struct
+{
+  guint32  UTRAN_CGI;
+  guint8 Exist_PLMN_ID;
+  PLMN_t   Plmn_ID;
+  guint32  CSG_ID;
+  gboolean Access_Mode;
+  guint8   REPORTING_QUANTITY;
+}UTRAN_CSG_Measurement_Report_t;
+
+typedef struct
+{
+  guint32  EUTRAN_CGI;
+  guint16  Tracking_Area_Code;
+  guint8 Exist_PLMN_ID;
+  PLMN_t   Plmn_ID;
+  guint32  CSG_ID;
+  gboolean Access_Mode;
+  guint8   REPORTING_QUANTITY;
+}EUTRAN_CSG_Measurement_Report_t;
+
+typedef struct
+{
+  gboolean  Exist_UTRAN_CSG_Meas_Rpt;
+  UTRAN_CSG_Measurement_Report_t  UTRAN_CSG_Meas_Rpt;
+  gboolean  Exist_EUTRAN_CSG_Meas_Rpt;
+  EUTRAN_CSG_Measurement_Report_t  EUTRAN_CSG_Meas_Rpt;
+}PMR_AdditionsR9_t;
+
+typedef struct
+{
+  guint8  EUTRAN_FREQUENCY_INDEX;
+  guint16 CELL_IDENTITY;
+  guint8  REPORTING_QUANTITY;
+}EUTRAN_Measurement_Report_Body_t;
+
+typedef struct
+{
+  guint8 N_EUTRAN;
+  EUTRAN_Measurement_Report_Body_t Report[4];
+}EUTRAN_Measurement_Report_t;
+
+typedef struct
+{
+  gboolean   Exist_EUTRAN_Meas_Rpt;
+  EUTRAN_Measurement_Report_t  EUTRAN_Meas_Rpt;
+  gboolean   Exist_AdditionsR9;
+  PMR_AdditionsR9_t  AdditionsR9;
+}PMR_AdditionsR8_t;
+
+typedef struct
+{
+  gboolean     Exist_GRNTI;
+  guint8        GRNTI;
+  gboolean     Exist_AdditionsR8;
+  PMR_AdditionsR8_t  AdditionsR8;
+}PMR_AdditionsR5_t;
+
+typedef struct
+{
+  gboolean     Exist_Info3G;
+  guint8       UnionType;
+  union
+  {
+    BA_USED_t BA_USED;
+    guint8     PSI3_CHANGE_MARK;
+  } u;
+  guint8       PMO_USED;
+
+  /* N_3G        bit(3): max value 7
+   * Report part  (csn): {<3G_CELL_LIST_INDEX:bit(7)><REPORTING_QUANTITY:bit(6)>}*(val(N_3G + 1))
+   * Max 6 3G measurement structs in one PMR
+   */
+  gboolean     Exist_MeasurementReport3G;
+  guint8       N_3G;
+  Measurements_3G_t Measurements_3G[6];
+
+  gboolean     Exist_AdditionsR5;
+  PMR_AdditionsR5_t  AdditionsR5;
+} PMR_AdditionsR99_t;
+
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+  guint8 PayloadType;
+  guint8 spare;
+  guint8 R;
+
+  guint32 TLLI;
+  guint8 Exist_PSI5_CHANGE_MARK;
+  guint8 PSI5_CHANGE_MARK;
+
+  guint8 UnionType;
+  union
+  {
+    NC_Measurement_Report_t NC_Measurement_Report;
+    EXT_Measurement_Report_t EXT_Measurement_Report;
+  } u;
+
+  gboolean Exist_AdditionsR99;
+  PMR_AdditionsR99_t AdditionsR99;
+} Packet_Measurement_Report_t;
+
+#define INV_BSIC_LIST_LEN (16)
+
+#define REPORT_QUANTITY_LIST_LEN (96) /* Specification specified up to 96 */
+
+typedef struct
+{
+  guint8 NC_MODE;
+  guint8 UnionType;
+  union
+  {
+    BA_USED_t BA_USED;
+    guint8 PSI3_CHANGE_MARK;
+  } u;
+
+  guint8 PMO_USED;
+  guint8 BSIC_Seen;
+  guint8 SCALE;
+
+  guint8 Exist_Serving_Cell_Data;
+  Serving_Cell_Data_t Serving_Cell_Data;
+
+  guint8 Count_RepeatedInvalid_BSIC_Info;
+  RepeatedInvalid_BSIC_Info_t RepeatedInvalid_BSIC_Info[INV_BSIC_LIST_LEN];
+
+  guint8 Exist_ReportBitmap;
+  guint8 Count_REPORTING_QUANTITY_Instances;
+  REPORTING_QUANTITY_Instance_t REPORTING_QUANTITY_Instances[REPORT_QUANTITY_LIST_LEN];
+
+} ENH_NC_Measurement_Report_t;
+
+typedef struct
+{
+  guint8 Exist_UTRAN_CSG_Target_Cell;
+  UTRAN_CSG_Target_Cell_t UTRAN_CSG_Target_Cell;
+  guint8 Exist_EUTRAN_CSG_Target_Cell;
+  EUTRAN_CSG_Target_Cell_t EUTRAN_CSG_Target_Cell;  
+}PEMR_AdditionsR9_t;
+
+typedef struct
+{
+  gboolean  Exist_REPORTING_QUANTITY;
+  guint8     REPORTING_QUANTITY;
+}Bitmap_Report_Quantity_t;
+
+typedef struct
+{
+  guint8 BITMAP_LENGTH;
+  Bitmap_Report_Quantity_t  Bitmap_Report_Quantity[128];
+  gboolean  Exist_EUTRAN_Meas_Rpt;
+  EUTRAN_Measurement_Report_t EUTRAN_Meas_Rpt;
+  gboolean   Exist_AdditionsR9;
+  PEMR_AdditionsR9_t AdditionsR9;
+}PEMR_AdditionsR8_t;
+
+typedef struct
+{
+  gboolean  Exist_GRNTI_Ext;
+  guint8     GRNTI_Ext;
+  gboolean  Exist_AdditionsR8;
+  PEMR_AdditionsR8_t  AdditionsR8;
+}PEMR_AdditionsR5_t;
+
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+  guint8 PayloadType;
+  guint8 spare;
+  guint8 R;
+
+  guint32 TLLI;
+
+  ENH_NC_Measurement_Report_t Measurements;
+
+  gboolean  Exist_AdditionsR5;
+  PEMR_AdditionsR5_t  AdditionsR5;
+} Packet_Enh_Measurement_Report_t;
+
+typedef struct
+{
+  guint8 RXLEV_SERVING_CELL;
+
+  guint8 NUMBER_OF_NC_MEASUREMENTS;
+  NC_Measurements_t NC_Measurements[6];  /* NC_Measurements * (val(NUMBER_OF_NC_MEASUREMENTS))
+                                           Max 7 NC Measurements in one PACKET MEASUREMENT REPORT,
+                                           but only 6 cells are updated in PACKET IDLE. */
+} CCN_Measurement_Report_t;
+
+typedef struct
+{
+  guint16 ARFCN;
+  guint8 BSIC;
+} Target_Cell_GSM_Notif_t;
+
+typedef struct
+{
+  guint16 FDD_ARFCN;
+  guint8 Exist_Bandwith_FDD;
+  guint8 BANDWITH_FDD;
+  guint16 SCRAMBLING_CODE;
+} FDD_Target_Cell_Notif_t;
+
+typedef struct
+{
+  guint16 TDD_ARFCN;
+  guint8 Exist_Bandwith_TDD;
+  guint8  BANDWITH_TDD;
+  guint8  CELL_PARAMETER;
+  guint8  Sync_Case_TSTD;
+}TDD_Target_Cell_Notif_t;
+
+typedef struct
+{
+  guint8 Exist_FDD_Description;
+  FDD_Target_Cell_Notif_t FDD_Target_Cell_Notif;
+  guint8 Exist_TDD_Description;
+  TDD_Target_Cell_Notif_t TDD_Target_Cell;
+  guint8 REPORTING_QUANTITY;
+} Target_Cell_3G_Notif_t;
+
+typedef struct
+{
+  guint16 EARFCN;
+  guint8 Exist_Measurement_Bandwidth;
+  guint8 Measurement_Bandwidth;
+  guint16 Physical_Layer_Cell_Identity;
+  guint8 Reporting_Quantity;
+}Target_EUTRAN_Cell_Notif_t;
+
+typedef struct
+{
+  guint8  EUTRAN_FREQUENCY_INDEX;
+  guint16 CELL_IDENTITY;
+  guint8  REPORTING_QUANTITY;
+}Eutran_Ccn_Measurement_Report_Cell_t;
+
+typedef struct
+{
+  gboolean  ThreeG_BA_USED;
+  guint8    N_EUTRAN;
+  Eutran_Ccn_Measurement_Report_Cell_t Eutran_Ccn_Measurement_Report_Cell[4];
+}Eutran_Ccn_Measurement_Report_t;
+
+typedef struct
+{
+  guint8 Exist_Arfcn;
+  guint16 Arfcn;
+  guint8  bsic;
+  guint8 Exist_3G_Target_Cell;
+  Target_Cell_3G_Notif_t Target_Cell_3G_Notif;
+  guint8 Exist_Eutran_Target_Cell;
+  Target_EUTRAN_Cell_Notif_t Target_EUTRAN_Cell;
+  guint8 Exist_Eutran_Ccn_Measurement_Report;
+  Eutran_Ccn_Measurement_Report_t Eutran_Ccn_Measurement_Report;
+}Target_Cell_4G_Notif_t;
+
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    UTRAN_CSG_Measurement_Report_t UTRAN_CSG_Measurement_Report;
+    EUTRAN_CSG_Measurement_Report_t EUTRAN_CSG_Measurement_Report;
+  } u;
+  guint8 Exist_Eutran_Ccn_Measurement_Report;
+  Eutran_Ccn_Measurement_Report_t Eutran_Ccn_Measurement_Report;
+}Target_Cell_CSG_Notif_t;
+
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    Target_Cell_4G_Notif_t Target_Cell_4G_Notif;
+    Target_Cell_CSG_Notif_t Target_Cell_CSG_Notif;
+  } u;
+}Target_Other_RAT_2_Notif_t;
+
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    Target_Cell_3G_Notif_t Target_Cell_3G_Notif;
+    Target_Other_RAT_2_Notif_t Target_Other_RAT_2_Notif;
+  } u;
+  
+}Target_Other_RAT_Notif_t;
+
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    Target_Cell_GSM_Notif_t Target_Cell_GSM_Notif;
+    Target_Other_RAT_Notif_t Target_Other_RAT_Notif;
+  } u;
+} Target_Cell_t;
+
+typedef struct
+{
+  guint8 Exist_BA_USED_3G;
+  guint8 BA_USED_3G;
+
+  guint8 N_3G;
+  Measurements_3G_t Measurements_3G[6];
+} PCCN_AdditionsR6_t;
+
+/* < Packet Cell Change Notification message contents > */
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+  guint8 PayloadType;
+  guint8 spare;
+  guint8 R;
+
+  Global_TFI_t Global_TFI;
+
+  Target_Cell_t Target_Cell;
+
+  guint8 UnionType;
+  union
+  {
+    guint8 BA_IND;
+    guint8 PSI3_CHANGE_MARK;
+  } u;
+  guint8 PMO_USED;
+  guint8 PCCN_SENDING;
+  CCN_Measurement_Report_t CCN_Measurement_Report;
+
+  gboolean Exist_AdditionsR6;
+  PCCN_AdditionsR6_t AdditionsR6;
+} Packet_Cell_Change_Notification_t;
+
+/* < Packet Cell Change Order message contents > */
+
+
+typedef struct
+{
+  guint8   FrequencyScrolling;
+  guint8   BSIC;
+} BSICDesc_t;
+
+
+#define MAX_BSIC_DESCS (19) /* Due to message size (23 bytes) and header etc,
+                             * there cannot be more than 19 DESCS.
+                             */
+
+typedef struct
+{
+  gboolean     Exist_IndexStartBA;
+  guint8       IndexStartBA;
+  guint8       BSIC;
+  guint8       NumRemainingBSICs;
+  BSICDesc_t  BSICDesc[MAX_BSIC_DESCS];
+} BSICList_t;
+
+typedef BSICList_t GPRSBSICList_t;
+
+#define MAX_RTD_VALUES (6)
+
+typedef struct
+{
+  guint8  NumRTDValues;
+  guint16 RTD[MAX_RTD_VALUES];
+} RTDValues_t;
+
+typedef struct
+{
+  gboolean Exist_StartValue;
+  guint8   StartValue;
+} BAIndexStartRTD_t;
+
+#define MAX_RTD_FREQS (32)
+
+typedef struct
+{
+  BAIndexStartRTD_t BAIndexStart;
+  guint8 NumFreqs;
+  RTDValues_t RTD_s[MAX_RTD_FREQS];
+} RTDList_t;
+
+typedef struct
+{
+  gboolean   Exist_ListRTD6;
+  RTDList_t ListRTD6;
+
+  gboolean   Exist_ListRTD12;
+  RTDList_t ListRTD12;
+} RealTimeDiffs_t;
+
+
+typedef MeasurementParams_t GPRSMeasurementParams_PMO_PCCO_t;
+
+typedef struct {
+  gboolean           existMultiratReporting;
+  guint8             MultiratReporting;
+
+  gboolean           existOffsetThreshold;
+  OffsetThreshold_t OffsetThreshold;
+} MultiratParams3G_t;
+
+typedef struct
+{
+  guint8              Qsearch_P;
+  guint8              SearchPrio3G;
+
+  gboolean            existRepParamsFDD;
+  guint8              RepQuantFDD;
+  guint8              MultiratReportingFDD;
+
+  gboolean            existOffsetThreshold;
+  OffsetThreshold_t  OffsetThreshold;
+
+  MultiratParams3G_t ParamsTDD;
+  MultiratParams3G_t ParamsCDMA2000;
+} ENH_GPRSMeasurementParams3G_PMO_t;
+
+
+typedef struct
+{
+  guint8              Qsearch_P;
+  guint8              SearchPrio3G;
+
+  gboolean            existRepParamsFDD;
+  guint8              RepQuantFDD;
+  guint8              MultiratReportingFDD;
+
+  gboolean            existOffsetThreshold;
+  OffsetThreshold_t  OffsetThreshold;
+
+  MultiratParams3G_t ParamsTDD;
+} ENH_GPRSMeasurementParams3G_PCCO_t;
+
+
+typedef struct
+{
+  guint8 Qsearch_p;
+  guint8 SearchPrio3G;
+
+  guint8 existRepParamsFDD;
+  guint8 RepQuantFDD;
+  guint8 MultiratReportingFDD;
+
+  guint8 existReportingParamsFDD;
+  guint8 ReportingOffsetFDD;
+  guint8 ReportingThresholdFDD;
+
+  guint8 existMultiratReportingTDD;
+  guint8 MultiratReportingTDD;
+
+  guint8 existOffsetThresholdTDD;
+  guint8 ReportingOffsetTDD;
+  guint8 ReportingThresholdTDD;
+} GPRSMeasurementParams3G_t;
+
+typedef struct
+{
+  guint8 REMOVED_3GCELL_INDEX;
+  guint8 CELL_DIFF_LENGTH_3G;
+  guint8 CELL_DIFF_3G;
+} N2_t;
+
+typedef struct
+{
+  guint8 N2_Count;
+  N2_t N2s[32];
+} N1_t;
+
+typedef struct
+{
+  guint8 N1_Count;
+  N1_t N1s[4];
+} Removed3GCellDescription_t;
+
+typedef struct
+{
+  guint8 Complete_This;
+} CDMA2000_Description_t;
+
+typedef struct {
+  guint8  ZERO;
+  guint16 UARFCN;
+  guint8  Indic0;
+  guint8  NrOfCells;
+  guint8  BitsInCellInfo;
+  guint8  CellInfo[16]; /* bitmap compressed according to "Range 1024" algorithm (04.18/9.1.54) */
+} UTRAN_FDD_NeighbourCells_t;
+
+typedef struct {
+  gboolean                        existBandwidth;
+  guint8                          Bandwidth;
+  guint8                          NrOfFrequencies;
+  UTRAN_FDD_NeighbourCells_t     CellParams[8];
+} UTRAN_FDD_Description_t;
+
+typedef struct {
+  guint8  ZERO;
+  guint16 UARFCN;
+  guint8  Indic0;
+  guint8  NrOfCells;
+  guint8  BitsInCellInfo;
+  guint8  CellInfo[16]; /* bitmap compressed according to "Range 512" algorithm */
+} UTRAN_TDD_NeighbourCells_t;
+
+typedef struct {
+  gboolean                        existBandwidth;
+  guint8                          Bandwidth;
+  guint8                          NrOfFrequencies;
+  UTRAN_TDD_NeighbourCells_t    CellParams[8];
+} UTRAN_TDD_Description_t;
+
+typedef struct
+{
+  guint8 Exist_Index_Start_3G;
+  guint8 Index_Start_3G;
+  guint8 Exist_Absolute_Index_Start_EMR;
+  guint8 Absolute_Index_Start_EMR;
+  guint8 Exist_UTRAN_FDD_Description;
+  UTRAN_FDD_Description_t UTRAN_FDD_Description;
+  guint8 Exist_UTRAN_TDD_Description;
+  UTRAN_TDD_Description_t UTRAN_TDD_Description;
+  guint8 Exist_CDMA2000_Description;
+  CDMA2000_Description_t CDMA2000_Description;
+  guint8 Exist_Removed3GCellDescription;
+  Removed3GCellDescription_t Removed3GCellDescription;
+} NeighbourCellDescription3G_PMO_t;
+
+typedef struct
+{
+  guint8 Exist_Index_Start_3G;
+  guint8 Index_Start_3G;
+  guint8 Exist_Absolute_Index_Start_EMR;
+  guint8 Absolute_Index_Start_EMR;
+  guint8 Exist_UTRAN_FDD_Description;
+  UTRAN_FDD_Description_t UTRAN_FDD_Description;
+  guint8 Exist_UTRAN_TDD_Description;
+  UTRAN_TDD_Description_t UTRAN_TDD_Description;
+  guint8 Exist_Removed3GCellDescription;
+  Removed3GCellDescription_t Removed3GCellDescription;
+} NeighbourCellDescription3G_PCCO_t;
+
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    BA_IND_t BA_IND;
+    guint8 PSI3_CHANGE_MARK;
+  } u;
+
+  guint8   PMO_IND;
+
+  guint8   REPORT_TYPE;
+  guint8   REPORTING_RATE;
+  guint8   INVALID_BSIC_REPORTING;
+
+  gboolean Exist_NeighbourCellDescription3G;
+  NeighbourCellDescription3G_PMO_t NeighbourCellDescription3G;
+
+  gboolean Exist_GPRSReportPriority;
+  GPRSReportPriority_t GPRSReportPriority;
+
+  gboolean Exist_GPRSMeasurementParams;
+  GPRSMeasurementParams_PMO_PCCO_t GPRSMeasurementParams;
+  gboolean Exist_GPRSMeasurementParams3G;
+  ENH_GPRSMeasurementParams3G_PMO_t GPRSMeasurementParams3G;
+} ENH_Measurement_Parameters_PMO_t;
+
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    BA_IND_t BA_IND;
+    guint8 PSI3_CHANGE_MARK;
+  } u;
+
+  guint8   PMO_IND;
+
+  guint8   REPORT_TYPE;
+  guint8   REPORTING_RATE;
+  guint8   INVALID_BSIC_REPORTING;
+
+  gboolean Exist_NeighbourCellDescription3G;
+  NeighbourCellDescription3G_PCCO_t NeighbourCellDescription3G;
+
+  gboolean Exist_GPRSReportPriority;
+  GPRSReportPriority_t GPRSReportPriority;
+
+  gboolean Exist_GPRSMeasurementParams;
+  GPRSMeasurementParams_PMO_PCCO_t GPRSMeasurementParams;
+  gboolean Exist_GPRSMeasurementParams3G;
+  ENH_GPRSMeasurementParams3G_PCCO_t GPRSMeasurementParams3G;
+} ENH_Measurement_Parameters_PCCO_t;
+
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    Global_TFI_t Global_TFI;
+    guint32 TLLI;
+  } u;
+} PacketCellChangeOrderID_t;
+
+typedef struct
+{
+  guint8 CELL_BAR_QUALIFY_3;
+  guint8 Exist_SI13_Alt_PBCCH_Location;
+  SI13_PBCCH_Location_t SI13_Alt_PBCCH_Location;
+} lu_ModeCellSelectionParameters_t;
+
+typedef struct
+{
+  guint8 Exist_lu_ModeCellSelectionParams;
+  lu_ModeCellSelectionParameters_t lu_ModeCellSelectionParameters;
+} lu_ModeCellSelectionParams_t;
+
+typedef struct
+{
+  lu_ModeCellSelectionParams_t lu_ModeCellSelectionParameters;
+  guint8 NR_OF_FREQUENCIES;
+  lu_ModeCellSelectionParams_t lu_ModeCellSelectionParams[32];
+} lu_ModeNeighbourCellParams_t;
+
+typedef struct
+{
+  guint8 CELL_BAR_QUALIFY_3;
+  guint8 SAME_RA_AS_SERVING_CELL;
+
+  guint8 Exist_RXLEV_and_TXPWR;
+  guint8 GPRS_RXLEV_ACCESS_MIN;
+  guint8 GPRS_MS_TXPWR_MAX_CCH;
+
+  guint8 Exist_OFFSET_and_TIME;
+  guint8 GPRS_TEMPORARY_OFFSET;
+  guint8 GPRS_PENALTY_TIME;
+
+  guint8 Exist_GPRS_RESELECT_OFFSET;
+  guint8 GPRS_RESELECT_OFFSET;
+
+  guint8 Exist_HCS;
+  HCS_t HCS;
+
+  guint8 Exist_SI13_Alt_PBCCH_Location;
+  SI13_PBCCH_Location_t SI13_Alt_PBCCH_Location;
+} lu_ModeOnlyCellSelection_t;
+
+typedef struct
+{
+  guint8 FREQ_DIFF_LENGTH;
+  guint8 FREQUENCY_DIFF;
+  guint8 BSIC;
+
+  gboolean Exist_lu_ModeOnlyCellSelectionParams;
+  lu_ModeOnlyCellSelection_t lu_ModeOnlyCellSelectionParams;
+} lu_ModeOnlyCellSelectionParamsWithFreqDiff_t;
+
+typedef struct
+{
+  guint16 START_FREQUENCY;
+  guint8 BSIC;
+
+  guint8 Exist_lu_ModeCellSelection;
+  lu_ModeOnlyCellSelection_t lu_ModeOnlyCellSelection;
+
+  guint8 NR_OF_FREQUENCIES;
+  guint8 FREQ_DIFF_LENGTH;
+
+  lu_ModeOnlyCellSelectionParamsWithFreqDiff_t lu_ModeOnlyCellSelectionParamsWithFreqDiff[32];
+} Add_lu_ModeOnlyFrequencyList_t;
+
+typedef struct
+{
+  guint8 Count_Add_lu_ModeOnlyFrequencyList;
+  Add_lu_ModeOnlyFrequencyList_t Add_lu_ModeOnlyFrequencyList[32];
+} NC_lu_ModeOnlyCapableCellList_t;
+
+
+typedef struct
+{
+  guint8                   NumberOfFrequencyIndexes;
+  guint8                   UTRAN_FREQUENCY_INDEX_a[18];
+
+  gboolean                 existUTRAN_PRIORITY;
+  guint8                   UTRAN_PRIORITY;
+
+  guint8                   THRESH_UTRAN_high;
+
+  gboolean                 existTHRESH_UTRAN_low;
+  guint8                   THRESH_UTRAN_low;
+
+  gboolean                 existUTRAN_QRXLEVMIN;
+  guint8                   UTRAN_QRXLEVMIN;
+} RepeatedUTRAN_PriorityParameters_t;
+
+typedef struct
+{
+  gboolean                            existDEFAULT_UTRAN_Parameters;
+  guint8                              DEFAULT_UTRAN_PRIORITY;
+  guint8                              DEFAULT_THRESH_UTRAN;
+  guint8                              DEFAULT_UTRAN_QRXLEVMIN;
+
+  guint8                              NumberOfPriorityParameters;
+  RepeatedUTRAN_PriorityParameters_t  RepeatedUTRAN_PriorityParameters_a[8];
+} PriorityParametersDescription3G_PMO_t;
+
+typedef struct
+{
+  gboolean existEUTRAN_FDD_REPORTING_THRESHOLD_OFFSET;
+  guint8   EUTRAN_FDD_REPORTING_THRESHOLD;
+  gboolean existEUTRAN_FDD_REPORTING_THRESHOLD_2;
+  guint8   EUTRAN_FDD_REPORTING_THRESHOLD_2;
+  gboolean existEUTRAN_FDD_REPORTING_OFFSET;
+  guint8   EUTRAN_FDD_REPORTING_OFFSET;
+
+  gboolean existEUTRAN_TDD_REPORTING_THRESHOLD_OFFSET;
+  guint8   EUTRAN_TDD_REPORTING_THRESHOLD;
+  gboolean existEUTRAN_TDD_REPORTING_THRESHOLD_2;
+  guint8   EUTRAN_TDD_REPORTING_THRESHOLD_2;
+  gboolean existEUTRAN_TDD_REPORTING_OFFSET;
+  guint8   EUTRAN_TDD_REPORTING_OFFSET;
+} EUTRAN_REPORTING_THRESHOLD_OFFSET_t;
+
+typedef struct
+{
+  guint8                               Qsearch_P_EUTRAN;
+  guint8                               EUTRAN_REP_QUANT;
+  guint8                               EUTRAN_MULTIRAT_REPORTING;
+  EUTRAN_REPORTING_THRESHOLD_OFFSET_t EUTRAN_REPORTING_THRESHOLD_OFFSET;
+} GPRS_EUTRAN_MeasurementParametersDescription_t;
+
+typedef struct
+{
+  guint16  EARFCN;
+  gboolean existMeasurementBandwidth;
+  guint8   MeasurementBandwidth;
+} RepeatedEUTRAN_Cells_t;
+
+typedef struct
+{
+  guint8                   nbrOfEUTRAN_Cells;
+  RepeatedEUTRAN_Cells_t  EUTRAN_Cells_a[6];
+
+  gboolean                 existEUTRAN_PRIORITY;
+  guint8                   EUTRAN_PRIORITY;
+
+  guint8                   THRESH_EUTRAN_high;
+
+  gboolean                 existTHRESH_EUTRAN_low;
+  guint8                   THRESH_EUTRAN_low;
+
+  gboolean                 existEUTRAN_QRXLEVMIN;
+  guint8                   EUTRAN_QRXLEVMIN;
+} RepeatedEUTRAN_NeighbourCells_t;
+
+typedef struct
+{
+  guint16 PCID;
+} PCID_t;
+
+typedef struct
+{
+  guint8 PCID_Pattern_length;
+  guint8 PCID_Pattern;
+  guint8 PCID_Pattern_sense;
+} PCID_Pattern_t;
+
+typedef struct
+{
+  guint8          NumberOfPCIDs;
+  guint16         PCID_a[11];
+
+  gboolean        existPCID_BITMAP_GROUP;
+  guint8          PCID_BITMAP_GROUP;
+
+  guint8          NumberOfPCID_Patterns;
+  PCID_Pattern_t PCID_Pattern_a[19];
+} PCID_Group_IE_t;
+
+typedef struct
+{
+  guint8 EUTRAN_FREQUENCY_INDEX;
+} EUTRAN_FREQUENCY_INDEX_t;
+
+typedef struct
+{
+  PCID_Group_IE_t          NotAllowedCells;
+  guint8                    NumberOfFrequencyIndexes;
+  EUTRAN_FREQUENCY_INDEX_t EUTRAN_FREQUENCY_INDEX_a[28];
+} RepeatedEUTRAN_NotAllowedCells_t;
+
+typedef struct
+{
+  guint8                    NumberOfMappings;
+  PCID_Group_IE_t          PCID_ToTA_Mapping_a[14];
+
+  guint8                    NumberOfFrequencyIndexes;
+  EUTRAN_FREQUENCY_INDEX_t EUTRAN_FREQUENCY_INDEX_a[28];
+} RepeatedEUTRAN_PCID_to_TA_mapping_t;
+
+typedef struct
+{
+  guint8 EUTRAN_CCN_ACTIVE;
+
+  gboolean                                       existGPRS_EUTRAN_MeasurementParametersDescription;
+  GPRS_EUTRAN_MeasurementParametersDescription_t GPRS_EUTRAN_MeasurementParametersDescription;
+
+  guint8                                         nbrOfRepeatedEUTRAN_NeighbourCellsStructs;
+  RepeatedEUTRAN_NeighbourCells_t                RepeatedEUTRAN_NeighbourCells_a[4];
+
+  guint8                                         NumberOfNotAllowedCells;
+  RepeatedEUTRAN_NotAllowedCells_t               RepeatedEUTRAN_NotAllowedCells_a[14];
+
+  guint8                                         NumberOfMappings;
+  RepeatedEUTRAN_PCID_to_TA_mapping_t            RepeatedEUTRAN_PCID_to_TA_mapping_a[19];
+} EUTRAN_ParametersDescription_PMO_t;
+
+typedef struct
+{
+  guint8 GERAN_PRIORITY;
+  guint8 THRESH_Priority_Search;
+  guint8 THRESH_GSM_low;
+  guint8 H_PRIO;
+  guint8 T_Reselection;
+} ServingCellPriorityParametersDescription_t;
+
+typedef struct
+{
+  gboolean                                   existServingCellPriorityParametersDescription;
+  ServingCellPriorityParametersDescription_t ServingCellPriorityParametersDescription;
+
+  gboolean                                   existPriorityParametersDescription3G_PMO;
+  PriorityParametersDescription3G_PMO_t      PriorityParametersDescription3G_PMO;
+
+  gboolean                                   existEUTRAN_ParametersDescription_PMO;
+  EUTRAN_ParametersDescription_PMO_t         EUTRAN_ParametersDescription_PMO;
+} PriorityAndEUTRAN_ParametersDescription_PMO_t;
+
+typedef struct
+{
+  guint8  PSC_Pattern_length;
+  guint8  PSC_Pattern;
+  gboolean PSC_Pattern_sense;
+}PSC_Pattern_t;
+
+typedef struct
+{
+  guint8  PSC_Count;
+  guint16 PSC[32];
+  guint8  PSC_Pattern_Count;
+  PSC_Pattern_t PSC_Pattern[32];
+}PSC_Group_t;
+
+typedef struct
+{
+  PSC_Group_t CSG_PSC_SPLIT;
+  guint8      Count;
+  guint8      UTRAN_FREQUENCY_INDEX[32];
+}ThreeG_CSG_Description_Body_t;
+
+typedef struct
+{
+  guint8  Count;
+  ThreeG_CSG_Description_Body_t  ThreeG_CSG_Description_Body[32];
+}ThreeG_CSG_Description_t;
+
+typedef struct
+{
+  PSC_Group_t CSG_PCI_SPLIT;
+  guint8  Count;
+  guint8  EUTRAN_FREQUENCY_INDEX[32];
+}EUTRAN_CSG_Description_Body_t;
+
+typedef struct
+{
+  guint8  Count;
+  EUTRAN_CSG_Description_Body_t EUTRAN_CSG_Description_Body[32];
+}EUTRAN_CSG_Description_t;
+
+typedef struct
+{
+  gboolean  existMeasurement_Control_EUTRAN;
+  gboolean  Measurement_Control_EUTRAN;
+  guint8    EUTRAN_FREQUENCY_INDEX_top;
+  guint8    Count_EUTRAN_FREQUENCY_INDEX;
+  guint8    EUTRAN_FREQUENCY_INDEX[32];
+  
+  gboolean  existMeasurement_Control_UTRAN;
+  gboolean  Measurement_Control_UTRAN;
+  guint8    UTRAN_FREQUENCY_INDEX_top;
+  guint8    Count_UTRAN_FREQUENCY_INDEX;
+  guint8    UTRAN_FREQUENCY_INDEX[32];
+}Meas_Ctrl_Param_Desp_t;
+
+typedef struct
+{
+  guint8    THRESH_EUTRAN_high_Q;
+  gboolean existTHRESH_EUTRAN_low_Q;
+  guint8    THRESH_EUTRAN_low_Q;
+  gboolean existEUTRAN_QQUALMIN;
+  guint8    EUTRAN_QQUALMIN;
+  gboolean existEUTRAN_RSRPmin;
+  guint8    EUTRAN_RSRPmin;
+}Reselection_Based_On_RSRQ_t;
+
+typedef struct
+{
+  guint8  Count_EUTRAN_FREQUENCY_INDEX;
+  guint8  EUTRAN_FREQUENCY_INDEX[32];
+  guint8 UnionType;
+  union
+  {
+    guint8           EUTRAN_Qmin;
+    Reselection_Based_On_RSRQ_t Reselection_Based_On_RSRQ;
+  } u;
+}Rept_EUTRAN_Enh_Cell_Resel_Param_t;
+
+typedef struct
+{
+  guint8 Count;
+  Rept_EUTRAN_Enh_Cell_Resel_Param_t Repeated_EUTRAN_Enhanced_Cell_Reselection_Parameters[32];
+}Enh_Cell_Reselect_Param_Desp_t;
+
+typedef struct
+{
+  gboolean  existUTRAN_CSG_FDD_REPORTING_THRESHOLD;
+  guint8     UTRAN_CSG_FDD_REPORTING_THRESHOLD;
+  guint8     UTRAN_CSG_FDD_REPORTING_THRESHOLD_2;
+  gboolean  existUTRAN_CSG_TDD_REPORTING_THRESHOLD;
+  guint8     UTRAN_CSG_TDD_REPORTING_THRESHOLD;
+}UTRAN_CSG_Cells_Reporting_Desp_t;
+
+typedef struct
+{
+  gboolean  existEUTRAN_CSG_FDD_REPORTING_THRESHOLD;
+  guint8     EUTRAN_CSG_FDD_REPORTING_THRESHOLD;
+  guint8     EUTRAN_CSG_FDD_REPORTING_THRESHOLD_2;
+  gboolean  existEUTRAN_CSG_TDD_REPORTING_THRESHOLD;
+  guint8     EUTRAN_CSG_TDD_REPORTING_THRESHOLD;
+  guint8     EUTRAN_CSG_TDD_REPORTING_THRESHOLD_2;
+}EUTRAN_CSG_Cells_Reporting_Desp_t;
+
+typedef struct
+{
+  gboolean  existUTRAN_CSG_Cells_Reporting_Description;
+  UTRAN_CSG_Cells_Reporting_Desp_t UTRAN_CSG_Cells_Reporting_Description;
+  gboolean  existEUTRAN_CSG_Cells_Reporting_Description;
+  EUTRAN_CSG_Cells_Reporting_Desp_t EUTRAN_CSG_Cells_Reporting_Description;
+}CSG_Cells_Reporting_Desp_t;
+
+typedef struct
+{
+  gboolean                       existEnhanced_Cell_Reselection_Parameters_Description;
+  Enh_Cell_Reselect_Param_Desp_t  Enhanced_Cell_Reselection_Parameters_Description;
+  
+  gboolean                       existCSG_Cells_Reporting_Description;
+  CSG_Cells_Reporting_Desp_t      CSG_Cells_Reporting_Description;
+}PMO_AdditionsR9_t;
+
+typedef struct
+{
+  guint8 dummy;
+}Delete_All_Stored_Individual_Priorities_t;
+
+typedef struct
+{
+  guint8  Count;
+  guint16 FDD_ARFCN[32];
+}Individual_UTRAN_Priority_FDD_t;
+
+typedef struct
+{
+  guint8  Count;
+  guint16 TDD_ARFCN[32];
+}Individual_UTRAN_Priority_TDD_t;
+
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    Individual_UTRAN_Priority_FDD_t Individual_UTRAN_Priority_FDD;
+    Individual_UTRAN_Priority_TDD_t Individual_UTRAN_Priority_TDD;
+  } u;
+  guint8 UTRAN_PRIORITY;
+}Repeated_Individual_UTRAN_Priority_Parameters_t;
+
+typedef struct
+{
+  guint8 Exist_DEFAULT_UTRAN_PRIORITY;
+  guint8 DEFAULT_UTRAN_PRIORITY;
+  guint8 Repeated_Individual_UTRAN_Priority_Parameters_Count;
+  Repeated_Individual_UTRAN_Priority_Parameters_t Repeated_Individual_UTRAN_Priority_Parameters[32];
+}ThreeG_Individual_Priority_Parameters_Description_t;
+
+typedef struct
+{
+  guint8 Count;
+  guint16 EARFCN[32];
+  guint8 EUTRAN_PRIORITY;
+}Repeated_Individual_EUTRAN_Priority_Parameters_t;
+
+typedef struct
+{
+  guint8 Exist_DEFAULT_EUTRAN_PRIORITY;
+  guint8 DEFAULT_EUTRAN_PRIORITY;
+  guint8 Count;
+  Repeated_Individual_EUTRAN_Priority_Parameters_t Repeated_Individual_EUTRAN_Priority_Parameters[32];
+}EUTRAN_Individual_Priority_Parameters_Description_t;
+
+typedef struct
+{
+  guint8 GERAN_PRIORITY;
+  guint8 Exist_3G_Individual_Priority_Parameters_Description;
+  ThreeG_Individual_Priority_Parameters_Description_t ThreeG_Individual_Priority_Parameters_Description;
+  guint8 Exist_EUTRAN_Individual_Priority_Parameters_Description;
+  EUTRAN_Individual_Priority_Parameters_Description_t EUTRAN_Individual_Priority_Parameters_Description;
+  guint8 Exist_T3230_timeout_value;
+  guint8 T3230_timeout_value;
+}Provide_Individual_Priorities_t;
+
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    Delete_All_Stored_Individual_Priorities_t Delete_All_Stored_Individual_Priorities;
+    Provide_Individual_Priorities_t Provide_Individual_Priorities;
+  } u;
+}Individual_Priorities_t;
+
+typedef struct
+{
+  gboolean          existBA_IND_3G_PMO_IND;
+  guint8            BA_IND_3G;
+  guint8            PMO_IND;
+
+  gboolean          existPriorityAndEUTRAN_ParametersDescription_PMO;
+  PriorityAndEUTRAN_ParametersDescription_PMO_t PriorityAndEUTRAN_ParametersDescription_PMO;
+
+  gboolean          existIndividualPriorities_PMO;
+  Individual_Priorities_t  IndividualPriorities_PMO;
+
+  gboolean          existThreeG_CSG_Description;
+  ThreeG_CSG_Description_t  ThreeG_CSG_Description_PMO;
+
+  gboolean          existEUTRAN_CSG_Description;
+  EUTRAN_CSG_Description_t  EUTRAN_CSG_Description_PMO;
+
+  gboolean          existMeasurement_Control_Parameters_Description;
+  Meas_Ctrl_Param_Desp_t Measurement_Control_Parameters_Description_PMO;
+
+  gboolean          existAdditionsR9;
+  PMO_AdditionsR9_t AdditionsR9;
+} PMO_AdditionsR8_t;
+
+typedef struct
+{
+  gboolean          existREPORTING_OFFSET_THRESHOLD_700;
+  guint8            REPORTING_OFFSET_700;
+  guint8            REPORTING_THRESHOLD_700;
+
+  gboolean          existREPORTING_OFFSET_THRESHOLD_810;
+  guint8            REPORTING_OFFSET_810;
+  guint8            REPORTING_THRESHOLD_810;
+
+  guint8 existAdditionsR8;
+  PMO_AdditionsR8_t additionsR8;
+} PMO_AdditionsR7_t;
+
+typedef struct
+{
+  guint8 CCN_ACTIVE_3G;
+  guint8 existAdditionsR7;
+  PMO_AdditionsR7_t additionsR7;
+} PMO_AdditionsR6_t;
+
+typedef struct
+{
+  guint8 CCN_ACTIVE_3G;
+} PCCO_AdditionsR6_t;
+
+typedef struct
+{
+  guint8 existGRNTI_Extension;
+  guint8 GRNTI;
+  guint8 exist_lu_ModeNeighbourCellParams;
+  guint8 count_lu_ModeNeighbourCellParams;
+  lu_ModeNeighbourCellParams_t lu_ModeNeighbourCellParams[32];
+  guint8 existNC_lu_ModeOnlyCapableCellList;
+  NC_lu_ModeOnlyCapableCellList_t NC_lu_ModeOnlyCapableCellList;
+  guint8 existGPRS_AdditionalMeasurementParams3G;
+  GPRS_AdditionalMeasurementParams3G_t GPRS_AdditionalMeasurementParams3G;
+  guint8 existAdditionsR6;
+  PMO_AdditionsR6_t additionsR6;
+} PMO_AdditionsR5_t;
+
+typedef struct
+{
+  guint8 existGRNTI_Extension;
+  guint8 GRNTI;
+  guint8 exist_lu_ModeNeighbourCellParams;
+  guint8 count_lu_ModeNeighbourCellParams;
+  lu_ModeNeighbourCellParams_t lu_ModeNeighbourCellParams[32];
+  guint8 existNC_lu_ModeOnlyCapableCellList;
+  NC_lu_ModeOnlyCapableCellList_t NC_lu_ModeOnlyCapableCellList;
+  guint8 existGPRS_AdditionalMeasurementParams3G;
+  GPRS_AdditionalMeasurementParams3G_t GPRS_AdditionalMeasurementParams3G;
+  guint8 existAdditionsR6;
+  PCCO_AdditionsR6_t additionsR6;
+} PCCO_AdditionsR5_t;
+
+typedef struct
+{
+  guint8 CCN_ACTIVE;
+  guint8 Exist_CCN_Support_Description_ID;
+  CCN_Support_Description_t CCN_Support_Description;
+  guint8 Exist_AdditionsR5;
+  PMO_AdditionsR5_t AdditionsR5;
+} PMO_AdditionsR4_t;
+
+typedef struct
+{
+  guint8 CCN_ACTIVE;
+  guint8 Exist_Container_ID;
+  guint8 CONTAINER_ID;
+  guint8 Exist_CCN_Support_Description_ID;
+  CCN_Support_Description_t CCN_Support_Description;
+  guint8 Exist_AdditionsR5;
+  PCCO_AdditionsR5_t AdditionsR5;
+} PCCO_AdditionsR4_t;
+
+typedef struct
+{
+  ENH_Measurement_Parameters_PCCO_t ENH_Measurement_Parameters;
+  guint8 Exist_AdditionsR4;
+  PCCO_AdditionsR4_t AdditionsR4;
+} PCCO_AdditionsR99_t;
+
+typedef struct
+{
+  guint8 Exist_ENH_Measurement_Parameters;
+  ENH_Measurement_Parameters_PMO_t ENH_Measurement_Parameters;
+  guint8 Exist_AdditionsR4;
+  PMO_AdditionsR4_t AdditionsR4;
+} PMO_AdditionsR99_t;
+
+typedef struct
+{
+  guint8 Exist_LSA_Parameters;
+  LSA_Parameters_t LSA_Parameters;
+
+  guint8 Exist_AdditionsR99;
+  PMO_AdditionsR99_t AdditionsR99;
+} PMO_AdditionsR98_t;
+
+typedef struct
+{
+  guint8 Exist_LSA_Parameters;
+  LSA_Parameters_t LSA_Parameters;
+
+  guint8 Exist_AdditionsR99;
+  PCCO_AdditionsR99_t AdditionsR99;
+} PCCO_AdditionsR98_t;
+
+typedef struct
+{
+  guint8 IMMEDIATE_REL;
+  guint16 ARFCN;
+  guint8 BSIC;
+  NC_Measurement_Parameters_with_Frequency_List_t NC_Measurement_Parameters;
+
+  guint8 Exist_AdditionsR98;
+  PCCO_AdditionsR98_t AdditionsR98;
+} Target_Cell_GSM_t;
+
+typedef struct
+{
+  guint8 Exist_EUTRAN_Target_Cell;
+  EUTRAN_Target_Cell_t EUTRAN_Target_Cell;
+  guint8 Exist_Individual_Priorities;
+  Individual_Priorities_t Individual_Priorities;
+}Target_Cell_3G_AdditionsR8_t;
+
+typedef struct
+{
+  guint8 Exist_G_RNTI_Extention;
+  guint8 G_RNTI_Extention;
+  guint8 Exist_AdditionsR8;
+  Target_Cell_3G_AdditionsR8_t AdditionsR8;
+}Target_Cell_3G_AdditionsR5_t;
+
+typedef struct
+{
+  /* 00 -- Message escape */
+  guint8 IMMEDIATE_REL;
+  guint8 Exist_FDD_Description;
+  FDD_Target_Cell_t FDD_Target_Cell;
+  guint8 Exist_TDD_Description;
+  TDD_Target_Cell_t TDD_Target_Cell;
+  guint8 Exist_AdditionsR5;
+  Target_Cell_3G_AdditionsR5_t AdditionsR5;
+} Target_Cell_3G_t;
+
+#define TARGET_CELL_GSM 0
+#define TARGET_CELL_3G 1
+
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+  guint8 PAGE_MODE;
+
+  PacketCellChangeOrderID_t ID;
+
+  guint8 UnionType;
+  union
+  {
+    Target_Cell_GSM_t Target_Cell_GSM;
+    Target_Cell_3G_t Target_Cell_3G;
+  } u;
+
+} Packet_Cell_Change_Order_t;
+
+/* < Packet Cell Change Continue message contents > */
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+  guint8 PAGE_MODE;
+
+  Global_TFI_t Global_TFI;
+  guint8 Exist_ID;
+  guint16 ARFCN;
+  guint8 BSIC;
+  guint8 CONTAINER_ID;
+} Packet_Cell_Change_Continue_t;
+
+
+/* < Packet Neighbour Cell Data message contents > */
+typedef struct
+{
+  guint16 ARFCN;
+  guint8 BSIC;
+  guint8 CONTAINER[17];     /* PD (3 bits) + CD_LENGTH (5 bits) + 16 bytes of CONTAINER_DATA (max!) */
+} PNCD_Container_With_ID_t;
+
+typedef struct
+{
+  guint8 CONTAINER[19];     /* PD (3 bits) + CD_LENGTH (5 bits) + 18 bytes of CONTAINER_DATA (max!) */
+} PNCD_Container_Without_ID_t;
+
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    PNCD_Container_Without_ID_t PNCD_Container_Without_ID;
+    PNCD_Container_With_ID_t PNCD_Container_With_ID;
+  } u;
+} PNCDContainer_t;
+
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+  guint8 PAGE_MODE;
+  /* Fixed 0 */
+  Global_TFI_t Global_TFI;
+  guint8 CONTAINER_ID;
+  guint8 spare;
+  guint8 CONTAINER_INDEX;
+
+  PNCDContainer_t Container;
+} Packet_Neighbour_Cell_Data_t;
+
+/* < Packet Serving Cell Data message contents > */
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+  guint8 PAGE_MODE;
+  /* Fixed 0 */
+  Global_TFI_t Global_TFI;
+  guint8 spare;
+  guint8 CONTAINER_INDEX;
+  guint8 CONTAINER[19];     /* PD (3 bits) + CD_LENGTH (5 bits) + 18 bytes of CONTAINER_DATA (max!) */
+} Packet_Serving_Cell_Data_t;
+
+/* < Packet Measurement Order message contents > */
+typedef struct
+{
+  guint16 START_FREQUENCY;
+  guint8 NR_OF_FREQUENCIES;
+  guint8 FREQ_DIFF_LENGTH;
+
+  guint8 Count_FREQUENCY_DIFF;
+  guint8 FREQUENCY_DIFF[31];/* bit (FREQ_DIFF_LENGTH) * NR_OF_FREQUENCIES --> MAX is bit(7) * 31 */
+} EXT_Frequency_List_t;
+
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+  guint8 PAGE_MODE;
+
+  PacketDownlinkID_t ID; /* use the PDA ID as it is the same as as the PMO */
+
+  guint8 PMO_INDEX;
+  guint8 PMO_COUNT;
+
+  guint8 Exist_NC_Measurement_Parameters;
+  NC_Measurement_Parameters_with_Frequency_List_t NC_Measurement_Parameters;
+
+  guint8 Exist_EXT_Measurement_Parameters;
+
+  guint8 Exist_AdditionsR98;
+  PMO_AdditionsR98_t AdditionsR98;
+} Packet_Measurement_Order_t;
+
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+  guint8 PAGE_MODE;
+  PacketDownlinkID_t ID;
+} Packet_Measurement_Order_Reduced_t;
+
+/* Enhanced measurement report */
+
+typedef struct
+{
+  guint8   RXLEV_SERVING_CELL;
+} ServingCellData_t;
+
+typedef struct
+{
+  guint8   BCCH_FREQ_NCELL;
+  guint8   BSIC;
+  guint8   RXLEV_NCELL;
+} Repeated_Invalid_BSIC_Info_t;
+
+typedef struct
+{
+  gboolean Exist_REPORTING_QUANTITY;
+  guint8   REPORTING_QUANTITY;
+} REPORTING_QUANTITY_t;
+
+typedef struct
+{
+  guint8                NC_MODE;
+  guint8 UnionType;
+  union
+  {
+    BA_USED_t           BA_USED;
+    guint8              PSI3_CHANGE_MARK;
+  } u;
+  guint8 PMO_USED;
+  guint8 SCALE;
+  guint8 Exist_ServingCellData;
+  ServingCellData_t   ServingCellData;
+  guint8   Count_Repeated_Invalid_BSIC_Info;
+  Repeated_Invalid_BSIC_Info_t Repeated_Invalid_BSIC_Info[32];
+
+  gboolean Exist_Repeated_REPORTING_QUANTITY;
+  guint8   Count_Repeated_Reporting_Quantity;
+  REPORTING_QUANTITY_t   Repeated_REPORTING_QUANTITY[96];
+} NC_MeasurementReport_t;
+
+/* Packet Handover  PHO ----------------- */
+
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    guint8 MS_TimeslotAllocation;
+    Power_Control_Parameters_t Power_Control_Parameters;
+  } u;
+} GlobalTimeslotDescription_t;
+
+typedef struct
+{
+  guint8 TimeslotAllocation;
+  guint8 PFI;
+  guint8 RLC_Mode;
+  guint8 TFI_Assignment;
+  guint8 ControlACK;
+  guint8 Exist_EGPRS_WindowSize;
+  guint8 EGPRS_WindowSize;
+} PHO_DownlinkAssignment_t;
+
+typedef struct
+{
+  gboolean Exist_USF;
+  guint8 USF;
+} PHO_USF_1_7_t;
+
+typedef struct
+{
+  guint8 USF_0;
+  PHO_USF_1_7_t USF_1_7[7];
+  guint8 NBR_OfAllocatedTimeslots;
+} USF_AllocationArray_t;
+
+typedef struct
+{
+  guint8 PFI;
+  guint8 RLC_Mode;
+  guint8 TFI_Assignment;
+  guint8 Exist_ChannelCodingCommand;
+  guint8 ChannelCodingCommand;
+  guint8 Exist_EGPRS_ChannelCodingCommand;
+  guint8 EGPRS_ChannelCodingCommand;
+  guint8 Exist_EGPRS_WindowSize;
+  guint8 EGPRS_WindowSize;
+  guint8 USF_Granularity;
+  guint8 Exist_TBF_TimeslotAllocation;
+  guint8 TBF_TimeslotAllocation;
+  guint8 UnionType;
+  union
+  {
+    guint8 USF_SingleAllocation;
+    USF_AllocationArray_t USF_AllocationArray;
+  } u;
+} PHO_UplinkAssignment_t;
+
+typedef struct
+{
+  GlobalTimeslotDescription_t GlobalTimeslotDescription;
+  guint8 Exist_PHO_UA;
+  PHO_UplinkAssignment_t PHO_UA;
+} GlobalTimeslotDescription_UA_t;
+
+typedef struct
+{
+  guint8 Exist_ChannelCodingCommand;
+  guint8 ChannelCodingCommand;
+  guint8 Exist_GlobalTimeslotDescription_UA;
+  GlobalTimeslotDescription_UA_t GTD_UA;
+  guint8 Exist_DownlinkAssignment;
+  PHO_DownlinkAssignment_t DownlinkAssignment;
+} PHO_GPRS_t;
+
+
+typedef struct
+{
+  guint8 Exist_EGPRS_WindowSize;
+  guint8 EGPRS_WindowSize;
+  guint8 LinkQualityMeasurementMode;
+  guint8 Exist_BEP_Period2;
+  guint8 BEP_Period2;
+} EGPRS_Description_t;
+
+typedef struct
+{
+  guint8 Exist_EGPRS_Description;
+  EGPRS_Description_t EGPRS_Description;
+  guint8 Exist_DownlinkAssignment;
+  PHO_DownlinkAssignment_t DownlinkAssignment;
+} DownlinkTBF_t;
+
+typedef struct
+{
+  guint8 Exist_EGPRS_WindowSize;
+  guint8 EGPRS_WindowSize;
+  guint8 Exist_EGPRS_ChannelCodingCommand;
+  guint8 EGPRS_ChannelCodingCommand;
+  guint8 Exist_BEP_Period2;
+  guint8 BEP_Period2;
+  guint8 Exist_GlobalTimeslotDescription_UA;
+  GlobalTimeslotDescription_UA_t GTD_UA;
+  guint8 Exist_DownlinkTBF;
+  DownlinkTBF_t DownlinkTBF;
+}PHO_EGPRS_t;
+
+typedef struct
+{
+  Global_Packet_Timing_Advance_t    GlobalPacketTimingAdvance;
+  guint8 Exist_PacketExtendedTimingAdvance;
+  guint8 PacketExtendedTimingAdvance;
+} PHO_TimingAdvance_t;
+
+typedef struct
+{
+  guint8 NAS_ContainerLength;
+  guint8 NAS_Container[MAX_NAS_CONTAINER_LENGTH];
+} NAS_Container_t;
+
+typedef struct
+{
+  guint8 RRC_ContainerLength;
+  guint8 RRC_Container[MAX_RRC_CONTAINER_LENGTH];
+} PS_HandoverTo_UTRAN_Payload_t;
+
+
+typedef struct
+{
+  guint8 Exist_HandoverReference;
+  guint8 HandoverReference;
+  guint8 ARFCN;
+  guint8 SI;
+  guint8 NCI;
+  guint8 BSIC;
+  guint8 Exist_CCN_Active;
+  guint8 CCN_Active;
+  guint8 Exist_CCN_Active_3G;
+  guint8 CCN_Active_3G;
+  guint8 Exist_CCN_Support_Description;
+  CCN_Support_Description_t CCN_Support_Description;
+  Frequency_Parameters_t    Frequency_Parameters;
+  guint8 NetworkControlOrder;
+  guint8 Exist_PHO_TimingAdvance;
+  PHO_TimingAdvance_t PHO_TimingAdvance;
+  guint8 Extended_Dynamic_Allocation;
+  guint8 RLC_Reset;
+  guint8 Exist_PO_PR;
+  guint8 PO;
+  guint8 PR_Mode;
+  guint8 Exist_UplinkControlTimeslot;
+  guint8 UplinkControlTimeslot;
+  guint8 UnionType;
+  union
+  {
+    PHO_GPRS_t  PHO_GPRS_Mode;
+    PHO_EGPRS_t PHO_EGPRS_Mode;
+  } u;
+} PHO_RadioResources_t;
+
+typedef struct
+{
+  PHO_RadioResources_t PHO_RadioResources;
+  guint8 Exist_NAS_Container;
+  NAS_Container_t NAS_Container;
+} PS_HandoverTo_A_GB_ModePayload_t;
+
+typedef struct
+{
+  guint8 MessageType;
+  guint8 PageMode;
+  Global_TFI_t Global_TFI;
+  guint8 ContainerID;
+  guint8 UnionType;
+  union
+  {
+    PS_HandoverTo_A_GB_ModePayload_t PS_HandoverTo_A_GB_ModePayload;
+    PS_HandoverTo_UTRAN_Payload_t    PS_HandoverTo_UTRAN_Payload;
+  } u;
+} Packet_Handover_Command_t;
+
+/* End Packet Handover */
+
+/* Packet Physical Information ----------------- */
+
+typedef struct
+{
+  guint8 MessageType;
+  guint8 PageMode;
+  Global_TFI_t Global_TFI;
+  guint8 TimingAdvance;
+} Packet_PhysicalInformation_t;
+
+/* End Packet Physical Information */
+
+
+
+/*  ADDITIONAL MS RADIO ACCESS CAPABILITIES -----------------*/
+typedef struct
+{
+  guint8 UnionType;
+  union
+  {
+    Global_TFI_t Global_TFI;
+    guint32 TLLI;
+  } u;
+} AdditionalMsRadAccessCapID_t;
+
+
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+  guint8 PayloadType;
+  guint8 spare;
+  guint8 R;
+
+  AdditionalMsRadAccessCapID_t ID;
+  MS_Radio_Access_capability_t MS_Radio_Access_capability;
+} Additional_MS_Rad_Access_Cap_t;
+
+/* End ADDITIONAL MS RADIO ACCESS CAPABILITIES */
+
+
+/* Packet Pause -----------------*/
+
+typedef struct
+{
+  guint8 MESSAGE_TYPE;
+
+  guint32 TLLI;
+  guint8  RAI[48/8];
+} Packet_Pause_t;
+
+/* End Packet Pause */
+
+
+/*
+< NC Measurement Parameters struct > ::=
+                                        < NETWORK_CONTROL_ORDER : bit (2) >
+                                        { 0 | 1 < NC_ NON_DRX_PERIOD : bit (3) >
+                                        < NC_REPORTING_PERIOD_I : bit (3) >
+                                        < NC_REPORTING_PERIOD_T : bit (3) > } ;
+< Cell Selection struct > ::=
+                             < EXC_ACC : bit >
+                             < CELL_BAR_ACCESS_2 : bit (1) >
+                             < SAME_RA_AS_SERVING_CELL : bit (1) >
+                             { 0 | 1  < GPRS_RXLEV_ACCESS_MIN : bit (6) >
+                             < GPRS_MS_TXPWR_MAX_CCH : bit (5) > }
+{ 0 | 1 < GPRS_TEMPORARY_OFFSET : bit (3) >
+   < GPRS_PENALTY_TIME : bit (5) > }
+Table 25 (concluded): PACKET CELL CHANGE ORDER message content
+   { 0 | 1  < GPRS_RESELECT_OFFSET : bit (5) > }
+{ 0 | 1  < HCS params : < HCS struct > > }
+{ 0 | 1 < SI13_PBCCH_LOCATION : < SI13_PBCCH_LOCATION struct > > } ;
+
+< SI13_PBCCH_LOCATION struct > ::=
+                                  { 0  < SI13_LOCATION : bit (1) >
+                                  | 1  < PBCCH_LOCATION : bit (2) >
+                                  < PSI1_REPEAT_PERIOD : bit (4) > } ;
+
+< HCS struct > ::=
+                  < GPRS_PRIORITY_CLASS : bit (3) >
+                  < GPRS_HCS_THR : bit (5) > ;
+*/
+
+/* < Downlink RLC/MAC control message > */
+#define MT_PACKET_CELL_CHANGE_ORDER            0x01
+#define MT_PACKET_DOWNLINK_ASSIGNMENT          0x02
+#define MT_PACKET_MEASUREMENT_ORDER            0x03
+#define MT_PACKET_POLLING_REQ                  0x04
+#define MT_PACKET_POWER_CONTROL_TIMING_ADVANCE 0x05
+#define MT_PACKET_QUEUEING_NOTIFICATION        0x06
+#define MT_PACKET_TIMESLOT_RECONFIGURE         0x07
+#define MT_PACKET_TBF_RELEASE                  0x08
+#define MT_PACKET_UPLINK_ACK_NACK              0x09
+#define MT_PACKET_UPLINK_ASSIGNMENT            0x0A
+#define MT_PACKET_CELL_CHANGE_CONTINUE         0x0B
+#define MT_PACKET_NEIGHBOUR_CELL_DATA          0x0C
+#define MT_PACKET_SERVING_CELL_DATA            0x0D
+#define MT_PACKET_HANDOVER_COMMAND             0x15
+#define MT_PACKET_PHYSICAL_INFORMATION         0x16
+#define MT_PACKET_ACCESS_REJECT                0x21
+#define MT_PACKET_PAGING_REQUEST               0x22
+#define MT_PACKET_PDCH_RELEASE                 0x23
+#define MT_PACKET_PRACH_PARAMETERS             0x24
+#define MT_PACKET_DOWNLINK_DUMMY_CONTROL_BLOCK 0x25
+#define MT_PACKET_SYSTEM_INFO_6                0x30
+#define MT_PACKET_SYSTEM_INFO_1                0x31
+#define MT_PACKET_SYSTEM_INFO_2                0x32
+#define MT_PACKET_SYSTEM_INFO_3                0x33
+#define MT_PACKET_SYSTEM_INFO_3_BIS            0x34
+#define MT_PACKET_SYSTEM_INFO_4                0x35
+#define MT_PACKET_SYSTEM_INFO_5                0x36
+#define MT_PACKET_SYSTEM_INFO_13               0x37
+#define MT_PACKET_SYSTEM_INFO_7                0x38
+#define MT_PACKET_SYSTEM_INFO_8                0x39
+#define MT_PACKET_SYSTEM_INFO_14               0x3A
+#define MT_PACKET_SYSTEM_INFO_3_TER            0x3C
+#define MT_PACKET_SYSTEM_INFO_3_QUATER         0x3D
+#define MT_PACKET_SYSTEM_INFO_15               0x3E
+
+/* < Uplink RLC/MAC control message > */
+#define MT_PACKET_CELL_CHANGE_FAILURE          0x00
+#define MT_PACKET_CONTROL_ACK                  0x01
+#define MT_PACKET_DOWNLINK_ACK_NACK            0x02
+#define MT_PACKET_UPLINK_DUMMY_CONTROL_BLOCK   0x03
+#define MT_PACKET_MEASUREMENT_REPORT           0x04
+#define MT_PACKET_RESOURCE_REQUEST             0x05
+#define MT_PACKET_MOBILE_TBF_STATUS            0x06
+#define MT_PACKET_PSI_STATUS                   0x07
+#define MT_EGPRS_PACKET_DOWNLINK_ACK_NACK      0x08
+#define MT_PACKET_PAUSE                        0x09
+#define MT_PACKET_ENHANCED_MEASUREMENT_REPORT  0x0A
+#define MT_ADDITIONAL_MS_RAC                   0x0B
+#define MT_PACKET_CELL_CHANGE_NOTIFICATION     0x0C
+#define MT_PACKET_SI_STATUS                    0x0D
+#define MT_ENHANCED_MEASUREMENT_REPORT         0x04
+
+/* < Downlink RLC/MAC control message > */
+typedef struct
+{
+  union
+  {
+    guint8                                MESSAGE_TYPE;
+
+    Packet_Access_Reject_t                Packet_Access_Reject;
+    Packet_Cell_Change_Order_t            Packet_Cell_Change_Order;
+    Packet_Downlink_Assignment_t          Packet_Downlink_Assignment;
+    Packet_Measurement_Order_Reduced_t    Packet_Measurement_Order;
+    Packet_Neighbour_Cell_Data_t          Packet_Neighbour_Cell_Data;
+    Packet_Serving_Cell_Data_t            Packet_Serving_Cell_Data;
+    Packet_Paging_Request_t               Packet_Paging_Request;
+    Packet_PDCH_Release_t                 Packet_PDCH_Release;
+    Packet_Polling_Request_t              Packet_Polling_Request;
+    Packet_Power_Control_Timing_Advance_t Packet_Power_Control_Timing_Advance;
+    Packet_PRACH_Parameters_t             Packet_PRACH_Parameters;
+    Packet_Queueing_Notification_t        Packet_Queueing_Notification;
+    Packet_Timeslot_Reconfigure_t         Packet_Timeslot_Reconfigure;
+    Packet_TBF_Release_t                  Packet_TBF_Release;
+    Packet_Uplink_Ack_Nack_t              Packet_Uplink_Ack_Nack;
+    Packet_Uplink_Assignment_t            Packet_Uplink_Assignment;
+    Packet_Cell_Change_Continue_t         Packet_Cell_Change_Continue;
+    Packet_Handover_Command_t             Packet_Handover_Command;
+    Packet_PhysicalInformation_t          Packet_PhysicalInformation;
+    Packet_Downlink_Dummy_Control_Block_t Packet_Downlink_Dummy_Control_Block;
+
+    PSI1_t                                PSI1;
+    PSI2_t                                PSI2;
+    PSI3_t                                PSI3;
+    PSI3_BIS_t                            PSI3_BIS;
+    PSI4_t                                PSI4;
+    PSI13_t                               PSI13;
+    PSI5_t                                PSI5;
+  } u;
+
+  /* NrOfBits is placed after union to avoid unnecessary code changes when addressing the union members
+   * NrOfBits serves dual purpose:
+   * 1. before unpacking it will hold the max number of bits for the CSN.1 unpacking function
+   * 2. after successful unpacking it will hold the number of bits unpacked from a message.
+   *   This will be needed for some EGPRS messages to compute the length of included variable bitmap
+   */
+  guint8 PAYLOAD_TYPE;
+  guint8 RRBP;
+  guint8 SP;
+  guint8 USF;
+  guint8 RBSN;
+  guint8 RTI;
+  guint8 FS;
+  guint8 AC;
+  guint8 PR;
+  guint8 TFI;
+  guint8 D;
+  guint8 RBSNe;
+  guint8 FSe;
+  guint8 spare;
+  gint16 NrOfBits;
+} RlcMacDownlink_t;
+
+typedef gint16 MSGGPRS_Status_t;
+/* < Uplink RLC/MAC control message > */
+typedef struct
+{
+  union
+  {
+    guint8 MESSAGE_TYPE;
+    Packet_Cell_Change_Failure_t          Packet_Cell_Change_Failure;
+    Packet_Control_Acknowledgement_t      Packet_Control_Acknowledgement;
+    Packet_Downlink_Ack_Nack_t            Packet_Downlink_Ack_Nack;
+    EGPRS_PD_AckNack_t							Egprs_Packet_Downlink_Ack_Nack;
+    Packet_Uplink_Dummy_Control_Block_t   Packet_Uplink_Dummy_Control_Block;
+    Packet_Measurement_Report_t           Packet_Measurement_Report;
+    Packet_Resource_Request_t             Packet_Resource_Request;
+    Packet_Mobile_TBF_Status_t            Packet_Mobile_TBF_Status;
+    Packet_PSI_Status_t                   Packet_PSI_Status;
+    Packet_Enh_Measurement_Report_t       Packet_Enh_Measurement_Report;
+    Packet_Cell_Change_Notification_t     Packet_Cell_Change_Notification;
+    Packet_SI_Status_t                    Packet_SI_Status;
+	Additional_MS_Rad_Access_Cap_t        Additional_MS_Rad_Access_Cap;
+	Packet_Pause_t                        Packet_Pause;
+  } u;
+  gint16 NrOfBits;
+} RlcMacUplink_t;
+
+
+void GPRSMSG_Profile(gint16 i);
+
+/* SI1_RestOctet_t */
+
+typedef struct
+{
+  gboolean            Exist_NCH_Position;
+  guint8              NCH_Position;
+
+  guint8              BandIndicator;
+} SI1_RestOctet_t;
+
+/* SI3_Rest_Octet_t */
+typedef struct
+{
+  guint8 CBQ;
+  guint8 CELL_RESELECT_OFFSET;
+  guint8 TEMPORARY_OFFSET;
+  guint8 PENALTY_TIME;
+} Selection_Parameters_t;
+
+typedef struct
+{
+  guint8 Exist_Selection_Parameters;
+  Selection_Parameters_t Selection_Parameters;
+
+  guint8 Exist_Power_Offset;
+  guint8 Power_Offset;
+
+  guint8 System_Information_2ter_Indicator;
+  guint8 Early_Classmark_Sending_Control;
+
+  guint8 Exist_WHERE;
+  guint8 WHERE;
+
+  guint8 Exist_GPRS_Indicator;
+  guint8 RA_COLOUR;
+  guint8 SI13_POSITION;
+  guint8 ECS_Restriction3G;
+  guint8 ExistSI2quaterIndicator;
+  guint8 SI2quaterIndicator;
+} SI3_Rest_Octet_t;
+
+typedef struct
+{
+  guint8 Exist_Selection_Parameters;
+  Selection_Parameters_t Selection_Parameters;
+
+  guint8 Exist_Power_Offset;
+  guint8 Power_Offset;
+
+  guint8 Exist_GPRS_Indicator;
+  guint8 RA_COLOUR;
+  guint8 SI13_POSITION;
+} SI4_Rest_Octet_t;
+
+typedef SI4_Rest_Octet_t SI7_Rest_Octet_t;
+typedef SI4_Rest_Octet_t SI8_Rest_Octet_t;
+
+
+/* SI6_RestOctet_t */
+
+typedef struct
+{
+  guint8   PagingChannelRestructuring;
+  guint8   NLN_SACCH;
+
+  gboolean Exist_CallPriority;
+  guint8   CallPriority;
+
+  guint8   NLN_Status;
+} PCH_and_NCH_Info_t;
+
+typedef struct
+{
+  gboolean            Exist_PCH_and_NCH_Info;
+  PCH_and_NCH_Info_t PCH_and_NCH_Info;
+
+  gboolean            Exist_VBS_VGCS_Options;
+  guint8              VBS_VGCS_Options;
+
+  /* The meaning of Exist_DTM_Support is as follows:
+   * FALSE => DTM is not supported in the serving cell, RAC and MAX_LAPDm are absent in bitstream
+   * TRUE  => DTM is supported in the serving cell, RAC and MAX_LAPDm are present in bitstream
+   */
+  gboolean            Exist_DTM_Support;
+  guint8              RAC;
+  guint8              MAX_LAPDm;
+
+  guint8              BandIndicator; /* bit(1) L/H, L => ARFCN in 1800 band H => ARFCN in 1900 band */
+} SI6_RestOctet_t;
+
+/*************************************************
+ * Enhanced Measurement Report. TS 04.18 9.1.55. *
+ *************************************************/
+
+typedef struct
+{
+  guint8        DTX_USED;
+  guint8        RXLEV_VAL;
+  guint8        RX_QUAL_FULL;
+  guint8        MEAN_BEP;
+  guint8        CV_BEP;
+  guint8        NBR_RCVD_BLOCKS;
+} EMR_ServingCell_t;
+
+typedef struct
+{
+  guint8 RR_Short_PD;
+  guint8 MESSAGE_TYPE;
+  guint8 ShortLayer2_Header;
+
+  BA_USED_t BA_USED;
+  guint8 BSIC_Seen;
+
+  guint8 SCALE;
+
+  guint8 Exist_ServingCellData;
+  EMR_ServingCell_t ServingCellData;
+
+  guint8 Count_RepeatedInvalid_BSIC_Info; /* Number of instances */
+  RepeatedInvalid_BSIC_Info_t RepeatedInvalid_BSIC_Info[INV_BSIC_LIST_LEN];
+
+  guint8 Exist_ReportBitmap;
+  guint8 Count_REPORTING_QUANTITY_Instances; /* Number of instances */
+  REPORTING_QUANTITY_Instance_t REPORTING_QUANTITY_Instances[REPORT_QUANTITY_LIST_LEN];
+
+} EnhancedMeasurementReport_t;
+
+ void decode_gsm_rlcmac_uplink(BitVector * vector, RlcMacUplink_t * data);
+ void decode_gsm_rlcmac_downlink(BitVector * vector, RlcMacDownlink_t * data);
+ void encode_gsm_rlcmac_downlink(BitVector * vector, RlcMacDownlink_t * data);
+ void encode_gsm_rlcmac_uplink(BitVector * vector, RlcMacUplink_t * data);
+
+#endif /* __PACKET_GSM_RLCMAC_H__ */
