FreeCalypso > hg > freecalypso-sw
diff gsm-fw/g23m-aci/aci/psa_snds.c @ 775:eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Sun, 12 Oct 2014 01:45:14 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gsm-fw/g23m-aci/aci/psa_snds.c Sun Oct 12 01:45:14 2014 +0000 @@ -0,0 +1,239 @@ +/* ++----------------------------------------------------------------------------- +| 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 signalling functions of the +| protocol stack adapter for the registration part of +| the SNDCP entity. ++----------------------------------------------------------------------------- +*/ + +#if defined (GPRS) && defined (DTI) + +#ifndef PSA_SNDS_C +#define PSA_SNDS_C +#endif + +#include "aci_all.h" +/*==== INCLUDES ===================================================*/ +#include "aci.h" + +#include "dti.h" /* functionality of the dti library */ +#include "aci_cmh.h" +#include "ati_cmd.h" +#include "aci_cmd.h" +#include "aci_mem.h" + +#include "aci.h" + +#include "dti_conn_mng.h" +#include "dti_cntrl_mng.h" + +#include "gaci.h" +#include "gaci_cmh.h" +#include "psa.h" +#include "psa_sm.h" + +#include "cmh.h" +#include "cmh_sm.h" + +#if defined(FF_WAP) || defined(FF_GPF_TCPIP) +#include "wap_aci.h" +#include "psa_tcpip.h" +#endif + + + +/*==== CONSTANTS ==================================================*/ + +/*==== TYPES ======================================================*/ + +/*==== EXPORT =====================================================*/ + +/*==== VARIABLES ==================================================*/ + +/*==== FUNCTIONS ==================================================*/ + + +/* ++-------------------------------------------------------------------+ +| PROJECT : GPRS (8441) MODULE : PSA_SMS | +| STATE : finished ROUTINE : psaSNDCP_Dti_Req | ++-------------------------------------------------------------------+ + + PURPOSE : Request of setting or removing the DTI user plane.. + +*/ +GLOBAL void psa_sn_dti_req( T_DTI_CONN_LINK_ID link_id, T_DTI_ENTITY_ID peer, U8 dti_conn ) +{ + T_PDP_CONTEXT_INTERNAL *p_pdp_context_node = pdp_context_find_node_from_cid(work_cids[cid_pointer]); /* Issue 27457 */ +#ifdef _SIMULATION_ + U8 *dti_neighbor = NULL; +#endif + +#if defined (FF_WAP) || defined (FF_GPF_TCPIP) + U8 cid = PDP_CONTEXT_CID_OMITTED; + U8 nsapi; +#endif + + U8 dti_direction = NAS_HOME; + + PALLOC (sn_dti_req, SN_DTI_REQ); + + TRACE_FUNCTION("psa_sn_dti_req()"); + +#ifdef _SIMULATION_ + ACI_MALLOC(dti_neighbor, NAS_SIZE_ENTITY_NAME); +#endif + + if (dti_conn EQ NAS_CONNECT_DTI) + { + + switch ( peer ) + { + case DTI_ENTITY_PPPS: + +#ifdef _SIMULATION_ + strcpy((char*)(dti_neighbor), PPP_NAME); +#else + sn_dti_req->dti_neighbor = (ULONG)PPP_NAME; +#endif + dti_direction = NAS_HOME; + p_pdp_context_node->internal_data.entity_id = peer; + p_pdp_context_node->internal_data.link_id = link_id; + break; + +#ifdef TI_DUAL_MODE + case DTI_ENTITY_SNDCP: + +#ifdef _SIMULATION_ + strcpy((char*)(dti_neighbor), SNDCP_NAME); +#else + sn_dti_req->dti_neighbor = (ULONG)SNDCP_NAME; +#endif + dti_direction = NAS_HOME; + break; +#endif /* TI_DUAL_MODE */ + +#ifdef FF_TCP_IP + case DTI_ENTITY_AAA: + +#ifdef _SIMULATION_ + strcpy((char*)(dti_neighbor), RIV_NAME); +#else + sn_dti_req->dti_neighbor = (ULONG)RIV_NAME; +#endif + dti_direction = NAS_NEIGHBOR; + p_pdp_context_node->internal_data.entity_id = peer; + p_pdp_context_node->internal_data.link_id = link_id; + break; +#endif /* FF_TCP_IP */ + + case DTI_ENTITY_IP: + +#ifdef _SIMULATION_ + strcpy((char*)(dti_neighbor), IP_NAME); +#else + sn_dti_req->dti_neighbor = (ULONG)IP_NAME; +#endif + dti_direction = NAS_NEIGHBOR; + p_pdp_context_node->internal_data.link_id = link_id; + break; + case DTI_ENTITY_SIM: + +#ifdef _SIMULATION_ + strcpy((char*)(dti_neighbor), SIM_NAME); +#else + sn_dti_req->dti_neighbor = (ULONG)SIM_NAME; +#endif + dti_direction = NAS_NEIGHBOR; + p_pdp_context_node->internal_data.link_id = link_id; + break; + case DTI_ENTITY_PKTIO: + +#ifdef _SIMULATION_ + strcpy((char*)(dti_neighbor), PKTIO_NAME); +#else + sn_dti_req->dti_neighbor = (ULONG)PKTIO_NAME; +#endif + dti_direction = NAS_HOME; + p_pdp_context_node->internal_data.entity_id = peer; + p_pdp_context_node->internal_data.link_id = link_id; + break; +#ifdef FF_GPF_TCPIP + case DTI_ENTITY_TCPIP: + sn_dti_req->dti_neighbor = (ULONG)TCPIP_NAME; + dti_direction = NAS_NEIGHBOR; + break; +#endif /* FF_GPF_TCPIP */ + + } + + /* Copy the neighbor name (incl. the zero termination). */ +#ifdef _SIMULATION_ + memcpy( &sn_dti_req->dti_neighbor, dti_neighbor, strlen((const char *)dti_neighbor) + 1 ); + ACI_MFREE( dti_neighbor ); +#endif + sn_dti_req->dti_direction = dti_direction; + sn_dti_req->dti_conn = NAS_CONNECT_DTI; + } + else /* if (dti_conn == SNDCP_CONNECT_DTI) */ + { + sn_dti_req->dti_conn = NAS_DISCONNECT_DTI; + } + + sn_dti_req->dti_linkid = link_id; + sn_dti_req->nsapi = (U8)CID_TO_NSAPI( gaci_get_cid_over_link_id( link_id ) ); +#if defined (FF_WAP) || defined (FF_GPF_TCPIP) + nsapi = sn_dti_req->nsapi; +#endif + PSEND(hCommSNDCP, sn_dti_req); +#if defined (FF_WAP) || defined (FF_GPF_TCPIP) + if ( (Wap_Call) AND + (dti_conn EQ NAS_CONNECT_DTI) ) /* TC ACISAT 530 */ + { + cid = (U8)NSAPI_TO_CID( nsapi ); + if ( (get_state_over_cid( cid ) EQ PDP_CONTEXT_STATE_DEFINED ) OR + (get_state_over_cid( cid ) EQ PDP_CONTEXT_STATE_ATTACHING) OR + (get_state_over_cid( cid ) EQ PDP_CONTEXT_STATE_DEACTIVATE_NORMAL) ) //// pinghua DCM_OPEN_CLOSE patch 20080429 start + { + cmhSM_activate_context(); + } + else if ( (get_state_over_cid( cid ) EQ PDP_CONTEXT_STATE_ACTIVATED)) + { + char c_ip_address[16]; + UBYTE* ip_address; + + TRACE_EVENT("No PDP Context Found to Activate"); + + ip_address = p_pdp_context_node->internal_data.pdp_address_allocated.ip_address.ipv4_addr.a4; + sprintf (c_ip_address, "%03u.%03u.%03u.%03u", ip_address[0], + ip_address[1], + ip_address[2], + ip_address[3] ); + + + psaTCPIP_Configure( NULL, + (UBYTE*) c_ip_address, + NULL, + NULL, + NULL, + 1500, + cmhSM_IP_activate_cb ); + } + } +#endif /* FF_WAP */ +} +#endif /* GPRS */