FreeCalypso > hg > fc-magnetite
diff src/g23m-gprs/gmm/gmm_txp.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/gmm/gmm_txp.c Thu Oct 13 04:24:13 2016 +0000 @@ -0,0 +1,159 @@ +/* ++----------------------------------------------------------------------------- +| Project : GPRS (8441) +| Modul : gmm_txp.c ++----------------------------------------------------------------------------- +| 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 modul is part of the entity GMM and implements all +| functions to handles the incoming primitives as described in +| the SDL-documentation (TX-statemachine) ++----------------------------------------------------------------------------- +*/ + +#ifndef GMM_TXP_C +#define GMM_TXP_C +#endif + +#define ENTITY_GMM + +/*==== INCLUDES =============================================================*/ +#include <string.h> /* to get memcpy */ +#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 "cnf_gmm.h" /* to get cnf-definitions */ +#include "mon_gmm.h" /* to get mon-definitions */ +#include "prim.h" /* to get the definitions of used SAP and directions */ +#include "gmm.h" /* to get the global entity definitions */ +#include "gmm_txf.h" /* to get the local funktions */ + +/*==== CONST ================================================================*/ + +/*==== LOCAL VARS ===========================================================*/ + +/*==== PRIVATE FUNCTIONS ====================================================*/ + +/*==== PUBLIC FUNCTIONS =====================================================*/ + + + +/* ++------------------------------------------------------------------------------ +| Function : tx_gmmsm_unitdata_req ++------------------------------------------------------------------------------ +| Description : Handles the primitive GMMSM_UNITDATA_REQ +| +| Parameters : *gmmsm_unitdata_req - Ptr to primitive payload +| ++------------------------------------------------------------------------------ +*/ +#ifdef GMM_TCS4 +GLOBAL void tx_gmmsm_unitdata_req ( T_MMPM_UNITDATA_REQ* gmmsm_unitdata_req ) +#else +GLOBAL void tx_gmmsm_unitdata_req ( T_GMMSM_UNITDATA_REQ* gmmsm_unitdata_req ) +#endif +{ + GMM_TRACE_FUNCTION( "tx_gmmsm_unitdata_req" ); + + + switch( GET_STATE( TX ) ) + { + case TX_READY: + { + /* + * The messages from SM are passed to LLC + */ + /* + * PPASS (gmmsm_unitdata_req, ll_unitdata_req, LL_UNITDATA_REQ ); + * is not possible, because of different parameters + */ + PALLOC_SDU ( ll_unitdata_req, LL_UNITDATA_REQ, gmmsm_unitdata_req->sdu.l_buf); + + + tx_fill_unitdata_req ( ll_unitdata_req, LOCAL_TLLI, gmm_data->cipher ); + memcpy (&ll_unitdata_req->sdu.buf[(ll_unitdata_req->sdu.o_buf)>>3], + &gmmsm_unitdata_req->sdu.buf[(gmmsm_unitdata_req->sdu.o_buf)>>3], + (gmmsm_unitdata_req->sdu.l_buf)>>3); + + + + #ifdef TRACE_EVE + #ifndef GMM_TCS4 + switch ( ll_unitdata_req->sdu.buf[((ll_unitdata_req->sdu.o_buf)>>3)+1]) + { + case ACTIVATE_PDP_REQ: + TRACE_EVENT ( "OPar: ACTIVATE_PDP_REQ");break; + case ACTIVATE_PDP_ACC: + TRACE_EVENT ( "OPar: ACTIVATE_PDP_ACC");break; + case ACTIVATE_PDP_REJ: + TRACE_EVENT ( "OPar: ACTIVATE_PDP_REJ");break; + case REQ_PDP_ACT: + TRACE_EVENT ( "OPar: REQ_PDP_ACT");break; + case REQ_PDP_ACT_REJ: + TRACE_EVENT ( "OPar: REQ_PDP_ACT_REJ");break; + case MOD_PDP_REQ: + TRACE_EVENT ( "OPar: MOD_PDP_REQ");break; + case MOD_PDP_ACC: + TRACE_EVENT ( "OPar: MOD_PDP_ACC");break; + case DEACT_PDP_REQ: + TRACE_EVENT ( "OPar: DEACT_PDP_REQ");break; + case DEACT_PDP_ACC: + TRACE_EVENT ( "OPar: DEACT_PDP_ACC");break; + case SM_STATUS: + TRACE_EVENT ( "OPar: SM_STATUS");break; + default: + TRACE_EVENT ( "OPar: SNDCP unknown");break; + } + #else /*#ifndef GMM_TCS4*/ + switch ( ll_unitdata_req->sdu.buf[((ll_unitdata_req->sdu.o_buf)>>3)+1]) + { + case ACTIVATE_PDP_CONTEXT_REQUEST: + TRACE_EVENT ( "OPar: ACTIVATE_PDP_CONTEXT_REQUEST");break; + case ACTIVATE_PDP_CONTEXT_ACCEPT: + TRACE_EVENT ( "OPar: ACTIVATE_PDP_CONTEXT_ACCEPT");break; + case ACTIVATE_PDP_CONTEXT_REJECT: + TRACE_EVENT ( "OPar: ACTIVATE_PDP_CONTEXT_REJECT");break; + case REQUEST_PDP_CONTEXT_ACTIVATION: + TRACE_EVENT ( "OPar: REQUEST_PDP_CONTEXT_ACTIVATION");break; + case REQUEST_PDP_CONTEXT_ACTIVATION_REJECT: + TRACE_EVENT ( "OPar: REQUEST_PDP_CONTEXT_ACTIVATION_REJECT");break; + case U_MODIFY_PDP_CONTEXT_REQUEST: + TRACE_EVENT ( "OPar: U_MODIFY_PDP_CONTEXT_REQUEST");break; + case U_MODIFY_PDP_CONTEXT_ACCEPT: + TRACE_EVENT ( "OPar: U_MODIFY_PDP_CONTEXT_ACCEPT");break; + case DEACTIVATE_PDP_CONTEXT_REQUEST: + TRACE_EVENT ( "OPar: DEACTIVATE_PDP_CONTEXT_REQ");break; + case DEACTIVATE_PDP_CONTEXT_ACCEPT: + TRACE_EVENT ( "OPar: DEACTIVATE_PDP_CONTEXT_ACCEPT");break; + case SM_STATUS: + TRACE_EVENT ( "OPar: SM_STATUS");break; + default: + TRACE_EVENT ( "OPar: SNDCP unknown");break; + } + #endif /*#ifndef GMM_TCS4*/ + #endif /* _SIMULATION_ */ + + PSEND ( hCommLLC, ll_unitdata_req ); + PFREE ( gmmsm_unitdata_req ); + break; + } + default: + PFREE (gmmsm_unitdata_req); + TRACE_ERROR( "GMMSM_UNITDATA_REQ unexpected" ); + break; + } + +} /* tx_gmmsm_unitdata_req() */