📄 flightmode.c
字号:
/*----------------------------------------------------------------*/
/* 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 + -