📄 mmisimtoolkit.c
字号:
/* SPR#1700 - DS - Commented out code below. Checks in call() in mmiCall.c ensure
* a NULL string is not sent to info_dialog
*/
data->call_setup_parameter->TextString = sat_create_TEXT_ASCIIZ(&sat_command->c.call.info2);
#ifdef NO_ASCIIZ/*MC SPR 940/2 Add tag to Unicode strings so info dialogue displays them correctly*/
sat_add_unicode_tag_if_needed(data->call_setup_parameter->TextString2);
#endif
}
/* add end */
break;
case SAT_CALL_RESULT:
if (data->call_setup_parameter EQ NULL)
{
/* we are NOT in a SETUP CALL session;this is a "normal" Call Result */
TRACE_EVENT("SAT_CALL_RESULT a");
/*
* --> display alpha identifier if available
*/
TRACE_EVENT_P1("Redial Time %d",sat_command->c.ccres.redialTime);
if ((sat_command->c.ccres.info.len NEQ 0) &&
(sat_command->c.ccres.info.len NEQ (U8)-1))
{
/*
* Setup an editor to display a string
*/
SmsSend_loadEditDefault(&data->editor_data);
data->editor_data.LeftSoftKey = TxtNull;
data->editor_data.AlternateLeftSoftKey = TxtNull;
data->editor_data.RightSoftKey = TxtNull;
data->editor_data.hide = FALSE;
data->editor_data.mode = E_EDIT_READ_ONLY_MODE;
data->editor_data.timeout = FOREVER;
data->editor_data.Identifier = event;
data->editor_data.Callback = (T_EDIT_CB)sat_info_cb;
data->editor_data.destroyEditor = TRUE;
data->editor_data.TextId = TxtNull;
data->editor_data.TextString =
(char *)sat_create_TEXT_ASCIIZ (&sat_command->c.ccres.info);
data->editor_data.min_enter = 0;
data->info_win = editor_start(win, &data->editor_data);
}
/*NM 100702
SAT initiate a setup call,
we want to make sure that instead of showing nothing
on the screen do have a simple indication of MO-call
*/
else
{
SmsSend_loadEditDefault(&data->editor_data);
data->editor_data.LeftSoftKey = TxtNull;
data->editor_data.AlternateLeftSoftKey = TxtNull;
data->editor_data.RightSoftKey = TxtNull;
data->editor_data.hide = FALSE;
data->editor_data.mode = E_EDIT_READ_ONLY_MODE;
data->editor_data.timeout = FOREVER;
data->editor_data.Identifier = event;
data->editor_data.Callback = (T_EDIT_CB)sat_info_cb;
data->editor_data.destroyEditor = TRUE;
data->editor_data.TextString = NULL;
data->editor_data.TextId = TxtOutgoing;
data->editor_data.min_enter = 0;
data->info_win = editor_start(win, &data->editor_data);
}
/*NM 100702 END*/
}
else
{
/* we are in a SETUP CALL session;this is a SATN return */
U8 general_result;
U8 additional_info;
TRACE_EVENT("SAT_CALL_RESULT b");
/* process result of a call setup */
general_result = (U8)(sat_command->c.ccres.redialTime);
additional_info = (U8)(sat_command->c.ccres.callId);
if (((general_result & (U8)0xF0) EQ (U8)0x00) ||
((general_result & (U8)0xF0) EQ (U8)0x10))
{
/* command has been performed */
/*
* destroying the display of SETUP MENU will focus the idle screen (in order to show the incall info)
* furthermore it's necessary to keep track of the used resources
*/
TRACE_EVENT("destroy SETUP menu");
SEND_EVENT (sat_get_setup_menu_win(), SAT_EXIT, 0, NULL);
return;
}
else if ((general_result & (U8)0xF0) EQ (U8)0x20)
{
/* command failed: may be worth to retry */
switch (general_result)
{
case 0x20: /* ME currently unable to process command */
TRACE_EVENT("SAT: ME unable");
break;
case 0x21: /* NW currently unable to process command */
TRACE_EVENT("SAT: NW unable");
if ((additional_info EQ (U8)CAUSE_USER_BUSY) &&
(data->call_setup_parameter NEQ NULL))
{
SEND_EVENT (sat_get_call_setup_win(), SAT_CALL_REDIAL, 0, data->call_setup_parameter); /* redial */
return; /* do NOT release the call setup parameter */
}
break;
case 0x22: /* user rejected call setup */
TRACE_EVENT("user rejected call setup");
case 0x23: /* user cleared down call */
TRACE_EVENT("user cleared down call");
default:
TRACE_EVENT("default reason");
break;
}
}
else if ((general_result & (U8)0xF0) EQ (U8)0x30)
{
/* command failed: not worth to retry with identical command */
TRACE_EVENT("SAT_CALL_RESULT permanent problem");
/* await SAT_SESSION_END in order to react */
}
else
{
TRACE_EVENT("SAT_CALL_RESULT unexp. result code");
}
SEND_EVENT (win, SAT_CALL_END, 0, NULL); /* release the call setup parameter */
}
break;
case SAT_CALL_ALERT:
TRACE_EVENT("SAT_CALL_ALERT");
if (data->call_setup_parameter EQ NULL)
{
/* in case we are called withoud previous CALL_SETUP (which shouldn't happen!) */
data->call_setup_parameter =
(T_SAT_call_setup_parameter *)ALLOC_MEMORY (sizeof(T_SAT_call_setup_parameter));
/* provide an empty string; NULL would crash in info_dialog() */
sat_command->c.ccres.info.len = 0;
//JVJE data->call_setup_parameter->TextStringUCS2 = sat_create_TEXT_UCODE(&sat_command->c.ccres.info);
data->call_setup_parameter->TextString = sat_create_TEXT_ASCIIZ(&sat_command->c.ccres.info);
}
/* gather callId and redialTime */
data->call_setup_parameter->callId = sat_command->c.ccres.callId;
//data->call_setup_parameter->redialTime = sat_command->c.ccres.redialTime;
data->call_setup_parameter->redialTime = 0x0000; //not redial,zhaowm,2002.02.06
/* start a dialog to accept or reject the call */
sat_win = sat_call_setup_create(data->win);
if (sat_win)
{
data->sat_command = sat_command;
SEND_EVENT (sat_win, event,0,data->call_setup_parameter);
}
else
{
sat_res[SAT_ERR_INDEX] = SAT_RES_IMPOSSIBLE;
sat_res[SAT_AI_INDEX] = SatResAiNoCause;
sat_done (sat_command, sat_res, sizeof(T_SAT_RES));
}
break;
case SAT_SESSION_END:
ETRACE(sprintf(buf, "SAT_SESSION_END %d", data->active_sat_session));
data->active_sat_session = event;
if (data->info_win NEQ NULL)
{
/* destroy any infoscreen */
SEND_EVENT (data->info_win, E_EDITOR_DEINIT, 0, NULL);
data->info_win = NULL;
}
#if 0
/* when a session has ended: recreate the SETUP MENU (if any) */
if ( g_sim_toolkit_data->sat_setup_menu_win != NULL) //zhaowm 2003.1.6
SEND_EVENT (sat_get_setup_menu_win(), SAT_EXIT, 0, NULL);
#endif
/* when a session has ended: recreate the SETUP MENU (if any) */
/* zy checkin 2003-04-16
* Marcus: Issue 1057: 21/01/2003: Made SEND_EVENT conditional on
* call_SATCall being FALSE. If TRUE then SAT_RETURN event will be sent
* by MmiCall.c when the call is terminated.
*/
if (call_SATCall == FALSE)
{
/* Robert.Chen changed, 2004-02-25, from TI RITA release TCS2112 */
#if 0
SEND_EVENT (sat_get_setup_menu_win(), SAT_RETURN, 0, NULL); /* recreate the SETUP MENU */
#endif
/* Marcus: Issue 1812: 13/03/2003: Start */
if (sat_call_active)
{
sat_call_active = FALSE;
SEND_EVENT (sat_get_setup_menu_win(), SAT_EXIT, 0, NULL);
}
else
{
SEND_EVENT (sat_get_setup_menu_win(), SAT_RETURN, 0, NULL); /* recreate the SETUP MENU */
}
/* Marcus: Issue 1812: 13/03/2003: End */
/* change end */
}
break;
case SAT_CALL_END:
TRACE_EVENT("SAT_CALL_END");
if (data->call_setup_parameter NEQ NULL)
{
/* release the call setup parameters */
// sat_destroy_TEXT_UCODE(data->call_setup_parameter->TextStringUCS2);
sat_destroy_TEXT_ASCIIZ(data->call_setup_parameter->TextString);
FREE_MEMORY ((U8 *)data->call_setup_parameter, sizeof (T_SAT_call_setup_parameter));
data->call_setup_parameter = NULL;
SEND_EVENT (sat_get_call_setup_win(), event, 0, NULL); /* destroy the window */
}
/* zy 2003-04-16 checkin SPR#1779 - DS - Destroy any information screen.
*/
if (data->info_win NEQ NULL)
{
TRACE_EVENT("Destroy the info screen");
/* destroy any infoscreen */
SEND_EVENT (data->info_win, E_EDITOR_DEINIT, 0, NULL);
data->info_win = NULL;
}
break;
case SAT_UNKNOWN:
TRACE_EVENT("SAT_UNKNOWN");
/*
* unknown SAT commands are rejected
*/
sat_res[SAT_ERR_INDEX] = SAT_RES_IMPOSSIBLE;
sat_res[SAT_AI_INDEX] = SatResAiNoService;
sat_done (sat_command, sat_res, sizeof(T_SAT_RES));
break;
case SAT_REFRESH:
TRACE_EVENT("SAT_REFRESH");
#ifdef MMI_HOMEZONE_ENABLED
{
int i;
for (i=0;i<sat_command->c.refFiles.files_nr;i++)
{
switch(sat_command->c.refFiles.files[i])
{
case HZ_SIM_PARAMETERS:
case HZ_SIM_CELL_CACHE:
case HZ_SIM_CELL_CACHE+1:
case HZ_SIM_CELL_CACHE+2:
case HZ_SIM_CELL_CACHE+3:
/* Read new sim fields into memory. SPR877 - SH - Parameter specifies that SIM fields
* should be read in, even if they were already read at startup. */
homezoneReadSim(HZ_READ_SIM_AGAIN);
return;
default:
break;
}
}
}
#endif
break;
case SAT_SET_EVENTS:
break;
#ifdef MMI_WAP_ENABLED
case SAT_LAUNCH_BROWSER:
break;
#endif
/* zy 2003-04-16 checkin SPR#1779 - DS - 'SIM busy' error condition.
*/
/* Robert.Chen added, 2004-02-28, imported from TI RITA release TCS2112 */
/* following for supporting SAT class E commands */
case SAT_OPEN_CHANNEL:
TRACE_EVENT("SAT_OPEN_CHANNEL");
/*
* Create and initiate Open Channel Window
*/
sat_win = sat_class_e_create (data->win);
if (sat_win)
{
data->sat_command = sat_command;
SEND_EVENT (sat_win, event, 0, data->sat_command);
}
else
{
sat_res[SAT_ERR_INDEX] = SAT_RES_IMPOSSIBLE;
sat_res[SAT_AI_INDEX] = SatResAiNoCause;
sat_done (sat_command, sat_res);
}
break;
case SAT_CLOSE_CHANNEL:
TRACE_EVENT("SAT_CLOSE_CHANNEL");
/*
* Create and initiate Close Channel window
*/
sat_win = sat_class_e_create (data->win);
if (sat_win)
{
data->sat_command = sat_command;
SEND_EVENT (sat_win, event, 0, data->sat_command);
}
else
{
sat_res[SAT_ERR_INDEX] = SAT_RES_IMPOSSIBLE;
sat_res[SAT_AI_INDEX] = SatResAiNoCause;
sat_done (sat_command, sat_res);
}
break;
case SAT_SEND_DATA:
TRACE_EVENT("SAT_SEND_DATA");
/*
* Create and initiate Send Data window
*/
sat_win = sat_class_e_create (data->win);
if (sat_win)
{
data->sat_command = sat_command;
SEND_EVENT (sat_win, event, 0, data->sat_command);
}
else
{
sat_res[SAT_ERR_INDEX] = SAT_RES_IMPOSSIBLE;
sat_res[SAT_AI_INDEX] = SatResAiNoCause;
sat_done (sat_command, sat_res);
}
break;
case SAT_RECEIVE_DATA:
TRACE_EVENT("SAT_RECEIVE_DATA");
/*
* Create and initiate Receive Data window
*/
sat_win = sat_class_e_create (data->win);
if (sat_win)
{
data->sat_command = sat_command;
SEND_EVENT (sat_win, event, 0, data->sat_command);
}
else
{
sat_res[SAT_ERR_INDEX] = SAT_RES_IMPOSSIBLE;
sat_res[SAT_AI_INDEX] = SatResAiNoCause;
sat_done (sat_command, sat_res);
}
break;
/* add end for SAT class E commands */
case SAT_SIM_BUSY:
TRACE_EVENT("SAT_SIM_BUSY");
{
T_DISPLAY_DATA display_info;
/* Display a 3-second information dialog */
/* dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtSoftBack, TxtSimToolkit, TxtError);
dlg_initDisplayData_events( &display_info,NULL, THREE_SECS, KEY_LEFT|KEY_RIGHT );*/
/*2003/12/4, wangyan modify*/
dialog_info_init(&display_info);
display_info.LeftSoftKey = TxtSoftOK;
display_info.RightSoftKey = TxtSoftBack;
display_info.TextId = TxtSimToolkit;
display_info.TextId2 = TxtError;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -