Osmocom Packet control Unit (PCU): Network-side GPRS (RLC/MAC); BTS- or BSC-colocated https://osmocom.org/projects/osmopcu
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
osmo-pcu/src/gsm_rlcmac.c

6251 lines
267 KiB

/* gsm_rlcmac.c
* Routines 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.c 39164 2011-09-27 12:05:32Z etxrab $
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include <osmocom/core/utils.h>
#include <osmocom/core/bitvec.h>
#include "gsm_rlcmac.h"
#include "csn1.h"
/* Initialize the protocol and registered fields
*/
#include <assert.h>
#include <arpa/inet.h>
#include <gprs_debug.h>
/* Payload type as defined in TS 44.060 / 10.4.7 */
#define PAYLOAD_TYPE_DATA 0
#define PAYLOAD_TYPE_CTRL_NO_OPT_OCTET 1
#define PAYLOAD_TYPE_CTRL_OPT_OCTET 2
#define PAYLOAD_TYPE_RESERVED 3
/* CSN1 structures */
/*(not all parts of CSN_DESCR structure are always initialized.)*/
static const
CSN_DESCR_BEGIN(PLMN_t)
M_UINT (PLMN_t, MCC2, 4),
M_UINT (PLMN_t, MCC1, 4),
M_UINT (PLMN_t, MNC3, 4),
M_UINT (PLMN_t, MCC3, 4),
M_UINT (PLMN_t, MNC2, 4),
M_UINT (PLMN_t, MNC1, 4),
CSN_DESCR_END (PLMN_t)
static const
CSN_DESCR_BEGIN(StartingTime_t)
M_UINT (StartingTime_t, N32, 5),
M_UINT (StartingTime_t, N51, 6),
M_UINT (StartingTime_t, N26, 5),
CSN_DESCR_END (StartingTime_t)
/*< Global TFI IE >*/
static const
CSN_DESCR_BEGIN(Global_TFI_t)
M_UNION (Global_TFI_t, 2),
M_UINT (Global_TFI_t, u.UPLINK_TFI, 5),
M_UINT (Global_TFI_t, u.DOWNLINK_TFI, 5),
CSN_DESCR_END (Global_TFI_t)
/*< Starting Frame Number Description IE >*/
static const
CSN_DESCR_BEGIN(Starting_Frame_Number_t)
M_UNION (Starting_Frame_Number_t, 2),
M_TYPE (Starting_Frame_Number_t, u.StartingTime, StartingTime_t),
M_UINT (Starting_Frame_Number_t, u.k, 13),
CSN_DESCR_END(Starting_Frame_Number_t)
/*< Ack/Nack Description IE >*/
static const
CSN_DESCR_BEGIN(Ack_Nack_Description_t)
M_UINT (Ack_Nack_Description_t, FINAL_ACK_INDICATION, 1),
M_UINT (Ack_Nack_Description_t, STARTING_SEQUENCE_NUMBER, 7),
M_BITMAP (Ack_Nack_Description_t, RECEIVED_BLOCK_BITMAP, 64),
CSN_DESCR_END (Ack_Nack_Description_t)
/*< Packet Timing Advance IE >*/
static const
CSN_DESCR_BEGIN(Packet_Timing_Advance_t)
M_NEXT_EXIST (Packet_Timing_Advance_t, Exist_TIMING_ADVANCE_VALUE, 1),
M_UINT (Packet_Timing_Advance_t, TIMING_ADVANCE_VALUE, 6),
M_NEXT_EXIST (Packet_Timing_Advance_t, Exist_IndexAndtimeSlot, 2),
M_UINT (Packet_Timing_Advance_t, TIMING_ADVANCE_INDEX, 4),
M_UINT (Packet_Timing_Advance_t, TIMING_ADVANCE_TIMESLOT_NUMBER, 3),
CSN_DESCR_END (Packet_Timing_Advance_t)
/*< Power Control Parameters IE >*/
static const
CSN_DESCR_BEGIN(GPRS_Power_Control_Parameters_t)
M_UINT (GPRS_Power_Control_Parameters_t, ALPHA, 4),
M_UINT (GPRS_Power_Control_Parameters_t, T_AVG_W, 5),
M_UINT (GPRS_Power_Control_Parameters_t, T_AVG_T, 5),
M_UINT (GPRS_Power_Control_Parameters_t, PC_MEAS_CHAN, 1),
M_UINT (GPRS_Power_Control_Parameters_t, N_AVG_I, 4),
CSN_DESCR_END (GPRS_Power_Control_Parameters_t)
/*< Global Power Control Parameters IE >*/
static const
CSN_DESCR_BEGIN(Global_Power_Control_Parameters_t)
M_UINT (Global_Power_Control_Parameters_t, ALPHA, 4),
M_UINT (Global_Power_Control_Parameters_t, T_AVG_W, 5),
M_UINT (Global_Power_Control_Parameters_t, T_AVG_T, 5),
M_UINT (Global_Power_Control_Parameters_t, Pb, 4),
M_UINT (Global_Power_Control_Parameters_t, PC_MEAS_CHAN, 1),
M_UINT (Global_Power_Control_Parameters_t, INT_MEAS_CHANNEL_LIST_AVAIL, 1),
M_UINT (Global_Power_Control_Parameters_t, N_AVG_I, 4),
CSN_DESCR_END (Global_Power_Control_Parameters_t)
/*< Global Packet Timing Advance IE >*/
static const
CSN_DESCR_BEGIN(Global_Packet_Timing_Advance_t)
M_NEXT_EXIST (Global_Packet_Timing_Advance_t, Exist_TIMING_ADVANCE_VALUE, 1),
M_UINT (Global_Packet_Timing_Advance_t, TIMING_ADVANCE_VALUE, 6),
M_NEXT_EXIST (Global_Packet_Timing_Advance_t, Exist_UPLINK_TIMING_ADVANCE, 2),
M_UINT (Global_Packet_Timing_Advance_t, UPLINK_TIMING_ADVANCE_INDEX, 4),
M_UINT (Global_Packet_Timing_Advance_t, UPLINK_TIMING_ADVANCE_TIMESLOT_NUMBER, 3),
M_NEXT_EXIST (Global_Packet_Timing_Advance_t, Exist_DOWNLINK_TIMING_ADVANCE, 2),
M_UINT (Global_Packet_Timing_Advance_t, DOWNLINK_TIMING_ADVANCE_INDEX, 4),
M_UINT (Global_Packet_Timing_Advance_t, DOWNLINK_TIMING_ADVANCE_TIMESLOT_NUMBER, 3),
CSN_DESCR_END (Global_Packet_Timing_Advance_t)
/*< Channel Quality Report struct >*/
static const
CSN_DESCR_BEGIN(Channel_Quality_Report_t)
M_UINT (Channel_Quality_Report_t, C_VALUE, 6),
M_UINT (Channel_Quality_Report_t, RXQUAL, 3),
M_UINT (Channel_Quality_Report_t, SIGN_VAR, 6),
M_NEXT_EXIST (Channel_Quality_Report_t, Slot[0].Exist, 1),
M_UINT (Channel_Quality_Report_t, Slot[0].I_LEVEL_TN, 4),
M_NEXT_EXIST (Channel_Quality_Report_t, Slot[1].Exist, 1),
M_UINT (Channel_Quality_Report_t, Slot[1].I_LEVEL_TN, 4),
M_NEXT_EXIST (Channel_Quality_Report_t, Slot[2].Exist, 1),
M_UINT (Channel_Quality_Report_t, Slot[2].I_LEVEL_TN, 4),
M_NEXT_EXIST (Channel_Quality_Report_t, Slot[3].Exist, 1),
M_UINT (Channel_Quality_Report_t, Slot[3].I_LEVEL_TN, 4),
M_NEXT_EXIST (Channel_Quality_Report_t, Slot[4].Exist, 1),
M_UINT (Channel_Quality_Report_t, Slot[4].I_LEVEL_TN, 4),
M_NEXT_EXIST (Channel_Quality_Report_t, Slot[5].Exist, 1),
M_UINT (Channel_Quality_Report_t, Slot[5].I_LEVEL_TN, 4),
M_NEXT_EXIST (Channel_Quality_Report_t, Slot[6].Exist, 1),
M_UINT (Channel_Quality_Report_t, Slot[6].I_LEVEL_TN, 4),
M_NEXT_EXIST (Channel_Quality_Report_t, Slot[7].Exist, 1),
M_UINT (Channel_Quality_Report_t, Slot[7].I_LEVEL_TN, 4),
CSN_DESCR_END (Channel_Quality_Report_t)
/*< EGPRS Ack/Nack Description struct >*/
static const
CSN_DESCR_BEGIN (EGPRS_AckNack_Desc_t)
M_UINT (EGPRS_AckNack_Desc_t, FINAL_ACK_INDICATION, 1),
M_UINT (EGPRS_AckNack_Desc_t, BEGINNING_OF_WINDOW, 1),
M_UINT (EGPRS_AckNack_Desc_t, END_OF_WINDOW, 1),
M_UINT (EGPRS_AckNack_Desc_t, STARTING_SEQUENCE_NUMBER, 11),
M_NEXT_EXIST (EGPRS_AckNack_Desc_t, Exist_CRBB, 3),
M_UINT (EGPRS_AckNack_Desc_t, CRBB_LENGTH, 7),
M_UINT (EGPRS_AckNack_Desc_t, CRBB_STARTING_COLOR_CODE, 1),
M_LEFT_VAR_BMP (EGPRS_AckNack_Desc_t, CRBB, CRBB_LENGTH, 0),
M_LEFT_VAR_BMP_1(EGPRS_AckNack_Desc_t, URBB, URBB_LENGTH, 0),
CSN_DESCR_END (EGPRS_AckNack_Desc_t)
/*< EGPRS Ack/Nack Description IE >*/
gint16 Egprs_Ack_Nack_Desc_w_len_Dissector(csnStream_t* ar, struct bitvec *vector, unsigned *readIndex, void* data)
{
if (ar->direction == 0)
{
return csnStreamEncoder(ar, CSNDESCR(EGPRS_AckNack_Desc_t), vector, readIndex, data);
}
else
{
return csnStreamDecoder(ar, CSNDESCR(EGPRS_AckNack_Desc_t), vector, readIndex, data);
}
}
/* this intermediate structure is only required because M_SERIALIZE cannot be used as a member of M_UNION */
static const
CSN_DESCR_BEGIN(EGPRS_AckNack_w_len_t)
M_SERIALIZE (EGPRS_AckNack_w_len_t, Desc, 8, Egprs_Ack_Nack_Desc_w_len_Dissector),
CSN_DESCR_END (EGPRS_AckNack_w_len_t)
static const
CSN_DESCR_BEGIN(EGPRS_AckNack_t)
M_UNION (EGPRS_AckNack_t, 2),
M_TYPE (EGPRS_AckNack_t, Desc, EGPRS_AckNack_Desc_t),
M_TYPE (EGPRS_AckNack_t, Desc, EGPRS_AckNack_w_len_t),
CSN_DESCR_END (EGPRS_AckNack_t)
/*<P1 Rest Octets>*/
/*<P2 Rest Octets>*/
#if 0
static const
CSN_DESCR_BEGIN(MobileAllocationIE_t)
M_UINT (MobileAllocationIE_t, Length, 8),
M_VAR_ARRAY (MobileAllocationIE_t, MA, Length, 0),
CSN_DESCR_END (MobileAllocationIE_t)
#endif
#if 0
static const
CSN_DESCR_BEGIN(SingleRFChannel_t)
M_UINT (SingleRFChannel_t, spare, 2),
M_UINT (SingleRFChannel_t, ARFCN, 10),
CSN_DESCR_END (SingleRFChannel_t)
#endif
#if 0
static const
CSN_DESCR_BEGIN(RFHoppingChannel_t)
M_UINT (RFHoppingChannel_t, MAIO, 6),
M_UINT (RFHoppingChannel_t, HSN, 6),
CSN_DESCR_END (RFHoppingChannel_t)
#endif
#if 0
static const
CSN_DESCR_BEGIN(MobileAllocation_or_Frequency_Short_List_t)
M_UNION (MobileAllocation_or_Frequency_Short_List_t, 2),
M_BITMAP (MobileAllocation_or_Frequency_Short_List_t, u.Frequency_Short_List, 64),
M_TYPE (MobileAllocation_or_Frequency_Short_List_t, u.MA, MobileAllocationIE_t),
CSN_DESCR_END (MobileAllocation_or_Frequency_Short_List_t)
#endif
#if 0
static const
CSN_DESCR_BEGIN(Channel_Description_t)
M_UINT (Channel_Description_t, Channel_type_and_TDMA_offset, 5),
M_UINT (Channel_Description_t, TN, 3),
M_UINT (Channel_Description_t, TSC, 3),
M_UNION (Channel_Description_t, 2),
M_TYPE (Channel_Description_t, u.SingleRFChannel, SingleRFChannel_t),
M_TYPE (Channel_Description_t, u.RFHoppingChannel, RFHoppingChannel_t),
CSN_DESCR_END(Channel_Description_t)
#endif
#if 0
static const
CSN_DESCR_BEGIN(Group_Channel_Description_t)
M_TYPE (Group_Channel_Description_t, Channel_Description, Channel_Description_t),
M_NEXT_EXIST (Group_Channel_Description_t, Exist_Hopping, 1),
M_TYPE (Group_Channel_Description_t, MA_or_Frequency_Short_List, MobileAllocation_or_Frequency_Short_List_t),
CSN_DESCR_END (Group_Channel_Description_t)
#endif
#if 0
static const
CSN_DESCR_BEGIN(Group_Call_Reference_t)
M_UINT (Group_Call_Reference_t, value, 27),
M_UINT (Group_Call_Reference_t, SF, 1),
M_UINT (Group_Call_Reference_t, AF, 1),
M_UINT (Group_Call_Reference_t, call_priority, 3),
M_UINT (Group_Call_Reference_t, Ciphering_information, 4),
CSN_DESCR_END (Group_Call_Reference_t)
#endif
#if 0
static const
CSN_DESCR_BEGIN(Group_Call_information_t)
M_TYPE (Group_Call_information_t, Group_Call_Reference, Group_Call_Reference_t),
M_NEXT_EXIST (Group_Call_information_t, Exist_Group_Channel_Description, 1),
M_TYPE (Group_Call_information_t, Group_Channel_Description, Group_Channel_Description_t),
CSN_DESCR_END (Group_Call_information_t)
#endif
#if 0
static const
CSN_DESCR_BEGIN (P1_Rest_Octets_t)
M_NEXT_EXIST_LH(P1_Rest_Octets_t, Exist_NLN_PCH_and_NLN_status, 2),
M_UINT (P1_Rest_Octets_t, NLN_PCH, 2),
M_UINT (P1_Rest_Octets_t, NLN_status, 1),
M_NEXT_EXIST_LH(P1_Rest_Octets_t, Exist_Priority1, 1),
M_UINT (P1_Rest_Octets_t, Priority1, 3),
M_NEXT_EXIST_LH(P1_Rest_Octets_t, Exist_Priority2, 1),
M_UINT (P1_Rest_Octets_t, Priority2, 3),
M_NEXT_EXIST_LH(P1_Rest_Octets_t, Exist_Group_Call_information, 1),
M_TYPE (P1_Rest_Octets_t, Group_Call_information, Group_Call_information_t),
M_UINT_LH (P1_Rest_Octets_t, Packet_Page_Indication_1, 1),
M_UINT_LH (P1_Rest_Octets_t, Packet_Page_Indication_2, 1),
CSN_DESCR_END (P1_Rest_Octets_t)
#endif
#if 0
static const
CSN_DESCR_BEGIN (P2_Rest_Octets_t)
M_NEXT_EXIST_LH(P2_Rest_Octets_t, Exist_CN3, 1),
M_UINT (P2_Rest_Octets_t, CN3, 2),
M_NEXT_EXIST_LH(P2_Rest_Octets_t, Exist_NLN_and_status, 2),
M_UINT (P2_Rest_Octets_t, NLN, 2),
M_UINT (P2_Rest_Octets_t, NLN_status, 1),
M_NEXT_EXIST_LH(P2_Rest_Octets_t, Exist_Priority1, 1),
M_UINT (P2_Rest_Octets_t, Priority1, 3),
M_NEXT_EXIST_LH(P2_Rest_Octets_t, Exist_Priority2, 1),
M_UINT (P2_Rest_Octets_t, Priority2, 3),
M_NEXT_EXIST_LH(P2_Rest_Octets_t, Exist_Priority3, 1),
M_UINT (P2_Rest_Octets_t, Priority3, 3),
M_UINT_LH (P2_Rest_Octets_t, Packet_Page_Indication_3, 1),
CSN_DESCR_END (P2_Rest_Octets_t)
#endif
/* <IA Rest Octets>
* Note!!
* - first two bits skipped and frequencyparameters skipped
* - additions for R99 and EGPRS added
*/
#if 0
static const
CSN_DESCR_BEGIN(DynamicAllocation_t)
M_UINT (DynamicAllocation_t, USF, 3),
M_UINT (DynamicAllocation_t, USF_GRANULARITY, 1),
M_NEXT_EXIST (DynamicAllocation_t, Exist_P0_PR_MODE, 2),
M_UINT (DynamicAllocation_t, P0, 4),
M_UINT (DynamicAllocation_t, PR_MODE, 1),
CSN_DESCR_END (DynamicAllocation_t)
#endif
#if 0
static const
CSN_DESCR_BEGIN(EGPRS_TwoPhaseAccess_t)
M_NEXT_EXIST (EGPRS_TwoPhaseAccess_t, Exist_ALPHA, 1),
M_UINT (EGPRS_TwoPhaseAccess_t, ALPHA, 4),
M_UINT (EGPRS_TwoPhaseAccess_t, GAMMA, 5),
M_TYPE (EGPRS_TwoPhaseAccess_t, TBF_STARTING_TIME, StartingTime_t),
M_UINT (EGPRS_TwoPhaseAccess_t, NR_OF_RADIO_BLOCKS_ALLOCATED, 2),
M_NEXT_EXIST (EGPRS_TwoPhaseAccess_t, Exist_P0_BTS_PWR_CTRL_PR_MODE, 3),
M_UINT (EGPRS_TwoPhaseAccess_t, P0, 4),
M_UINT (EGPRS_TwoPhaseAccess_t, BTS_PWR_CTRL_MODE, 1),
M_UINT (EGPRS_TwoPhaseAccess_t, PR_MODE, 1),
CSN_DESCR_END (EGPRS_TwoPhaseAccess_t)
#endif
#if 0
static const
CSN_DESCR_BEGIN(EGPRS_OnePhaseAccess_t)
M_UINT (EGPRS_OnePhaseAccess_t, TFI_ASSIGNMENT, 5),
M_UINT (EGPRS_OnePhaseAccess_t, POLLING, 1),
M_UNION (EGPRS_OnePhaseAccess_t, 2),
M_TYPE (EGPRS_OnePhaseAccess_t, Allocation.DynamicAllocation, DynamicAllocation_t),
CSN_ERROR (EGPRS_OnePhaseAccess_t, "1 <Fixed Allocation>", CSN_ERROR_STREAM_NOT_SUPPORTED),
M_UINT (EGPRS_OnePhaseAccess_t, EGPRS_CHANNEL_CODING_COMMAND, 4),
M_UINT (EGPRS_OnePhaseAccess_t, TLLI_BLOCK_CHANNEL_CODING, 1),
M_NEXT_EXIST (EGPRS_OnePhaseAccess_t, Exist_BEP_PERIOD2, 1),
M_UINT (EGPRS_OnePhaseAccess_t, BEP_PERIOD2, 4),
M_UINT (EGPRS_OnePhaseAccess_t, RESEGMENT, 1),
M_UINT (EGPRS_OnePhaseAccess_t, EGPRS_WindowSize, 5),
M_NEXT_EXIST (EGPRS_OnePhaseAccess_t, Exist_ALPHA, 1),
M_UINT (EGPRS_OnePhaseAccess_t, ALPHA, 4),
M_UINT (EGPRS_OnePhaseAccess_t, GAMMA, 5),
M_NEXT_EXIST (EGPRS_OnePhaseAccess_t, Exist_TIMING_ADVANCE_INDEX, 1),
M_UINT (EGPRS_OnePhaseAccess_t, TIMING_ADVANCE_INDEX, 4),
M_NEXT_EXIST (EGPRS_OnePhaseAccess_t, Exist_TBF_STARTING_TIME, 1),
M_TYPE (EGPRS_OnePhaseAccess_t, TBF_STARTING_TIME, StartingTime_t),
CSN_DESCR_END (EGPRS_OnePhaseAccess_t)
#endif
#if 0
static const
CSN_DESCR_BEGIN(IA_EGPRS_00_t)
M_UINT (IA_EGPRS_00_t, ExtendedRA, 5),
M_REC_ARRAY (IA_EGPRS_00_t, AccessTechnologyType, NrOfAccessTechnologies, 4),
M_UNION (IA_EGPRS_00_t, 2),
M_TYPE (IA_EGPRS_00_t, Access.TwoPhaseAccess, EGPRS_TwoPhaseAccess_t),
M_TYPE (IA_EGPRS_00_t, Access.OnePhaseAccess, EGPRS_OnePhaseAccess_t),
CSN_DESCR_END (IA_EGPRS_00_t)
#endif
#if 0
static const
CSN_ChoiceElement_t IA_EGPRS_Choice[] =
{
{2, 0x00, 0, M_TYPE (IA_EGPRS_t, u.IA_EGPRS_PUA, IA_EGPRS_00_t)},
{2, 0x01, 0, CSN_ERROR(IA_EGPRS_t, "01 <IA_EGPRS>", CSN_ERROR_STREAM_NOT_SUPPORTED)},
{1, 0x01, 0, CSN_ERROR(IA_EGPRS_t, "1 <IA_EGPRS>", CSN_ERROR_STREAM_NOT_SUPPORTED)}
};
#endif
/* Please observe the double usage of UnionType element.
* First, it is used to store the second bit of LL/LH identification of EGPRS contents.
* Thereafter, UnionType will be used to store the index to detected choice.
*/
#if 0
static const
CSN_DESCR_BEGIN(IA_EGPRS_t)
M_UINT (IA_EGPRS_t, UnionType , 1 ),
M_CHOICE (IA_EGPRS_t, UnionType, IA_EGPRS_Choice, ElementsOf(IA_EGPRS_Choice)),
CSN_DESCR_END (IA_EGPRS_t)
static const
CSN_DESCR_BEGIN(IA_FreqParamsBeforeTime_t)
M_UINT (IA_FreqParamsBeforeTime_t, Length, 6),
M_UINT (IA_FreqParamsBeforeTime_t, MAIO, 6),
M_VAR_ARRAY (IA_FreqParamsBeforeTime_t, MobileAllocation, Length, 8),
CSN_DESCR_END (IA_FreqParamsBeforeTime_t)
#endif
#if 0
static const
CSN_DESCR_BEGIN (GPRS_SingleBlockAllocation_t)
M_NEXT_EXIST (GPRS_SingleBlockAllocation_t, Exist_ALPHA, 1),
M_UINT (GPRS_SingleBlockAllocation_t, ALPHA, 4),
M_UINT (GPRS_SingleBlockAllocation_t, GAMMA, 5),
M_FIXED (GPRS_SingleBlockAllocation_t, 2, 0x01),
M_TYPE (GPRS_SingleBlockAllocation_t, TBF_STARTING_TIME, StartingTime_t), /*bit(16)*/
M_NEXT_EXIST_LH(GPRS_SingleBlockAllocation_t, Exist_P0_BTS_PWR_CTRL_PR_MODE, 3),
M_UINT (GPRS_SingleBlockAllocation_t, P0, 4),
M_UINT (GPRS_SingleBlockAllocation_t, BTS_PWR_CTRL_MODE, 1),
M_UINT (GPRS_SingleBlockAllocation_t, PR_MODE, 1),
CSN_DESCR_END (GPRS_SingleBlockAllocation_t)
#endif
#if 0
static const
CSN_DESCR_BEGIN (GPRS_DynamicOrFixedAllocation_t)
M_UINT (GPRS_DynamicOrFixedAllocation_t, TFI_ASSIGNMENT, 5),
M_UINT (GPRS_DynamicOrFixedAllocation_t, POLLING, 1),
M_UNION (GPRS_DynamicOrFixedAllocation_t, 2),
M_TYPE (GPRS_DynamicOrFixedAllocation_t, Allocation.DynamicAllocation, DynamicAllocation_t),
CSN_ERROR (GPRS_DynamicOrFixedAllocation_t, "1 <Fixed Allocation>", CSN_ERROR_STREAM_NOT_SUPPORTED),
M_UINT (GPRS_DynamicOrFixedAllocation_t, CHANNEL_CODING_COMMAND, 2),
M_UINT (GPRS_DynamicOrFixedAllocation_t, TLLI_BLOCK_CHANNEL_CODING, 1),
M_NEXT_EXIST (GPRS_DynamicOrFixedAllocation_t, Exist_ALPHA, 1),
M_UINT (GPRS_DynamicOrFixedAllocation_t, ALPHA, 4),
M_UINT (GPRS_DynamicOrFixedAllocation_t, GAMMA, 5),
M_NEXT_EXIST (GPRS_DynamicOrFixedAllocation_t, Exist_TIMING_ADVANCE_INDEX, 1),
M_UINT (GPRS_DynamicOrFixedAllocation_t, TIMING_ADVANCE_INDEX, 4),
M_NEXT_EXIST (GPRS_DynamicOrFixedAllocation_t, Exist_TBF_STARTING_TIME, 1),
M_TYPE (GPRS_DynamicOrFixedAllocation_t, TBF_STARTING_TIME, StartingTime_t),
CSN_DESCR_END (GPRS_DynamicOrFixedAllocation_t)
#endif
#if 0
static const
CSN_DESCR_BEGIN(PU_IA_AdditionsR99_t)
M_NEXT_EXIST (PU_IA_AdditionsR99_t, Exist_ExtendedRA, 1),
M_UINT (PU_IA_AdditionsR99_t, ExtendedRA, 5),
CSN_DESCR_END (PU_IA_AdditionsR99_t)
#endif
#if 0
static const
CSN_DESCR_BEGIN (Packet_Uplink_ImmAssignment_t)
M_UNION (Packet_Uplink_ImmAssignment_t, 2),
M_TYPE (Packet_Uplink_ImmAssignment_t, Access.SingleBlockAllocation, GPRS_SingleBlockAllocation_t),
M_TYPE (Packet_Uplink_ImmAssignment_t, Access.DynamicOrFixedAllocation, GPRS_DynamicOrFixedAllocation_t),
M_NEXT_EXIST_OR_NULL_LH(Packet_Uplink_ImmAssignment_t, Exist_AdditionsR99, 1),
M_TYPE (Packet_Uplink_ImmAssignment_t, AdditionsR99, PU_IA_AdditionsR99_t),
CSN_DESCR_END (Packet_Uplink_ImmAssignment_t)
#endif
#if 0
static const
CSN_DESCR_BEGIN(PD_IA_AdditionsR99_t)
M_UINT (PD_IA_AdditionsR99_t, EGPRS_WindowSize, 5),
M_UINT (PD_IA_AdditionsR99_t, LINK_QUALITY_MEASUREMENT_MODE, 2),
M_NEXT_EXIST (PD_IA_AdditionsR99_t, Exist_BEP_PERIOD2, 1),
M_UINT (PD_IA_AdditionsR99_t, BEP_PERIOD2, 4),
CSN_DESCR_END (PD_IA_AdditionsR99_t)
#endif
#if 0
static const
CSN_DESCR_BEGIN(Packet_Downlink_ImmAssignment_t)
M_UINT (Packet_Downlink_ImmAssignment_t, TLLI, 32),
M_NEXT_EXIST (Packet_Downlink_ImmAssignment_t, Exist_TFI_to_TA_VALID, 6 + 1),
M_UINT (Packet_Downlink_ImmAssignment_t, TFI_ASSIGNMENT, 5),
M_UINT (Packet_Downlink_ImmAssignment_t, RLC_MODE, 1),
M_NEXT_EXIST (Packet_Downlink_ImmAssignment_t, Exist_ALPHA, 1),
M_UINT (Packet_Downlink_ImmAssignment_t, ALPHA, 4),
M_UINT (Packet_Downlink_ImmAssignment_t, GAMMA, 5),
M_UINT (Packet_Downlink_ImmAssignment_t, POLLING, 1),
M_UINT (Packet_Downlink_ImmAssignment_t, TA_VALID, 1),
M_NEXT_EXIST (Packet_Downlink_ImmAssignment_t, Exist_TIMING_ADVANCE_INDEX, 1),
M_UINT (Packet_Downlink_ImmAssignment_t, TIMING_ADVANCE_INDEX, 4),
M_NEXT_EXIST (Packet_Downlink_ImmAssignment_t, Exist_TBF_STARTING_TIME, 1),
M_TYPE (Packet_Downlink_ImmAssignment_t, TBF_STARTING_TIME, StartingTime_t),
M_NEXT_EXIST (Packet_Downlink_ImmAssignment_t, Exist_P0_PR_MODE, 3),
M_UINT (Packet_Downlink_ImmAssignment_t, P0, 4),
M_UINT (Packet_Downlink_ImmAssignment_t, BTS_PWR_CTRL_MODE, 1),
M_UINT (Packet_Downlink_ImmAssignment_t, PR_MODE, 1),
M_NEXT_EXIST_OR_NULL_LH(Packet_Downlink_ImmAssignment_t, Exist_AdditionsR99, 1),
M_TYPE (Packet_Downlink_ImmAssignment_t, AdditionsR99, PD_IA_AdditionsR99_t),
CSN_DESCR_END (Packet_Downlink_ImmAssignment_t)
#endif
#if 0
static const
CSN_DESCR_BEGIN (Second_Part_Packet_Assignment_t)
M_NEXT_EXIST_OR_NULL_LH(Second_Part_Packet_Assignment_t, Exist_SecondPart, 2),
M_NEXT_EXIST (Second_Part_Packet_Assignment_t, Exist_ExtendedRA, 1),
M_UINT (Second_Part_Packet_Assignment_t, ExtendedRA, 5),
CSN_DESCR_END (Second_Part_Packet_Assignment_t)
#endif
#if 0
static const
CSN_DESCR_BEGIN(IA_PacketAssignment_UL_DL_t)
M_UNION (IA_PacketAssignment_UL_DL_t, 2),
M_TYPE (IA_PacketAssignment_UL_DL_t, ul_dl.Packet_Uplink_ImmAssignment, Packet_Uplink_ImmAssignment_t),
M_TYPE (IA_PacketAssignment_UL_DL_t, ul_dl.Packet_Downlink_ImmAssignment, Packet_Downlink_ImmAssignment_t),
CSN_DESCR_END (IA_PacketAssignment_UL_DL_t)
#endif
#if 0
static const
CSN_DESCR_BEGIN(IA_PacketAssignment_t)
M_UNION (IA_PacketAssignment_t, 2),
M_TYPE (IA_PacketAssignment_t, u.UplinkDownlinkAssignment, IA_PacketAssignment_UL_DL_t),
M_TYPE (IA_PacketAssignment_t, u.UplinkDownlinkAssignment, Second_Part_Packet_Assignment_t),
CSN_DESCR_END (IA_PacketAssignment_t)
#endif
/* <Packet Polling Request> */
static const
CSN_ChoiceElement_t PacketPollingID[] =
{
{1, 0, 0, M_TYPE(PacketPollingID_t, u.Global_TFI, Global_TFI_t)},
{2, 0x02, 0, M_UINT(PacketPollingID_t, u.TLLI, 32)},
{3, 0x06, 0, M_UINT(PacketPollingID_t, u.TQI, 16)},
/*{3, 0x07 , 0, M_TYPE(PacketUplinkID_t, u.Packet_Request_Reference, Packet_Request_Reference_t)},*/
};
static const
CSN_DESCR_BEGIN(PacketPollingID_t)
M_CHOICE (PacketPollingID_t, UnionType, PacketPollingID, ElementsOf(PacketPollingID)),
CSN_DESCR_END (PacketPollingID_t)
static const
CSN_DESCR_BEGIN(Packet_Polling_Request_t)
M_UINT (Packet_Polling_Request_t, MESSAGE_TYPE, 6),
M_UINT (Packet_Polling_Request_t, PAGE_MODE, 2),
M_TYPE (Packet_Polling_Request_t, ID, PacketPollingID_t),
M_UINT (Packet_Polling_Request_t, TYPE_OF_ACK, 1),
M_PADDING_BITS(Packet_Polling_Request_t),
CSN_DESCR_END (Packet_Polling_Request_t)
static const
CSN_DESCR_BEGIN(MobileAllocation_t)
M_UINT_OFFSET(MobileAllocation_t, MA_BitLength, 6, 1),
M_VAR_BITMAP (MobileAllocation_t, MA_BITMAP, MA_BitLength, 0),
CSN_DESCR_END (MobileAllocation_t)
static const
CSN_DESCR_BEGIN(ARFCN_index_list_t)
M_REC_ARRAY (ARFCN_index_list_t, ARFCN_INDEX, ElementsOf_ARFCN_INDEX, 6),
CSN_DESCR_END (ARFCN_index_list_t)
static const
CSN_DESCR_BEGIN(GPRS_Mobile_Allocation_t)
M_UINT (GPRS_Mobile_Allocation_t, HSN, 6),
M_REC_ARRAY (GPRS_Mobile_Allocation_t, RFL_NUMBER, ElementsOf_RFL_NUMBER, 4),
M_UNION (GPRS_Mobile_Allocation_t, 2),
M_TYPE (GPRS_Mobile_Allocation_t, u.MA, MobileAllocation_t),
M_TYPE (GPRS_Mobile_Allocation_t, u.ARFCN_index_list, ARFCN_index_list_t),
CSN_DESCR_END (GPRS_Mobile_Allocation_t)
/*< SI 13 Rest Octets >*/
static const
CSN_DESCR_BEGIN (Extension_Bits_t)
M_UINT_OFFSET (Extension_Bits_t, extension_length, 6, 1),
M_LEFT_VAR_BMP(Extension_Bits_t, Extension_Info, extension_length, 0),
CSN_DESCR_END (Extension_Bits_t)
static const
CSN_DESCR_BEGIN(GPRS_Cell_Options_t)
M_UINT (GPRS_Cell_Options_t, NMO, 2),
M_UINT (GPRS_Cell_Options_t, T3168, 3),
M_UINT (GPRS_Cell_Options_t, T3192, 3),
M_UINT (GPRS_Cell_Options_t, DRX_TIMER_MAX, 3),
M_UINT (GPRS_Cell_Options_t, ACCESS_BURST_TYPE, 1),
M_UINT (GPRS_Cell_Options_t, CONTROL_ACK_TYPE, 1),
M_UINT (GPRS_Cell_Options_t, BS_CV_MAX, 4),
M_NEXT_EXIST (GPRS_Cell_Options_t, Exist_PAN, 3),
M_UINT (GPRS_Cell_Options_t, PAN_DEC, 3),
M_UINT (GPRS_Cell_Options_t, PAN_INC, 3),
M_UINT (GPRS_Cell_Options_t, PAN_MAX, 3),
M_NEXT_EXIST (GPRS_Cell_Options_t, Exist_Extension_Bits, 1),
M_TYPE (GPRS_Cell_Options_t, Extension_Bits, Extension_Bits_t),
CSN_DESCR_END (GPRS_Cell_Options_t)
static const
CSN_DESCR_BEGIN(PBCCH_Not_present_t)
M_UINT (PBCCH_Not_present_t, RAC, 8),
M_UINT (PBCCH_Not_present_t, SPGC_CCCH_SUP, 1),
M_UINT (PBCCH_Not_present_t, PRIORITY_ACCESS_THR, 3),
M_UINT (PBCCH_Not_present_t, NETWORK_CONTROL_ORDER, 2),
M_TYPE (PBCCH_Not_present_t, GPRS_Cell_Options, GPRS_Cell_Options_t),
M_TYPE (PBCCH_Not_present_t, GPRS_Power_Control_Parameters, GPRS_Power_Control_Parameters_t),
CSN_DESCR_END (PBCCH_Not_present_t)
static const
CSN_ChoiceElement_t SI13_PBCCH_Description_Channel[] =
{/* this one is used in SI13*/
{2, 0x00, 0, M_NULL(PBCCH_Description_t, u.dummy, 0)},/*Default to BCCH carrier*/
{2, 0x01, 0, M_UINT(PBCCH_Description_t, u.ARFCN, 10)},
{1, 0x01, 0, M_UINT(PBCCH_Description_t, u.MAIO, 6)},
};
static const
CSN_DESCR_BEGIN(PBCCH_Description_t)/*SI13*/
M_UINT (PBCCH_Description_t, Pb, 4),
M_UINT (PBCCH_Description_t, TSC, 3),
M_UINT (PBCCH_Description_t, TN, 3),
M_CHOICE (PBCCH_Description_t, UnionType, SI13_PBCCH_Description_Channel, ElementsOf(SI13_PBCCH_Description_Channel)),
CSN_DESCR_END (PBCCH_Description_t)
static const
CSN_DESCR_BEGIN(PBCCH_present_t)
M_UINT (PBCCH_present_t, PSI1_REPEAT_PERIOD, 4),
M_TYPE (PBCCH_present_t, PBCCH_Description, PBCCH_Description_t),
CSN_DESCR_END (PBCCH_present_t)
#if 0
static const
CSN_DESCR_BEGIN(SI13_AdditionsR6)
M_NEXT_EXIST (SI13_AdditionsR6, Exist_LB_MS_TXPWR_MAX_CCH, 1),
M_UINT (SI13_AdditionsR6, LB_MS_TXPWR_MAX_CCH, 5),
M_UINT (SI13_AdditionsR6, SI2n_SUPPORT, 2),
CSN_DESCR_END (SI13_AdditionsR6)
#endif
#if 0
static const
CSN_DESCR_BEGIN(SI13_AdditionsR4)
M_UINT (SI13_AdditionsR4, SI_STATUS_IND, 1),
M_NEXT_EXIST_OR_NULL_LH (SI13_AdditionsR4, Exist_AdditionsR6, 1),
M_TYPE (SI13_AdditionsR4, AdditionsR6, SI13_AdditionsR6),
CSN_DESCR_END (SI13_AdditionsR4)
#endif
#if 0
static const
CSN_DESCR_BEGIN(SI13_AdditionR99)
M_UINT (SI13_AdditionR99, SGSNR, 1),
M_NEXT_EXIST_OR_NULL_LH (SI13_AdditionR99, Exist_AdditionsR4, 1),
M_TYPE (SI13_AdditionR99, AdditionsR4, SI13_AdditionsR4),
CSN_DESCR_END (SI13_AdditionR99)
#endif
#if 0
static const
CSN_DESCR_BEGIN (SI_13_t)
M_THIS_EXIST_LH (SI_13_t),
M_UINT (SI_13_t, BCCH_CHANGE_MARK, 3),
M_UINT (SI_13_t, SI_CHANGE_FIELD, 4),
M_NEXT_EXIST (SI_13_t, Exist_MA, 2),
M_UINT (SI_13_t, SI13_CHANGE_MARK, 2),
M_TYPE (SI_13_t, GPRS_Mobile_Allocation, GPRS_Mobile_Allocation_t),
M_UNION (SI_13_t, 2),
M_TYPE (SI_13_t, u.PBCCH_Not_present, PBCCH_Not_present_t),
M_TYPE (SI_13_t, u.PBCCH_present, PBCCH_present_t),
M_NEXT_EXIST_OR_NULL_LH(SI_13_t, Exist_AdditionsR99, 1),
M_TYPE (SI_13_t, AdditionsR99, SI13_AdditionR99),
CSN_DESCR_END (SI_13_t)
#endif
/************************************************************/
/* TS 44.060 messages */
/************************************************************/
/*< Packet TBF Release message content >*/
static const
CSN_DESCR_BEGIN(Packet_TBF_Release_t)
M_UINT (Packet_TBF_Release_t, MESSAGE_TYPE, 6),
M_UINT (Packet_TBF_Release_t, PAGE_MODE, 2),
M_FIXED (Packet_TBF_Release_t, 1, 0x00),
M_TYPE (Packet_TBF_Release_t, Global_TFI, Global_TFI_t),
M_UINT (Packet_TBF_Release_t, UPLINK_RELEASE, 1),
M_UINT (Packet_TBF_Release_t, DOWNLINK_RELEASE, 1),
M_UINT (Packet_TBF_Release_t, TBF_RELEASE_CAUSE, 4),
M_PADDING_BITS(Packet_TBF_Release_t ),
CSN_DESCR_END (Packet_TBF_Release_t)
/*< Packet Control Acknowledgement message content >*/
static const
CSN_DESCR_BEGIN (Packet_Control_Acknowledgement_AdditionsR6_t)
M_NEXT_EXIST (Packet_Control_Acknowledgement_AdditionsR6_t, Exist_CTRL_ACK_Extension, 1),
M_UINT (Packet_Control_Acknowledgement_AdditionsR6_t, CTRL_ACK_Extension, 9),
CSN_DESCR_END (Packet_Control_Acknowledgement_AdditionsR6_t)
static const
CSN_DESCR_BEGIN (Packet_Control_Acknowledgement_AdditionsR5_t)
M_NEXT_EXIST (Packet_Control_Acknowledgement_AdditionsR5_t, Exist_TN_RRBP, 1),
M_UINT (Packet_Control_Acknowledgement_AdditionsR5_t, TN_RRBP, 3),
M_NEXT_EXIST (Packet_Control_Acknowledgement_AdditionsR5_t, Exist_G_RNTI_Extension, 1),
M_UINT (Packet_Control_Acknowledgement_AdditionsR5_t, G_RNTI_Extension, 4),
M_NEXT_EXIST_OR_NULL (Packet_Control_Acknowledgement_AdditionsR5_t, Exist_AdditionsR6, 1),
M_TYPE (Packet_Control_Acknowledgement_AdditionsR5_t, AdditionsR6, Packet_Control_Acknowledgement_AdditionsR6_t),
CSN_DESCR_END (Packet_Control_Acknowledgement_AdditionsR5_t)
static const
CSN_DESCR_BEGIN (Packet_Control_Acknowledgement_t)
M_UINT (Packet_Control_Acknowledgement_t, PayloadType, 2),
M_UINT (Packet_Control_Acknowledgement_t, spare, 5),
M_BIT (Packet_Control_Acknowledgement_t, R),
M_UINT (Packet_Control_Acknowledgement_t, MESSAGE_TYPE, 6),
M_UINT (Packet_Control_Acknowledgement_t, TLLI, 32),
M_UINT (Packet_Control_Acknowledgement_t, CTRL_ACK, 2),
M_NEXT_EXIST_OR_NULL (Packet_Control_Acknowledgement_t, Exist_AdditionsR5, 1),
M_TYPE (Packet_Control_Acknowledgement_t, AdditionsR5, Packet_Control_Acknowledgement_AdditionsR5_t),
M_PADDING_BITS (Packet_Control_Acknowledgement_t),
CSN_DESCR_END (Packet_Control_Acknowledgement_t)
/*< Packet Downlink Dummy Control Block message content >*/
static const
CSN_DESCR_BEGIN(Packet_Downlink_Dummy_Control_Block_t)
M_UINT (Packet_Downlink_Dummy_Control_Block_t, MESSAGE_TYPE, 6),
M_UINT (Packet_Downlink_Dummy_Control_Block_t, PAGE_MODE, 2),
M_NEXT_EXIST (Packet_Downlink_Dummy_Control_Block_t, Exist_PERSISTENCE_LEVEL, 1),
M_UINT_ARRAY (Packet_Downlink_Dummy_Control_Block_t, PERSISTENCE_LEVEL, 4, 4),
M_PADDING_BITS(Packet_Downlink_Dummy_Control_Block_t ),
CSN_DESCR_END (Packet_Downlink_Dummy_Control_Block_t)
/*< Packet Uplink Dummy Control Block message content >*/
static const
CSN_DESCR_BEGIN(Packet_Uplink_Dummy_Control_Block_t)
M_UINT (Packet_Uplink_Dummy_Control_Block_t, PayloadType, 2),
M_UINT (Packet_Uplink_Dummy_Control_Block_t, spare, 5),
M_BIT (Packet_Uplink_Dummy_Control_Block_t, R),
M_UINT (Packet_Uplink_Dummy_Control_Block_t, MESSAGE_TYPE, 6),
M_UINT (Packet_Uplink_Dummy_Control_Block_t, TLLI, 32),
/*M_FIXED (Packet_Uplink_Dummy_Control_Block_t, 1, 0),*/
M_PADDING_BITS(Packet_Uplink_Dummy_Control_Block_t),
CSN_DESCR_END (Packet_Uplink_Dummy_Control_Block_t)
#if 0
static const
CSN_DESCR_BEGIN(Receive_N_PDU_Number_t)
M_UINT (Receive_N_PDU_Number_t, nsapi, 4),
M_UINT (Receive_N_PDU_Number_t, value, 8),
CSN_DESCR_END (Receive_N_PDU_Number_t)
#endif
#if 0
gint16 Receive_N_PDU_Number_list_Dissector(csnStream_t* ar, struct bitvec *vector, unsigned *readIndex, void* data)
{
if (ar->direction == 0)
{
return csnStreamEncoder(ar, CSNDESCR(Receive_N_PDU_Number_t), vector, readIndex, data);
}
else
{
return csnStreamDecoder(ar, CSNDESCR(Receive_N_PDU_Number_t), vector, readIndex, data);
}
}
#endif
#if 0
static const
CSN_DESCR_BEGIN(Receive_N_PDU_Number_list_t)
M_SERIALIZE (Receive_N_PDU_Number_list_t, IEI, 7, Receive_N_PDU_Number_list_Dissector),
M_VAR_TARRAY (Receive_N_PDU_Number_list_t, Receive_N_PDU_Number, Receive_N_PDU_Number_t, Count_Receive_N_PDU_Number),
CSN_DESCR_END (Receive_N_PDU_Number_list_t)
#endif
/*< MS Radio Access capability IE >*/
static const
CSN_DESCR_BEGIN (DTM_EGPRS_t)
M_NEXT_EXIST (DTM_EGPRS_t, Exist_DTM_EGPRS_multislot_class, 1),
M_UINT (DTM_EGPRS_t, DTM_EGPRS_multislot_class, 2),
CSN_DESCR_END (DTM_EGPRS_t)
static const
CSN_DESCR_BEGIN (DTM_EGPRS_HighMultislotClass_t)
M_NEXT_EXIST (DTM_EGPRS_HighMultislotClass_t, Exist_DTM_EGPRS_HighMultislotClass, 1),
M_UINT (DTM_EGPRS_HighMultislotClass_t, DTM_EGPRS_HighMultislotClass, 3),
CSN_DESCR_END (DTM_EGPRS_HighMultislotClass_t)
static const
CSN_DESCR_BEGIN (DownlinkDualCarrierCapability_r7_t)
M_UINT (DownlinkDualCarrierCapability_r7_t, MultislotCapabilityReductionForDL_DualCarrier, 3),
M_UINT (DownlinkDualCarrierCapability_r7_t, DL_DualCarrierForDTM, 1),
CSN_DESCR_END (DownlinkDualCarrierCapability_r7_t)
static const
CSN_DESCR_BEGIN (Multislot_capability_t)
M_NEXT_EXIST_OR_NULL(Multislot_capability_t, Exist_HSCSD_multislot_class, 1),
M_UINT (Multislot_capability_t, HSCSD_multislot_class, 5),
M_NEXT_EXIST_OR_NULL(Multislot_capability_t, Exist_GPRS_multislot_class, 2),
M_UINT (Multislot_capability_t, GPRS_multislot_class, 5),
M_UINT (Multislot_capability_t, GPRS_Extended_Dynamic_Allocation_Capability, 1),
M_NEXT_EXIST_OR_NULL(Multislot_capability_t, Exist_SM, 2),
M_UINT (Multislot_capability_t, SMS_VALUE, 4),
M_UINT (Multislot_capability_t, SM_VALUE, 4),
M_NEXT_EXIST_OR_NULL(Multislot_capability_t, Exist_ECSD_multislot_class, 1),
M_UINT (Multislot_capability_t, ECSD_multislot_class, 5),
M_NEXT_EXIST_OR_NULL(Multislot_capability_t, Exist_EGPRS_multislot_class, 2),
M_UINT (Multislot_capability_t, EGPRS_multislot_class, 5),
M_UINT (Multislot_capability_t, EGPRS_Extended_Dynamic_Allocation_Capability, 1),
M_NEXT_EXIST_OR_NULL(Multislot_capability_t, Exist_DTM_GPRS_multislot_class, 3),
M_UINT (Multislot_capability_t, DTM_GPRS_multislot_class, 2),
M_UINT (Multislot_capability_t, Single_Slot_DTM, 1),
M_TYPE (Multislot_capability_t, DTM_EGPRS_Params, DTM_EGPRS_t),
CSN_DESCR_END (Multislot_capability_t)
static const
CSN_DESCR_BEGIN (Content_t)
M_UINT (Content_t, RF_Power_Capability, 3),
M_NEXT_EXIST_OR_NULL(Content_t, Exist_A5_bits, 1),
M_UINT_OR_NULL (Content_t, A5_bits, 7),
M_UINT_OR_NULL (Content_t, ES_IND, 1),
M_UINT_OR_NULL (Content_t, PS, 1),
M_UINT_OR_NULL (Content_t, VGCS, 1),
M_UINT_OR_NULL (Content_t, VBS, 1),
M_NEXT_EXIST_OR_NULL(Content_t, Exist_Multislot_capability, 1),
M_TYPE (Content_t, Multislot_capability, Multislot_capability_t),
M_NEXT_EXIST_OR_NULL(Content_t, Exist_Eight_PSK_Power_Capability, 1),
M_UINT (Content_t, Eight_PSK_Power_Capability, 2),
M_UINT_OR_NULL (Content_t, COMPACT_Interference_Measurement_Capability, 1),
M_UINT_OR_NULL (Content_t, Revision_Level_Indicator, 1),
M_UINT_OR_NULL (Content_t, UMTS_FDD_Radio_Access_Technology_Capability, 1),
M_UINT_OR_NULL (Content_t, UMTS_384_TDD_Radio_Access_Technology_Capability, 1),
M_UINT_OR_NULL (Content_t, CDMA2000_Radio_Access_Technology_Capability, 1),
M_UINT_OR_NULL (Content_t, UMTS_128_TDD_Radio_Access_Technology_Capability, 1),
M_UINT_OR_NULL (Content_t, GERAN_Feature_Package_1, 1),
M_NEXT_EXIST_OR_NULL(Content_t, Exist_Extended_DTM_multislot_class, 2),
M_UINT (Content_t, Extended_DTM_GPRS_multislot_class, 2),
M_UINT (Content_t, Extended_DTM_EGPRS_multislot_class, 2),
M_UINT_OR_NULL (Content_t, Modulation_based_multislot_class_support, 1),
M_NEXT_EXIST_OR_NULL(Content_t, Exist_HighMultislotCapability, 1),
M_UINT (Content_t, HighMultislotCapability, 2),
M_NEXT_EXIST_OR_NULL(Content_t, Exist_GERAN_lu_ModeCapability, 1),
M_UINT (Content_t, GERAN_lu_ModeCapability, 4),
M_UINT_OR_NULL (Content_t, GMSK_MultislotPowerProfile, 2),
M_UINT_OR_NULL (Content_t, EightPSK_MultislotProfile, 2),
M_UINT_OR_NULL (Content_t, MultipleTBF_Capability, 1),
M_UINT_OR_NULL (Content_t, DownlinkAdvancedReceiverPerformance, 2),
M_UINT_OR_NULL (Content_t, ExtendedRLC_MAC_ControlMessageSegmentionsCapability, 1),
M_UINT_OR_NULL (Content_t, DTM_EnhancementsCapability, 1),
M_NEXT_EXIST_OR_NULL(Content_t, Exist_DTM_GPRS_HighMultislotClass, 2),
M_UINT (Content_t, DTM_GPRS_HighMultislotClass, 3),
M_TYPE (Content_t, DTM_EGPRS_HighMultislotClass, DTM_EGPRS_HighMultislotClass_t),
M_UINT_OR_NULL (Content_t, PS_HandoverCapability, 1),
/* additions in release 7 */
M_UINT_OR_NULL (Content_t, DTM_Handover_Capability, 1),
M_NEXT_EXIST_OR_NULL(Content_t, Exist_DownlinkDualCarrierCapability_r7, 1),
M_TYPE_OR_NULL (Content_t, DownlinkDualCarrierCapability_r7, DownlinkDualCarrierCapability_r7_t),
M_UINT_OR_NULL (Content_t, FlexibleTimeslotAssignment, 1),
M_UINT_OR_NULL (Content_t, GAN_PS_HandoverCapability, 1),
M_UINT_OR_NULL (Content_t, RLC_Non_persistentMode, 1),
M_UINT_OR_NULL (Content_t, ReducedLatencyCapability, 1),
M_UINT_OR_NULL (Content_t, UplinkEGPRS2, 2),
M_UINT_OR_NULL (Content_t, DownlinkEGPRS2, 2),
/* additions in release 8 */
M_UINT_OR_NULL (Content_t, EUTRA_FDD_Support, 1),
M_UINT_OR_NULL (Content_t, EUTRA_TDD_Support, 1),
M_UINT_OR_NULL (Content_t, GERAN_To_EUTRAN_supportInGERAN_PTM, 2),
M_UINT_OR_NULL (Content_t, PriorityBasedReselectionSupport, 1),
CSN_DESCR_END (Content_t)
gint16 Content_Dissector(csnStream_t* ar, struct bitvec *vector, unsigned *readIndex, void* data)
{
if (ar->direction == 0)
{
return csnStreamEncoder(ar, CSNDESCR(Content_t), vector, readIndex, data);
}
else
{
return csnStreamDecoder(ar, CSNDESCR(Content_t), vector, readIndex, data);
}
}
static const
CSN_DESCR_BEGIN (Additional_access_technologies_struct_t)
M_UINT (Additional_access_technologies_struct_t, Access_Technology_Type, 4),
M_UINT (Additional_access_technologies_struct_t, GMSK_Power_class, 3),
M_UINT (Additional_access_technologies_struct_t, Eight_PSK_Power_class, 2),
CSN_DESCR_END (Additional_access_technologies_struct_t)
static const
CSN_DESCR_BEGIN (Additional_access_technologies_t)
M_REC_TARRAY (Additional_access_technologies_t, Additional_access_technologies, Additional_access_technologies_struct_t, Count_additional_access_technologies),
CSN_DESCR_END (Additional_access_technologies_t)
static gint16 Additional_access_technologies_Dissector(csnStream_t* ar, struct bitvec *vector, unsigned *readIndex, void* data)
{
if (ar->direction == 0)
{
return csnStreamEncoder(ar, CSNDESCR(Additional_access_technologies_t), vector, readIndex, data);
}
else
{
return csnStreamDecoder(ar, CSNDESCR(Additional_access_technologies_t), vector, readIndex, data);
}
}
static const
CSN_ChoiceElement_t MS_RA_capability_value_Choice[] =
{
{4, AccTech_GSMP, 0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
{4, AccTech_GSME, 0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
{4, AccTech_GSMR, 0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
{4, AccTech_GSM1800, 0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
{4, AccTech_GSM1900, 0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
{4, AccTech_GSM450, 0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
{4, AccTech_GSM480, 0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
{4, AccTech_GSM850, 0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
{4, AccTech_GSM750, 0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
{4, AccTech_GSMT830, 0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
{4, AccTech_GSMT410, 0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
{4, AccTech_GSMT900, 0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
{4, AccTech_GSM710, 0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
{4, AccTech_GSMT810, 0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
{4, AccTech_GSMOther, 0, M_SERIALIZE (MS_RA_capability_value_t, u.Additional_access_technologies, 7, Additional_access_technologies_Dissector)}, /* Short Form */
};
static const
CSN_DESCR_BEGIN(MS_RA_capability_value_t)
M_CHOICE (MS_RA_capability_value_t, IndexOfAccTech, MS_RA_capability_value_Choice, ElementsOf(MS_RA_capability_value_Choice)),
CSN_DESCR_END (MS_RA_capability_value_t)
static const
CSN_DESCR_BEGIN (MS_Radio_Access_capability_t)
M_REC_TARRAY_1(MS_Radio_Access_capability_t, MS_RA_capability_value, MS_RA_capability_value_t, Count_MS_RA_capability_value),
M_PADDING_BITS(MS_Radio_Access_capability_t),
CSN_DESCR_END (MS_Radio_Access_capability_t)
/* TS44.060 section 12.30 "MS Radio Access Capability 2". Same as above but without spare bits */
static const
CSN_DESCR_BEGIN (MS_Radio_Access_capability2_t)
M_REC_TARRAY_1(MS_Radio_Access_capability_t, MS_RA_capability_value, MS_RA_capability_value_t, Count_MS_RA_capability_value),
CSN_DESCR_END (MS_Radio_Access_capability2_t)
/*< MS Classmark 3 IE >*/
#if 0
static const
CSN_DESCR_BEGIN(ARC_t)
M_UINT (ARC_t, A5_Bits, 4),
M_UINT (ARC_t, Arc2_Spare, 4),
M_UINT (ARC_t, Arc1, 4),
CSN_DESCR_END (ARC_t)
#endif
#if 0
static const
CSN_ChoiceElement_t MultibandChoice[] =
{
{3, 0x00, 0, M_UINT(Multiband_t, u.A5_Bits, 4)},
{3, 0x05, 0, M_TYPE(Multiband_t, u.ARC, ARC_t)},
{3, 0x06, 0, M_TYPE(Multiband_t, u.ARC, ARC_t)},
{3, 0x01, 0, M_TYPE(Multiband_t, u.ARC, ARC_t)},
{3, 0x02, 0, M_TYPE(Multiband_t, u.ARC, ARC_t)},
{3, 0x04, 0, M_TYPE(Multiband_t, u.ARC, ARC_t)},
};
#endif
#if 0
static const
CSN_DESCR_BEGIN(Multiband_t)
M_CHOICE (Multiband_t, Multiband, MultibandChoice, ElementsOf(MultibandChoice)),
CSN_DESCR_END (Multiband_t)
#endif
#if 0
static const
CSN_DESCR_BEGIN(EDGE_RF_Pwr_t)
M_NEXT_EXIST (EDGE_RF_Pwr_t, ExistEDGE_RF_PwrCap1, 1),
M_UINT (EDGE_RF_Pwr_t, EDGE_RF_PwrCap1, 2),
M_NEXT_EXIST (EDGE_RF_Pwr_t, ExistEDGE_RF_PwrCap2, 1),
M_UINT (EDGE_RF_Pwr_t, EDGE_RF_PwrCap2, 2),
CSN_DESCR_END (EDGE_RF_Pwr_t)
#endif
#if 0
static const
CSN_DESCR_BEGIN(MS_Class3_Unpacked_t)
M_UINT (MS_Class3_Unpacked_t, Spare1, 1),
M_TYPE (MS_Class3_Unpacked_t, Multiband, Multiband_t),
M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_R_Support, 1),
M_UINT (MS_Class3_Unpacked_t, R_GSM_Arc, 3),
M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_MultiSlotCapability, 1),
M_UINT (MS_Class3_Unpacked_t, MultiSlotClass, 5),
M_UINT (MS_Class3_Unpacked_t, UCS2, 1),
M_UINT (MS_Class3_Unpacked_t, ExtendedMeasurementCapability, 1),
M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_MS_MeasurementCapability, 2),
M_UINT (MS_Class3_Unpacked_t, SMS_VALUE, 4),
M_UINT (MS_Class3_Unpacked_t, SM_VALUE, 4),
M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_MS_PositioningMethodCapability, 1),
M_UINT (MS_Class3_Unpacked_t, MS_PositioningMethod, 5),
M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_EDGE_MultiSlotCapability, 1),
M_UINT (MS_Class3_Unpacked_t, EDGE_MultiSlotClass, 5),
M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_EDGE_Struct, 2),
M_UINT (MS_Class3_Unpacked_t, ModulationCapability, 1),
M_TYPE (MS_Class3_Unpacked_t, EDGE_RF_PwrCaps, EDGE_RF_Pwr_t),
M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_GSM400_Info, 2),
M_UINT (MS_Class3_Unpacked_t, GSM400_Bands, 2),
M_UINT (MS_Class3_Unpacked_t, GSM400_Arc, 4),
M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_GSM850_Arc, 1),
M_UINT (MS_Class3_Unpacked_t, GSM850_Arc, 4),
M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_PCS1900_Arc, 1),
M_UINT (MS_Class3_Unpacked_t, PCS1900_Arc, 4),
M_UINT (MS_Class3_Unpacked_t, UMTS_FDD_Radio_Access_Technology_Capability, 1),
M_UINT (MS_Class3_Unpacked_t, UMTS_384_TDD_Radio_Access_Technology_Capability, 1),
M_UINT (MS_Class3_Unpacked_t, CDMA2000_Radio_Access_Technology_Capability, 1),
M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_DTM_GPRS_multislot_class, 3),
M_UINT (MS_Class3_Unpacked_t, DTM_GPRS_multislot_class, 2),
M_UINT (MS_Class3_Unpacked_t, Single_Slot_DTM, 1),
M_TYPE (MS_Class3_Unpacked_t, DTM_EGPRS_Params, DTM_EGPRS_t),
M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_SingleBandSupport, 1),
M_UINT (MS_Class3_Unpacked_t, GSM_Band, 4),
M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_GSM_700_Associated_Radio_Capability, 1),
M_UINT (MS_Class3_Unpacked_t, GSM_700_Associated_Radio_Capability, 4),
M_UINT (MS_Class3_Unpacked_t, UMTS_128_TDD_Radio_Access_Technology_Capability, 1),
M_UINT (MS_Class3_Unpacked_t, GERAN_Feature_Package_1, 1),
M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_Extended_DTM_multislot_class, 2),
M_UINT (MS_Class3_Unpacked_t, Extended_DTM_GPRS_multislot_class, 2),
M_UINT (MS_Class3_Unpacked_t, Extended_DTM_EGPRS_multislot_class, 2),
M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_HighMultislotCapability, 1),
M_UINT (MS_Class3_Unpacked_t, HighMultislotCapability, 2),
M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_GERAN_lu_ModeCapability, 1),
M_UINT (MS_Class3_Unpacked_t, GERAN_lu_ModeCapability, 4),
M_UINT (MS_Class3_Unpacked_t, GERAN_FeaturePackage_2, 1),
M_UINT (MS_Class3_Unpacked_t, GMSK_MultislotPowerProfile, 2),
M_UINT (MS_Class3_Unpacked_t, EightPSK_MultislotProfile, 2),
M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_TGSM_400_Bands, 2),
M_UINT (MS_Class3_Unpacked_t, TGSM_400_BandsSupported, 2),
M_UINT (MS_Class3_Unpacked_t, TGSM_400_AssociatedRadioCapability, 4),
M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_TGSM_900_AssociatedRadioCapability, 1),
M_UINT (MS_Class3_Unpacked_t, TGSM_900_AssociatedRadioCapability, 4),
M_UINT (MS_Class3_Unpacked_t, DownlinkAdvancedReceiverPerformance, 2),
M_UINT (MS_Class3_Unpacked_t, DTM_EnhancementsCapability, 1),
M_NEXT_EXIST (MS_Class3_Unpacked_t, Exist_DTM_GPRS_HighMultislotClass, 3),
M_UINT (MS_Class3_Unpacked_t, DTM_GPRS_HighMultislotClass, 3),
M_UINT (MS_Class3_Unpacked_t, OffsetRequired, 1),
M_TYPE (MS_Class3_Unpacked_t, DTM_EGPRS_HighMultislotClass, DTM_EGPRS_HighMultislotClass_t),
M_UINT (MS_Class3_Unpacked_t, RepeatedSACCH_Capability, 1),
M_UINT (MS_Class3_Unpacked_t, Spare2, 1),
CSN_DESCR_END (MS_Class3_Unpacked_t)
#endif
static const
CSN_DESCR_BEGIN(Channel_Request_Description_t)
M_UINT (Channel_Request_Description_t, PEAK_THROUGHPUT_CLASS, 4),
M_UINT (Channel_Request_Description_t, RADIO_PRIORITY, 2),
M_UINT (Channel_Request_Description_t, RLC_MODE, 1),
M_UINT (Channel_Request_Description_t, LLC_PDU_TYPE, 1),
M_UINT (Channel_Request_Description_t, RLC_OCTET_COUNT, 16),
CSN_DESCR_END (Channel_Request_Description_t)
/* < Packet Resource Request message content > */
static const
CSN_ChoiceElement_t PacketResourceRequestID[] =
{
{1, 0, 0, M_TYPE(PacketResourceRequestID_t, u.Global_TFI, Global_TFI_t)},
{1, 0x01, 0, M_UINT(PacketResourceRequestID_t, u.TLLI, 32)},
};
static const
CSN_DESCR_BEGIN(PacketResourceRequestID_t)
M_CHOICE (PacketResourceRequestID_t, UnionType, PacketResourceRequestID, ElementsOf(PacketResourceRequestID)),
CSN_DESCR_END (PacketResourceRequestID_t)
static const
CSN_DESCR_BEGIN(BEP_MeasurementReport_t)
M_NEXT_EXIST (BEP_MeasurementReport_t, Exist, 3),
M_UNION (BEP_MeasurementReport_t, 2),
M_UINT (BEP_MeasurementReport_t, u.MEAN_BEP_GMSK, 4),
M_UINT (BEP_MeasurementReport_t, u.MEAN_BEP_8PSK, 4),
CSN_DESCR_END (BEP_MeasurementReport_t)
static const
CSN_DESCR_BEGIN(InterferenceMeasurementReport_t)
M_NEXT_EXIST (InterferenceMeasurementReport_t, Exist, 1),
M_UINT (InterferenceMeasurementReport_t, I_LEVEL, 4),
CSN_DESCR_END (InterferenceMeasurementReport_t)
static const
CSN_DESCR_BEGIN(EGPRS_TimeslotLinkQualityMeasurements_t)
M_NEXT_EXIST (EGPRS_TimeslotLinkQualityMeasurements_t, Exist_BEP_MEASUREMENTS, 1),
M_TYPE_ARRAY (EGPRS_TimeslotLinkQualityMeasurements_t, BEP_MEASUREMENTS, BEP_MeasurementReport_t, 8),
M_NEXT_EXIST (EGPRS_TimeslotLinkQualityMeasurements_t, Exist_INTERFERENCE_MEASUREMENTS, 1),
M_TYPE_ARRAY (EGPRS_TimeslotLinkQualityMeasurements_t, INTERFERENCE_MEASUREMENTS, InterferenceMeasurementReport_t, 8),
CSN_DESCR_END (EGPRS_TimeslotLinkQualityMeasurements_t)
static const
CSN_DESCR_BEGIN(EGPRS_BEP_LinkQualityMeasurements_t)
M_NEXT_EXIST (EGPRS_BEP_LinkQualityMeasurements_t, Exist_MEAN_CV_BEP_GMSK, 2),
M_UINT (EGPRS_BEP_LinkQualityMeasurements_t, MEAN_BEP_GMSK, 5),
M_UINT (EGPRS_BEP_LinkQualityMeasurements_t, CV_BEP_GMSK, 3),
M_NEXT_EXIST (EGPRS_BEP_LinkQualityMeasurements_t, Exist_MEAN_CV_BEP_8PSK, 2),
M_UINT (EGPRS_BEP_LinkQualityMeasurements_t, MEAN_BEP_8PSK, 5),
M_UINT (EGPRS_BEP_LinkQualityMeasurements_t, CV_BEP_8PSK, 3),
CSN_DESCR_END (EGPRS_BEP_LinkQualityMeasurements_t)
static const
CSN_DESCR_BEGIN(IU_Mode_Channel_Request_Desk_t)
M_UINT (IU_Mode_Channel_Request_Desk_t, RB_ID, 5),
M_UINT (IU_Mode_Channel_Request_Desk_t, RADIO_PRIORITY, 2),
M_NEXT_EXIST (IU_Mode_Channel_Request_Desk_t, Exist_RLC_BLOCK_COUNT, 1),
M_UINT (IU_Mode_Channel_Request_Desk_t, RLC_BLOCK_COUNT, 8),
/* Don't use M_REC_TARRAY as we don't support multiple TBFs
M_NEXT_EXIST (IU_Mode_Channel_Request_Desk_t, Exist_Iu_Mode_ChRequestDesk, 1),
M_TYPE (IU_Mode_Channel_Request_Desk1, IU_Mode_Channel_Request_Desk_t),*/
M_UINT (IU_Mode_Channel_Request_Desk_t, Exist_Iu_Mode_ChRequestDesk, 1),
CSN_DESCR_END (IU_Mode_Channel_Request_Desk_t)
static const
CSN_DESCR_BEGIN(IU_Mode_Channel_Request_Desk_RNTI_t)
M_NEXT_EXIST (IU_Mode_Channel_Request_Desk_RNTI_t, Exist_G_RNTI_Extension, 1),
M_UINT (IU_Mode_Channel_Request_Desk_RNTI_t, G_RNTI_Extension, 4),
M_TYPE (IU_Mode_Channel_Request_Desk_RNTI_t, IU_Mode_Channel_Request_Desk, IU_Mode_Channel_Request_Desk_t),
CSN_DESCR_END (IU_Mode_Channel_Request_Desk_RNTI_t)
static const
CSN_DESCR_BEGIN(Ext_Channel_Request_desc_t)
M_UINT (Ext_Channel_Request_desc_t, PFI, 7),
M_UINT (Ext_Channel_Request_desc_t, RADIO_PRIORITY, 2),
M_UINT (Ext_Channel_Request_desc_t, RLC_Mode, 1),
M_NEXT_EXIST (Ext_Channel_Request_desc_t, Exist_LCC_PDU, 1),
M_UINT (Ext_Channel_Request_desc_t, LCC_PDU, 1),
/* Don't use M_REC_TARRAY as we don't support multiple TBFs
M_NEXT_EXIST (Ext_Channel_Request_desc_t, Exist_Ext_Channel_Request_desc, 1),
M_TYPE (Ext_Channel_Request_desc_t, Ext_Channel_Request_desc, Ext_Channel_Request_desc_t),*/
M_UINT (Ext_Channel_Request_desc_t, Exist_Ext_Channel_Request_desc, 1),
CSN_DESCR_END (Ext_Channel_Request_desc_t)
static const
CSN_DESCR_BEGIN(EGPRS_BEP_LinkQualityMeasurements_type2_t)
M_NEXT_EXIST (EGPRS_BEP_LinkQualityMeasurements_type2_t, Exist_GMSK_MEAN_BEP, 1),
M_UINT (EGPRS_BEP_LinkQualityMeasurements_type2_t, GMSK_MEAN_BEP, 5),
M_UINT (EGPRS_BEP_LinkQualityMeasurements_type2_t, GMSK_CV_BEP, 3),
M_NEXT_EXIST (EGPRS_BEP_LinkQualityMeasurements_type2_t, Exist_8PSK_MEAN_BEP, 1),
M_UINT (EGPRS_BEP_LinkQualityMeasurements_type2_t, p8PSK_MEAN_BEP, 5),
M_UINT (EGPRS_BEP_LinkQualityMeasurements_type2_t, p8PSK_CV_BEP, 3),
M_NEXT_EXIST (EGPRS_BEP_LinkQualityMeasurements_type2_t, Exist_QPSK_MEAN_BEP, 1),
M_UINT (EGPRS_BEP_LinkQualityMeasurements_type2_t, QPSK_MEAN_BEP, 5),
M_UINT (EGPRS_BEP_LinkQualityMeasurements_type2_t, QPSK_CV_BEP, 3),
M_NEXT_EXIST (EGPRS_BEP_LinkQualityMeasurements_type2_t, Exist_16QAM_NSR_MEAN_BEP, 1),
M_UINT (EGPRS_BEP_LinkQualityMeasurements_type2_t, p16QAM_NSR_MEAN_BEP, 5),
M_UINT (EGPRS_BEP_LinkQualityMeasurements_type2_t, p16QAM_NSR_CV_BEP, 3),
M_NEXT_EXIST (EGPRS_BEP_LinkQualityMeasurements_type2_t, Exist_32QAM_NSR_MEAN_BEP, 1),
M_UINT (EGPRS_BEP_LinkQualityMeasurements_type2_t, p32QAM_NSR_MEAN_BEP, 5),
M_UINT (EGPRS_BEP_LinkQualityMeasurements_type2_t, p32QAM_NSR_CV_BEP, 3),
M_NEXT_EXIST (EGPRS_BEP_LinkQualityMeasurements_type2_t, Exist_16QAM_HSR_MEAN_BEP, 1),
M_UINT (EGPRS_BEP_LinkQualityMeasurements_type2_t, p16QAM_HSR_MEAN_BEP, 5),
M_UINT (EGPRS_BEP_LinkQualityMeasurements_type2_t, p16QAM_HSR_CV_BEP, 3),
M_NEXT_EXIST (EGPRS_BEP_LinkQualityMeasurements_type2_t, Exist_32QAM_HSR_MEAN_BEP, 1),
M_UINT (EGPRS_BEP_LinkQualityMeasurements_type2_t, p32QAM_HSR_MEAN_BEP, 5),
M_UINT (EGPRS_BEP_LinkQualityMeasurements_type2_t, p32QAM_HSR_CV_BEP, 3),
CSN_DESCR_END (EGPRS_BEP_LinkQualityMeasurements_type2_t)
static const
CSN_DESCR_BEGIN(BEP_MeasurementReport_type2_t)
M_NEXT_EXIST (BEP_MeasurementReport_type2_t, Exist, 1),
M_UINT (BEP_MeasurementReport_type2_t, REPORTED_MODULATION, 2),
M_UINT (BEP_MeasurementReport_type2_t, MEAN_BEP_TN, 4),
CSN_DESCR_END (BEP_MeasurementReport_type2_t)
static const
CSN_DESCR_BEGIN(InterferenceMeasurementReport_type2_t)
M_NEXT_EXIST (InterferenceMeasurementReport_type2_t, Exist, 1),
M_UINT (InterferenceMeasurementReport_type2_t, I_LEVEL, 4),
CSN_DESCR_END (InterferenceMeasurementReport_type2_t)
static const
CSN_DESCR_BEGIN(EGPRS_TimeslotLinkQualityMeasurements_type2_t)
M_NEXT_EXIST (EGPRS_TimeslotLinkQualityMeasurements_type2_t, Exist_BEP_MEASUREMENTS, 1),
M_TYPE_ARRAY (EGPRS_TimeslotLinkQualityMeasurements_type2_t, BEP_MEASUREMENTS, BEP_MeasurementReport_type2_t, 8),
M_NEXT_EXIST (EGPRS_TimeslotLinkQualityMeasurements_type2_t, Exist_INTERFERENCE_MEASUREMENTS, 1),
M_TYPE_ARRAY (EGPRS_TimeslotLinkQualityMeasurements_type2_t, INTERFERENCE_MEASUREMENTS, InterferenceMeasurementReport_type2_t, 8),
CSN_DESCR_END (EGPRS_TimeslotLinkQualityMeasurements_type2_t)
static const
CSN_DESCR_BEGIN(PRR_AdditionsR12_t)
M_NEXT_EXIST (PRR_AdditionsR12_t, Exist_Downlink_eTFI, 1),
M_UINT (PRR_AdditionsR12_t, DOWNLINK_ETFI, 3),
CSN_DESCR_END (PRR_AdditionsR12_t)
static const
CSN_DESCR_BEGIN(PRR_AdditionsR10_t)
M_UINT (PRR_AdditionsR10_t, LOW_ACCESS_PRIORITY_SIGNALLING, 1),
M_NEXT_EXIST_OR_NULL(PRR_AdditionsR10_t, Exist_AdditionsR12, 1),
M_TYPE (PRR_AdditionsR10_t, AdditionsR12, PRR_AdditionsR12_t),
CSN_DESCR_END (PRR_AdditionsR10_t)
static const
CSN_DESCR_BEGIN(PRR_AdditionsR7_t)
M_UINT (PRR_AdditionsR7_t, EARLY_TBF_ESTABLISHMENT, 1),
M_NEXT_EXIST (PRR_AdditionsR7_t, Exist_EGPRS_BEP_LinkQualityMeasurements_type2, 1),
M_TYPE (PRR_AdditionsR7_t, EGPRS_BEP_LinkQualityMeasurements_type2, EGPRS_BEP_LinkQualityMeasurements_type2_t),
M_NEXT_EXIST (PRR_AdditionsR7_t, Exist_EGPRS_TimeslotLinkQualityMeasurements_type2, 1),
M_TYPE (PRR_AdditionsR7_t, EGPRS_TimeslotLinkQualityMeasurements_type2, EGPRS_TimeslotLinkQualityMeasurements_type2_t),
M_NEXT_EXIST_OR_NULL(PRR_AdditionsR7_t, Exist_AdditionsR10, 1),
M_TYPE (PRR_AdditionsR7_t, AdditionsR10, PRR_AdditionsR10_t),
CSN_DESCR_END (PRR_AdditionsR7_t)
static const
CSN_DESCR_BEGIN(PRR_AdditionsR6_t)
M_NEXT_EXIST (PRR_AdditionsR6_t, Exist_Ext_Channel_Request_desc, 1),
M_TYPE (PRR_AdditionsR6_t, Ext_Channel_Request_desc, Ext_Channel_Request_desc_t),
M_NEXT_EXIST_OR_NULL(PRR_AdditionsR6_t, Exist_AdditionsR7, 1),
M_TYPE (PRR_AdditionsR6_t, AdditionsR7, PRR_AdditionsR7_t),
CSN_DESCR_END (PRR_AdditionsR6_t)
static const
CSN_DESCR_BEGIN(PRR_AdditionsR5_t)
M_NEXT_EXIST (PRR_AdditionsR5_t, Exist_Iu_Mode_ChRequestDesk, 1),
M_TYPE (PRR_AdditionsR5_t, IU_Mode_Channel_Request_Desk_RNTI, IU_Mode_Channel_Request_Desk_RNTI_t),
M_NEXT_EXIST (PRR_AdditionsR5_t, Exist_HFN_LSB, 1),
M_UINT (PRR_AdditionsR5_t, HFN_LSb, 7),
M_NEXT_EXIST_OR_NULL(PRR_AdditionsR5_t, Exist_AdditionsR6, 1),
M_TYPE (PRR_AdditionsR5_t, AdditionsR6, PRR_AdditionsR6_t),
CSN_DESCR_END (PRR_AdditionsR5_t)
static const
CSN_DESCR_BEGIN(PRR_AdditionsR99_t)
M_NEXT_EXIST (PRR_AdditionsR99_t, Exist_EGPRS_BEP_LinkQualityMeasurements, 1),
M_TYPE (PRR_AdditionsR99_t, EGPRS_BEP_LinkQualityMeasurements, EGPRS_BEP_LinkQualityMeasurements_t),
M_NEXT_EXIST (PRR_AdditionsR99_t, Exist_EGPRS_TimeslotLinkQualityMeasurements, 1),
M_TYPE (PRR_AdditionsR99_t, EGPRS_TimeslotLinkQualityMeasurements, EGPRS_TimeslotLinkQualityMeasurements_t),
M_NEXT_EXIST (PRR_AdditionsR99_t, Exist_PFI, 1),
M_UINT (PRR_AdditionsR99_t, PFI, 7),
M_UINT (PRR_AdditionsR99_t, MS_RAC_AdditionalInformationAvailable, 1),
M_UINT (PRR_AdditionsR99_t, RetransmissionOfPRR, 1),
M_NEXT_EXIST_OR_NULL(PRR_AdditionsR99_t, Exist_AdditionsR5, 1),
M_TYPE (PRR_AdditionsR99_t, AdditionsR5, PRR_AdditionsR5_t),
CSN_DESCR_END (PRR_AdditionsR99_t)
static const
CSN_DESCR_BEGIN (Packet_Resource_Request_t)
/* Mac header */
M_UINT (Packet_Resource_Request_t, PayloadType, 2),
M_UINT (Packet_Resource_Request_t, spare, 5),
M_UINT (Packet_Resource_Request_t, R, 1),
M_UINT (Packet_Resource_Request_t, MESSAGE_TYPE, 6),
/* Mac header */
M_NEXT_EXIST (Packet_Resource_Request_t, Exist_ACCESS_TYPE, 1),
M_UINT (Packet_Resource_Request_t, ACCESS_TYPE, 2),
M_TYPE (Packet_Resource_Request_t, ID, PacketResourceRequestID_t),
M_NEXT_EXIST (Packet_Resource_Request_t, Exist_MS_Radio_Access_capability2, 1),
M_TYPE (Packet_Resource_Request_t, MS_Radio_Access_capability2, MS_Radio_Access_capability2_t),
M_TYPE (Packet_Resource_Request_t, Channel_Request_Description, Channel_Request_Description_t),
M_NEXT_EXIST (Packet_Resource_Request_t, Exist_CHANGE_MARK, 1),
M_UINT (Packet_Resource_Request_t, CHANGE_MARK, 2),
M_UINT (Packet_Resource_Request_t, C_VALUE, 6),
M_NEXT_EXIST (Packet_Resource_Request_t, Exist_SIGN_VAR, 1),
M_UINT (Packet_Resource_Request_t, SIGN_VAR, 6),
M_TYPE_ARRAY (Packet_Resource_Request_t, I_LEVEL_TN, InterferenceMeasurementReport_t, 8),
M_NEXT_EXIST_OR_NULL(Packet_Resource_Request_t, Exist_AdditionsR99, 1),
M_TYPE (Packet_Resource_Request_t, AdditionsR99, PRR_AdditionsR99_t),
M_PADDING_BITS (Packet_Resource_Request_t),
CSN_DESCR_END (Packet_Resource_Request_t)
/*< Packet Mobile TBF Status message content > */
static const
CSN_DESCR_BEGIN(Packet_Mobile_TBF_Status_t)
/* Mac header */
M_UINT (Packet_Mobile_TBF_Status_t, PayloadType, 2),
M_UINT (Packet_Mobile_TBF_Status_t, spare, 5),
M_UINT (Packet_Mobile_TBF_Status_t, R, 1),
M_UINT (Packet_Mobile_TBF_Status_t, MESSAGE_TYPE, 6),
/* Mac header */
M_TYPE (Packet_Mobile_TBF_Status_t, Global_TFI, Global_TFI_t),
M_UINT (Packet_Mobile_TBF_Status_t, TBF_CAUSE, 3),
M_NEXT_EXIST (Packet_Mobile_TBF_Status_t, Exist_STATUS_MESSAGE_TYPE, 1),
M_UINT (Packet_Mobile_TBF_Status_t, STATUS_MESSAGE_TYPE, 6),
M_PADDING_BITS(Packet_Mobile_TBF_Status_t),
CSN_DESCR_END (Packet_Mobile_TBF_Status_t)
/*< Packet PSI Status message content > */
static const
CSN_DESCR_BEGIN(PSI_Message_t)
M_UINT (PSI_Message_t, PSI_MESSAGE_TYPE, 6),
M_UINT (PSI_Message_t, PSIX_CHANGE_MARK, 2),
M_NEXT_EXIST (PSI_Message_t, Exist_PSIX_COUNT_and_Instance_Bitmap, 2),
M_FIXED (PSI_Message_t, 4, 0), /* Placeholder for PSIX_COUNT (4 bits) */
M_FIXED (PSI_Message_t, 1, 0), /* Placeholder for Instance bitmap (1 bit) */
CSN_DESCR_END (PSI_Message_t)
static const
CSN_DESCR_BEGIN(PSI_Message_List_t)
M_REC_TARRAY (PSI_Message_List_t, PSI_Message, PSI_Message_t, Count_PSI_Message),
M_FIXED (PSI_Message_List_t, 1, 0x00),
M_UINT (PSI_Message_List_t, ADDITIONAL_MSG_TYPE, 1),
CSN_DESCR_END (PSI_Message_List_t)
static const
CSN_DESCR_BEGIN(Unknown_PSI_Message_List_t)
M_FIXED (Unknown_PSI_Message_List_t, 1, 0x00),
M_UINT (Unknown_PSI_Message_List_t, ADDITIONAL_MSG_TYPE, 1),
CSN_DESCR_END (Unknown_PSI_Message_List_t)
static const
CSN_DESCR_BEGIN(Packet_PSI_Status_t)
/* Mac header */
M_UINT (Packet_PSI_Status_t, PayloadType, 2),
M_UINT (Packet_PSI_Status_t, spare, 5),
M_UINT (Packet_PSI_Status_t, R, 1),
M_UINT (Packet_PSI_Status_t, MESSAGE_TYPE, 6),
/* Mac header */
M_TYPE (Packet_PSI_Status_t, Global_TFI, Global_TFI_t),
M_UINT (Packet_PSI_Status_t, PBCCH_CHANGE_MARK, 3),
M_TYPE (Packet_PSI_Status_t, PSI_Message_List, PSI_Message_List_t),
M_TYPE (Packet_PSI_Status_t, Unknown_PSI_Message_List, Unknown_PSI_Message_List_t),
M_PADDING_BITS(Packet_PSI_Status_t),
CSN_DESCR_END (Packet_PSI_Status_t)
/* < Packet SI Status message content > */
static const
CSN_DESCR_BEGIN(SI_Message_t)
M_UINT (SI_Message_t, SI_MESSAGE_TYPE, 8),
M_UINT (SI_Message_t, MESS_REC, 2),
CSN_DESCR_END (SI_Message_t)
static const
CSN_DESCR_BEGIN(SI_Message_List_t)
M_REC_TARRAY (SI_Message_List_t, SI_Message, SI_Message_t, Count_SI_Message),
M_FIXED (SI_Message_List_t, 1, 0x00),
M_UINT (SI_Message_List_t, ADDITIONAL_MSG_TYPE, 1),
CSN_DESCR_END (SI_Message_List_t)
static const
CSN_DESCR_BEGIN(Unknown_SI_Message_List_t)
M_FIXED (Unknown_SI_Message_List_t, 1, 0x00),
M_UINT (Unknown_SI_Message_List_t, ADDITIONAL_MSG_TYPE, 1),
CSN_DESCR_END (Unknown_SI_Message_List_t)
static const
CSN_DESCR_BEGIN(Packet_SI_Status_t)
/* Mac header */
M_UINT (Packet_SI_Status_t, PayloadType, 2),
M_UINT (Packet_SI_Status_t, spare, 5),
M_UINT (Packet_SI_Status_t, R, 1),
M_UINT (Packet_SI_Status_t, MESSAGE_TYPE, 6),
/* Mac header */
M_TYPE (Packet_SI_Status_t, Global_TFI, Global_TFI_t),
M_UINT (Packet_SI_Status_t, BCCH_CHANGE_MARK, 3),
M_TYPE (Packet_SI_Status_t, SI_Message_List, SI_Message_List_t),
M_TYPE (Packet_SI_Status_t, Unknown_SI_Message_List, Unknown_SI_Message_List_t),
M_PADDING_BITS(Packet_SI_Status_t),
CSN_DESCR_END (Packet_SI_Status_t)
/* < Packet Downlink Ack/Nack message content > */
static const
CSN_DESCR_BEGIN(PD_AckNack_AdditionsR99_t)
M_NEXT_EXIST (PD_AckNack_AdditionsR99_t, Exist_PFI, 1),
M_UINT (PD_AckNack_AdditionsR99_t, PFI, 7),
CSN_DESCR_END (PD_AckNack_AdditionsR99_t)
static const
CSN_DESCR_BEGIN (Packet_Downlink_Ack_Nack_t)
M_UINT (Packet_Downlink_Ack_Nack_t, PayloadType, 2),
M_UINT (Packet_Downlink_Ack_Nack_t, spare, 5),
M_BIT (Packet_Downlink_Ack_Nack_t, R),
M_UINT (Packet_Downlink_Ack_Nack_t, MESSAGE_TYPE, 6),
M_UINT (Packet_Downlink_Ack_Nack_t, DOWNLINK_TFI, 5),
M_TYPE (Packet_Downlink_Ack_Nack_t, Ack_Nack_Description, Ack_Nack_Description_t),
M_NEXT_EXIST (Packet_Downlink_Ack_Nack_t, Exist_Channel_Request_Description, 1),
M_TYPE (Packet_Downlink_Ack_Nack_t, Channel_Request_Description, Channel_Request_Description_t),
M_TYPE (Packet_Downlink_Ack_Nack_t, Channel_Quality_Report, Channel_Quality_Report_t),
M_NEXT_EXIST_OR_NULL(Packet_Downlink_Ack_Nack_t, Exist_AdditionsR99, 1),
M_TYPE (Packet_Downlink_Ack_Nack_t, AdditionsR99, PD_AckNack_AdditionsR99_t),
M_PADDING_BITS (Packet_Downlink_Ack_Nack_t),
CSN_DESCR_END (Packet_Downlink_Ack_Nack_t)
/*< EGPRS Packet Downlink Ack/Nack message content > */
static const
CSN_DESCR_BEGIN(EGPRS_ChannelQualityReport_t)
M_TYPE (EGPRS_ChannelQualityReport_t, EGPRS_BEP_LinkQualityMeasurements, EGPRS_BEP_LinkQualityMeasurements_t),
M_UINT (EGPRS_ChannelQualityReport_t, C_VALUE, 6),
M_TYPE (EGPRS_ChannelQualityReport_t, EGPRS_TimeslotLinkQualityMeasurements, EGPRS_TimeslotLinkQualityMeasurements_t),
CSN_DESCR_END (EGPRS_ChannelQualityReport_t)
static const
CSN_DESCR_BEGIN(EGPRS_PD_AckNack_t)
/* M_CALLBACK (EGPRS_PD_AckNack_t, (void*)21, IsSupported, IsSupported), */
M_UINT (EGPRS_PD_AckNack_t, PayloadType, 2),
M_UINT (EGPRS_PD_AckNack_t, spare, 5),
M_BIT (EGPRS_PD_AckNack_t, R),
M_UINT (EGPRS_PD_AckNack_t, MESSAGE_TYPE, 6),
M_UINT (EGPRS_PD_AckNack_t, DOWNLINK_TFI, 5),
M_UINT (EGPRS_PD_AckNack_t, MS_OUT_OF_MEMORY, 1),
M_NEXT_EXIST (EGPRS_PD_AckNack_t, Exist_EGPRS_ChannelQualityReport, 1),
M_TYPE (EGPRS_PD_AckNack_t, EGPRS_ChannelQualityReport, EGPRS_ChannelQualityReport_t),
M_NEXT_EXIST (EGPRS_PD_AckNack_t, Exist_ChannelRequestDescription, 1),
M_TYPE (EGPRS_PD_AckNack_t, ChannelRequestDescription, Channel_Request_Description_t),
M_NEXT_EXIST (EGPRS_PD_AckNack_t, Exist_PFI, 1),
M_UINT (EGPRS_PD_AckNack_t, PFI, 7),
M_NEXT_EXIST (EGPRS_PD_AckNack_t, Exist_ExtensionBits, 1),
M_TYPE (EGPRS_PD_AckNack_t, ExtensionBits, Extension_Bits_t),
M_TYPE (EGPRS_PD_AckNack_t, EGPRS_AckNack, EGPRS_AckNack_t),
/* M_CALLBACK (EGPRS_PD_AckNack_t, (void*)24, EGPRS_AckNack, EGPRS_AckNack), */
M_PADDING_BITS(EGPRS_PD_AckNack_t),
CSN_DESCR_END (EGPRS_PD_AckNack_t)
static const
CSN_DESCR_BEGIN(FDD_Target_Cell_t)
M_UINT (FDD_Target_Cell_t, FDD_ARFCN, 14),
M_UINT (FDD_Target_Cell_t, DIVERSITY, 1),
M_NEXT_EXIST (FDD_Target_Cell_t, Exist_Bandwith_FDD, 1),
M_UINT (FDD_Target_Cell_t, BANDWITH_FDD, 3),
M_UINT (FDD_Target_Cell_t, SCRAMBLING_CODE, 9),
CSN_DESCR_END (FDD_Target_Cell_t)
static const
CSN_DESCR_BEGIN(TDD_Target_Cell_t)
M_UINT (TDD_Target_Cell_t, TDD_ARFCN, 14),
M_UINT (TDD_Target_Cell_t, DIVERSITY_TDD, 1),
M_NEXT_EXIST (TDD_Target_Cell_t, Exist_Bandwith_TDD, 1),
M_UINT (TDD_Target_Cell_t, BANDWITH_TDD, 3),
M_UINT (TDD_Target_Cell_t, CELL_PARAMETER, 7),
M_UINT (TDD_Target_Cell_t, Sync_Case_TSTD, 1),
CSN_DESCR_END (TDD_Target_Cell_t)
static const
CSN_DESCR_BEGIN(EUTRAN_Target_Cell_t)
M_UINT (EUTRAN_Target_Cell_t, EARFCN, 16),
M_NEXT_EXIST (EUTRAN_Target_Cell_t, Exist_Measurement_Bandwidth, 1),
M_UINT (EUTRAN_Target_Cell_t, Measurement_Bandwidth, 3),
M_UINT (EUTRAN_Target_Cell_t, Physical_Layer_Cell_Identity, 9),
CSN_DESCR_END (EUTRAN_Target_Cell_t)
static const
CSN_DESCR_BEGIN(UTRAN_CSG_Target_Cell_t)
M_UINT (UTRAN_CSG_Target_Cell_t, UTRAN_CI, 28),
M_NEXT_EXIST (UTRAN_CSG_Target_Cell_t, Exist_PLMN_ID, 1),
M_TYPE (UTRAN_CSG_Target_Cell_t, PLMN_ID, PLMN_t),
CSN_DESCR_END (UTRAN_CSG_Target_Cell_t)
static const
CSN_DESCR_BEGIN(EUTRAN_CSG_Target_Cell_t)
M_UINT (EUTRAN_CSG_Target_Cell_t, EUTRAN_CI, 28),
M_UINT (EUTRAN_CSG_Target_Cell_t, Tracking_Area_Code, 16),
M_NEXT_EXIST (EUTRAN_CSG_Target_Cell_t, Exist_PLMN_ID, 1),
M_TYPE (EUTRAN_CSG_Target_Cell_t, PLMN_ID, PLMN_t),
CSN_DESCR_END (EUTRAN_CSG_Target_Cell_t)
static const
CSN_DESCR_BEGIN(PCCF_AdditionsR9_t)
M_NEXT_EXIST (PCCF_AdditionsR9_t, Exist_UTRAN_CSG_Target_Cell, 1),
M_TYPE (PCCF_AdditionsR9_t, UTRAN_CSG_Target_Cell, UTRAN_CSG_Target_Cell_t),
M_NEXT_EXIST (PCCF_AdditionsR9_t, Exist_EUTRAN_CSG_Target_Cell, 1),
M_TYPE (PCCF_AdditionsR9_t, EUTRAN_CSG_Target_Cell, EUTRAN_CSG_Target_Cell_t),
CSN_DESCR_END (PCCF_AdditionsR9_t)
static const
CSN_DESCR_BEGIN(PCCF_AdditionsR8_t)
M_NEXT_EXIST (PCCF_AdditionsR8_t, Exist_EUTRAN_Target_Cell, 1),
M_TYPE (PCCF_AdditionsR8_t, EUTRAN_Target_Cell, EUTRAN_Target_Cell_t),
M_NEXT_EXIST_OR_NULL(PCCF_AdditionsR8_t, Exist_AdditionsR9, 1),
M_TYPE (PCCF_AdditionsR8_t, AdditionsR9, PCCF_AdditionsR9_t),
CSN_DESCR_END (PCCF_AdditionsR8_t)
static const
CSN_DESCR_BEGIN(PCCF_AdditionsR5_t)
M_NEXT_EXIST (PCCF_AdditionsR5_t, Exist_G_RNTI_extension, 1),
M_UINT (PCCF_AdditionsR5_t, G_RNTI_extension, 4),
M_NEXT_EXIST_OR_NULL(PCCF_AdditionsR5_t, Exist_AdditionsR8, 1),
M_TYPE (PCCF_AdditionsR5_t, AdditionsR8, PCCF_AdditionsR8_t),
CSN_DESCR_END (PCCF_AdditionsR5_t)
static const
CSN_DESCR_BEGIN(PCCF_AdditionsR99_t)
M_NEXT_EXIST (PCCF_AdditionsR99_t, Exist_FDD_Description, 1),
M_TYPE (PCCF_AdditionsR99_t, FDD_Target_Cell, FDD_Target_Cell_t),
M_NEXT_EXIST (PCCF_AdditionsR99_t, Exist_TDD_Description, 1),
M_TYPE (PCCF_AdditionsR99_t, TDD_Target_Cell, TDD_Target_Cell_t),
M_NEXT_EXIST_OR_NULL(PCCF_AdditionsR99_t, Exist_AdditionsR5, 1),
M_TYPE (PCCF_AdditionsR99_t, AdditionsR5, PCCF_AdditionsR5_t),
CSN_DESCR_END (PCCF_AdditionsR99_t)
/*< Packet Cell Change Failure message content > */
static const
CSN_DESCR_BEGIN(Packet_Cell_Change_Failure_t)
/* Mac header */
M_UINT (Packet_Cell_Change_Failure_t, PayloadType, 2),
M_UINT (Packet_Cell_Change_Failure_t, spare, 5),
M_UINT (Packet_Cell_Change_Failure_t, R, 1),
M_UINT (Packet_Cell_Change_Failure_t, MESSAGE_TYPE, 6),
/* Mac header */
M_UINT (Packet_Cell_Change_Failure_t, TLLI, 32),
M_UINT (Packet_Cell_Change_Failure_t, ARFCN, 10),
M_UINT (Packet_Cell_Change_Failure_t, BSIC, 6),
M_UINT (Packet_Cell_Change_Failure_t, CAUSE, 4),
M_NEXT_EXIST_OR_NULL (Packet_Cell_Change_Failure_t, Exist_AdditionsR99, 1),
M_TYPE (Packet_Cell_Change_Failure_t, AdditionsR99, PCCF_AdditionsR99_t),
M_PADDING_BITS (Packet_Cell_Change_Failure_t),
CSN_DESCR_END (Packet_Cell_Change_Failure_t)
/*< Packet Uplink Ack/Nack message content > */
static const
CSN_DESCR_BEGIN(Power_Control_Parameters_t)
M_UINT (Power_Control_Parameters_t, ALPHA, 4),
M_NEXT_EXIST (Power_Control_Parameters_t, Slot[0].Exist, 1),
M_UINT (Power_Control_Parameters_t, Slot[0].GAMMA_TN, 5),
M_NEXT_EXIST (Power_Control_Parameters_t, Slot[1].Exist, 1),
M_UINT (Power_Control_Parameters_t, Slot[1].GAMMA_TN, 5),
M_NEXT_EXIST (Power_Control_Parameters_t, Slot[2].Exist, 1),
M_UINT (Power_Control_Parameters_t, Slot[2].GAMMA_TN, 5),
M_NEXT_EXIST (Power_Control_Parameters_t, Slot[3].Exist, 1),
M_UINT (Power_Control_Parameters_t, Slot[3].GAMMA_TN, 5),
M_NEXT_EXIST (Power_Control_Parameters_t, Slot[4].Exist, 1),
M_UINT (Power_Control_Parameters_t, Slot[4].GAMMA_TN, 5),
M_NEXT_EXIST (Power_Control_Parameters_t, Slot[5].Exist, 1),
M_UINT (Power_Control_Parameters_t, Slot[5].GAMMA_TN, 5),
M_NEXT_EXIST (Power_Control_Parameters_t, Slot[6].Exist, 1),
M_UINT (Power_Control_Parameters_t, Slot[6].GAMMA_TN, 5),
M_NEXT_EXIST (Power_Control_Parameters_t, Slot[7].Exist, 1),
M_UINT (Power_Control_Parameters_t, Slot[7].GAMMA_TN, 5),
CSN_DESCR_END (Power_Control_Parameters_t)
static const
CSN_DESCR_BEGIN(PU_AckNack_GPRS_AdditionsR99_t)
M_NEXT_EXIST (PU_AckNack_GPRS_AdditionsR99_t, Exist_Packet_Extended_Timing_Advance, 1),
M_UINT (PU_AckNack_GPRS_AdditionsR99_t, Packet_Extended_Timing_Advance, 2),
M_UINT (PU_AckNack_GPRS_AdditionsR99_t, TBF_EST, 1),
CSN_DESCR_END (PU_AckNack_GPRS_AdditionsR99_t)
static const
CSN_DESCR_BEGIN (PU_AckNack_GPRS_t)
M_UINT (PU_AckNack_GPRS_t, CHANNEL_CODING_COMMAND, 2),
M_TYPE (PU_AckNack_GPRS_t, Ack_Nack_Description, Ack_Nack_Description_t),
M_NEXT_EXIST (PU_AckNack_GPRS_t, Common_Uplink_Ack_Nack_Data.Exist_CONTENTION_RESOLUTION_TLLI, 1),
M_UINT (PU_AckNack_GPRS_t, Common_Uplink_Ack_Nack_Data.CONTENTION_RESOLUTION_TLLI, 32),
M_NEXT_EXIST (PU_AckNack_GPRS_t, Common_Uplink_Ack_Nack_Data.Exist_Packet_Timing_Advance, 1),
M_TYPE (PU_AckNack_GPRS_t, Common_Uplink_Ack_Nack_Data.Packet_Timing_Advance, Packet_Timing_Advance_t),
M_NEXT_EXIST (PU_AckNack_GPRS_t, Common_Uplink_Ack_Nack_Data.Exist_Power_Control_Parameters, 1),
M_TYPE (PU_AckNack_GPRS_t, Common_Uplink_Ack_Nack_Data.Power_Control_Parameters, Power_Control_Parameters_t),
M_NEXT_EXIST (PU_AckNack_GPRS_t, Common_Uplink_Ack_Nack_Data.Exist_Extension_Bits, 1),
M_TYPE (PU_AckNack_GPRS_t, Common_Uplink_Ack_Nack_Data.Extension_Bits, Extension_Bits_t),
M_UNION (PU_AckNack_GPRS_t, 2), /* Fixed Allocation was removed */
M_UINT (PU_AckNack_GPRS_t, u.FixedAllocationDummy, 1),
CSN_ERROR (PU_AckNack_GPRS_t, "01 <Fixed Allocation>", CSN_ERROR_STREAM_NOT_SUPPORTED),
M_NEXT_EXIST_OR_NULL(PU_AckNack_GPRS_t, Exist_AdditionsR99, 1),
M_TYPE (PU_AckNack_GPRS_t, AdditionsR99, PU_AckNack_GPRS_AdditionsR99_t),
CSN_DESCR_END (PU_AckNack_GPRS_t)
static const
CSN_DESCR_BEGIN(PU_AckNack_EGPRS_00_t)
M_UINT (PU_AckNack_EGPRS_00_t, EGPRS_ChannelCodingCommand, 4),
M_UINT (PU_AckNack_EGPRS_00_t, RESEGMENT, 1),
M_UINT (PU_AckNack_EGPRS_00_t, PRE_EMPTIVE_TRANSMISSION, 1),
M_UINT (PU_AckNack_EGPRS_00_t, PRR_RETRANSMISSION_REQUEST, 1),
M_UINT (PU_AckNack_EGPRS_00_t, ARAC_RETRANSMISSION_REQUEST, 1),
M_NEXT_EXIST (PU_AckNack_EGPRS_00_t, Common_Uplink_Ack_Nack_Data.Exist_CONTENTION_RESOLUTION_TLLI, 1),
M_UINT (PU_AckNack_EGPRS_00_t, Common_Uplink_Ack_Nack_Data.CONTENTION_RESOLUTION_TLLI, 32),
M_UINT (PU_AckNack_EGPRS_00_t, TBF_EST, 1),
M_NEXT_EXIST (PU_AckNack_EGPRS_00_t, Common_Uplink_Ack_Nack_Data.Exist_Packet_Timing_Advance, 1),
M_TYPE (PU_AckNack_EGPRS_00_t, Common_Uplink_Ack_Nack_Data.Packet_Timing_Advance, Packet_Timing_Advance_t),
M_NEXT_EXIST (PU_AckNack_EGPRS_00_t, Exist_Packet_Extended_Timing_Advance, 1),
M_UINT (PU_AckNack_EGPRS_00_t, Packet_Extended_Timing_Advance, 2),
M_NEXT_EXIST (PU_AckNack_EGPRS_00_t, Common_Uplink_Ack_Nack_Data.Exist_Power_Control_Parameters, 1),
M_TYPE (PU_AckNack_EGPRS_00_t, Common_Uplink_Ack_Nack_Data.Power_Control_Parameters, Power_Control_Parameters_t),
M_NEXT_EXIST (PU_AckNack_EGPRS_00_t, Common_Uplink_Ack_Nack_Data.Exist_Extension_Bits, 1),
M_TYPE (PU_AckNack_EGPRS_00_t, Common_Uplink_Ack_Nack_Data.Extension_Bits, Extension_Bits_t),
M_TYPE (PU_AckNack_EGPRS_00_t, EGPRS_AckNack, EGPRS_AckNack_t),
/* M_CALLBACK (PU_AckNack_EGPRS_00_t, (void*)24, EGPRS_AckNack, EGPRS_AckNack), */
CSN_DESCR_END (PU_AckNack_EGPRS_00_t)
static const
CSN_DESCR_BEGIN(PU_AckNack_EGPRS_t)
/* M_CALLBACK (PU_AckNack_EGPRS_t, (void*)21, IsSupported, IsSupported), */
M_UNION (PU_AckNack_EGPRS_t, 4),
M_TYPE (PU_AckNack_EGPRS_t, u.PU_AckNack_EGPRS_00, PU_AckNack_EGPRS_00_t),
CSN_ERROR (PU_AckNack_EGPRS_t, "01 <PU_AckNack_EGPRS>", CSN_ERROR_STREAM_NOT_SUPPORTED),
CSN_ERROR (PU_AckNack_EGPRS_t, "10 <PU_AckNack_EGPRS>", CSN_ERROR_STREAM_NOT_SUPPORTED),
CSN_ERROR (PU_AckNack_EGPRS_t, "11 <PU_AckNack_EGPRS>", CSN_ERROR_STREAM_NOT_SUPPORTED),
CSN_DESCR_END (PU_AckNack_EGPRS_t)
static const
CSN_DESCR_BEGIN(Packet_Uplink_Ack_Nack_t)
M_UINT (Packet_Uplink_Ack_Nack_t, MESSAGE_TYPE, 6),
M_UINT (Packet_Uplink_Ack_Nack_t, PAGE_MODE, 2),
M_FIXED (Packet_Uplink_Ack_Nack_t, 2, 0x00),
M_UINT (Packet_Uplink_Ack_Nack_t, UPLINK_TFI, 5),
M_UNION (Packet_Uplink_Ack_Nack_t, 2),
M_TYPE (Packet_Uplink_Ack_Nack_t, u.PU_AckNack_GPRS_Struct, PU_AckNack_GPRS_t),
M_TYPE (Packet_Uplink_Ack_Nack_t, u.PU_AckNack_EGPRS_Struct, PU_AckNack_EGPRS_t),
M_PADDING_BITS(Packet_Uplink_Ack_Nack_t ),
CSN_DESCR_END (Packet_Uplink_Ack_Nack_t)
/*< Packet Uplink Assignment message content > */
static const
CSN_DESCR_BEGIN(CHANGE_MARK_t)
M_UINT (CHANGE_MARK_t, CHANGE_MARK_1, 2),
M_NEXT_EXIST (CHANGE_MARK_t, Exist_CHANGE_MARK_2, 1),
M_UINT (CHANGE_MARK_t, CHANGE_MARK_2, 2),
CSN_DESCR_END (CHANGE_MARK_t)
static const
CSN_DESCR_BEGIN(Indirect_encoding_t)
M_UINT (Indirect_encoding_t, MAIO, 6),
M_UINT (Indirect_encoding_t, MA_NUMBER, 4),
M_NEXT_EXIST (Indirect_encoding_t, Exist_CHANGE_MARK, 1),
M_TYPE (Indirect_encoding_t, CHANGE_MARK, CHANGE_MARK_t),
CSN_DESCR_END (Indirect_encoding_t)
static const
CSN_DESCR_BEGIN(Direct_encoding_1_t)
M_UINT (Direct_encoding_1_t, MAIO, 6),
M_TYPE (Direct_encoding_1_t, GPRS_Mobile_Allocation, GPRS_Mobile_Allocation_t),
CSN_DESCR_END (Direct_encoding_1_t)
static const
CSN_DESCR_BEGIN(Direct_encoding_2_t)
M_UINT (Direct_encoding_2_t, MAIO, 6),
M_UINT (Direct_encoding_2_t, HSN, 6),
M_UINT_OFFSET(Direct_encoding_2_t, Length_of_MA_Frequency_List, 4, 3),
M_VAR_ARRAY (Direct_encoding_2_t, MA_Frequency_List, Length_of_MA_Frequency_List, 0),
CSN_DESCR_END (Direct_encoding_2_t)
static const
CSN_DESCR_BEGIN(Frequency_Parameters_t)
M_UINT (Frequency_Parameters_t, TSC, 3),
M_UNION (Frequency_Parameters_t, 4),
M_UINT (Frequency_Parameters_t, u.ARFCN, 10),
M_TYPE (Frequency_Parameters_t, u.Indirect_encoding, Indirect_encoding_t),
M_TYPE (Frequency_Parameters_t, u.Direct_encoding_1, Direct_encoding_1_t),
M_TYPE (Frequency_Parameters_t, u.Direct_encoding_2, Direct_encoding_2_t),
CSN_DESCR_END (Frequency_Parameters_t)
static const
CSN_DESCR_BEGIN(Packet_Request_Reference_t)
M_UINT (Packet_Request_Reference_t, RANDOM_ACCESS_INFORMATION, 11),
M_UINT_ARRAY (Packet_Request_Reference_t, FRAME_NUMBER, 8, 2),
CSN_DESCR_END (Packet_Request_Reference_t)
static const
CSN_DESCR_BEGIN(Timeslot_Allocation_t)
M_NEXT_EXIST (Timeslot_Allocation_t, Exist, 1),
M_UINT (Timeslot_Allocation_t, USF_TN, 3),
CSN_DESCR_END (Timeslot_Allocation_t)
static const
CSN_DESCR_BEGIN(Timeslot_Allocation_Power_Ctrl_Param_t)
M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, ALPHA, 4),
M_NEXT_EXIST (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[0].Exist, 2),
M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[0].USF_TN, 3),
M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[0].GAMMA_TN, 5),
M_NEXT_EXIST (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[1].Exist, 2),
M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[1].USF_TN, 3),
M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[1].GAMMA_TN, 5),
M_NEXT_EXIST (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[2].Exist, 2),
M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[2].USF_TN, 3),
M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[2].GAMMA_TN, 5),
M_NEXT_EXIST (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[3].Exist, 2),
M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[3].USF_TN, 3),
M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[3].GAMMA_TN, 5),
M_NEXT_EXIST (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[4].Exist, 2),
M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[4].USF_TN, 3),
M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[4].GAMMA_TN, 5),
M_NEXT_EXIST (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[5].Exist, 2),
M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[5].USF_TN, 3),
M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[5].GAMMA_TN, 5),
M_NEXT_EXIST (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[6].Exist, 2),
M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[6].USF_TN, 3),
M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[6].GAMMA_TN, 5),
M_NEXT_EXIST (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[7].Exist, 2),
M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[7].USF_TN, 3),
M_UINT (Timeslot_Allocation_Power_Ctrl_Param_t, Slot[7].GAMMA_TN, 5),
CSN_DESCR_END (Timeslot_Allocation_Power_Ctrl_Param_t)
/* USED in <Packet Uplink Assignment message content> */
static const
CSN_DESCR_BEGIN(Dynamic_Allocation_t)
M_UINT (Dynamic_Allocation_t, Extended_Dynamic_Allocation, 1),
M_NEXT_EXIST (Dynamic_Allocation_t, Exist_P0, 2),
M_UINT (Dynamic_Allocation_t, P0, 4),
M_UINT (Dynamic_Allocation_t, PR_MODE, 1),
M_UINT (Dynamic_Allocation_t, USF_GRANULARITY, 1),
M_NEXT_EXIST (Dynamic_Allocation_t, Exist_UPLINK_TFI_ASSIGNMENT, 1),
M_UINT (Dynamic_Allocation_t, UPLINK_TFI_ASSIGNMENT, 5),
M_NEXT_EXIST (Dynamic_Allocation_t, Exist_RLC_DATA_BLOCKS_GRANTED, 1),
M_UINT (Dynamic_Allocation_t, RLC_DATA_BLOCKS_GRANTED, 8),
M_NEXT_EXIST (Dynamic_Allocation_t, Exist_TBF_Starting_Time, 1),
M_TYPE (Dynamic_Allocation_t, TBF_Starting_Time, Starting_Frame_Number_t),
M_UNION (Dynamic_Allocation_t, 2),
M_TYPE_ARRAY (Dynamic_Allocation_t, u.Timeslot_Allocation, Timeslot_Allocation_t, 8),
M_TYPE (Dynamic_Allocation_t, u.Timeslot_Allocation_Power_Ctrl_Param, Timeslot_Allocation_Power_Ctrl_Param_t),
CSN_DESCR_END (Dynamic_Allocation_t)
static const
CSN_DESCR_BEGIN(Single_Block_Allocation_t)
M_UINT (Single_Block_Allocation_t, TIMESLOT_NUMBER, 3),
M_NEXT_EXIST (Single_Block_Allocation_t, Exist_ALPHA_and_GAMMA_TN, 2),
M_UINT (Single_Block_Allocation_t, ALPHA, 4),
M_UINT (Single_Block_Allocation_t, GAMMA_TN, 5),
M_NEXT_EXIST (Single_Block_Allocation_t, Exist_P0, 3),
M_UINT (Single_Block_Allocation_t, P0, 4),
M_UINT (Single_Block_Allocation_t, BTS_PWR_CTRL_MODE, 1),
M_UINT (Single_Block_Allocation_t, PR_MODE, 1),
M_TYPE (Single_Block_Allocation_t, TBF_Starting_Time, Starting_Frame_Number_t),
CSN_DESCR_END (Single_Block_Allocation_t)
#if 0
static const
CSN_DESCR_BEGIN(DTM_Dynamic_Allocation_t)
M_UINT (DTM_Dynamic_Allocation_t, Extended_Dynamic_Allocation, 1),
M_NEXT_EXIST (DTM_Dynamic_Allocation_t, Exist_P0, 2),
M_UINT (DTM_Dynamic_Allocation_t, P0, 4),
M_UINT (DTM_Dynamic_Allocation_t, PR_MODE, 1),
M_UINT (DTM_Dynamic_Allocation_t, USF_GRANULARITY, 1),
M_NEXT_EXIST (DTM_Dynamic_Allocation_t, Exist_UPLINK_TFI_ASSIGNMENT, 1),
M_UINT (DTM_Dynamic_Allocation_t, UPLINK_TFI_ASSIGNMENT, 5),
M_NEXT_EXIST (DTM_Dynamic_Allocation_t, Exist_RLC_DATA_BLOCKS_GRANTED, 1),
M_UINT (DTM_Dynamic_Allocation_t, RLC_DATA_BLOCKS_GRANTED, 8),
M_UNION (DTM_Dynamic_Allocation_t, 2),
M_TYPE_ARRAY (DTM_Dynamic_Allocation_t, u.Timeslot_Allocation, Timeslot_Allocation_t, 8),
M_TYPE (DTM_Dynamic_Allocation_t, u.Timeslot_Allocation_Power_Ctrl_Param, Timeslot_Allocation_Power_Ctrl_Param_t),
CSN_DESCR_END (DTM_Dynamic_Allocation_t)
#endif
#if 0
static const
CSN_DESCR_BEGIN(DTM_Single_Block_Allocation_t)
M_UINT (DTM_Single_Block_Allocation_t, TIMESLOT_NUMBER, 3),
M_NEXT_EXIST (DTM_Single_Block_Allocation_t, Exist_ALPHA_and_GAMMA_TN, 2),
M_UINT (DTM_Single_Block_Allocation_t, ALPHA, 4),
M_UINT (DTM_Single_Block_Allocation_t, GAMMA_TN, 5),
M_NEXT_EXIST (DTM_Single_Block_Allocation_t, Exist_P0, 3),
M_UINT (DTM_Single_Block_Allocation_t, P0, 4),
M_UINT (DTM_Single_Block_Allocation_t, BTS_PWR_CTRL_MODE, 1),
M_UINT (DTM_Single_Block_Allocation_t, PR_MODE, 1),
CSN_DESCR_END (DTM_Single_Block_Allocation_t)
#endif
/* Help structures */
typedef struct
{
Global_TFI_t Global_TFI; /* 0 < Global TFI : < Global TFI IE > > */
} h0_Global_TFI_t;
#if 0
static const
CSN_DESCR_BEGIN(h0_Global_TFI_t)
M_FIXED (h0_Global_TFI_t, 1, 0x00),
M_TYPE (h0_Global_TFI_t, Global_TFI, Global_TFI_t),
CSN_DESCR_END (h0_Global_TFI_t)
#endif
typedef struct
{
guint32 TLLI;/* | 10 < TLLI : bit (32) >*/
} h10_TLLI_t;
#if 0
static const
CSN_DESCR_BEGIN(h10_TLLI_t)
M_FIXED (h10_TLLI_t, 2, 0x02),
M_UINT (h10_TLLI_t, TLLI, 32),
CSN_DESCR_END (h10_TLLI_t)
#endif
typedef struct
{
guint16 TQI;/*| 110 < TQI : bit (16) > */
} h110_TQI_t;
#if 0
static const
CSN_DESCR_BEGIN(h110_TQI_t)
M_FIXED (h110_TQI_t, 3, 0x06),
M_UINT (h110_TQI_t, TQI, 16),
CSN_DESCR_END (h110_TQI_t)
#endif
typedef struct
{
Packet_Request_Reference_t Packet_Request_Reference;/*| 111 < Packet Request Reference : < Packet Request Reference IE > > }*/
} h111_Packet_Request_Reference_t;
#if 0
static const
CSN_DESCR_BEGIN(h111_Packet_Request_Reference_t)
M_FIXED (h111_Packet_Request_Reference_t, 3, 0x07),
M_TYPE (h111_Packet_Request_Reference_t, Packet_Request_Reference, Packet_Request_Reference_t),
CSN_DESCR_END (h111_Packet_Request_Reference_t)
#endif
static const
CSN_ChoiceElement_t PacketUplinkID[] =
{
{1, 0, 0, M_TYPE(PacketUplinkID_t, u.Global_TFI, Global_TFI_t)},
{2, 0x02, 0, M_UINT(PacketUplinkID_t, u.TLLI, 32)},
{3, 0x06, 0, M_UINT(PacketUplinkID_t, u.TQI, 16)},
{3, 0x07, 0, M_TYPE(PacketUplinkID_t, u.Packet_Request_Reference, Packet_Request_Reference_t)},
};
static const
CSN_DESCR_BEGIN(PacketUplinkID_t)
M_CHOICE (PacketUplinkID_t, UnionType, PacketUplinkID, ElementsOf(PacketUplinkID)),
CSN_DESCR_END (PacketUplinkID_t)
static const
CSN_DESCR_BEGIN(PUA_GPRS_AdditionsR99_t)
M_NEXT_EXIST (PUA_GPRS_AdditionsR99_t, Exist_Packet_Extended_Timing_Advance, 1),
M_UINT (PUA_GPRS_AdditionsR99_t, Packet_Extended_Timing_Advance, 2),
CSN_DESCR_END (PUA_GPRS_AdditionsR99_t)
static const
CSN_DESCR_BEGIN (PUA_GPRS_t)
M_UINT (PUA_GPRS_t, CHANNEL_CODING_COMMAND, 2),
M_UINT (PUA_GPRS_t, TLLI_BLOCK_CHANNEL_CODING, 1),
M_TYPE (PUA_GPRS_t, Packet_Timing_Advance, Packet_Timing_Advance_t),
M_NEXT_EXIST (PUA_GPRS_t, Exist_Frequency_Parameters, 1),
M_TYPE (PUA_GPRS_t, Frequency_Parameters, Frequency_Parameters_t),
M_UNION (PUA_GPRS_t, 4),
CSN_ERROR (PUA_GPRS_t, "00 <extension> not implemented", CSN_ERROR_STREAM_NOT_SUPPORTED),
M_TYPE (PUA_GPRS_t, u.Dynamic_Allocation, Dynamic_Allocation_t),
M_TYPE (PUA_GPRS_t, u.Single_Block_Allocation, Single_Block_Allocation_t),
CSN_ERROR (PUA_GPRS_t, "11 <Fixed Allocation> not supported", CSN_ERROR_STREAM_NOT_SUPPORTED),
M_NEXT_EXIST_OR_NULL(PUA_GPRS_t, Exist_AdditionsR99, 1),
M_TYPE (PUA_GPRS_t, AdditionsR99, PUA_GPRS_AdditionsR99_t),
CSN_DESCR_END (PUA_GPRS_t)
static const
CSN_DESCR_BEGIN(COMPACT_ReducedMA_t)
M_UINT (COMPACT_ReducedMA_t, BitmapLength, 7),
M_VAR_BITMAP (COMPACT_ReducedMA_t, ReducedMA_Bitmap, BitmapLength, 0),
M_NEXT_EXIST (COMPACT_ReducedMA_t, Exist_MAIO_2, 1),
M_UINT (COMPACT_ReducedMA_t, MAIO_2, 6),
CSN_DESCR_END (COMPACT_TeducedMA_t)
static const
CSN_DESCR_BEGIN(MultiBlock_Allocation_t)
M_UINT (MultiBlock_Allocation_t, TIMESLOT_NUMBER, 3),
M_NEXT_EXIST (MultiBlock_Allocation_t, Exist_ALPHA_GAMMA_TN, 2),
M_UINT (MultiBlock_Allocation_t, ALPHA, 4),
M_UINT (MultiBlock_Allocation_t, GAMMA_TN, 5),
M_NEXT_EXIST (MultiBlock_Allocation_t, Exist_P0_BTS_PWR_CTRL_PR_MODE, 3),
M_UINT (MultiBlock_Allocation_t, P0, 4),
M_UINT (MultiBlock_Allocation_t, BTS_PWR_CTRL_MODE, 1),
M_UINT (MultiBlock_Allocation_t, PR_MODE, 1),
M_TYPE (MultiBlock_Allocation_t, TBF_Starting_Time, Starting_Frame_Number_t),
M_UINT (MultiBlock_Allocation_t, NUMBER_OF_RADIO_BLOCKS_ALLOCATED, 2),
CSN_DESCR_END (MultiBlock_Allocation_t)
static const
CSN_DESCR_BEGIN (PUA_EGPRS_00_t)
M_NEXT_EXIST (PUA_EGPRS_00_t, Exist_CONTENTION_RESOLUTION_TLLI, 1),
M_UINT (PUA_EGPRS_00_t, CONTENTION_RESOLUTION_TLLI, 32),
M_NEXT_EXIST (PUA_EGPRS_00_t, Exist_COMPACT_ReducedMA, 1),
M_TYPE (PUA_EGPRS_00_t, COMPACT_ReducedMA, COMPACT_ReducedMA_t),
M_UINT (PUA_EGPRS_00_t, EGPRS_CHANNEL_CODING_COMMAND, 4),
M_UINT (PUA_EGPRS_00_t, RESEGMENT, 1),
M_UINT (PUA_EGPRS_00_t, EGPRS_WindowSize, 5),
M_REC_ARRAY (PUA_EGPRS_00_t, AccessTechnologyType, NrOfAccessTechnologies, 4),
M_UINT (PUA_EGPRS_00_t, ARAC_RETRANSMISSION_REQUEST, 1),
M_UINT (PUA_EGPRS_00_t, TLLI_BLOCK_CHANNEL_CODING, 1),
M_NEXT_EXIST (PUA_EGPRS_00_t, Exist_BEP_PERIOD2, 1),
M_UINT (PUA_EGPRS_00_t, BEP_PERIOD2, 4),
M_TYPE (PUA_EGPRS_00_t, Packet_Timing_Advance, Packet_Timing_Advance_t),
M_NEXT_EXIST (PUA_EGPRS_00_t, Exist_Packet_Extended_Timing_Advance, 1),
M_UINT (PUA_EGPRS_00_t, Packet_Extended_Timing_Advance, 2),
M_NEXT_EXIST (PUA_EGPRS_00_t, Exist_Frequency_Parameters, 1),
M_TYPE (PUA_EGPRS_00_t, Frequency_Parameters, Frequency_Parameters_t),
M_UNION (PUA_EGPRS_00_t, 4),
CSN_ERROR (PUA_EGPRS_00_t, "00 <extension>", CSN_ERROR_STREAM_NOT_SUPPORTED),
M_TYPE (PUA_EGPRS_00_t, u.Dynamic_Allocation, Dynamic_Allocation_t),
M_TYPE (PUA_EGPRS_00_t, u.MultiBlock_Allocation, MultiBlock_Allocation_t),
CSN_ERROR (PUA_EGPRS_00_t, "11 <Fixed Allocation>", CSN_ERROR_STREAM_NOT_SUPPORTED),
CSN_DESCR_END (PUA_EGPRS_00_t)
static const
CSN_DESCR_BEGIN(PUA_EGPRS_t)
M_UNION (PUA_EGPRS_t, 4),
M_TYPE (PUA_EGPRS_t, u.PUA_EGPRS_00, PUA_EGPRS_00_t),
CSN_ERROR (PUA_EGPRS_t, "01 <PUA EGPRS>", CSN_ERROR_STREAM_NOT_SUPPORTED),
CSN_ERROR (PUA_EGPRS_t, "10 <PUA EGPRS>", CSN_ERROR_STREAM_NOT_SUPPORTED),
CSN_ERROR (PUA_EGPRS_t, "11 <PUA EGPRS>", CSN_ERROR_STREAM_NOT_SUPPORTED),
CSN_DESCR_END (PUA_EGPRS_t)
static const
CSN_DESCR_BEGIN(Packet_Uplink_Assignment_t)
M_UINT (Packet_Uplink_Assignment_t, MESSAGE_TYPE, 6),
M_UINT (Packet_Uplink_Assignment_t, PAGE_MODE, 2),
M_NEXT_EXIST (Packet_Uplink_Assignment_t, Exist_PERSISTENCE_LEVEL, 1),
M_UINT_ARRAY (Packet_Uplink_Assignment_t, PERSISTENCE_LEVEL, 4, 4),
M_TYPE (Packet_Uplink_Assignment_t, ID, PacketUplinkID_t),
M_UNION (Packet_Uplink_Assignment_t, 2),
M_TYPE (Packet_Uplink_Assignment_t, u.PUA_GPRS_Struct, PUA_GPRS_t),
M_TYPE (Packet_Uplink_Assignment_t, u.PUA_EGPRS_Struct, PUA_EGPRS_t),
M_PADDING_BITS(Packet_Uplink_Assignment_t ),
CSN_DESCR_END (Packet_Uplink_Assignment_t)
/*< Packet Downlink Assignment message content > */
static const
CSN_DESCR_BEGIN(Measurement_Mapping_struct_t)
M_TYPE (Measurement_Mapping_struct_t, Measurement_Starting_Time, Starting_Frame_Number_t),
M_UINT (Measurement_Mapping_struct_t, MEASUREMENT_INTERVAL, 5),
M_UINT (Measurement_Mapping_struct_t, MEASUREMENT_BITMAP, 8),
CSN_DESCR_END (Measurement_Mapping_struct_t)
static const
CSN_ChoiceElement_t PacketDownlinkID[] =
{
{1, 0, 0, M_TYPE(PacketDownlinkID_t, u.Global_TFI, Global_TFI_t)},
{2, 0x02, 0, M_UINT(PacketDownlinkID_t, u.TLLI, 32)},
};
static const
CSN_DESCR_BEGIN(PacketDownlinkID_t)
M_CHOICE (PacketDownlinkID_t, UnionType, PacketDownlinkID, ElementsOf(PacketDownlinkID)),
CSN_DESCR_END (PacketDownlinkID_t)
static const
CSN_DESCR_BEGIN(PDA_AdditionsR99_t)
M_NEXT_EXIST (PDA_AdditionsR99_t, Exist_EGPRS_Params, 4), /*if Exist_EGPRS_Params == FALSE then none of the following 4 vars exist */
M_UINT (PDA_AdditionsR99_t, EGPRS_WindowSize, 5),
M_UINT (PDA_AdditionsR99_t, LINK_QUALITY_MEASUREMENT_MODE, 2),
M_NEXT_EXIST (PDA_AdditionsR99_t, Exist_BEP_PERIOD2, 1),
M_UINT (PDA_AdditionsR99_t, BEP_PERIOD2, 4),
M_NEXT_EXIST (PDA_AdditionsR99_t, Exist_Packet_Extended_Timing_Advance, 1),
M_UINT (PDA_AdditionsR99_t, Packet_Extended_Timing_Advance, 2),
M_NEXT_EXIST (PDA_AdditionsR99_t, Exist_COMPACT_ReducedMA, 1),
M_TYPE (PDA_AdditionsR99_t, COMPACT_ReducedMA, COMPACT_ReducedMA_t),
CSN_DESCR_END (PDA_AdditionsR99_t)
static const
CSN_DESCR_BEGIN (Packet_Downlink_Assignment_t)
M_UINT (Packet_Downlink_Assignment_t, MESSAGE_TYPE, 6),
M_UINT (Packet_Downlink_Assignment_t, PAGE_MODE, 2),
M_NEXT_EXIST (Packet_Downlink_Assignment_t, Exist_PERSISTENCE_LEVEL, 1),
M_UINT_ARRAY (Packet_Downlink_Assignment_t, PERSISTENCE_LEVEL, 4, 4),
M_TYPE (Packet_Downlink_Assignment_t, ID, PacketDownlinkID_t),
M_FIXED (Packet_Downlink_Assignment_t, 1, 0x00),/*-- Message escape */
M_UINT (Packet_Downlink_Assignment_t, MAC_MODE, 2),
M_UINT (Packet_Downlink_Assignment_t, RLC_MODE, 1),
M_UINT (Packet_Downlink_Assignment_t, CONTROL_ACK, 1),
M_UINT (Packet_Downlink_Assignment_t, TIMESLOT_ALLOCATION, 8),
M_TYPE (Packet_Downlink_Assignment_t, Packet_Timing_Advance, Packet_Timing_Advance_t),
M_NEXT_EXIST (Packet_Downlink_Assignment_t, Exist_P0_and_BTS_PWR_CTRL_MODE, 3),
M_UINT (Packet_Downlink_Assignment_t, P0, 4),
M_UINT (Packet_Downlink_Assignment_t, BTS_PWR_CTRL_MODE, 1),
M_UINT (Packet_Downlink_Assignment_t, PR_MODE, 1),
M_NEXT_EXIST (Packet_Downlink_Assignment_t, Exist_Frequency_Parameters, 1),
M_TYPE (Packet_Downlink_Assignment_t, Frequency_Parameters, Frequency_Parameters_t),
M_NEXT_EXIST (Packet_Downlink_Assignment_t, Exist_DOWNLINK_TFI_ASSIGNMENT, 1),
M_UINT (Packet_Downlink_Assignment_t, DOWNLINK_TFI_ASSIGNMENT, 5),
M_NEXT_EXIST (Packet_Downlink_Assignment_t, Exist_Power_Control_Parameters, 1),
M_TYPE (Packet_Downlink_Assignment_t, Power_Control_Parameters, Power_Control_Parameters_t),
M_NEXT_EXIST (Packet_Downlink_Assignment_t, Exist_TBF_Starting_Time, 1),
M_TYPE (Packet_Downlink_Assignment_t, TBF_Starting_Time, Starting_Frame_Number_t),
M_NEXT_EXIST (Packet_Downlink_Assignment_t, Exist_Measurement_Mapping, 1),
M_TYPE (Packet_Downlink_Assignment_t, Measurement_Mapping, Measurement_Mapping_struct_t),
M_NEXT_EXIST_OR_NULL(Packet_Downlink_Assignment_t, Exist_AdditionsR99, 1),
M_TYPE (Packet_Downlink_Assignment_t, AdditionsR99, PDA_AdditionsR99_t),
M_PADDING_BITS (Packet_Downlink_Assignment_t),
CSN_DESCR_END (Packet_Downlink_Assignment_t)
typedef Packet_Downlink_Assignment_t pdlaCheck_t;
#if 0
static const
CSN_DESCR_BEGIN(pdlaCheck_t)
M_UINT (pdlaCheck_t, MESSAGE_TYPE, 6),
M_UINT (pdlaCheck_t, PAGE_MODE, 2),
M_NEXT_EXIST (pdlaCheck_t, Exist_PERSISTENCE_LEVEL, 1),
M_UINT_ARRAY (pdlaCheck_t, PERSISTENCE_LEVEL, 4, 4),
M_TYPE (pdlaCheck_t, ID, PacketDownlinkID_t),
CSN_DESCR_END (pdlaCheck_t)
#endif
#if 0
/* DTM Packet UL Assignment */
static const
CSN_DESCR_BEGIN(DTM_Packet_Uplink_Assignment_t)
M_UINT (DTM_Packet_Uplink_Assignment_t, CHANNEL_CODING_COMMAND, 2),
M_UINT (DTM_Packet_Uplink_Assignment_t, TLLI_BLOCK_CHANNEL_CODING, 1),
M_TYPE (DTM_Packet_Uplink_Assignment_t, Packet_Timing_Advance, Packet_Timing_Advance_t),
M_UNION (DTM_Packet_Uplink_Assignment_t, 3),
CSN_ERROR (DTM_Packet_Uplink_Assignment_t, "Not Implemented", CSN_ERROR_STREAM_NOT_SUPPORTED),
M_TYPE (DTM_Packet_Uplink_Assignment_t, u.DTM_Dynamic_Allocation, DTM_Dynamic_Allocation_t),
M_TYPE (DTM_Packet_Uplink_Assignment_t, u.DTM_Single_Block_Allocation, DTM_Single_Block_Allocation_t),
M_NEXT_EXIST_OR_NULL (DTM_Packet_Uplink_Assignment_t, Exist_EGPRS_Parameters, 3),
M_UINT (DTM_Packet_Uplink_Assignment_t, EGPRS_CHANNEL_CODING_COMMAND, 4),
M_UINT (DTM_Packet_Uplink_Assignment_t, RESEGMENT, 1),
M_UINT (DTM_Packet_Uplink_Assignment_t, EGPRS_WindowSize, 5),
M_NEXT_EXIST (DTM_Packet_Uplink_Assignment_t, Exist_Packet_Extended_Timing_Advance, 1),
M_UINT (DTM_Packet_Uplink_Assignment_t, Packet_Extended_Timing_Advance, 2),
CSN_DESCR_END(DTM_Packet_Uplink_Assignment_t)
#endif
#if 0
static const
CSN_DESCR_BEGIN(DTM_UL_t)
M_TYPE (DTM_UL_t, DTM_Packet_Uplink_Assignment, DTM_Packet_Uplink_Assignment_t),
CSN_DESCR_END(DTM_UL_t)
#endif
/* DTM Packet DL Assignment */
#if 0
static const
CSN_DESCR_BEGIN(DTM_Packet_Downlink_Assignment_t)
M_UINT (DTM_Packet_Downlink_Assignment_t, MAC_MODE, 2),
M_UINT (DTM_Packet_Downlink_Assignment_t, RLC_MODE ,1),
M_UINT (DTM_Packet_Downlink_Assignment_t, TIMESLOT_ALLOCATION, 8),
M_TYPE (DTM_Packet_Downlink_Assignment_t, Packet_Timing_Advance, Packet_Timing_Advance_t),
M_NEXT_EXIST (DTM_Packet_Downlink_Assignment_t, Exist_P0_and_BTS_PWR_CTRL_MODE, 3),
M_UINT (DTM_Packet_Downlink_Assignment_t, P0, 4),
M_UINT (DTM_Packet_Downlink_Assignment_t, BTS_PWR_CTRL_MODE, 1),
M_UINT (DTM_Packet_Downlink_Assignment_t, PR_MODE, 1),
M_NEXT_EXIST (DTM_Packet_Downlink_Assignment_t, Exist_Power_Control_Parameters, 1),
M_TYPE (DTM_Packet_Downlink_Assignment_t, Power_Control_Parameters, Power_Control_Parameters_t),
M_NEXT_EXIST (DTM_Packet_Downlink_Assignment_t, Exist_DOWNLINK_TFI_ASSIGNMENT, 1),
M_UINT (DTM_Packet_Downlink_Assignment_t, DOWNLINK_TFI_ASSIGNMENT, 5),
M_NEXT_EXIST (DTM_Packet_Downlink_Assignment_t, Exist_Measurement_Mapping, 1),
M_TYPE (DTM_Packet_Downlink_Assignment_t, Measurement_Mapping, Measurement_Mapping_struct_t),
M_NEXT_EXIST_OR_NULL (DTM_Packet_Downlink_Assignment_t, EGPRS_Mode, 2),
M_UINT (DTM_Packet_Downlink_Assignment_t, EGPRS_WindowSize, 5),
M_UINT (DTM_Packet_Downlink_Assignment_t, LINK_QUALITY_MEASUREMENT_MODE, 2),
M_NEXT_EXIST (DTM_Packet_Downlink_Assignment_t, Exist_Packet_Extended_Timing_Advance, 1),
M_UINT (DTM_Packet_Downlink_Assignment_t, Packet_Extended_Timing_Advance, 2),
CSN_DESCR_END(DTM_Packet_Downlink_Assignment_t)
#endif
#if 0
static const
CSN_DESCR_BEGIN(DTM_DL_t)
M_TYPE (DTM_DL_t, DTM_Packet_Downlink_Assignment, DTM_Packet_Downlink_Assignment_t),
CSN_DESCR_END(DTM_DL_t)
#endif
/* GPRS Broadcast Information */
#if 0
static const
CSN_DESCR_BEGIN(DTM_GPRS_Broadcast_Information_t)
M_TYPE (DTM_GPRS_Broadcast_Information_t, GPRS_Cell_Options, GPRS_Cell_Options_t),
M_TYPE (DTM_GPRS_Broadcast_Information_t, GPRS_Power_Control_Parameters, GPRS_Power_Control_Parameters_t),
CSN_DESCR_END(DTM_GPRS_Broadcast_Information_t)
#endif
#if 0
static const
CSN_DESCR_BEGIN(DTM_GPRS_B_t)
M_TYPE (DTM_GPRS_B_t, DTM_GPRS_Broadcast_Information, DTM_GPRS_Broadcast_Information_t),
CSN_DESCR_END(DTM_GPRS_B_t)
#endif
#if 0
static const
CSN_DESCR_BEGIN(DTM_Channel_Request_Description_t)
M_UINT (DTM_Channel_Request_Description_t, DTM_Pkt_Est_Cause, 2),
M_TYPE (DTM_Channel_Request_Description_t, Channel_Request_Description, Channel_Request_Description_t),
M_NEXT_EXIST (DTM_Channel_Request_Description_t, Exist_PFI, 1),
M_UINT (DTM_Channel_Request_Description_t, PFI, 7),
CSN_DESCR_END(DTM_Channel_Request_Description_t)
#endif
/* DTM */
/*< Packet Paging Request message content > */
typedef struct
{
guint8 Length_of_Mobile_Identity_contents;/* bit (4) */
guint8 Mobile_Identity[8];/* octet (val (Length of Mobile Identity contents)) */
} Mobile_Identity_t; /* helper */
static const
CSN_DESCR_BEGIN(Mobile_Identity_t)
M_UINT (Mobile_Identity_t, Length_of_Mobile_Identity_contents, 4),
M_VAR_ARRAY (Mobile_Identity_t, Mobile_Identity, Length_of_Mobile_Identity_contents, 0),
CSN_DESCR_END (Mobile_Identity_t)
static const
CSN_DESCR_BEGIN(Page_request_for_TBF_establishment_t)
M_UNION (Page_request_for_TBF_establishment_t, 2),
M_UINT_ARRAY (Page_request_for_TBF_establishment_t, u.PTMSI, 8, 4),/* bit (32) == 8*4 */
M_TYPE (Page_request_for_TBF_establishment_t, u.Mobile_Identity, Mobile_Identity_t),
CSN_DESCR_END (Page_request_for_TBF_establishment_t)
static const
CSN_DESCR_BEGIN(Page_request_for_RR_conn_t)
M_UNION (Page_request_for_RR_conn_t, 2),
M_UINT_ARRAY (Page_request_for_RR_conn_t, u.TMSI, 8, 4),/* bit (32) == 8*4 */
M_TYPE (Page_request_for_RR_conn_t, u.Mobile_Identity, Mobile_Identity_t),
M_UINT (Page_request_for_RR_conn_t, CHANNEL_NEEDED, 2),
M_NEXT_EXIST (Page_request_for_RR_conn_t, Exist_eMLPP_PRIORITY, 1),
M_UINT (Page_request_for_RR_conn_t, eMLPP_PRIORITY, 3),
CSN_DESCR_END (Page_request_for_RR_conn_t)
static const
CSN_DESCR_BEGIN(Repeated_Page_info_t)
M_UNION (Repeated_Page_info_t, 2),
M_TYPE (Repeated_Page_info_t, u.Page_req_TBF, Page_request_for_TBF_establishment_t),
M_TYPE (Repeated_Page_info_t, u.Page_req_RR, Page_request_for_RR_conn_t),
CSN_DESCR_END (Repeated_Page_info_t)
static const
CSN_DESCR_BEGIN(Packet_Paging_Request_t)
M_UINT (Packet_Paging_Request_t, MESSAGE_TYPE, 6),
M_UINT (Packet_Paging_Request_t, PAGE_MODE, 2),
M_NEXT_EXIST (Packet_Paging_Request_t, Exist_PERSISTENCE_LEVEL, 1),
M_UINT_ARRAY (Packet_Paging_Request_t, PERSISTENCE_LEVEL, 4, 4), /* 4bit*4 */
M_NEXT_EXIST (Packet_Paging_Request_t, Exist_NLN, 1),
M_UINT (Packet_Paging_Request_t, NLN, 2),
M_REC_TARRAY (Packet_Paging_Request_t, Repeated_Page_info, Repeated_Page_info_t, Count_Repeated_Page_info),
M_PADDING_BITS(Packet_Paging_Request_t),
CSN_DESCR_END (Packet_Paging_Request_t)
static const
CSN_DESCR_BEGIN(Packet_PDCH_Release_t)
M_UINT (Packet_PDCH_Release_t, MESSAGE_TYPE, 6),
M_UINT (Packet_PDCH_Release_t, PAGE_MODE, 2),
M_FIXED (Packet_PDCH_Release_t, 1, 0x01),
M_UINT (Packet_PDCH_Release_t, TIMESLOTS_AVAILABLE, 8),
M_PADDING_BITS(Packet_PDCH_Release_t),
CSN_DESCR_END (Packet_PDCH_Release_t)
/*< Packet Power Control/Timing Advance message content >*/
static const
CSN_DESCR_BEGIN(GlobalTimingAndPower_t)
M_TYPE (GlobalTimingAndPower_t, Global_Packet_Timing_Advance, Global_Packet_Timing_Advance_t),
M_TYPE (GlobalTimingAndPower_t, Power_Control_Parameters, Power_Control_Parameters_t),
CSN_DESCR_END (GlobalTimingAndPower_t)
static const
CSN_DESCR_BEGIN(GlobalTimingOrPower_t)
M_UNION (GlobalTimingOrPower_t, 2),
M_TYPE (GlobalTimingOrPower_t, u.Global_Packet_Timing_Advance, Global_Packet_Timing_Advance_t),
M_TYPE (GlobalTimingOrPower_t, u.Power_Control_Parameters, Power_Control_Parameters_t),
CSN_DESCR_END (GlobalTimingOrPower_t)
static const
CSN_ChoiceElement_t PacketPowerControlTimingAdvanceID[] =
{
{1, 0, 0, M_TYPE(PacketPowerControlTimingAdvanceID_t, u.Global_TFI, Global_TFI_t)},
{3, 0x06, 0, M_UINT(PacketPowerControlTimingAdvanceID_t, u.TQI, 16)},
{3, 0x07, 0, M_TYPE(PacketPowerControlTimingAdvanceID_t, u.Packet_Request_Reference, Packet_Request_Reference_t)},
};
static const
CSN_DESCR_BEGIN(PacketPowerControlTimingAdvanceID_t)
M_CHOICE (PacketPowerControlTimingAdvanceID_t, UnionType, PacketPowerControlTimingAdvanceID, ElementsOf(PacketPowerControlTimingAdvanceID)),
CSN_DESCR_END (PacketPowerControlTimingAdvanceID_t)
static const
CSN_DESCR_BEGIN(Packet_Power_Control_Timing_Advance_t)
M_UINT (Packet_Power_Control_Timing_Advance_t, MESSAGE_TYPE, 6),
M_UINT (Packet_Power_Control_Timing_Advance_t, PAGE_MODE, 2),
M_TYPE (Packet_Power_Control_Timing_Advance_t, ID, PacketPowerControlTimingAdvanceID_t),
/*-- Message escape*/
M_FIXED (Packet_Power_Control_Timing_Advance_t, 1, 0x00),
M_NEXT_EXIST (Packet_Power_Control_Timing_Advance_t, Exist_Global_Power_Control_Parameters, 1),
M_TYPE (Packet_Power_Control_Timing_Advance_t, Global_Power_Control_Parameters, Global_Power_Control_Parameters_t),
M_UNION (Packet_Power_Control_Timing_Advance_t, 2),
M_TYPE (Packet_Power_Control_Timing_Advance_t, u.GlobalTimingAndPower, GlobalTimingAndPower_t),
M_TYPE (Packet_Power_Control_Timing_Advance_t, u.GlobalTimingOrPower, GlobalTimingOrPower_t),
M_PADDING_BITS(Packet_Power_Control_Timing_Advance_t),
CSN_DESCR_END (Packet_Power_Control_Timing_Advance_t)
/*< Packet Queueing Notification message content > */
static const
CSN_DESCR_BEGIN(Packet_Queueing_Notification_t)
M_UINT (Packet_Queueing_Notification_t, MESSAGE_TYPE, 6),
M_UINT (Packet_Queueing_Notification_t, PAGE_MODE, 2),
M_FIXED (Packet_Queueing_Notification_t, 3, 0x07),/* 111 Fixed */
M_TYPE (Packet_Queueing_Notification_t, Packet_Request_Reference, Packet_Request_Reference_t),
M_UINT (Packet_Queueing_Notification_t, TQI, 16),
M_PADDING_BITS(Packet_Queueing_Notification_t),
CSN_DESCR_END (Packet_Queueing_Notification_t)
/* USED in Packet Timeslot Reconfigure message content
* This is almost the same structure as used in
* <Packet Uplink Assignment message content> but UPLINK_TFI_ASSIGNMENT is removed.
*/
static const
CSN_DESCR_BEGIN(TRDynamic_Allocation_t)
M_UINT (TRDynamic_Allocation_t, Extended_Dynamic_Allocation, 1),
M_NEXT_EXIST (TRDynamic_Allocation_t, Exist_P0, 2),
M_UINT (TRDynamic_Allocation_t, P0, 4),
M_UINT (TRDynamic_Allocation_t, PR_MODE, 1),
M_UINT (TRDynamic_Allocation_t, USF_GRANULARITY, 1),
M_NEXT_EXIST (TRDynamic_Allocation_t, Exist_RLC_DATA_BLOCKS_GRANTED, 1),
M_UINT (TRDynamic_Allocation_t, RLC_DATA_BLOCKS_GRANTED, 8),
M_NEXT_EXIST (TRDynamic_Allocation_t, Exist_TBF_Starting_Time, 1),
M_TYPE (TRDynamic_Allocation_t, TBF_Starting_Time, Starting_Frame_Number_t),
M_UNION (TRDynamic_Allocation_t, 2),
M_TYPE_ARRAY (TRDynamic_Allocation_t, u.Timeslot_Allocation, Timeslot_Allocation_t, 8),
M_TYPE (TRDynamic_Allocation_t, u.Timeslot_Allocation_Power_Ctrl_Param, Timeslot_Allocation_Power_Ctrl_Param_t),
CSN_DESCR_END (TRDynamic_Allocation_t)
/*< Packet Timeslot Reconfigure message content > */
static const
CSN_DESCR_BEGIN(PTR_GPRS_AdditionsR99_t)
M_NEXT_EXIST (PTR_GPRS_AdditionsR99_t, Exist_Packet_Extended_Timing_Advance, 1),
M_UINT (PTR_GPRS_AdditionsR99_t, Packet_Extended_Timing_Advance, 2),
CSN_DESCR_END (PTR_GPRS_AdditionsR99_t)
static const
CSN_DESCR_BEGIN (PTR_GPRS_t)
M_UINT (PTR_GPRS_t, CHANNEL_CODING_COMMAND, 2),
M_TYPE (PTR_GPRS_t, Common_Timeslot_Reconfigure_Data.Global_Packet_Timing_Advance, Global_Packet_Timing_Advance_t),
M_UINT (PTR_GPRS_t, Common_Timeslot_Reconfigure_Data.DOWNLINK_RLC_MODE, 1),
M_UINT (PTR_GPRS_t, Common_Timeslot_Reconfigure_Data.CONTROL_ACK, 1),
M_NEXT_EXIST (PTR_GPRS_t, Common_Timeslot_Reconfigure_Data.Exist_DOWNLINK_TFI_ASSIGNMENT, 1),
M_UINT (PTR_GPRS_t, Common_Timeslot_Reconfigure_Data.DOWNLINK_TFI_ASSIGNMENT, 5),
M_NEXT_EXIST (PTR_GPRS_t, Common_Timeslot_Reconfigure_Data.Exist_UPLINK_TFI_ASSIGNMENT, 1),
M_UINT (PTR_GPRS_t, Common_Timeslot_Reconfigure_Data.UPLINK_TFI_ASSIGNMENT, 5),
M_UINT (PTR_GPRS_t, Common_Timeslot_Reconfigure_Data.DOWNLINK_TIMESLOT_ALLOCATION, 8),
M_NEXT_EXIST (PTR_GPRS_t, Common_Timeslot_Reconfigure_Data.Exist_Frequency_Parameters, 1),
M_TYPE (PTR_GPRS_t, Common_Timeslot_Reconfigure_Data.Frequency_Parameters, Frequency_Parameters_t),
M_UNION (PTR_GPRS_t, 2),
M_TYPE (PTR_GPRS_t, u.Dynamic_Allocation, TRDynamic_Allocation_t),
CSN_ERROR (PTR_GPRS_t, "1 - Fixed Allocation was removed", CSN_ERROR_STREAM_NOT_SUPPORTED),
M_NEXT_EXIST_OR_NULL(PTR_GPRS_t, Exist_AdditionsR99, 1),
M_TYPE (PTR_GPRS_t, AdditionsR99, PTR_GPRS_AdditionsR99_t),
CSN_DESCR_END (PTR_GPRS_t)
static const
CSN_DESCR_BEGIN(PTR_EGPRS_00_t)
M_NEXT_EXIST (PTR_EGPRS_00_t, Exist_COMPACT_ReducedMA, 1),
M_TYPE (PTR_EGPRS_00_t, COMPACT_ReducedMA, COMPACT_ReducedMA_t),
M_UINT (PTR_EGPRS_00_t, EGPRS_ChannelCodingCommand, 4),
M_UINT (PTR_EGPRS_00_t, RESEGMENT, 1),
M_NEXT_EXIST (PTR_EGPRS_00_t, Exist_DOWNLINK_EGPRS_WindowSize, 1),
M_UINT (PTR_EGPRS_00_t, DOWNLINK_EGPRS_WindowSize, 5),
M_NEXT_EXIST (PTR_EGPRS_00_t, Exist_UPLINK_EGPRS_WindowSize, 1),
M_UINT (PTR_EGPRS_00_t, UPLINK_EGPRS_WindowSize, 5),
M_UINT (PTR_EGPRS_00_t, LINK_QUALITY_MEASUREMENT_MODE, 2),
M_TYPE (PTR_EGPRS_00_t, Common_Timeslot_Reconfigure_Data.Global_Packet_Timing_Advance, Global_Packet_Timing_Advance_t),
M_NEXT_EXIST (PTR_EGPRS_00_t, Exist_Packet_Extended_Timing_Advance, 1),
M_UINT (PTR_EGPRS_00_t, Packet_Extended_Timing_Advance, 2),
M_UINT (PTR_EGPRS_00_t, Common_Timeslot_Reconfigure_Data.DOWNLINK_RLC_MODE, 1),
M_UINT (PTR_EGPRS_00_t, Common_Timeslot_Reconfigure_Data.CONTROL_ACK, 1),
M_NEXT_EXIST (PTR_EGPRS_00_t, Common_Timeslot_Reconfigure_Data.Exist_DOWNLINK_TFI_ASSIGNMENT, 1),
M_UINT (PTR_EGPRS_00_t, Common_Timeslot_Reconfigure_Data.DOWNLINK_TFI_ASSIGNMENT, 5),
M_NEXT_EXIST (PTR_EGPRS_00_t, Common_Timeslot_Reconfigure_Data.Exist_UPLINK_TFI_ASSIGNMENT, 1),
M_UINT (PTR_EGPRS_00_t, Common_Timeslot_Reconfigure_Data.UPLINK_TFI_ASSIGNMENT, 5),
M_UINT (PTR_EGPRS_00_t, Common_Timeslot_Reconfigure_Data.DOWNLINK_TIMESLOT_ALLOCATION, 8),
M_NEXT_EXIST (PTR_EGPRS_00_t, Common_Timeslot_Reconfigure_Data.Exist_Frequency_Parameters, 1),
M_TYPE (PTR_EGPRS_00_t, Common_Timeslot_Reconfigure_Data.Frequency_Parameters, Frequency_Parameters_t),
M_UNION (PTR_EGPRS_00_t, 2),
M_TYPE (PTR_EGPRS_00_t, u.Dynamic_Allocation, TRDynamic_Allocation_t),
CSN_ERROR (PTR_EGPRS_00_t, "1 <Fixed Allocation>", CSN_ERROR_STREAM_NOT_SUPPORTED),
CSN_DESCR_END (PTR_EGPRS_00_t)
static const
CSN_DESCR_BEGIN(PTR_EGPRS_t)
M_UNION (PTR_EGPRS_t, 4),
M_TYPE (PTR_EGPRS_t, u.PTR_EGPRS_00, PTR_EGPRS_00_t),
CSN_ERROR (PTR_EGPRS_t, "01 <PTR_EGPRS>", CSN_ERROR_STREAM_NOT_SUPPORTED),
CSN_ERROR (PTR_EGPRS_t, "10 <PTR_EGPRS>", CSN_ERROR_STREAM_NOT_SUPPORTED),
CSN_ERROR (PTR_EGPRS_t, "11 <PTR_EGPRS>", CSN_ERROR_STREAM_NOT_SUPPORTED),
CSN_DESCR_END (PTR_EGPRS_t)
static const
CSN_DESCR_BEGIN(Packet_Timeslot_Reconfigure_t)
M_UINT (Packet_Timeslot_Reconfigure_t, MESSAGE_TYPE, 6),
M_UINT (Packet_Timeslot_Reconfigure_t, PAGE_MODE, 2),
M_FIXED (Packet_Timeslot_Reconfigure_t, 1, 0x00),
M_TYPE (Packet_Timeslot_Reconfigure_t, Global_TFI, Global_TFI_t),
M_UNION (Packet_Timeslot_Reconfigure_t, 2),
M_TYPE (Packet_Timeslot_Reconfigure_t, u.PTR_GPRS_Struct, PTR_GPRS_t),
M_TYPE (Packet_Timeslot_Reconfigure_t, u.PTR_EGPRS_Struct, PTR_EGPRS_t),
M_PADDING_BITS(Packet_Timeslot_Reconfigure_t),
CSN_DESCR_END (Packet_Timeslot_Reconfigure_t)
typedef Packet_Timeslot_Reconfigure_t PTRCheck_t;
#if 0
static const
CSN_DESCR_BEGIN(PTRCheck_t)
M_UINT (PTRCheck_t, MESSAGE_TYPE, 6),
M_UINT (PTRCheck_t, PAGE_MODE, 2),
M_FIXED (PTRCheck_t, 1, 0x00),/* 0 fixed */
M_TYPE (PTRCheck_t, Global_TFI, Global_TFI_t),
CSN_DESCR_END (PTRCheck_t)
#endif
/*< Packet PRACH Parameters message content > */
static const
CSN_DESCR_BEGIN(PRACH_Control_t)
M_UINT_ARRAY (PRACH_Control_t, ACC_CONTR_CLASS, 8, 2), /* bit (16) == 8bit*2 */
M_UINT_ARRAY (PRACH_Control_t, MAX_RETRANS, 2, 4), /* bit (2) * 4 */
M_UINT (PRACH_Control_t, S, 4),
M_UINT (PRACH_Control_t, TX_INT, 4),
M_NEXT_EXIST (PRACH_Control_t, Exist_PERSISTENCE_LEVEL, 1),
M_UINT_ARRAY (PRACH_Control_t, PERSISTENCE_LEVEL, 4, 4),
CSN_DESCR_END (PRACH_Control_t)
static const
CSN_DESCR_BEGIN(Cell_Allocation_t)
M_REC_ARRAY (Cell_Allocation_t, RFL_Number, NoOfRFLs, 4),
CSN_DESCR_END (Cell_Allocation_t)
static const
CSN_DESCR_BEGIN(HCS_t)
M_UINT (HCS_t, PRIORITY_CLASS, 3),
M_UINT (HCS_t, HCS_THR, 5),
CSN_DESCR_END (HCS_t)
static const
CSN_DESCR_BEGIN(Location_Repeat_t)
M_UINT (Location_Repeat_t, PBCCH_LOCATION, 2),
M_UINT (Location_Repeat_t, PSI1_REPEAT_PERIOD, 4),
CSN_DESCR_END (Location_Repeat_t)
static const
CSN_DESCR_BEGIN(SI13_PBCCH_Location_t)
M_UNION (SI13_PBCCH_Location_t, 2),
M_UINT (SI13_PBCCH_Location_t, u.SI13_LOCATION, 1),
M_TYPE (SI13_PBCCH_Location_t, u.lr, Location_Repeat_t),
CSN_DESCR_END (SI13_PBCCH_Location_t)
static const
CSN_DESCR_BEGIN(Cell_Selection_t)
M_UINT (Cell_Selection_t, BSIC, 6),
M_UINT (Cell_Selection_t, CELL_BAR_ACCESS_2, 1),
M_UINT (Cell_Selection_t, EXC_ACC, 1),
M_UINT (Cell_Selection_t, SAME_RA_AS_SERVING_CELL, 1),
M_NEXT_EXIST (Cell_Selection_t, Exist_RXLEV_and_TXPWR, 2),
M_UINT (Cell_Selection_t, GPRS_RXLEV_ACCESS_MIN, 6),
M_UINT (Cell_Selection_t, GPRS_MS_TXPWR_MAX_CCH, 5),
M_NEXT_EXIST (Cell_Selection_t, Exist_OFFSET_and_TIME, 2),
M_UINT (Cell_Selection_t, GPRS_TEMPORARY_OFFSET, 3),
M_UINT (Cell_Selection_t, GPRS_PENALTY_TIME, 5),
M_NEXT_EXIST (Cell_Selection_t, Exist_GPRS_RESELECT_OFFSET, 1),
M_UINT (Cell_Selection_t, GPRS_RESELECT_OFFSET, 5),
M_NEXT_EXIST (Cell_Selection_t, Exist_HCS, 1),
M_TYPE (Cell_Selection_t, HCS, HCS_t),
M_NEXT_EXIST (Cell_Selection_t, Exist_SI13_PBCCH_Location, 1),
M_TYPE (Cell_Selection_t, SI13_PBCCH_Location, SI13_PBCCH_Location_t),
CSN_DESCR_END (Cell_Selection_t)
static const
CSN_DESCR_BEGIN(Cell_Selection_Params_With_FreqDiff_t)
M_VAR_BITMAP (Cell_Selection_Params_With_FreqDiff_t, FREQUENCY_DIFF, FREQ_DIFF_LENGTH, 0),
M_TYPE (Cell_Selection_Params_With_FreqDiff_t, Cell_SelectionParams, Cell_Selection_t),
CSN_DESCR_END (Cell_Selection_Params_With_FreqDiff_t)
CSN_CallBackStatus_t callback_init_Cell_Selection_Params_FREQUENCY_DIFF(struct bitvec *vector, unsigned *readIndex, void* param1, void* param2)
{
guint i;
guint8 freq_diff_len = *(guint8*)param1;
Cell_Selection_Params_With_FreqDiff_t *pCell_Sel_Param = (Cell_Selection_Params_With_FreqDiff_t*)param2;
for( i=0; i<16; i++, pCell_Sel_Param++ )
{
pCell_Sel_Param->FREQ_DIFF_LENGTH = freq_diff_len;
}
return 0;
}
static const
CSN_DESCR_BEGIN(NeighbourCellParameters_t)
M_UINT (NeighbourCellParameters_t, START_FREQUENCY, 10),
M_TYPE (NeighbourCellParameters_t, Cell_Selection, Cell_Selection_t),
M_UINT (NeighbourCellParameters_t, NR_OF_REMAINING_CELLS, 4),
M_UINT_OFFSET(NeighbourCellParameters_t, FREQ_DIFF_LENGTH, 3, 1),/* offset 1 */
M_CALLBACK (NeighbourCellParameters_t, callback_init_Cell_Selection_Params_FREQUENCY_DIFF, FREQ_DIFF_LENGTH, Cell_Selection_Params_With_FreqDiff),
M_VAR_TARRAY (NeighbourCellParameters_t, Cell_Selection_Params_With_FreqDiff, Cell_Selection_Params_With_FreqDiff_t, NR_OF_REMAINING_CELLS),
CSN_DESCR_END (NeighbourCellParameters_t)
static const
CSN_DESCR_BEGIN(NeighbourCellList_t)
M_REC_TARRAY (NeighbourCellList_t, Parameters, NeighbourCellParameters_t, Count),
CSN_DESCR_END (NeighbourCellList_t)
static const
CSN_DESCR_BEGIN(Cell_Selection_2_t)
M_UINT (Cell_Selection_2_t, CELL_BAR_ACCESS_2, 1),
M_UINT (Cell_Selection_2_t, EXC_ACC, 1),
M_UINT (Cell_Selection_2_t, SAME_RA_AS_SERVING_CELL, 1),
M_NEXT_EXIST (Cell_Selection_2_t, Exist_RXLEV_and_TXPWR, 2),
M_UINT (Cell_Selection_2_t, GPRS_RXLEV_ACCESS_MIN, 6),
M_UINT (Cell_Selection_2_t, GPRS_MS_TXPWR_MAX_CCH, 5),
M_NEXT_EXIST (Cell_Selection_2_t, Exist_OFFSET_and_TIME, 2),
M_UINT (Cell_Selection_2_t, GPRS_TEMPORARY_OFFSET, 3),
M_UINT (Cell_Selection_2_t,