FreeCalypso > hg > fc-magnetite
diff src/g23m-gprs/grlc/grlc_em.c @ 183:219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 13 Oct 2016 04:24:13 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/g23m-gprs/grlc/grlc_em.c Thu Oct 13 04:24:13 2016 +0000 @@ -0,0 +1,154 @@ +/*+----------------------------------------------------------------------------- +| 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 defines the engineering mode (EM) device driver for the +| G23 protocol stack. This driver is used to control all engineering +| mode related functions. ++----------------------------------------------------------------------------- +*/ + +#ifndef GRLC_EM_C +#define GRLC_EM_C + +#define ENTITY_GRLC + +/*--------- INCLUDES -----*/ +/* Maybee some include is missing but windows and target build works*/ +#include <string.h> /*definition of memset*/ +#include "typedefs.h" + +#include "vsi.h" +#include "gprs.h" + +#include "gsm.h" +#include "custom.h" /*set FF_EM_MODE compile switch for SIMULATION*/ +#include "prim.h" +#include "message.h" + +#include "grlc.h" +#include "grlc_em.h" + +#ifdef FF_EM_MODE +/* ++------------------------------------------------------------------------------ +| Function : grlc_em_pco_trace_req +| +| Parameter : *grlc_em_pco_trace_req (EM_PCO_TRACE_REQ ) +| +| Result : void +| ++------------------------------------------------------------------------------ +This function traces the EM data at the PCO. +*/ +GLOBAL void grlc_em_pco_trace_req ( T_EM_PCO_TRACE_REQ * em_pco_trace_req) +{ + TRACE_FUNCTION( "grlc_em_pco_trace_req" ); + + if(em_pco_trace_req->pco_bitmap & EM_PCO_GRLC_INFO) + { + + TRACE_EVENT_EM_P4("EM_GRLC_INFO_REQ: grlc_sta:%d tbf_mode:%d dl_tfi:%d dl_mac_mode:%d", + grlc_data->tm.state, + grlc_data->tbf_type, + grlc_data->dl_tfi, + grlc_data->downlink_tbf.mac_mode); + + TRACE_EVENT_EM_P5("EM_GRLC_INFO_REQ: ul_tfi:%d ul_mac_mode:%d ul_nb_blocks:%d ul_cv:%d ul_cs:%d", + grlc_data->ul_tfi, + grlc_data->uplink_tbf.mac_mode, + grlc_data->ru.rlc_octet_cnt, + grlc_data->ru.cv, + grlc_data->ru.cs_type); + } + + PFREE (em_pco_trace_req); + +}/*grlc_em_pco_trace_req*/ + +/* ++------------------------------------------------------------------------------ +| Function : grlc_em_fmm_rlc_trans_info_req +| +| Parameter : *em_fmm_rlc_trans_info_req (EM_FMM_RLC_TRANS_INFO_REQ) +| +| Result : void +| ++------------------------------------------------------------------------------ +This function provides data needed for microtec fmm1251. It gives the actual status about RLC. +*/ +GLOBAL void grlc_em_fmm_rlc_trans_info_req (T_EM_FMM_RLC_TRANS_INFO_REQ * em_fmm_rlc_trans_info_req) +{ + PFREE(em_fmm_rlc_trans_info_req); + + TRACE_FUNCTION( "grlc_em_fmm_rlc_trans_info_req" ); + + #ifdef FF_WAP + { + PALLOC(em_fmm_rlc_trans_info_cnf, EM_FMM_RLC_TRANS_INFO_CNF); + + memset (em_fmm_rlc_trans_info_cnf, 0, sizeof (T_EM_FMM_RLC_TRANS_INFO_CNF)); + + em_fmm_rlc_trans_info_cnf->rlc_num_retrans = grlc_data->tbf_ctrl[grlc_data->ul_index].ret_bsn; + em_fmm_rlc_trans_info_cnf->rlc_num_trans = (grlc_data->tbf_ctrl[grlc_data->ul_index].cnt_ts) - (grlc_data->tbf_ctrl[grlc_data->ul_index].ret_bsn); + em_fmm_rlc_trans_info_cnf->rlc_pdu_cnt = grlc_data->tbf_ctrl[grlc_data->ul_index].pdu_cnt; + em_fmm_rlc_trans_info_cnf->rlc_start_fn = grlc_data->tbf_ctrl[grlc_data->ul_index].start_fn; + em_fmm_rlc_trans_info_cnf->rlc_end_fn = grlc_data->tbf_ctrl[grlc_data->ul_index].end_fn; + em_fmm_rlc_trans_info_cnf->rlc_tbc = grlc_data->ru.tbc; + +/* TRACE_EVENT_P5("t:%d r:%d p:%d s:%d e:%d", em_fmm_rlc_trans_info_cnf->rlc_num_trans, + em_fmm_rlc_trans_info_cnf->rlc_num_retrans, em_fmm_rlc_trans_info_cnf->rlc_pdu_cnt, + em_fmm_rlc_trans_info_cnf->rlc_start_fn, em_fmm_rlc_trans_info_cnf->rlc_end_fn);*/ + + PSEND(hCommWAP, em_fmm_rlc_trans_info_cnf); + } + +#endif /*FF_WAP*/ + +} + +/* ++------------------------------------------------------------------------------ +| Function : grlc_em_grlc_info_req +| +| Parameter : *em_grlc_info_req (T_EM_GLRC_INFO_REQ) +| +| Result : void +| ++------------------------------------------------------------------------------ +*/ +GLOBAL void grlc_em_grlc_info_req (T_EM_GRLC_INFO_REQ * em_grlc_info_req) +{ + PALLOC (em_grlc_info_cnf, EM_GRLC_INFO_CNF); + + TRACE_FUNCTION( "grlc_em_grlc_info_req" ); + + PFREE (em_grlc_info_req); + + memset (em_grlc_info_cnf, 0, sizeof (T_EM_GRLC_INFO_CNF)); + + em_grlc_info_cnf->grlc_state = grlc_data->tm.state; + em_grlc_info_cnf->tbf_mod = grlc_data->tbf_type; + /* ul tbf*/ + em_grlc_info_cnf->ul_tbf_par.tfi = grlc_data->ul_tfi; + em_grlc_info_cnf->ul_tbf_par.mac_mod = grlc_data->uplink_tbf.mac_mode; + em_grlc_info_cnf->ul_tbf_par.ul_nb_block= grlc_data->ru.rlc_octet_cnt; + em_grlc_info_cnf->ul_tbf_par.cv = grlc_data->ru.cv; + em_grlc_info_cnf->ul_tbf_par.cs = grlc_data->ru.cs_type; + /* dl tbf*/ + em_grlc_info_cnf->dl_tbf_par.tfi = grlc_data->dl_tfi; + em_grlc_info_cnf->dl_tbf_par.mac_mod = grlc_data->downlink_tbf.mac_mode; + + PSEND(hCommGMM, em_grlc_info_cnf); +} /*grlc_em_grlc_info_req*/ + +#endif /* FF_EM_MODE */ +#endif /* GRLC_EM_C */