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 : GSM-PS (6147)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 | Modul : PSA_TCPP
|
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 processing functions for the
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 | primitives sent to the protocol stack adapter by the TCPIP
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 | module.
|
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 #ifndef PSA_TCPP_C
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 #define PSA_TCPP_C
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 #endif /* of PSA_TCPP_C */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 #include "aci_all.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 /*==== INCLUDES ===================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 #include "aci_cmh.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 #include "ati_cmd.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 #include "aci_cmd.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 #include "dti.h" /* functionality of the dti library */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 #include "dti_conn_mng.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 #include "dti_cntrl_mng.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 #include "aci_fd.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 #include "aci.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 #include "psa.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 #include "psa_l2r.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 #include "cmh.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 #include "cmh_ra.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 #include "cmh_l2r.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 #include "psa_tcpip.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 #include "psa_cc.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 #include "wap_aci.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 #include "psa_sat.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 #include "dcm_utils.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 #include "dcm_state.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 #include "dcm_env.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 #include "dcm_f.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 /*==== CONSTANTS ==================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 /*==== TYPES ======================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 /*==== EXPORT =====================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 /*==== VARIABLES ==================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 /*==== FUNCTIONS ==================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 | PROJECT : GSM-PS (6147) MODULE : PSA_TCP |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 | ROUTINE : psa_tcpip_dti_cnf |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 PURPOSE : processes the TCPIP_DTI_CNF primitive sent by TCPIP.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 GLOBAL void psa_tcpip_dti_cnf(T_TCPIP_DTI_CNF *tcpip_dti_cnf)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 TRACE_FUNCTION ("psa_tcpip_dti_cnf()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 switch( tcpip_dti_cnf->dti_conn )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 case(TCPIP_CONNECT_DTI):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 dti_cntrl_entity_connected( tcpip_dti_cnf->link_id, DTI_ENTITY_TCPIP, DTI_OK );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 case(TCPIP_DISCONNECT_DTI):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 dti_cntrl_entity_disconnected( tcpip_dti_cnf->link_id, DTI_ENTITY_TCPIP );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88 PFREE(tcpip_dti_cnf);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 | PROJECT : GSM-PS (6147) MODULE : PSA_TCP |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95 | ROUTINE : psa_tcpip_ifconfig_cnf |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98 PURPOSE : processes the TCPIP_CONFIG_CNF primitive sent by TCPIP.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
100 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 GLOBAL void psa_tcpip_ifconfig_cnf(T_TCPIP_IFCONFIG_CNF *tcpip_ifconfig_cnf)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
103 TRACE_FUNCTION ("psa_tcpip_ifconfig_cnf()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
104
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
105 if(tcpip_ifconfig_cnf->result == TCPIP_RESULT_OK)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
106 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
107 if (wap_state EQ TCPIP_Configuration)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
108 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
109 wap_state = TCPIP_Configurated;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
110 cmhTCPIP_Configurated();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
111 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
112 else if (wap_state EQ TCPIP_Deconfiguration)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
113 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
114 wap_state = TCPIP_Deconfigurated;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115 /* For TCPIP call also we need to shutdown the TCP before clearing the
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116 DTI connection */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117 if( (tcpipShrdPrm.connection_type EQ TCPIP_CONNECTION_TYPE_CSD_WAP) OR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
118 ((is_gpf_tcpip_call()) AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119 (tcpipShrdPrm.connection_type EQ TCPIP_CONNECTION_TYPE_GPRS_WAP)))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122 wap_state = TCPIP_Deactivation;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
123 psaTCPIP_config_dispatch();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
125 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 cmhTCPIP_Deconfigurated();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
129 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
130 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
131 TRACE_EVENT("unexpected TCPIP_IFCONFIG_CNF primitive received");
|
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 PFREE(tcpip_ifconfig_cnf);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136
|
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 GLOBAL void psa_tcpip_shutdown_cnf(T_TCPIP_SHUTDOWN_CNF *tcpip_shutdown_cnf)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 TRACE_FUNCTION ("psa_tcpip_shutdown_cnf()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143 if(tcpip_shutdown_cnf->result != TCPIP_RESULT_OK)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145 T_DCM_STATUS_IND_MSG msg;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
146 msg.hdr.msg_id = DCM_NEXT_CMD_STOP_MSG;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
147 dcm_send_message(msg, DCM_SUB_WAIT_CGDEACT_CNF);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
148
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
149 msg.hdr.msg_id = DCM_NEXT_CMD_STOP_MSG;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
150 dcm_send_message(msg, DCM_SUB_WAIT_SATH_CNF);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
151 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
152 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
153 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
154 wap_state = TCPIP_Deactivated;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
155 psaTCPIP_config_dispatch();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
156 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
157 reset_gpf_tcpip_call();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
158 PFREE(tcpip_shutdown_cnf);
|
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
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
163 GLOBAL void psa_tcpip_initialize_cnf(T_TCPIP_INITIALIZE_CNF *tcpip_initialize_cnf)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
164 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
165 TRACE_FUNCTION ("psa_tcpip_initialize_cnf()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
166
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
167 if(tcpip_initialize_cnf->result != TCPIP_RESULT_OK)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
168 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
169 T_DCM_STATUS_IND_MSG msg;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
170 msg.hdr.msg_id = DCM_NEXT_CMD_STOP_MSG;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
171 dcm_send_message(msg, DCM_SUB_WAIT_CGACT_CNF);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
172
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
173 msg.hdr.msg_id = DCM_NEXT_CMD_STOP_MSG;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
174 dcm_send_message(msg, DCM_SUB_WAIT_SATDN_CNF);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
175 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
176 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
177 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
178 wap_state = TCPIP_Activation;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
179 psaTCPIP_config_dispatch();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
180 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
181 PFREE(tcpip_initialize_cnf);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
182 }
|