📄 mmimain.c
字号:
// Modify: Tracy Zhang
// Note:
/*****************************************************************************/
void MMK_Init(void)
{
// uint16 *GPIO_UART_KEY = (uint16 *)0x8C000020;
uint16 data;
g_key_code = KEY_NONE;
g_backup_keycode = KEY_NONE;
g_mmi_waiting_keys_num = 0;
g_kbd_timer_active = FALSE;
// g_timer_status = 0x0000;
MMIDEFAULT_InitDefault();
// 初始化消息队列
MMK_InitMSGQueue(0);
// 初始化定时器
MMK_InitTimer();
// init the control class and the LCD
MMK_InitControlClass();
// Lcd_Init();
GUI_LcdInit();
// DC_Open();
// #ifndef _WIN32
MMIDEFAULT_SetDeepSleep(FALSE);
// SCI_MMI_EnableDeepSleep(0); // disable deep sleep of mmi---temporary
// GPIO_SetKeyPadBackLight(1); //open the lcd back light
// GPIO_SetLcd1BackLight(1); //open the keypad back light
// PMI_SetJpgMaxUsedMem(APP_JPG_DECODE_USED_MEMORY);// delete by Niuhu, 2006.12.14
// #endif
//设置有关的铃声音量
AUD_SetVolume(AUD_DEV_MODE_HANDHOLD,AUD_TYPE_RING,4); // 铃声音量
AUD_SetVolume(AUD_DEV_MODE_HANDHOLD,AUD_TYPE_VOICE,5); //通话语音
AUD_SetVolume(AUD_DEV_MODE_HANDHOLD,AUD_TYPE_DTMF_TONE,2); //双音多频音调
// init the mmi theme
MMITHEME_InitMmiTheme();
}
/*****************************************************************************/
// Description :初始化U盘
// Global resource dependence :
// Author: liujinming
// Note:
/*****************************************************************************/
LOCAL void Udisk_Init()
{
if(!FFS_Init(FS_UDISK))
{
FFS_Format(FS_UDISK,NULL);
FFS_Init(FS_UDISK);
MMIMGR_CreateDefaultDir(FS_UDISK);
}
}
extern BOOLEAN GPIO_CheckSDCardStatus( void );
/*****************************************************************************/
// Description : 初始化MMI中与PS有关的所有应用
// Global resource dependence :
// Author: Tracy Zhang
// Note:
/*****************************************************************************/
void APP_Init(void)
{
MmiLan_InitSysLanguage();
Udisk_Init();
MMI_SetSDStatus(FALSE);
if( GPIO_CheckSDCardStatus( ) )
{
SDCardInit();
if( SD_RegBSD_Opera(1) && FFS_Init(FS_MMC) )
{
MMI_SetSDStatus(TRUE);
}
}
//初始化多媒体IC和服务Thread
MediaStartControlThread();
// 图象解码线程初始化
RDT_InitImgThread();
//yulz test 2006-09-01
MMK_Ex_Init();
// MMI_MainMenuInfo_Init() ;
MMIMGR_Init();
//init ring and setting
MMISET_AllInit();
//init the main application
main_app_init();
MMIMSD_Init();
//MMIVC_Init();
CC_Init();
MMISMS_AppInit();
//PHONEBOOK
MMIPB_InitApp();
//初始化小区广播
MMISMSCB_Init();
//mms
MMIMMS_AppInit();
//init wap module add by figo.feng 2004.09.20
MMIWAP_Init();
// STK
MMISTK_AppInit();
// add by allen 2004.08.18 end
MMIENG_AppInit();
// accessory init for alarm EFS data -- add by taul
MMIACC_Init();
MMIVC_Init();
//初始化mp3
MMIMP3_Init();
//@phoebe cr18105 dc init and multim init should not exchange!!
MMIDC_Init();
//voicerecord
MMIRECORD_AppInit();
// 移到最后,减少出现还没有初始化完成就进入MPEG4播放的问题
MMITRUEMPEG4_Init();
//#ifdef MMI_MPEG4
// MMIMPEG4_Init();
//#endif
// @wancan.you cstar
IMM_Init();
// 初始化开机和IDLE界面的APPLICATION
MMIPHONE_AppInit();
}
MmiSignalS *MMI_PeekSignal(MmiSignalS **signal)
{
MmiSignalS *ret;
static MmiSignalS *mmi_signal = NULL;
SCI_DisableIRQ();
if (NULL == mmi_signal)
mmi_signal = (MmiSignalS *)SCI_PeekSignal(P_APP);
ret = mmi_signal;
if (signal)
{
*signal = mmi_signal;
mmi_signal = NULL;
}
SCI_RestoreIRQ();
return ret;
}
void MMI_ProcessMsg(void)
{
MmiSignalS *receiveSignal ;
MMI_MESSAGE_T mmi_msg; // 指向消息结构的指针
if (MMK_GetMSGQueue(&mmi_msg))
{
MMK_DispatchMSGQueue(&mmi_msg);
MMK_FreeMSG(&mmi_msg);
}
else
{
//Receive the system message(include the PS message and the ROTS message
if (NULL == MMI_PeekSignal(&receiveSignal))
MmiReceiveSignal(P_APP, &receiveSignal);
MMK_DispatchExtSig(receiveSignal);
MmiDestroySignal(&receiveSignal);
}// end of if
// @Great.Tian, 2004-07-16, begin
MMITHEME_UpdateRectExt();
// @Great.Tian, 2004-07-16, end
}
/*****************************************************************************/
// Description : the function of mmi entry
// Global resource dependence :
//
//
// Author:Louis.wei
// Modify: Tracy Zhang
// Note:
/*****************************************************************************/
void APP_Task(
uint32 argc,
void * argv
)
{
POWER_RESTART_CONDITION_E restart_condition = RESTART_BY_NONE;
MmiSignalS *receiveSignal ;
MMI_MESSAGE_PTR_T mmi_msg; // 指向消息结构的指针
MMISET_ANIMATE_SET_T animate_info;
// #ifndef WIN32
SCI_TRACE_LOW("APP_Task: begin init, time = %d", SCI_GetTickCount());
// #endif
//@phoebe cr18105
// g_is_mmimultim_init_ok = FALSE;
// 获取资源管理数据的首地址指针
/*//notes by yulz 2006-08-18
#ifdef WIN32
GetMMIResEntry(&MMI_RES_PTR);
SCI_ASSERT(PNULL != MMI_RES_PTR);
#endif
*/
// 初始化资源 //add by yulz 2006-08-17
MMI_InitResInfo();
MMI_GetSystemInfo(); //yulz 2006-9-20
MMK_Init();
#ifndef WIN32
restart_condition = POWER_GetRestartCondition();
#else
restart_condition = RESTART_BY_POWER_BUTTON;
#endif // WIN32
SCI_TRACE_LOW("APP_Task: restart_condition is %d",restart_condition);
// 根据系统启动的不同条件对服务进行注册
switch (restart_condition)
{
case RESTART_BY_POWER_BUTTON:
case RESTART_BY_SOFTWARE:
//DisplayInitImage(IMAGE_INIT_NORMAL_STARTUP_ANIM);
//根据不同的开机动画选择不同的图片
MMISET_GetOpenCloseAnimationInfo(&animate_info);
// DisplayInitImage(g_poweron_anim_first_frame[animate_info.animate_id-1]);
// 注册REF服务
APP_RegisterRefService();
// 注册PS服务
APP_RegisterPsService();
// MMI所有的APP初始化
APP_Init();
// 激活协议栈
//MNPHONE_StartupPs();
//@jassmine 激活协议栈放到开机界面初始化里,防止输入开机密码的时候ps要求输入PIN等
//但是开机密码界面不能紧急呼叫!
// 开机界面初始化
MMIPHONE_NormalInit();
// @Great.Tian, Fix CR25997
if (!MMIDEFAULT_GetFlipStatus())
{
MMIDEFAULT_DirectSetLcdLightTrue();
}
MMIDEFAULT_StartLcdBackLightTimer();
break;
case RESTART_BY_ALARM:
// 注册REF服务
APP_RegisterRefService();
g_startup_condition = STARTUP_ALARM;
// MMI所有的APP初始化
APP_Init();
// 闹铃界面初始化
MMIPHONE_AlarmInit();
break;
case RESTART_BY_CHARGE:
// 注册REF服务
APP_RegisterRefService();
// MMI所有的APP初始化
APP_Init();
// 充电界面初始化
MMIPHONE_ChargeInit();
break;
case RESTART_BY_ASSERT:
// 注册REF服务
APP_RegisterRefService();
// 注册PS服务
APP_RegisterPsService();
// MMI所有的APP初始化
APP_Init();
// 激活协议栈
MNPHONE_StartupPs();
//assert初始化,直接进入idle界面
MMIPHONE_AssertInit();
break;
case RESTART_BY_NONE:
default:
POWER_PowerOff(); // 关机
break;
}
// #ifndef WIN32
SCI_TRACE_LOW("APP_Task: end init, time = %d", SCI_GetTickCount());
// #endif
while (1)
{
MMI_ProcessMsg();
/*
if (!(g_mmipb_nv_t.sort_t.is_initialized))
{
// 如果PB没有初始化完
receiveSignal = (MmiSignalS*)SCI_PeekSignal(P_APP);
if (PNULL == receiveSignal)
{
// MMIPB_InitNvList();
}
else
{
while(1)
{
if (MMK_GetMSGQueue(&mmi_msg))
{
MMK_DispatchMSGQueue(mmi_msg);
// @Great.Tian, 2004-07-16, begin
MMITHEME_UpdateRect();
// @Great.Tian, 2004-07-16, end
MMK_FreeMSG(mmi_msg);
}
else
{
break;
}
}
MMK_DispatchExtSig(&receiveSignal);
MMITHEME_UpdateRect();
MmiDestroySignal(&receiveSignal);
}
}
else
{
*/
/* if (MMK_GetMSGQueue(&mmi_msg))
{
MMK_DispatchMSGQueue(mmi_msg);
// @Great.Tian, 2004-07-16, begin
MMITHEME_UpdateRectExt();
// @Great.Tian, 2004-07-16, end
MMK_FreeMSG(mmi_msg);
}
else
{
//Receive the system message(include the PS message and the ROTS message
MmiReceiveSignal(P_APP, &receiveSignal);
MMK_DispatchExtSig(&receiveSignal);
// @Great.Tian, 2004-07-16, begin
MMITHEME_UpdateRectExt();
// @Great.Tian, 2004-07-16, end
MmiDestroySignal(&receiveSignal);
}// end of if
//}
*/
} // end while
} //End of mmi_Task
/*****************************************************************************/
// Description : the function of the app_init task
// Global resource dependence :
// Author: Great.Tian
// Note:
/*****************************************************************************/
void APPINIT_Task(
uint32 argc,
void * argv
)
{
xSignalHeaderRec* psig = NULL;
// #ifndef WIN32
SCI_TRACE_LOW("APPINIT_Task: begin init, time = %d", SCI_GetTickCount());
// #endif
/* MMIVC_Init();
//初始化mp3
MMIMP3_Init();
//@phoebe cr18105 dc init and multim init should not exchange!!
MMIDC_Init();
MMIMULTIM_Init();
*/
MMIBROWSER_Init();
FileMgr_BGTask_Init();
// #ifndef WIN32
SCI_TRACE_LOW("APPINIT_Task: end init, time = %d", SCI_GetTickCount());
// #endif
// call init function
while (!MMIPB_IsPBInitialized())
{
MMI_RECEIVE_SIGNAL(psig, P_APPINIT);
switch(psig->SignalCode)
{
case PB_SIG_INIT_NV_REQ:
MMIPB_InitNvList();
break;
case PB_SIG_INIT_SIM_REQ:
MMIPB_InitSimList();
break;
default:
break;
}
MMI_FREE_SIGNAL(psig);
}
SCI_ThreadExit();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -