1
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2 +-----------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3 | Project :
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4 | Modul :
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 5 +-----------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 6 | Copyright 2002 Texas Instruments Berlin, AG
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 7 | All rights reserved.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 8 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 9 | This file is confidential and a trade secret of Texas
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 10 | Instruments Berlin, AG
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 11 | The receipt of or possession of this file does not convey
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 12 | any rights to reproduce or disclose its contents or to
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 13 | manufacture, use, or sell anything it may describe, in
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 14 | whole, or in part, without the specific written consent of
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 15 | Texas Instruments Berlin, AG.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 16 +-----------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 17 | Purpose : This module defines the functions which are responsible
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 18 | for the responses of the protocol stack adapter for
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 19 | GPRS session management ( SM ).
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 20 +-----------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 21 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 22
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 23 #if defined (GPRS) && defined (DTI)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 24
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 25 #ifndef CMH_SMR_C
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 26 #define CMH_SMR_C
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 27 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 28
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 29 #include "aci_all.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 30 /*==== INCLUDES ===================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 31 #include "dti.h" /* functionality of the dti library */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 32 #include "aci_cmh.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 33 #include "ati_cmd.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 34 #include "aci_cmd.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 35
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 36
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 37 #include "aci.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 38
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 39 #include "dti_conn_mng.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 40 #include "dti_cntrl_mng.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 41
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 42 #include "gaci.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 43 #include "gaci_cmh.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 44 #include "psa.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 45 #include "psa_sm.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 46 #include "psa_gppp.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 47 #include "psa_gmm.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 48 #include "psa_sim.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 49
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 50 #include "cmh.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 51 #include "cmh_sm.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 52 #include "cmh_gmm.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 53 #include "cmh_gppp.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 54 #include "gaci_srcc.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 55 #include "dti.h" /* functionality of the dti library */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 56
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 57 #include "psa_uart.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 58
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 59 #if defined (CO_UDP_IP) OR defined (FF_GPF_TCPIP)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 60 #include "wap_aci.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 61 #include "psa_tcpip.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 62 #include "psa_cc.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 63 #include "cmh_cc.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 64 #include "psa_sat.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 65 #include "cmh_sat.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 66
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 67 #include "dcm_f.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 68 #endif /* (CO_UDP_IP) OR defined (FF_GPF_TCPIP) */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 69 #include "aci_lst.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 70 #include "ati_int.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 71
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 72 /*==== CONSTANTS ==================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 73
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 74 /*==== TYPES ======================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 75
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 76 /*==== EXPORT =====================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 77
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 78 /*==== VARIABLES ==================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 79 EXTERN T_PDP_CONTEXT_INTERNAL *p_pdp_context_list;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 80
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 81 /*==== FUNCTIONS ==================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 82
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 83 static void dumpContextInfo(U8 cid)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 84 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 85 T_PDP_CONTEXT_INTERNAL *p_pdp_context_node = NULL;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 86
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 87 p_pdp_context_node = pdp_context_find_node_from_cid( cid );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 88
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 89 if( ! p_pdp_context_node )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 90 return;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 91
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 92 TRACE_EVENT_P2("ERROR in context state: cid %d, state %d",
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 93 cid, p_pdp_context_node->internal_data.state);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 94 TRACE_EVENT_P3("dump: nsapi %d, srcID %d, connected entity %d",
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 95 CID_TO_NSAPI( cid ), p_pdp_context_node->internal_data.owner,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 96 p_pdp_context_node->internal_data.entity_id);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 97 if(smEntStat.curCmd NEQ AT_CMD_NONE)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 98 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 99 TRACE_EVENT_P1("dump running command: %d", smEntStat.curCmd);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 100 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 101 TRACE_EVENT_P3("dump link_ids: new %d sn %d uart %d",
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 102 p_pdp_context_node->internal_data.link_id_new, p_pdp_context_node->internal_data.link_id,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 103 p_pdp_context_node->internal_data.link_id_uart);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 104 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 105
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 106 #if defined (CO_UDP_IP) OR defined (FF_GPF_TCPIP)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 107 static BOOL is_ip_dti_id(T_DTI_ENTITY_ID dti_id)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 108 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 109 if(is_gpf_tcpip_call()) {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 110 GPF_TCPIP_STATEMENT(return dti_id EQ DTI_ENTITY_TCPIP);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 111 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 112 else {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 113 return dti_id EQ DTI_ENTITY_IP;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 114 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 115 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 116 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 117
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 118 static void get_dns_address(char* dns1, char *dns2, UBYTE *pco, UBYTE len)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 119 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 120 ULONG tmp_dns1, tmp_dns2, gateway;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 121 utl_analyze_pco(pco,len, &tmp_dns1, &tmp_dns2, &gateway);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 122
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 123 sprintf(dns1, "%03u.%03u.%03u.%03u", (tmp_dns1 & 0xff000000) >> 24,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 124 (tmp_dns1 & 0x00ff0000) >> 16,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 125 (tmp_dns1 & 0x0000ff00) >> 8 ,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 126 (tmp_dns1 & 0x000000ff) );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 127 sprintf(dns2, "%03u.%03u.%03u.%03u", (tmp_dns2 & 0xff000000) >> 24,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 128 (tmp_dns2 & 0x00ff0000) >> 16,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 129 (tmp_dns2 & 0x0000ff00) >> 8 ,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 130 (tmp_dns2 & 0x000000ff) );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 131 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 132
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 133 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 134 +-------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 135 | PROJECT : GPRS (8441) MODULE : CMH_SMR |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 136 | STATE : finished ROUTINE : cmhSM_Activated |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 137 +-------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 138
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 139 PURPOSE : confirms a successful context activation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 140
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 141 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 142 GLOBAL SHORT cmhSM_Activated ( T_SMREG_PDP_ACTIVATE_CNF *pdp_cnf )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 143 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 144 char dns1[16], dns2[16];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 145 U8 cid = work_cids[cid_pointer];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 146 T_PDP_CONTEXT_INTERNAL *p_pdp_context_node = NULL;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 147 T_ACI_AT_CMD curCmd = smEntStat.curCmd;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 148 T_CGEREP_EVENT_REP_PARAM event;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 149 int i = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 150
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 151 TRACE_FUNCTION ("cmhSM_Activated()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 152
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 153 p_pdp_context_node = pdp_context_find_node_from_cid( cid );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 154 if( !p_pdp_context_node )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 155 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 156 TRACE_ERROR( "ERROR: PDP context not found, in function cmhSM_Activated" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 157 return -1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 158 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 159
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 160 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 161 *-------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 162 * check for command context
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 163 *-------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 164 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 165 switch( get_state_working_cid() )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 166 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 167 case( PDP_CONTEXT_STATE_ACTIVATING ):
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 168
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 169 R_AT( RAT_CGACT, smEntStat.entOwn )( 0 );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 170
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 171 set_state_working_cid( PDP_CONTEXT_STATE_ACTIVATED );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 172
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 173 /* Storing of Dynamic address sent in SMREG_PDP_ACTIVATE_CNF message is missing in
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 174 Alborg code.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 175 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 176 p_pdp_context_node->internal_data.pdp_address_allocated.ctrl_ip_address = pdp_cnf->ctrl_ip_address;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 177
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 178 if ( p_pdp_context_node->internal_data.pdp_address_allocated.ctrl_ip_address )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 179 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 180 if ( p_pdp_context_node->internal_data.pdp_address_allocated.ctrl_ip_address EQ NAS_is_ipv4 )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 181 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 182 memcpy( p_pdp_context_node->internal_data.pdp_address_allocated.ip_address.ipv4_addr.a4, &pdp_cnf->ip_address.ipv4_addr.a4, NAS_SIZE_IPv4_ADDR );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 183 TRACE_EVENT_P1("PDP Address: %s", p_pdp_context_node->internal_data.pdp_address_allocated.ip_address.ipv4_addr.a4);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 184 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 185 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 186 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 187 memcpy( p_pdp_context_node->internal_data.pdp_address_allocated.ip_address.ipv6_addr.a6, &pdp_cnf->ip_address.ipv6_addr.a6, NAS_SIZE_IPv6_ADDR );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 188 TRACE_EVENT_P1("PDP Address: %s", p_pdp_context_node->internal_data.pdp_address_allocated.ip_address.ipv6_addr.a6);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 189 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 190 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 191 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 192 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 193 if ( p_pdp_context_node->attributes.pdp_addr.ctrl_ip_address EQ NAS_is_ipv4 )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 194 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 195 memcpy( p_pdp_context_node->internal_data.pdp_address_allocated.ip_address.ipv4_addr.a4, &p_pdp_context_node->attributes.pdp_addr.ip_address.ipv4_addr.a4, NAS_SIZE_IPv4_ADDR );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 196 p_pdp_context_node->internal_data.pdp_address_allocated.ctrl_ip_address = p_pdp_context_node->attributes.pdp_addr.ctrl_ip_address;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 197 TRACE_EVENT_P1("PDP Address: %s", p_pdp_context_node->internal_data.pdp_address_allocated.ip_address.ipv4_addr.a4);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 198 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 199 else if ( p_pdp_context_node->attributes.pdp_addr.ctrl_ip_address EQ NAS_is_ipv6 )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 200 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 201 memcpy( p_pdp_context_node->internal_data.pdp_address_allocated.ip_address.ipv6_addr.a6, &p_pdp_context_node->attributes.pdp_addr.ip_address.ipv6_addr.a6, NAS_SIZE_IPv6_ADDR );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 202 p_pdp_context_node->internal_data.pdp_address_allocated.ctrl_ip_address = p_pdp_context_node->attributes.pdp_addr.ctrl_ip_address;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 203 TRACE_EVENT_P1("PDP Address: %s", p_pdp_context_node->internal_data.pdp_address_allocated.ip_address.ipv6_addr.a6);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 204 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 205 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 206 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 207 TRACE_ERROR( "ERROR: NO IP Address Assigned, In PDP_CONTEXT_STATE_ACTIVATING State" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 208 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 209 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 210
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 211 cmhSM_set_PCO( cid,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 212 PCO_NETWORK,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 213 &smShrdPrm.pdp_cnf->sdu.buf[smShrdPrm.pdp_cnf->sdu.o_buf >> 3],
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 214 (UBYTE) (smShrdPrm.pdp_cnf->sdu.l_buf >> 3));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 215
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 216 get_dns_address(dns1, dns2,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 217 p_pdp_context_node->internal_data.network_pco.pco,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 218 p_pdp_context_node->internal_data.network_pco.len);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 219
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 220 TRACE_EVENT_P2("DNS1: %s, DNS2: %s", dns1, dns2);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 221
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 222 #if defined (CO_UDP_IP) OR defined (FF_GPF_TCPIP)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 223 /* if WAP/TCPIP over GPRS is in progress, request WAP configuration */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 224 if ( is_ip_dti_id(p_pdp_context_node->internal_data.entity_id) )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 225 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 226 char c_ip_address[16];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 227 UBYTE* ip_address;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 228
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 229 ip_address = p_pdp_context_node->internal_data.pdp_address_allocated.ip_address.ipv4_addr.a4;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 230 sprintf (c_ip_address, "%03u.%03u.%03u.%03u", ip_address[0],
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 231 ip_address[1],
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 232 ip_address[2],
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 233 ip_address[3] );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 234
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 235 psaTCPIP_Configure(NULL, (UBYTE*) c_ip_address,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 236 NULL, (UBYTE*)dns1, (UBYTE*)dns2, 1500,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 237 cmhSM_IP_activate_cb );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 238 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 239 #endif /* (CO_UDP_IP) OR defined (FF_GPF_TCPIP) */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 240
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 241 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 242 * do we need one more context activation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 243 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 244 if( FALSE EQ cmhSM_next_work_cid( curCmd ) )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 245 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 246 if( AT_CMD_CGACT EQ curCmd)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 247 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 248 gaci_RAT_caller ( RAT_OK, cid, (UBYTE) curCmd, 0 );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 249
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 250 /* log result */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 251 cmh_logRslt ( p_pdp_context_node->internal_data.owner, RAT_OK, curCmd, -1, BS_SPEED_NotPresent,CME_ERR_NotPresent);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 252 #if defined (FF_WAP) OR defined (FF_SAT_E)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 253 if (Wap_Call)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 254 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 255 gpppEntStat.curCmd = AT_CMD_NONE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 256 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 257 #endif /* WAP OR SAT E */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 258 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 259 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 260
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 261 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 262
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 263 case( PDP_CONTEXT_STATE_ESTABLISH_2 ):
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 264 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 265 *---------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 266 * inform PPP
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 267 *---------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 268 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 269 cmhSM_set_PCO( cid ,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 270 PCO_NETWORK,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 271 &smShrdPrm.pdp_cnf->sdu.buf[smShrdPrm.pdp_cnf->sdu.o_buf >> 3],
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 272 (UBYTE) (smShrdPrm.pdp_cnf->sdu.l_buf >> 3));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 273
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 274 /* Storing of Dynamic address sent in SMREG_PDP_ACTIVATE_CNF message is missing in
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 275 Alborg code.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 276 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 277 p_pdp_context_node->internal_data.pdp_address_allocated.ctrl_ip_address = smShrdPrm.pdp_cnf->ctrl_ip_address;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 278
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 279 if ( p_pdp_context_node->internal_data.pdp_address_allocated.ctrl_ip_address )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 280 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 281 if ( p_pdp_context_node->internal_data.pdp_address_allocated.ctrl_ip_address EQ NAS_is_ipv4 )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 282 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 283 memcpy( p_pdp_context_node->internal_data.pdp_address_allocated.ip_address.ipv4_addr.a4, &smShrdPrm.pdp_cnf->ip_address.ipv4_addr.a4, NAS_SIZE_IPv4_ADDR );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 284 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 285 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 286 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 287 memcpy( p_pdp_context_node->internal_data.pdp_address_allocated.ip_address.ipv6_addr.a6, &smShrdPrm.pdp_cnf->ip_address.ipv6_addr.a6, NAS_SIZE_IPv6_ADDR );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 288 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 289 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 290 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 291 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 292 if ( p_pdp_context_node->attributes.pdp_addr.ctrl_ip_address EQ NAS_is_ipv4 )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 293 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 294 memcpy( p_pdp_context_node->internal_data.pdp_address_allocated.ip_address.ipv4_addr.a4, &p_pdp_context_node->attributes.pdp_addr.ip_address.ipv4_addr.a4, NAS_SIZE_IPv4_ADDR );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 295 p_pdp_context_node->internal_data.pdp_address_allocated.ctrl_ip_address = p_pdp_context_node->attributes.pdp_addr.ctrl_ip_address;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 296 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 297 else if ( p_pdp_context_node->attributes.pdp_addr.ctrl_ip_address EQ NAS_is_ipv6 )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 298 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 299 memcpy( p_pdp_context_node->internal_data.pdp_address_allocated.ip_address.ipv6_addr.a6, &p_pdp_context_node->attributes.pdp_addr.ip_address.ipv6_addr.a6, NAS_SIZE_IPv6_ADDR );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 300 p_pdp_context_node->internal_data.pdp_address_allocated.ctrl_ip_address = p_pdp_context_node->attributes.pdp_addr.ctrl_ip_address;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 301 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 302 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 303 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 304 TRACE_ERROR( "ERROR: NO IP Address Assigned, In PDP_CONTEXT_STATE_ESTABLISH_2" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 305 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 306 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 307
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 308 psaGPPP_PDP_Activate( &p_pdp_context_node->internal_data.pdp_address_allocated,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 309 &smShrdPrm.pdp_cnf->sdu.buf[smShrdPrm.pdp_cnf->sdu.o_buf >> 3],
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 310 (UBYTE) (smShrdPrm.pdp_cnf->sdu.l_buf >> 3),
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 311 (UBYTE) CID_TO_NSAPI( cid ) );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 312
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 313 set_state_working_cid( PDP_CONTEXT_STATE_ESTABLISH_3 );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 314
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 315 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 316
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 317 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 318 return -1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 319 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 320
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 321 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 322 * %CGEV - GPRS event reporting
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 323 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 324
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 325 strcpy( event.act.pdp_type, p_pdp_context_node->attributes.pdp_type );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 326 memcpy(&(event.act.pdp_addr), &(p_pdp_context_node->internal_data.pdp_address_allocated), sizeof(T_NAS_ip));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 327
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 328 event.act.cid = cid;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 329
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 330 if( smShrdPrm.direc EQ CGEREP_EVENT_ME_ACT )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 331 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 332 for( i = 0; i < CMD_SRC_MAX; i++ )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 333 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 334 R_AT( RAT_P_CGEV, (T_ACI_CMD_SRC)i ) ( CGEREP_EVENT_ME_ACT, &event );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 335 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 336 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 337 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 338 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 339 for( i = 0; i < CMD_SRC_MAX; i++ )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 340 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 341 R_AT( RAT_P_CGEV, (T_ACI_CMD_SRC)i ) ( CGEREP_EVENT_NW_ACT, &event );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 342 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 343 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 344
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 345 return 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 346 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 347
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 348 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 349 +-------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 350 | PROJECT : GPRS (8441) MODULE : CMH_SMR |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 351 | STATE : finished ROUTINE : |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 352 +-------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 353
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 354 PURPOSE :
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 355
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 356 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 357
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 358 LOCAL void cp_pdp_rej_prim( T_SMREG_PDP_ACTIVATE_REJ * pdp_activate_rej,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 359 T_PPP_PDP_ACTIVATE_REJ *activate_result )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 360 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 361
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 362 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 363
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 364 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 365 +-------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 366 | PROJECT : GPRS (8441) MODULE : CMH_SMR |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 367 | STATE : finished ROUTINE : cmhSM_NoActivate |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 368 +-------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 369
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 370 PURPOSE : indicates a context activation failed
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 371
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 372 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 373 GLOBAL SHORT cmhSM_NoActivate ( void )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 374 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 375 T_CGEREP_EVENT_REP_PARAM event;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 376 T_PDP_CONTEXT_STATE state;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 377 T_DTI_CONN_LINK_ID link_id;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 378 T_PDP_CONTEXT_INTERNAL *p_pdp_context_node = NULL;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 379 int i = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 380
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 381 TRACE_FUNCTION ("cmhSM_NoActivate()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 382 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 383 *-------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 384 * Set error cause for SIM owner
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 385 *-------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 386 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 387 #ifdef FF_SAT_E
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 388 gaci_SAT_err((UBYTE)smShrdPrm.pdp_rej->ps_cause.value.nwsm_cause);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 389 #endif /* FF_SAT_E */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 390 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 391 *-------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 392 * check for command context
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 393 *-------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 394 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 395
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 396 p_pdp_context_node = pdp_context_find_node_from_cid( NSAPI_TO_CID( smShrdPrm.pdp_rej->nsapi ) );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 397 if (!p_pdp_context_node )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 398 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 399 return -1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 400 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 401
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 402 state = get_state_over_cid(p_pdp_context_node->cid);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 403
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 404 switch( state )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 405 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 406 case PDP_CONTEXT_STATE_INVALID:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 407 case PDP_CONTEXT_STATE_DEFINED:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 408 case PDP_CONTEXT_STATE_ATTACHING:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 409 case PDP_CONTEXT_STATE_ESTABLISH_1:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 410 case PDP_CONTEXT_STATE_ESTABLISH_3:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 411 case PDP_CONTEXT_STATE_ACTIVATED:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 412 case PDP_CONTEXT_STATE_ACTIVATED_ESTABLISH_1:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 413 case PDP_CONTEXT_STATE_ACTIVATED_MODIFYING:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 414 case PDP_CONTEXT_STATE_DATA_LINK:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 415 case PDP_CONTEXT_STATE_DATA_LINK_MODIFYING:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 416 case PDP_CONTEXT_STATE_DEACTIVATE_NORMAL:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 417 case PDP_CONTEXT_STATE_REACTIVATION_1:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 418 case PDP_CONTEXT_STATE_REACTIVATION_2:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 419 case PDP_CONTEXT_STATE_BREAKDOWN_LINK_NORMAL:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 420 dumpContextInfo(work_cids[cid_pointer]);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 421 TRACE_ERROR("cmhSM_NoActivate(): State/Event error!!!");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 422 return 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 423
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 424 case PDP_CONTEXT_STATE_ACTIVATING:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 425 /*Instead of: link_id = cmhSM_get_link_id_SNDCP_peer(work_cids[cid_pointer], SNDCP_PEER_NORMAL);*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 426 link_id = p_pdp_context_node->internal_data.link_id;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 427
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 428 switch(p_pdp_context_node->internal_data.entity_id)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 429 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 430 case DTI_ENTITY_PKTIO:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 431 case DTI_ENTITY_PSI:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 432 set_state_working_cid( PDP_CONTEXT_STATE_DEACTIVATE_NORMAL );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 433 dti_cntrl_close_dpath_from_dti_id (EXTRACT_DTI_ID(link_id));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 434 // gaci_RAT_caller(RAT_NO_CARRIER, work_cids[cid_pointer], AT_CMD_CGDATA, 0);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 435 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 436
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 437 #if defined (CO_UDP_IP) OR defined (FF_GPF_TCPIP)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 438 case DTI_ENTITY_IP:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 439 GPF_TCPIP_STATEMENT(case DTI_ENTITY_TCPIP:)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 440 set_state_working_cid( PDP_CONTEXT_STATE_DEACTIVATE_NORMAL );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 441 dti_cntrl_close_dpath_from_dti_id (EXTRACT_DTI_ID(link_id));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 442 /* tell WAP ACI that contextactivation was rejected */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 443 psaTCPIP_Deactivate(cmhSM_IP_activate_cb);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 444 dti_cntrl_entity_disconnected( link_id, DTI_ENTITY_SNDCP );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 445 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 446 #endif /* WAP OR FF_SAT_E OR FF_GPF_TCPIP */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 447 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 448 /* in this case is SMREG_PDP_ACTIVATE_REJ the same as SMREG_DEACTIVATE_CNF */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 449
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 450 /* set parameter for SMREG_DEACTIVATE_CNF */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 451 smShrdPrm.nsapi_set = 1 << smShrdPrm.pdp_rej->nsapi;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 452 cmhSM_Deactivated(); /* SMREG_DEACTIVATE_CNF */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 453
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 454 /* the last expected primitive from SM */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 455 smEntStat.curCmd = AT_CMD_NONE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 456 return 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 457 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 458
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 459 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 460 * GPRS event reporting
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 461 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 462 strcpy( event.act.pdp_type, p_pdp_context_node->attributes.pdp_type );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 463 memcpy(&(event.act.pdp_addr), &(p_pdp_context_node->attributes.pdp_addr), sizeof(T_NAS_ip));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 464 event.act.cid = work_cids[cid_pointer];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 465 for( i = 0; i < CMD_SRC_MAX; i++ )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 466 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 467 R_AT( RAT_CGEREP, (T_ACI_CMD_SRC)i ) ( CGEREP_EVENT_ME_DEACT, &event );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 468 R_AT( RAT_P_CGEV, (T_ACI_CMD_SRC)i ) ( CGEREP_EVENT_ME_DEACT, &event );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 469 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 470
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 471 cmhSM_contextDeactivated();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 472 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 473
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 474 case PDP_CONTEXT_STATE_ESTABLISH_2:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 475 case PDP_CONTEXT_STATE_ABORT_ESTABLISH:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 476 /* in this case is SMREG_PDP_ACTIVATE_REJ the same as SMREG_DEACTIVATE_CNF */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 477
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 478 /* set parameter for SMREG_DEACTIVATE_CNF */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 479 smShrdPrm.nsapi_set = 1 << CID_TO_NSAPI( p_pdp_context_node->cid );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 480
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 481 cmhSM_Deactivated(); /* SMREG_DEACTIVATE_CNF */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 482
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 483 /* the last expected primitive from SM */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 484 smEntStat.curCmd = AT_CMD_NONE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 485
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 486 if( state NEQ PDP_CONTEXT_STATE_ESTABLISH_2 )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 487 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 488 return 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 489 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 490
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 491 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 492 *---------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 493 * inform PPP
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 494 *---------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 495 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 496 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 497 PALLOC( act_rej_temp, PPP_PDP_ACTIVATE_REJ ); /* ppass */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 498 gpppShrdPrm.setPrm[gpppEntStat.entOwn].pdp_rej = act_rej_temp;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 499 act_rej_temp->ppp_cause = smShrdPrm.pdp_rej->ps_cause.value.ppp_cause;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 500 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 501
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 502 if( psaGPPP_PDP_Reject() < 0 )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 503 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 504 TRACE_EVENT( "FATAL RETURN psaPPP_PDP_Reject in +CGDATA" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 505 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Internal );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 506 return -1 ;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 507 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 508
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 509 set_state_over_cid( p_pdp_context_node->cid, PDP_CONTEXT_STATE_ABORT_ESTABLISH );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 510 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 511
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 512 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 513 return -1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 514 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 515
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 516 return 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 517 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 518
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 519 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 520 +-------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 521 | PROJECT : GPRS (8441) MODULE : CMH_SMR |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 522 | STATE : finished ROUTINE : cmhSM_NetActivate |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 523 +-------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 524
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 525 PURPOSE : indicates a network asked for a PDP context activation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 526
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 527 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 528 GLOBAL void cmhSM_NetActivate ( void )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 529 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 530 T_CGEREP_EVENT_REP_PARAM event;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 531 U8 i = 0; /* holds index counter */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 532 U8 context_reactivation = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 533 U8 cid;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 534
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 535 TRACE_FUNCTION ("cmhSM_NetActivate()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 536
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 537 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 538 * in first only one requested context activation is provided
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 539 * and the request will be rejected if an other context will be
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 540 * activated
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 541 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 542
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 543 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 544 * it's no check to CC neccesary, because this is no class A mobile
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 545 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 546
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 547 if( cmhSM_is_smreg_ti_used( smShrdPrm.act_ind.ti, &cid ) EQ TRUE )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 548 context_reactivation = 1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 549
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 550 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 551 * no PDP context is during the setup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 552 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 553 if ( work_cids[cid_pointer] EQ PDP_CONTEXT_CID_INVALID AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 554 gprs_ct_index < MAX_GPRS_CALL_TABLE_ENTRIES
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 555 AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 556 ( TRUE EQ srcc_reserve_sources( SRCC_PPPS_SNDCP_LINK, 1 ) OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 557 context_reactivation EQ 1)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 558 )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 559
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 560
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 561 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 562 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 563 *-------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 564 * ring for call, if no call is in use
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 565 *-------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 566 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 567
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 568 #ifdef AT_INTERPRETER
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 569 /* V.24 Ring Indicator Line */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 570 /* io_setRngInd ( IO_RS_ON, CRING_TYP_NotPresent, CRING_TYP_NotPresent dummy parameters here, need real ones when used); */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 571 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 572
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 573 /* fill gprs call table */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 574 memcpy(&gprs_call_table[gprs_ct_index].sm_ind, &smShrdPrm.act_ind, sizeof(T_SMREG_PDP_ACTIVATE_IND));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 575
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 576 /* no context reactivation */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 577 if ( context_reactivation NEQ 1 )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 578 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 579 gprs_call_table[gprs_ct_index].reactivation = GCTT_NORMAL;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 580 *gprs_call_table[gprs_ct_index].L2P = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 581 gprs_call_table[gprs_ct_index].cid = PDP_CONTEXT_CID_INVALID;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 582 gprs_ct_index++;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 583
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 584 for( i = 0 ; i < CMD_SRC_MAX; i++ )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 585 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 586 R_AT( RAT_CRING, (T_ACI_CMD_SRC)i ) ( CRING_MOD_Gprs, CRING_SERV_TYP_GPRS, CRING_SERV_TYP_NotPresent );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 587 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 588 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 589 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 590 { /* context reactivation */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 591 gprs_call_table[gprs_ct_index].reactivation = GCTT_REACTIVATION ;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 592 strcpy(gprs_call_table[gprs_ct_index].L2P, "PPP");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 593 gprs_call_table[gprs_ct_index].cid = cid;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 594 gprs_ct_index++;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 595 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 596
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 597 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 598 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 599 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 600 * one or more PDP contexts are during the setup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 601 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 602 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 603 psaSM_PDP_No_activate(smShrdPrm.act_ind.ti, CAUSE_NWSM_INSUFFICIENT_RESOURCES);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 604
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 605 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 606 * GPRS event reporting
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 607 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 608 cmhSM_pdp_typ_to_string(smShrdPrm.act_ind.pdp_type, event.reject.pdp_type);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 609
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 610 event.reject.pdp_addr.ctrl_ip_address = smShrdPrm.act_ind.ctrl_ip_address;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 611
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 612 if (event.reject.pdp_addr.ctrl_ip_address EQ NAS_is_ipv4)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 613 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 614 memcpy( &event.reject.pdp_addr.ip_address.ipv4_addr, &smShrdPrm.act_ind.ip_address.ipv4_addr.a4, NAS_SIZE_IPv4_ADDR );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 615 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 616 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 617 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 618 memcpy( &event.reject.pdp_addr.ip_address.ipv6_addr, &smShrdPrm.act_ind.ip_address.ipv6_addr.a6, NAS_SIZE_IPv6_ADDR );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 619 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 620
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 621 for( i = 0; i < CMD_SRC_MAX; i++ )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 622 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 623 R_AT( RAT_CGEREP, (T_ACI_CMD_SRC)i ) ( CGEREP_EVENT_REJECT, &event );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 624 R_AT( RAT_P_CGEV, (T_ACI_CMD_SRC)i ) ( CGEREP_EVENT_REJECT, &event );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 625 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 626
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 627 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 628 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 629
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 630 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 631 +-------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 632 | PROJECT : GPRS (8441) MODULE : CMH_SMR |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 633 | STATE : finnished ROUTINE : cmhSM_Deactivated |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 634 +-------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 635
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 636 PURPOSE : confirms a successful PDP context deactivation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 637
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 638 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 639
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 640 GLOBAL void cmhSM_Deactivated ( void )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 641 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 642 T_CGEREP_EVENT_REP_PARAM event;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 643 T_PDP_CONTEXT_INTERNAL *p_pdp_context_node = NULL;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 644 T_PDP_CONTEXT_STATE state;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 645
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 646 U8 cid;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 647 SHORT i,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 648 reactivation = 0,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 649 rat_id = RAT_MAX;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 650 UBYTE cme_err = CME_ERR_GPRSUnspec, /* error number */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 651 cmdBuf = smEntStat.curCmd; /* buffers current command */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 652 U16 nsapi_set_to_free = smShrdPrm.nsapi_set;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 653 T_DTI_CONN_LINK_ID dti_link_id;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 654 UBYTE srcId = srcId_cb;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 655
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 656 TRACE_FUNCTION ("cmhSM_Deactivated()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 657
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 658 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 659 *-------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 660 * check for command context
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 661 *-------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 662 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 663
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 664 /* 28592 cmhSM_context_deactivated(smShrdPrm.nsapi_set); */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 665
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 666 while((state = get_state_over_nsapi_set( &smShrdPrm.nsapi_set, &cid )) AND state NEQ PDP_CONTEXT_STATE_INVALID )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 667 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 668 p_pdp_context_node = pdp_context_find_node_from_cid( cid );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 669 if( !p_pdp_context_node )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 670 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 671 TRACE_ERROR( "ERROR: PDP context not found, in function cmhSM_Deactivated" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 672 return;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 673 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 674
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 675 dti_link_id = p_pdp_context_node->internal_data.link_id;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 676
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 677 switch ( state )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 678 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 679 case PDP_CONTEXT_STATE_INVALID:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 680 case PDP_CONTEXT_STATE_DEFINED:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 681 case PDP_CONTEXT_STATE_ATTACHING:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 682 case PDP_CONTEXT_STATE_ESTABLISH_1:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 683 case PDP_CONTEXT_STATE_ESTABLISH_3:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 684 case PDP_CONTEXT_STATE_ACTIVATED:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 685 case PDP_CONTEXT_STATE_ACTIVATED_ESTABLISH_1:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 686 case PDP_CONTEXT_STATE_ACTIVATED_MODIFYING:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 687 case PDP_CONTEXT_STATE_DATA_LINK:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 688 case PDP_CONTEXT_STATE_DATA_LINK_MODIFYING:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 689 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 690 dumpContextInfo(cid);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 691 continue;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 692
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 693 case PDP_CONTEXT_STATE_ESTABLISH_2:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 694
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 695 set_state_over_cid ( cid, PDP_CONTEXT_STATE_ABORT_ESTABLISH );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 696 //asdf dti_cntrl_close_dpath_from_dti_id (EXTRACT_DTI_ID(dti_link_id));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 697
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 698 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 699
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 700 case PDP_CONTEXT_STATE_ABORT_ESTABLISH:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 701 TRACE_EVENT("state: PDP_CONTEXT_STATE_ABORT_ESTABLISH");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 702 set_state_over_cid ( cid, PDP_CONTEXT_STATE_DEFINED );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 703 dti_cntrl_close_dpath_from_dti_id (EXTRACT_DTI_ID(dti_link_id));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 704 cmhSM_disconnect_cid(cid, GC_TYPE_DATA_LINK);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 705
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 706 if(ati_user_output_cfg[srcId].CMEE_stat EQ CMEE_MOD_Disable)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 707 rat_id = RAT_NO_CARRIER;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 708 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 709 rat_id = RAT_CME;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 710 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 711
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 712 case PDP_CONTEXT_STATE_BREAKDOWN_LINK_NORMAL:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 713 TRACE_EVENT("state: CS_BREAKDOWN_LINK_NORMAL");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 714 set_state_over_cid ( cid, PDP_CONTEXT_STATE_DEFINED );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 715 dti_cntrl_close_dpath_from_dti_id (EXTRACT_DTI_ID(dti_link_id));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 716 cmhSM_disconnect_cid(cid, GC_TYPE_DATA_LINK);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 717 rat_id = RAT_NO_CARRIER;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 718 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 719
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 720 case PDP_CONTEXT_STATE_DEACTIVATE_NORMAL:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 721 TRACE_EVENT("state: PDP_CONTEXT_DEACTIVATE_NORMAL") ;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 722 set_state_over_cid ( cid, PDP_CONTEXT_STATE_DEFINED );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 723
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 724 #if defined(FF_PKTIO) OR defined(FF_TCP_IP)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 725 if( p_pdp_context_node->internal_data.entity_id EQ DTI_ENTITY_PKTIO )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 726 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 727 /* Issue OMAPS00072119: For PKTIO, delete the SNDCP counter */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 728 cmhSM_disconnect_cid(cid, GC_TYPE_NULL);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 729 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 730 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 731
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 732 #if defined (CO_UDP_IP) OR defined (FF_GPF_TCPIP)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 733 if ( is_ip_dti_id(p_pdp_context_node->internal_data.entity_id) )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 734 if( Wap_Call )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 735 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 736 /* tell WAP ACI that contextactivation was rejected */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 737 psaTCPIP_Deactivate(cmhSM_IP_activate_cb);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 738 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 739 #else /* (CO_UDP_IP) OR defined (FF_GPF_TCPIP) */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 740 rat_id = RAT_NO_CARRIER;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 741 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 742 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 743
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 744 case PDP_CONTEXT_STATE_ACTIVATING:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 745 TRACE_EVENT("state: PDP_CONTEXT_STATE_ACTIVATING");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 746 set_state_over_cid ( cid, PDP_CONTEXT_STATE_DEFINED );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 747
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 748 /* 18th April 2005. As till this date we are not handiling the correct
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 749 cause value between ACI and SM. As we are not mapping the cause values
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 750 sent by SM enity to ACI. This is creating problem to display wrong ERROR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 751 values .*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 752
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 753 cme_err = cmhSM_mapSM2ACI_Cause(smShrdPrm.pdp_rej->ps_cause.value.nwsm_cause);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 754 rat_id = RAT_CME;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 755 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 756
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 757 case PDP_CONTEXT_STATE_REACTIVATION_1:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 758 TRACE_EVENT("state: PDP_CONTEXT_STATE_REACTIVATION_1");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 759 set_state_over_cid ( cid, PDP_CONTEXT_STATE_REACTIVATION_2 );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 760 dti_cntrl_close_dpath_from_dti_id (EXTRACT_DTI_ID(dti_link_id));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 761 smEntStat.curCmd = AT_CMD_NONE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 762 nsapi_set_to_free &= ~( 1U << CID_TO_NSAPI(cid) ); /* 28592 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 763 continue;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 764
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 765 case PDP_CONTEXT_STATE_REACTIVATION_2:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 766 TRACE_EVENT("state: PDP_CONTEXT_STATE_REACTIVATION_2");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 767 set_state_over_cid ( cid, PDP_CONTEXT_STATE_DEFINED );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 768 dti_cntrl_close_dpath_from_dti_id (EXTRACT_DTI_ID(dti_link_id));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 769 cmhSM_disconnect_cid(cid, GC_TYPE_DATA_LINK);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 770 smEntStat.curCmd = AT_CMD_NONE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 771 rat_id = RAT_NO_CARRIER;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 772 reactivation = 1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 773 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 774 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 775
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 776 if ( reactivation EQ 0 )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 777 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 778 switch( smEntStat.curCmd )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 779 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 780 case( AT_CMD_CGDATA ):
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 781 case( AT_CMD_CGACT ):
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 782 TRACE_EVENT_P2("cmhSM_Deactivated: smEntStat.entOwn: Source = %d and GPRS related AT Command is smEntStat.curCmd: = %d", smEntStat.entOwn, smEntStat.curCmd );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 783 cmhSM_clear_work_cids(cid);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 784 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 785 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 786 TRACE_EVENT_P1("cmhSM_Deactivated: Current AT Command is smEntStat.curCmd: = %d", smEntStat.curCmd);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 787 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 788 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 789 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 790
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 791 strcpy( event.act.pdp_type, p_pdp_context_node->attributes.pdp_type );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 792 memcpy(&(event.act.pdp_addr), &(p_pdp_context_node->internal_data.pdp_address_allocated), sizeof(T_NAS_ip));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 793
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 794 event.act.cid = cid;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 795 for( i = 0; i < CMD_SRC_MAX; i++ )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 796 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 797 R_AT( RAT_CGEREP, (T_ACI_CMD_SRC)i ) ( CGEREP_EVENT_ME_DEACT, &event );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 798 R_AT( RAT_P_CGEV, (T_ACI_CMD_SRC)i ) ( CGEREP_EVENT_ME_DEACT, &event );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 799 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 800
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 801 if ( rat_id NEQ RAT_MAX )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 802 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 803 gaci_RAT_caller ( rat_id, cid, cmdBuf, cme_err );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 804
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 805 rat_id = RAT_MAX;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 806
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 807 cmhSM_clear_work_cids(cid);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 808 cmhSM_context_reactivation();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 809 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 810 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 811
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 812 cmhSM_context_deactivated(nsapi_set_to_free); /* 28592 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 813 cmhSM_contextDeactivated();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 814 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 815
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 816 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 817 +-------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 818 | PROJECT : GPRS (8441) MODULE : CMH_SMR |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 819 | STATE : finnished ROUTINE : cmhSM_NetDeactivate |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 820 +-------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 821
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 822 PURPOSE : indicates a PDP context deactivation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 823
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 824 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 825 GLOBAL void cmhSM_NetDeactivate ( void )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 826 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 827 T_PDP_CONTEXT_INTERNAL *p_pdp_context_node = NULL;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 828 T_PDP_CONTEXT_INTERNAL *p_prev_pdp_context_node = NULL;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 829 T_CGEREP_EVENT_REP_PARAM event;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 830 T_PDP_CONTEXT_STATE state;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 831 U8 cid;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 832 SHORT i = 0,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 833 inform_ppp = 1,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 834 rat_id = RAT_MAX;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 835 UBYTE cme_err = CME_ERR_Unknown, /* error number */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 836 cmdBuf = AT_CMD_NONE; /* buffers current command */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 837 T_DTI_CONN_LINK_ID dti_link_id;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 838
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 839 USHORT temp_nsapiSet = smShrdPrm.nsapi_set;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 840 UBYTE srcId = srcId_cb;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 841
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 842
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 843 TRACE_FUNCTION ("cmhSM_NetDeactivate()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 844
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 845 /* 28592 cmhSM_context_deactivated(smShrdPrm.nsapi_set); */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 846
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 847 while( (smShrdPrm.nsapi_set) AND (PDP_CONTEXT_STATE_INVALID NEQ (state = get_state_over_nsapi_set( &smShrdPrm.nsapi_set, &cid )) ))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 848 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 849
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 850 p_pdp_context_node = pdp_context_find_node_from_cid( cid );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 851 if( !p_pdp_context_node )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 852 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 853 TRACE_ERROR( "ERROR: PDP context not found, in function cmhSM_NetDeactivate" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 854 continue; /* Try the next... */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 855 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 856
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 857 dti_link_id = p_pdp_context_node->internal_data.link_id;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 858
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 859 switch ( state )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 860 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 861 case PDP_CONTEXT_STATE_INVALID:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 862 case PDP_CONTEXT_STATE_DEFINED:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 863 case PDP_CONTEXT_STATE_ESTABLISH_1:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 864 case PDP_CONTEXT_STATE_ATTACHING:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 865 TRACE_EVENT("PDP context state ignored, continue");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 866 continue;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 867
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 868 case PDP_CONTEXT_STATE_ESTABLISH_2:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 869 case PDP_CONTEXT_STATE_ESTABLISH_3:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 870 case PDP_CONTEXT_STATE_ACTIVATED_ESTABLISH_1:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 871 set_state_over_cid ( cid, PDP_CONTEXT_STATE_ABORT_ESTABLISH );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 872 dti_cntrl_close_dpath_from_dti_id (EXTRACT_DTI_ID(dti_link_id));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 873 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 874
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 875 case PDP_CONTEXT_STATE_ABORT_ESTABLISH:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 876 set_state_over_cid ( cid, PDP_CONTEXT_STATE_DEFINED );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 877 dti_cntrl_close_dpath_from_dti_id (EXTRACT_DTI_ID(dti_link_id));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 878 cmhSM_disconnect_cid(cid, GC_TYPE_DATA_LINK);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 879 inform_ppp = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 880 if(ati_user_output_cfg[srcId].CMEE_stat EQ CMEE_MOD_Disable)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 881 rat_id = RAT_NO_CARRIER;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 882 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 883 rat_id = RAT_CME;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 884 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 885
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 886 case PDP_CONTEXT_STATE_BREAKDOWN_LINK_NORMAL:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 887 set_state_over_cid ( cid, PDP_CONTEXT_STATE_DEFINED );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 888 dti_cntrl_close_dpath_from_dti_id (EXTRACT_DTI_ID(dti_link_id));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 889 cmhSM_disconnect_cid(cid, GC_TYPE_DATA_LINK);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 890 rat_id = RAT_NO_CARRIER;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 891 inform_ppp = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 892 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 893
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 894 #ifdef REL99
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 895 case PDP_CONTEXT_STATE_DATA_LINK_MODIFYING:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 896 /* Reject +CGCMOD command if executing. Network context deactivation has higher priority. */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 897 if (smEntStat.curCmd EQ AT_CMD_CGCMOD)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 898 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 899 /* Answer the executing source not the data source for cid */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 900 R_AT( RAT_CME, smEntStat.entOwn ) ( smEntStat.curCmd, CME_ERR_GPRSUnspec );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 901 /* Remove command */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 902 smEntStat.curCmd = AT_CMD_NONE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 903 cid_pointer = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 904 work_cids[0] = PDP_CONTEXT_CID_OMITTED;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 905 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 906 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 907 /* Fall through */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 908 case PDP_CONTEXT_STATE_DATA_LINK:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 909 set_state_over_cid ( cid, PDP_CONTEXT_STATE_BREAKDOWN_LINK_NORMAL );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 910 dti_cntrl_close_dpath_from_dti_id (EXTRACT_DTI_ID(dti_link_id));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 911 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 912 #ifdef REL99
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 913 case PDP_CONTEXT_STATE_ACTIVATED_MODIFYING:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 914 /* Reject +CGCMOD command if executing. Network context deactivation has higher priority. */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 915 if (smEntStat.curCmd EQ AT_CMD_CGCMOD)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 916 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 917 /* Answer the executing source not the data source for cid */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 918 R_AT( RAT_CME, smEntStat.entOwn ) ( smEntStat.curCmd, CME_ERR_GPRSUnspec );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 919 /* Remove command */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 920 smEntStat.curCmd = AT_CMD_NONE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 921 cid_pointer = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 922 work_cids[0] = PDP_CONTEXT_CID_INVALID;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 923 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 924 /* Fall through */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 925 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 926 case PDP_CONTEXT_STATE_ACTIVATED:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 927 p_prev_pdp_context_node = pdp_context_find_node_from_cid( cid );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 928 inform_ppp = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 929
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 930 /* Issue OMAPS00062126: new case of connection failed, AT+CGDATA return ERROR */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 931 if( (state EQ PDP_CONTEXT_STATE_ACTIVATED) AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 932 (p_prev_pdp_context_node->internal_data.entity_id EQ DTI_ENTITY_PKTIO) )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 933 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 934 TRACE_EVENT("Free the DTI Links for PKTIO Entity after AT+CFUN=0");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 935 dti_cntrl_close_dpath_from_dti_id (EXTRACT_DTI_ID(p_prev_pdp_context_node->internal_data.link_id));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 936 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 937
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 938 set_state_over_cid ( cid, PDP_CONTEXT_STATE_DEFINED );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 939
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 940 #if defined (CO_UDP_IP) OR defined (FF_GPF_TCPIP)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 941 if ( is_ip_dti_id(p_pdp_context_node->internal_data.entity_id) )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 942 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 943 if ( p_prev_pdp_context_node->internal_data.entity_id EQ DTI_ENTITY_IP )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 944 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 945 /* tell WAP ACI that contextactivation was rejected */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 946 psaTCPIP_Deactivate(cmhSM_IP_activate_cb);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 947 dti_cntrl_close_dpath_from_dti_id (EXTRACT_DTI_ID(dti_link_id));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 948 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 949 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 950 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 951 #endif /* WAP OR SAT E */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 952 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 953 cmhSM_disconnect_cid(cid, GC_TYPE_NULL);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 954 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 955 rat_id = RAT_NO_CARRIER;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 956
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 957 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 958
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 959 case PDP_CONTEXT_STATE_DEACTIVATE_NORMAL:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 960 p_prev_pdp_context_node = pdp_context_find_node_from_cid( cid );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 961 set_state_over_cid ( cid, PDP_CONTEXT_STATE_DEFINED );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 962
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 963 #if defined (FF_WAP) OR defined (FF_SAT_E)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 964 inform_ppp = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 965 if ( p_prev_pdp_context_node->internal_data.entity_id EQ DTI_ENTITY_IP )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 966 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 967 /* tell WAP ACI that contextactivation was rejected */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 968 dti_cntrl_close_dpath_from_dti_id (EXTRACT_DTI_ID(dti_link_id));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 969 psaTCPIP_Deactivate(cmhSM_IP_activate_cb);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 970 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 971 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 972 #endif /* WAP OR SAT E */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 973 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 974 cmhSM_disconnect_cid(cid, GC_TYPE_NULL);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 975 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 976 rat_id = RAT_NO_CARRIER; /* it required ?!! */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 977 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 978
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 979 case PDP_CONTEXT_STATE_ACTIVATING:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 980 p_prev_pdp_context_node = pdp_context_find_node_from_cid( cid );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 981 inform_ppp = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 982 set_state_over_cid ( cid, PDP_CONTEXT_STATE_DEFINED );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 983
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 984 #if defined (FF_WAP) OR defined (FF_SAT_E)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 985 if ( p_prev_pdp_context_node->internal_data.entity_id EQ DTI_ENTITY_IP )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 986 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 987 /* tell WAP ACI that contextactivation was rejected */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 988 psaTCPIP_Deactivate(cmhSM_IP_activate_cb);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 989 dti_cntrl_close_dpath_from_dti_id (EXTRACT_DTI_ID(dti_link_id));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 990 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 991 #endif /* WAP OR SAT E */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 992 rat_id = RAT_CME;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 993 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 994
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 995 case PDP_CONTEXT_STATE_REACTIVATION_1:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 996 set_state_over_cid(cid, PDP_CONTEXT_STATE_REACTIVATION_2);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 997 cmhSM_stop_context_reactivation();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 998 temp_nsapiSet &= ~( 1U << CID_TO_NSAPI(cid) ); /* 28592 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 999 continue;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1000
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1001 case PDP_CONTEXT_STATE_REACTIVATION_2:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1002 set_state_over_cid ( cid, PDP_CONTEXT_STATE_DEFINED );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1003 cmhSM_stop_context_reactivation();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1004 rat_id = RAT_NO_CARRIER;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1005 inform_ppp = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1006 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1007 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1008
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1009 if ( inform_ppp )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1010 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1011 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1012 *---------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1013 * inform PPP
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1014 *---------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1015 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1016 psaGPPP_Terminate( PPP_LOWER_LAYER_UP );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1017 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1018
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1019 switch( smEntStat.curCmd )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1020 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1021 case( AT_CMD_CGDATA ):
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1022 case( AT_CMD_CGACT ):
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1023 TRACE_EVENT_P2("cmhSM_NetDeactivate: smEntStat.entOwn: Source = %d and GPRS related AT Command is smEntStat.curCmd: = %d", smEntStat.entOwn, smEntStat.curCmd );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1024 cmhSM_clear_work_cids(cid);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1025 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1026 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1027 TRACE_EVENT_P1("cmhSM_NetDeactivate: Current AT Command is smEntStat.curCmd: = %d", smEntStat.curCmd);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1028 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1029 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1030
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1031 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1032 * GPRS event reporting
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1033 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1034 strcpy( event.act.pdp_type, p_pdp_context_node->attributes.pdp_type );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1035 memcpy(&(event.act.pdp_addr), &(p_pdp_context_node->internal_data.pdp_address_allocated), sizeof(T_NAS_ip));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1036 event.act.cid = cid;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1037 for( i = 0; i < CMD_SRC_MAX; i++ )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1038 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1039 R_AT( RAT_CGEREP, (T_ACI_CMD_SRC)i ) ( CGEREP_EVENT_NW_DEACT, &event );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1040 R_AT( RAT_P_CGEV, (T_ACI_CMD_SRC)i ) ( CGEREP_EVENT_NW_DEACT, &event );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1041 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1042
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1043 if ( rat_id NEQ RAT_MAX )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1044 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1045
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1046 /* Below code will decide whether to send NO CARRIER OR NOT
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1047 depeding on the context flags and source's
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1048 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1049
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1050 if ( !( gmmShrdPrm.gprs_call_killer EQ p_pdp_context_node->internal_data.owner ) )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1051 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1052 gaci_RAT_caller ( rat_id, cid, cmdBuf, cme_err );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1053 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1054
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1055 gmmShrdPrm.gprs_call_killer = (UBYTE)CMD_SRC_NONE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1056
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1057 cmhSM_clear_work_cids(cid);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1058 rat_id = RAT_MAX;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1059 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1060 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1061
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1062 cmhSM_context_deactivated(temp_nsapiSet);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1063 cmhSM_contextDeactivated();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1064 /* inform SAT if needed */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1065 #if defined (FF_SAT_E)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1066 cmhSAT_OpChnGPRSDeact();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1067 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1068 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1069
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1070 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1071 +-------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1072 | PROJECT : GPRS (8441) MODULE : CMH_SMR |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1073 | STATE : finnished ROUTINE : cmhSM_NetModify |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1074 +-------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1075
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1076 PURPOSE : indicates a network initiated PDP context modification
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1077
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1078 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1079 GLOBAL void cmhSM_NetModify( T_SMREG_PDP_MODIFY_IND *smreg_pdp_modify_ind )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1080 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1081 U8 cid = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1082 U8 i = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1083 T_PDP_CONTEXT_INTERNAL *p_pdp_context_node = NULL;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1084
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1085 TRACE_FUNCTION ("cmhSM_NetModify()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1086
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1087 if( get_state_over_cid( NSAPI_TO_CID( smreg_pdp_modify_ind->nsapi ) ) NEQ PDP_CONTEXT_STATE_INVALID )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1088 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1089 p_pdp_context_node = pdp_context_find_node_from_cid( NSAPI_TO_CID( smreg_pdp_modify_ind->nsapi ) );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1090 cid = p_pdp_context_node->cid;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1091 if( p_pdp_context_node )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1092 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1093 /* Store the QoS indicated by the network */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1094 p_pdp_context_node->ctrl_neg_qos = smreg_pdp_modify_ind->ctrl_qos;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1095 switch( smreg_pdp_modify_ind->ctrl_qos )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1096 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1097 case PS_is_R97:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1098 memcpy( &p_pdp_context_node->neg_qos.qos_r97, &smreg_pdp_modify_ind->qos.qos_r97, sizeof(T_PS_qos_r97) );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1099 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1100 case PS_is_R99:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1101 memcpy( &p_pdp_context_node->neg_qos.qos_r99, &smreg_pdp_modify_ind->qos.qos_r99, sizeof(T_PS_qos_r99) );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1102 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1103 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1104 TRACE_ERROR( "QoS type indicated by NW not supported" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1105 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1106
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1107 /* inform all sources */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1108 for( i = 0 ; i < CMD_SRC_MAX; i++ )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1109 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1110 switch( p_pdp_context_node->ctrl_neg_qos )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1111 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1112 case PS_is_R97:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1113 R_AT( RAT_QOS_MOD,(T_ACI_CMD_SRC) i ) ( cid, p_pdp_context_node->neg_qos.qos_r97 ); /* the macro must be updated, QoS type changed !!! */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1114 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1115 case PS_is_R99:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1116 R_AT( RAT_QOS_MOD,(T_ACI_CMD_SRC) i ) ( cid, p_pdp_context_node->neg_qos.qos_r99 ); /* the macro must be updated, QoS type changed !!! */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1117 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1118 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1119 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1120
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1121 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1122 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1123 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1124 TRACE_ERROR( "PDP context not found, in function cmhSM_NetModify" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1125 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1126 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1127 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1128 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1129 TRACE_ERROR( "PDP context for the given nsapi is in the wrong state" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1130 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1131
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1132 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1133
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1134
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1135 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1136 +-------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1137 | PROJECT : GPRS (8441) MODULE : CMH_SMR |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1138 | STATE : finnished ROUTINE : cmhSM_Modified |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1139 +-------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1140
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1141 PURPOSE : indicates that the MT initiated PDP context modification
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1142 was successful. Continue to modify the rest of the contexts
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1143 until the work_cids list is empty.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1144
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1145 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1146 #ifdef REL99
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1147 GLOBAL SHORT cmhSM_Modified( T_SMREG_PDP_MODIFY_CNF *smreg_pdp_modify_cnf )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1148 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1149
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1150 T_PDP_CONTEXT_INTERNAL *p_pdp_context_node = NULL;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1151
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1152 TRACE_FUNCTION ("cmhSM_Modified()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1153
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1154 if ( NSAPI_TO_CID( smreg_pdp_modify_cnf->nsapi ) NEQ work_cids[cid_pointer])
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1155 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1156 /* Wrong nsapi received from SM */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1157 TRACE_ERROR("WRONG NSAPI. Ignored.");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1158 return -1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1159 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1160
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1161 p_pdp_context_node = pdp_context_find_node_from_cid( work_cids[cid_pointer] );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1162
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1163 if( p_pdp_context_node EQ NULL )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1164 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1165 TRACE_ERROR ("PDP context not found");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1166 return -1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1167 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1168
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1169 /* This context was successful modified: Change state back. */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1170 switch( get_state_working_cid() )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1171 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1172 case PDP_CONTEXT_STATE_ACTIVATED_MODIFYING:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1173 set_state_working_cid( PDP_CONTEXT_STATE_ACTIVATED );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1174 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1175
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1176 case PDP_CONTEXT_STATE_DATA_LINK_MODIFYING:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1177 set_state_working_cid( PDP_CONTEXT_STATE_DATA_LINK );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1178 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1179
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1180 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1181 /* Error handling */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1182 TRACE_ERROR("WRONG STATE for context.");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1183 /* Reject command if possible */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1184 if (smEntStat.curCmd EQ AT_CMD_CGCMOD)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1185 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1186 R_AT( RAT_CME, smEntStat.entOwn ) ( smEntStat.curCmd, CME_ERR_GPRSUnspec );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1187 smEntStat.curCmd = AT_CMD_NONE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1188 cid_pointer = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1189 work_cids[0] = PDP_CONTEXT_CID_INVALID;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1190 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1191 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1192 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1193 TRACE_ERROR("SMREG_PDP_MODIFY_CNF received but +CGCMOD not executed");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1194 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1195 return -1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1196 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1197
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1198
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1199
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1200 cid_pointer ++; // This might be wrong
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1201
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1202
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1203 /* Investigate if more contexts to modify */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1204 if( (cid_pointer EQ PDP_CONTEXT_CID_MAX) OR (work_cids[cid_pointer] EQ PDP_CONTEXT_CID_INVALID) )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1205 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1206 /* No more contexts to modify. All context modification were successful. */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1207
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1208 switch( smEntStat.curCmd )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1209 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1210 case AT_CMD_CGACT:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1211 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1212 R_AT( RAT_CGACT, smEntStat.entOwn )(0);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1213 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1214 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1215 case AT_CMD_CGCMOD:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1216 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1217 R_AT( RAT_CGCMOD, smEntStat.entOwn )();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1218 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1219 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1220 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1221
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1222 R_AT( RAT_OK, smEntStat.entOwn ) ( smEntStat.curCmd );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1223 smEntStat.curCmd = AT_CMD_NONE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1224 cid_pointer = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1225 work_cids[0] = PDP_CONTEXT_CID_INVALID;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1226
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1227 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1228 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1229 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1230 /* More contexts to modify */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1231 switch (get_state_over_cid(work_cids[cid_pointer]))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1232 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1233 case PDP_CONTEXT_STATE_ACTIVATED:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1234 set_state_over_cid(work_cids[cid_pointer], PDP_CONTEXT_STATE_ACTIVATED_MODIFYING);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1235 /* Send next modify request */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1236 psaSM_PDP_Modify();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1237 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1238
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1239 case PDP_CONTEXT_STATE_DATA_LINK:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1240 set_state_over_cid(work_cids[cid_pointer], PDP_CONTEXT_STATE_DATA_LINK_MODIFYING);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1241 /* Send next modify request */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1242 psaSM_PDP_Modify();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1243 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1244
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1245 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1246 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1247 /* The state has changed probably due to network deactivation. The command fails. */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1248 R_AT( RAT_CME, smEntStat.entOwn ) ( smEntStat.curCmd, CME_ERR_GPRSUnspec );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1249 smEntStat.curCmd = AT_CMD_NONE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1250 cid_pointer = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1251 work_cids[0] = PDP_CONTEXT_CID_INVALID;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1252 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1253 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1254 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1255 return 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1256 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1257 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1258
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1259
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1260
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1261 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1262 +-------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1263 | PROJECT : GPRS (8441) MODULE : CMH_SMR |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1264 | STATE : finnished ROUTINE : cmhSM_NoModify |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1265 +-------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1266
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1267 PURPOSE : indicates that the MT initiated PDP context modification
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1268 failed.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1269 RETURN : Callback with CME ERROR or just ERROR.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1270 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1271 #ifdef REL99
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1272 GLOBAL SHORT cmhSM_NoModify( T_SMREG_PDP_MODIFY_REJ *smreg_pdp_modify_rej )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1273 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1274 SHORT result = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1275
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1276
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1277 TRACE_FUNCTION ("cmhSM_NoModify()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1278
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1279 if (smreg_pdp_modify_rej EQ NULL)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1280 return -1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1281
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1282 switch( smEntStat.curCmd )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1283 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1284 case AT_CMD_CGCMOD:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1285 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1286 /* Reset state to the previous. */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1287 switch( get_state_working_cid() )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1288 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1289 case PDP_CONTEXT_STATE_ACTIVATED_MODIFYING:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1290 set_state_working_cid( PDP_CONTEXT_STATE_ACTIVATED );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1291 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1292
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1293 case PDP_CONTEXT_STATE_DATA_LINK_MODIFYING:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1294 set_state_working_cid( PDP_CONTEXT_STATE_DATA_LINK );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1295 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1296
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1297 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1298 TRACE_FUNCTION("State for modified context has been changed (Network deactivation?).");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1299 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1300
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1301 /* Reject the +CGCMOD command */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1302 R_AT( RAT_CME, smEntStat.entOwn ) ( smEntStat.curCmd, CME_ERR_GPRSUnspec );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1303 smEntStat.curCmd = AT_CMD_NONE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1304 cid_pointer = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1305 work_cids[0] = PDP_CONTEXT_CID_INVALID;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1306 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1307 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1308
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1309 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1310 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1311 result = -1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1312 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1313 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1314 } /* End switch( smEntStat.curCm ) */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1315
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1316 return result;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1317
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1318 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1319
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1320 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1321
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1322 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1323 +-------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1324 | PROJECT : UMTS MODULE : CMH_SMR |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1325 | STATE : ROUTINE : cmhSM_ActivatedSecondary |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1326 +-------------------------------------------------------------------+
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1327
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1328 PURPOSE : confirms a successful secondary context activation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1329
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1330 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1331 #ifdef REL99
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1332 GLOBAL SHORT cmhSM_ActivatedSecondary( T_SMREG_PDP_ACTIVATE_SEC_CNF *p_smreg_pdp_activate_sec_cnf )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1333 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1334 U8 cid = work_cids[cid_pointer];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1335 T_PDP_CONTEXT_INTERNAL *p_pdp_context_sec_node = NULL;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1336
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1337 TRACE_FUNCTION ("cmhSM_ActivatedSecondary()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1338
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1339 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1340 * Find the secondary PDP context
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1341 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1342 p_pdp_context_sec_node = pdp_context_find_node_from_cid( cid );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1343 if( !p_pdp_context_sec_node )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1344 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1345 TRACE_ERROR( "ERROR: PDP context not found, in function cmhSM_ActivatedSecondary" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1346 return -1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1347 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1348
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1349 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1350 *-------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1351 * check for command context
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1352 *-------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1353 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1354 switch( smEntStat.curCmd )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1355 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1356 case( AT_CMD_CGACT ):
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1357 TRACE_EVENT("CGACT is current command");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1358 if( get_state_working_cid() NEQ PDP_CONTEXT_STATE_ACTIVATING )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1359 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1360 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1361 * no action
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1362 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1363
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1364 return 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1365 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1366 R_AT( RAT_CGACT, smEntStat.entOwn )(p_pdp_context_sec_node->internal_data.link_id);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1367
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1368 set_state_working_cid( PDP_CONTEXT_STATE_ACTIVATED );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1369
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1370 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1371 * do we need one more context activation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1372 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1373
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1374 if( cmhSM_next_work_cid( AT_CMD_CGACT ) EQ FALSE )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1375 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1376 R_AT( RAT_OK, smEntStat.entOwn ) ( smEntStat.curCmd );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1377
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1378 /* log result */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1379 cmh_logRslt ( smEntStat.entOwn, RAT_OK, smEntStat.curCmd, -1, BS_SPEED_NotPresent,CME_ERR_NotPresent);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1380
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1381 smEntStat.curCmd = AT_CMD_NONE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1382 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1383
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1384
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1385 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1386
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1387 case( AT_CMD_CGDATA ):
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1388 TRACE_EVENT("CGDATA is current command");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1389 if( get_state_working_cid() NEQ PDP_CONTEXT_STATE_ESTABLISH_2 )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1390 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1391 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1392 * no action
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1393 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1394 return 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1395 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1396
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1397 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1398 *---------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1399 * inform PPP
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1400 *---------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1401 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1402 psaGPPP_PDP_Activate( &p_pdp_context_sec_node->internal_data.pdp_address_allocated,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1403 p_pdp_context_sec_node->internal_data.user_pco.pco,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1404 p_pdp_context_sec_node->internal_data.user_pco.len,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1405 (U8)CID_TO_NSAPI( p_pdp_context_sec_node->cid ) );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1406
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1407 set_state_working_cid( PDP_CONTEXT_STATE_ESTABLISH_3 );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1408
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1409 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1410
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1411 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1412 TRACE_EVENT("current command not detected!");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1413 return -1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1414 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1415
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1416 TRACE_EVENT_P2( "cmhSM_Activated, dti_entity_connected, dti_it = %d, cid_ptr = %d",
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1417 p_pdp_context_sec_node->internal_data.link_id, cid_pointer );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1418 dti_cntrl_entity_connected(p_pdp_context_sec_node->internal_data.link_id, DTI_ENTITY_SNDCP, DTI_OK);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1419
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1420 return 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1421 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1422 #endif /* REL99 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1423
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1424
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1425 #ifdef REL99
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1426 GLOBAL SHORT cmhSM_NoActivateSecondary( T_SMREG_PDP_ACTIVATE_SEC_REJ *p_smreg_pdp_activate_sec_rej )
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1427 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1428 short res = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1429
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1430 TRACE_FUNCTION( "cmhSM_NoActivateSecondary" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1431 TRACE_EVENT( "This funciton is not implemented!" );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1432
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1433 return res;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1434 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1435 #endif /* REL99 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1436 GLOBAL BOOL PKTIO_UPM_connect_dti_cb(UBYTE dti_id, T_DTI_CONN_STATE result_type)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1437 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1438 U8 cid;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1439 T_PDP_CONTEXT_INTERNAL *p_pdp_context_node = NULL;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1440
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1441 TRACE_FUNCTION("PKTIO_UPM_connect_dti_cb");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1442
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1443 switch( result_type)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1444 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1445 case DTI_CONN_STATE_DISCONNECTING:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1446 cid = (U8)gaci_get_cid_over_dti_id(dti_id);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1447 p_pdp_context_node = pdp_context_find_node_from_cid(cid);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1448
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1449 if( (INVALID_CID NEQ cid ) AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1450 ( PDP_CONTEXT_STATE_ACTIVATING EQ get_state_over_cid(cid)) AND
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1451 (( DTI_ENTITY_PKTIO EQ p_pdp_context_node->internal_data.entity_id) OR
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1452 (DTI_ENTITY_AAA EQ p_pdp_context_node->internal_data.entity_id)))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1453 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1454 cmhSM_deactivateAContext(CMD_SRC_NONE, cid);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1455 set_state_over_cid( cid, PDP_CONTEXT_STATE_DEACTIVATE_NORMAL);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1456 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1457 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1458 case DTI_CONN_STATE_DISCONNECTED:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1459 case DTI_CONN_STATE_CONNECTING:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1460 case DTI_CONN_STATE_CONNECTED:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1461 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1462 case DTI_CONN_STATE_ERROR:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1463 /* connection not possible: disconnect SNDCP */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1464 dti_cntrl_close_dpath_from_dti_id( dti_id );
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1465 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1466 case DTI_CONN_STATE_UNKNOWN:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1467 default:
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1468 TRACE_EVENT("PKTIO_UPM_connect_dti_cb call with not awaited value");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1469 break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1470 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1471 return TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1472 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1473
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1474
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1475 #endif /* GPRS */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1476 /*==== EOF ========================================================*/