📄 mmitask.c
字号:
#ifdef __MMI_DUAL_SIM_MASTER__
MTPNP_AD_Set_PowerOn_Mode(MTPNP_AD_POWERON_KEYPAD);
MTPNP_AD_Init();
#endif /* __MMI_DUAL_SIM_MASTER__ */
#ifdef __MMI_DUAL_SIM_SINGLE_CALL__
if (p->flightmode_state == 1)
{
g_pwr_context.PowerOnNWStatus |= MMI_NW_STATUS_NETWORK_FLAG;
g_pwr_context_2.PowerOnNWStatus |= MMI_NW_STATUS_NETWORK_FLAG;
MTPNP_AD_Set_Startup_Mode(MTPNP_AD_NVRAM_FLIGHT);
}
else if (p->dual_sim_mode_setting == 0)
{
g_pwr_context_2.PowerOnNWStatus |= MMI_NW_STATUS_NETWORK_FLAG; /* no need to search SIM2 network in SIM1 only mode */
MTPNP_AD_Set_Startup_Mode(MTPNP_AD_NVRAM_CARD1);
MTPNP_PFAL_Replace_StatusICON(STATUS_ICON_SIGNAL_STRENGTH, IMG_SI_MASTER_SIGNAL_STRENGTH);
}
else if (p->dual_sim_mode_setting == 1)
{
g_pwr_context.PowerOnNWStatus |= MMI_NW_STATUS_NETWORK_FLAG; /* no need to search SIM1 network in SIM2 only mode */
MTPNP_AD_Set_Startup_Mode(MTPNP_AD_NVRAM_CARD2);
MTPNP_PFAL_Replace_StatusICON(STATUS_ICON_SLAVE_SIGNAL_STRENGTH, IMG_SI_SLAVE_SIGNAL_STRENGTH);
}
else
{
MTPNP_AD_Set_Startup_Mode(MTPNP_AD_NVRAM_DUALCARD);
MTPNP_PFAL_Replace_StatusICON(STATUS_ICON_SIGNAL_STRENGTH, IMG_SI_MASTER_SIGNAL_STRENGTH);
MTPNP_PFAL_Replace_StatusICON(STATUS_ICON_SLAVE_SIGNAL_STRENGTH, IMG_SI_SLAVE_SIGNAL_STRENGTH);
}
PhnsetSetUARTConfig(p->dual_sim_uart_setting);
#endif /* __MMI_DUAL_SIM_SINGLE_CALL__ */
OslMemoryStart(TRUE);
g_charbat_context.PowerOnCharger = 0;
g_pwr_context.PowerOnMode = POWER_ON_KEYPAD;
#ifdef __MMI_DUAL_SIM_SINGLE_CALL__
g_pwr_context_2.PowerOnMMIStatus = POWER_ON_KEYPAD;
#endif
DTGetRTCTime(&StartUpTime);
memset(&LastDuration, 0, sizeof(LastDuration));
#if !defined(__MTK_TARGET__) /* MoDIS only */
mmi_netset_write_auto_test_result(MMI_FALSE);
#endif
/* disk check */
#ifdef __FLIGHT_MODE_SUPPORT__
g_phnset_cntx.curFlightMode = p->flightmode_state;
#endif
#ifdef __MMI_DUAL_SIM_DUAL_CALL_SLAVE__
MTPNP_AD_Set_Slave_PowerOn_Mode(MTPNP_AD_POWERON_KEYPAD);
break;
#else
mmi_bootup_entry_disk_check();
PRINT_INFORMATION(" NORMAL POWER ON SUCCESS!!!!");
break;
#endif
case POWER_ON_PRECHARGE:
case POWER_ON_CHARGER_IN:
/**************************************
* Always send charger-in indication
* to avoid fast repeating charger
* in-out b4 power-on completes
* Lisen 04/13/2004
***************************************/
#ifdef __MMI_DUAL_SIM_MASTER__
if (p->poweron_mode == POWER_ON_PRECHARGE)
{
MTPNP_AD_Set_PowerOn_Mode(MTPNP_AD_POWERON_PRECHARGE);
}
else if (p->poweron_mode == POWER_ON_CHARGER_IN)
{
MTPNP_AD_Set_PowerOn_Mode(MTPNP_AD_POWERON_CHARGER_IN);
}
#endif /* __MMI_DUAL_SIM_MASTER__ */
#ifdef __MMI_DUAL_SIM_DUAL_CALL_SLAVE__
break;
#endif
g_pwr_context.PowerOnMode = p->poweron_mode; /* Charger/Pre-charge Power On */
InitializeChargingScr();
if (!g_charbat_context.isChargerConnected)
{
QuitSystemOperation();
}
PRINT_INFORMATION(" CHARGER POWER ON SUCCESS!!!!");
break;
case POWER_ON_ALARM:
#ifdef __MMI_DUAL_SIM_MASTER__
MTPNP_AD_Set_PowerOn_Mode(MTPNP_AD_POWERON_ALARM);
#endif
#ifdef __MMI_DUAL_SIM_DUAL_CALL_SLAVE__
break;
#endif
g_pwr_context.PowerOnMode = POWER_ON_ALARM;
#ifdef __MMI_SUBLCD__
gdi_lcd_set_active(GDI_LCD_SUB_LCD_HANDLE);
gdi_layer_clear(GDI_COLOR_BLACK);
gdi_lcd_set_active(GDI_LCD_MAIN_LCD_HANDLE);
#endif /* __MMI_SUBLCD__ */
gdi_layer_clear(GDI_COLOR_BLACK);
AlmInitRTCPwron();
PRINT_INFORMATION(" ALARM POWER ON SUCCESS!!!!");
break;
case POWER_ON_EXCEPTION:
#ifdef __MMI_DUAL_SIM_MASTER__
{
MTPNP_AD_Set_PowerOn_Mode(MTPNP_AD_POWERON_EXCEPTION);
MTPNP_AD_Init();
}
#endif /* __MMI_DUAL_SIM_MASTER__ */
#ifdef __MMI_DUAL_SIM_DUAL_CALL_SLAVE__
{
MTPNP_AD_Set_Slave_PowerOn_Mode(MTPNP_AD_POWERON_EXCEPTION);
break;
}
#endif /* __MMI_DUAL_SIM_DUAL_CALL_SLAVE__ */
g_pwr_context.PowerOnMode = POWER_ON_EXCEPTION;
#ifdef __MMI_DUAL_SIM_SINGLE_CALL__
if (p->flightmode_state == 1)
{
g_pwr_context.PowerOnNWStatus |= MMI_NW_STATUS_NETWORK_FLAG;
g_pwr_context_2.PowerOnNWStatus |= MMI_NW_STATUS_NETWORK_FLAG;
MTPNP_AD_Set_Startup_Mode(MTPNP_AD_NVRAM_FLIGHT);
}
else if (p->dual_sim_mode_setting == 0)
{
g_pwr_context_2.PowerOnNWStatus |= MMI_NW_STATUS_NETWORK_FLAG; /* no need to search SIM2 network in SIM1 only mode */
MTPNP_AD_Set_Startup_Mode(MTPNP_AD_NVRAM_CARD1);
MTPNP_PFAL_Replace_StatusICON(STATUS_ICON_SIGNAL_STRENGTH, IMG_SI_MASTER_SIGNAL_STRENGTH);
}
else if (p->dual_sim_mode_setting == 1)
{
g_pwr_context.PowerOnNWStatus |= MMI_NW_STATUS_NETWORK_FLAG; /* no need to search SIM1 network in SIM2 only mode */
MTPNP_AD_Set_Startup_Mode(MTPNP_AD_NVRAM_CARD2);
MTPNP_PFAL_Replace_StatusICON(STATUS_ICON_SLAVE_SIGNAL_STRENGTH, IMG_SI_SLAVE_SIGNAL_STRENGTH);
}
else
{
MTPNP_AD_Set_Startup_Mode(MTPNP_AD_NVRAM_DUALCARD);
MTPNP_PFAL_Replace_StatusICON(STATUS_ICON_SIGNAL_STRENGTH, IMG_SI_MASTER_SIGNAL_STRENGTH);
MTPNP_PFAL_Replace_StatusICON(STATUS_ICON_SLAVE_SIGNAL_STRENGTH, IMG_SI_SLAVE_SIGNAL_STRENGTH);
}
PhnsetSetUARTConfig(p->dual_sim_uart_setting);
#endif /* __MMI_DUAL_SIM_SINGLE_CALL__ */
#ifdef __MMI_SUBLCD__
gdi_lcd_set_active(GDI_LCD_SUB_LCD_HANDLE);
gdi_layer_clear(GDI_COLOR_BLACK);
gdi_lcd_set_active(GDI_LCD_MAIN_LCD_HANDLE);
#endif /* __MMI_SUBLCD__ */
gdi_layer_clear(GDI_COLOR_BLACK);
OslMemoryStart(TRUE);
SetAbnormalReset();
InitializeAll();
OslDumpDataInFile();
PRINT_INFORMATION(" Exception POWER ON SUCCESS!!!!");
ClearInputEventHandler(MMI_DEVICE_ALL);
ClearKeyHandler(KEY_END, KEY_LONG_PRESS);
/**************************************
* Please note that the order of the following actions matters.
* NVRAM data must be read before InitAllApplications, or there might be
* unexpected errors.
***************************************/
InitNvramData();
InitAllApplications();
#ifdef __FLIGHT_MODE_SUPPORT__
PhnsetFlightModePowerOnException();
#endif
/***************************************
* To check power on display if need restore
***************************************/
mmi_pwron_exception_check_display();
break;
#ifdef __MMI_USB_SUPPORT__
case POWER_ON_USB:
#ifdef __MMI_DUAL_SIM_MASTER__
{
MTPNP_AD_Set_PowerOn_Mode(MTPNP_AD_POWERON_USB);
}
#endif /* __MMI_DUAL_SIM_MASTER__ */
#ifdef __MMI_DUAL_SIM_DUAL_CALL_SLAVE__
break;
#endif /* __MMI_DUAL_SIM_DUAL_CALL_SLAVE__ */
g_pwr_context.PowerOnMode = POWER_ON_USB;
/***************************************
* Because Aux task will not init in USB boot mode
* Interrupt service routine for clam detection CLAM_EINT_HISR()
* is not register, force the clam state to open
* If Aux task is necessary in USB mode, this tircky could be removed
* Robin 1209
***************************************/
gMMIClamState = 1;
InitializeUsbScr();
/***************************************
* To disable keypad tone state
***************************************/
mmi_frm_kbd_set_tone_state(MMI_KEY_TONE_DISABLED);
PRINT_INFORMATION(" USB POWER ON SUCCESS!!!!");
break;
#endif /* __MMI_USB_SUPPORT__ */
default:
break;
}
}
break;
default:
ProtocolEventHandler(
(U16) Message.oslMsgId,
(void*)Message.oslDataPtr,
(int)Message.oslSrcId,
(void*)&Message);
break;
}
}
OslFreeInterTaskMsg(&Message);
} /* OslReadCircularQ(&Message) */
msg_get_ext_queue_info(mmi_ext_qid, &queue_node_number);
count--;
}
}
}
}
/*****************************************************************************
* FUNCTION
* InitFramework
* DESCRIPTION
* To Initialize framework,
*
* This is used to To Initialize framework,.
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void InitFramework(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
/*
* Initialize events handler
*/
InitEvents();
/*
* Initialize keyprocess
*/
InitProcessKeyEvent();
/*
* Initialize history
*/
InitHistory(NULL, (SubLcdHistoryCBPtr)SubLCDIdleScreen);
}
#ifdef __MMI_SUPPORT_DUMP_SCREEN_STRING__
/*****************************************************************************
* FUNCTION
* mmi_trace_screen_string
* DESCRIPTION
* Sending the screen string
*
* PARAMETERS
* x [IN]
* y [IN]
* str [IN]
* len [IN]
* Bordered [IN]
* RETURNS
* MMI_BOOL
*****************************************************************************/
MMI_BOOL mmi_trace_screen_string(S32 x, S32 y, U8 *str, S32 len, S32 Bordered)
{
MMI_BOOL ret = MMI_FALSE;
#ifdef __MTK_TARGET__
mmi_eq_str_res_req_struct *rsp_msg;
#else
U8 data_string[200];
#endif
/* If having combined_chars, dump the string first */
if (mmi_ucs2strlen(g_mmi_frm_cntx.dump_screen_info.combined_chars))
{
#ifdef __MTK_TARGET__
rsp_msg = (mmi_eq_str_res_req_struct *) OslConstructDataPtr( sizeof(mmi_eq_str_res_req_struct) );
kal_sprintf((char*)rsp_msg->data_string, "%d,(%d,%d),%d,",
1, /* Normal string */
g_mmi_frm_cntx.dump_screen_info.combined_chars_x,
g_mmi_frm_cntx.dump_screen_info.combined_chars_y,
mmi_ucs2strlen(g_mmi_frm_cntx.dump_screen_info.combined_chars));
rsp_msg->length = strlen((char*)rsp_msg->data_string);
mmi_ucs2ncpy((S8*)(rsp_msg->data_string+rsp_msg->length), (S8*)g_mmi_frm_cntx.dump_screen_info.combined_chars, MMI_SCREEN_COMBINED_CHAR_MAX_LENGTH/ENCODING_LENGTH);
rsp_msg->length += mmi_ucs2strlen(g_mmi_frm_cntx.dump_screen_info.combined_chars)*ENCODING_LENGTH;
MMI_ASSERT(rsp_msg->length <= MMI_SCREEN_STR_MAX_LENGTH);
SendMsg2AT(MSG_ID_MMI_EQ_STR_RES_REQ, (void *)rsp_msg, NULL);
#else /* __MTK_TARGET__ */
kal_sprintf((char*)data_string, "%d,(%d,%d),%d,",
1, /* Normal string */
g_mmi_frm_cntx.dump_screen_info.combined_chars_x,
g_mmi_frm_cntx.dump_screen_info.combined_chars_y,
mmi_ucs2strlen(g_mmi_frm_cntx.dump_screen_info.combined_chars));
#ifdef ENABLE_DUMP_SCREEN_STRING_TRACE
kal_printf(data_string);
kal_printf("%c%c%c%c%c ...",g_mmi_frm_cntx.dump_screen_info.combined_chars[0], g_mmi_frm_cntx.dump_screen_info.combined_chars[2],
g_mmi_frm_cntx.dump_screen_info.combined_chars[4], g_mmi_frm_cntx.dump_screen_info.combined_chars[6],
g_mmi_frm_cntx.dump_screen_info.combined_chars[8]);
kal_printf(" ++++ \n");
#endif /* ENABLE_DUMP_SCREEN_STRING_TRACE */
#endif /* __MTK_TARGET__ */
}
/* Dump the screen string */
if (g_mmi_frm_cntx.dump_screen_info.is_enable
&& (g_mmi_frm_cntx.dump_screen_info.allow_dump_screen_str
|| g_mmi_frm_cntx.dump_screen_info.allow_dump_dm_screen))
{
/* check if the string is the same */
if (mmi_ucs2strlen((S8*)str) &&
(mmi_ucs2cmp((S8*)str, g_mmi_frm_cntx.dump_screen_info.backup_string) != 0 || g_mmi_frm_cntx.dump_screen_info.y != y))
{
mmi_ucs2ncpy(g_mmi_frm_cntx.dump_screen_info.backup_string, (S8*)str, MMI_SCREEN_STR_MAX_LENGTH/ENCODING_LENGTH);
g_mmi_frm_cntx.dump_screen_info.y = y;
if (g_mmi_frm_cntx.dump_screen_info.backup_hightlight_type &&
g_mmi_frm_cntx.dump_screen_info.backup_y == y)
{
g_mmi_frm_cntx.dump_screen_info.hightlight_type = g_mmi_frm_cntx.dump_screen_info.backup_hightlight_type;
}
/*
else
{
g_mmi_frm_cntx.dump_screen_info.backup_y = 0;
g_mmi_frm_cntx.dump_screen_info.hightlight_type = 0;
}
*/
#ifdef __MTK_TARGET__
rsp_msg = (mmi_eq_str_res_req_struct *) OslConstructDataPtr( sizeof(mmi_eq_str_res_req_struct) );
kal_sprintf((char*)rsp_msg->data_string, "%d,(%d,%d),%d,",
(g_mmi_frm_cntx.dump_screen_info.hightlight_type>0)?MMI_SCREEN_HIGHLIGHT_STR:MMI_SCREEN_NORMAL_STR,
x,
y,
mmi_ucs2strlen(g_mmi_frm_cntx.dump_screen_info.backup_string));
rsp_msg->length = strlen((char*)rsp_msg->data_string);
mmi_ucs2cpy((S8*)(rsp_msg->data_string+rsp_msg->length), g_mmi_frm_cntx.dump_screen_info.backup_string);
rsp_msg->length += mmi_ucs2strlen(g_mmi_frm_cntx.dump_screen_info.backup_string)*ENCODING_LENGTH;
MMI_ASSERT(rsp_msg->length <= MMI_SCREEN_STR_MAX_LENGTH);
SendMsg2AT(MSG_ID_MMI_EQ_STR_RES_REQ, (void *)rsp_msg, NULL);
#else /* __MTK_TARGET__ */
kal_sprintf((char*)data_string, "%d,(%d,%d),%d,",
(g_mmi_frm_cntx.dump_screen_info.hightlight_type>0)?MMI_SCREEN_HIGHLIGHT_STR:MMI_SCREEN_NORMAL_STR,
x,
y,
mmi_ucs2strlen(g_mmi_frm_cntx.dump_screen_info.backup_string));
#ifdef ENABLE_DUMP_SCREEN_STRING_TRACE
kal_printf(data_string);
kal_printf("%c%c%c%c%c ...",str[0], str[2], str[4], str[6], str[8]);
kal_printf(" ++++ \n");
#endif /* ENABLE_DUMP_SCREEN_STRING_TRACE */
#endif /* __MTK_TARGET__ */
if (g_mmi_frm_cntx.dump_screen_info.hightlight_type)
{
g_mmi_frm_cntx.dump_screen_info.backup_hightlight_type = g_mmi_frm_cntx.dump_screen_info.hightlight_type;
g_mmi_frm_cntx.dump_screen_info.backup_y = y;
}
gui_cancel_timer(mmi_no_more_str_hdlr);
gui_start_timer(MMI_STR_DUMP_TIMEOUT, mmi_no_more_str_hdlr);
ret = MMI_TRUE;
}
}
g_mmi_frm_cntx.dump_screen_info.hightlight_type = 0;
if (mmi_ucs2strlen(g_mmi_frm_cntx.dump_screen_info.combined_chars))
{
memset(g_mmi_frm_cntx.dump_screen_info.combined_chars, 0, ENCODING_LENGTH);
g_mmi_frm_cntx.dump_screen_info.combined_chars_x = 0;
g_mmi_frm_cntx.dump_screen_info.combined_chars_y = 0;
}
return ret;
}
/*****************************************************************************
* FUNCTION
* mmi_trace_screen_char
* DESCRIPTION
* Sending the screen char
*
* PARAMETERS
* x [IN]
* y [IN]
* unicode [IN]
* len [IN]
* Bordered [IN]
* RETURNS
* MMI_BOOL
*****************************************************************************/
MMI_BOOL mmi_trace_screen_char(S32 x, S32 y, U16 unicode, S32 len, S32 Bordered)
{
MMI_BOOL ret = MMI_FALSE;
if (g_mmi_frm_cntx.dump_screen_info.is_enable
&& (g_mmi_frm_cntx.dump_screen_info.allow_dump_screen_str
|| g_mmi_frm_cntx.dump_screen_info.allow_dump_dm_screen))
{
#ifdef __COMBINE_CHAR_IN_DUMP_SCREEN_STRING__
U8 dummy;
S32 len;
/* combine the separated chars to the string */
len = mmi_ucs2strlen(g_mmi_frm_cntx.dump_screen_info.combined_chars);
if (g_mmi_frm_cntx.dump_screen_info.combined_chars_y == y)
{
/* chars are at The same column */
if ((len + 1) < (MMI_SCR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -