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

📄 flightmode.c

📁 MTK6226修改平台UI的文件介绍
💻 C
📖 第 1 页 / 共 5 页
字号:
    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    EntryNewScreen(SCR_FLIGHT_MODE_PROGRESS, NULL, EntryFlightModeProgress, NULL);
    SetKeyHandler(NULL, KEY_END, KEY_EVENT_DOWN);
    SetKeyHandler(NULL, KEY_END, KEY_EVENT_UP);
    ShowCategory66Screen(
        STR_MENU_FLIGHT_MODE,
        0,
        0,
        0,
        0,
        0,
        (PU8) GetString(STR_FLIGHT_MODE_PROGRESS),
        IMG_FLIGHT_MODE_PROGRESS,
        NULL);
}


/*****************************************************************************
 * FUNCTION
 *  mmi_phnset_flight_mode_camp_on_tone_hdlr
 * DESCRIPTION
 *  Timeout handler to play camp on tone after switch to normal mode
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
static void mmi_phnset_flight_mode_camp_on_tone_hdlr(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (mmi_idle_is_on_idle_screen() == MMI_TRUE || g_keylock_context.IsOnKeyLockCallbackScreen == 1)
    {
        playRequestedTone(CAMP_ON_TONE);
    }
    else
    {
        /* start timer again if */
        StartTimer(
            FLIGHT_MODE_CAMP_ON_TONE_TIMER,
            UI_POPUP_NOTIFYDURATION_TIME,
            mmi_phnset_flight_mode_camp_on_tone_hdlr);
    }
}

#ifdef __MMI_BT_SUPPORT__
static pBOOL btNotReady = MMI_FALSE;
static pBOOL btGotRsp = MMI_FALSE;
#endif /* __MMI_BT_SUPPORT__ */ 


/*****************************************************************************
 * FUNCTION
 *  mmi_phnset_flight_mode_selection_finish
 * DESCRIPTION
 *  Finish to perform mode switch
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_phnset_flight_mode_selection_finish(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    PRINT_INFORMATION(("@@@@@ Flight mode: switch done @@@@@"));

#ifdef __MMI_BT_SUPPORT__
    if (!gSetModeFromMenu)
    {
        /* BT always call this callback after set flight mode */
        /* MMI doesn't have screen for set mode in power on period */
        return;
    }

    if (btGotRsp)
    {
        return;
    }

    StopTimer(FLIGHT_MODE_DEACTIVATE_BT_TIMER);
#endif /* __MMI_BT_SUPPORT__ */ 
    /* do not call this fuction for BT power on by init */
    if (GetActiveScreenId() != SCR_FLIGHT_MODE_PROGRESS)
    {
        DeleteScreenIfPresent(SCR_FLIGHT_MODE_PROGRESS);    /* progressing */
        DeleteScreenIfPresent(SCR_FLIGHT_MODE_SELECTION);   /* flight mode menu */
        DeleteScreenIfPresent(SCR9003_INITIALSETUP);        /* phone setup */
        DeleteScreenIfPresent(SCR9000_SETTINGS);            /* setting */
        DeleteScreenIfPresent(MAIN_MENU_SCREENID);          /* main menu */
        DeleteScreenIfPresent(SCR_SIM_OPTION);              /* sim option menu */
        if (mmi_bootup_is_sim_valid() && mmi_idle_is_on_idle_screen())
        {
            /* already in idle screen because mode switch is interrupted by other application */
            EntryIdleScreen();
        }
        if (g_pwr_context.CurrentServiceType == FULL_SERVICE)
        {
            /* play camp on tone */
            mmi_phnset_flight_mode_camp_on_tone_hdlr();
        }
    }
    else
    {
        DisplayPopupCallBack(
            (PU8) GetString(STR_GLOBAL_DONE),
            IMG_GLOBAL_ACTIVATED,
            1,
            UI_POPUP_NOTIFYDURATION_TIME,
            SUCCESS_TONE,
            DisplayIdleScreen);
        if (IsScreenPresent(SCR_SIM_INSERTION))
        {
            DeleteUptoScrID(SCR_SIM_INSERTION);
        }
        else if (IsScreenPresent(SCR_SIM_BLOCK))
        {
            DeleteUptoScrID(SCR_SIM_BLOCK);
        }
        else
        {
            DeleteUptoScrID(IDLE_SCREEN_ID);
        }

        if (g_pwr_context.CurrentServiceType == FULL_SERVICE)
        {
            /* play camp on tone */
            StartTimer(
                FLIGHT_MODE_CAMP_ON_TONE_TIMER,
                UI_POPUP_NOTIFYDURATION_TIME,
                mmi_phnset_flight_mode_camp_on_tone_hdlr);
        }
    }

    gSetModeFromMenu = MMI_FALSE;
#ifdef __MMI_BT_SUPPORT__
    btGotRsp = MMI_TRUE;
#endif 
}

#ifdef __MMI_BT_SUPPORT__


/*****************************************************************************
 * FUNCTION
 *  mmi_phnset_flight_mode_bt_timeout_hdlr
 * DESCRIPTION
 *  Timeout handler for no response from BT
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
static void mmi_phnset_flight_mode_bt_timeout_hdlr(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    PRINT_INFORMATION(("@@@@@ Flight mode: BT deactivation timeout @@@@@"));

    /* Temporarily don't set BT not ready flag */
    /* btNotReady = MMI_TRUE; */

    mmi_phnset_switch_flight_mode();
}
#endif /* __MMI_BT_SUPPORT__ */ 


/*****************************************************************************
 * FUNCTION
 *  mmi_flight_mode_switch_bluetooth
 * DESCRIPTION
 *  Switch BT after flight mode switch
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_flight_mode_switch_bluetooth(void)
{
#if defined(__MMI_BT_HP_SUPPORT__) || defined(__MMI_BT_SUPPORT__)
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    U8 btSimPresent;
    U8 btChipPresent;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
#ifdef __MMI_BT_HP_SUPPORT__
            btSimPresent = mmi_bootup_is_sim_valid();
#else
    #ifdef __MMI_BT_SUPPORT__
        btSimPresent = 1; /* always turn on */
        #if 0
            #ifdef __MMI_BT_BCHS_SUPPORT__
/* under construction !*/
            #else
/* under construction !*/
            #endif
        #endif /* 0 */
    #endif /* __MMI_BT_SUPPORT__ */
#endif /* __MMI_BT_HP_SUPPORT__ */

#ifdef __MMI_BT_SUPPORT__
    btChipPresent = !btNotReady;
#else
    btChipPresent = 1;
#endif

    if (btSimPresent && btChipPresent)
    {
        PRINT_INFORMATION(("@@@@@ Flight mode: BT reset @@@@@"));

        btGotRsp = MMI_FALSE;
        StartTimer(FLIGHT_MODE_DEACTIVATE_BT_TIMER, 40000, mmi_phnset_flight_mode_bt_timeout_hdlr);

        if (mmi_bootup_get_active_flight_mode() == FLIGHTMODE_OFF)
        {
            mmi_bt_reset_hw_on();
        }
        else
        {
            mmi_bt_reset_hw_off();
        }
    }
    else
    {
        mmi_phnset_switch_flight_mode();
    }
#endif /* defined(__MMI_BT_HP_SUPPORT__) || defined(__MMI_BT_SUPPORT__) */ 
}


/*****************************************************************************
 * FUNCTION
 *  mmi_flight_mode_switch_irda
 * DESCRIPTION
 *  Switch IrDA after flight mode switch
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_flight_mode_switch_irda(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
#ifdef __MMI_IRDA_SUPPORT__
    if (MMI_IRDASCR_CNTX(irda_state) != MMIR_SCR_IRCLOSE &&
        mmi_bootup_get_active_flight_mode() == FLIGHTMODE_SILENT)
    {
        PRINT_INFORMATION(("@@@@@ Flight mode: IrDA disconnect @@@@@"));
        if (mmi_irda_is_ircomm_active() == MMI_TRUE)
        {
            mmi_irda_ircomm_disconnect_request();
        }
        mmi_irda_exec_close_menu();
    }
#endif /* __MMI_IRDA_SUPPORT__ */ 

    mmi_phnset_switch_flight_mode();
}


/*****************************************************************************
 * FUNCTION
 *  PhnsetFlightModeSelectionRsp
 * DESCRIPTION
 *  Response of mode switch
 * PARAMETERS
 *  info        [IN]     
 * RETURNS
 *  void
 *****************************************************************************/
void PhnsetFlightModeSelectionRsp(void *info)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    mmi_nw_cfun_state_rsp_struct *cfun_state_rsp;

    extern U8 lastNwStatus;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    cfun_state_rsp = (mmi_nw_cfun_state_rsp_struct*) info;

    ClearProtocolEventHandler(PRT_NW_CFUN_STATE_RSP);

#ifdef MMI_ON_HARDWARE_P
    if (cfun_state_rsp->result == KAL_TRUE)
    {
#endif /* MMI_ON_HARDWARE_P */ 

        g_phnset_cntx.curFlightMode = g_phnset_cntx.selFlightMode;       /* update flight mode if it is successfully changed */

        if (g_phnset_cntx.selFlightMode == FLIGHTMODE_SILENT)
        {
            g_pwr_context.PowerOnNWStatus |= MMI_NW_STATUS_FLIGHT_MODE;  /* 0x04: Flight mode */
        }
        else
        {
            g_pwr_context.PowerOnNWStatus &= ~MMI_NW_STATUS_FLIGHT_MODE; /* 0x04: Flight mode */
        }

        if ((g_pwr_context.PowerOnNWStatus & MMI_NW_STATUS_FLIGHT_MODE) == FLIGHTMODE_OFF) /* flight mode to normal mode */
        {
            /* show status icons after switch mode */
            PhnsetFlightModeRestoreStatusIconFlags(MMI_TRUE);
            UpdateStatusIcons();
        }
        else /* normal mode to flight mode */
        {
            lastNwStatus = MMI_RAC_NO_CELL; /* update last network status as no service */
            gSignalStrengthLevel = 0;   /* avoid no signal level indication sent to MMI */

            /* hide status icons before switch mode */
            PhnsetFlightModeSaveStatusIconFlags(MMI_TRUE);
            UpdateStatusIcons();
        }

        /* diamond, 2005/11/17 Force to draw signal level because signal level indication comes before flight mode switch rsp */
        ChangeStatusIconLevel(STATUS_ICON_SIGNAL_STRENGTH, gSignalStrengthLevel);
        // wangbei add start 20071010
    #ifdef __NEW_STATUS_ICONS_STYLE__
         draw_submenu_statusicons();
    #endif
        // wangbei add end
    #ifdef __MMI_SUBLCD__
        ChangeStatusIconLevel(STATUS_ICON_SUBLCD_SIGNAL_STRENGTH, gSignalStrengthLevel);
    #endif 

        /* diamond, 2006/02/22 If the camp on tone comes with next network attachment indication, it might be delayed for many seconds */
        g_pwr_context.IsCampOnTonePlayed = 1;
        g_pwr_context.InvalidSimShowed = 1;

        mmi_phnset_switch_flight_mode();

#ifdef MMI_ON_HARDWARE_P
    }
    else
    {
        DisplayPopup(
            (U8*) GetString(STR_GLOBAL_NOT_DONE),
            IMG_GLOBAL_UNFINISHED,
            1,
            UI_POPUP_NOTIFYDURATION_TIME,
            (U8) ERROR_TONE);
        DeleteScreenIfPresent(SCR_FLIGHT_MODE_PROGRESS);
    }
#endif /* MMI_ON_HARDWARE_P */ 
}


/*****************************************************************************
 * FUNCTION
 *  PhnsetFlightModeSelectionReq
 * DESCRIPTION
 *  Request of mode switch
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void PhnsetFlightModeSelectionReq(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    MYQUEUE Message;
    mmi_nw_cfun_state_req_struct *cfun_state_req;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (g_phnset_cntx.selFlightMode == FLIGHTMODE_QUERY)
    {
        DisplayPopup(
            (U8*) GetString(STR_GLOBAL_DONE),
            IMG_GLOBAL_ACTIVATED,

⌨️ 快捷键说明

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