📄 mmipins.c
字号:
edt_data->pin[edt_data->editor_index] = '\0';
/* SPR#1428 - SH - New Editor changes */
#ifdef NEW_EDITOR
ATB_edit_DeleteLeft(edt_data->editor);
#else /* NEW_EDITOR */
edtChar(edt_data->editor_handle,ecBack);
#endif /* NEW_EDITOR */
}
}
}
/*******************************************************************************
$Function: gsm_test
$Description: test if gsm string
$Returns: Status int
$Arguments: window, pin editor attributes
*******************************************************************************/
static int gsm_test(T_MFW_HND win,void * edt_pin)
{
int status;
T_pin_edt * edt_data = (T_pin_edt *)edt_pin;
T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
T_MFW_WIN * win_pin =((T_MFW_HDR *)edt_data->parent_win)->data;
T_pin * pin_data = (T_pin *)win_pin->user; // pin main data
TRACE_FUNCTION("MmiPins:gsm_test");
status = ss_check_ss_string((UBYTE*)edt_data->pin);/* check GSM-String */
switch(status)
{
case MFW_SS_SIM_UNBLCK_PIN:
if(!(edt_data->gsm_state))
{
switch(edt_data->pin_case_edit)
{
case INPUT_PUK1:/* replace * with string id */
if(!(strncmp((char*)edt_data->pin,"**05*",IDENT_GSM_1)))
{
edt_data->gsm_state = TRUE;
strncpy((char*)edt_data->edtbuf,(char*)edt_data->pin,edt_data->editor_index-1);
/* SPR#1428 - SH - New Editor changes */
#ifdef NEW_EDITOR
ATB_edit_Show(edt_data->editor);
#else /* NEW_EDITOR */
edtShow(edt_data->editor_handle);
#endif /* NEW_EDITOR */
}
else
{
edt_data->gsm_state = FALSE;
TRACE_EVENT("dsplClearAll 2");
dspl_ClearAll();
clear_edit_array (edt_data);
pin_edt_destroy(edt_data->pin_edt_win);
SEND_EVENT(pin_data->pin_win,GSM_FAIL,0,NULL);/*entering screeen not allowed */
}
break;
default:
edt_data->gsm_state = FALSE;
TRACE_EVENT("dsplClearAll 3");
dspl_ClearAll();
clear_edit_array (edt_data);
pin_edt_destroy(edt_data->pin_edt_win);
SEND_EVENT(pin_data->pin_win,GSM_FAIL,0,NULL);/*entering screeen not allowed */
break;
}
}
return status;
case MFW_SS_DIAL: /* string not yet detected */
case MFW_SS_USSD: /*JVJ SPR 1040- The short USSD strings should also be
considered in this case, since they can be confused with dialled numbers
*/
edt_data->gsm_state = FALSE;
return status;
default:
TRACE_FUNCTION("MmiPins:default in gsm_test");
edt_data->gsm_state = FALSE;
TRACE_FUNCTION("dsplClearAll 4");
dspl_ClearAll();
clear_edit_array (edt_data);
pin_edt_destroy(edt_data->pin_edt_win);
SEND_EVENT(pin_data->pin_win,GSM_FAIL,0,NULL);/*entering screeen not allowed */
return status;
}
}
/*******************************************************************************
$Function: gsm_sec_execute
$Description: GSM-String will be executed
$Returns: None
$Arguments: window, string
*******************************************************************************/
static void gsm_sec_execute(T_MFW_HND win,void *string)
{
T_pin_edt * edt_data = (T_pin_edt *)string;
T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
T_MFW_WIN * win_pin =((T_MFW_HDR *)edt_data->parent_win)->data;
T_pin * pin_data = (T_pin *)win_pin->user; // pin main data
int result;
TRACE_FUNCTION("MmiPins:gsm_sec_execute");
result = ss_execute_transaction((UBYTE*)edt_data->pin,0);/* ussd_man = 0 while SSD */
TRACE_FUNCTION("dsplClearAll 5");
dspl_ClearAll();
clear_edit_array (edt_data);
pin_edt_destroy(edt_data->pin_edt_win);
switch(result)
{
case MFW_SS_SIM_REG_PW: /* change PIN1/2 */
TRACE_FUNCTION("MmiPins:gsm_sec_execute:MFW_SS_SIM_REG_PW");
break;
case MFW_SS_SIM_UNBLCK_PIN: /* unblock PIN1/2 */
TRACE_FUNCTION("MmiPins:gsm_sec_execute:MFW_SS_SIM_UNBLCK_PIN");
break;
case MFW_SS_FAIL:
TRACE_FUNCTION("MmiPins:gsm_sec_execute:MFW_SS_FAIL");
SEND_EVENT(pin_data->pin_win,GSM_FAIL,0,NULL);/* new PIN and new PIN again are not the same */
break;
default:
break;
}
}
/*******************************************************************************
$Function: pin_edt_kbd_long_cb
$Description: Callback function for keyboard long
$Returns: Status int
$Arguments: window handler event, keyboard control block
*******************************************************************************/
static int pin_edt_kbd_long_cb (T_MFW_EVENT event,T_MFW_KBD * kc)
{
T_MFW_HND win = mfw_parent(mfw_header());
T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
T_pin_edt * edt_data = (T_pin_edt *)win_data->user;//pin edt data
TRACE_FUNCTION("MmiPins:pin_edt_kbd_long_cb");
if ((event & KEY_CLEAR) && (event & KEY_LONG))
{
timStop(edt_data->tim_out_handle); /* stop entering timer */
clear_edit_array(edt_data);
memset(edt_data->pin,'\0',sizeof(edt_data->pin));/* initial string */
edt_data->editor_index = 0;
edt_data->emergency_call = FALSE;
winShow(edt_data->pin_edt_win);
return MFW_EVENT_CONSUMED;
}
return MFW_EVENT_CONSUMED;
}
/*******************************************************************************
$Function: pin_edt_tim_out_cb
$Description: Callback function for timer (watchdog entering)
$Returns: void
$Arguments: window handler event, timer control block
*******************************************************************************/
static void pin_edt_tim_out_cb (T_MFW_EVENT event,T_MFW_TIM * t)
{
T_MFW_HND win = mfw_parent(mfw_header());
T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
T_pin_edt * edt_data = (T_pin_edt *)win_data->user;
T_MFW_WIN * win_pin =((T_MFW_HDR *)edt_data->parent_win)->data;
T_pin * pin_data = (T_pin *)win_pin->user; // pin main data
TRACE_FUNCTION("MmiPins:pin_edt_tim_out_cb");
TRACE_FUNCTION("clear softkey 7");
// clear the softkeys
pin_skClear();
clear_edit_array(edt_data);
// clear the input
/* SPR#1428 - SH - New Editor changes */
#ifdef NEW_EDITOR
ATB_edit_ClearAll(edt_data->editor);
#else /* NEW_EDITOR */
pin_rectClear( &edt_data->editpinAttr.win );
memset(edt_data->pin, '\0', sizeof(edt_data->pin));/* initial string */
#endif /* NEW_EDITOR */
edt_data->editor_index = 0;
edt_data->gsm_state = FALSE;
pin_data->gsm_state = FALSE;
winShow(edt_data->pin_edt_win);
}
/*******************************************************************************
$Function: pin_editor
$Description: Pin editor Dialog Signal Handling function
$Returns: void
$Arguments: window, window handler event, value, parameter
*******************************************************************************/
static void pin_editor(T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
T_pin_edt * edt_data = (T_pin_edt *)win_data->user;
T_pin * pin_data = (T_pin *)parameter;//pin main data
edt_data->pin_case_edit = pin_data->pin_case;
TRACE_FUNCTION("MmiPins:pin_editor");
/*
* depending on event
*/
switch (event)
{
case INPUT_PIN1:
case INPUT_PUK1:
case INPUT_NEW_PIN:
case INPUT_NEW_PIN_AGAIN:
case CARD_REJECTED:
case INSERT_CARD:
case SIM_PLOCK:
case SIM_NLOCK:
case SIM_NSLOCK:
case SIM_SPLOCK:
case SIM_CLOCK:
//SPR#717 - GW - Wrong structures being cleared
memset(edt_data->pin, '\0', sizeof(edt_data->pin));/* initial string */
memset(edt_data->puk, '\0', sizeof(edt_data->puk));
memset(edt_data->new_pin, '\0', sizeof(edt_data->new_pin));
memset(edt_data->old_pin, '\0', sizeof(edt_data->old_pin));
// the coordinate of the editor (enter the pin)
/* SPR#1428 - SH - New Editor changes */
#ifdef NEW_EDITOR
AUI_edit_SetAttr( &edt_data->editorPinAttr, PIN_EDIT_RESET, COLOUR_EDITOR_XX, EDITOR_FONT, 0, ED_CURSOR_UNDERLINE, ATB_DCS_ASCII, (UBYTE *)edt_data->edtbuf, MAX_DIG);
clear_edit_array(edt_data); /* clear editor buffer */
ATB_edit_Init(edt_data->editor);
#else /* NEW_EDITOR */
editor_attr_init( &edt_data->editpinAttr, PIN_EDIT_RESET, edtCurBar1,0,(char*)edt_data->edtbuf,MAX_DIG,COLOUR_EDITOR_XX);
clear_edit_array(edt_data); /* clear editor buffer */
#endif /* NEW_EDITOR */
edt_data->editor_index = 0;
winShow(edt_data->pin_edt_win);
break;
default:
break;
}
}
/*******************************************************************************
$Function: pin_mess_create
$Description: Creation of an instance for the PIN Message dialog.
Type of dialog : SINGLE_DYNAMIC
$Returns: window
$Arguments: parent win
*******************************************************************************/
T_MFW_HND pin_mess_create (T_MFW_HND parent_window)
{
T_pin_mess * data = (T_pin_mess *)ALLOC_MEMORY (sizeof (T_pin_mess));
T_MFW_WIN * win;
data->pin_mess_win = win_create (parent_window, 0, MfwWinVisible, (T_MFW_CB)pin_mess_win_cb);
TRACE_FUNCTION("MmiPins:pin_mess_create");
if (data->pin_mess_win EQ 0)
return 0;
/*
* Create window handler
*/
pin_mess_windows = data->pin_mess_win;
data->mmi_control.dialog = (T_DIALOG_FUNC)pin_messages;
data->mmi_control.data = data;
data->parent_win = parent_window;
win = ((T_MFW_HDR *)data->pin_mess_win)->data;
win->user = (void *) data;
/*
* return window handle
*/
return data->pin_mess_win;
}
/*******************************************************************************
$Function: pin_mess_destroy
$Description: Destroy the pin message dialog.
$Returns: none
$Arguments: win
*******************************************************************************/
void pin_mess_destroy (T_MFW_HND own_window)
{
T_pin_mess * data;
T_MFW_WIN * win;
if (own_window)
{
TRACE_FUNCTION("MmiPins:pin_mess_destroy ");
win = ((T_MFW_HDR *)own_window)->data;
data = (T_pin_mess *)win->user;
if(data)
{
/*
* Delete WIN Handler
*/
pin_mess_windows = 0;
win_delete (data->pin_mess_win);
FREE_MEMORY((void *)data,(sizeof(T_pin_mess)));
}
}
}
/*******************************************************************************
$Function: pin_mess_win_cb
$Description: Callback function for message windows
$Returns: Status int
$Arguments: event, window
*******************************************************************************/
static int pin_mess_win_cb (T_MFW_EVENT event, T_MFW_WIN * win)
{
/*
* Top Window has no output
*/
return 1;
}
/*******************************************************************************
$Function: pin_messages
$Description: Pin message Dialog Handling function
$Returns: none
$Arguments: window, event, value, parameter
*******************************************************************************/
void pin_messages(T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
T_pin_mess * mess_data = (T_pin_mess *)win_data->user;
T_DISPLAY_DATA display_info;
T_MFW_SIM_PIN_STATUS status; //need to check the Pin 1 status
//EF_SIMLCK simlck;MC, not needed SPR 1351
ULONG timcount = TIM_LOCK;
UBYTE i;
char debug[20];
T_pin * pin_data = (T_pin *)parameter;
T_sim_rem * sim_rem_data = (T_sim_rem *)parameter;// sim_rem_data possible too
TRACE_FUNCTION("Mmi.Pins:pin_messages");
sprintf(debug, "Event: %d", event);
TRACE_FUNCTION(debug);
dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtNull, TxtNull, COLOUR_STATUS_PINS);
/*
* depending on signal
*/
switch (event)
{
case PIN1_REQ_ATT:
case PUK1_REQ_ACT_INFO:
case PUK1_REQ_VER_INFO:
case GSM_FAIL:
case NEW_PIN_FAIL:
case PIN_OK_INFO:
case PUK1_UNBL_FAIL_INFO:
case PUK1_UNBL_SUCC:
case PUK1_UNBL_FATAL_ERROR:
case SIM_UNLOCK_OK:
case PIN1_STATUS:
switch(event)
{
case PIN1_REQ_ATT:
pin_data->pin_case = PIN1_REQ;
display_info.TextId = TxtPINFail;
display_info.TextId2 = 0;
if(pin_data->pin_retries EQ 1)
display_info.TextId2 = TxtOneAttemptLeft;
else
display_info.TextId2 = TxtTwoAttemptsLeft;
break;
case PUK1_REQ_ACT_INFO:
pin_data->pin_case = PUK1_R
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -