⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flightmode.c

📁 MTK6226修改平台UI的文件介绍
💻 C
📖 第 1 页 / 共 5 页
字号:
            1,
            UI_POPUP_NOTIFYDURATION_TIME,
            (U8) SUCCESS_TONE);
        DeleteScreenIfPresent(SCR_FLIGHT_MODE_SELECTION);   /* flight mode menu */
        /* save it to NVRAM only and not necessary to send request to L4C */
        g_phnset_cntx.curFlightMode = g_phnset_cntx.selFlightMode;
        PhnsetFlightModeSaveMode();
        DeleteScreenIfPresent(SCR_FLIGHT_MODE_PROGRESS);
        return;
    }

    if ((g_phnset_cntx.selFlightMode != FLIGHTMODE_QUERY) &&
        (g_phnset_cntx.curFlightMode == FLIGHTMODE_QUERY) &&
        (mmi_bootup_get_active_flight_mode() == g_phnset_cntx.selFlightMode))
    {
        DisplayPopup(
            (U8*) GetString(STR_GLOBAL_DONE),
            IMG_GLOBAL_ACTIVATED,
            1,
            UI_POPUP_NOTIFYDURATION_TIME,
            (U8) SUCCESS_TONE);
        DeleteScreenIfPresent(SCR_FLIGHT_MODE_SELECTION);   /* flight mode menu */
        /* save it to NVRAM only and not necessary to send request to L4C */
        g_phnset_cntx.curFlightMode = g_phnset_cntx.selFlightMode;
        PhnsetFlightModeSaveMode();
        DeleteScreenIfPresent(SCR_FLIGHT_MODE_PROGRESS);
        return;
    }

    cfun_state_req = OslConstructDataPtr(sizeof(mmi_nw_cfun_state_req_struct));

    if (g_phnset_cntx.selFlightMode == FLIGHTMODE_OFF)  /* normal mode */
    {
        cfun_state_req->cfun_state = 1;
    }
    else    /* flight mode */
    {
        cfun_state_req->cfun_state = 4;
    }

    SetProtocolEventHandler(PhnsetFlightModeSelectionRsp, PRT_NW_CFUN_STATE_RSP);

    Message.oslMsgId = PRT_NW_CFUN_STATE_REQ;
    Message.oslDataPtr = (oslParaType*) cfun_state_req;
    Message.oslPeerBuffPtr = NULL;
    Message.oslSrcId = MOD_MMI;
    Message.oslDestId = MOD_L4C;

    OslMsgSendExtQueue(&Message);
}


/*****************************************************************************
 * FUNCTION
 *  EntryFlightModeSelectionCnf
 * DESCRIPTION
 *  Confirmation screen of mode switch
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void EntryFlightModeSelectionCnf(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    DisplayConfirm(
        STR_GLOBAL_YES,
        IMG_GLOBAL_YES,
        STR_GLOBAL_NO,
        IMG_GLOBAL_NO,
        get_string(STR_FLIGHT_MODE_CONFIRM),
        IMG_GLOBAL_QUESTION,
        WARNING_TONE);

    SetLeftSoftkeyFunction(mmi_phnset_confirm_to_switch_mode, KEY_EVENT_UP);
    SetRightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);

    /* Play warning tone */
    playRequestedTone(WARNING_TONE);
}


/*****************************************************************************
 * FUNCTION
 *  PhnsetFlightModeSelectionOK
 * DESCRIPTION
 *  Handler for the mode selection by user
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void PhnsetFlightModeSelectionOK(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (g_phnset_cntx.selFlightMode == g_phnset_cntx.curFlightMode)
    {
        /* select mode is the same as current mode, so not necessary to send request to L4C */
        DisplayPopup(
            (U8*) GetString(STR_GLOBAL_DONE),
            IMG_GLOBAL_ACTIVATED,
            1,
            UI_POPUP_NOTIFYDURATION_TIME,
            (U8) SUCCESS_TONE);
        DeleteScreenIfPresent(SCR_FLIGHT_MODE_SELECTION);   /* flight mode menu */
    }
    else
    {
        EntryFlightModeSelectionCnf();
    }
}


