FreeCalypso > hg > leo2moko-debug
diff g23m/condat/ms/src/aci/cmh_sndr.c @ 0:509db1a7b7b8
initial import: leo2moko-r1
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 01 Jun 2015 03:24:05 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/g23m/condat/ms/src/aci/cmh_sndr.c Mon Jun 01 03:24:05 2015 +0000 @@ -0,0 +1,281 @@ +/* ++----------------------------------------------------------------------------- +| Project : +| Modul : ++----------------------------------------------------------------------------- +| 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 functions which are responsible +| for the responses of the protocol stack adapter for SNDCP. ++----------------------------------------------------------------------------- +*/ + +#if defined (GPRS) && defined (DTI) + +#ifndef CMH_SNDR_C +#define CMH_SNDR_C +#endif + +#include "aci_all.h" +/*==== INCLUDES ===================================================*/ + +#include "aci_cmh.h" + +#include "psa.h" + +#include "dti.h" +#include "dti_conn_mng.h" +#include "dti_cntrl_mng.h" + +#include "gaci_cmh.h" +#include "gaci.h" + +#include "cmh.h" +#include "cmh_snd.h" +#include "cmh_sm.h" + +#ifdef FF_GPF_TCPIP +#include "dcm_utils.h" +#include "dcm_state.h" +#include "dcm_env.h" +#endif + +/*==== CONSTANTS ==================================================*/ + + +/*==== TYPES ======================================================*/ + + +/*==== EXPORT =====================================================*/ + + +/*==== VARIABLES ==================================================*/ +EXTERN SHORT nsapi_to_cid[SMH_NSAPI_MAX]; + + +/*==== FUNCTIONS ==================================================*/ + +/* ++-------------------------------------------------------------------+ +| PROJECT : GPRS (8441) MODULE : CMH_SNDR | +| STATE : finished ROUTINE : cmhSNDCP_Counted | ++-------------------------------------------------------------------+ + + PURPOSE : + +*/ +GLOBAL void cmhSNDCP_Counted( UBYTE nsapi, + ULONG octets_uplink, + ULONG octets_downlink, + ULONG packets_uplink, + ULONG packets_downlink ) +{ + UBYTE i; + SHORT cid = nsapi_to_cid[nsapi]; + + TRACE_FUNCTION ("cmhSNDCP_Counted()"); + + for (i = 0; i < MAX_CID ; i++) + { + if (pdp_context[i].nsapi EQ nsapi AND + (pdp_context[i].state NEQ CS_ACTIVATED AND pdp_context[i].state NEQ CS_DATA_LINK)) + { + cid = i+1; /* Gets the deactivated CID */ + pdp_context[i].nsapi = UNUSED_NSAPI; + break; + } + } + + R_AT( RAT_SNCNT, sndcpShrdPrm.srcId ) ( cid, /* issue 10417 */ + octets_uplink, + octets_downlink, + packets_uplink, + packets_downlink ); +} + + +/* ++---------------------------------------------------------------------------+ +| PROJECT : GSM-F&D (8411) MODULE : CMH_SNDR | +| STATE : code ROUTINE : NULL_SNDCP_connect_dti_cb | ++---------------------------------------------------------------------------+ + + PURPOSE : Callback for connection between PPP Server and SNDCP. + +*/ +GLOBAL BOOL NULL_SNDCP_connect_dti_cb(UBYTE dti_id, T_DTI_CONN_STATE result_type) +{ + TRACE_FUNCTION("NULL_SNDCP_connect_dti_cb"); + + switch( result_type) + { + case DTI_CONN_STATE_DISCONNECTED: + cmhSM_connection_down(dti_id); + break; + case DTI_CONN_STATE_DISCONNECTING: + case DTI_CONN_STATE_CONNECTING: + case DTI_CONN_STATE_CONNECTED: + break; + case DTI_CONN_STATE_ERROR: + /* connection not possible: disconnect SNDCP */ + dti_cntrl_close_dpath_from_dti_id( dti_id ); + break; + case DTI_CONN_STATE_UNKNOWN: + default: + TRACE_EVENT("PPP_SNDCP_connect_dti_cb call with not awaited value"); + break; + } + return TRUE; +} + + +#if defined(FF_PKTIO) OR defined(FF_TCP_IP) OR defined (FF_PSI) +/* ++---------------------------------------------------------------------------+ +| PROJECT : GSM-F&D (8411) MODULE : CMH_SNDR | +| STATE : code ROUTINE : PKTIO_SNDCP_connect_dti_cb | ++---------------------------------------------------------------------------+ + + PURPOSE : Callback for connection between PKTIO and SNDCP. + +*/ +GLOBAL BOOL PKTIO_SNDCP_connect_dti_cb(UBYTE dti_id, T_DTI_CONN_STATE result_type) +{ + SHORT cid; + + TRACE_FUNCTION("PKTIO_SNDCP_connect_dti_cb"); + + switch( result_type) + { + case DTI_CONN_STATE_DISCONNECTING: + cid = gaci_get_cid_over_dti_id(dti_id); + if( INVALID_CID NEQ cid AND + CS_ACTIVATING EQ get_state_over_cid(cid) AND + ( DTI_ENTITY_PKTIO EQ pdp_context[cid - 1].entity_id OR + DTI_ENTITY_AAA EQ pdp_context[cid - 1].entity_id OR + DTI_ENTITY_PSI EQ pdp_context[cid - 1].entity_id ) ) + { + cmhSM_deactivateAContext(CMD_SRC_NONE, cid); + set_state_over_cid( cid, CS_DEACTIVATE_NORMAL); + } + break; + case DTI_CONN_STATE_DISCONNECTED: + cmhSM_connection_down(dti_id); + break; + case DTI_CONN_STATE_CONNECTING: + case DTI_CONN_STATE_CONNECTED: + break ; + case DTI_CONN_STATE_ERROR: + /* connection not possible: disconnect SNDCP */ + dti_cntrl_close_dpath_from_dti_id( dti_id ); + break; + case DTI_CONN_STATE_UNKNOWN: + default: + TRACE_EVENT("PKTIO_SNDCP_connect_dti_cb call with not awaited value"); + break; + } + return TRUE; +} +#endif /* FF_PKTIO OR FF_TCP_IP OR FF_PSI */ + + +#ifdef CO_UDP_IP +/* ++--------------------------------------------------------------------------+ +| PROJECT : GSM-F&D (8411) MODULE : CMH_SNDR | +| STATE : code ROUTINE : IP_SNDCP_connect_dti_cb | ++--------------------------------------------------------------------------+ + + PURPOSE : Callback for connection between IP Server and SNDCP. + +*/ + +GLOBAL BOOL IP_SNDCP_connect_dti_cb(UBYTE dti_id, T_DTI_CONN_STATE result_type) +{ + TRACE_FUNCTION("IP_SNDCP_connect_dti_cb"); + + switch( result_type) + { + case DTI_CONN_STATE_DISCONNECTING: + case DTI_CONN_STATE_DISCONNECTED: + case DTI_CONN_STATE_CONNECTING: + case DTI_CONN_STATE_CONNECTED: + break; + case DTI_CONN_STATE_ERROR: + /* connection not possible: disconnect SNDCP */ + TRACE_EVENT("IP_SNDCP_connect_dti_cb connection not possible: disconnect SNDCP"); + dti_cntrl_close_dpath_from_dti_id( dti_id); + break; + case DTI_CONN_STATE_UNKNOWN: + default: + TRACE_EVENT("IP_SNDCP_connect_dti_cb call with not awaited value"); + break; + } + return TRUE; +} +#endif /* CO_UDP_IP */ + + +#ifdef FF_GPF_TCPIP +GLOBAL BOOL TCPIP_SNDCP_connect_dti_cb(UBYTE dti_id, T_DTI_CONN_STATE result_type) +{ + TRACE_FUNCTION("TCPIP_SNDCP_connect_dti_cb"); + TRACE_EVENT_P1("TCPIP_SNDCP_connect_dti_cb() result = %d",result_type); + + switch( result_type) + { + case DTI_CONN_STATE_DISCONNECTING: + TRACE_EVENT("TCPIP_SNDCP_connect_dti_cb in DTI_CONN_STATE_DISCONNECTING") ; + break ; + + case DTI_CONN_STATE_CONNECTING: + TRACE_EVENT("TCPIP_SNDCP_connect_dti_cb in DTI_CONN_STATE_CONNECTING") ; + break; + + case DTI_CONN_STATE_DISCONNECTED: + TRACE_EVENT("TCPIP_SNDCP_connect_dti_cb in DTI_CONN_STATE_DISCONNECTED") ; + dti_cntrl_erase_entry(dti_id); + { + T_DCM_STATUS_IND_MSG msg; + msg.hdr.msg_id = DCM_NEXT_CMD_READY_MSG; + dcm_send_message(msg, DCM_SUB_WAIT_CGACT_CNF); + } + break; + + case DTI_CONN_STATE_CONNECTED: + TRACE_EVENT("TCPIP_SNDCP_connect_dti_cb in DTI_CONN_STATE_CONNECTED"); + { + T_DCM_STATUS_IND_MSG msg; + msg.hdr.msg_id = DCM_NEXT_CMD_READY_MSG; + dcm_send_message(msg, DCM_SUB_WAIT_CGACT_CNF); + } + break; + + case DTI_CONN_STATE_ERROR: + /* connection not possible: disconnect SNDCP */ + TRACE_EVENT("TCPIP_SNDCP_connect_dti_cb connection not possible: disconnect SNDCP"); + dti_cntrl_close_dpath_from_dti_id( dti_id); + break; + + case DTI_CONN_STATE_UNKNOWN: + TRACE_EVENT("TCPIP_SNDCP_connect_dti_cb in DTI_CONN_STATE_UNKNOWN") ; + break; + + default: + TRACE_EVENT("TCPIP_SNDCP_connect_dti_cb call with not awaited value"); + break; + } + return TRUE; +} +#endif /* FF_GPF_TCPIP */ + +#endif /* GPRS && DTI*/