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