comparison src/g23m-aci/aci/aci_pei.c @ 1:d393cd9bb723

src/g23m-*: initial import from Magnetite
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 15 Jul 2018 04:40:46 +0000
parents
children d211db013bc7
comparison
equal deleted inserted replaced
0:b6a5e36de839 1:d393cd9bb723
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 "aci_all.h"
26
27 #include "ccdapi.h"
28 #include "cnf_aci.h"
29 #include "mon_aci.h" /* mouais... */
30 #include "P_ACI.val" /* SKA 2002-09-02 for MAX_CMD_LEN */
31 #include "line_edit.h" /* SKA 2002-09-02 */
32 #include "aci_cmh.h"
33 #include "ati_cmd.h"
34 #include "aci_cmd.h"
35 #include "aci.h"
36 #include "aci_mem.h"
37
38 #ifndef _SIMULATION_
39 #include "rv_swe.h"
40 #ifdef RVM_GIL_SWE
41 #include "gil/gil_gpf.h" /* MMI_GIL_IND dispatch function */
42 #endif /* RVM_GIL_SWE */
43 #endif /* _SIMULATION_ */
44
45
46 #include "psa.h"
47 #include "psa_cc.h"
48 #include "psa_mm.h"
49 #include "psa_sim.h"
50 #include "psa_mmi.h"
51 #include "psa_sms.h"
52 #include "aoc.h"
53 #include "phb.h"
54 #include "hl_audio_drv.h"
55
56 #include "aci_lst.h"
57
58 #ifdef DTI
59 #include "dti.h" /* functionality of the dti library */
60 #include "dti_conn_mng.h"
61 #include "dti_cntrl_mng.h"
62 #endif
63
64 #ifdef GPRS
65 #include "gprs.h"
66 #include "gaci_cmh.h"
67 #include "psa_gmm.h"
68 #include "psa_sm.h"
69 #include "psa_gppp.h"
70 #include "psa_upm.h"
71 #include "psa_snd.h"
72 #endif /* GPRS */
73
74 #ifdef UART
75 #include "psa_uart.h"
76 #include "cmh_uart.h"
77 #endif
78
79 #ifdef FF_ATI
80 #include "aci_io.h"
81 #endif
82
83 #ifdef FF_PSI
84 #include "psa_psi.h"
85 #include "cmh_psi.h"
86 #endif /*FF_PSI*/
87
88 #ifdef FAX_AND_DATA
89 #include "aci_fd.h"
90 #include "psa_ra.h"
91 #include "psa_l2r.h"
92 #ifdef FF_FAX
93 #include "psa_t30.h"
94 #endif
95 #endif
96
97 #if defined (FF_WAP) || defined (FF_PPP) || defined(FF_GPF_TCPIP)|| defined (FF_SAT_E)
98 #include "psa_ppp_w.h"
99 #endif
100 #if defined (CO_UDP_IP) || defined (FF_GPF_TCP_IP)
101 #include "psa_tcpip.h"
102 #endif /* defined (CO_UDP_IP) || defined(FF_GPF_TCPIP) */
103
104 #include "cmh.h"
105
106 #ifdef SIM_TOOLKIT
107 #include "psa_sat.h"
108 #endif
109
110 #ifdef MFW
111 #include "mfw_acie.h"
112 #endif
113
114 #include "gdi.h"
115 #include "audio.h"
116 #include "rx.h"
117 #include "pwr.h"
118
119
120 #ifdef BT_ADAPTER
121 #include "bti.h"
122 #include "bti_aci.h"
123 #endif
124
125 #ifdef FF_PKTIO
126 #include "psa_pktio.h"
127 #endif
128 #ifdef _SIMULATION_
129 #include "ati_src_tst.h"
130 #endif
131
132 #if defined FF_EOTD
133 #include "ati_src_lc.h"
134 #endif
135
136 #ifdef DTI
137 #include "sap_dti.h"
138 #endif
139
140 #include "psa_ss.h"
141 #ifdef FF_ESIM
142 #include "psa_aaa.h" /* esim */
143 #endif
144
145 #ifdef FF_MMI_RIV
146 EXTERN void acia_init(void);
147 #endif
148
149 #ifdef _SIMULATION_
150 #ifdef FF_ATI_BAT
151 #include "ati_bat.h"
152 #endif
153 #endif
154
155 extern const char firmware_version_str[];
156
157
158 /*==== DEFINE =====================================================*/
159
160 /*==== EXPORT =====================================================*/
161
162 GLOBAL UBYTE mode = 1;
163 /*
164 * instance data base
165 */
166
167 /*==== PRIVATE ====================================================*/
168
169 LOCAL void pei_not_supported (void *data);
170
171 /*==== VARIABLES ==================================================*/
172 LOCAL BOOL first_access = TRUE;
173 LOCAL T_MONITOR aci_mon;
174
175 #if defined(FF_ATI) AND defined(SIM_TOOLKIT)
176 EXTERN UBYTE run_at_id;
177 #endif
178
179 /*==== FUNCTIONS ==================================================*/
180
181 #ifdef SMI
182 EXTERN T_PEI_RETURN _pei_init (void);
183 EXTERN T_PEI_RETURN _pei_primitive (T_PRIM *prim);
184 EXTERN T_PEI_RETURN _pei_exit (void);
185 EXTERN T_PEI_RETURN _pei_monitor (void ** monitor);
186 /* Implements Measure#36 */
187 #if !defined (NCONFIG)
188 EXTERN T_PEI_RETURN _pei_config ( T_PEI_CONFIG inString );
189 #endif /* NCONFIG */
190 #endif /* SMI */
191 EXTERN void tim_exec_timeout (USHORT index);
192
193 /*
194 +--------------------------------------------------------------------+
195 | PROJECT : GSM-F&D (8411) MODULE : RLP_PEI |
196 | STATE : code ROUTINE : pei_not_supported |
197 +--------------------------------------------------------------------+
198
199 PURPOSE : An unsupported primitive is received.
200
201 */
202
203 LOCAL void pei_not_supported (void *data)
204 {
205 TRACE_FUNCTION ("pei_not_supported()");
206
207 PFREE (data);
208 }
209
210 /*
211 *
212 * Use MAK_FUNC_0 for primitives which contains no SDU.
213 *
214 * Use MAK_FUNC_S for primitives which contains a SDU.
215 */
216
217 /*
218 * jumptable for the entity service access point. Contains
219 * the processing-function addresses and opcodes of
220 * request and response primitives.
221 *
222 */
223 LOCAL const T_FUNC sim_table[] = {
224 MAK_FUNC_0( psa_sim_read_cnf, SIM_READ_CNF ),
225 MAK_FUNC_0( psa_sim_update_cnf, SIM_UPDATE_CNF ),
226 MAK_FUNC_0( psa_sim_read_record_cnf, SIM_READ_RECORD_CNF ),
227 MAK_FUNC_N( pei_not_supported, 0 ),
228 MAK_FUNC_0( psa_sim_update_record_cnf, SIM_UPDATE_RECORD_CNF ),
229 MAK_FUNC_N( pei_not_supported, 0 ),
230 MAK_FUNC_N( pei_not_supported, 0 ),
231 MAK_FUNC_N( pei_not_supported, 0 ),
232 MAK_FUNC_0( psa_sim_increment_cnf, SIM_INCREMENT_CNF ),
233 MAK_FUNC_0( psa_sim_verify_pin_cnf, SIM_VERIFY_PIN_CNF ),
234 MAK_FUNC_0( psa_sim_change_pin_cnf, SIM_CHANGE_PIN_CNF ),
235 MAK_FUNC_0( psa_sim_disable_pin_cnf, SIM_DISABLE_PIN_CNF ),
236 MAK_FUNC_0( psa_sim_enable_pin_cnf, SIM_ENABLE_PIN_CNF ),
237 MAK_FUNC_0( psa_sim_unblock_cnf, SIM_UNBLOCK_CNF ),
238 MAK_FUNC_N( pei_not_supported, 0 ),
239 MAK_FUNC_0( psa_sim_mmi_insert_ind, SIM_MMI_INSERT_IND ),
240 MAK_FUNC_N( pei_not_supported, 0 ),
241 MAK_FUNC_0( psa_sim_remove_ind, SIM_REMOVE_IND ),
242 MAK_FUNC_0( psa_sim_sync_cnf, SIM_SYNC_CNF ),
243 MAK_FUNC_0( psa_sim_activate_cnf, SIM_ACTIVATE_CNF ),
244 MAK_FUNC_N( pei_not_supported, 0 ),/*20*/
245 #ifdef SIM_TOOLKIT
246 MAK_FUNC_0( psa_sim_toolkit_ind, SIM_TOOLKIT_IND ),
247 MAK_FUNC_0( psa_sim_toolkit_cnf, SIM_TOOLKIT_CNF ),
248 #else
249 MAK_FUNC_N( pei_not_supported, 0 ),
250 MAK_FUNC_N( pei_not_supported, 0 ),
251 #endif
252 MAK_FUNC_0( psa_sim_activate_ind, SIM_ACTIVATE_IND ),/*23*/
253 MAK_FUNC_N( pei_not_supported, 0 ),
254 MAK_FUNC_0( psa_sim_access_cnf, SIM_ACCESS_CNF ),
255 #ifdef SIM_TOOLKIT
256 MAK_FUNC_0( psa_sim_file_update_ind, SIM_FILE_UPDATE_IND ),
257 #else
258 MAK_FUNC_N( pei_not_supported, 0 ),
259 #endif
260 MAK_FUNC_N( pei_not_supported, 0 ),/* SIM_GMM_INSERT_IND */
261 #ifdef FF_SAT_E
262 MAK_FUNC_0( psa_sim_dti_cnf, SIM_DTI_CNF ),/*28*/
263 MAK_FUNC_0( psa_sim_bip_cnf, SIM_BIP_CNF ),/*29*/
264 MAK_FUNC_0( psa_sim_bip_config_cnf, SIM_BIP_CONFIG_CNF ),/*30*/
265 MAK_FUNC_0( psa_sim_dti_bip_ind, SIM_DTI_BIP_IND ),/*31*/
266 MAK_FUNC_0( psa_sim_eventlist_cnf, SIM_EVENTLIST_CNF ),/*32*/
267 #else
268 MAK_FUNC_N( pei_not_supported, 0 ),
269 MAK_FUNC_N( pei_not_supported, 0 ),
270 MAK_FUNC_N( pei_not_supported, 0 ),
271 MAK_FUNC_N( pei_not_supported, 0 ),
272 MAK_FUNC_N( pei_not_supported, 0 ),
273 #endif
274 MAK_FUNC_N( pei_not_supported, 0 ) /*33*/
275 };
276
277 LOCAL const T_FUNC mmr_table[] = {
278 MAK_FUNC_0( psa_mmr_reg_cnf, MMR_REG_CNF ),
279 MAK_FUNC_0( psa_mmr_nreg_ind, MMR_NREG_IND ),
280 MAK_FUNC_0( psa_mmr_nreg_cnf, MMR_NREG_CNF ),
281 MAK_FUNC_0( psa_mmr_plmn_ind, MMR_PLMN_IND ),
282 MAK_FUNC_0( psa_mmr_info_ind, MMR_INFO_IND ),
283 MAK_FUNC_0( psa_mmr_ciphering_ind, MMR_CIPHERING_IND ),
284 MAK_FUNC_0( psa_mmr_ahplmn_ind, MMR_AHPLMN_IND )
285 };
286
287 LOCAL const T_FUNC mncc_table[] = {
288 MAK_FUNC_0( psa_mncc_alert_ind, MNCC_ALERT_IND ),
289 MAK_FUNC_0( psa_mncc_call_proceed_ind, MNCC_CALL_PROCEED_IND ),
290 MAK_FUNC_0( psa_mncc_disconnect_ind, MNCC_DISCONNECT_IND ),
291 MAK_FUNC_0( psa_mncc_hold_cnf, MNCC_HOLD_CNF ),
292 MAK_FUNC_0( psa_mncc_modify_cnf, MNCC_MODIFY_CNF ),
293 MAK_FUNC_0( psa_mncc_modify_ind, MNCC_MODIFY_IND ),
294 MAK_FUNC_N( pei_not_supported, 0 ),
295 MAK_FUNC_0( psa_mncc_progress_ind, MNCC_PROGRESS_IND ),
296 MAK_FUNC_0( psa_mncc_reject_ind, MNCC_REJECT_IND ),
297 MAK_FUNC_0( psa_mncc_release_cnf, MNCC_RELEASE_CNF ),
298 MAK_FUNC_0( psa_mncc_release_ind, MNCC_RELEASE_IND ),
299 MAK_FUNC_0( psa_mncc_retrieve_cnf, MNCC_RETRIEVE_CNF ),
300 MAK_FUNC_0( psa_mncc_setup_cnf, MNCC_SETUP_CNF ),
301 MAK_FUNC_0( psa_mncc_setup_compl_ind, MNCC_SETUP_COMPL_IND ),
302 MAK_FUNC_0( psa_mncc_setup_ind, MNCC_SETUP_IND ),
303 MAK_FUNC_0( psa_mncc_start_dtmf_cnf, MNCC_START_DTMF_CNF ),
304 MAK_FUNC_0( psa_mncc_sync_ind, MNCC_SYNC_IND ),
305 MAK_FUNC_0( psa_mncc_user_ind, MNCC_USER_IND ),
306 MAK_FUNC_0( psa_mncc_facility_ind, MNCC_FACILITY_IND ),
307 MAK_FUNC_0( psa_mncc_bearer_cap_cnf, MNCC_BEARER_CAP_CNF ),
308 MAK_FUNC_0( psa_mncc_prompt_ind, MNCC_PROMPT_IND ),
309 MAK_FUNC_0( psa_mncc_recall_ind, MNCC_RECALL_IND ),
310 MAK_FUNC_0( psa_mncc_status_ind, MNCC_STATUS_IND )
311 };
312
313 LOCAL const T_FUNC mnss_table[] = {
314 MAK_FUNC_0( psa_mnss_begin_ind, MNSS_BEGIN_IND ),
315 MAK_FUNC_0( psa_mnss_facility_ind, MNSS_FACILITY_IND ),
316 MAK_FUNC_0( psa_mnss_end_ind, MNSS_END_IND )
317 };
318
319 LOCAL const T_FUNC mnsms_table[] = {
320 MAK_FUNC_0( psa_mnsms_delete_cnf, MNSMS_DELETE_CNF ),
321 MAK_FUNC_0( psa_mnsms_read_cnf, MNSMS_READ_CNF ),
322 MAK_FUNC_0( psa_mnsms_store_cnf, MNSMS_STORE_CNF ),
323 MAK_FUNC_0( psa_mnsms_submit_cnf, MNSMS_SUBMIT_CNF ),
324 MAK_FUNC_0( psa_mnsms_command_cnf, MNSMS_COMMAND_CNF ),
325 #ifdef REL99
326 MAK_FUNC_0( psa_mnsms_retrans_cnf, MNSMS_RETRANS_CNF ),
327 #else
328 MAK_FUNC_N( pei_not_supported, 0 ),
329 #endif /* REL99 */
330 MAK_FUNC_0( psa_mnsms_report_ind, MNSMS_REPORT_IND ),
331 MAK_FUNC_0( psa_mnsms_status_ind, MNSMS_STATUS_IND ),
332 MAK_FUNC_0( psa_mnsms_message_ind, MNSMS_MESSAGE_IND ),
333 MAK_FUNC_0( psa_mnsms_error_ind, MNSMS_ERROR_IND ),
334 #ifdef TI_PS_FF_AT_P_CMD_CPRSM
335 MAK_FUNC_0( psa_mnsms_resume_cnf, MNSMS_RESUME_CNF ),
336 MAK_FUNC_0( psa_mnsms_query_cnf, MNSMS_QUERY_CNF ),
337 #else
338 MAK_FUNC_N( pei_not_supported, 0 ),
339 MAK_FUNC_N( pei_not_supported, 0 ),
340 #endif
341 #ifdef GPRS
342 MAK_FUNC_0( psa_mnsms_mo_serv_cnf, MNSMS_MO_SERV_CNF ),
343 #else
344 MAK_FUNC_N( pei_not_supported, 0 ),
345 #endif /* GPRS */
346 MAK_FUNC_0( psa_mnsms_OTA_message_ind, MNSMS_OTA_MESSAGE_IND ),
347 #ifdef REL99
348 MAK_FUNC_0( psa_mnsms_send_prog_ind, MNSMS_SEND_PROG_IND )
349 #else
350 MAK_FUNC_N( pei_not_supported, 0 )
351 #endif
352
353 };
354
355 LOCAL const T_FUNC mmi_table[] = {
356 MAK_FUNC_0( psa_mmi_keypad_ind, MMI_KEYPAD_IND ),
357 MAK_FUNC_0( psa_mmi_cbch_ind, MMI_CBCH_IND ),
358 MAK_FUNC_0( psa_mmi_rxlev_ind, MMI_RXLEV_IND ),
359 MAK_FUNC_0( psa_mmi_battery_ind, MMI_BATTERY_IND ),
360 #ifdef SIM_TOOLKIT
361 MAK_FUNC_0( psa_sat_cbch_dnl_ind, MMI_SAT_CBCH_DWNLD_IND ),
362 #else
363 MAK_FUNC_N( pei_not_supported, 0 ),
364 #endif
365 #ifdef BTE_MOBILE
366 MAK_FUNC_0( psa_mmi_bt_cb_notify_ind, MMI_BT_CB_NOTIFY_IND ),
367 #else
368 MAK_FUNC_N( pei_not_supported, 0 ),
369 #endif
370 #ifdef RVM_GIL_SWE
371 MAK_FUNC_N( pei_not_supported, 0 ), /* RPD MSG ? */
372 MAK_FUNC_0( gil_gpf_dispatch_message, MMI_GIL_IND ),
373 #else
374 MAK_FUNC_N( pei_not_supported, 0 ),
375 MAK_FUNC_N( pei_not_supported, 0 ),
376 #endif /* RVM_GIL_SWE */
377 #ifndef VOCODER_FUNC_INTERFACE
378 MAK_FUNC_0( psa_mmi_tch_vocoder_cfg_con, MMI_TCH_VOCODER_CFG_CON )
379 #else
380 MAK_FUNC_N( pei_not_supported, 0 )
381 #endif
382 };
383
384 #ifdef DTI
385 LOCAL const T_FUNC dti_dl_table[] = {
386 MAK_FUNC_0( dti_lib_dti_dti_connect_ind , DTI2_CONNECT_IND ), /* 7700x */
387 MAK_FUNC_0( dti_lib_dti_dti_connect_cnf , DTI2_CONNECT_CNF ), /* 7701x */
388 MAK_FUNC_0( dti_lib_dti_dti_disconnect_ind , DTI2_DISCONNECT_IND ), /* 7702x */
389 MAK_FUNC_0( dti_lib_dti_dti_ready_ind , DTI2_READY_IND ), /* 7703x */
390 MAK_FUNC_0( dti_lib_dti_dti_data_ind , DTI2_DATA_IND ), /* 7704x */
391 #if defined (_SIMULATION_)
392 MAK_FUNC_S( dti_lib_dti_dti_data_test_ind , DTI2_DATA_TEST_IND )
393 #else /* _SIMULATION_ */
394 MAK_FUNC_N( pei_not_supported , 0)
395 #endif /* _SIMULATION_ */
396 };
397 #endif /* UART */
398
399 #ifdef FF_EM_MODE
400 LOCAL const T_FUNC em_table[] = {
401 MAK_FUNC_0( psa_em_sc_info_cnf, EM_SC_INFO_CNF ), /* 0x7E00 */
402 #ifdef GPRS
403 MAK_FUNC_0( psa_em_sc_gprs_info_cnf, EM_SC_GPRS_INFO_CNF ), /* 0x7E01 */
404 #else
405 MAK_FUNC_N( pei_not_supported, EM_SC_GPRS_INFO_CNF ), /* 0x7E01 */
406 #endif /* GPRS */
407 MAK_FUNC_0( psa_em_nc_info_cnf, EM_NC_INFO_CNF ), /* 0x7E02 */
408 MAK_FUNC_0( psa_em_loc_pag_info_cnf, EM_LOC_PAG_INFO_CNF ), /* 0x7E03 */
409 MAK_FUNC_0( psa_em_plmn_info_cnf, EM_PLMN_INFO_CNF ), /* 0x7E04 */
410 MAK_FUNC_0( psa_em_cip_hop_dtx_info_cnf, EM_CIP_HOP_DTX_INFO_CNF ), /* 0x7E05 */
411 MAK_FUNC_0( psa_em_power_info_cnf, EM_POWER_INFO_CNF ), /* 0x7E06 */
412 MAK_FUNC_0( psa_em_identity_info_cnf, EM_IDENTITY_INFO_CNF ), /* 0x7E07 */
413 MAK_FUNC_0( psa_em_sw_version_info_cnf, EM_SW_VERSION_INFO_CNF ), /* 0x7E08 */
414 MAK_FUNC_N( pei_not_supported, 0 ), /* 0x7E09 */
415 MAK_FUNC_N( pei_not_supported, 0 ), /* 0x7E0A */
416 MAK_FUNC_0( em_event_trace_ind, EM_DATA_IND ), /* 0x7E0B */
417 MAK_FUNC_N( pei_not_supported, 0 ), /* 0x7E0C */
418 MAK_FUNC_N( pei_not_supported, 0 ), /* 0x7E0D */
419 MAK_FUNC_N( pei_not_supported, 0 ), /* 0x7E0E */
420 MAK_FUNC_N( pei_not_supported, 0 ), /* 0x7E0F */
421 MAK_FUNC_N( pei_not_supported, 0 ), /* 0x7E10 */
422 MAK_FUNC_N( pei_not_supported, 0 ), /* 0x7E11 */
423 MAK_FUNC_N( pei_not_supported, 0 ), /* 0x7E12 */
424 MAK_FUNC_N( pei_not_supported, 0 ), /* 0x7E13 */
425 MAK_FUNC_N( pei_not_supported, 0 ), /* 0x7E14 */
426 MAK_FUNC_N( pei_not_supported, 0 ), /* 0x7E15 */
427 MAK_FUNC_N( pei_not_supported, 0 ), /* 0x7E16 */
428 #ifdef GPRS
429 MAK_FUNC_0( psa_em_gmm_info_cnf, EM_GMM_INFO_CNF ), /* 0x7E17 */ /*GMM_INFO*/
430 MAK_FUNC_0( psa_em_grlc_info_cnf, EM_GRLC_INFO_CNF ), /* 0x7E18 */ /*GRLC_INFO*/
431 #else
432 MAK_FUNC_N( pei_not_supported, EM_GMM_INFO_CNF ), /* 0x7E17 */
433 MAK_FUNC_N( pei_not_supported, EM_GRLC_INFO_CNF ), /* 0x7E18 */
434 #endif /* GPRS */
435 MAK_FUNC_0( psa_em_amr_info_cnf, EM_AMR_INFO_CNF ) /* 0x7E19 */
436 };
437 #endif /* FF_EM_MODE */
438
439 #ifdef FF_ATI
440 /* ES!! #if !defined (MFW) */
441 LOCAL const T_FUNC aci_table[] = {
442 MAK_FUNC_0( aci_aci_cmd_req, ACI_CMD_REQ ),
443 MAK_FUNC_0( aci_aci_abort_req, ACI_ABORT_REQ ),
444 #ifdef BT_ADAPTER
445 MAK_FUNC_0( aci_aci_cmd_res , ACI_CMD_RES ),
446 MAK_FUNC_0( aci_aci_init_res , ACI_INIT_RES ),
447 MAK_FUNC_0( aci_aci_deinit_req , ACI_DEINIT_REQ ),
448 MAK_FUNC_0( aci_aci_open_port_req , ACI_OPEN_PORT_REQ ),
449 MAK_FUNC_0( aci_aci_close_port_req, ACI_CLOSE_PORT_REQ ),
450 MAK_FUNC_0( aci_aci_cmd_req_bt, ACI_CMD_REQ_BT ),
451 MAK_FUNC_0( aci_aci_cmd_res_bt, ACI_CMD_RES_BT ),
452 MAK_FUNC_0( aci_aci_abort_req_bt, ACI_ABORT_REQ_BT ),
453 #else
454 MAK_FUNC_N( pei_not_supported, 0 ),
455 MAK_FUNC_N( pei_not_supported, 0 ),
456 MAK_FUNC_N( pei_not_supported, 0 ),
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 #endif /* BT_ADAPTER */
463 MAK_FUNC_0( aci_aci_trc_ind, ACI_TRC_IND ),
464 MAK_FUNC_0( aci_aci_ext_ind, ACI_EXT_IND ),
465 #ifdef FF_MMI_RIV
466 MAK_FUNC_0( aci_aci_riv_cmd_req, ACI_RIV_CMD_REQ )
467 #else
468 MAK_FUNC_N( pei_not_supported, 0 )
469 #endif /* FF_MMI_RIV */
470 };
471 /* ES!! #endif */
472 #endif
473
474 #ifdef FAX_AND_DATA
475
476 LOCAL const T_FUNC ra_table[] = {
477 MAK_FUNC_N( pei_not_supported, 0 /* RA_READY_IND */),
478 MAK_FUNC_N( pei_not_supported, 0 /* RA_DATA_IND */),
479 MAK_FUNC_0( psa_ra_activate_cnf, RA_ACTIVATE_CNF ),
480 MAK_FUNC_0( psa_ra_deactivate_cnf, RA_DEACTIVATE_CNF ),
481 MAK_FUNC_N( pei_not_supported, 0 /* RA_BREAK_IND */)
482 #ifdef FF_FAX
483 ,
484 MAK_FUNC_0( psa_ra_modify_cnf, RA_MODIFY_CNF )
485 #endif
486 };
487
488 #ifdef DTI
489 LOCAL const T_FUNC l2r_table[] = {
490 MAK_FUNC_0( psa_l2r_activate_cnf, L2R_ACTIVATE_CNF ),
491 MAK_FUNC_0( psa_l2r_deactivate_cnf, L2R_DEACTIVATE_CNF ),
492 MAK_FUNC_0( psa_l2r_connect_cnf, L2R_CONNECT_CNF ),
493 MAK_FUNC_0( psa_l2r_connect_ind, L2R_CONNECT_IND ),
494 MAK_FUNC_0( psa_l2r_disc_cnf, L2R_DISC_CNF ),
495 MAK_FUNC_0( psa_l2r_disc_ind, L2R_DISC_IND ),
496 MAK_FUNC_N( pei_not_supported, 0 /* L2R_READY_IND */),
497 MAK_FUNC_N( pei_not_supported, 0 /* L2R_DATA_IND */),
498 MAK_FUNC_N( pei_not_supported, 0 /* L2R_BREAK_CNF */),
499 MAK_FUNC_N( pei_not_supported, 0 /* L2R_BREAK_IND */),
500 MAK_FUNC_N( psa_l2r_xid_ind, L2R_XID_IND ),
501 MAK_FUNC_0( psa_l2r_error_ind, L2R_ERROR_IND ),
502 MAK_FUNC_0( psa_l2r_reset_ind, L2R_RESET_IND ),
503 MAK_FUNC_0( psa_l2r_statistic_ind, L2R_STATISTIC_IND ),
504 MAK_FUNC_0( psa_l2r_dti_cnf, L2R_DTI_CNF ),
505 MAK_FUNC_0( psa_l2r_dti_ind, L2R_DTI_IND )
506 };
507
508 #ifdef FF_FAX
509 LOCAL const T_FUNC t30_table[] = {
510 MAK_FUNC_0( psa_t30_cap_ind, T30_CAP_IND ),
511 MAK_FUNC_0( psa_t30_sgn_ind, T30_SGN_IND ),
512 MAK_FUNC_0( psa_t30_cmpl_ind, T30_CMPL_IND ),
513 MAK_FUNC_S( psa_t30_report_ind, T30_REPORT_IND ),
514 MAK_FUNC_0( psa_t30_error_ind, T30_ERROR_IND ),
515 MAK_FUNC_0( psa_t30_deactivate_cnf, T30_DEACTIVATE_CNF ),
516 MAK_FUNC_0( psa_t30_activate_cnf, T30_ACTIVATE_CNF ),
517 MAK_FUNC_0( psa_t30_preamble_ind, T30_PREAMBLE_IND ),
518 MAK_FUNC_0( psa_t30_dti_ind, T30_DTI_IND ),
519 MAK_FUNC_0( psa_t30_dti_cnf, T30_DTI_CNF ),
520 MAK_FUNC_0( psa_t30_phase_ind, T30_PHASE_IND ),
521 MAK_FUNC_0( psa_t30_eol_ind, T30_EOL_IND ),
522 MAK_FUNC_N( pei_not_supported, 0 )
523 };
524 #endif /* FF_FAX */
525
526 LOCAL const T_FUNC tra_table[] = {
527 MAK_FUNC_0( psa_tra_activate_cnf, TRA_ACTIVATE_CNF ),
528 MAK_FUNC_0( psa_tra_deactivate_cnf, TRA_DEACTIVATE_CNF ),
529 MAK_FUNC_0( psa_tra_dti_cnf, TRA_DTI_CNF ),
530 MAK_FUNC_0( psa_tra_dti_ind, TRA_DTI_IND ),
531 };
532 #endif /* DTI */
533 #endif /* FAX_AND_DATA */
534
535 #ifdef FF_GPF_TCPIP
536 LOCAL const T_FUNC tcpip_table[] = {
537 MAK_FUNC_0 (psa_tcpip_initialize_cnf, TCPIP_INITIALIZE_CNF ), /* 0x00 */
538 MAK_FUNC_N (psa_tcpip_shutdown_cnf, TCPIP_SHUTDOWN_CNF ), /* 0x01 */
539 MAK_FUNC_0 (psa_tcpip_ifconfig_cnf, TCPIP_IFCONFIG_CNF ), /* 0x02 */
540 MAK_FUNC_0 (psa_tcpip_dti_cnf, TCPIP_DTI_CNF ) /* 0x03 */
541 };
542 #endif
543
544 #ifdef CO_UDP_IP
545 LOCAL const T_FUNC udpa_table[] = {
546 MAK_FUNC_0( psa_udpa_dti_cnf, UDPA_DTI_CNF ),
547 MAK_FUNC_0( psa_udpa_dti_ind, UDPA_DTI_IND ),
548 MAK_FUNC_0( psa_udpa_config_cnf, UDPA_CONFIG_CNF ),
549 };
550 LOCAL const T_FUNC ipa_table[] = {
551 MAK_FUNC_0( psa_ipa_dti_cnf, IPA_DTI_CNF ),
552 MAK_FUNC_0( psa_ipa_dti_ind, IPA_DTI_IND ),
553 MAK_FUNC_0( psa_ipa_config_cnf, IPA_CONFIG_CNF ),
554 };
555 #endif /* CO_UDP_IP */
556
557 #ifdef FF_WAP
558 LOCAL const T_FUNC wap_table[] = {
559 MAK_FUNC_S( psa_wap_mmi_ind, WAP_MMI_IND ),
560 MAK_FUNC_S( psa_wap_mmi_req, WAP_MMI_REQ ),
561 MAK_FUNC_S( psa_wap_mmi_cnf, WAP_MMI_CNF ),
562 MAK_FUNC_0( psa_wap_dti_cnf, WAP_DTI_CNF ),
563 MAK_FUNC_0( psa_wap_dti_ind, WAP_DTI_IND )
564 };
565 #endif /* FF_WAP */
566
567 #ifdef FF_GPF_TCPIP
568 LOCAL const T_FUNC dcm_table[] = {
569 MAK_FUNC_0( psa_dcm_open_conn_req, DCM_OPEN_CONN_REQ ), /* 0x8000401c */
570 MAK_FUNC_0( psa_dcm_close_conn_req, DCM_CLOSE_CONN_REQ ), /* 0x8001401c */
571 MAK_FUNC_0( psa_dcm_get_current_conn_req , DCM_GET_CURRENT_CONN_REQ), /* 0x8002001c */
572 MAK_FUNC_N( pei_not_supported, 0 )
573 };
574 #endif /* FF_GPF_TCPIP */
575
576 /*LOCAL const T_FUNC ppp_table[] = {
577 MAK_FUNC_0( psa_ppp_establish_cnf, PPP_ESTABLISH_CNF ),
578 MAK_FUNC_0( psa_ppp_terminate_ind, PPP_TERMINATE_IND ),
579 MAK_FUNC_N( pei_not_supported, 0 ),
580 MAK_FUNC_N( pei_not_supported, 0 ),
581 MAK_FUNC_0( psa_ppp_dti_connected_ind, PPP_DTI_CONNECTED_IND )
582 };*/
583 #if defined (UART) AND defined (DTI)
584 LOCAL const T_FUNC uart_table[] = {
585 MAK_FUNC_0( psa_uart_parameters_cnf, UART_PARAMETERS_CNF ), /* 0x3400 */
586 MAK_FUNC_0( psa_uart_parameters_ind, UART_PARAMETERS_IND ), /* 0x3401 */
587 MAK_FUNC_0( psa_uart_dti_cnf, UART_DTI_CNF ), /* 0x3402 */
588 MAK_FUNC_0( psa_uart_dti_ind, UART_DTI_IND ), /* 0x3403 */
589 MAK_FUNC_0( psa_uart_disable_cnf, UART_DISABLE_CNF ), /* 0x3404 */
590 MAK_FUNC_0( psa_uart_ring_cnf, UART_RING_CNF ), /* 0x3405 */
591 MAK_FUNC_0( psa_uart_dcd_cnf, UART_DCD_CNF ), /* 0x3406 */
592 MAK_FUNC_0( psa_uart_escape_cnf, UART_ESCAPE_CNF ), /* 0x3407 */
593 MAK_FUNC_0( psa_uart_detected_ind, UART_DETECTED_IND ), /* 0x3408 */
594 MAK_FUNC_0( psa_uart_error_ind, UART_ERROR_IND ), /* 0x3409 */
595 MAK_FUNC_0( psa_uart_mux_start_cnf, UART_MUX_START_CNF ),
596 MAK_FUNC_0( psa_uart_mux_dlc_establish_ind, UART_MUX_DLC_ESTABLISH_IND),
597 MAK_FUNC_0( psa_uart_mux_dlc_release_ind, UART_MUX_DLC_RELEASE_IND ),
598 MAK_FUNC_N( pei_not_supported, 0 ), /* sleep ind */
599 MAK_FUNC_N( pei_not_supported, 0 ), /* wake up ind */
600 MAK_FUNC_0( psa_uart_mux_close_ind, UART_MUX_CLOSE_IND ),
601 MAK_FUNC_N( pei_not_supported, 0 )
602 };
603 #endif
604
605 #ifdef GPRS
606 /* GMMREG */
607 LOCAL const T_FUNC gmm_table[] = {
608 MAK_FUNC_0( psa_gmmreg_attach_cnf, GMMREG_ATTACH_CNF ),
609 MAK_FUNC_0( psa_gmmreg_attach_rej, GMMREG_ATTACH_REJ ),
610 MAK_FUNC_0( psa_gmmreg_detach_cnf, GMMREG_DETACH_CNF ),
611 MAK_FUNC_0( psa_gmmreg_detach_ind, GMMREG_DETACH_IND ),
612 MAK_FUNC_0( psa_gmmreg_plmn_ind, GMMREG_PLMN_IND ),
613 MAK_FUNC_0( psa_gmmreg_suspend_ind, GMMREG_SUSPEND_IND ),
614 MAK_FUNC_0( psa_gmmreg_resume_ind, GMMREG_RESUME_IND ),
615 MAK_FUNC_0( psa_gmmreg_info_ind, GMMREG_INFO_IND ),
616 MAK_FUNC_0( psa_gmmreg_ciphering_ind, GMMREG_CIPHERING_IND ),
617 MAK_FUNC_0( psa_gmmreg_ahplmn_ind, GMMREG_AHPLMN_IND )
618 };
619
620 /* UPM */
621 LOCAL const T_FUNC upm_table[] = {
622 MAK_FUNC_N( pei_not_supported, 0 ),
623 MAK_FUNC_N( psa_upm_count_cnf, UPM_COUNT_CNF )
624 };
625
626
627 /* SMREG */
628 LOCAL const T_FUNC sm_table[] = {
629 MAK_FUNC_0( psa_smreg_pdp_activate_cnf, SMREG_PDP_ACTIVATE_CNF ),
630 MAK_FUNC_0( psa_smreg_pdp_activate_rej, SMREG_PDP_ACTIVATE_REJ ),
631 MAK_FUNC_0( psa_smreg_pdp_activate_ind, SMREG_PDP_ACTIVATE_IND ),
632 MAK_FUNC_0( psa_smreg_pdp_deactivate_cnf, SMREG_PDP_DEACTIVATE_CNF ),
633 MAK_FUNC_0( psa_smreg_pdp_deactivate_ind, SMREG_PDP_DEACTIVATE_IND ),
634 MAK_FUNC_0( psa_smreg_pdp_modify_ind, SMREG_PDP_MODIFY_IND )
635 #ifdef REL99
636 ,MAK_FUNC_0( psa_smreg_pdp_modify_cnf, SMREG_PDP_MODIFY_CNF ),
637 MAK_FUNC_0( psa_smreg_pdp_modify_rej, SMREG_PDP_MODIFY_REJ ),
638 MAK_FUNC_0( psa_smreg_pdp_activate_sec_cnf, SMREG_PDP_ACTIVATE_SEC_CNF ),
639 MAK_FUNC_0( psa_smreg_pdp_activate_sec_rej, SMREG_PDP_ACTIVATE_SEC_REJ )
640 #endif /* !REL99 */
641 };
642
643
644 /* SN */
645 LOCAL const T_FUNC sndcp_table[] = {
646 MAK_FUNC_N( pei_not_supported, 0 ),
647 MAK_FUNC_N( pei_not_supported, 0 ),
648 MAK_FUNC_N( pei_not_supported, 0 ),
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( psa_sn_dti_cnf, SN_DTI_CNF )
656 };
657
658 /* PPP */
659 /*LOCAL const T_FUNC ppp_table[] = {
660 MAK_FUNC_0( psa_ppp_establish_cnf, PPP_ESTABLISH_CNF ),
661 MAK_FUNC_0( psa_ppp_terminate_ind, PPP_TERMINATE_IND ),
662 MAK_FUNC_0( psa_ppp_pdp_activate_ind, PPP_PDP_ACTIVATE_IND ),
663 MAK_FUNC_0( psa_ppp_modification_cnf, PPP_MODIFICATION_CNF ),
664 MAK_FUNC_0( psa_ppp_dti_connected_ind, PPP_DTI_CONNECTED_IND )
665 };*/
666
667 #ifdef FF_PKTIO
668 LOCAL const T_FUNC mnpkt_table[] = {
669 MAK_FUNC_0( psa_pkt_connect_ind, PKT_CONNECT_IND ),
670 MAK_FUNC_0( psa_pkt_disconnect_ind, PKT_DISCONNECT_IND ),
671 MAK_FUNC_0( psa_pkt_dti_open_cnf, PKT_DTI_OPEN_CNF ),
672 MAK_FUNC_0( psa_pkt_modify_cnf, PKT_MODIFY_CNF ),
673 MAK_FUNC_0( psa_pkt_dti_close_cnf, PKT_DTI_CLOSE_CNF ),
674 MAK_FUNC_0( psa_pkt_dti_close_ind, PKT_DTI_CLOSE_IND )
675 };
676 #endif
677 #endif /* GPRS */
678 #if defined (FF_PSI ) AND defined (DTI)
679 LOCAL const T_FUNC mnpsi_table[] = {
680 MAK_FUNC_0( psa_psi_conn_ind, PSI_CONN_IND ),
681 MAK_FUNC_0( psa_psi_disconn_ind, PSI_DISCONN_IND ),
682 MAK_FUNC_0( psa_psi_dti_open_cnf, PSI_DTI_OPEN_CNF ),
683 MAK_FUNC_0( psa_psi_dti_close_cnf, PSI_DTI_CLOSE_CNF ),
684 MAK_FUNC_0( psa_psi_dti_close_ind, PSI_DTI_CLOSE_IND ),
685 MAK_FUNC_0( psa_psi_setconf_cnf, PSI_SETCONF_CNF ),
686 MAK_FUNC_0( psa_psi_line_state_cnf, PSI_LINE_STATE_CNF ),
687 MAK_FUNC_0( psa_psi_line_state_ind, PSI_LINE_STATE_IND ),
688 MAK_FUNC_0( psa_psi_close_cnf, PSI_CLOSE_CNF )
689 #ifdef _SIMULATION_
690 ,
691 MAK_FUNC_0( psa_psi_conn_ind_test, PSI_CONN_IND_TEST)
692 #endif /*_SIMULATION_ */
693 };
694 #endif /*FF_PSI*/
695 /* PPP */
696
697 #if defined FF_WAP || defined GPRS || defined FF_GPF_TCPIP || defined (FF_SAT_E) || defined (FF_PPP)
698
699 LOCAL const T_FUNC ppp_table[] = {
700 MAK_FUNC_0( psa_ppp_establish_cnf, PPP_ESTABLISH_CNF ),
701 MAK_FUNC_0( psa_ppp_terminate_ind, PPP_TERMINATE_IND ),
702 MAK_FUNC_0( psa_ppp_pdp_activate_ind, PPP_PDP_ACTIVATE_IND ),
703 MAK_FUNC_0( psa_ppp_modification_cnf, PPP_MODIFICATION_CNF ),
704 MAK_FUNC_0( psa_ppp_dti_connected_ind, PPP_DTI_CONNECTED_IND )
705 };
706 #endif /* FF_WAP || GPRS || FF_GPF_TCPIP || FF_SAT_E */
707
708 #if defined FF_EOTD
709 LOCAL const T_FUNC mnlc_table[] = {
710 MAK_FUNC_0( psa_mnlc_sms_meas_cnf, MNLC_SMS_MEAS_CNF )
711 };
712 #endif /* FF_EOTD */
713
714 /* BTI */
715 #ifdef BT_ADAPTER
716 LOCAL const T_FUNC btp_table[] = {
717 MAK_FUNC_N( pei_not_supported, 0 ),
718 MAK_FUNC_N( pei_not_supported, 0 ),
719 MAK_FUNC_N( pei_not_supported, 0 ),
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_0( psa_btp_dti_ind, T30_DTI_IND ),
772 MAK_FUNC_0( psa_btp_dti_cnf, T30_DTI_CNF )
773 };
774 #endif /* BT_ADAPTER */
775
776 #if defined(FF_TCP_IP) || defined(FF_ESIM)
777 LOCAL const T_FUNC aaa_table[] = {
778 MAK_FUNC_0( psa_aaa_cmd_req, AAA_CMD_REQ ),
779 MAK_FUNC_0( psa_aaa_open_port_req, AAA_OPEN_PORT_REQ ),
780 MAK_FUNC_0( psa_aaa_close_port_req, AAA_CLOSE_PORT_REQ ),
781 MAK_FUNC_0( psa_aaa_dti_rsp, AAA_DTI_RES ),
782 MAK_FUNC_N( pei_not_supported, 0 ),
783 MAK_FUNC_N( pei_not_supported, 0 ),
784 MAK_FUNC_0( psa_aaa_disconnect_rsp, AAA_DISCONNECT_RES )
785 };
786 #endif
787
788 /*
789 +--------------------------------------------------------------------+
790 | PROJECT : GSM-F&D (8411) MODULE : RLP_PEI |
791 | STATE : code ROUTINE : pei_primitive |
792 +--------------------------------------------------------------------+
793
794 PURPOSE : Process protocol specific primitive.
795
796 */
797
798 LOCAL SHORT pei_primitive (void *ptr)
799 {
800 T_PRIM *prim = ptr;
801 #ifdef SMI
802 T_PEI_RETURN subReturn = PEI_ERROR;
803 #endif
804
805 /*
806 *
807 * ACI UPLINK
808 * |
809 * +-------------------------------v--------------------------------------+
810 * | |
811 * | ACI |
812 * | |
813 * +--^----^-----^----^----^----^---^---^---^----^------^----^---^----^---+
814 * | | | | | | | | | | | | | |
815 * SIM MMREG MNCC MNSS MNSMS MMI T30 L2R RA GMMREG SMREG PPP UART BTI DOWNLINK
816 * | | | | | | | | | | | | | |
817 *
818 */
819
820 #ifdef MFW
821 extern void mmeFlagHandler(void);
822 extern USHORT mfwMmeDrvFlag;
823 #endif
824
825 /* TRACE_FUNCTION ("pei_primitive()");*/
826 #ifdef MFW
827 if (mfwMmeDrvFlag)
828 mmeFlagHandler();
829 #endif
830
831 if (prim NEQ NULL)
832 {
833 ULONG opc = prim->custom.opc;
834 USHORT n;
835 const T_FUNC *table;
836
837 VSI_PPM_REC ((T_PRIM_HEADER*)prim, __FILE__, __LINE__);
838
839 #ifndef FF_EM_MODE
840 /*
841 * To ensure true msc directions for the engineering mode additional
842 * information (from which entity the prim is sent) must be provided
843 * before PTRACE_IN is called.
844 */
845 PTRACE_IN (opc);
846 #endif /* FF_EM_MODE */
847
848 #ifdef MFW
849 /*
850 * MFW "checks" if it needs to handle primitves coming from below before they are
851 * potentially still to be handled by ACI
852 */
853 if (aci_check_primitive (opc, (void*)(&(prim->data))))
854 {
855 PFREE (P2D(prim));
856 return PEI_OK;
857 }
858 #endif
859
860 /* TRACE_EVENT_P1("opcode: %d", opc);*/
861 switch (SAP_NR(opc))
862 {
863 #ifdef FF_ATI
864 /* ES!! #if !defined (MFW) */
865 case ACI_DL:
866 case ACI_UL: table = aci_table; n = TAB_SIZE (aci_table); break;
867 /* ES!! #endif */
868 #endif
869 case SAP_NR(SIM_UL): table = sim_table; n = TAB_SIZE (sim_table); break;
870 case SAP_NR(MMREG_DL): table = mmr_table; n = TAB_SIZE (mmr_table); break;
871 case SAP_NR(MNCC_DL): table = mncc_table; n = TAB_SIZE (mncc_table); break;
872 case SAP_NR(MNSS_DL): table = mnss_table; n = TAB_SIZE (mnss_table); break;
873 case SAP_NR(MNSMS_DL): table = mnsms_table; n = TAB_SIZE (mnsms_table); break;
874 #if defined (FF_PKTIO) AND defined (DTI)
875 case SAP_NR(PKT_DL): table = mnpkt_table; n = TAB_SIZE (mnpkt_table); break;
876 #endif
877 #if defined (FF_PSI) AND defined (DTI)
878 case SAP_NR(PSI_DL): table = mnpsi_table; n = TAB_SIZE (mnpsi_table); break;
879 #endif /*FF_PSI*/
880
881 #ifdef DTI
882 #if defined(FF_TCP_IP) || defined(FF_ESIM)
883 case SAP_NR(AAA_DL): table = aaa_table; n = TAB_SIZE (aaa_table); break;
884 #endif
885 #endif
886 case MMI_DL: table = mmi_table; n = TAB_SIZE (mmi_table); break;
887 #ifdef DTI
888 case DTI2_DL:
889 {
890 table = dti_dl_table; n = TAB_SIZE (dti_dl_table);
891 /*
892 * to be able to distinguish DTI1/DTI2 opcodes,
893 * the ones for DTI2 start at 0x50
894 */
895 opc -= 0x50;
896 }
897 break;
898 #endif /* UART */
899 #ifdef FF_EM_MODE
900 case EM_Dl: table = em_table; n = TAB_SIZE (em_table); break;
901 #endif /* FF_EM_MODE */
902
903 #if defined (FAX_AND_DATA) AND defined (DTI)
904 case SAP_NR(RA_DL): table = ra_table; n = TAB_SIZE (ra_table); break;
905 case SAP_NR(L2R_DL): table = l2r_table; n = TAB_SIZE (l2r_table); break;
906 #ifdef FF_FAX
907 case SAP_NR(T30_DL): table = t30_table; n = TAB_SIZE (t30_table); break;
908 #endif
909 case SAP_NR(TRA_DL): table = tra_table; n = TAB_SIZE (tra_table); break;
910 #endif
911
912 #ifdef FF_GPF_TCPIP
913 case SAP_NR(TCPIP_DL): table = tcpip_table; n = TAB_SIZE (tcpip_table); break;
914 case SAP_NR(DCM_DL): table = dcm_table; n = TAB_SIZE (dcm_table); break;
915 #endif
916
917 #ifdef CO_UDP_IP
918 case SAP_NR(UDPA_DL): table = udpa_table; n = TAB_SIZE (udpa_table); break;
919 case SAP_NR(IPA_DL): table = ipa_table; n = TAB_SIZE (ipa_table); break;
920 #endif
921
922 #ifdef FF_WAP
923 case SAP_NR(WAP_DL): table = wap_table; n = TAB_SIZE (wap_table); break;
924 #endif
925
926 #if defined (FF_WAP) || defined (GPRS) || defined (FF_SAT_E)
927 case PPP_UL: table = ppp_table; n = TAB_SIZE (ppp_table); break;
928 #endif
929
930 #ifdef GPRS
931 case GMMREG_DL: table = gmm_table; n = TAB_SIZE (gmm_table); break;
932 case SMREG_DL: table = sm_table; n = TAB_SIZE (sm_table); break;
933 case SAP_NR(UPM_DL): table = upm_table; n = TAB_SIZE (upm_table); break;
934 case SAP_NR(SN_DL): table = sndcp_table; n = TAB_SIZE (sndcp_table); break;
935
936 #endif /* GPRS */
937
938 #if defined (UART) AND defined (DTI)
939 case UART_UL: table = uart_table; n = TAB_SIZE (uart_table); break;
940 #endif /* UART */
941 #ifdef BT_ADAPTER
942 /* BTI DL */
943 case BTP_G: table = btp_table; n = TAB_SIZE (btp_table); break;
944 #endif /* BT_ADAPTER */
945 #if defined FF_EOTD
946 case SAP_NR(MNLC_DL): table = mnlc_table; n = TAB_SIZE (mnlc_table); break;
947 #endif
948
949 default: table = NULL; n = 0; break;
950 }
951
952 #ifdef FF_EM_MODE
953 /*
954 * Only valid for the engineering mode as described above.
955 */
956 PTRACE_IN (opc);
957 #endif /* FF_EM_MODE */
958
959 if (table NEQ NULL )
960 {
961 if (PRIM_NR(opc) < n)
962 {
963 table += PRIM_NR(opc);
964 #ifdef PALLOC_TRANSITION
965 P_SDU(prim) = table->soff ? (T_sdu*) (((char*)&prim->data) + table->soff) : 0;
966 #ifndef NO_COPY_ROUTING
967 P_LEN(prim) = table->size + sizeof (T_PRIM_HEADER);
968 #endif /* NO_COPY_ROUTING */
969 #endif /* PALLOC_TRANSITION */
970
971 #if !defined (SMI) AND !defined (MFW)
972 if (mode EQ 0 AND
973 table NEQ aci_table)
974 {
975 PSENDX (ACI, P2D(prim));
976 }
977 else
978 #endif
979 {
980 #ifdef SMI
981 if (table->func EQ (T_VOID_FUNC) pei_not_supported)
982 {
983 subReturn = _pei_primitive (prim);
984 }
985 else
986 #endif
987 JUMP (table->func) (P2D(prim));
988 }
989 }
990 else
991 {
992 #ifndef SMI
993 pei_not_supported (P2D(prim));
994 #else
995 subReturn = _pei_primitive (prim);
996 #endif
997 }
998 return PEI_OK;
999 }
1000 #ifdef SMI
1001 else
1002 {
1003 subReturn = _pei_primitive (prim);
1004 }
1005 #endif
1006
1007 /*
1008 * Primitive is no GSM Primitive
1009 * then forward to the environment
1010 */
1011 #ifdef SMI
1012 if (subReturn EQ PEI_ERROR)
1013 {
1014 #endif
1015 #ifdef GSM_ONLY
1016 PFREE (P2D(prim))
1017 return PEI_ERROR;
1018 #else
1019 if (opc & SYS_MASK)
1020 vsi_c_primitive (VSI_CALLER prim);
1021 else
1022 {
1023 PFREE (P2D(prim));
1024 return PEI_ERROR;
1025 }
1026 #endif
1027 #ifdef SMI
1028 }
1029 #endif
1030 }
1031 #ifdef SMI
1032 else
1033 {
1034 subReturn = _pei_primitive (prim);
1035 }
1036 #endif
1037
1038 return PEI_OK;
1039 }
1040
1041
1042 /*
1043 +--------------------------------------------------------------------+
1044 | PROJECT : GSM-F&D (8411) MODULE : ACI_PEI |
1045 | STATE : code ROUTINE : pei_init |
1046 +--------------------------------------------------------------------+
1047
1048 PURPOSE : Initialize Protocol Stack Entity
1049
1050 */
1051 LOCAL SHORT pei_init (T_HANDLE handle)
1052 {
1053 #ifdef FF_ATI
1054 #ifdef UART
1055 EXTERN void urt_init (void);
1056 #endif
1057 #endif
1058
1059 aci_handle = handle;
1060
1061 TRACE_FUNCTION ("pei_init()");
1062
1063 #ifdef TI_PS_HCOMM_CHANGE
1064 if (!cl_hcomm_open_all_handles())
1065 {
1066 return PEI_ERROR;
1067 }
1068
1069 if (hCommACI < VSI_OK)
1070 {
1071 if ((hCommACI = vsi_c_open (VSI_CALLER ACI_NAME)) < VSI_OK)
1072 return PEI_ERROR;
1073 }
1074
1075 #ifdef FAX_AND_DATA
1076 if (hCommTRA < VSI_OK)
1077 {
1078 /* TRA_NAME i.e "L2R" on account of TRA being no real entity */
1079 if ((hCommTRA = vsi_c_open (VSI_CALLER TRA_NAME)) < VSI_OK)
1080 return PEI_ERROR;
1081 }
1082 #endif
1083
1084 #ifdef FF_GPF_TCPIP
1085 if (hCommTCPIP < VSI_OK)
1086 {
1087 if ((hCommTCPIP = vsi_c_open (VSI_CALLER TCPIP_NAME)) < VSI_OK)
1088 return PEI_ERROR;
1089 }
1090 #endif
1091
1092 #if defined (CO_TCPIP_TESTAPP) || defined (CO_BAT_TESTAPP)
1093 if (hCommAPP < VSI_OK)
1094 {
1095 if ((hCommAPP = vsi_c_open (VSI_CALLER APP_NAME)) < VSI_OK)
1096 return PEI_ERROR;
1097 }
1098 #endif
1099
1100 #if defined FF_TRACE_OVER_MTST
1101 if (hCommMTST < VSI_OK)
1102 {
1103 if ((hCommMTST = vsi_c_open (VSI_CALLER "MTST")) < VSI_OK)
1104 return PEI_ERROR;
1105 }
1106 #endif
1107
1108 #ifdef FF_ESIM
1109 if (hCommESIM < VSI_OK) /* open channel to ESIM entity */
1110 {
1111 if ((hCommESIM = vsi_c_open (VSI_CALLER ESIM_NAME)) < VSI_OK)
1112 return PEI_ERROR;
1113 }
1114 #endif
1115
1116 #if defined (GPRS) AND defined (DTI)
1117 if (hCommGMM < VSI_OK)
1118 {
1119 if ((hCommGMM = vsi_c_open (VSI_CALLER GMM_NAME)) < VSI_OK)
1120 return PEI_ERROR;
1121 }
1122 if (hCommSM < VSI_OK)
1123 {
1124 if ((hCommSM = vsi_c_open (VSI_CALLER SM_NAME)) < VSI_OK)
1125 return PEI_ERROR;
1126 }
1127 if (hCommSNDCP < VSI_OK)
1128 {
1129 if ((hCommSNDCP = vsi_c_open (VSI_CALLER SNDCP_NAME)) < VSI_OK)
1130 return PEI_ERROR;
1131 }
1132
1133 #ifdef FF_PKTIO
1134 if (hCommPKTIO < VSI_OK)
1135 {
1136 if ((hCommPKTIO = vsi_c_open (VSI_CALLER PKTIO_NAME)) < VSI_OK)
1137 {
1138 TRACE_EVENT ("cannot open PKTIO");
1139 return PEI_ERROR;
1140 }
1141 }
1142 #endif
1143 #endif /* GPRS */
1144
1145 #ifdef FF_GPF_TCPIP
1146 if (hCommDCM < VSI_OK)
1147 {
1148 if ((hCommDCM = vsi_c_open (VSI_CALLER DCM_NAME)) < VSI_OK)
1149 return PEI_ERROR;
1150 }
1151 #endif /* FF_GPF_TCPIP */
1152
1153 #else /* for hCommHandles backward compatibility */
1154 if (hCommSIM < VSI_OK)
1155 {
1156 if ((hCommSIM = vsi_c_open (VSI_CALLER SIM_NAME)) < VSI_OK)
1157 return PEI_ERROR;
1158 }
1159
1160 #ifdef FF_ESIM
1161 if (hCommESIM < VSI_OK) /* open channel to ESIM entity */
1162 {
1163 if ((hCommESIM = vsi_c_open (VSI_CALLER ESIM_NAME)) < VSI_OK)
1164 return PEI_ERROR;
1165 }
1166 #endif
1167 if (hCommMM < VSI_OK)
1168 {
1169 if ((hCommMM = vsi_c_open (VSI_CALLER MM_NAME)) < VSI_OK)
1170 return PEI_ERROR;
1171 }
1172
1173 if (hCommCC < VSI_OK)
1174 {
1175 if ((hCommCC = vsi_c_open (VSI_CALLER CC_NAME)) < VSI_OK)
1176 return PEI_ERROR;
1177 }
1178
1179 if (hCommSS < VSI_OK)
1180 {
1181 if ((hCommSS = vsi_c_open (VSI_CALLER SS_NAME)) < VSI_OK)
1182 return PEI_ERROR;
1183 }
1184
1185 if (hCommSMS < VSI_OK)
1186 {
1187 if ((hCommSMS = vsi_c_open (VSI_CALLER SMS_NAME)) < VSI_OK)
1188 return PEI_ERROR;
1189 }
1190
1191 #ifdef UART
1192 if (hCommUART < VSI_OK)
1193 {
1194 if ((hCommUART = vsi_c_open (VSI_CALLER UART_NAME)) < VSI_OK)
1195 return PEI_ERROR;
1196 }
1197 #endif
1198
1199 if (hCommPL < VSI_OK)
1200 {
1201 if ((hCommPL = vsi_c_open (VSI_CALLER PL_NAME)) < VSI_OK)
1202 return PEI_ERROR;
1203 }
1204
1205 #if defined FF_EOTD
1206 if (hCommLC < VSI_OK)
1207 {
1208 if ((hCommLC = vsi_c_open (VSI_CALLER LC_NAME)) < VSI_OK)
1209 return PEI_ERROR;
1210 }
1211 #endif
1212
1213 #ifdef FF_TCP_IP
1214 /*#ifndef _SIMULATION_*/
1215 if (hCommAAA < VSI_OK)
1216 {
1217 if ((hCommAAA = vsi_c_open (VSI_CALLER AAA_NAME)) < VSI_OK)
1218 return PEI_ERROR;
1219 }
1220 /*#endif*/
1221 #endif
1222
1223 #if defined FF_TRACE_OVER_MTST
1224 if (hCommMTST < VSI_OK)
1225 {
1226 if ((hCommMTST = vsi_c_open (VSI_CALLER "MTST")) < VSI_OK)
1227 return PEI_ERROR;
1228 }
1229 #endif
1230
1231 if (hCommACI < VSI_OK)
1232 {
1233 if ((hCommACI = vsi_c_open (VSI_CALLER ACI_NAME)) < VSI_OK)
1234 return PEI_ERROR;
1235 }
1236
1237 #ifdef FAX_AND_DATA
1238 #ifndef USE_L1FD_FUNC_INTERFACE
1239 if (hCommRA < VSI_OK)
1240 {
1241 if ((hCommRA = vsi_c_open (VSI_CALLER RA_NAME)) < VSI_OK)
1242 return PEI_ERROR;
1243 }
1244 #endif
1245 if (hCommL2R < VSI_OK)
1246 {
1247 if ((hCommL2R = vsi_c_open (VSI_CALLER L2R_NAME)) < VSI_OK)
1248 return PEI_ERROR;
1249 }
1250
1251 if (hCommTRA < VSI_OK)
1252 {
1253 /* TRA_NAME i.e "L2R" on account of TRA being no real entity */
1254 if ((hCommTRA = vsi_c_open (VSI_CALLER TRA_NAME)) < VSI_OK)
1255 return PEI_ERROR;
1256 }
1257
1258 #ifdef FF_FAX
1259 if (hCommT30 < VSI_OK)
1260 {
1261 if ((hCommT30 = vsi_c_open (VSI_CALLER T30_NAME)) < VSI_OK)
1262 return PEI_ERROR;
1263 }
1264 #endif /* FF_FAX */
1265 #endif /* FAX_AND_DATA */
1266
1267 #ifdef FF_GPF_TCPIP
1268 if (hCommTCPIP < VSI_OK)
1269 {
1270 if ((hCommTCPIP = vsi_c_open (VSI_CALLER TCPIP_NAME)) < VSI_OK)
1271 return PEI_ERROR;
1272 }
1273 #endif
1274
1275 #if defined (CO_TCPIP_TESTAPP) || defined (CO_BAT_TESTAPP)
1276 if (hCommAPP < VSI_OK)
1277 {
1278 if ((hCommAPP = vsi_c_open (VSI_CALLER APP_NAME)) < VSI_OK)
1279 return PEI_ERROR;
1280 }
1281 #endif
1282
1283 #ifdef CO_UDP_IP
1284 if (hCommUDP < VSI_OK)
1285 {
1286 if ((hCommUDP = vsi_c_open (VSI_CALLER UDP_NAME)) < VSI_OK)
1287 return PEI_ERROR;
1288 }
1289 if (hCommIP < VSI_OK)
1290 {
1291 if ((hCommIP = vsi_c_open (VSI_CALLER IP_NAME)) < VSI_OK)
1292 return PEI_ERROR;
1293 }
1294 #endif
1295
1296 #ifdef FF_WAP
1297 if (hCommWAP < VSI_OK)
1298 {
1299 if ((hCommWAP = vsi_c_open (VSI_CALLER WAP_NAME)) < VSI_OK)
1300 return PEI_ERROR;
1301 }
1302 #endif
1303
1304 #if defined (FF_WAP) || defined (GPRS) || defined (FF_SAT_E)
1305 if (hCommPPP < VSI_OK)
1306 {
1307 if ((hCommPPP = vsi_c_open (VSI_CALLER PPP_NAME)) < VSI_OK)
1308 return PEI_ERROR;
1309 }
1310 #endif
1311
1312 #ifdef FF_EM_MODE
1313 if (hCommRR < VSI_OK)
1314 {
1315 if ((hCommRR = vsi_c_open (VSI_CALLER RR_NAME)) < VSI_OK)
1316 return PEI_ERROR;
1317 }
1318 #endif /* FF_EM_MODE */
1319
1320 #if defined (GPRS) AND defined (DTI)
1321 if (hCommGMM < VSI_OK)
1322 {
1323 if ((hCommGMM = vsi_c_open (VSI_CALLER GMM_NAME)) < VSI_OK)
1324 return PEI_ERROR;
1325 }
1326 if (hCommSM < VSI_OK)
1327 {
1328 if ((hCommSM = vsi_c_open (VSI_CALLER SM_NAME)) < VSI_OK)
1329 return PEI_ERROR;
1330 }
1331 if (hCommUPM < VSI_OK)
1332 {
1333 if ((hCommUPM = vsi_c_open (VSI_CALLER UPM_NAME)) < VSI_OK)
1334 return PEI_ERROR;
1335 }
1336 if (hCommSNDCP < VSI_OK)
1337 {
1338 if ((hCommSNDCP = vsi_c_open (VSI_CALLER SNDCP_NAME)) < VSI_OK)
1339 return PEI_ERROR;
1340 }
1341
1342 #ifdef FF_PKTIO
1343 if (hCommPKTIO < VSI_OK)
1344 {
1345 if ((hCommPKTIO = vsi_c_open (VSI_CALLER PKTIO_NAME)) < VSI_OK)
1346 {
1347 TRACE_EVENT ("cannot open PKTIO");
1348 return PEI_ERROR;
1349 }
1350 }
1351 #endif
1352 #endif /* GPRS */
1353 #ifdef FF_PSI
1354 if (hCommPSI < VSI_OK)
1355 {
1356 if ((hCommPSI = vsi_c_open (VSI_CALLER PSI_NAME)) < VSI_OK)
1357 {
1358 TRACE_EVENT ("cannot open PSI");
1359 return PEI_ERROR;
1360 }
1361 }
1362 #endif /*FF_PSI*/
1363 #ifdef BT_ADAPTER
1364 if (hCommBTI < VSI_OK)
1365 {
1366 if ((hCommBTI = vsi_c_open (VSI_CALLER BTI_NAME)) < VSI_OK)
1367 return PEI_ERROR;
1368 }
1369 #endif /* BT_ADAPTER */
1370
1371 #ifdef FF_GPF_TCPIP
1372 if (hCommDCM < VSI_OK)
1373 {
1374 if ((hCommDCM = vsi_c_open (VSI_CALLER DCM_NAME)) < VSI_OK)
1375 return PEI_ERROR;
1376 }
1377 #endif /* FF_GPF_TCPIP */
1378
1379 if (hCommL1 < VSI_OK)
1380 {
1381 if ((hCommL1 = vsi_c_open (VSI_CALLER L1_NAME)) < VSI_OK)
1382 return PEI_ERROR;
1383 }
1384
1385 #endif /* TI_PS_HCOMM_CHANGE */
1386
1387 #ifdef DTI
1388 #ifdef _SIMULATION_
1389 /*
1390 * initialize dtilib for this entity
1391 */
1392 aci_hDTI = dti_init (
1393 4,
1394 handle,
1395 DTI_DEFAULT_OPTIONS,
1396 aci_pei_sig_callback
1397 );
1398 #else
1399 /*
1400 * initialize dtilib for this entity
1401 */
1402 aci_hDTI = dti_init (
1403 ACI_INSTANCES * UART_INSTANCES,
1404 handle,
1405 DTI_DEFAULT_OPTIONS,
1406 aci_pei_sig_callback
1407 );
1408 #endif
1409 #endif /* DTI */
1410
1411 #ifdef DTI
1412 if(aci_hDTI EQ NULL)
1413 {
1414 TRACE_EVENT ("ACI DTI handle is 0");
1415 return PEI_ERROR;
1416 }
1417 #endif
1418
1419 #ifdef SMI
1420 /*
1421 * initialize the slim man machine interface
1422 */
1423 if (_pei_init () EQ PEI_ERROR)
1424 return PEI_ERROR;
1425 #endif
1426
1427 #ifdef ACI
1428 audio_Init ( NULL );
1429 /* rx_Init( ) is not needed at the moment for ATI only version...
1430 causes the software not to start because it needs CST stack to be started first...
1431 rx_Init ( NULL ); */
1432 pwr_Init ( NULL );
1433 #endif
1434
1435
1436 /*
1437 * Initialize BT_ADAPTER
1438 */
1439 #if defined(FF_ATI) && defined(BT_ADAPTER)
1440 if (btiaci_init(aci_handle) EQ BTI_NAK)
1441 return PEI_ERROR;
1442 btiaci_at_init_req();
1443 #endif
1444
1445 #ifdef FF_ATI
1446 init_ati ();
1447 #endif /* FF_ATI */
1448
1449 #ifdef UART
1450 cmhUART_lst_init ();
1451 #endif
1452 #ifdef DTI
1453 psaACI_Init();
1454 dti_cntrl_init();
1455 #endif
1456 #if defined (FF_PSI) AND defined (DTI)
1457 cmhPSI_lst_init();
1458 #endif /*FF_PSI*/
1459 /*
1460 * initialize CMH's
1461 */
1462 cmh_Init ();
1463 cmh_Reset ( CMD_SRC_LCL, FALSE );
1464 #ifdef FF_ATI
1465 cmh_Reset ( CMD_SRC_ATI_1, FALSE );
1466 cmh_Reset ( CMD_SRC_ATI_2, FALSE );
1467 cmh_Reset ( CMD_SRC_ATI_3, FALSE );
1468 cmh_Reset ( CMD_SRC_ATI_4, FALSE );
1469 #ifdef SIM_TOOLKIT
1470 cmh_Reset ( CMD_SRC_ATI_5, FALSE );
1471 #endif /* SIM_TOOLKIT */
1472 #if defined FF_EOTD OR defined _SIMULATION_
1473 cmh_Reset ( CMD_SRC_ATI_6, FALSE );
1474 #endif /* FF_EOTD */
1475 #endif /* FF_ATI */
1476
1477 /*
1478 * initialize PSA's
1479 */
1480 #if defined (SIM_TOOLKIT)
1481 psaSAT_Init(); /* has to be done first! */
1482 #endif
1483 psaSS_Init();
1484 #ifdef ACI
1485 psaMMI_Init();
1486 #endif
1487 psaCC_Init();
1488 psaMM_Init();
1489 psaSIM_Init(ACI_INIT_TYPE_ALL);
1490 psaMMI_Init();
1491 psaSMS_Init();
1492
1493 #ifdef FAX_AND_DATA
1494 psaRA_Init();
1495 psaL2R_Init();
1496 #ifdef FF_FAX
1497 psaT30_Init();
1498 #endif /* FF_FAX */
1499 #endif /* FAX_AND_DATA */
1500
1501 #ifdef GPRS
1502 psa_GPRSInit();
1503 #endif /* GPRS */
1504
1505 #if defined (FF_WAP) || defined (FF_PPP) || defined(FF_GPF_TCPIP)|| defined (FF_SAT_E)
1506 psaPPP_Init();
1507 #endif /* (FF_WAP) (FF_PPP) (FF_GPF_TCPIP) (FF_SAT_E) */
1508
1509 #if defined(CO_UDP_IP) || defined(FF_GPF_TCPIP)
1510 psaTCPIP_Init();
1511 #endif /* CO_UDP_IP || FF_GPF_TCPIP */
1512
1513 #if defined(FF_GPF_TCPIP)
1514 dcm_init() ;
1515 #endif /* FF_GPF_TCPIP */
1516
1517
1518 #ifdef AT_ADAPTER
1519 psaBTI_Init();
1520 #endif /* AT_ADAPTER */
1521
1522 /*
1523 * Initialize Message Coder Decoder
1524 */
1525 ccd_init ();
1526 /*
1527 * Initialize the UART module
1528 */
1529 #ifdef FF_ATI
1530 #ifdef UART
1531 urt_init ();
1532 #endif
1533 ati_cmd_init ();
1534 #endif
1535
1536 /*
1537 * Initialize Advice of Charge Module
1538 */
1539 aoc_init_calltable ();
1540
1541 /*
1542 * Initialize phonebook
1543 */
1544 #ifdef TI_PS_FFS_PHB
1545 pb_init ();
1546 #else
1547 phb_Init ();
1548 #endif
1549 rdlPrm_init();
1550
1551 /* The high level audio driver is initialised here */
1552 hl_audio_drv_init();
1553
1554 #if defined(_TARGET_)
1555 cmhCC_rd_mode_FFS(AUTOM_REP_NOT_PRESENT,READ_RDLmode); /* read redial mode from FFS */
1556 #endif /* _TARGET_*/
1557
1558 #ifdef DTI
1559 #ifdef _SIMULATION_
1560 #ifdef FF_ATI_BAT
1561 ati_bat_reset();
1562 #endif
1563 ati_src_tst_init( CMD_SRC_EXT );
1564 #endif
1565 #endif
1566
1567 #if defined FF_EOTD
1568 ati_src_lc_init( CMD_SRC_EXT );
1569 #endif /* FF_EOTD */
1570
1571 /* identify ourselves in the boot message output */
1572 vsi_o_ttrace(VSI_CALLER TC_SYSTEM, firmware_version_str);
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 */