| /* 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. |
| */ |
| |
| #ifndef __PACKET_GSM_RLCMAC_H__ |
| #define __PACKET_GSM_RLCMAC_H__ |
| |
| #include <osmocom/core/bitvec.h> |
| #include "wireshark_compat.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; |
| guint8 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; |
| }; |
| |
| #if 0 |
| 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; |
| #endif |
| |
| #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 |
| |
| |
| 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> |
| */ |
| #if 0 |
| #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 */ |
| #endif |
| |
| 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; |
| |
| #if 0 |
| 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; |
| #endif |
| |
| /* 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; |
| |
| #if 0 |
| 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; |
| #endif |
| |
| 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; |
| #if 0 |
| #define TBF_RELEASE_CAUSE_NORMAL (0x00) |
| #define TBF_RELEASE_CAUSE_ABNORMAL (0x02) |
| #endif |
| |
| 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; |
| |
| #if 0 |
| typedef struct |
| { |
| guint8 CTRL_ACK; |
| } Packet_Control_Acknowledgement_11_bit_t, Packet_Control_Acknowledgement_8_bit_t; |
| #endif |
| |
| /* < 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 MultislotCapabilityReductionForDL_DualCarrier; |
| guint8 DL_DualCarrierForDTM; |
| } DownlinkDualCarrierCapability_r7_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; |
| |
| /* -------- R7 additions */ |
| guint8 DTM_Handover_Capability; |
| guint8 Exist_DownlinkDualCarrierCapability_r7; |
| DownlinkDualCarrierCapability_r7_t DownlinkDualCarrierCapability_r7; |
| |
| guint8 FlexibleTimeslotAssignment; |
| guint8 GAN_PS_HandoverCapability; |
| guint8 RLC_Non_persistentMode; |
| guint8 ReducedLatencyCapability; |
| guint8 UplinkEGPRS2; |
| guint8 DownlinkEGPRS2; |
| |
| /* -------- R8 additions */ |
| guint8 EUTRA_FDD_Support; |
| guint8 EUTRA_TDD_Support; |
| guint8 GERAN_To_EUTRAN_supportInGERAN_PTM; |
| guint8 PriorityBasedReselectionSupport; |
| |
| } Content_t; |
| |
| typedef enum |
| {/* See TS 24.008 table 10.5.146 */ |
| AccTech_GSMP = 0x0, |
| AccTech_GSME = 0x1, |
| AccTech_GSMR = 0x2, |
| AccTech_GSM1800 = 0x3, |
| AccTech_GSM1900 = 0x4, |
| AccTech_GSM450 = 0x5, |
| AccTech_GSM480 = 0x6, |
| AccTech_GSM850 = 0x7, |
| AccTech_GSM750 = 0x8, |
| AccTech_GSMT830 = 0x9, |
| AccTech_GSMT410 = 0xa, |
| AccTech_GSMT900 = 0xb, |
| AccTech_GSM710 = 0xc, |
| AccTech_GSMT810 = 0xd, |
| AccTech_GSMOther = 0xf |
| } AccessTechnology_t; |
| |
| /* Maximum entries in one message, Enum above, applying restrictions from section |
| 12.30 "MS Radio Access Capability 2": */ |
| #define MAX_ACCESS_TECHNOLOGIES_COUNT 11 |
| |
| typedef struct |
| { |
| guint8 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 |
| MAX_ACCESS_TECHNOLOGIES_COUNT-1 additional access technologies. */ |
| Additional_access_technologies_struct_t Additional_access_technologies[MAX_ACCESS_TECHNOLOGIES_COUNT-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[MAX_ACCESS_TECHNOLOGIES_COUNT]; |
| } 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{ |
| guint8 RB_ID; |
| guint8 RADIO_PRIORITY; |
| |
| gboolean Exist_RLC_BLOCK_COUNT; |
| guint8 RLC_BLOCK_COUNT; |
| |
| gboolean Exist_Iu_Mode_ChRequestDesk; |
| //IU_Mode_Channel_Request_Desk_t IU_Mode_Channel_Request_Desk1; |
| |
| } IU_Mode_Channel_Request_Desk_t; |
| |
| typedef struct{ |
| gboolean Exist_G_RNTI_Extension; |
| guint8 G_RNTI_Extension; |
| IU_Mode_Channel_Request_Desk_t IU_Mode_Channel_Request_Desk; |
| |
| } IU_Mode_Channel_Request_Desk_RNTI_t; |
| |
| typedef struct{ |
| guint8 PFI; |
| guint8 RADIO_PRIORITY; |
| guint8 RLC_Mode; |
| |
| gboolean Exist_LCC_PDU; |
| guint8 LCC_PDU; |
| |
| gboolean Exist_Ext_Channel_Request_desc; |
| |
| } Ext_Channel_Request_desc_t; |
| |
| |
| typedef struct{ |
| gboolean Exist_GMSK_MEAN_BEP; |
| guint8 GMSK_MEAN_BEP; |
| guint8 GMSK_CV_BEP; |
| |
| gboolean Exist_8PSK_MEAN_BEP; |
| guint8 p8PSK_MEAN_BEP; |
| guint8 p8PSK_CV_BEP; |
| |
| gboolean Exist_QPSK_MEAN_BEP; |
| guint8 QPSK_MEAN_BEP; |
| guint8 QPSK_CV_BEP; |
| |
| gboolean Exist_16QAM_NSR_MEAN_BEP; |
| guint8 p16QAM_NSR_MEAN_BEP; |
| guint8 p16QAM_NSR_CV_BEP; |
| |
| gboolean Exist_32QAM_NSR_MEAN_BEP; |
| guint8 p32QAM_NSR_MEAN_BEP; |
| guint8 p32QAM_NSR_CV_BEP; |
| |
| gboolean Exist_16QAM_HSR_MEAN_BEP; |
| guint8 p16QAM_HSR_MEAN_BEP; |
| guint8 p16QAM_HSR_CV_BEP; |
| |
| gboolean Exist_32QAM_HSR_MEAN_BEP; |
| guint8 p32QAM_HSR_MEAN_BEP; |
| guint8 p32QAM_HSR_CV_BEP; |
| |
| } EGPRS_BEP_LinkQualityMeasurements_type2_t; |
| |
| typedef struct |
| { |
| gboolean Exist; |
| guint8 REPORTED_MODULATION; |
| guint8 MEAN_BEP_TN; |
| |
| } BEP_MeasurementReport_type2_t; |
| |
| typedef struct |
| { |
| gboolean Exist; |
| guint8 I_LEVEL; |
| } InterferenceMeasurementReport_type2_t; |
| |
| typedef struct |
| { |
| gboolean Exist_BEP_MEASUREMENTS; |
| BEP_MeasurementReport_type2_t BEP_MEASUREMENTS[8]; |
| |
| gboolean Exist_INTERFERENCE_MEASUREMENTS; |
| InterferenceMeasurementReport_type2_t INTERFERENCE_MEASUREMENTS[8]; |
| |
| } EGPRS_TimeslotLinkQualityMeasurements_type2_t; |
| |
| |
| typedef struct |
| { |
| gboolean Exist_Downlink_eTFI; |
| guint8 DOWNLINK_ETFI; |
| |
| } PRR_AdditionsR12_t; |
| |
| typedef struct |
| { |
| guint8 LOW_ACCESS_PRIORITY_SIGNALLING; |
| |
| gboolean Exist_AdditionsR12; |
| PRR_AdditionsR12_t AdditionsR12; |
| |
| } PRR_AdditionsR10_t; |
| |
| typedef struct |
| { |
| guint8 EARLY_TBF_ESTABLISHMENT; |
| |
| gboolean Exist_EGPRS_BEP_LinkQualityMeasurements_type2; |
| EGPRS_BEP_LinkQualityMeasurements_type2_t EGPRS_BEP_LinkQualityMeasurements_type2; |
| |
| gboolean Exist_EGPRS_TimeslotLinkQualityMeasurements_type2; |
| EGPRS_TimeslotLinkQualityMeasurements_type2_t EGPRS_TimeslotLinkQualityMeasurements_type2; |
| |
| gboolean Exist_AdditionsR10; |
| PRR_AdditionsR10_t AdditionsR10; |
| |
| } PRR_AdditionsR7_t; |
| |
| typedef struct |
| { |
| gboolean Exist_Ext_Channel_Request_desc; |
| Ext_Channel_Request_desc_t Ext_Channel_Request_desc; |
| |
| guint8 Exist_AdditionsR7; |
| PRR_AdditionsR7_t AdditionsR7; |
| |
| } PRR_AdditionsR6_t; |
| |
| typedef struct |
| { |
| guint8 Exist_Iu_Mode_ChRequestDesk; |
| IU_Mode_Channel_Request_Desk_RNTI_t IU_Mode_Channel_Request_Desk_RNTI; |
| |
| guint8 Exist_HFN_LSB; |
| guint8 HFN_LSb; |
| |
| guint8 Exist_AdditionsR6; |
| PRR_AdditionsR6_t AdditionsR6; |
| |
| } PRR_AdditionsR5_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; |
| |
| guint8 Exist_AdditionsR5; |
| PRR_AdditionsR5_t AdditionsR5; |
| } 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_capability2; |
| MS_Radio_Access_capability_t MS_Radio_Access_capability2; |
| |
| 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 I_LEVEL_TN[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_extension; |
| guint8 G_RNTI_extension; |
| 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_Packet_Extended_Timing_Advance; |
| guint8 Packet_Extended_Timing_Advance; |
| 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; |
| |
| #if 0 |
| enum PUAN_Type |
| { |
| PUAN_GPRS, |
| PUAN_EGPRS |
| }; |
| #endif |
| |
| 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 Packet_Timing_Advance; |
| |
| 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; |
| |
| #if 0 |
| enum PUA_Type |
| { |
| PUA_GPRS, |
| PUA_EGPRS |
| }; |
| #endif |
| |
| 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; |
| |
| #if 0 |
| enum PTR_Type |
| { |
| PTR_GPRS, |
| PTR_EGPRS |
| }; |
| #endif |
| |
| 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 LB_MS_TXPWR_MAX_CCH; |
| } PSI1_AdditionsR6_t; |
| |
| typedef struct |
| { |
| guint8 MSCR; |
| guint8 SGSNR; |
| guint8 BandIndicator; |
| gboolean Exist_AdditionsR6; |
| PSI1_AdditionsR6_t AdditionsR6; |
| } 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; |
| |
| #if 0 |
| #define TARGET_CELL_GSM 0 |
| #define TARGET_CELL_3G 1 |
| #endif |
| |
| 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; |
| |
| /* 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 GlobalPacket_Timing_Advance; |
| guint8 Exist_Packet_Extended_Timing_Advance; |
| guint8 Packet_Extended_Timing_Advance; |
| } PHO_TimingAdvance_t; |
| |
| typedef struct |
| { |
| guint8 NAS_ContainerLength; |
| guint8 Spare_1a; |
| guint8 Spare_1b; |
| guint8 Spare_1c; |
| guint8 Old_XID; |
| guint8 Spare_1e; |
| guint8 Type_of_Ciphering_Algo; |
| guint32 IOV_UI_value; |
| } NAS_Container_For_PS_HO_t; |
| |
| typedef struct |
| { |
| guint8 RRC_ContainerLength; |
| guint8 RRC_Container[MAX_RRC_CONTAINER_LENGTH]; |
| } PS_HandoverTo_UTRAN_Payload_t; |
| |
| typedef struct |
| { |
| guint8 RRC_ContainerLength; |
| guint8 RRC_Container[MAX_RRC_CONTAINER_LENGTH]; |
| } PS_HandoverTo_E_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_For_PS_HO_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; |
| PS_HandoverTo_E_UTRAN_Payload_t PS_HandoverTo_E_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_capability2; |
| } 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_Cell_Change_Continue_t Packet_Cell_Change_Continue; |
| Packet_Downlink_Assignment_t Packet_Downlink_Assignment; |
| Packet_Measurement_Order_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_Uplink_Dummy_Control_Block_t Packet_Uplink_Dummy_Control_Block; |
| 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; |
| PSI5_t PSI5; |
| PSI13_t PSI13; |
| } 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; |
| 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; |
| EGPRS_PD_AckNack_t Egprs_Packet_Downlink_Ack_Nack; |
| Packet_Pause_t Packet_Pause; |
| Packet_Enh_Measurement_Report_t Packet_Enh_Measurement_Report; |
| Additional_MS_Rad_Access_Cap_t Additional_MS_Rad_Access_Cap; |
| Packet_Cell_Change_Notification_t Packet_Cell_Change_Notification; |
| Packet_SI_Status_t Packet_SI_Status; |
| } 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; |
| |
| #if 0 |
| typedef SI4_Rest_Octet_t SI7_Rest_Octet_t; |
| typedef SI4_Rest_Octet_t SI8_Rest_Octet_t; |
| #endif |
| |
| /* 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; |
| |
| /* EGPRS Packet Channel Request (see 3GPP TS 44.060, table 11.2.5a.2) */ |
| typedef struct |
| { |
| guint8 MultislotClassGroup; |
| guint8 MultislotClass; |
| guint8 NumberOfBlocks; |
| guint8 Priority; |
| guint8 RandomBits; |
| } EGPRS_PacketChannelRequestContent_t; |
| |
| /* HACK: we don't really want separate structures for each sub-type, because |
| * they all have a similar set of fields, so here we basically create a few |
| * aliases to EGPRS_PacketChannelRequestContent_t. This makes the API simpler. */ |
| typedef EGPRS_PacketChannelRequestContent_t PacketChannelRequest_MC5P2RB3_t; |
| typedef EGPRS_PacketChannelRequestContent_t PacketChannelRequest_MCG3P2RB3_t; |
| typedef EGPRS_PacketChannelRequestContent_t PacketChannelRequest_NOB3P2RB3_t; |
| typedef EGPRS_PacketChannelRequestContent_t PacketChannelRequest_P2RB3_t; |
| typedef EGPRS_PacketChannelRequestContent_t PacketChannelRequest_RB5_t; |
| |
| typedef struct |
| { |
| /* NOTE: some fields may be uninitialized (always check Type) */ |
| guint8 Type; |
| EGPRS_PacketChannelRequestContent_t Content; |
| } EGPRS_PacketChannelRequest_t; |
| |
| typedef enum { |
| EGPRS_PKT_CHAN_REQ_ONE_PHASE = 0, |
| EGPRS_PKT_CHAN_REQ_SHORT, |
| EGPRS_PKT_CHAN_REQ_ONE_PHASE_RED_LATENCY, |
| EGPRS_PKT_CHAN_REQ_TWO_PHASE, |
| EGPRS_PKT_CHAN_REQ_SIGNALLING, |
| EGPRS_PKT_CHAN_REQ_ONE_PHASE_UNACK, |
| EGPRS_PKT_CHAN_REQ_DEDICATED_CHANNEL, |
| EGPRS_PKT_CHAN_REQ_EMERGENCY_CALL, |
| EGPRS_PKT_CHAN_REQ_TWO_PHASE_IPA, |
| EGPRS_PKT_CHAN_REQ_SIGNALLING_IPA, |
| } EGPRS_PacketChannelRequestType_t; |
| |
| extern struct value_string egprs_pkt_ch_req_type_names[]; |
| |
| int decode_gsm_rlcmac_uplink(struct bitvec *vector, RlcMacUplink_t *data); |
| int decode_gsm_rlcmac_downlink(struct bitvec *vector, RlcMacDownlink_t *data); |
| int encode_gsm_rlcmac_downlink(struct bitvec *vector, RlcMacDownlink_t *data); |
| int encode_gsm_rlcmac_uplink(struct bitvec *vector, RlcMacUplink_t *data); |
| void decode_gsm_rlcmac_uplink_data(struct bitvec *vector, RlcMacUplinkDataBlock_t * data); |
| void encode_gsm_rlcmac_downlink_data(struct bitvec *vector, RlcMacDownlinkDataBlock_t * data); |
| int decode_gsm_ra_cap(struct bitvec *vector, MS_Radio_Access_capability_t * data); |
| int decode_egprs_pkt_ch_req(guint16 ra, EGPRS_PacketChannelRequest_t *data); |
| |
| #endif /* __PACKET_GSM_RLCMAC_H__ */ |