FreeCalypso > hg > fc-tourmaline
diff src/g23m-gprs/grr/grr_gfpp.c @ 1:fa8dc04885d8
src/g23m-*: import from Magnetite
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 16 Oct 2020 06:25:50 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/g23m-gprs/grr/grr_gfpp.c Fri Oct 16 06:25:50 2020 +0000 @@ -0,0 +1,928 @@ +/* ++----------------------------------------------------------------------------- +| Project : GPRS (8441) +| Modul : GRR ++----------------------------------------------------------------------------- +| Copyright 2002 Texas Instruments Berlin, AG +| All rights reserved. +| +| This file is confidential and a trade secret of Texas +| Instruments Berlin, AG +| The receipt of or possession of this file does not convey +| any rights to reproduce or disclose its contents or to +| manufacture, use, or sell anything it may describe, in +| whole, or in part, without the specific written consent of +| Texas Instruments Berlin, AG. ++----------------------------------------------------------------------------- +| Purpose : This module implements primitive handler functions for service +| GFP of entity GRR. ++----------------------------------------------------------------------------- +*/ + +#ifndef GRR_GFPP_C +#define GRR_GFPP_C +#endif + +#define ENTITY_GRR + +/*==== INCLUDES =============================================================*/ + +#include "typedefs.h" /* to get Condat data types */ + +#include "vsi.h" /* to get a lot of macros */ +#include "macdef.h" +#include "gprs.h" +#include "gsm.h" /* to get a lot of macros */ +#include "ccdapi.h" /* to get CCD API */ +#include "prim.h" /* to get the definitions of used SAP and directions */ +#include "message.h" +#include "grr.h" /* to get the global entity definitions */ +#include "grr_f.h" /* to get the global entity procedure definitions */ +#include "grr_gfpf.h" +#include "grr_pgs.h" +#include "grr_psis.h" +#include "grr_css.h" +#include "grr_meass.h" +#include "grr_measf.h" +#include "grr_tcs.h" +#include "grr_ctrls.h" +#include "cl_rlcmac.h" + +/*==== CONST ================================================================*/ + +/*==== DIAGNOSTICS ==========================================================*/ + +/*==== LOCAL VARS ===========================================================*/ +LOCAL void gfp_adapt_fn ( ULONG fn ); +/*==== PRIVATE FUNCTIONS ====================================================*/ + +/* ++------------------------------------------------------------------------------ +| Function : gfp_adapt_fn() ++------------------------------------------------------------------------------ +| Description : The function gfp_adapt_fn() calculates the received frame +| number and the first framenumber of the current radio block +| +| Parameters : fn - frame number, where the block is passed to layer23 +| ++------------------------------------------------------------------------------ +*/ +LOCAL void gfp_adapt_fn ( ULONG fn ) +{ + TRACE_FUNCTION( "gfp_adapt_fn" ); + + /* + * The received frame number is always 4 frames before fn. + */ + + + grr_data->dl_fn = fn-4; + /* + * adapte uplink framenumber from downlink framenumber. + * fn could be an idle frame !!! + */ + + if(!fn) + { + TRACE_EVENT_P1("INVALID FN IN MPHP PRIMITIVE: fn = %ld not alowed",fn); + grr_data->dl_fn = fn; + } + grr_data->ul_fn = fn; + if((grr_data->ul_fn % 13) EQ 12) + grr_data->ul_fn++; + grr_data->ul_fn %= FN_MAX; + +} /* gfp_adapt_fn() */ + + +/*==== PUBLIC FUNCTIONS =====================================================*/ + + + +/* ++------------------------------------------------------------------------------ +| Function : gfp_mphp_data_ind ++------------------------------------------------------------------------------ +| Description : Handles the primitive MPHP_DATA_IND +| +| Parameters : *mphp_data_ind - Ptr to primitive payload +| ++------------------------------------------------------------------------------ +*/ +GLOBAL void gfp_mphp_data_ind ( T_MPHP_DATA_IND *mphp_data_ind ) +{ + TRACE_FUNCTION( "gfp_mphp_data_ind" ); + + + gfp_adapt_fn(mphp_data_ind->fn); + + switch( GET_STATE( GFP ) ) + { + case GFP_IDLE: + PACCESS(mphp_data_ind); + + if(mphp_data_ind->error_flag) + { + if(mphp_data_ind->l2_channel EQ L2_PCHANNEL_PPCH) + { + if(grr_decrease_dsc()) + { + /* + * Inform GRR + */ + sig_gfp_ctrl_dsf_ind(); + } + } +/* + TRACE_ERROR( "MPHP_DATA_IND with error_flag(invalid block)" ); +*/ + + TRACE_BINDUMP + ( hCommGRR, TC_USER5, + cl_rlcmac_get_msg_name( D_MSG_TYPE_CRC_ERROR_c, RLC_MAC_ROUTE_DL ), + mphp_data_ind->l2_frame, MAX_L2_FRAME_SIZE ); /*lint !e569*/ + } + else + { + if(mphp_data_ind->l2_channel EQ L2_PCHANNEL_PPCH) + { + sig_gfp_meas_rxlev_pccch_ind( mphp_data_ind->pccch_lev ); + grr_increase_dsc(); + } + gfp_prcs_ctrl_msg( &mphp_data_ind->l2_frame[0], + mphp_data_ind->l2_channel, + mphp_data_ind->relative_pos, + mphp_data_ind->fn - 4 ); + } + break; + default: + TRACE_ERROR( "MPHP_DATA_IND unexpected" ); + /* + * SZML-SGLBL/008 + */ + break; + } + PFREE(mphp_data_ind); + + +} /* gfp_mphp_data_ind() */ + +/* ++------------------------------------------------------------------------------ +| Function : gfp_mphp_scell_pbcch_stop_con ++------------------------------------------------------------------------------ +| Description : Handles the primitive MPHP_SCELL_PBCCH_STOP_CON +| +| Parameters : *mphp_scell_pbcch_stop_con - Ptr to primitive payload +| ++------------------------------------------------------------------------------ +*/ +GLOBAL void gfp_mphp_scell_pbcch_stop_con ( + T_MPHP_SCELL_PBCCH_STOP_CON *mphp_scell_pbcch_stop_con ) +{ + TRACE_FUNCTION( "gfp_mphp_scell_pbcch_stop_con" ); + + + switch( GET_STATE( GFP ) ) + { + case GFP_IDLE: + PACCESS(mphp_scell_pbcch_stop_con); + sig_gfp_psi_scell_pbcch_stop_con(mphp_scell_pbcch_stop_con); + break; + default: + TRACE_ERROR( "MPHP_SCELL_PBCCH_STOP_CON unexpected" ); + break; + } + PFREE(mphp_scell_pbcch_stop_con); + +} /* gfp_mphp_scell_pbcch_stop_con() */ + + + +/* ++------------------------------------------------------------------------------ +| Function : gfp_mphp_stop_pccch_con ++------------------------------------------------------------------------------ +| Description : Handles the primitive MPHP_STOP_PCCCH_CON +| +| Parameters : *mphp_stop_pccch_con - Ptr to primitive payload +| ++------------------------------------------------------------------------------ +*/ +GLOBAL void gfp_mphp_stop_pccch_con ( T_MPHP_STOP_PCCCH_CON *mphp_stop_pccch_con ) +{ + TRACE_FUNCTION( "gfp_mphp_stop_pccch_con" ); + + + switch( GET_STATE( GFP ) ) + { + case GFP_IDLE: + PACCESS(mphp_stop_pccch_con); + sig_gfp_pg_stop_pccch_con(mphp_stop_pccch_con); + break; + default: + TRACE_ERROR( "MPHP_STOP_PCCCH_CON unexpected" ); + break; + } + PFREE(mphp_stop_pccch_con); + +} /* gfp_mphp_stop_pccch_con() */ + + + +/* ++------------------------------------------------------------------------------ +| Function : gfp_mphp_cr_meas_ind ++------------------------------------------------------------------------------ +| Description : Handles the primitive MPHP_CR_MEAS_IND +| +| Parameters : *mphp_cr_meas_ind - Ptr to primitive payload +| ++------------------------------------------------------------------------------ +*/ +GLOBAL void gfp_mphp_cr_meas_ind ( T_MPHP_CR_MEAS_IND *mphp_cr_meas_ind ) +{ + TRACE_FUNCTION( "gfp_mphp_cr_meas_ind" ); + + switch( GET_STATE( GFP ) ) + { + case GFP_IDLE: + PACCESS( mphp_cr_meas_ind ); + sig_gfp_cs_cr_meas_ind( mphp_cr_meas_ind ); + break; + default: + TRACE_ERROR( "MPHP_CR_MEAS_IND unexpected" ); + break; + } + + PFREE( mphp_cr_meas_ind ); +} /* gfp_mphp_cr_meas_ind() */ + + + +/* ++------------------------------------------------------------------------------ +| Function : gfp_mphp_cr_meas_stop_con ++------------------------------------------------------------------------------ +| Description : Handles the primitive MPHP_CR_MEAS_STOP_CON +| +| Parameters : *mphp_cr_meas_stop_con - Ptr to primitive payload +| ++------------------------------------------------------------------------------ +*/ +GLOBAL void gfp_mphp_cr_meas_stop_con ( T_MPHP_CR_MEAS_STOP_CON *mphp_cr_meas_stop_con ) +{ + TRACE_FUNCTION( "gfp_mphp_cr_meas_stop_con" ); + + switch( GET_STATE( GFP ) ) + { + case GFP_IDLE: + PACCESS( mphp_cr_meas_stop_con ); + sig_gfp_cs_cr_meas_stop_con( mphp_cr_meas_stop_con ); + break; + default: + TRACE_ERROR( "MPHP_CR_MEAS_STOP_CON unexpected" ); + break; + } + + PFREE( mphp_cr_meas_stop_con ); +} /* gfp_mphp_cr_meas_stop_con() */ + + + +/* ++------------------------------------------------------------------------------ +| Function : gfp_mphp_int_meas_ind ++------------------------------------------------------------------------------ +| Description : Handles the primitive MPHP_INT_MEAS_IND +| +| Parameters : *mphp_int_meas_ind - Ptr to primitive payload +| ++------------------------------------------------------------------------------ +*/ +GLOBAL void gfp_mphp_int_meas_ind ( T_MPHP_INT_MEAS_IND *mphp_int_meas_ind ) +{ + TRACE_FUNCTION( "gfp_mphp_int_meas_ind" ); + + switch( GET_STATE( GFP ) ) + { + case GFP_IDLE: + PACCESS(mphp_int_meas_ind); + sig_gfp_meas_int_meas_ind(mphp_int_meas_ind); + break; + default: + TRACE_ERROR( "MPHP_INT_MEAS_IND unexpected" ); + break; + } + + PFREE(mphp_int_meas_ind); +} /* gfp_mphp_int_meas_ind() */ + +/* ++------------------------------------------------------------------------------ +| Function : gfp_mphp_tint_meas_ind ++------------------------------------------------------------------------------ +| Description : Handles the primitive MPHP_TINT_MEAS_IND +| +| Parameters : *mphp_tint_meas_ind - Ptr to primitive payload +| ++------------------------------------------------------------------------------ +*/ +GLOBAL void gfp_mphp_tint_meas_ind ( T_MPHP_TINT_MEAS_IND *mphp_tint_meas_ind ) +{ + TRACE_FUNCTION( "gfp_mphp_tint_meas_ind" ); + + switch( GET_STATE( GFP ) ) + { + case GFP_IDLE: + PACCESS(mphp_tint_meas_ind); + sig_gfp_meas_int_meas_ind((T_MPHP_INT_MEAS_IND*)mphp_tint_meas_ind); + break; + default: + TRACE_ERROR( "MPHP_TINT_MEAS_IND unexpected" ); + break; + } + + PFREE(mphp_tint_meas_ind); +} /* gfp_mphp_tint_meas_ind() */ + + + +/* ++------------------------------------------------------------------------------ +| Function : gfp_mphp_int_meas_stop_con ++------------------------------------------------------------------------------ +| Description : Handles the primitive MPHP_INT_MEAS_STOP_CON +| +| Parameters : *mphp_int_meas_stop_con - Ptr to primitive payload +| ++------------------------------------------------------------------------------ +*/ +GLOBAL void gfp_mphp_int_meas_stop_con ( + T_MPHP_INT_MEAS_STOP_CON *mphp_int_meas_stop_con ) +{ + TRACE_FUNCTION( "gfp_mphp_int_meas_stop_con" ); + + + switch( GET_STATE( GFP ) ) + { + case GFP_IDLE: + PACCESS(mphp_int_meas_stop_con); + sig_gfp_meas_int_meas_stop_con(mphp_int_meas_stop_con); + break; + default: + TRACE_ERROR( "MPHP_INT_MEAS_STOP_CON unexpected" ); + break; + } + + PFREE(mphp_int_meas_stop_con); +} /* gfp_mphp_int_meas_stop_con() */ + + + +/* ++------------------------------------------------------------------------------ +| Function : gfp_mphp_ncell_pbcch_ind ++------------------------------------------------------------------------------ +| Description : Handles the primitive MPHP_NCELL_PBCCH_IND +| +| Parameters : *mphp_ncell_pbcch_ind - Ptr to primitive payload +| ++------------------------------------------------------------------------------ +*/ +GLOBAL void gfp_mphp_ncell_pbcch_ind ( + T_MPHP_NCELL_PBCCH_IND *mphp_ncell_pbcch_ind ) +{ + TRACE_FUNCTION( "gfp_mphp_ncell_pbcch_ind" ); + + gfp_adapt_fn(mphp_ncell_pbcch_ind->fn); + + switch( GET_STATE( GFP ) ) + { + case GFP_IDLE: + PACCESS(mphp_ncell_pbcch_ind); + if(mphp_ncell_pbcch_ind->error_flag) + { + TRACE_ERROR( "MPHP_NCELL_PBCCH_IND with error_flag(invalid block)" ); + + TRACE_BINDUMP + ( hCommGRR, TC_USER5, + cl_rlcmac_get_msg_name( D_MSG_TYPE_CRC_ERROR_c, RLC_MAC_ROUTE_DL ), + mphp_ncell_pbcch_ind->l2_frame, MAX_L2_FRAME_SIZE ); /*lint !e569*/ + } + else + { + gfp_prcs_ctrl_msg( &mphp_ncell_pbcch_ind->l2_frame[0], + mphp_ncell_pbcch_ind->l2_channel, + mphp_ncell_pbcch_ind->relative_pos, + mphp_ncell_pbcch_ind->fn - 4 ); + } + break; + default: + TRACE_ERROR( "MPHP_NCELL_PBCCH_IND unexpected" ); + break; + } + PFREE(mphp_ncell_pbcch_ind); + +} /* gfp_mphp_ncell_pbcch_ind() */ + + + +/* ++------------------------------------------------------------------------------ +| Function : gfp_mphp_ra_con ++------------------------------------------------------------------------------ +| Description : Handles the primitive MPHP_RA_CON +| +| Parameters : *mphp_ra_con - Ptr to primitive payload +| ++------------------------------------------------------------------------------ +*/ +GLOBAL void gfp_mphp_ra_con ( T_MPHP_RA_CON *mphp_ra_con ) +{ + TRACE_FUNCTION( "gfp_mphp_ra_con" ); + + gfp_adapt_fn(mphp_ra_con->fn); + + switch( GET_STATE( GFP ) ) + { + case GFP_IDLE: + PACCESS(mphp_ra_con); + sig_gfp_tc_ra_con(mphp_ra_con); + break; + default: + TRACE_ERROR( "MPHP_RA_CON unexpected" ); + break; + } + PFREE(mphp_ra_con); + +} /* gfp_mphp_ra_con() */ + + + +/* ++------------------------------------------------------------------------------ +| Function : gfp_mphp_ra_stop_con ++------------------------------------------------------------------------------ +| Description : Handles the primitive MPHP_RA_STOP_CON +| +| Parameters : *mphp_ra_stop_con - Ptr to primitive payload +| ++------------------------------------------------------------------------------ +*/ +GLOBAL void gfp_mphp_ra_stop_con ( T_MPHP_RA_STOP_CON *mphp_ra_stop_con ) +{ + TRACE_FUNCTION( "gfp_mphp_ra_stop_con" ); + + + switch( GET_STATE( GFP ) ) + { + case GFP_IDLE: + PACCESS(mphp_ra_stop_con); + sig_gfp_tc_ra_stop_con(mphp_ra_stop_con); + break; + default: + TRACE_ERROR( "MPHP_RA_STOP_CON unexpected" ); + break; + } + PFREE(mphp_ra_stop_con); + +} /* gfp_mphp_ra_stop_con() */ + + + +/* ++------------------------------------------------------------------------------ +| Function : gfp_mphp_polling_ind ++------------------------------------------------------------------------------ +| Description : Handles the primitive MPHP_POLLING_IND +| +| Parameters : *mphp_polling_ind - Ptr to primitive payload +| ++------------------------------------------------------------------------------ +*/ +GLOBAL void gfp_mphp_polling_ind ( T_MPHP_POLLING_IND *mphp_polling_ind ) +{ + TRACE_FUNCTION( "gfp_mphp_polling_ind" ); + + + gfp_adapt_fn(mphp_polling_ind->fn); + + switch( GET_STATE( GFP ) ) + { + case GFP_IDLE: + PACCESS(mphp_polling_ind); + /* + * This Message is not reported to TC, it is not requested + */ + break; + default: + TRACE_ERROR( "MPHP_POLLING_IND unexpected" ); + break; + } + PFREE(mphp_polling_ind); + +} /* gfp_mphp_polling_ind() */ + + + +/* ++------------------------------------------------------------------------------ +| Function : gfp_mphp_assignment_con ++------------------------------------------------------------------------------ +| Description : Handles the primitive MPHP_ASSIGNMENT_CON +| +| Parameters : *mphp_assignment_con - Ptr to primitive payload +| ++------------------------------------------------------------------------------ +*/ +GLOBAL void gfp_mphp_assignment_con ( T_MPHP_ASSIGNMENT_CON *mphp_assignment_con ) +{ + TRACE_FUNCTION( "gfp_mphp_assignment_con" ); + + switch( GET_STATE( GFP ) ) + { + case GFP_IDLE: + PACCESS(mphp_assignment_con); + sig_gfp_tc_assignment_con(); + break; + default: + TRACE_ERROR( "MPHP_ASSIGNMENT_CON unexpected" ); + break; + } + PFREE(mphp_assignment_con); +} /* gfp_mphp_assignment_con() */ + +/* ++------------------------------------------------------------------------------ +| Function : gfp_mphp_repeat_ul_fixed_alloc_con ++------------------------------------------------------------------------------ +| Description : Handles the primitive MPHP_REPEAT_UL_FIXED_ALLOC_CON +| +| Parameters : *mphp_repeat_ul_fixed_alloc_con - Ptr to primitive payload +| ++------------------------------------------------------------------------------ +*/ +GLOBAL void gfp_mphp_repeat_ul_fixed_alloc_con ( + T_MPHP_REPEAT_UL_FIXED_ALLOC_CON *mphp_repeat_ul_fixed_alloc_con ) +{ + TRACE_FUNCTION( "gfp_mphp_repeat_ul_fixed_alloc_con" ); + + + switch( GET_STATE( GFP ) ) + { + case GFP_IDLE: + PACCESS(mphp_repeat_ul_fixed_alloc_con); + /* + * no signal to tc requested + */ + break; + default: + TRACE_ERROR( "MPHP_REPEAT_UL_FIXED_ALLOC_CON unexpected" ); + break; + } + PFREE(mphp_repeat_ul_fixed_alloc_con); +} /* gfp_mphp_repeat_ul_fixed_alloc_con() */ + + + +/* ++------------------------------------------------------------------------------ +| Function : gfp_mphp_single_block_con ++------------------------------------------------------------------------------ +| Description : Handles the primitive MPHP_SINGLE_BLOCK_CON +| +| Parameters : *mphp_single_block_con - Ptr to primitive payload +| ++------------------------------------------------------------------------------ +*/ +GLOBAL void gfp_mphp_single_block_con ( + T_MPHP_SINGLE_BLOCK_CON *mphp_single_block_con ) +{ + BOOL result = FALSE; + TRACE_FUNCTION( "gfp_mphp_single_block_con" ); + + + TRACE_EVENT_P8("BLK_C purp=%d dl_err=%d last_id=%d rec_id=%d sb_st=%d l2_f[0]=0x%x l2_f[1]=0x%x l2_f[2]=0x%x" + ,mphp_single_block_con->purpose + ,mphp_single_block_con->dl_error + ,grr_data->tc.last_rec_nb_id + ,mphp_single_block_con->assign_id + ,mphp_single_block_con->sb_status + ,mphp_single_block_con->l2_frame[0] + ,mphp_single_block_con->l2_frame[1] + ,mphp_single_block_con->l2_frame[2]); + + + switch( GET_STATE( GFP ) ) + { + case GFP_IDLE: + PACCESS(mphp_single_block_con); + if ( (mphp_single_block_con->purpose EQ SINGLE_BLOCK_TRANSFER_DL) AND + (grr_data->tc.last_rec_nb_id EQ mphp_single_block_con->assign_id) ) + { + if( (!mphp_single_block_con->dl_error) AND + (mphp_single_block_con->sb_status EQ SB_STAT_DL_OK) ) + { + result = gfp_prcs_ctrl_msg( mphp_single_block_con->l2_frame, + L2_PCHANNEL_PACCH, + NOT_PRESENT_8BIT, + grr_data->tc.last_rec_nb_fn ); + } + else + { + TRACE_BINDUMP + ( hCommGRR, TC_USER5, + cl_rlcmac_get_msg_name( D_MSG_TYPE_CRC_ERROR_c, RLC_MAC_ROUTE_DL ), + mphp_single_block_con->l2_frame, MAX_L2_FRAME_SIZE ); /*lint !e569*/ + } + } + + if(!result) + { + /* + * no SINGLE_BLOCK_TRANSFER_DL or + * sb_status = 1 --> invalid single block or + * no assignment in downlink single block + */ + sig_gfp_tc_single_block_cnf(mphp_single_block_con); + } + break; + default: + TRACE_ERROR( "MPHP_SINGLE_BLOCK_CON unexpected" ); + break; + } + PFREE(mphp_single_block_con); +} /* gfp_mphp_single_block_con() */ + + + +/* ++------------------------------------------------------------------------------ +| Function : gfp_mphp_tbf_release_con ++------------------------------------------------------------------------------ +| Description : Handles the primitive MPHP_TBF_RELEASE_CON +| +| Parameters : *mphp_tbf_release_con - Ptr to primitive payload +| ++------------------------------------------------------------------------------ +*/ +GLOBAL void gfp_mphp_tbf_release_con ( + T_MPHP_TBF_RELEASE_CON *mphp_tbf_release_con ) +{ + TRACE_FUNCTION( "gfp_mphp_tbf_release_con" ); + + + switch( GET_STATE( GFP ) ) + { + case GFP_IDLE: + PACCESS(mphp_tbf_release_con); + sig_gfp_tc_tbf_release_con(mphp_tbf_release_con); + break; + default: + TRACE_ERROR( "MPHP_TBF_RELEASE_CON unexpected" ); + break; + } + PFREE(mphp_tbf_release_con); + +} /* gfp_mphp_tbf_release_con() */ + + + +/* ++------------------------------------------------------------------------------ +| Function : gfp_mphp_pdch_release_con ++------------------------------------------------------------------------------ +| Description : Handles the primitive MPHP_PDCH_RELEASE_CON +| +| Parameters : *mphp_pdch_release_con - Ptr to primitive payload +| ++------------------------------------------------------------------------------ +*/ +GLOBAL void gfp_mphp_pdch_release_con ( + T_MPHP_PDCH_RELEASE_CON *mphp_pdch_release_con ) +{ + TRACE_FUNCTION( "gfp_mphp_pdch_release_con" ); + + + switch( GET_STATE( GFP ) ) + { + case GFP_IDLE: + PACCESS(mphp_pdch_release_con); + /* + * no signal to tc requested + */ + break; + default: + TRACE_ERROR( "MPHP_PDCH_RELEASE_CON unexpected" ); + break; + } + PFREE(mphp_pdch_release_con); + +} /* gfp_mphp_pdch_release_con() */ + + + +/* ++------------------------------------------------------------------------------ +| Function : gfp_mphp_timing_advance_con ++------------------------------------------------------------------------------ +| Description : Handles the primitive MPHP_TIMING_ADVANCE_CON +| +| Parameters : *mphp_timing_advance_con - Ptr to primitive payload +| ++------------------------------------------------------------------------------ +*/ +GLOBAL void gfp_mphp_timing_advance_con ( + T_MPHP_TIMING_ADVANCE_CON *mphp_timing_advance_con ) +{ + TRACE_FUNCTION( "gfp_mphp_timing_advance_con" ); + + + switch( GET_STATE( GFP ) ) + { + case GFP_IDLE: + PACCESS(mphp_timing_advance_con); + /*not passed to other service, not needed*/ + break; + default: + TRACE_ERROR( "MPHP_TIMING_ADVANCE_CON unexpected" ); + break; + } + PFREE(mphp_timing_advance_con); + +} /* gfp_mphp_timing_advance_con() */ + + + +/* ++------------------------------------------------------------------------------ +| Function : gfp_mphp_update_psi_param_con ++------------------------------------------------------------------------------ +| Description : Handles the primitive MPHP_UPDATE_PSI_PARAM_CON +| +| Parameters : *mphp_update_psi_param_con - Ptr to primitive payload +| ++------------------------------------------------------------------------------ +*/ +GLOBAL void gfp_mphp_update_psi_param_con ( + T_MPHP_UPDATE_PSI_PARAM_CON *mphp_update_psi_param_con ) +{ + TRACE_FUNCTION( "gfp_mphp_update_psi_param_con" ); + + + switch( GET_STATE( GFP ) ) + { + case GFP_IDLE: + PACCESS(mphp_update_psi_param_con); + /*not passed to other service, not needed*/ + break; + default: + TRACE_ERROR( "MPHP_UPDATE_PSI_PARAM_CON unexpected" ); + break; + } + PFREE(mphp_update_psi_param_con); + +} /* gfp_mphp_update_psi_param_con() */ + + + +/* ++------------------------------------------------------------------------------ +| Function : gfp_mphp_tcr_meas_ind ++------------------------------------------------------------------------------ +| Description : Handles the primitive MPHP_TCR_MEAS_IND +| +| Parameters : *mphp_tcr_meas_ind - Ptr to primitive payload +| ++------------------------------------------------------------------------------ +*/ +GLOBAL void gfp_mphp_tcr_meas_ind ( T_MPHP_TCR_MEAS_IND *mphp_tcr_meas_ind ) +{ + TRACE_FUNCTION( "gfp_mphp_tcr_meas_ind" ); + + switch( GET_STATE( GFP ) ) + { + case GFP_IDLE: + PACCESS(mphp_tcr_meas_ind); + sig_gfp_cs_tcr_meas_ind( mphp_tcr_meas_ind ); + break; + default: + TRACE_ERROR( "MPHP_TCR_MEAS_IND unexpected" ); + break; + } + + PFREE( mphp_tcr_meas_ind ); +} /* gfp_mphp_tcr_meas_ind() */ + + + + + +/* ++------------------------------------------------------------------------------ +| Function : gfp_mphp_stop_single_block_con ++------------------------------------------------------------------------------ +| Description : Handles the primitive GFP_MPHP_STOP_SINGLE_BLOCK_CON +| +| Parameters : *gfp_mphp_stop_single_block_con - Ptr to primitive payload +| ++------------------------------------------------------------------------------ +*/ +GLOBAL void gfp_mphp_stop_single_block_con ( T_MPHP_STOP_SINGLE_BLOCK_CON *mphp_stop_single_block_con ) +{ + TRACE_FUNCTION( "gfp_mphp_stop_single_block_con" ); + + /* SZML-SGLBL/010 */ + + switch( GET_STATE( GFP ) ) + { + case GFP_IDLE: + sig_gfp_tc_stop_single_block_con( mphp_stop_single_block_con ); + break; + default: + break; + } + PFREE(mphp_stop_single_block_con); + +} /* gfp_mphp_stop_single_block_con() */ + + + + + +/* ++------------------------------------------------------------------------------ +| Function : gfp_mphp_ncell_pbcch_stop_con ++------------------------------------------------------------------------------ +| Description : Handles the primitive MPHP_NCELL_PBCCH_STOP_CON +| +| Parameters : *mphp_ncell_pbcch_stop_con - Ptr to primitive payload +| ++------------------------------------------------------------------------------ +*/ +GLOBAL void gfp_mphp_ncell_pbcch_stop_con ( T_MPHP_NCELL_PBCCH_STOP_CON *mphp_ncell_pbcch_stop_con ) +{ + TRACE_FUNCTION( "gfp_mphp_ncell_pbcch_stop_con" ); + + /* SZML-SGLBL/011 */ + + switch( GET_STATE( GFP ) ) + { + case GFP_IDLE: + break; + default: + break; + } + PFREE(mphp_ncell_pbcch_stop_con); + +} /* gfp_mphp_ncell_pbcch_stop_con() */ + + +/* ++------------------------------------------------------------------------------ +| Function : gfp_cgrlc_data_ind ++------------------------------------------------------------------------------ +| Description : Handles the primitive gfp_cgrlc_data_ind +| +| Parameters : cgrlc_data_ind - Ptr to primitive payload +| ++------------------------------------------------------------------------------ +*/ +GLOBAL void gfp_cgrlc_data_ind ( T_CGRLC_DATA_IND * cgrlc_data_ind ) +{ + T_D_HEADER header; + T_MSGBUF * ptr_msg_complete; + + TRACE_FUNCTION( "gfp_cgrlc_data_ind" ); + + gfp_adapt_fn ( cgrlc_data_ind->fn+4 ); + + switch( GET_STATE( GFP ) ) + { + case GFP_IDLE: + grr_decode_rlcmac((UBYTE *)(cgrlc_data_ind->data_array), &header); + + if(gfp_check_tfi(&header,cgrlc_data_ind->tn)) + { + if(header.payload NEQ 3) + { + ptr_msg_complete = grr_handle_rlcmac_header(PACKET_MODE_PTM,&header,cgrlc_data_ind->fn); + if(ptr_msg_complete != NULL) + gfp_send_ctrl_block(cgrlc_data_ind->fn, + cgrlc_data_ind->tn, + header.d_ctrl.rrbp, + header.d_ctrl.sp, + header.pctrl_ack, + ptr_msg_complete); + } + } + break; + default: + TRACE_ERROR( "cgrlc_data_ind unexpected" ); + break; + } + + PFREE(cgrlc_data_ind); + +} /* gfp_cgrlc_data_ind() */