comparison g23m-aci/aci/aci_pei.c @ 0:75a11d740a02

initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 09 Jun 2016 00:02:41 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:75a11d740a02
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 implements the process body interface
18 | for the AT Command Interpreter.
19 +-----------------------------------------------------------------------------
20 */
21
22 #ifndef ACI_PEI_C
23 #define ACI_PEI_C
24
25 #include "config.h"
26 #include "fixedconf.h"
27 #include "condat-features.h"
28 #include "aci_conf.h"
29
30 #include "aci_all.h"
31
32 #include "ccdapi.h"
33 #include "cnf_aci.h"
34 #include "mon_aci.h" /* mouais... */
35 #include "p_aci.val" /* SKA 2002-09-02 for MAX_CMD_LEN */
36 #include "line_edit.h" /* SKA 2002-09-02 */
37 #include "aci_cmh.h"
38 #include "ati_cmd.h"
39 #include "aci_cmd.h"
40 #include "aci.h"
41 #include "aci_mem.h"
42
43 #if 0 //#ifndef _SIMULATION_ // FreeCalypso change
44 #include "rv_swe.h"
45 #ifdef RVM_GIL_SWE
46 #include "gil/gil_gpf.h" /* MMI_GIL_IND dispatch function */
47 #endif /* RVM_GIL_SWE */
48 #endif /* _SIMULATION_ */
49
50
51 #include "psa.h"
52 #include "psa_cc.h"
53 #include "psa_mm.h"
54 #include "psa_sim.h"
55 #include "psa_mmi.h"
56 #include "psa_sms.h"
57 #include "aoc.h"
58 #include "phb.h"
59 #include "hl_audio_drv.h"
60
61 #include "aci_lst.h"
62
63 #ifdef DTI
64 #include "dti.h" /* functionality of the dti library */
65 #include "dti_conn_mng.h"
66 #include "dti_cntrl_mng.h"
67 #endif
68
69 #ifdef GPRS
70 #include "gprs.h"
71 #include "gaci_cmh.h"
72 #include "psa_gmm.h"
73 #include "psa_sm.h"
74 #include "psa_gppp.h"
75 #include "psa_upm.h"
76 #include "psa_snd.h"
77 #endif /* GPRS */
78
79 #ifdef UART
80 #include "psa_uart.h"
81 #include "cmh_uart.h"
82 #endif
83
84 #ifdef FF_ATI
85 #include "aci_io.h"
86 #endif
87
88 #ifdef FF_PSI
89 #include "psa_psi.h"
90 #include "cmh_psi.h"
91 #endif /*FF_PSI*/
92
93 #ifdef FAX_AND_DATA
94 #include "aci_fd.h"
95 #include "psa_ra.h"
96 #include "psa_l2r.h"
97 #ifdef FF_FAX
98 #include "psa_t30.h"
99 #endif
100 #endif
101
102 #if defined (FF_WAP) || defined (FF_PPP) || defined(FF_GPF_TCPIP)|| defined (FF_SAT_E)
103 #include "psa_ppp_w.h"
104 #endif
105 #if defined (CO_UDP_IP) || defined (FF_GPF_TCP_IP)
106 #include "psa_tcpip.h"
107 #endif /* defined (CO_UDP_IP) || defined(FF_GPF_TCPIP) */
108
109 #include "cmh.h"
110
111 #ifdef SIM_TOOLKIT
112 #include "psa_sat.h"
113 #endif
114
115 #ifdef MFW
116 #include "mfw_acie.h"
117 #endif
118
119 #include "gdi.h"
120 #include "audio.h"
121 #include "rx.h"
122 #include "pwr.h"
123
124
125 #ifdef BT_ADAPTER
126 #include "bti.h"
127 #include "bti_aci.h"
128 #endif
129
130 #ifdef FF_PKTIO
131 #include "psa_pktio.h"
132 #endif
133 #ifdef _SIMULATION_
134 #include "ati_src_tst.h"
135 #endif
136
137 #if defined FF_EOTD
138 #include "ati_src_lc.h"
139 #endif
140
141 #ifdef DTI
142 #include "sap_dti.h"
143 #endif
144
145 #include "psa_ss.h"
146 #ifdef FF_ESIM
147 #include "psa_aaa.h" /* esim */
148 #endif
149
150 #ifdef FF_MMI_RIV
151 EXTERN void acia_init(void);
152 #endif
153
154 #ifdef _SIMULATION_
155 #ifdef FF_ATI_BAT
156 #include "ati_bat.h"
157 #endif
158 #endif
159
160
161 /*==== DEFINE =====================================================*/
162
163 /*==== EXPORT =====================================================*/
164
165 GLOBAL UBYTE mode = 1;
166 /*
167 * instance data base
168 */
169
170 /*==== PRIVATE ====================================================*/
171
172 LOCAL void pei_not_supported (void *data);
173
174 /*==== VARIABLES ==================================================*/
175 LOCAL BOOL first_access = TRUE;
176 LOCAL T_MONITOR aci_mon;
177
178 #if defined(FF_ATI) AND defined(SIM_TOOLKIT)
179 EXTERN UBYTE run_at_id;
180 #endif
181
182 /*==== FUNCTIONS ==================================================*/
183
184 #ifdef SMI
185 EXTERN T_PEI_RETURN _pei_init (void);
186 EXTERN T_PEI_RETURN _pei_primitive (T_PRIM *prim);
187 EXTERN T_PEI_RETURN _pei_exit (void);
188 EXTERN T_PEI_RETURN _pei_monitor (void ** monitor);
189 /* Implements Measure#36 */
190 #if !defined (NCONFIG)
191 EXTERN T_PEI_RETURN _pei_config ( T_PEI_CONFIG inString );
192 #endif /* NCONFIG */
193 #endif /* SMI */
194 EXTERN void tim_exec_timeout (USHORT index);
195
196 /*
197 +--------------------------------------------------------------------+
198 | PROJECT : GSM-F&D (8411) MODULE : RLP_PEI |
199 | STATE : code ROUTINE : pei_not_supported |
200 +--------------------------------------------------------------------+
201
202 PURPOSE : An unsupported primitive is received.
203
204 */
205
206 LOCAL void pei_not_supported (void *data)
207 {
208 TRACE_FUNCTION ("pei_not_supported()");
209
210 PFREE (data);
211 }
212
213 /*
214 *
215 * Use MAK_FUNC_0 for primitives which contains no SDU.
216 *
217 * Use MAK_FUNC_S for primitives which contains a SDU.
218 */
219
220 /*
221 * jumptable for the entity service access point. Contains
222 * the processing-function addresses and opcodes of
223 * request and response primitives.
224 *
225 */
226 LOCAL const T_FUNC sim_table[] = {
227 MAK_FUNC_0( psa_sim_read_cnf, SIM_READ_CNF ),
228 MAK_FUNC_0( psa_sim_update_cnf, SIM_UPDATE_CNF ),
229 MAK_FUNC_0( psa_sim_read_record_cnf, SIM_READ_RECORD_CNF ),
230 MAK_FUNC_N( pei_not_supported, 0 ),
231 MAK_FUNC_0( psa_sim_update_record_cnf, SIM_UPDATE_RECORD_CNF ),
232 MAK_FUNC_N( pei_not_supported, 0 ),
233 MAK_FUNC_N( pei_not_supported, 0 ),
234 MAK_FUNC_N( pei_not_supported, 0 ),
235 MAK_FUNC_0( psa_sim_increment_cnf, SIM_INCREMENT_CNF ),
236 MAK_FUNC_0( psa_sim_verify_pin_cnf, SIM_VERIFY_PIN_CNF ),
237 MAK_FUNC_0( psa_sim_change_pin_cnf, SIM_CHANGE_PIN_CNF ),
238 MAK_FUNC_0( psa_sim_disable_pin_cnf, SIM_DISABLE_PIN_CNF ),
239 MAK_FUNC_0( psa_sim_enable_pin_cnf, SIM_ENABLE_PIN_CNF ),
240 MAK_FUNC_0( psa_sim_unblock_cnf, SIM_UNBLOCK_CNF ),
241 MAK_FUNC_N( pei_not_supported, 0 ),
242 MAK_FUNC_0( psa_sim_mmi_insert_ind, SIM_MMI_INSERT_IND ),
243 MAK_FUNC_N( pei_not_supported, 0 ),
244 MAK_FUNC_0( psa_sim_remove_ind, SIM_REMOVE_IND ),
245 MAK_FUNC_0( psa_sim_sync_cnf, SIM_SYNC_CNF ),
246 MAK_FUNC_0( psa_sim_activate_cnf, SIM_ACTIVATE_CNF ),
247 MAK_FUNC_N( pei_not_supported, 0 ),/*20*/
248 #ifdef SIM_TOOLKIT
249 MAK_FUNC_0( psa_sim_toolkit_ind, SIM_TOOLKIT_IND ),
250 MAK_FUNC_0( psa_sim_toolkit_cnf, SIM_TOOLKIT_CNF ),
251 #else
252 MAK_FUNC_N( pei_not_supported, 0 ),
253 MAK_FUNC_N( pei_not_supported, 0 ),
254 #endif
255 MAK_FUNC_0( psa_sim_activate_ind, SIM_ACTIVATE_IND ),/*23*/
256 MAK_FUNC_N( pei_not_supported, 0 ),
257 MAK_FUNC_0( psa_sim_access_cnf, SIM_ACCESS_CNF ),
258 #ifdef SIM_TOOLKIT
259 MAK_FUNC_0( psa_sim_file_update_ind, SIM_FILE_UPDATE_IND ),
260 #else
261 MAK_FUNC_N( pei_not_supported, 0 ),
262 #endif
263 MAK_FUNC_N( pei_not_supported, 0 ),/* SIM_GMM_INSERT_IND */
264 #ifdef FF_SAT_E
265 MAK_FUNC_0( psa_sim_dti_cnf, SIM_DTI_CNF ),/*28*/
266 MAK_FUNC_0( psa_sim_bip_cnf, SIM_BIP_CNF ),/*29*/
267 MAK_FUNC_0( psa_sim_bip_config_cnf, SIM_BIP_CONFIG_CNF ),/*30*/
268 MAK_FUNC_0( psa_sim_dti_bip_ind, SIM_DTI_BIP_IND ),/*31*/
269 MAK_FUNC_0( psa_sim_eventlist_cnf, SIM_EVENTLIST_CNF ),/*32*/
270 #else
271 MAK_FUNC_N( pei_not_supported, 0 ),
272 MAK_FUNC_N( pei_not_supported, 0 ),
273 MAK_FUNC_N( pei_not_supported, 0 ),
274 MAK_FUNC_N( pei_not_supported, 0 ),
275 MAK_FUNC_N( pei_not_supported, 0 ),
276 #endif
277 MAK_FUNC_N( pei_not_supported, 0 ) /*33*/
278 };
279
280 LOCAL const T_FUNC mmr_table[] = {
281 MAK_FUNC_0( psa_mmr_reg_cnf, MMR_REG_CNF ),
282 MAK_FUNC_0( psa_mmr_nreg_ind, MMR_NREG_IND ),
283 MAK_FUNC_0( psa_mmr_nreg_cnf, MMR_NREG_CNF ),
284 MAK_FUNC_0( psa_mmr_plmn_ind, MMR_PLMN_IND ),
285 MAK_FUNC_0( psa_mmr_info_ind, MMR_INFO_IND ),
286 MAK_FUNC_0( psa_mmr_ciphering_ind, MMR_CIPHERING_IND ),
287 MAK_FUNC_0( psa_mmr_ahplmn_ind, MMR_AHPLMN_IND )
288 };
289
290 LOCAL const T_FUNC mncc_table[] = {
291 MAK_FUNC_0( psa_mncc_alert_ind, MNCC_ALERT_IND ),
292 MAK_FUNC_0( psa_mncc_call_proceed_ind, MNCC_CALL_PROCEED_IND ),
293 MAK_FUNC_0( psa_mncc_disconnect_ind, MNCC_DISCONNECT_IND ),
294 MAK_FUNC_0( psa_mncc_hold_cnf, MNCC_HOLD_CNF ),
295 MAK_FUNC_0( psa_mncc_modify_cnf, MNCC_MODIFY_CNF ),
296 MAK_FUNC_0( psa_mncc_modify_ind, MNCC_MODIFY_IND ),
297 MAK_FUNC_N( pei_not_supported, 0 ),
298 MAK_FUNC_0( psa_mncc_progress_ind, MNCC_PROGRESS_IND ),
299 MAK_FUNC_0( psa_mncc_reject_ind, MNCC_REJECT_IND ),
300 MAK_FUNC_0( psa_mncc_release_cnf, MNCC_RELEASE_CNF ),
301 MAK_FUNC_0( psa_mncc_release_ind, MNCC_RELEASE_IND ),
302 MAK_FUNC_0( psa_mncc_retrieve_cnf, MNCC_RETRIEVE_CNF ),
303 MAK_FUNC_0( psa_mncc_setup_cnf, MNCC_SETUP_CNF ),
304 MAK_FUNC_0( psa_mncc_setup_compl_ind, MNCC_SETUP_COMPL_IND ),
305 MAK_FUNC_0( psa_mncc_setup_ind, MNCC_SETUP_IND ),
306 MAK_FUNC_0( psa_mncc_start_dtmf_cnf, MNCC_START_DTMF_CNF ),
307 MAK_FUNC_0( psa_mncc_sync_ind, MNCC_SYNC_IND ),
308 MAK_FUNC_0( psa_mncc_user_ind, MNCC_USER_IND ),
309 MAK_FUNC_0( psa_mncc_facility_ind, MNCC_FACILITY_IND ),
310 MAK_FUNC_0( psa_mncc_bearer_cap_cnf, MNCC_BEARER_CAP_CNF ),
311 MAK_FUNC_0( psa_mncc_prompt_ind, MNCC_PROMPT_IND ),
312 MAK_FUNC_0( psa_mncc_recall_ind, MNCC_RECALL_IND ),
313 MAK_FUNC_0( psa_mncc_status_ind, MNCC_STATUS_IND )
314 };
315
316 LOCAL const T_FUNC mnss_table[] = {
317 MAK_FUNC_0( psa_mnss_begin_ind, MNSS_BEGIN_IND ),
318 MAK_FUNC_0( psa_mnss_facility_ind, MNSS_FACILITY_IND ),
319 MAK_FUNC_0( psa_mnss_end_ind, MNSS_END_IND )
320 };
321
322 LOCAL const T_FUNC mnsms_table[] = {
323 MAK_FUNC_0( psa_mnsms_delete_cnf, MNSMS_DELETE_CNF ),
324 MAK_FUNC_0( psa_mnsms_read_cnf, MNSMS_READ_CNF ),
325 MAK_FUNC_0( psa_mnsms_store_cnf, MNSMS_STORE_CNF ),
326 MAK_FUNC_0( psa_mnsms_submit_cnf, MNSMS_SUBMIT_CNF ),
327 MAK_FUNC_0( psa_mnsms_command_cnf, MNSMS_COMMAND_CNF ),
328 #ifdef REL99
329 MAK_FUNC_0( psa_mnsms_retrans_cnf, MNSMS_RETRANS_CNF ),
330 #else
331 MAK_FUNC_N( pei_not_supported, 0 ),
332 #endif /* REL99 */
333 MAK_FUNC_0( psa_mnsms_report_ind, MNSMS_REPORT_IND ),
334 MAK_FUNC_0( psa_mnsms_status_ind, MNSMS_STATUS_IND ),
335 MAK_FUNC_0( psa_mnsms_message_ind, MNSMS_MESSAGE_IND ),
336 MAK_FUNC_0( psa_mnsms_error_ind, MNSMS_ERROR_IND ),
337 #ifdef TI_PS_FF_AT_P_CMD_CPRSM
338 MAK_FUNC_0( psa_mnsms_resume_cnf, MNSMS_RESUME_CNF ),
339 MAK_FUNC_0( psa_mnsms_query_cnf, MNSMS_QUERY_CNF ),
340 #else
341 MAK_FUNC_N( pei_not_supported, 0 ),
342 MAK_FUNC_N( pei_not_supported, 0 ),
343 #endif
344 #ifdef GPRS
345 MAK_FUNC_0( psa_mnsms_mo_serv_cnf, MNSMS_MO_SERV_CNF ),
346 #else
347 MAK_FUNC_N( pei_not_supported, 0 ),
348 #endif /* GPRS */
349 MAK_FUNC_0( psa_mnsms_OTA_message_ind, MNSMS_OTA_MESSAGE_IND ),
350 #ifdef REL99
351 MAK_FUNC_0( psa_mnsms_send_prog_ind, MNSMS_SEND_PROG_IND )
352 #else
353 MAK_FUNC_N( pei_not_supported, 0 )
354 #endif
355
356 };
357
358 LOCAL const T_FUNC mmi_table[] = {
359 MAK_FUNC_0( psa_mmi_keypad_ind, MMI_KEYPAD_IND ),
360 MAK_FUNC_0( psa_mmi_cbch_ind, MMI_CBCH_IND ),
361 MAK_FUNC_0( psa_mmi_rxlev_ind, MMI_RXLEV_IND ),
362 MAK_FUNC_0( psa_mmi_battery_ind, MMI_BATTERY_IND ),
363 #ifdef SIM_TOOLKIT
364 MAK_FUNC_0( psa_sat_cbch_dnl_ind, MMI_SAT_CBCH_DWNLD_IND ),
365 #else
366 MAK_FUNC_N( pei_not_supported, 0 ),
367 #endif
368 #ifdef BTE_MOBILE
369 MAK_FUNC_0( psa_mmi_bt_cb_notify_ind, MMI_BT_CB_NOTIFY_IND ),
370 #else
371 MAK_FUNC_N( pei_not_supported, 0 ),
372 #endif
373 #ifdef RVM_GIL_SWE
374 MAK_FUNC_N( pei_not_supported, 0 ), /* RPD MSG ? */
375 MAK_FUNC_0( gil_gpf_dispatch_message, MMI_GIL_IND ),
376 #else
377 MAK_FUNC_N( pei_not_supported, 0 ),
378 MAK_FUNC_N( pei_not_supported, 0 ),
379 #endif /* RVM_GIL_SWE */
380 #ifndef VOCODER_FUNC_INTERFACE
381 MAK_FUNC_0( psa_mmi_tch_vocoder_cfg_con, MMI_TCH_VOCODER_CFG_CON )
382 #else
383 MAK_FUNC_N( pei_not_supported, 0 )
384 #endif
385 };
386
387 #ifdef DTI
388 LOCAL const T_FUNC dti_dl_table[] = {
389 MAK_FUNC_0( dti_lib_dti_dti_connect_ind , DTI2_CONNECT_IND ), /* 7700x */
390 MAK_FUNC_0( dti_lib_dti_dti_connect_cnf , DTI2_CONNECT_CNF ), /* 7701x */
391 MAK_FUNC_0( dti_lib_dti_dti_disconnect_ind , DTI2_DISCONNECT_IND ), /* 7702x */
392 MAK_FUNC_0( dti_lib_dti_dti_ready_ind , DTI2_READY_IND ), /* 7703x */
393 MAK_FUNC_0( dti_lib_dti_dti_data_ind , DTI2_DATA_IND ), /* 7704x */
394 #if defined (_SIMULATION_)
395 MAK_FUNC_S( dti_lib_dti_dti_data_test_ind , DTI2_DATA_TEST_IND )
396 #else /* _SIMULATION_ */
397 MAK_FUNC_N( pei_not_supported , 0)
398 #endif /* _SIMULATION_ */
399 };
400 #endif /* UART */
401
402 #ifdef FF_EM_MODE
403 LOCAL const T_FUNC em_table[] = {
404 MAK_FUNC_0( psa_em_sc_info_cnf, EM_SC_INFO_CNF ), /* 0x7E00 */
405 #ifdef GPRS
406 MAK_FUNC_0( psa_em_sc_gprs_info_cnf, EM_SC_GPRS_INFO_CNF ), /* 0x7E01 */
407 #else
408 MAK_FUNC_N( pei_not_supported, EM_SC_GPRS_INFO_CNF ), /* 0x7E01 */
409 #endif /* GPRS */
410 MAK_FUNC_0( psa_em_nc_info_cnf, EM_NC_INFO_CNF ), /* 0x7E02 */
411 MAK_FUNC_0( psa_em_loc_pag_info_cnf, EM_LOC_PAG_INFO_CNF ), /* 0x7E03 */
412 MAK_FUNC_0( psa_em_plmn_info_cnf, EM_PLMN_INFO_CNF ), /* 0x7E04 */
413 MAK_FUNC_0( psa_em_cip_hop_dtx_info_cnf, EM_CIP_HOP_DTX_INFO_CNF ), /* 0x7E05 */
414 MAK_FUNC_0( psa_em_power_info_cnf, EM_POWER_INFO_CNF ), /* 0x7E06 */
415 MAK_FUNC_0( psa_em_identity_info_cnf, EM_IDENTITY_INFO_CNF ), /* 0x7E07 */
416 MAK_FUNC_0( psa_em_sw_version_info_cnf, EM_SW_VERSION_INFO_CNF ), /* 0x7E08 */
417 MAK_FUNC_N( pei_not_supported, 0 ), /* 0x7E09 */
418 MAK_FUNC_N( pei_not_supported, 0 ), /* 0x7E0A */
419 MAK_FUNC_0( em_event_trace_ind, EM_DATA_IND ), /* 0x7E0B */
420 MAK_FUNC_N( pei_not_supported, 0 ), /* 0x7E0C */
421 MAK_FUNC_N( pei_not_supported, 0 ), /* 0x7E0D */
422 MAK_FUNC_N( pei_not_supported, 0 ), /* 0x7E0E */
423 MAK_FUNC_N( pei_not_supported, 0 ), /* 0x7E0F */
424 MAK_FUNC_N( pei_not_supported, 0 ), /* 0x7E10 */
425 MAK_FUNC_N( pei_not_supported, 0 ), /* 0x7E11 */
426 MAK_FUNC_N( pei_not_supported, 0 ), /* 0x7E12 */
427 MAK_FUNC_N( pei_not_supported, 0 ), /* 0x7E13 */
428 MAK_FUNC_N( pei_not_supported, 0 ), /* 0x7E14 */
429 MAK_FUNC_N( pei_not_supported, 0 ), /* 0x7E15 */
430 MAK_FUNC_N( pei_not_supported, 0 ), /* 0x7E16 */
431 #ifdef GPRS
432 MAK_FUNC_0( psa_em_gmm_info_cnf, EM_GMM_INFO_CNF ), /* 0x7E17 */ /*GMM_INFO*/
433 MAK_FUNC_0( psa_em_grlc_info_cnf, EM_GRLC_INFO_CNF ), /* 0x7E18 */ /*GRLC_INFO*/
434 #else
435 MAK_FUNC_N( pei_not_supported, EM_GMM_INFO_CNF ), /* 0x7E17 */
436 MAK_FUNC_N( pei_not_supported, EM_GRLC_INFO_CNF ), /* 0x7E18 */
437 #endif /* GPRS */
438 MAK_FUNC_0( psa_em_amr_info_cnf, EM_AMR_INFO_CNF ) /* 0x7E19 */
439 };
440 #endif /* FF_EM_MODE */
441
442 #ifdef FF_ATI
443 /* ES!! #if !defined (MFW) */
444 LOCAL const T_FUNC aci_table[] = {
445 MAK_FUNC_0( aci_aci_cmd_req, ACI_CMD_REQ ),
446 MAK_FUNC_0( aci_aci_abort_req, ACI_ABORT_REQ ),
447 #ifdef BT_ADAPTER
448 MAK_FUNC_0( aci_aci_cmd_res , ACI_CMD_RES ),
449 MAK_FUNC_0( aci_aci_init_res , ACI_INIT_RES ),
450 MAK_FUNC_0( aci_aci_deinit_req , ACI_DEINIT_REQ ),
451 MAK_FUNC_0( aci_aci_open_port_req , ACI_OPEN_PORT_REQ ),
452 MAK_FUNC_0( aci_aci_close_port_req, ACI_CLOSE_PORT_REQ ),
453 MAK_FUNC_0( aci_aci_cmd_req_bt, ACI_CMD_REQ_BT ),
454 MAK_FUNC_0( aci_aci_cmd_res_bt, ACI_CMD_RES_BT ),
455 MAK_FUNC_0( aci_aci_abort_req_bt, ACI_ABORT_REQ_BT ),
456 #else
457 MAK_FUNC_N( pei_not_supported, 0 ),
458 MAK_FUNC_N( pei_not_supported, 0 ),
459 MAK_FUNC_N( pei_not_supported, 0 ),
460 MAK_FUNC_N( pei_not_supported, 0 ),
461 MAK_FUNC_N( pei_not_supported, 0 ),
462 MAK_FUNC_N( pei_not_supported, 0 ),
463 MAK_FUNC_N( pei_not_supported, 0 ),
464 MAK_FUNC_N( pei_not_supported, 0 ),
465 #endif /* BT_ADAPTER */
466 MAK_FUNC_0( aci_aci_trc_ind, ACI_TRC_IND ),
467 MAK_FUNC_0( aci_aci_ext_ind, ACI_EXT_IND ),
468 #ifdef FF_MMI_RIV
469 MAK_FUNC_0( aci_aci_riv_cmd_req, ACI_RIV_CMD_REQ )
470 #else
471 MAK_FUNC_N( pei_not_supported, 0 )
472 #endif /* FF_MMI_RIV */
473 };
474 /* ES!! #endif */
475 #endif
476
477 #ifdef FAX_AND_DATA
478
479 LOCAL const T_FUNC ra_table[] = {
480 MAK_FUNC_N( pei_not_supported, 0 /* RA_READY_IND */),
481 MAK_FUNC_N( pei_not_supported, 0 /* RA_DATA_IND */),
482 MAK_FUNC_0( psa_ra_activate_cnf, RA_ACTIVATE_CNF ),
483 MAK_FUNC_0( psa_ra_deactivate_cnf, RA_DEACTIVATE_CNF ),
484 MAK_FUNC_N( pei_not_supported, 0 /* RA_BREAK_IND */)
485 #ifdef FF_FAX
486 ,
487 MAK_FUNC_0( psa_ra_modify_cnf, RA_MODIFY_CNF )
488 #endif
489 };
490
491 #ifdef DTI
492 LOCAL const T_FUNC l2r_table[] = {
493 MAK_FUNC_0( psa_l2r_activate_cnf, L2R_ACTIVATE_CNF ),
494 MAK_FUNC_0( psa_l2r_deactivate_cnf, L2R_DEACTIVATE_CNF ),
495 MAK_FUNC_0( psa_l2r_connect_cnf, L2R_CONNECT_CNF ),
496 MAK_FUNC_0( psa_l2r_connect_ind, L2R_CONNECT_IND ),
497 MAK_FUNC_0( psa_l2r_disc_cnf, L2R_DISC_CNF ),
498 MAK_FUNC_0( psa_l2r_disc_ind, L2R_DISC_IND ),
499 MAK_FUNC_N( pei_not_supported, 0 /* L2R_READY_IND */),
500 MAK_FUNC_N( pei_not_supported, 0 /* L2R_DATA_IND */),
501 MAK_FUNC_N( pei_not_supported, 0 /* L2R_BREAK_CNF */),
502 MAK_FUNC_N( pei_not_supported, 0 /* L2R_BREAK_IND */),
503 MAK_FUNC_N( psa_l2r_xid_ind, L2R_XID_IND ),
504 MAK_FUNC_0( psa_l2r_error_ind, L2R_ERROR_IND ),
505 MAK_FUNC_0( psa_l2r_reset_ind, L2R_RESET_IND ),
506 MAK_FUNC_0( psa_l2r_statistic_ind, L2R_STATISTIC_IND ),
507 MAK_FUNC_0( psa_l2r_dti_cnf, L2R_DTI_CNF ),
508 MAK_FUNC_0( psa_l2r_dti_ind, L2R_DTI_IND )
509 };
510
511 #ifdef FF_FAX
512 LOCAL const T_FUNC t30_table[] = {
513 MAK_FUNC_0( psa_t30_cap_ind, T30_CAP_IND ),
514 MAK_FUNC_0( psa_t30_sgn_ind, T30_SGN_IND ),
515 MAK_FUNC_0( psa_t30_cmpl_ind, T30_CMPL_IND ),
516 MAK_FUNC_S( psa_t30_report_ind, T30_REPORT_IND ),
517 MAK_FUNC_0( psa_t30_error_ind, T30_ERROR_IND ),
518 MAK_FUNC_0( psa_t30_deactivate_cnf, T30_DEACTIVATE_CNF ),
519 MAK_FUNC_0( psa_t30_activate_cnf, T30_ACTIVATE_CNF ),
520 MAK_FUNC_0( psa_t30_preamble_ind, T30_PREAMBLE_IND ),
521 MAK_FUNC_0( psa_t30_dti_ind, T30_DTI_IND ),
522 MAK_FUNC_0( psa_t30_dti_cnf, T30_DTI_CNF ),
523 MAK_FUNC_0( psa_t30_phase_ind, T30_PHASE_IND ),
524 MAK_FUNC_0( psa_t30_eol_ind, T30_EOL_IND ),
525 MAK_FUNC_N( pei_not_supported, 0 )
526 };
527 #endif /* FF_FAX */
528
529 LOCAL const T_FUNC tra_table[] = {
530 MAK_FUNC_0( psa_tra_activate_cnf, TRA_ACTIVATE_CNF ),
531 MAK_FUNC_0( psa_tra_deactivate_cnf, TRA_DEACTIVATE_CNF ),
532 MAK_FUNC_0( psa_tra_dti_cnf, TRA_DTI_CNF ),
533 MAK_FUNC_0( psa_tra_dti_ind, TRA_DTI_IND ),
534 };
535 #endif /* DTI */
536 #endif /* FAX_AND_DATA */
537
538 #ifdef FF_GPF_TCPIP
539 LOCAL const T_FUNC tcpip_table[] = {
540 MAK_FUNC_0 (psa_tcpip_initialize_cnf, TCPIP_INITIALIZE_CNF ), /* 0x00 */
541 MAK_FUNC_N (psa_tcpip_shutdown_cnf, TCPIP_SHUTDOWN_CNF ), /* 0x01 */
542 MAK_FUNC_0 (psa_tcpip_ifconfig_cnf, TCPIP_IFCONFIG_CNF ), /* 0x02 */
543 MAK_FUNC_0 (psa_tcpip_dti_cnf, TCPIP_DTI_CNF ) /* 0x03 */
544 };
545 #endif
546
547 #ifdef CO_UDP_IP
548 LOCAL const T_FUNC udpa_table[] = {
549 MAK_FUNC_0( psa_udpa_dti_cnf, UDPA_DTI_CNF ),
550 MAK_FUNC_0( psa_udpa_dti_ind, UDPA_DTI_IND ),
551 MAK_FUNC_0( psa_udpa_config_cnf, UDPA_CONFIG_CNF ),
552 };
553 LOCAL const T_FUNC ipa_table[] = {
554 MAK_FUNC_0( psa_ipa_dti_cnf, IPA_DTI_CNF ),
555 MAK_FUNC_0( psa_ipa_dti_ind, IPA_DTI_IND ),
556 MAK_FUNC_0( psa_ipa_config_cnf, IPA_CONFIG_CNF ),
557 };
558 #endif /* CO_UDP_IP */
559
560 #ifdef FF_WAP
561 LOCAL const T_FUNC wap_table[] = {
562 MAK_FUNC_S( psa_wap_mmi_ind, WAP_MMI_IND ),
563 MAK_FUNC_S( psa_wap_mmi_req, WAP_MMI_REQ ),
564 MAK_FUNC_S( psa_wap_mmi_cnf, WAP_MMI_CNF ),
565 MAK_FUNC_0( psa_wap_dti_cnf, WAP_DTI_CNF ),
566 MAK_FUNC_0( psa_wap_dti_ind, WAP_DTI_IND )
567 };
568 #endif /* FF_WAP */
569
570 #ifdef FF_GPF_TCPIP
571 LOCAL const T_FUNC dcm_table[] = {
572 MAK_FUNC_0( psa_dcm_open_conn_req, DCM_OPEN_CONN_REQ ), /* 0x8000401c */
573 MAK_FUNC_0( psa_dcm_close_conn_req, DCM_CLOSE_CONN_REQ ), /* 0x8001401c */
574 MAK_FUNC_0( psa_dcm_get_current_conn_req , DCM_GET_CURRENT_CONN_REQ), /* 0x8002001c */
575 MAK_FUNC_N( pei_not_supported, 0 )
576 };
577 #endif /* FF_GPF_TCPIP */
578
579 /*LOCAL const T_FUNC ppp_table[] = {
580 MAK_FUNC_0( psa_ppp_establish_cnf, PPP_ESTABLISH_CNF ),
581 MAK_FUNC_0( psa_ppp_terminate_ind, PPP_TERMINATE_IND ),
582 MAK_FUNC_N( pei_not_supported, 0 ),
583 MAK_FUNC_N( pei_not_supported, 0 ),
584 MAK_FUNC_0( psa_ppp_dti_connected_ind, PPP_DTI_CONNECTED_IND )
585 };*/
586 #if defined (UART) AND defined (DTI)
587 LOCAL const T_FUNC uart_table[] = {
588 MAK_FUNC_0( psa_uart_parameters_cnf, UART_PARAMETERS_CNF ), /* 0x3400 */
589 MAK_FUNC_0( psa_uart_parameters_ind, UART_PARAMETERS_IND ), /* 0x3401 */
590 MAK_FUNC_0( psa_uart_dti_cnf, UART_DTI_CNF ), /* 0x3402 */
591 MAK_FUNC_0( psa_uart_dti_ind, UART_DTI_IND ), /* 0x3403 */
592 MAK_FUNC_0( psa_uart_disable_cnf, UART_DISABLE_CNF ), /* 0x3404 */
593 MAK_FUNC_0( psa_uart_ring_cnf, UART_RING_CNF ), /* 0x3405 */
594 MAK_FUNC_0( psa_uart_dcd_cnf, UART_DCD_CNF ), /* 0x3406 */
595 MAK_FUNC_0( psa_uart_escape_cnf, UART_ESCAPE_CNF ), /* 0x3407 */
596 MAK_FUNC_0( psa_uart_detected_ind, UART_DETECTED_IND ), /* 0x3408 */
597 MAK_FUNC_0( psa_uart_error_ind, UART_ERROR_IND ), /* 0x3409 */
598 MAK_FUNC_0( psa_uart_mux_start_cnf, UART_MUX_START_CNF ),
599 MAK_FUNC_0( psa_uart_mux_dlc_establish_ind, UART_MUX_DLC_ESTABLISH_IND),
600 MAK_FUNC_0( psa_uart_mux_dlc_release_ind, UART_MUX_DLC_RELEASE_IND ),
601 MAK_FUNC_N( pei_not_supported, 0 ), /* sleep ind */
602 MAK_FUNC_N( pei_not_supported, 0 ), /* wake up ind */
603 MAK_FUNC_0( psa_uart_mux_close_ind, UART_MUX_CLOSE_IND ),
604 MAK_FUNC_N( pei_not_supported, 0 )
605 };
606 #endif
607
608 #ifdef GPRS
609 /* GMMREG */
610 LOCAL const T_FUNC gmm_table[] = {
611 MAK_FUNC_0( psa_gmmreg_attach_cnf, GMMREG_ATTACH_CNF ),
612 MAK_FUNC_0( psa_gmmreg_attach_rej, GMMREG_ATTACH_REJ ),
613 MAK_FUNC_0( psa_gmmreg_detach_cnf, GMMREG_DETACH_CNF ),
614 MAK_FUNC_0( psa_gmmreg_detach_ind, GMMREG_DETACH_IND ),
615 MAK_FUNC_0( psa_gmmreg_plmn_ind, GMMREG_PLMN_IND ),
616 MAK_FUNC_0( psa_gmmreg_suspend_ind, GMMREG_SUSPEND_IND ),
617 MAK_FUNC_0( psa_gmmreg_resume_ind, GMMREG_RESUME_IND ),
618 MAK_FUNC_0( psa_gmmreg_info_ind, GMMREG_INFO_IND ),
619 MAK_FUNC_0( psa_gmmreg_ciphering_ind, GMMREG_CIPHERING_IND ),
620 MAK_FUNC_0( psa_gmmreg_ahplmn_ind, GMMREG_AHPLMN_IND )
621 };
622
623 /* UPM */
624 LOCAL const T_FUNC upm_table[] = {
625 MAK_FUNC_N( pei_not_supported, 0 ),
626 MAK_FUNC_N( psa_upm_count_cnf, UPM_COUNT_CNF )
627 };
628
629
630 /* SMREG */
631 LOCAL const T_FUNC sm_table[] = {
632 MAK_FUNC_0( psa_smreg_pdp_activate_cnf, SMREG_PDP_ACTIVATE_CNF ),
633 MAK_FUNC_0( psa_smreg_pdp_activate_rej, SMREG_PDP_ACTIVATE_REJ ),
634 MAK_FUNC_0( psa_smreg_pdp_activate_ind, SMREG_PDP_ACTIVATE_IND ),
635 MAK_FUNC_0( psa_smreg_pdp_deactivate_cnf, SMREG_PDP_DEACTIVATE_CNF ),
636 MAK_FUNC_0( psa_smreg_pdp_deactivate_ind, SMREG_PDP_DEACTIVATE_IND ),
637 MAK_FUNC_0( psa_smreg_pdp_modify_ind, SMREG_PDP_MODIFY_IND )
638 #ifdef REL99
639 ,MAK_FUNC_0( psa_smreg_pdp_modify_cnf, SMREG_PDP_MODIFY_CNF ),
640 MAK_FUNC_0( psa_smreg_pdp_modify_rej, SMREG_PDP_MODIFY_REJ ),
641 MAK_FUNC_0( psa_smreg_pdp_activate_sec_cnf, SMREG_PDP_ACTIVATE_SEC_CNF ),
642 MAK_FUNC_0( psa_smreg_pdp_activate_sec_rej, SMREG_PDP_ACTIVATE_SEC_REJ )
643 #endif /* !REL99 */
644 };
645
646
647 /* SN */
648 LOCAL const T_FUNC sndcp_table[] = {
649 MAK_FUNC_N( pei_not_supported, 0 ),
650 MAK_FUNC_N( pei_not_supported, 0 ),
651 MAK_FUNC_N( pei_not_supported, 0 ),
652 MAK_FUNC_N( pei_not_supported, 0 ),
653 MAK_FUNC_N( pei_not_supported, 0 ),
654 MAK_FUNC_N( pei_not_supported, 0 ),
655 MAK_FUNC_N( pei_not_supported, 0 ),
656 MAK_FUNC_N( pei_not_supported, 0 ),
657 MAK_FUNC_N( pei_not_supported, 0 ),
658 MAK_FUNC_N( psa_sn_dti_cnf, SN_DTI_CNF )
659 };
660
661 /* PPP */
662 /*LOCAL const T_FUNC ppp_table[] = {
663 MAK_FUNC_0( psa_ppp_establish_cnf, PPP_ESTABLISH_CNF ),
664 MAK_FUNC_0( psa_ppp_terminate_ind, PPP_TERMINATE_IND ),
665 MAK_FUNC_0( psa_ppp_pdp_activate_ind, PPP_PDP_ACTIVATE_IND ),
666 MAK_FUNC_0( psa_ppp_modification_cnf, PPP_MODIFICATION_CNF ),
667 MAK_FUNC_0( psa_ppp_dti_connected_ind, PPP_DTI_CONNECTED_IND )
668 };*/
669
670 #ifdef FF_PKTIO
671 LOCAL const T_FUNC mnpkt_table[] = {
672 MAK_FUNC_0( psa_pkt_connect_ind, PKT_CONNECT_IND ),
673 MAK_FUNC_0( psa_pkt_disconnect_ind, PKT_DISCONNECT_IND ),
674 MAK_FUNC_0( psa_pkt_dti_open_cnf, PKT_DTI_OPEN_CNF ),
675 MAK_FUNC_0( psa_pkt_modify_cnf, PKT_MODIFY_CNF ),
676 MAK_FUNC_0( psa_pkt_dti_close_cnf, PKT_DTI_CLOSE_CNF ),
677 MAK_FUNC_0( psa_pkt_dti_close_ind, PKT_DTI_CLOSE_IND )
678 };
679 #endif
680 #endif /* GPRS */
681 #if defined (FF_PSI ) AND defined (DTI)
682 LOCAL const T_FUNC mnpsi_table[] = {
683 MAK_FUNC_0( psa_psi_conn_ind, PSI_CONN_IND ),
684 MAK_FUNC_0( psa_psi_disconn_ind, PSI_DISCONN_IND ),
685 MAK_FUNC_0( psa_psi_dti_open_cnf, PSI_DTI_OPEN_CNF ),
686 MAK_FUNC_0( psa_psi_dti_close_cnf, PSI_DTI_CLOSE_CNF ),
687 MAK_FUNC_0( psa_psi_dti_close_ind, PSI_DTI_CLOSE_IND ),
688 MAK_FUNC_0( psa_psi_setconf_cnf, PSI_SETCONF_CNF ),
689 MAK_FUNC_0( psa_psi_line_state_cnf, PSI_LINE_STATE_CNF ),
690 MAK_FUNC_0( psa_psi_line_state_ind, PSI_LINE_STATE_IND ),
691 MAK_FUNC_0( psa_psi_close_cnf, PSI_CLOSE_CNF )
692 #ifdef _SIMULATION_
693 ,
694 MAK_FUNC_0( psa_psi_conn_ind_test, PSI_CONN_IND_TEST)
695 #endif /*_SIMULATION_ */
696 };
697 #endif /*FF_PSI*/
698 /* PPP */
699
700 #if defined FF_WAP || defined GPRS || defined FF_GPF_TCPIP || defined (FF_SAT_E) || defined (FF_PPP)
701
702 LOCAL const T_FUNC ppp_table[] = {
703 MAK_FUNC_0( psa_ppp_establish_cnf, PPP_ESTABLISH_CNF ),
704 MAK_FUNC_0( psa_ppp_terminate_ind, PPP_TERMINATE_IND ),
705 MAK_FUNC_0( psa_ppp_pdp_activate_ind, PPP_PDP_ACTIVATE_IND ),
706 MAK_FUNC_0( psa_ppp_modification_cnf, PPP_MODIFICATION_CNF ),
707 MAK_FUNC_0( psa_ppp_dti_connected_ind, PPP_DTI_CONNECTED_IND )
708 };
709 #endif /* FF_WAP || GPRS || FF_GPF_TCPIP || FF_SAT_E */
710
711 #if defined FF_EOTD
712 LOCAL const T_FUNC mnlc_table[] = {
713 MAK_FUNC_0( psa_mnlc_sms_meas_cnf, MNLC_SMS_MEAS_CNF )
714 };
715 #endif /* FF_EOTD */
716
717 /* BTI */
718 #ifdef BT_ADAPTER
719 LOCAL const T_FUNC btp_table[] = {
720 MAK_FUNC_N( pei_not_supported, 0 ),
721 MAK_FUNC_N( pei_not_supported, 0 ),
722 MAK_FUNC_N( pei_not_supported, 0 ),
723 MAK_FUNC_N( pei_not_supported, 0 ),
724 MAK_FUNC_N( pei_not_supported, 0 ),
725 MAK_FUNC_N( pei_not_supported, 0 ),
726 MAK_FUNC_N( pei_not_supported, 0 ),
727 MAK_FUNC_N( pei_not_supported, 0 ),
728 MAK_FUNC_N( pei_not_supported, 0 ),
729 MAK_FUNC_N( pei_not_supported, 0 ),
730 MAK_FUNC_N( pei_not_supported, 0 ),
731 MAK_FUNC_N( pei_not_supported, 0 ),
732 MAK_FUNC_N( pei_not_supported, 0 ),
733 MAK_FUNC_N( pei_not_supported, 0 ),
734 MAK_FUNC_N( pei_not_supported, 0 ),
735 MAK_FUNC_N( pei_not_supported, 0 ),
736 MAK_FUNC_N( pei_not_supported, 0 ),
737 MAK_FUNC_N( pei_not_supported, 0 ),
738 MAK_FUNC_N( pei_not_supported, 0 ),
739 MAK_FUNC_N( pei_not_supported, 0 ),
740 MAK_FUNC_N( pei_not_supported, 0 ),
741 MAK_FUNC_N( pei_not_supported, 0 ),
742 MAK_FUNC_N( pei_not_supported, 0 ),
743 MAK_FUNC_N( pei_not_supported, 0 ),
744 MAK_FUNC_N( pei_not_supported, 0 ),
745 MAK_FUNC_N( pei_not_supported, 0 ),
746 MAK_FUNC_N( pei_not_supported, 0 ),
747 MAK_FUNC_N( pei_not_supported, 0 ),
748 MAK_FUNC_N( pei_not_supported, 0 ),
749 MAK_FUNC_N( pei_not_supported, 0 ),
750 MAK_FUNC_N( pei_not_supported, 0 ),
751 MAK_FUNC_N( pei_not_supported, 0 ),
752 MAK_FUNC_N( pei_not_supported, 0 ),
753 MAK_FUNC_N( pei_not_supported, 0 ),
754 MAK_FUNC_N( pei_not_supported, 0 ),
755 MAK_FUNC_N( pei_not_supported, 0 ),
756 MAK_FUNC_N( pei_not_supported, 0 ),
757 MAK_FUNC_N( pei_not_supported, 0 ),
758 MAK_FUNC_N( pei_not_supported, 0 ),
759 MAK_FUNC_N( pei_not_supported, 0 ),
760 MAK_FUNC_N( pei_not_supported, 0 ),
761 MAK_FUNC_N( pei_not_supported, 0 ),
762 MAK_FUNC_N( pei_not_supported, 0 ),
763 MAK_FUNC_N( pei_not_supported, 0 ),
764 MAK_FUNC_N( pei_not_supported, 0 ),
765 MAK_FUNC_N( pei_not_supported, 0 ),
766 MAK_FUNC_N( pei_not_supported, 0 ),
767 MAK_FUNC_N( pei_not_supported, 0 ),
768 MAK_FUNC_N( pei_not_supported, 0 ),
769 MAK_FUNC_N( pei_not_supported, 0 ),
770 MAK_FUNC_N( pei_not_supported, 0 ),
771 MAK_FUNC_N( pei_not_supported, 0 ),
772 MAK_FUNC_N( pei_not_supported, 0 ),
773 MAK_FUNC_N( pei_not_supported, 0 ),
774 MAK_FUNC_0( psa_btp_dti_ind, T30_DTI_IND ),
775 MAK_FUNC_0( psa_btp_dti_cnf, T30_DTI_CNF )
776 };
777 #endif /* BT_ADAPTER */
778
779 #if defined(FF_TCP_IP) || defined(FF_ESIM)
780 LOCAL const T_FUNC aaa_table[] = {
781 MAK_FUNC_0( psa_aaa_cmd_req, AAA_CMD_REQ ),
782 MAK_FUNC_0( psa_aaa_open_port_req, AAA_OPEN_PORT_REQ ),
783 MAK_FUNC_0( psa_aaa_close_port_req, AAA_CLOSE_PORT_REQ ),
784 MAK_FUNC_0( psa_aaa_dti_rsp, AAA_DTI_RES ),
785 MAK_FUNC_N( pei_not_supported, 0 ),
786 MAK_FUNC_N( pei_not_supported, 0 ),
787 MAK_FUNC_0( psa_aaa_disconnect_rsp, AAA_DISCONNECT_RES )
788 };
789 #endif
790
791 /*
792 +--------------------------------------------------------------------+
793 | PROJECT : GSM-F&D (8411) MODULE : RLP_PEI |
794 | STATE : code ROUTINE : pei_primitive |
795 +--------------------------------------------------------------------+
796
797 PURPOSE : Process protocol specific primitive.
798
799 */
800
801 LOCAL SHORT pei_primitive (void *ptr)
802 {
803 T_PRIM *prim = ptr;
804 #ifdef SMI
805 T_PEI_RETURN subReturn = PEI_ERROR;
806 #endif
807
808 /*
809 *
810 * ACI UPLINK
811 * |
812 * +-------------------------------v--------------------------------------+
813 * | |
814 * | ACI |
815 * | |
816 * +--^----^-----^----^----^----^---^---^---^----^------^----^---^----^---+
817 * | | | | | | | | | | | | | |
818 * SIM MMREG MNCC MNSS MNSMS MMI T30 L2R RA GMMREG SMREG PPP UART BTI DOWNLINK
819 * | | | | | | | | | | | | | |
820 *
821 */
822
823 #ifdef MFW
824 extern void mmeFlagHandler(void);
825 extern USHORT mfwMmeDrvFlag;
826 #endif
827
828 /* TRACE_FUNCTION ("pei_primitive()");*/
829 #ifdef MFW
830 if (mfwMmeDrvFlag)
831 mmeFlagHandler();
832 #endif
833
834 if (prim NEQ NULL)
835 {
836 ULONG opc = prim->custom.opc;
837 USHORT n;
838 const T_FUNC *table;
839
840 VSI_PPM_REC ((T_PRIM_HEADER*)prim, __FILE__, __LINE__);
841
842 #ifndef FF_EM_MODE
843 /*
844 * To ensure true msc directions for the engineering mode additional
845 * information (from which entity the prim is sent) must be provided
846 * before PTRACE_IN is called.
847 */
848 PTRACE_IN (opc);
849 #endif /* FF_EM_MODE */
850
851 #ifdef MFW
852 /*
853 * MFW "checks" if it needs to handle primitves coming from below before they are
854 * potentially still to be handled by ACI
855 */
856 if (aci_check_primitive (opc, (void*)(&(prim->data))))
857 {
858 PFREE (P2D(prim));
859 return PEI_OK;
860 }
861 #endif
862
863 /* TRACE_EVENT_P1("opcode: %d", opc);*/
864 switch (SAP_NR(opc))
865 {
866 #ifdef FF_ATI
867 /* ES!! #if !defined (MFW) */
868 case ACI_DL:
869 case ACI_UL: table = aci_table; n = TAB_SIZE (aci_table); break;
870 /* ES!! #endif */
871 #endif
872 case SAP_NR(SIM_UL): table = sim_table; n = TAB_SIZE (sim_table); break;
873 case SAP_NR(MMREG_DL): table = mmr_table; n = TAB_SIZE (mmr_table); break;
874 case SAP_NR(MNCC_DL): table = mncc_table; n = TAB_SIZE (mncc_table); break;
875 case SAP_NR(MNSS_DL): table = mnss_table; n = TAB_SIZE (mnss_table); break;
876 case SAP_NR(MNSMS_DL): table = mnsms_table; n = TAB_SIZE (mnsms_table); break;
877 #if defined (FF_PKTIO) AND defined (DTI)
878 case SAP_NR(PKT_DL): table = mnpkt_table; n = TAB_SIZE (mnpkt_table); break;
879 #endif
880 #if defined (FF_PSI) AND defined (DTI)
881 case SAP_NR(PSI_DL): table = mnpsi_table; n = TAB_SIZE (mnpsi_table); break;
882 #endif /*FF_PSI*/
883
884 #ifdef DTI
885 #if defined(FF_TCP_IP) || defined(FF_ESIM)
886 case SAP_NR(AAA_DL): table = aaa_table; n = TAB_SIZE (aaa_table); break;
887 #endif
888 #endif
889 case MMI_DL: table = mmi_table; n = TAB_SIZE (mmi_table); break;
890 #ifdef DTI
891 case DTI2_DL:
892 {
893 table = dti_dl_table; n = TAB_SIZE (dti_dl_table);
894 /*
895 * to be able to distinguish DTI1/DTI2 opcodes,
896 * the ones for DTI2 start at 0x50
897 */
898 opc -= 0x50;
899 }
900 break;
901 #endif /* UART */
902 #ifdef FF_EM_MODE
903 case EM_Dl: table = em_table; n = TAB_SIZE (em_table); break;
904 #endif /* FF_EM_MODE */
905
906 #if defined (FAX_AND_DATA) AND defined (DTI)
907 case SAP_NR(RA_DL): table = ra_table; n = TAB_SIZE (ra_table); break;
908 case SAP_NR(L2R_DL): table = l2r_table; n = TAB_SIZE (l2r_table); break;
909 #ifdef FF_FAX
910 case SAP_NR(T30_DL): table = t30_table; n = TAB_SIZE (t30_table); break;
911 #endif
912 case SAP_NR(TRA_DL): table = tra_table; n = TAB_SIZE (tra_table); break;
913 #endif
914
915 #ifdef FF_GPF_TCPIP
916 case SAP_NR(TCPIP_DL): table = tcpip_table; n = TAB_SIZE (tcpip_table); break;
917 case SAP_NR(DCM_DL): table = dcm_table; n = TAB_SIZE (dcm_table); break;
918 #endif
919
920 #ifdef CO_UDP_IP
921 case SAP_NR(UDPA_DL): table = udpa_table; n = TAB_SIZE (udpa_table); break;
922 case SAP_NR(IPA_DL): table = ipa_table; n = TAB_SIZE (ipa_table); break;
923 #endif
924
925 #ifdef FF_WAP
926 case SAP_NR(WAP_DL): table = wap_table; n = TAB_SIZE (wap_table); break;
927 #endif
928
929 #if defined (FF_WAP) || defined (GPRS) || defined (FF_SAT_E)
930 case PPP_UL: table = ppp_table; n = TAB_SIZE (ppp_table); break;
931 #endif
932
933 #ifdef GPRS
934 case GMMREG_DL: table = gmm_table; n = TAB_SIZE (gmm_table); break;
935 case SMREG_DL: table = sm_table; n = TAB_SIZE (sm_table); break;
936 case SAP_NR(UPM_DL): table = upm_table; n = TAB_SIZE (upm_table); break;
937 case SAP_NR(SN_DL): table = sndcp_table; n = TAB_SIZE (sndcp_table); break;
938
939 #endif /* GPRS */
940
941 #if defined (UART) AND defined (DTI)
942 case UART_UL: table = uart_table; n = TAB_SIZE (uart_table); break;
943 #endif /* UART */
944 #ifdef BT_ADAPTER
945 /* BTI DL */
946 case BTP_G: table = btp_table; n = TAB_SIZE (btp_table); break;
947 #endif /* BT_ADAPTER */
948 #if defined FF_EOTD
949 case SAP_NR(MNLC_DL): table = mnlc_table; n = TAB_SIZE (mnlc_table); break;
950 #endif
951
952 default: table = NULL; n = 0; break;
953 }
954
955 #ifdef FF_EM_MODE
956 /*
957 * Only valid for the engineering mode as described above.
958 */
959 PTRACE_IN (opc);
960 #endif /* FF_EM_MODE */
961
962 if (table NEQ NULL )
963 {
964 if (PRIM_NR(opc) < n)
965 {
966 table += PRIM_NR(opc);
967 #ifdef PALLOC_TRANSITION
968 P_SDU(prim) = table->soff ? (T_sdu*) (((char*)&prim->data) + table->soff) : 0;
969 #ifndef NO_COPY_ROUTING
970 P_LEN(prim) = table->size + sizeof (T_PRIM_HEADER);
971 #endif /* NO_COPY_ROUTING */
972 #endif /* PALLOC_TRANSITION */
973
974 #if !defined (SMI) AND !defined (MFW)
975 if (mode EQ 0 AND
976 table NEQ aci_table)
977 {
978 PSENDX (ACI, P2D(prim));
979 }
980 else
981 #endif
982 {
983 #ifdef SMI
984 if (table->func EQ (T_VOID_FUNC) pei_not_supported)
985 {
986 subReturn = _pei_primitive (prim);
987 }
988 else
989 #endif
990 JUMP (table->func) (P2D(prim));
991 }
992 }
993 else
994 {
995 #ifndef SMI
996 pei_not_supported (P2D(prim));
997 #else
998 subReturn = _pei_primitive (prim);
999 #endif
1000 }
1001 return PEI_OK;
1002 }
1003 #ifdef SMI
1004 else
1005 {
1006 subReturn = _pei_primitive (prim);
1007 }
1008 #endif
1009
1010 /*
1011 * Primitive is no GSM Primitive
1012 * then forward to the environment
1013 */
1014 #ifdef SMI
1015 if (subReturn EQ PEI_ERROR)
1016 {
1017 #endif
1018 #ifdef GSM_ONLY
1019 PFREE (P2D(prim))
1020 return PEI_ERROR;
1021 #else
1022 if (opc & SYS_MASK)
1023 vsi_c_primitive (VSI_CALLER prim);
1024 else
1025 {
1026 PFREE (P2D(prim));
1027 return PEI_ERROR;
1028 }
1029 #endif
1030 #ifdef SMI
1031 }
1032 #endif
1033 }
1034 #ifdef SMI
1035 else
1036 {
1037 subReturn = _pei_primitive (prim);
1038 }
1039 #endif
1040
1041 return PEI_OK;
1042 }
1043
1044
1045 /*
1046 +--------------------------------------------------------------------+
1047 | PROJECT : GSM-F&D (8411) MODULE : ACI_PEI |
1048 | STATE : code ROUTINE : pei_init |
1049 +--------------------------------------------------------------------+
1050
1051 PURPOSE : Initialize Protocol Stack Entity
1052
1053 */
1054 LOCAL SHORT pei_init (T_HANDLE handle)
1055 {
1056 #ifdef FF_ATI
1057 #ifdef UART
1058 EXTERN void urt_init (void);
1059 #endif
1060 #endif
1061
1062 aci_handle = handle;
1063
1064 TRACE_FUNCTION ("pei_init()");
1065
1066 #ifdef TI_PS_HCOMM_CHANGE
1067 if (!cl_hcomm_open_all_handles())
1068 {
1069 return PEI_ERROR;
1070 }
1071
1072 if (hCommACI < VSI_OK)
1073 {
1074 if ((hCommACI = vsi_c_open (VSI_CALLER ACI_NAME)) < VSI_OK)
1075 return PEI_ERROR;
1076 }
1077
1078 #ifdef FAX_AND_DATA
1079 if (hCommTRA < VSI_OK)
1080 {
1081 /* TRA_NAME i.e "L2R" on account of TRA being no real entity */
1082 if ((hCommTRA = vsi_c_open (VSI_CALLER TRA_NAME)) < VSI_OK)
1083 return PEI_ERROR;
1084 }
1085 #endif
1086
1087 #ifdef FF_GPF_TCPIP
1088 if (hCommTCPIP < VSI_OK)
1089 {
1090 if ((hCommTCPIP = vsi_c_open (VSI_CALLER TCPIP_NAME)) < VSI_OK)
1091 return PEI_ERROR;
1092 }
1093 #endif
1094
1095 #if defined (CO_TCPIP_TESTAPP) || defined (CO_BAT_TESTAPP)
1096 if (hCommAPP < VSI_OK)
1097 {
1098 if ((hCommAPP = vsi_c_open (VSI_CALLER APP_NAME)) < VSI_OK)
1099 return PEI_ERROR;
1100 }
1101 #endif
1102
1103 #if defined FF_TRACE_OVER_MTST
1104 if (hCommMTST < VSI_OK)
1105 {
1106 if ((hCommMTST = vsi_c_open (VSI_CALLER "MTST")) < VSI_OK)
1107 return PEI_ERROR;
1108 }
1109 #endif
1110
1111 #ifdef FF_ESIM
1112 if (hCommESIM < VSI_OK) /* open channel to ESIM entity */
1113 {
1114 if ((hCommESIM = vsi_c_open (VSI_CALLER ESIM_NAME)) < VSI_OK)
1115 return PEI_ERROR;
1116 }
1117 #endif
1118
1119 #if defined (GPRS) AND defined (DTI)
1120 if (hCommGMM < VSI_OK)
1121 {
1122 if ((hCommGMM = vsi_c_open (VSI_CALLER GMM_NAME)) < VSI_OK)
1123 return PEI_ERROR;
1124 }
1125 if (hCommSM < VSI_OK)
1126 {
1127 if ((hCommSM = vsi_c_open (VSI_CALLER SM_NAME)) < VSI_OK)
1128 return PEI_ERROR;
1129 }
1130 if (hCommSNDCP < VSI_OK)
1131 {
1132 if ((hCommSNDCP = vsi_c_open (VSI_CALLER SNDCP_NAME)) < VSI_OK)
1133 return PEI_ERROR;
1134 }
1135
1136 #ifdef FF_PKTIO
1137 if (hCommPKTIO < VSI_OK)
1138 {
1139 if ((hCommPKTIO = vsi_c_open (VSI_CALLER PKTIO_NAME)) < VSI_OK)
1140 {
1141 TRACE_EVENT ("cannot open PKTIO");
1142 return PEI_ERROR;
1143 }
1144 }
1145 #endif
1146 #endif /* GPRS */
1147
1148 #ifdef FF_GPF_TCPIP
1149 if (hCommDCM < VSI_OK)
1150 {
1151 if ((hCommDCM = vsi_c_open (VSI_CALLER DCM_NAME)) < VSI_OK)
1152 return PEI_ERROR;
1153 }
1154 #endif /* FF_GPF_TCPIP */
1155
1156 #else /* for hCommHandles backward compatibility */
1157 if (hCommSIM < VSI_OK)
1158 {
1159 if ((hCommSIM = vsi_c_open (VSI_CALLER SIM_NAME)) < VSI_OK)
1160 return PEI_ERROR;
1161 }
1162
1163 #ifdef FF_ESIM
1164 if (hCommESIM < VSI_OK) /* open channel to ESIM entity */
1165 {
1166 if ((hCommESIM = vsi_c_open (VSI_CALLER ESIM_NAME)) < VSI_OK)
1167 return PEI_ERROR;
1168 }
1169 #endif
1170 if (hCommMM < VSI_OK)
1171 {
1172 if ((hCommMM = vsi_c_open (VSI_CALLER MM_NAME)) < VSI_OK)
1173 return PEI_ERROR;
1174 }
1175
1176 if (hCommCC < VSI_OK)
1177 {
1178 if ((hCommCC = vsi_c_open (VSI_CALLER CC_NAME)) < VSI_OK)
1179 return PEI_ERROR;
1180 }
1181
1182 if (hCommSS < VSI_OK)
1183 {
1184 if ((hCommSS = vsi_c_open (VSI_CALLER SS_NAME)) < VSI_OK)
1185 return PEI_ERROR;
1186 }
1187
1188 if (hCommSMS < VSI_OK)
1189 {
1190 if ((hCommSMS = vsi_c_open (VSI_CALLER SMS_NAME)) < VSI_OK)
1191 return PEI_ERROR;
1192 }
1193
1194 #ifdef UART
1195 if (hCommUART < VSI_OK)
1196 {
1197 if ((hCommUART = vsi_c_open (VSI_CALLER UART_NAME)) < VSI_OK)
1198 return PEI_ERROR;
1199 }
1200 #endif
1201
1202 if (hCommPL < VSI_OK)
1203 {
1204 if ((hCommPL = vsi_c_open (VSI_CALLER PL_NAME)) < VSI_OK)
1205 return PEI_ERROR;
1206 }
1207
1208 #if defined FF_EOTD
1209 if (hCommLC < VSI_OK)
1210 {
1211 if ((hCommLC = vsi_c_open (VSI_CALLER LC_NAME)) < VSI_OK)
1212 return PEI_ERROR;
1213 }
1214 #endif
1215
1216 #ifdef FF_TCP_IP
1217 /*#ifndef _SIMULATION_*/
1218 if (hCommAAA < VSI_OK)
1219 {
1220 if ((hCommAAA = vsi_c_open (VSI_CALLER AAA_NAME)) < VSI_OK)
1221 return PEI_ERROR;
1222 }
1223 /*#endif*/
1224 #endif
1225
1226 #if defined FF_TRACE_OVER_MTST
1227 if (hCommMTST < VSI_OK)
1228 {
1229 if ((hCommMTST = vsi_c_open (VSI_CALLER "MTST")) < VSI_OK)
1230 return PEI_ERROR;
1231 }
1232 #endif
1233
1234 if (hCommACI < VSI_OK)
1235 {
1236 if ((hCommACI = vsi_c_open (VSI_CALLER ACI_NAME)) < VSI_OK)
1237 return PEI_ERROR;
1238 }
1239
1240 #ifdef FAX_AND_DATA
1241 #ifndef USE_L1FD_FUNC_INTERFACE
1242 if (hCommRA < VSI_OK)
1243 {
1244 if ((hCommRA = vsi_c_open (VSI_CALLER RA_NAME)) < VSI_OK)
1245 return PEI_ERROR;
1246 }
1247 #endif
1248 if (hCommL2R < VSI_OK)
1249 {
1250 if ((hCommL2R = vsi_c_open (VSI_CALLER L2R_NAME)) < VSI_OK)
1251 return PEI_ERROR;
1252 }
1253
1254 if (hCommTRA < VSI_OK)
1255 {
1256 /* TRA_NAME i.e "L2R" on account of TRA being no real entity */
1257 if ((hCommTRA = vsi_c_open (VSI_CALLER TRA_NAME)) < VSI_OK)
1258 return PEI_ERROR;
1259 }
1260
1261 #ifdef FF_FAX
1262 if (hCommT30 < VSI_OK)
1263 {
1264 if ((hCommT30 = vsi_c_open (VSI_CALLER T30_NAME)) < VSI_OK)
1265 return PEI_ERROR;
1266 }
1267 #endif /* FF_FAX */
1268 #endif /* FAX_AND_DATA */
1269
1270 #ifdef FF_GPF_TCPIP
1271 if (hCommTCPIP < VSI_OK)
1272 {
1273 if ((hCommTCPIP = vsi_c_open (VSI_CALLER TCPIP_NAME)) < VSI_OK)
1274 return PEI_ERROR;
1275 }
1276 #endif
1277
1278 #if defined (CO_TCPIP_TESTAPP) || defined (CO_BAT_TESTAPP)
1279 if (hCommAPP < VSI_OK)
1280 {
1281 if ((hCommAPP = vsi_c_open (VSI_CALLER APP_NAME)) < VSI_OK)
1282 return PEI_ERROR;
1283 }
1284 #endif
1285
1286 #ifdef CO_UDP_IP
1287 if (hCommUDP < VSI_OK)
1288 {
1289 if ((hCommUDP = vsi_c_open (VSI_CALLER UDP_NAME)) < VSI_OK)
1290 return PEI_ERROR;
1291 }
1292 if (hCommIP < VSI_OK)
1293 {
1294 if ((hCommIP = vsi_c_open (VSI_CALLER IP_NAME)) < VSI_OK)
1295 return PEI_ERROR;
1296 }
1297 #endif
1298
1299 #ifdef FF_WAP
1300 if (hCommWAP < VSI_OK)
1301 {
1302 if ((hCommWAP = vsi_c_open (VSI_CALLER WAP_NAME)) < VSI_OK)
1303 return PEI_ERROR;
1304 }
1305 #endif
1306
1307 #if defined (FF_WAP) || defined (GPRS) || defined (FF_SAT_E)
1308 if (hCommPPP < VSI_OK)
1309 {
1310 if ((hCommPPP = vsi_c_open (VSI_CALLER PPP_NAME)) < VSI_OK)
1311 return PEI_ERROR;
1312 }
1313 #endif
1314
1315 #ifdef FF_EM_MODE
1316 if (hCommRR < VSI_OK)
1317 {
1318 if ((hCommRR = vsi_c_open (VSI_CALLER RR_NAME)) < VSI_OK)
1319 return PEI_ERROR;
1320 }
1321 #endif /* FF_EM_MODE */
1322
1323 #if defined (GPRS) AND defined (DTI)
1324 if (hCommGMM < VSI_OK)
1325 {
1326 if ((hCommGMM = vsi_c_open (VSI_CALLER GMM_NAME)) < VSI_OK)
1327 return PEI_ERROR;
1328 }
1329 if (hCommSM < VSI_OK)
1330 {
1331 if ((hCommSM = vsi_c_open (VSI_CALLER SM_NAME)) < VSI_OK)
1332 return PEI_ERROR;
1333 }
1334 if (hCommUPM < VSI_OK)
1335 {
1336 if ((hCommUPM = vsi_c_open (VSI_CALLER UPM_NAME)) < VSI_OK)
1337 return PEI_ERROR;
1338 }
1339 if (hCommSNDCP < VSI_OK)
1340 {
1341 if ((hCommSNDCP = vsi_c_open (VSI_CALLER SNDCP_NAME)) < VSI_OK)
1342 return PEI_ERROR;
1343 }
1344
1345 #ifdef FF_PKTIO
1346 if (hCommPKTIO < VSI_OK)
1347 {
1348 if ((hCommPKTIO = vsi_c_open (VSI_CALLER PKTIO_NAME)) < VSI_OK)
1349 {
1350 TRACE_EVENT ("cannot open PKTIO");
1351 return PEI_ERROR;
1352 }
1353 }
1354 #endif
1355 #endif /* GPRS */
1356 #ifdef FF_PSI
1357 if (hCommPSI < VSI_OK)
1358 {
1359 if ((hCommPSI = vsi_c_open (VSI_CALLER PSI_NAME)) < VSI_OK)
1360 {
1361 TRACE_EVENT ("cannot open PSI");
1362 return PEI_ERROR;
1363 }
1364 }
1365 #endif /*FF_PSI*/
1366 #ifdef BT_ADAPTER
1367 if (hCommBTI < VSI_OK)
1368 {
1369 if ((hCommBTI = vsi_c_open (VSI_CALLER BTI_NAME)) < VSI_OK)
1370 return PEI_ERROR;
1371 }
1372 #endif /* BT_ADAPTER */
1373
1374 #ifdef FF_GPF_TCPIP
1375 if (hCommDCM < VSI_OK)
1376 {
1377 if ((hCommDCM = vsi_c_open (VSI_CALLER DCM_NAME)) < VSI_OK)
1378 return PEI_ERROR;
1379 }
1380 #endif /* FF_GPF_TCPIP */
1381
1382 if (hCommL1 < VSI_OK)
1383 {
1384 if ((hCommL1 = vsi_c_open (VSI_CALLER L1_NAME)) < VSI_OK)
1385 return PEI_ERROR;
1386 }
1387
1388 #endif /* TI_PS_HCOMM_CHANGE */
1389
1390 #ifdef DTI
1391 #ifdef _SIMULATION_
1392 /*
1393 * initialize dtilib for this entity
1394 */
1395 aci_hDTI = dti_init (
1396 4,
1397 handle,
1398 DTI_DEFAULT_OPTIONS,
1399 aci_pei_sig_callback
1400 );
1401 #else
1402 /*
1403 * initialize dtilib for this entity
1404 */
1405 aci_hDTI = dti_init (
1406 ACI_INSTANCES * UART_INSTANCES,
1407 handle,
1408 DTI_DEFAULT_OPTIONS,
1409 aci_pei_sig_callback
1410 );
1411 #endif
1412 #endif /* DTI */
1413
1414 #ifdef DTI
1415 if(aci_hDTI EQ NULL)
1416 {
1417 TRACE_EVENT ("ACI DTI handle is 0");
1418 return PEI_ERROR;
1419 }
1420 #endif
1421
1422 #ifdef SMI
1423 /*
1424 * initialize the slim man machine interface
1425 */
1426 if (_pei_init () EQ PEI_ERROR)
1427 return PEI_ERROR;
1428 #endif
1429
1430 #ifdef ACI
1431 audio_Init ( NULL );
1432 /* rx_Init( ) is not needed at the moment for ATI only version...
1433 causes the software not to start because it needs CST stack to be started first...
1434 rx_Init ( NULL ); */
1435 pwr_Init ( NULL );
1436 #endif
1437
1438
1439 /*
1440 * Initialize BT_ADAPTER
1441 */
1442 #if defined(FF_ATI) && defined(BT_ADAPTER)
1443 if (btiaci_init(aci_handle) EQ BTI_NAK)
1444 return PEI_ERROR;
1445 btiaci_at_init_req();
1446 #endif
1447
1448 #ifdef FF_ATI
1449 init_ati ();
1450 #endif /* FF_ATI */
1451
1452 #ifdef UART
1453 cmhUART_lst_init ();
1454 #endif
1455 #ifdef DTI
1456 psaACI_Init();
1457 dti_cntrl_init();
1458 #endif
1459 #if defined (FF_PSI) AND defined (DTI)
1460 cmhPSI_lst_init();
1461 #endif /*FF_PSI*/
1462 /*
1463 * initialize CMH's
1464 */
1465 cmh_Init ();
1466 cmh_Reset ( CMD_SRC_LCL, FALSE );
1467 #ifdef FF_ATI
1468 cmh_Reset ( CMD_SRC_ATI_1, FALSE );
1469 cmh_Reset ( CMD_SRC_ATI_2, FALSE );
1470 cmh_Reset ( CMD_SRC_ATI_3, FALSE );
1471 cmh_Reset ( CMD_SRC_ATI_4, FALSE );
1472 #ifdef SIM_TOOLKIT
1473 cmh_Reset ( CMD_SRC_ATI_5, FALSE );
1474 #endif /* SIM_TOOLKIT */
1475 #if defined FF_EOTD OR defined _SIMULATION_
1476 cmh_Reset ( CMD_SRC_ATI_6, FALSE );
1477 #endif /* FF_EOTD */
1478 #endif /* FF_ATI */
1479
1480 /*
1481 * initialize PSA's
1482 */
1483 #if defined (SIM_TOOLKIT)
1484 psaSAT_Init(); /* has to be done first! */
1485 #endif
1486 psaSS_Init();
1487 #ifdef ACI
1488 psaMMI_Init();
1489 #endif
1490 psaCC_Init();
1491 psaMM_Init();
1492 psaSIM_Init(ACI_INIT_TYPE_ALL);
1493 psaMMI_Init();
1494 psaSMS_Init();
1495
1496 #ifdef FAX_AND_DATA
1497 psaRA_Init();
1498 psaL2R_Init();
1499 #ifdef FF_FAX
1500 psaT30_Init();
1501 #endif /* FF_FAX */
1502 #endif /* FAX_AND_DATA */
1503
1504 #ifdef GPRS
1505 psa_GPRSInit();
1506 #endif /* GPRS */
1507
1508 #if defined (FF_WAP) || defined (FF_PPP) || defined(FF_GPF_TCPIP)|| defined (FF_SAT_E)
1509 psaPPP_Init();
1510 #endif /* (FF_WAP) (FF_PPP) (FF_GPF_TCPIP) (FF_SAT_E) */
1511
1512 #if defined(CO_UDP_IP) || defined(FF_GPF_TCPIP)
1513 psaTCPIP_Init();
1514 #endif /* CO_UDP_IP || FF_GPF_TCPIP */
1515
1516 #if defined(FF_GPF_TCPIP)
1517 dcm_init() ;
1518 #endif /* FF_GPF_TCPIP */
1519
1520
1521 #ifdef AT_ADAPTER
1522 psaBTI_Init();
1523 #endif /* AT_ADAPTER */
1524
1525 /*
1526 * Initialize Message Coder Decoder
1527 */
1528 ccd_init ();
1529 /*
1530 * Initialize the UART module
1531 */
1532 #ifdef FF_ATI
1533 #ifdef UART
1534 urt_init ();
1535 #endif
1536 ati_cmd_init ();
1537 #endif
1538
1539 /*
1540 * Initialize Advice of Charge Module
1541 */
1542 aoc_init_calltable ();
1543
1544 /*
1545 * Initialize phonebook
1546 */
1547 #ifdef TI_PS_FFS_PHB
1548 pb_init ();
1549 #else
1550 phb_Init ();
1551 #endif
1552 rdlPrm_init();
1553
1554 /* The high level audio driver is initialised here */
1555 hl_audio_drv_init();
1556
1557 #if defined(_TARGET_)
1558 cmhCC_rd_mode_FFS(AUTOM_REP_NOT_PRESENT,READ_RDLmode); /* read redial mode from FFS */
1559 #endif /* _TARGET_*/
1560
1561 #ifdef DTI
1562 #ifdef _SIMULATION_
1563 #ifdef FF_ATI_BAT
1564 ati_bat_reset();
1565 #endif
1566 ati_src_tst_init( CMD_SRC_EXT );
1567 #endif
1568 #endif
1569
1570 #if defined FF_EOTD
1571 ati_src_lc_init( CMD_SRC_EXT );
1572 #endif /* FF_EOTD */
1573
1574 #ifdef MFW
1575 /*
1576 * initialise ACI extension handler
1577 * and start MMI Logic
1578 */
1579 aci_ext_init ();
1580 mmi_main ();
1581 #endif
1582
1583 #ifdef FF_MMI_RIV
1584 acia_init();
1585 #endif
1586
1587 return PEI_OK;
1588 }
1589
1590 /*
1591 +--------------------------------------------------------------------+
1592 | PROJECT : GSM-F&D (8411) MODULE : ACI_PEI |
1593 | STATE : code ROUTINE : pei_timeout |
1594 +--------------------------------------------------------------------+
1595
1596 PURPOSE : Process timeout
1597
1598 */
1599
1600 LOCAL SHORT pei_timeout (USHORT index)
1601 {
1602 tim_exec_timeout (index);
1603
1604 return PEI_OK;
1605 }
1606
1607 /*
1608 +--------------------------------------------------------------------+
1609 | PROJECT : GSM-F&D (8411) MODULE : ACI_PEI |
1610 | STATE : code ROUTINE : mmi_pei_signal |
1611 +--------------------------------------------------------------------+
1612
1613 PURPOSE : Functional interface to signal a primitive.
1614
1615 */
1616
1617 LOCAL SHORT pei_signal ( ULONG opc, void *primData )
1618 {
1619 #ifdef OPTION_SIGNAL
1620 #ifndef _TMS470
1621 TRACE_FUNCTION ("pei_signal ()");
1622 #endif /* _TMS470 */
1623
1624 switch (opc)
1625 {
1626 #ifdef FF_MMI_RIV
1627 case ACI_RIV_CMD_REQ:
1628 aci_aci_riv_cmd_req ((T_ACI_RIV_CMD_REQ *) primData);
1629 break;
1630 #endif
1631 #ifdef FAX_AND_DATA
1632 case RA_ACTIVATE_CNF:
1633 psa_ra_activate_cnf
1634 (
1635 (T_RA_ACTIVATE_CNF *) primData
1636 );
1637 break;
1638 case RA_DEACTIVATE_CNF:
1639 psa_ra_deactivate_cnf
1640 (
1641 (T_RA_DEACTIVATE_CNF *) primData
1642 );
1643 break;
1644 #ifdef FF_FAX
1645 case RA_MODIFY_CNF:
1646 psa_ra_modify_cnf
1647 (
1648 (T_RA_MODIFY_CNF *) primData
1649 );
1650 break;
1651 #endif /* FF_FAX */
1652 #endif /* FAX_AND_DATA */
1653
1654 #ifdef FF_ATI
1655 /* ES!! #if !defined (MFW) */
1656 case ACI_CMD_REQ:
1657 aci_aci_cmd_req
1658 (
1659 (T_ACI_CMD_REQ *) primData
1660 );
1661 break;
1662 case ACI_ABORT_REQ:
1663 aci_aci_abort_req
1664 (
1665 (T_ACI_ABORT_REQ *) primData
1666 );
1667 break;
1668 #endif /* FF_ATI */
1669 }
1670 #endif /* OPTION_SIGNAL */
1671
1672 return PEI_OK;
1673 }
1674
1675 /*
1676 +--------------------------------------------------------------------+
1677 | PROJECT : GSM-F&D (8411) MODULE : ACI_PEI |
1678 | STATE : code ROUTINE : pei_exit |
1679 +--------------------------------------------------------------------+
1680
1681 PURPOSE : Close Resources and terminate
1682
1683 */
1684 LOCAL SHORT pei_exit (void)
1685 {
1686 U8 i;
1687
1688 TRACE_FUNCTION ("pei_exit()");
1689
1690 /*
1691 * clean up communication
1692 */
1693 #ifdef DTI
1694 /* close all open dti channels */
1695 dti_cntrl_close_all_connections();
1696
1697 /*
1698 * Shut down dtilib communication
1699 */
1700 dti_deinit(aci_hDTI);
1701 #endif
1702
1703 #ifdef TI_PS_HCOMM_CHANGE
1704 cl_hcomm_close_all_handles();
1705
1706 #ifdef FF_ESIM
1707 vsi_c_close (VSI_CALLER hCommESIM);
1708 hCommESIM = VSI_ERROR;
1709 #endif
1710
1711 #ifdef UART
1712 vsi_c_close (VSI_CALLER hCommDTI);
1713 hCommDTI = VSI_ERROR;
1714 #endif
1715
1716
1717 #ifdef FF_TRACE_OVER_MTST
1718 vsi_c_close (VSI_CALLER hCommMTST);
1719 hCommMTST = VSI_ERROR;
1720 #endif
1721
1722 #ifdef FF_GPF_TCPIP
1723 vsi_c_close (VSI_CALLER hCommTCPIP);
1724 hCommTCPIP = VSI_ERROR;
1725 #endif
1726
1727 #if defined (CO_TCPIP_TESTAPP) || defined (CO_BAT_TESTAPP)
1728 vsi_c_close (VSI_CALLER hCommAPP);
1729 hCommAPP = VSI_ERROR;
1730 #endif
1731
1732 #ifdef GPRS
1733 vsi_c_close (VSI_CALLER hCommGMM);
1734 hCommGMM = VSI_ERROR;
1735
1736 vsi_c_close (VSI_CALLER hCommSM);
1737 hCommSM = VSI_ERROR;
1738
1739 vsi_c_close (VSI_CALLER hCommSNDCP);
1740 hCommSNDCP = VSI_ERROR;
1741 #ifdef FF_PKTIO
1742 vsi_c_close (VSI_CALLER hCommPKTIO);
1743 hCommPKTIO = VSI_ERROR;
1744 #endif
1745 #endif /* GPRS */
1746 #else
1747 #ifdef FF_TRACE_OVER_MTST
1748 vsi_c_close (VSI_CALLER hCommMTST);
1749 hCommMTST = VSI_ERROR;
1750 #endif
1751
1752 vsi_c_close (VSI_CALLER hCommSIM);
1753 hCommSIM = VSI_ERROR;
1754
1755 vsi_c_close (VSI_CALLER hCommSIM);
1756 hCommSIM = VSI_ERROR;
1757
1758 vsi_c_close (VSI_CALLER hCommMM);
1759 hCommMM = VSI_ERROR;
1760
1761 vsi_c_close (VSI_CALLER hCommCC);
1762 hCommCC = VSI_ERROR;
1763
1764 #ifdef FF_ESIM
1765 vsi_c_close (VSI_CALLER hCommESIM);
1766 hCommESIM = VSI_ERROR;
1767 #endif
1768
1769 vsi_c_close (VSI_CALLER hCommSS);
1770 hCommSS = VSI_ERROR;
1771
1772 vsi_c_close (VSI_CALLER hCommSMS);
1773 hCommSMS = VSI_ERROR;
1774
1775 #ifdef UART
1776 vsi_c_close (VSI_CALLER hCommDTI);
1777 hCommDTI = VSI_ERROR;
1778
1779 vsi_c_close (VSI_CALLER hCommUART);
1780 hCommUART = VSI_ERROR;
1781 #endif
1782 #ifdef FF_PSI
1783 vsi_c_close (VSI_CALLER hCommPSI);
1784 hCommPSI = VSI_ERROR;
1785 #endif /*FF_PSI*/
1786 /*#if defined SMI */
1787 /* vsi_c_close (VSI_CALLER hCommSMI);*/
1788 /* hCommSMI = VSI_ERROR;*/
1789 /*#elif defined MFW */
1790 /* vsi_c_close (VSI_CALLER hCommMMI);*/
1791 /* hCommMMI = VSI_ERROR;*/
1792 /*#elif defined ACI*/
1793 vsi_c_close (VSI_CALLER hCommACI);
1794 hCommACI = VSI_ERROR;
1795 /*#endif*/
1796
1797 vsi_c_close (VSI_CALLER hCommPL);
1798 hCommPL = VSI_ERROR;
1799
1800 #if defined FF_EOTD
1801 vsi_c_close (VSI_CALLER hCommLC);
1802 hCommLC = VSI_ERROR;
1803 #endif
1804
1805 #ifdef FAX_AND_DATA
1806 #ifndef USE_L1FD_FUNC_INTERFACE
1807 vsi_c_close (VSI_CALLER hCommRA);
1808 hCommRA = VSI_ERROR;
1809 #endif
1810 vsi_c_close (VSI_CALLER hCommL2R);
1811 hCommL2R = VSI_ERROR;
1812
1813 vsi_c_close (VSI_CALLER hCommTRA);
1814 hCommTRA = VSI_ERROR;
1815
1816 #ifdef FF_FAX
1817 vsi_c_close (VSI_CALLER hCommT30);
1818 hCommT30 = VSI_ERROR;
1819 #endif /* FF_FAX */
1820 #endif /* FAX_AND_DATA */
1821
1822 #ifdef FF_GPF_TCPIP
1823 vsi_c_close (VSI_CALLER hCommTCPIP);
1824 hCommTCPIP = VSI_ERROR;
1825 #endif
1826
1827 #if defined (CO_TCPIP_TESTAPP) || defined (CO_BAT_TESTAPP)
1828 vsi_c_close (VSI_CALLER hCommAPP);
1829 hCommAPP = VSI_ERROR;
1830 #endif
1831
1832 #ifdef CO_UDP_IP
1833 vsi_c_close (VSI_CALLER hCommUDP);
1834 hCommUDP = VSI_ERROR;
1835 vsi_c_close (VSI_CALLER hCommIP);
1836 hCommIP = VSI_ERROR;
1837 #endif
1838
1839 #ifdef FF_WAP
1840 vsi_c_close (VSI_CALLER hCommWAP);
1841 hCommWAP = VSI_ERROR;
1842 #endif
1843
1844 #if defined (FF_WAP) || defined (GPRS) || defined (FF_SAT_E)
1845 vsi_c_close (VSI_CALLER hCommPPP);
1846 hCommPPP = VSI_ERROR;
1847 #endif
1848
1849 #ifdef GPRS
1850 vsi_c_close (VSI_CALLER hCommGMM);
1851 hCommGMM = VSI_ERROR;
1852
1853 vsi_c_close (VSI_CALLER hCommSM);
1854 hCommSM = VSI_ERROR;
1855
1856 vsi_c_close (VSI_CALLER hCommUPM);
1857 hCommUPM = VSI_ERROR;
1858
1859 vsi_c_close (VSI_CALLER hCommSNDCP);
1860 hCommSNDCP = VSI_ERROR;
1861 #ifdef FF_PKTIO
1862 vsi_c_close (VSI_CALLER hCommPKTIO);
1863 hCommPKTIO = VSI_ERROR;
1864 #endif
1865 #endif /* GPRS */
1866
1867 #ifdef BT_ADAPTER
1868 vsi_c_close (VSI_CALLER hCommBTI);
1869 hCommBTI = VSI_ERROR;
1870 #endif /* BT_ADAPTER */
1871
1872 vsi_c_close (VSI_CALLER hCommL1);
1873 hCommL1 = VSI_ERROR;
1874
1875 #endif /* TI_PS_HCOMM_CHANGE */
1876
1877 #ifdef SMI
1878 _pei_exit ();
1879 #endif
1880
1881 /*
1882 * deallocate all channels
1883 * for non existing channels, this will just return
1884 */
1885 #ifdef FF_ATI
1886 for (i = 1; i < CMD_SRC_MAX; i++)
1887 {
1888 ati_finit(i);
1889 }
1890 #endif /* FF_ATI */
1891
1892 /* Free still occupied pointers in ccShrdPrm */
1893 for (i = 0; i < MAX_CALL_NR; i++)
1894 {
1895 if (ccShrdPrm.ctb[i] NEQ NULL)
1896 {
1897 psaCC_FreeCtbNtry (i);
1898 }
1899 }
1900
1901 /* Deallocation of elements (2nd to last) in linked list PNN */
1902 while (mmShrdPrm.PNNLst.next NEQ NULL)
1903 {
1904 T_pnn_name *nextnext = mmShrdPrm.PNNLst.next->next;
1905 ACI_MFREE (mmShrdPrm.PNNLst.next);
1906 mmShrdPrm.PNNLst.next = nextnext;
1907 }
1908
1909 #ifdef DTI
1910
1911 #if defined(FF_ATI) AND defined(SIM_TOOLKIT)
1912 run_at_id = 0xFF;
1913 #endif /* FF_ATI*/
1914
1915 #ifdef _SIMULATION_
1916 ati_src_tst_finit();
1917 #endif /* _SIMULATION_ */
1918 #endif /* DTI */
1919
1920 #if defined FF_EOTD
1921 ati_src_lc_finit();
1922 #endif /* FF_EOTD */
1923
1924 rdlPrm_exit();
1925
1926 #ifdef UART
1927 cmhUART_CleanComParameterList();
1928 #endif
1929
1930
1931 #ifdef FF_PSI
1932 cmhPSI_clean_all_elem();
1933 cmhPSI_CleanDcbParameterList();
1934 #endif
1935
1936 #ifdef UART
1937 cmhUART_lst_exit();
1938 #endif
1939
1940 return PEI_OK;
1941 }
1942
1943
1944 /*
1945 +--------------------------------------------------------------------+
1946 | PROJECT : GSM-F&D (8411) MODULE : ACI_PEI |
1947 | STATE : code ROUTINE : pei_config |
1948 +--------------------------------------------------------------------+
1949
1950 PURPOSE : Dynamic Configuration
1951
1952 */
1953
1954 #if !defined (NCONFIG)
1955
1956 LOCAL const KW_DATA kwtab[] =
1957 {
1958 ACI_KEY_SEQUENCE, KEY_SEQUENCE,
1959 ACI_KEY_PRESS, KEY_PRESS,
1960 ACI_KEY_RELEASE, KEY_RELEASE,
1961 ACI_START_AOC, START_AOC,
1962 ACI_CPOL_MODE, CPOL_MODE,
1963 ACI_CPOL_IDX2, CPOL_IDX2,
1964 ACI_ATI_VIA_TIF, ATI_VIA_TIF,
1965 /* new here*/
1966 #ifdef _SIMULATION_
1967 ACI_DATA_INPUT, DATA_INPUT,
1968 #endif /* _SIMULATION_ */
1969 "", 0
1970 };
1971
1972 #endif
1973
1974 #ifdef _SIMULATION_
1975
1976 #ifdef UART
1977 EXTERN void cmhUART_startConnection (UBYTE srcId,
1978 T_ACI_DEVICE_TYPE device_type);
1979 #endif /* UART */
1980 EXTERN UBYTE uart_new_source (UBYTE device, UBYTE dlci);
1981 EXTERN void uart_new_source_for_aci_src_tst( UBYTE src_id, UBYTE device, UBYTE dlci );
1982 #endif
1983
1984 /* Implements Measure#36 */
1985 #if !defined (NCONFIG)
1986 LOCAL SHORT pei_config (char *inString)
1987 {
1988 #ifdef FF_ATI
1989 BOOL alreadyCalled = FALSE;
1990 #endif
1991
1992 char *s = inString;
1993 SHORT valno;
1994 char *keyw;
1995 char *val[10];
1996
1997 TRACE_FUNCTION ("pei_config()");
1998
1999 #ifdef UART
2000 if (!strcmp(inString, "UART_19200"))
2001 {
2002 cmhUART_SetDataRate((UBYTE) CMD_SRC_ATI, (T_ACI_BD_RATE)UART_IO_SPEED_19200);
2003 return PEI_OK;
2004 }
2005 #endif
2006
2007 if (!strcmp(inString, "ATI_TRC"))
2008 { /* AT%CPRIM="MMI","CONFIG ATI_TRC" */
2009 EXTERN BOOL _g_ati_trc_enabled;
2010 _g_ati_trc_enabled = TRUE; /* only switch on possible */
2011 return PEI_OK;
2012 }
2013
2014 #ifdef _SIMULATION_
2015
2016 #ifdef UART
2017 if (!strcmp(inString, "START_DTI"))
2018 {
2019 int i;
2020 UBYTE srcId;
2021
2022 for (i=0;i<UART_INSTANCES;i++)
2023 {
2024 srcId = uart_new_source ((UBYTE)i, UART_DLCI_NOT_MULTIPLEXED);
2025 cmhUART_startConnection (srcId, DEVICE_TYPE_URT);
2026 }
2027 return PEI_OK;
2028 }
2029 if(!strcmp(inString, "EXPAND_ATI_SRC_TST"))
2030 {
2031 UBYTE srcId = ati_src_tst_get_src_id( (UBYTE) CMD_SRC_EXT );
2032
2033 if ( srcId EQ DTI_MNG_ID_NOTPRESENT )
2034 return PEI_OK;
2035
2036 uart_new_source_for_aci_src_tst( srcId, 0, NOT_PRESENT_8BIT );
2037 cmhUART_startConnection (srcId, DEVICE_TYPE_URT);
2038 return PEI_OK;
2039 }
2040
2041 if(!strncmp(inString, "ADD_TST_SRC", 11)) /* parameter [UART] */
2042 {
2043 char *end = inString + 11;
2044 UBYTE srcId;
2045
2046 srcId = ati_src_tst_get_src_id( (UBYTE) CMD_SRC_UNKNOWN );
2047
2048 if ( srcId EQ DTI_MNG_ID_NOTPRESENT )
2049 return PEI_OK;
2050
2051 while ( *end EQ ' ' )
2052 end ++;
2053
2054 if ( !strcmp( end, "UART"))
2055 {
2056 uart_new_source_for_aci_src_tst( srcId, srcId, NOT_PRESENT_8BIT );
2057 cmhUART_startConnection (srcId, DEVICE_TYPE_URT);
2058 }
2059
2060 if ( !strcmp( end, "UART_DP")) /* for dual port testing */
2061 {
2062 static UBYTE device=0; /* lint: at least init to something */
2063 uart_new_source_for_aci_src_tst( srcId, device, UART_DLCI_NOT_MULTIPLEXED );
2064 cmhUART_startConnection (srcId, DEVICE_TYPE_URT);
2065 device++;
2066 }
2067
2068 return PEI_OK;
2069 }
2070 #endif /* UART */
2071
2072 #ifdef DTI
2073 if (!strcmp(inString, "STOP_SRC_TST"))
2074 {
2075 EXTERN void ati_src_tst_finit (void);
2076 ati_src_tst_finit ();
2077 }
2078 #endif
2079
2080 #if (defined SMI OR defined MFW) AND defined TI_PS_FF_CONC_SMS
2081 if (!strcmp(inString, "CONC_SMS_TST"))
2082 {
2083 EXTERN void concSMS_InitForTesting();
2084 concSMS_InitForTesting();
2085 return PEI_OK;
2086 }
2087 #endif /*#if (defined SMI OR defined MFW) AND defined TI_PS_FF_CONC_SMS */
2088
2089 if (!strcmp(inString, "ENABLE_VOCODER_TST"))
2090 {
2091 EXTERN void hl_audio_drv_initForTest();
2092 hl_audio_drv_initForTest();
2093 return PEI_OK;
2094 }
2095
2096 #endif /* _SIMULATION_ */
2097
2098 #ifdef GPRS
2099 /*
2100 * Class modification
2101 * Author: ANS
2102 * initial: 07-Nov-00
2103 */
2104 if(!strcmp(inString,"CLASS_CC"))
2105 {
2106 default_mobile_class = GMMREG_CLASS_CC;
2107 return PEI_OK;
2108 }
2109 if(!strcmp(inString,"CLASS_CG"))
2110 {
2111 default_mobile_class = GMMREG_CLASS_CG;
2112 return PEI_OK;
2113 }
2114 if(!strcmp(inString,"CLASS_BC"))
2115 {
2116 default_mobile_class = GMMREG_CLASS_BC;
2117 return PEI_OK;
2118 }
2119 if(!strcmp(inString,"CLASS_BG"))
2120 {
2121 default_mobile_class = GMMREG_CLASS_BG;
2122 return PEI_OK;
2123 }
2124 if(!strcmp(inString,"CLASS_B"))
2125 {
2126 default_mobile_class = GMMREG_CLASS_B;
2127 return PEI_OK;
2128 }
2129 if(!strcmp(inString,"CLASS_A"))
2130 {
2131 default_mobile_class = GMMREG_CLASS_A;
2132 return PEI_OK;
2133 }
2134 /*
2135 * End Class modification
2136 */
2137
2138 /*
2139 * Attach mode modification
2140 * Author: BRZ
2141 * initial: 14-Apr-01
2142 */
2143 if(!strcmp(inString,"AUTO_ATTACH"))
2144 {
2145 automatic_attach_mode = CGAATT_ATTACH_MODE_AUTOMATIC;
2146 return PEI_OK;
2147 }
2148 if(!strcmp(inString,"MAN_ATTACH"))
2149 {
2150 automatic_attach_mode = CGAATT_ATTACH_MODE_MANUAL;
2151 return PEI_OK;
2152 }
2153 if(!strcmp(inString,"AUTO_DETACH"))
2154 {
2155 automatic_detach_mode = CGAATT_DETACH_MODE_ON;
2156 return PEI_OK;
2157 }
2158 if(!strcmp(inString,"MAN_DETACH"))
2159 {
2160 automatic_detach_mode = CGAATT_DETACH_MODE_OFF;
2161 return PEI_OK;
2162 }
2163 /*
2164 * End Attach mode modification
2165 */
2166 #endif
2167
2168 #ifdef MFW
2169 if (!strncmp("MFWMOB ",s,7))
2170 {
2171 mfwExtIn(s+7);
2172 return PEI_OK;
2173 }
2174 #endif
2175
2176 #ifdef _SIMULATION_
2177 #ifdef MFW
2178 /*
2179 * Only for Windows: define several variants
2180 * of SIM LOCK pcm content
2181 */
2182 if (!strncmp("SIMLOCK",s,7))
2183 {
2184 EXTERN UBYTE sim_lock_mode;
2185
2186 sim_lock_mode = atoi (s+8);
2187 return PEI_OK;
2188 }
2189 #endif
2190 #endif
2191
2192 #ifdef FF_TIMEZONE
2193 /*
2194 * simulate an incoming MMR_INFO_IND
2195 */
2196 if (!strncmp("TIMEZONE_TEST",s,13))
2197 {
2198 TRACE_EVENT ("pei_config() TIMEZONE_TEST");
2199 {
2200 PALLOC (mmr_info_ind, MMR_INFO_IND); /* is freed in psa_mmr_info_ind */
2201 memset (mmr_info_ind, 0, sizeof (T_MMR_INFO_IND)); /* clear out all */
2202 memcpy (mmr_info_ind->short_name.text, "RFT", 3); /* pseudo short name */
2203 mmr_info_ind->short_name.v_name = 1;
2204 mmr_info_ind->short_name.c_text = 3;
2205 memcpy (mmr_info_ind->full_name.text, "Ramsch Fusch Tinneff", 20); /* pseudo long name */
2206 mmr_info_ind->full_name.v_name = 1;
2207 mmr_info_ind->full_name.c_text = 20;
2208 mmr_info_ind->ntz.v_tz = 1;
2209 mmr_info_ind->ntz.tz = 0x19; /* simulate -2:45h away from GMT */
2210 mmr_info_ind->time.v_time = 1;
2211 mmr_info_ind->time.day = 30; /* 30. February 2004 ;~) */
2212 mmr_info_ind->time.month = 02;
2213 mmr_info_ind->time.year = 04;
2214 mmr_info_ind->time.hour = 11;
2215 mmr_info_ind->time.minute = 55; /* this stuff is really 5 before 12 */
2216 mmr_info_ind->time.second = 59;
2217 mmr_info_ind->plmn.v_plmn = 1;
2218 mmr_info_ind->plmn.mcc[0] = 0x02;
2219 mmr_info_ind->plmn.mcc[1] = 0x06;
2220 mmr_info_ind->plmn.mcc[2] = 0x02;
2221 mmr_info_ind->plmn.mnc[0] = 0x00;
2222 mmr_info_ind->plmn.mnc[1] = 0x01;
2223 mmr_info_ind->plmn.mnc[2] = 0x0F;
2224
2225 psa_mmr_info_ind(mmr_info_ind);
2226 return PEI_OK;
2227 }
2228 }
2229 #endif
2230
2231 TRACE_EVENT_P1("pei_config() %s", s);
2232
2233 tok_init(s);
2234
2235 /*
2236 * Parse next keyword and number of variables
2237 */
2238 while ((valno = tok_next(&keyw,val)) NEQ TOK_EOCS)
2239 {
2240 switch (tok_key((KW_DATA *)kwtab,keyw))
2241 {
2242 #ifdef MFW
2243 case KEY_SEQUENCE:
2244 {
2245 if (valno EQ 1)
2246 {
2247 mfw_keystroke (val[0]);
2248 }
2249 else
2250 {
2251 TRACE_ERROR ("[PEI_CONFIG]: Wrong Number of Parameters");
2252 }
2253 break;
2254 }
2255 #endif
2256
2257 #ifdef MFW
2258 case KEY_PRESS:
2259 {
2260 if (valno EQ 1)
2261 {
2262 mfw_keystroke_long (val[0], 1);
2263 }
2264 else
2265 {
2266 TRACE_ERROR ("[PEI_CONFIG]: Wrong Number of Parameters");
2267 }
2268 break;
2269 }
2270 #endif
2271
2272 #ifdef MFW
2273 case KEY_RELEASE:
2274 {
2275 if (valno EQ 1)
2276 {
2277 mfw_keystroke_long (val[0], 0);
2278 }
2279 else
2280 {
2281 TRACE_ERROR ("[PEI_CONFIG]: Wrong Number of Parameters");
2282 }
2283 break;
2284 }
2285 #endif
2286
2287 case START_AOC:
2288 {
2289 T_FWD_CHG_ADVICE_INV charge;
2290 T_chargingInformation * aoc_para;
2291
2292 aoc_para = &charge.forwardChargeAdviceArg.chargingInformation;
2293
2294 TRACE_EVENT ("Set AoC Parameter");
2295
2296 aoc_para->v_e1 = TRUE;
2297 aoc_para->e1.c_e_val = 1;
2298 aoc_para->e1.e_val[0] = 60;
2299 aoc_para->v_e2 = TRUE;
2300 aoc_para->e2.c_e_val = 1;
2301 aoc_para->e2.e_val[0] = 140;
2302 aoc_para->v_e3 = TRUE;
2303 aoc_para->e3.c_e_val = 1;
2304 aoc_para->e3.e_val[0] = 100;
2305 aoc_para->v_e4 = TRUE;
2306 aoc_para->e4.c_e_val = 1;
2307 aoc_para->e4.e_val[0] = 250;
2308 aoc_para->v_e5 = FALSE;
2309 aoc_para->e5.c_e_val = 0;
2310 aoc_para->e5.e_val[0] = 0;
2311 aoc_para->v_e6 = FALSE;
2312 aoc_para->e6.c_e_val = 0;
2313 aoc_para->e6.e_val[0] = 0;
2314 aoc_para->v_e7 = TRUE;
2315 aoc_para->e7.c_e_val = 2;
2316 aoc_para->e7.e_val[0] = 0x2;
2317 aoc_para->e7.e_val[1] = 0x58;
2318
2319 aoc_parameter(0, &charge);
2320 aoc_info (0, AOC_START_AOC);
2321 break;
2322 }
2323
2324 #ifdef _SIMULATION_
2325 case CPOL_MODE:
2326 {
2327 #ifdef FF_ATI
2328 if (valno EQ 1)
2329 {
2330 cpolMode = atoi(val[0]);
2331 }
2332 else
2333 {
2334 TRACE_ERROR ("[PEI_CONFIG]: Wrong Number of Parameters");
2335 }
2336 #else
2337 TRACE_ERROR ("[PEI_CONFIG]: AT Command Interpreter Not Supported");
2338 #endif
2339 break;
2340 }
2341
2342 case CPOL_IDX2:
2343 {
2344 #ifdef FF_ATI
2345 if (valno EQ 1)
2346 {
2347 cpolIdx2 = atoi(val[0]);
2348 }
2349 else
2350 {
2351 TRACE_ERROR ("[PEI_CONFIG]: Wrong Number of Parameters");
2352 }
2353 #else
2354 TRACE_ERROR ("[PEI_CONFIG]: AT Command Interpreter Not Supported");
2355 #endif
2356 break;
2357 }
2358 #endif
2359
2360 #ifdef FF_ATI
2361 #ifdef UART
2362 case ATI_VIA_TIF:
2363 {
2364 EXTERN BOOL atiViaTif;
2365
2366 if (valno EQ 1)
2367 {
2368 if (strcmp (val[0], "ON") EQ 0)
2369 atiViaTif = TRUE;
2370 else if (strcmp (val[0], "OFF") EQ 0)
2371 atiViaTif = FALSE;
2372 else
2373 TRACE_ERROR ("[PEI_CONFIG]: Wrong Parameter Value");
2374 }
2375 else
2376 {
2377 TRACE_ERROR ("[PEI_CONFIG]: Wrong Number of Parameters");
2378 }
2379 break;
2380 }
2381 #endif /* UART */
2382 #endif
2383
2384 default:
2385 {
2386 #ifdef FF_ATI
2387 if ( ( toupper ( inString[0] ) ) EQ 'A' AND
2388 ( toupper ( inString[1] ) ) EQ 'T' )
2389 {
2390 USHORT len = 0;
2391
2392 /*
2393 *---------------------------------------------------------
2394 * parsing algorithm is not suitable for transparent data
2395 * transfer, call aciCommand only once
2396 *---------------------------------------------------------
2397 */
2398 if (!alreadyCalled)
2399 {
2400 while (inString[len] NEQ ' ' AND inString[len] NEQ '\0')
2401 len++;
2402
2403 inString[len] = '\0';
2404
2405 ati_execute_config_cmd ((UBYTE*)inString, len);
2406 }
2407
2408 alreadyCalled = TRUE;
2409 }
2410 else
2411 #endif
2412 {
2413 #ifdef SMI
2414 return _pei_config (inString);
2415 #else
2416 TRACE_ERROR ("[PEI_CONFIG]: Illegal Keyword");
2417 #endif
2418 }
2419 break;
2420 }
2421 }
2422 }
2423
2424 return PEI_OK;
2425 }
2426 #endif /* NCONFIG */
2427
2428 /*
2429 +--------------------------------------------------------------------+
2430 | PROJECT : GSM-F&D (8411) MODULE : ACI_PEI |
2431 | STATE : code ROUTINE : pei_monitor |
2432 +--------------------------------------------------------------------+
2433
2434 PURPOSE : Monitoring of physical Parameters
2435
2436 */
2437 LOCAL SHORT pei_monitor (void ** monitor)
2438 {
2439 TRACE_FUNCTION ("pei_monitor()");
2440
2441 #ifdef SMI
2442 _pei_monitor (monitor);
2443 #else
2444 /* Implements Measure#32: Row 41 */
2445 #endif
2446
2447 *monitor = &aci_mon;
2448
2449 return PEI_OK;
2450 }
2451
2452
2453 /*
2454 +--------------------------------------------------------------------+
2455 | PROJECT : GSM-F&D (8411) MODULE : ACI_PEI |
2456 | STATE : code ROUTINE : pei_create |
2457 +--------------------------------------------------------------------+
2458
2459 PURPOSE : Create the Protocol Stack Entity
2460
2461 */
2462
2463 GLOBAL SHORT aci_pei_create (T_PEI_INFO **info)
2464 {
2465 static const T_PEI_INFO pei_info =
2466 {
2467 ACI_NAME,
2468 {
2469 pei_init,
2470 #ifdef _SIMULATION_
2471 pei_exit,
2472 #else
2473 NULL,
2474 #endif
2475 pei_primitive,
2476 pei_timeout,
2477 pei_signal,
2478 NULL, /* no run function */
2479 /* Implements Measure#36 */
2480 #if defined(NCONFIG)
2481 NULL, /* no pei_config function */
2482 #else /* NCONFIG */
2483 pei_config,
2484 #endif /* NCONFIG */
2485 pei_monitor,
2486 },
2487 #if defined (ACI)
2488 3072, /* Stack Size */
2489 #endif
2490 #if defined (SMI)
2491 3072, /* Stack Size */
2492 #endif
2493 /* Increased 300 bytes because when DCM is used for GPRS call
2494 more number of bytes need in the stack */
2495 #if defined (MFW)
2496 4396, /* Stack Size */
2497 #endif
2498 #if defined (FF_MMI_RIV)
2499 3072, /* Stack Size */
2500 #endif
2501 20, /* Queue Entries */
2502 #if defined (ACI)
2503 100, /* Priority */
2504 #endif
2505 #if defined (SMI)
2506 100, /* Priority */
2507 #endif
2508 #if defined (MFW)
2509 100, /* Priority */
2510 #endif
2511 #if defined (FF_MMI_RIV)
2512 100, /* Priority */
2513 #endif
2514
2515 MAX_ACI_TIMER, /* number of timer */
2516 0x03|PRIM_NO_SUSPEND /* flags */
2517 };
2518
2519 TRACE_FUNCTION ("pei_create()");
2520
2521 /*
2522 * Close Resources if open
2523 */
2524
2525 #ifdef _SIMULATION_
2526 if (first_access)
2527 first_access = FALSE;
2528 else
2529 pei_exit ();
2530 #endif
2531
2532 /*
2533 * Export startup configuration data
2534 */
2535
2536 *info = (T_PEI_INFO *)&pei_info;
2537
2538 return PEI_OK;
2539 }
2540
2541
2542 #endif /* ACI_PEI_C */