📄 mmisimtoolkit.c
字号:
MfwSatRefresh | /* refresh SIM fields */
MfwSatDataRefreshed | /*data Refreshed */
MfwSatTextOut| /* display string */
MfwSatGetKey| /* get user keystroke */
MfwSatGetString| /* get user input */
MfwSatPlayTone| /* play audio tone */
MfwSatSetupMenu| /* setup toolkit menu */
MfwSatSelectItem| /* select menu item */
MfwSatSendSMS| /* send short message */
MfwSatSendSS| /* send service command */
MfwSatCall| /* setup a call */
MfwSatSetEvents| /* setup event lists */
MfwSatCcRes| /* call control result */
MfwSatCcAlert /* call control alerting */
#if defined(WAP)
|MfwSatLaunchBrowser
#else
#endif
/* Robert.Chen added, 2004-02-28, imported from TI RITA release TCS2112 */
|MfwSatOpenChannel|
MfwSatCloseChannel|
MfwSatSendData|
MfwSatReceiveData|
MfwSatErrBusy /* SAT error handling */
/* add end */
,
(T_MFW_CB)sim_toolkit_sat_cb, // event callback
data->sat_command); // control block for MFW
/*
* initialize global variables
*/
data->sat_setup_menu_command = NULL;
data->sat_command = NULL;
data->info_win = NULL;
data->call_setup_parameter = NULL;
data->active_sat_session = SAT_SESSION_END;
data->sat_available_on_SIM = FALSE;
data->satCallWithRedial = 0; /*zy 2003-04-16 checkin SPR#1779 - DS - Initialise 'with redial' flag */
sat_mainmenu_label = NULL;
/*
* Initialise MFW
*/
sat_init ((UBYTE *)sat_terminal_profile, (UBYTE)sizeof (sat_terminal_profile));
/*
* return window handle
*/
win_show(data->win);
return data->win;
}
/*******************************************************************************
$Function: sim_toolkit_destroy
$Description: Destroy the sim toolkit dialog.
$Returns: none.
$Arguments:
*******************************************************************************/
static void sim_toolkit_destroy (T_MFW_HND own_window)
{
T_MFW_WIN * win;
T_sim_toolkit * data;
if (own_window)
{
win = ((T_MFW_HDR *)own_window)->data;
data = (T_sim_toolkit *)win->user;
if (data)
{
/*
* Exit SAT and Delete SAT Handler
*/
sat_exit ();
sat_delete (data->sat_handle);
/*
* Delete WIN Handler
*/
win_delete (data->win);
/*
* Free Memory
*/
if (data->sat_setup_menu_command NEQ NULL)
{
FREE_MEMORY ((U8 *)data->sat_setup_menu_command, sizeof (T_SAT_CMD));
data->sat_setup_menu_command = NULL;
}
FREE_MEMORY ((U8 *)data->sat_command, sizeof (T_SAT_CMD)); // c022 rsa
data->sat_command = NULL;
FREE_MEMORY ((U8 *)data, sizeof (T_sim_toolkit));
}
}
}
/*******************************************************************************
$Function: sim_toolkit_exec
$Description: Dialog function for sim toolkit top window.
Handle the SAT commands delivered by MFW<-ACI<-SIM
$Returns: none.
$Arguments:
*******************************************************************************/
static void sim_toolkit_exec (T_MFW_HND win, USHORT event, SHORT value, T_SAT_CMD * sat_command)
{
T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data;
T_sim_toolkit * data = (T_sim_toolkit *)win_data->user;
T_MFW_HND sat_win;
T_SAT_RES sat_res;
TRACE_FUNCTION ("sim_toolkit_exec()");
if (event NEQ SAT_SESSION_END)
data->active_sat_session = event;
switch (event)
{
case SAT_DISPLAY_TEXT:
TRACE_EVENT("SAT_DISPLAY_TEXT");
if (data->info_win NEQ NULL) //zhaowm 2002.12.26
{
/* destroy any infoscreen */
SEND_EVENT (data->info_win, E_EDITOR_DEINIT, 0, NULL);
data->info_win = NULL;
}
/*
* Text with normal priority will be displayed
* only in idle screen and in SAT Menu Item
*/
if ((sat_command->qual & SAT_M_TEXT_HIGH_PRIO) EQ 0)
{
TRACE_EVENT("NOT SAT_M_TEXT_HIGH_PRIO");
/* Check if Idle AND Sat Session are inactiv */
if ((!g_SATsession_is_active)&&(!idleIsFocussed()))
{
TRACE_EVENT("BUSY SCREEN");
/* idle is not in focus and not currently in a SAT session: we are busy elsewhere */
sat_res[SAT_ERR_INDEX] = SAT_RES_BUSY_ME;
sat_res[SAT_AI_INDEX] = SatResAiBusyScreen;
sat_done (sat_command, sat_res, sizeof(T_SAT_RES));
return;
}
}
sat_win = sat_display_text_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, sizeof(T_SAT_RES));
}
break;
case SAT_PLAY_TONE:
TRACE_EVENT("SAT_PLAY_TONE");
/*
* Create and initiate Play Tone Window
*/
sat_win = sat_play_tone_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, sizeof(T_SAT_RES));
}
break;
case SAT_GET_KEY:
TRACE_EVENT("SAT_GET_KEY");
/*
* Create and initiate Get Key Window
*/
sat_win = sat_get_key_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, sizeof(T_SAT_RES));
}
break;
case SAT_GET_STRING:
TRACE_EVENT("SAT_GET_STRING");
/*
* Create and initiate Get String Window
*/
sat_win = sat_get_string_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, sizeof(T_SAT_RES));
}
break;
// c016 rsa
case SAT_SETUP_MENU:
TRACE_EVENT("SAT_SETUP_MENU");
/* Robert.Chen added, 2004-02-28, imported from TI RITA release TCS2112 */
sat_call_active = FALSE; // Marcus: Issue 1812: 13/03/2003
/* add end */
//SAT is on the SIM available
data->sat_available_on_SIM = TRUE;
/*
* initiate Setup Menu
*/
sat_setup_menu_proc(sat_command);
sat_res[SAT_ERR_INDEX] = SatResSuccess;
sat_res[SAT_AI_INDEX] = SatResAiNoCause;
sat_done (sat_command, sat_res, sizeof(T_SAT_RES));
break;
case SAT_SELECT_ITEM:
TRACE_EVENT("SAT_SELECT_ITEM");
/*
* Create and initiate select item Window
*/
sat_win = sat_select_item_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, sizeof(T_SAT_RES));
}
break;
// end c016 rsa
// c001 xas
case SAT_SEND_SMS:
TRACE_EVENT("SAT_SEND_SMS");
/*
* --> display alpha identifier if available
*/
if ((sat_command->c.sms.info.len NEQ 0) &&
(sat_command->c.sms.info.len NEQ (U8)-1))
{
/*
* Setup an editor to display a string
*/
data->editor_data.LeftSoftKey = TxtNull;
data->editor_data.AlternateLeftSoftKey = TxtNull;
data->editor_data.RightSoftKey = TxtNull;
data->editor_data.hide = FALSE;
data->editor_data.mode = ONLYREAD_MODE;// E_EDIT_READ_ONLY_MODE;
data->editor_data.timeout = FOREVER;
data->editor_data.Identifier = event;
data->editor_data.destroyEditor = TRUE;
data->editor_data.Callback = (T_EDIT_CB)sat_info_cb;
data->editor_data.TextString =
(char *)sat_create_TEXT_ASCIIZ (&sat_command->c.sms.info);
data->editor_data.min_enter = 0;
data->info_win = editor_start(win, &data->editor_data);
}
break;
case SAT_SEND_SS:
TRACE_EVENT("SAT_SEND_SS");
/*
* --> display alpha identifier if available
*/
if ((sat_command->c.ss.info.len NEQ 0) &&
(sat_command->c.ss.info.len NEQ (U8)-1))
{
/*
* Setup an editor to display a string
*/
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 =
(char *)sat_create_TEXT_ASCIIZ (&sat_command->c.ss.info);
data->editor_data.min_enter = 0;
data->info_win = editor_start(win, &data->editor_data);
}
break;
// end c001 xas
case SAT_SETUP_CALL:
TRACE_EVENT("SAT_SETUP_CALL");
TRACE_EVENT_P2("Redial durUnit %d durValue %d",
sat_command->c.call.durUnit,sat_command->c.call.durValue);
data->sat_command = sat_command;
cmd1 = sat_command;//zhaowm,2002.0620
/* create parameter space for call, or reuse old */
if (data->call_setup_parameter EQ NULL)
{
data->call_setup_parameter =
(T_SAT_call_setup_parameter *)ALLOC_MEMORY (sizeof(T_SAT_call_setup_parameter));
}
/*zy 2003-04-16 checkin SPR#1779 - DS - If command qualifier is set to 'with redial' (01, 03 or 05) set a global redial flag */
if ( (sat_command->qual & 0x01) == TRUE )
{
if (sat_command->qual > 0x05)
{
TRACE_EVENT("Invalid call command qualifier!");
}
else
{
set_sat_redial_flag(1);
}
}
/*end of zy checkin*/
/* gather the name of the called party (if any) */
if ((sat_command->c.call.info.len NEQ 0) &&
(sat_command->c.call.info.len NEQ (U8)-1))
{
//JVJE data->call_setup_parameter->TextStringUCS2 = sat_create_TEXT_UCODE(&sat_command->c.call.info);
data->call_setup_parameter->TextString = sat_create_TEXT_ASCIIZ(&sat_command->c.call.info);
}
else
{
/* provide an empty string; NULL would crash in info_dialog() */
sat_command->c.call.info.len = 0;
//JVJE data->call_setup_parameter->TextStringUCS2 = sat_create_TEXT_UCODE(&sat_command->c.call.info);
data->call_setup_parameter->TextString = sat_create_TEXT_ASCIIZ(&sat_command->c.call.info);
}
/* Robert.Chen added, 2004-02-28, imported from TI RITA release TCS2112 */
/* SPR#1700 - DS - Save info2 (if available). This should be used for the "calling" dialog.
* If not available, info (above) can be used.
*/
/* gather the name of the called party (if any) */
if ((sat_command->c.call.info2.len NEQ 0) &&
(sat_command->c.call.info2.len NEQ (U8)-1))
{
TRACE_EVENT("call.info2 contains data.");
data->call_setup_parameter->TextString2 = 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
}
else
{
/* provide an empty string; NULL would crash in info_dialog() */
TRACE_EVENT("call.info2 contains no data!");
sat_command->c.call.info2.len = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -