restore.c
来自「mtk wap和mms代码。。适应mtk 25。26平台」· C语言 代码 · 共 1,549 行 · 第 1/4 页
C
1,549 行
guiBuffer = GetCurrGuiBuffer(SCR_RESTORE);
/* check the screen flow is from forward or backward */
if (guiBuffer == NULL)
{
memset(gPhonePassword, 0, (MAX_SIM_SETTING_PASSWD_LEN + 1));
}
/* register the input validation function handler */
RegisterInputBoxValidationFunction(RstrSettingPasswdScrSoftKeyFunc);
/* display the corresponding catergory function */
ShowCategory111Screen(
STR_GLOBAL_OK,
IMG_GLOBAL_OK,
STR_GLOBAL_BACK,
IMG_GLOBAL_BACK,
STR_RESTORE_PHONE,
INPUT_TYPE_NUMERIC_PASSWORD,
gPhonePassword,
(MAX_SIM_SETTING_PASSWD_LEN + 1),
NULL,
NULL);
/* Register function with left/right softkey */
SetCategory111RightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
SetLeftSoftkeyFunction(RstVerifyPhoneLockReq, KEY_EVENT_UP);
/* register the key handler function for the pound key */
SetKeyHandler(RstVerifyPhoneLockReq, KEY_POUND, KEY_EVENT_UP);
gSecuritySetupContext.PasswdLenCheckCallBack = RstVerifyPhoneLockReq;
if (pfnUnicodeStrlen((S8*) gPhonePassword) < MIN_PASSWORD_LENGTH)
{
ChangeLeftSoftkey(0, 0);
ClearKeyHandler(KEY_POUND, KEY_EVENT_UP);
}
}
/*****************************************************************************
* FUNCTION
* RstVerifyPhoneLockReq
* DESCRIPTION
* This function is to send phone lock code to L4 to verify,
* this is left softkey handler for Restore->Enter Phone Lock Code
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void RstVerifyPhoneLockReq(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
historyNode *History;
U8 tempBuffer[(MAX_SIM_SETTING_PASSWD_LEN + 1)];
MYQUEUE Message;
MMIPHONEVERIFYREQ *local_data;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
PRINT_INFORMATION_2((MMI_TRACE_G7_MISC, "[RST Factory] RstVerifyPhoneLockReq()\n"));
/* Validate phonelock password send message to L4 MSG_ID_MMI_VERIFY_PIN_REQ */
if (pfnUnicodeStrlen((S8*) gPhonePassword) < MIN_PASSWORD_LENGTH)
{
/* if the password is invalid display error popup */
DisplayPopup(
(U8*) GetString(STR_INVALID_PINPUKPLOCK_LENGTH),
IMG_GLOBAL_WARNING,
0,
ST_NOTIFYDURATION,
(U8) ERROR_TONE);
if (GetHistoryScrID(SCR_RESTORE, &History) == ST_SUCCESS)
{
if (History->inputBuffer != NULL)
{
memset(History->inputBuffer, 0, ENCODING_LENGTH);
}
if (History->guiBuffer != NULL)
{
memset(History->guiBuffer, 0, 2);
}
}
memset(gPhonePassword, 0, (MAX_SIM_SETTING_PASSWD_LEN + 1));
DeleteUptoScrID(SCR_RESTORE);
}
else
{
ClearInputEventHandler(MMI_DEVICE_ALL);
#ifdef __MMI_TOUCH_SCREEN__
wgui_clear_pen_handlers();
#endif
/* if the password is valid send req to l4 */
Message.oslSrcId = MOD_MMI;
Message.oslDestId = MOD_L4C;
Message.oslMsgId = PRT_MMI_SMU_VERIFY_PIN_REQ;
local_data = (MMIPHONEVERIFYREQ*) OslConstructDataPtr(sizeof(MMIPHONEVERIFYREQ));
memset(local_data->pin, '\0', (MAX_SIM_SETTING_PASSWD_LEN + 1));
memset(local_data->new_pin, '\0', (MAX_SIM_SETTING_PASSWD_LEN + 1));
local_data->pin_type = MMI_SETTING_TYPE_PHONELOCK;
/* Change gInputPhoneLockBuffer to ASCII then copy local_data->pin */
memset(tempBuffer, 0, (MAX_SIM_SETTING_PASSWD_LEN + 1));
UnicodeNToAnsii((S8*) tempBuffer, (S8*) gPhonePassword, (MAX_SIM_SETTING_PASSWD_LEN + 1));
memcpy(local_data->pin, tempBuffer, (MAX_SIM_SETTING_PASSWD_LEN + 1));
Message.oslDataPtr = (oslParaType*) local_data;
Message.oslPeerBuffPtr = NULL;
/* set the protocol handler to handle the response of this request */
gSecuritySetupContext.VerifyPassSuccessCallBack = EntryRstConfirm;
SetProtocolEventHandler(SECSETVerifyPINRsp, PRT_MMI_SMU_VERIFY_PIN_RSP);
OslMsgSendExtQueue(&Message);
}
return;
}
/*****************************************************************************
* FUNCTION
* RstSendRestoreMsgToWap
* DESCRIPTION
* This function is to send MSG_ID_WAP_RESTORE_FACTORY_SETTING_REQ
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void RstSendRestoreMsgToWap(void)
{
#ifdef WAP_SUPPORT
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
MYQUEUE Message;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
Message.oslSrcId = MOD_MMI;
Message.oslDestId = MOD_WAP;
Message.oslMsgId = MSG_ID_WAP_RESTORE_FACTORY_SETTING_REQ;
Message.oslDataPtr = NULL;
Message.oslPeerBuffPtr = NULL;
OslMsgSendExtQueue(&Message);
#endif /* WAP_SUPPORT */
}
/*****************************************************************************
* FUNCTION
* EntryRstConfirm
* DESCRIPTION
* This function is left softkey handler for Yes to reboot
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void EntryRstConfirm(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
#if !defined(__MTK_TARGET__)
DisplayConfirm(
STR_GLOBAL_YES,
IMG_GLOBAL_YES,
STR_GLOBAL_NO,
IMG_GLOBAL_NO,
(PU16) GetString(EM_NOTICE_SUCCESS_REBOOT_TEXT),
IMG_GLOBAL_QUESTION,
WARNING_TONE);
#else /* !defined(__MTK_TARGET__) */
DisplayConfirm(
STR_GLOBAL_YES,
IMG_GLOBAL_YES,
STR_GLOBAL_NO,
IMG_GLOBAL_NO,
(PU16) GetString(STR_SETTING_RESTORE_CONFIRM),
IMG_GLOBAL_QUESTION,
WARNING_TONE);
#endif /* !defined(__MTK_TARGET__) */
/* Register function with left/right softkey */
#ifdef __HALF_SECURE_RESTORE__
if (GetPhoneLock() == MMI_FALSE)
{
SetRightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
}
else
{
SetRightSoftkeyFunction(GoBack2TheHistory, KEY_EVENT_UP);
}
#else /* __HALF_SECURE_RESTORE__ */
SetRightSoftkeyFunction(GoBack2TheHistory, KEY_EVENT_UP);
#endif /* __HALF_SECURE_RESTORE__ */
SetLeftSoftkeyFunction(RstStartRestore, KEY_EVENT_UP);
return;
}
/*****************************************************************************
* FUNCTION
* EntryRstRestoreProcessing
* DESCRIPTION
* This function is Entry function to display restore processing screen
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void EntryRstRestoreProcessing(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
PRINT_INFORMATION_2((MMI_TRACE_G7_MISC, "[RST Factory] EntryRstRestoreProcessing()\n"));
ChangeLeftSoftkey(0, 0);
ChangeRightSoftkey(0, 0);
/* Call Exit Handler */
EntryNewScreen(SCR_RESTORE_PROCESSING, NULL, EntryRstRestoreProcessing, NULL);
ShowCategory66Screen(
STR_MENU_RESTORE,
0,
0,
0,
0,
0,
(PU8) GetString(STR_SETTING_RESTORE_PROCESSING),
IMG_GLOBAL_PROGRESS,
NULL);
/* clear all key handlers so as to restrict duplicate reqs */
ClearInputEventHandler(MMI_DEVICE_ALL);
ClearKeyHandler(KEY_END, KEY_EVENT_UP);
ClearKeyHandler(KEY_END, KEY_EVENT_DOWN);
ClearKeyHandler(KEY_END, KEY_LONG_PRESS);
}
/*****************************************************************************
* FUNCTION
* RstSyncHandler
* DESCRIPTION
* This function is to handle MSG_ID_MMI_EQ_NVRAM_RESET_RSP
* PARAMETERS
* msg [?]
* RETURNS
* void
*****************************************************************************/
void RstSyncHandler(void *msg)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
memset(gAlmQueue, 0xff, sizeof(gAlmQueue));
g_alm_frm_cntx.EnabledAlarms = 0;
#ifdef __MMI_EBOOK_READER__
ebr_frm_restore_default_book_shelf_settings();
#endif /* __MMI_EBOOK_READER__ */
#if !defined(MMI_ON_WIN32) && defined(__J2ME__)
javaFileGenerator(KAL_TRUE);
#endif
#ifdef WAP_SUPPORT
PRINT_INFORMATION_2((MMI_TRACE_G7_MISC, "[RST Factory] RstSyncHandler: Reset WAP\n"));
SetProtocolEventHandler(RstWapRspHdlr, MSG_ID_WAP_RESTORE_FACTORY_SETTING_CNF);
RstSendRestoreMsgToWap();
#else /* WAP_SUPPORT */
PRINT_INFORMATION_2((MMI_TRACE_G7_MISC, "[RST Factory] RstSyncHandler: Reboot\n"));
AlmATPowerReset(MMI_FALSE, 10); /* shutdown system and reboot in 3 seconds. */
#endif /* WAP_SUPPORT */
}
/*****************************************************************************
* FUNCTION
* RstDetachHandler
* DESCRIPTION
* This function is to handle MSG_ID_MMI_NW_PWROFF_DETACH_RSP
* PARAMETERS
* msg [IN] MSG_ID_MMI_NW_PWROFF_DETACH_RSP
* RETURNS
* void
*****************************************************************************/
void RstDetachHandler(void *msg)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
MYQUEUE Message;
MMIEQNVRAMRESETREQ *local_data;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
Message.oslSrcId = MOD_MMI;
Message.oslDestId = MOD_L4C;
Message.oslMsgId = MSG_ID_MMI_EQ_NVRAM_RESET_REQ;
local_data = (MMIEQNVRAMRESETREQ*) OslConstructDataPtr(sizeof(MMIEQNVRAMRESETREQ));
local_data->lid = 0;
local_data->reset_category = NVRAM_RESET_FACTORY;
Message.oslDataPtr = (oslParaType*) local_data;
Message.oslPeerBuffPtr = NULL;
SetProtocolEventHandler(RstSyncHandler, MSG_ID_MMI_EQ_NVRAM_RESET_RSP);
OslMsgSendExtQueue(&Message);
}
/*****************************************************************************
* FUNCTION
* RstStartRestore
* DESCRIPTION
* This function is start to restore settings to factore default
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
#ifdef PLX_APP_SUPPORT
void Pollex_RestoreDefault (void);
#endif
void RstStartRestore(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
MYQUEUE Message;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
EntryRstRestoreProcessing();
/* Lock Nvram Cache Access and never relase */
SetFlashAllNVRAMCatchData(MMI_TRUE);
#ifdef __MMI_USB_SUPPORT__
ClearProtocolEventHandler(PRT_EQ_USB_DETECT_IND);
#endif
#ifdef PLX_APP_SUPPORT
/* Restore Pollex application settings */
Pollex_RestoreDefault ();
#endif
SetProtocolEventHandler(RstDetachHandler, MSG_ID_MMI_NW_PWROFF_DETACH_RSP);
/* Deattach network */
Message.oslSrcId = MOD_MMI;
Message.oslDestId = MOD_L4C;
Message.oslMsgId = MSG_ID_MMI_NW_PWROFF_DETACH_REQ;
Message.oslDataPtr = (oslParaType*) NULL;
Message.oslPeerBuffPtr = NULL;
OslMsgSendExtQueue(&Message);
bStatus = MMI_TRUE;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?