/*****************************************************************************
 * FUNCTION
 *  EntryPhnsetFlightMode
 * DESCRIPTION
 *  This function is Entry function for Phone Setup -> Flight Mode
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void EntryPhnsetFlightMode(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    U8 nNumofItem = 3;
    U8 *guiBuffer;
    U16 nStrItemList[3] = {STR_FLIGHT_MODE_NORMAL, STR_FLIGHT_MODE_SILENT, STR_FLIGHT_MODE_QUERY};

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    EntryNewScreen(SCR_FLIGHT_MODE_SELECTION, NULL, EntryPhnsetFlightMode, NULL);

    guiBuffer = GetCurrGuiBuffer(SCR_FLIGHT_MODE_SELECTION);
    RegisterHighlightHandler(HiliteHandlerFlightMode);
    ShowCategory11Screen(
        STR_MENU_FLIGHT_MODE,
        MAIN_MENU_TITLE_SETTINGS_ICON,
        STR_GLOBAL_OK,
        IMG_GLOBAL_OK,
        STR_GLOBAL_BACK,
        IMG_GLOBAL_BACK,
        nNumofItem,
        nStrItemList,
        g_phnset_cntx.curFlightMode,
        guiBuffer);

    SetLeftSoftkeyFunction(PhnsetFlightModeSelectionOK, KEY_EVENT_UP);
    SetRightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
    SetKeyHandler(0, KEY_RIGHT_ARROW, KEY_EVENT_DOWN);
    SetKeyHandler(GoBackHistory, KEY_LEFT_ARROW, KEY_EVENT_DOWN);
}


/*****************************************************************************
 * FUNCTION
 *  PhnsetFlightModeSaveMode
 * DESCRIPTION
 *  Save active mode to NVRAM
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void PhnsetFlightModeSaveMode(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    U8 data[NVRAM_EF_SYS_CACHE_OCTET_SIZE];
    S16 error;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    PRINT_INFORMATION(("@@@@@ Flight mode: save mode @@@@@"));
    data[0] = g_phnset_cntx.curFlightMode;
    data[1] = (U8) mmi_bootup_get_active_flight_mode();
    WriteRecord(NVRAM_EF_SYS_CACHE_OCTET_LID, 2, &data, NVRAM_EF_SYS_CACHE_OCTET_SIZE, &error);
}


/*****************************************************************************
 * FUNCTION
 *  PowerOnFlightMode
 * DESCRIPTION
 *  Process of power on in flight mode
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void PowerOnFlightMode(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    MYQUEUE Message;
    mmi_nw_cfun_state_req_struct *cfun_state_req;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    cfun_state_req = OslConstructDataPtr(sizeof(mmi_nw_cfun_state_req_struct));

    PhnsetFlightModeSaveStatusIconFlags(MMI_TRUE);
    UpdateStatusIcons();

    cfun_state_req->cfun_state = 4;
    g_pwr_context.PowerOnNWStatus |= MMI_NW_STATUS_FLIGHT_MODE; /* 0x04: Flight mode */

    if (g_phnset_cntx.curFlightMode != FLIGHTMODE_QUERY)
    {
        g_phnset_cntx.curFlightMode = FLIGHTMODE_SILENT;
    }

    Message.oslMsgId = PRT_NW_CFUN_STATE_REQ;
    Message.oslDataPtr = (oslParaType*) cfun_state_req;
    Message.oslPeerBuffPtr = NULL;
    Message.oslSrcId = MOD_MMI;
    Message.oslDestId = MOD_L4C;

    OslMsgSendExtQueue(&Message);

    ExitCategory165Screen();                /* StopTimer(POPUP_TIMER); */
    ClearInputEventHandler(MMI_DEVICE_ALL); /* prevent user press key after mode selection in qurey screen */

    /* apply to handphone only */
#if defined(__MMI_BT_HP_SUPPORT__)
    mmi_bt_reset_hw_off();
#endif 

    DeleteScreenIfPresent(GLOBAL_SCR_DUMMY);

    if (g_pwr_context.PowerOnMode == POWER_ON_KEYPAD)   /* diamond, 2005/10/21 Do not play animation for exception power on */
    {
        PhnsetFlightModeSaveMode();
        mmi_bootup_exit_flight_mode_query();
    }
}


