5140 lines
118 KiB
C++
5140 lines
118 KiB
C++
/* 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
|
|
|
|
//TODO Check this number
|
|
#define MAX_NUMBER_LLC_PDU 5
|
|
|
|
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
|
|
{
|
|
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_Desc_t;
|
|
|
|
typedef struct
|
|
{
|
|
guint8 UnionType;
|
|
EGPRS_AckNack_Desc_t Desc;
|
|
} EGPRS_AckNack_t;
|
|
|
|
typedef struct
|
|
{
|
|
guint8 LENGTH;
|
|
EGPRS_AckNack_Desc_t Desc;
|
|
} EGPRS_AckNack_w_len_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;
|
|
|
|
/* < Uplink RLC/MAC data block message > */
|
|
typedef struct
|
|
{
|
|
guint8 PAYLOAD_TYPE;
|
|
guint8 CV;
|
|
guint8 SI;
|
|
guint8 R;
|
|
guint8 spare;
|
|
guint8 PI;
|
|
guint8 TFI;
|
|
guint8 TI;
|
|
guint8 BSN;
|
|
guint8 E_1;
|
|
guint8 LENGTH_INDICATOR[MAX_NUMBER_LLC_PDU];
|
|
guint8 M[MAX_NUMBER_LLC_PDU];
|
|
guint8 E[MAX_NUMBER_LLC_PDU];
|
|
guint32 TLLI;
|
|
guint8 PFI;
|
|
guint8 E_2;
|
|
guint8 RLC_DATA[20];
|
|
guint8 MESSAGE_TYPE;
|
|
} RlcMacUplinkDataBlock_t;
|
|
|
|
|
|
/* < Downlink RLC/MAC data block message > */
|
|
typedef struct
|
|
{
|
|
guint8 PAYLOAD_TYPE;
|
|
guint8 RRBP;
|
|
guint8 SP;
|
|
guint8 USF;
|
|
guint8 PR;
|
|
guint8 TFI;
|
|
guint8 FBI;
|
|
guint8 BSN;
|
|
guint8 E_1;
|
|
guint8 LENGTH_INDICATOR[MAX_NUMBER_LLC_PDU];
|
|
guint8 M[MAX_NUMBER_LLC_PDU];
|
|
guint8 E[MAX_NUMBER_LLC_PDU];
|
|
guint8 RLC_DATA[20];
|
|
guint8 MESSAGE_TYPE;
|
|
} RlcMacDownlinkDataBlock_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(bitvec * vector, RlcMacUplink_t * data);
|
|
void decode_gsm_rlcmac_downlink(bitvec * vector, RlcMacDownlink_t * data);
|
|
void encode_gsm_rlcmac_downlink(bitvec * vector, RlcMacDownlink_t * data);
|
|
void encode_gsm_rlcmac_uplink(bitvec * vector, RlcMacUplink_t * data);
|
|
void decode_gsm_rlcmac_uplink_data(bitvec * vector, RlcMacUplinkDataBlock_t * data);
|
|
void encode_gsm_rlcmac_downlink_data(bitvec * vector, RlcMacDownlinkDataBlock_t * data);
|
|
#endif /* __PACKET_GSM_RLCMAC_H__ */
|