comparison src/aci2/aci/psa_gpppf.c @ 3:93999a60b835

src/aci2, src/condat2: import of g23m/condat source pieces from TCS211
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 26 Sep 2016 00:29:36 +0000
parents
children
comparison
equal deleted inserted replaced
2:c41a534f33c6 3:93999a60b835
1 /*
2 +-----------------------------------------------------------------------------
3 | Project :
4 | Modul :
5 +-----------------------------------------------------------------------------
6 | Copyright 2002 Texas Instruments Berlin, AG
7 | All rights reserved.
8 |
9 | This file is confidential and a trade secret of Texas
10 | Instruments Berlin, AG
11 | The receipt of or possession of this file does not convey
12 | any rights to reproduce or disclose its contents or to
13 | manufacture, use, or sell anything it may describe, in
14 | whole, or in part, without the specific written consent of
15 | Texas Instruments Berlin, AG.
16 +-----------------------------------------------------------------------------
17 | Purpose : This module defines the functions for the protocol
18 | stack adapter for GPRS Point-to-Point Protocol ( PPP ).
19 +-----------------------------------------------------------------------------
20 */
21
22 #if defined (GPRS) && defined (DTI)
23
24 #ifndef PSA_GPPPF_C
25 #define PSA_GPPPF_C
26 #endif
27
28 #include "aci_all.h"
29
30 #undef TRACING
31 /*==== INCLUDES ===================================================*/
32 #include "dti.h" /* functionality of the dti library */
33 #include "aci_cmh.h"
34 #include "ati_cmd.h"
35 #include "aci_cmd.h"
36 #include "aci.h"
37 #include "psa.h"
38
39 #include "dti_conn_mng.h"
40 #include "dti_cntrl_mng.h"
41
42 #include "gaci.h"
43 #include "gaci_cmh.h"
44 #include "cmh.h"
45 #include "cmh_sm.h"
46
47 #include "psa_gppp.h"
48 #include "aci_io.h"
49
50 #include "psa_uart.h"
51 #include "sap_dti.h"
52 #ifdef FF_PSI
53 #include "psa_psi.h"
54 #include "cmh_psi.h"
55 #include "ati_src_psi.h"
56 #endif /*FF_PSI*/
57
58 /*==== CONSTANTS ==================================================*/
59 /*#define ITM_WDT (14)*/ /* item width in chars */
60 /*#define HDR_WDT (10)*/ /* header width in chars */
61
62 /*==== TYPES ======================================================*/
63
64
65 /*==== EXPORT =====================================================*/
66
67
68 /*==== VARIABLES ==================================================*/
69
70 /*==== FUNCTIONS ==================================================*/
71 EXTERN void cmhGPPP_send_establish_request( UBYTE peer );
72
73 /*
74 +-------------------------------------------------------------------+
75 | PROJECT : GPRS (8441) MODULE : PSA_PPPF |
76 | STATE : code ROUTINE : psaGPPP_Init |
77 +-------------------------------------------------------------------+
78
79 PURPOSE : initialize the protocol stack adapter for PPP.
80
81 */
82
83 /* MACRO: initializer for set parameter */
84 #ifdef INIT_SET_PARM
85 #undef INIT_SET_PARM
86 #endif
87
88 #define INIT_SET_PARM( dest, def )\
89 for( LpCnt = 0; LpCnt < OWN_MAX; LpCnt++ )\
90 gpppShrdPrm.setPrm[LpCnt].dest = def
91
92 GLOBAL void psaGPPP_Init ( UBYTE accm, UBYTE restart_timer,
93 UBYTE max_configure, UBYTE max_terminate, UBYTE max_failure )
94 {
95
96 /*
97 *-------------------------------------------------------------------
98 * set default parms
99 *-------------------------------------------------------------------
100 */
101 gpppShrdPrm.owner = (UBYTE) OWN_NONE;
102 gpppShrdPrm.ppp_authentication_protocol = PPP_AP_AUTO;
103
104 gpppShrdPrm.accm = accm;
105 gpppShrdPrm.restart_timer = restart_timer;
106 gpppShrdPrm.max_configure = max_configure;
107 gpppShrdPrm.max_terminate = max_terminate;
108 gpppShrdPrm.max_failure = max_failure;
109
110 }
111
112 GLOBAL void psaGPPPS_Dti_Req( T_DTI_CONN_LINK_ID link_id, UBYTE peer )
113 {
114
115 TRACE_FUNCTION("psaGPPPS_Dti_Req()");
116
117 switch ( peer )
118 {
119 #ifdef BT_ADAPTER
120 case DTI_ENTITY_BLUETOOTH:
121 #endif /* BT_ADAPTER */
122 case DTI_ENTITY_UART:
123 pdp_context[work_cids[0] - 1].link_id_uart = link_id;
124 dti_cntrl_set_conn_parms(link_id, DTI_ENTITY_UART, 0, 0);
125 dti_cntrl_set_conn_parms(link_id, DTI_ENTITY_PPPS, 0, 0);
126 if(DTI_TUPLE_NO_NOTPRESENT NEQ EXTRACT_TUPLE_NO(pdp_context[work_cids[0] - 1].link_id_new))
127 {
128 io_setDCD (pdp_context[work_cids[0] - 1].owner, IO_DCD_ON);
129 cmhGPPP_send_establish_request(peer);
130 }
131 break;
132 #ifdef FF_PSI
133 case DTI_ENTITY_PSI:
134 pdp_context[work_cids[0] - 1].link_id_uart = link_id;
135 dti_cntrl_set_conn_parms(link_id, DTI_ENTITY_PSI, 0, 0);
136 dti_cntrl_set_conn_parms(link_id, DTI_ENTITY_PPPS, 0, 0);
137 if(DTI_TUPLE_NO_NOTPRESENT NEQ EXTRACT_TUPLE_NO(pdp_context[work_cids[0] - 1].link_id_new))
138 {
139 io_setDCD (pdp_context[work_cids[0] - 1].owner, IO_DCD_ON);
140 cmhGPPP_send_establish_request(peer);
141 }
142 break;
143 #endif /*FF_PSI*/
144 case DTI_ENTITY_AAA:
145 pdp_context[work_cids[0] - 1].link_id_uart = link_id;
146 dti_cntrl_set_conn_parms(link_id, DTI_ENTITY_AAA, 0, 0);
147 dti_cntrl_set_conn_parms(link_id, DTI_ENTITY_PPPS, 0, 0);
148 if(DTI_TUPLE_NO_NOTPRESENT NEQ EXTRACT_TUPLE_NO(pdp_context[work_cids[0] - 1].link_id_new))
149 {
150 cmhGPPP_send_establish_request(peer);
151 }
152 break;
153 case DTI_ENTITY_SNDCP:
154 pdp_context[work_cids[0] - 1].link_id_new = link_id;
155 if(DTI_TUPLE_NO_NOTPRESENT NEQ EXTRACT_TUPLE_NO(pdp_context[work_cids[0] - 1].link_id_uart))
156 {
157 T_DTI_ENTITY_ID other_peer = dti_cntrl_get_peer(DTI_ENTITY_PPPS, 0, 0);
158 if(DTI_ENTITY_UART EQ other_peer OR DTI_ENTITY_PSI EQ other_peer)
159 {
160 io_setDCD (pdp_context[work_cids[0] - 1].owner, IO_DCD_ON);
161 }
162 cmhGPPP_send_establish_request(other_peer);
163 }
164 break;
165 }
166 }
167
168 /*
169 +-------------------------------------------------------------------------+
170 | PROJECT : GSM-F&D (8411) MODULE : PSA_PPPF |
171 | STATE : code ROUTINE : PPP_UART_connect_dti_cb |
172 +-------------------------------------------------------------------------+
173
174 PURPOSE : Callback for DTI connection between PPP Server and UART.
175
176 */
177 GLOBAL BOOL PPP_UART_connect_dti_cb(UBYTE dti_id, T_DTI_CONN_STATE result_type)
178 {
179 TRACE_FUNCTION("PPP_UART_connect_dti_cb");
180
181 switch( result_type)
182 {
183 case DTI_CONN_STATE_DISCONNECTING:
184 break;
185 case DTI_CONN_STATE_DISCONNECTED:
186 dti_cntrl_clear_conn_parms(dti_id);
187 if (dti_cntrl_is_dti_id_to_reconnect(dti_id))
188 {
189 T_DTI_ENTITY_ID entity_list[] = {DTI_ENTITY_ACI};
190 T_DTI_CNTRL info;
191
192 if (dti_cntrl_get_info_from_dti_id( dti_id, &info) EQ FALSE)
193 {
194 TRACE_EVENT_P1("cannot find info for dti_id=%d", dti_id);
195 return FALSE;
196 }
197
198 if (info.dev_id EQ DTI_ENTITY_UART)
199 {
200 io_setDCD (info.src_id, IO_DCD_OFF);
201
202 dti_cntrl_clear_dti_id_to_reconnect(dti_id);
203 dti_cntrl_est_dpath_indirect ( info.src_id,
204 entity_list,
205 1,
206 SPLIT,
207 atiUART_dti_cb,
208 DTI_CPBLTY_CMD,
209 DTI_CID_NOTPRESENT);
210 }
211 #ifdef FF_PSI
212 else if (info.dev_id EQ DTI_ENTITY_PSI)
213 {
214 io_setDCD (info.src_id, IO_DCD_OFF);
215
216 dti_cntrl_clear_dti_id_to_reconnect(dti_id);
217 dti_cntrl_est_dpath_indirect ( info.src_id,
218 entity_list,
219 1,
220 SPLIT,
221 atiPSI_dti_cb,
222 DTI_CPBLTY_CMD,
223 DTI_CID_NOTPRESENT);
224 }
225 #endif /*FF_PSI*/
226 else
227 return FALSE;
228 }
229 break;
230
231 case DTI_CONN_STATE_CONNECTING:
232 break;
233 case DTI_CONN_STATE_CONNECTED:
234 break;
235
236 case DTI_CONN_STATE_ERROR:
237 /* connection not possible: disconnect PPP */
238 dti_cntrl_close_dpath_from_dti_id(dti_id);
239 break;
240 case DTI_CONN_STATE_UNKNOWN:
241 default:
242 TRACE_EVENT("PPP_UART_connect_dti_cb call with not awaited value");
243 break;
244 }
245 return TRUE;
246 }
247
248 /*
249 +--------------------------------------------------------------------------+
250 | PROJECT : GSM-F&D (8411) MODULE : PSA_PPPF |
251 | STATE : code ROUTINE : PPP_SNDCP_connect_dti_cb |
252 +--------------------------------------------------------------------------+
253
254 PURPOSE : Callback for connection between PPP Server and SNDCP.
255
256 */
257 GLOBAL BOOL PPP_SNDCP_connect_dti_cb(UBYTE dti_id, T_DTI_CONN_STATE result_type)
258 {
259 TRACE_FUNCTION("PPP_SNDCP_connect_dti_cb");
260
261 switch( result_type)
262 {
263 case DTI_CONN_STATE_DISCONNECTING:
264 case DTI_CONN_STATE_DISCONNECTED:
265 case DTI_CONN_STATE_CONNECTING:
266 case DTI_CONN_STATE_CONNECTED:
267 break;
268 case DTI_CONN_STATE_ERROR:
269 /* connection not possible: disconnect SNDCP */
270 dti_cntrl_close_dpath_from_dti_id( dti_id );
271 break;
272 case DTI_CONN_STATE_UNKNOWN:
273 default:
274 TRACE_EVENT("PPP_SNDCP_connect_dti_cb call with not awaited value");
275 break;
276 }
277 return TRUE;
278 }
279
280 #if 0
281 /*
282 +-------------------------------------------------------------------+
283 | PROJECT : GSM-PS (6147) MODULE : PSA_PPPF |
284 | ROUTINE : psaGPPP_shrPrmDump |
285 +-------------------------------------------------------------------+
286
287 PURPOSE : this function dumps the shared parameter to the debug
288 output.
289 */
290
291 GLOBAL void psaGPPP_shrPrmDump ( void )
292 {
293 #ifdef TRACING
294
295 char lnBuf [80]; /* holds buffer for output line */
296 char mccBuf[SIZE_MCC + 1]; /* MCC converted to printable C-string */
297 char mncBuf[SIZE_MNC + 1]; /* MNC converted to printable C-string */
298 SHORT chrNr; /* holds number of processed chars */
299 SHORT cnt; /* holds a counter */
300
301 /* --- PLMN list ------------------------------------------------*/
302 for( cnt = 0; cnt<MAX_PLMN_ID AND
303 mmShrdPrm.PLMNLst[cnt].v_plmn NEQ INVLD_PLMN; cnt++ )
304 {
305 chrNr = sprintf( lnBuf, "%*.*s[%2d]", HDR_WDT, HDR_WDT, " PLMN list",cnt );
306 utl_BCD2String (mccBuf, mmShrdPrm.PLMNLst[cnt].mcc, SIZE_MCC);
307 utl_BCD2String (mncBuf, mmShrdPrm.PLMNLst[cnt].mnc, SIZE_MNC);
308 chrNr += sprintf( lnBuf+chrNr, "%*s %*s",
309 ITM_WDT/2, ITM_WDT/2, mccBuf, mncBuf);
310 TRACE_EVENT( lnBuf );
311 }
312
313 /* --- used PLMN ------------------------------------------------*/
314 chrNr = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, " used PLMN" );
315 if( mmShrdPrm.usedPLMN.v_plmn EQ VLD_PLMN )
316 {
317 utl_BCD2String (mccBuf, mmShrdPrm.usedPLMN.mcc, SIZE_MCC);
318 utl_BCD2String (mncBuf, mmShrdPrm.usedPLMN.mnc, SIZE_MNC);
319 chrNr += sprintf( lnBuf+chrNr, "%*s %*s",
320 ITM_WDT/2, ITM_WDT/2, mccBuf, mncBuf);
321 }
322 else
323 {
324 chrNr += sprintf( lnBuf+chrNr, "%*s", ITM_WDT, "none" );
325 }
326 TRACE_EVENT( lnBuf );
327
328 /* --- registration mode ----------------------------------------*/
329 chrNr = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, "rgstr mode" );
330 chrNr += sprintf( lnBuf+chrNr, "%*hd", ITM_WDT,
331 mmShrdPrm.setPrm[0].regMode );
332 TRACE_EVENT( lnBuf );
333
334 /* --- registration status --------------------------------------*/
335 chrNr = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, "rgstr stat" );
336 chrNr += sprintf( lnBuf+chrNr, "%*hd", ITM_WDT,
337 mmShrdPrm.regStat );
338 TRACE_EVENT( lnBuf );
339
340 /* --- search result --------------------------------------------*/
341 chrNr = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, " srch rslt" );
342 chrNr += sprintf( lnBuf+chrNr, "%*hd", ITM_WDT,
343 mmShrdPrm.srchRslt );
344 TRACE_EVENT( lnBuf );
345
346 /* --- de-registration cause ------------------------------------*/
347 chrNr = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, "dereg caus" );
348 chrNr += sprintf( lnBuf+chrNr, "%*X", ITM_WDT,
349 mmShrdPrm.deregCs );
350 TRACE_EVENT( lnBuf );
351
352 #endif /* of #ifdef TRACING */
353 }
354 #endif /* #if 0 */
355
356 #endif /* GPRS */
357 /*==== EOF ========================================================*/
358