/*****************************************************************************
 * FUNCTION
 *  PowerOnNormalMode
 * DESCRIPTION
 *  Process of power on in normal mode
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void PowerOnNormalMode(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    MYQUEUE Message;
    mmi_nw_cfun_state_req_struct *cfun_state_req;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    cfun_state_req = OslConstructDataPtr(sizeof(mmi_nw_cfun_state_req_struct));

    cfun_state_req->cfun_state = 1;
    g_pwr_context.PowerOnNWStatus &= ~MMI_NW_STATUS_FLIGHT_MODE;        /* 0x04 Flight mode */

    if (g_phnset_cntx.curFlightMode != FLIGHTMODE_QUERY)
    {
        g_phnset_cntx.curFlightMode = FLIGHTMODE_OFF;
    }

    Message.oslMsgId = PRT_NW_CFUN_STATE_REQ;
    Message.oslDataPtr = (oslParaType*) cfun_state_req;
    Message.oslPeerBuffPtr = NULL;
    Message.oslSrcId = MOD_MMI;
    Message.oslDestId = MOD_L4C;

    OslMsgSendExtQueue(&Message);

    ExitCategory165Screen();                /* StopTimer(POPUP_TIMER); */
    ClearInputEventHandler(MMI_DEVICE_ALL); /* prevent user press key after mode selection in qurey screen */

    DeleteScreenIfPresent(GLOBAL_SCR_DUMMY);

    if (g_pwr_context.PowerOnMode == POWER_ON_KEYPAD)   /* diamond, 2005/10/21 Do not play animation for exception power on */
    {
        PhnsetFlightModeSaveMode();
        mmi_bootup_exit_flight_mode_query();
    }
}


/*****************************************************************************
 * FUNCTION
 *  EntryQueryFlightModeScreen
 * DESCRIPTION
 *  Flight mode query screen before power on animation
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void EntryQueryFlightModeScreen(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    U8 *guiBuffer;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    g_pwr_context.PowerOnMMIStatus = MMI_POWER_ON_FLIGHT_MODE_QUERY;    /* 0x02: Flight mode screen */

    guiBuffer = GetCurrGuiBuffer(SCR_FLIGHT_MODE_QUERY);

    EntryNewScreen(SCR_FLIGHT_MODE_QUERY, NULL, EntryQueryFlightModeScreen, NULL);

    ShowCategory165Screen_ext(
        STR_GLOBAL_YES,
        IMG_GLOBAL_YES,
        STR_GLOBAL_NO,
        IMG_GLOBAL_NO,
        get_string(STR_MENU_FLIGHT_MODE),
        IMG_GLOBAL_QUESTION,
        10,
        guiBuffer);

    SetCat165TimerExpireFunc(PowerOnNormalMode);

    playRequestedTone(WARNING_TONE);

    /* ShowSubLCDScreen(ShowIdleAppSubLcd); */
    /* no sub-lcd exit handler because of no interrupt in this screen */
#ifdef __MMI_SUBLCD_SHOW_ANALOG_CLOCK__
    if (IsClamClose())
    {
        ShowSubLCDAnalogClockScreen();
    }
    else
    {
        ShowSubLCDLogoString();
    }
#else /* __MMI_SUBLCD_SHOW_ANALOG_CLOCK__ */ 
    ShowCategory301Screen((PU8) GetString(STR_MENU_FLIGHT_MODE), 0, NULL);
#endif /* __MMI_SUBLCD_SHOW_ANALOG_CLOCK__ */ 

    g_phnset_cntx.curFlightMode = FLIGHTMODE_QUERY;

    /* No history to go back */
    /* Always enter normal mode unless the flight mode is selected by pressing LSK (Yes) */
    SetKeyHandler(PowerOnNormalMode, KEY_END, KEY_EVENT_DOWN);

#ifdef __MMI_WLAN_FEATURES__
    SetLeftSoftkeyFunction(mmi_phnset_power_on_query_with_flight_mode, KEY_EVENT_UP);
    SetRightSoftkeyFunction(mmi_phnset_power_on_query_with_normal_mode, KEY_EVENT_UP);
#else
    SetLeftSoftkeyFunction(PowerOnFlightMode, KEY_EVENT_UP);
    SetRightSoftkeyFunction(PowerOnNormalMode, KEY_EVENT_UP);
#endif
}


/*****************************************************************************
 * FUNCTION
 *  PhnsetFlightModeGetLatestActionMode
 * DESCRIPTION
 *  Get latest action mode for exception power on
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
U8 PhnsetFlightModeGetLatestActionMode(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    U8 data[NVRAM_EF_SYS_CACHE_OCTET_SIZE];
    S16 error;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    ReadRecord(NVRAM_EF_SYS_CACHE_OCTET_LID, 2, &data, NVRAM_EF_SYS_CACHE_OCTET_SIZE, &error);
    return data[1];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -