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 + -
显示快捷键?