📄 mmimain.c
字号:
/****************************************************************************
** File Name: MMIMAIN.C *
** Author: *
** Date: 03/11/2003 *
** Copyright: 2003 Spreatrum, Incoporated. All Rights Reserved. *
** Description: This file is used to describe the MMI Kernel *
/****************************************************************************
** Important Edit History *
** ------------------------------------------------------------------------*
** DATE NAME DESCRIPTION *
** 11/2003 Louis.wei modify
** 12/2003 Tracy Zhang 对任务初始化和对服务的注册进行修改 *
****************************************************************************/
//#include "tb_hal.h"
#include "mmi_osbridge.h"
#include "mmk_msg.h"
#include "mmk_kbd.h"
#include "tb_dal.h"
#include "mmk_timer.h"
#include "mmk_app.h"
#include "mmi_theme.h"
#include "jpg_gif_decode.h"
#include "sd.h"
//#include "sd_bsd.h"
#include "mmiphone.h"
#include "mmisms_app.h"
#include "mmidc.h"
#include "mmimp3.h"
#include "ccapp.h"
#include "mmiwap.h"
#include "mmibrowser.h"
// add by allen 2004.08.17 begin
#include "mmistk_app.h"
// add by allen 2004.08.17 end
#include "mmieng_main.h"
#include "mmirecord.h"
#include "mmipb_signal.h"
#include "mmipb.h"
#include "mmi_signal.h"
#include "mmi_id.h"
#include "guilcd.h"
#include "u_disk_api.h"
#include "mmiset.h"
//#ifndef WIN32
#include "arm_reg.h"
//#endif
#include "mmi_image.h"
#include "mmi_resource_def.h"
#include "mmimultim.h"
#include "ffs.h"
#include "mmitruempeg4.h"
//#include "mmimms_internal.h" //yulz temp
#include "res_access.h"
#include "mmk_ex.h"
#include "mmi_sysinfo.h"
#include "tabpagemenu_data.h"
#include "mmi_language.h"
/*-------------------------------------------------------------------------*/
/* TYPES/CONSTANTS */
/*-------------------------------------------------------------------------*/
extern uint8 g_key_code;
extern uint32 g_backup_keycode; // 消息队列中的key code
extern uint8 g_mmi_waiting_keys_num; // 消息队列中的KeyNum
extern BOOLEAN g_kbd_timer_active;
extern PHONE_STARTUP_CONDITION_E g_startup_condition; // 记录开机的原因
extern PUBLIC BOOLEAN LCD_IsExistSubLcd(void);
extern void FileMgr_BGTask_Init(void);
/*---------------------------------------------------------------------------*/
/* LOCAL FUNCTION DECLARE */
/*---------------------------------------------------------------------------*/
/*****************************************************************************/
// Description : handle charge call back function
// Global resource dependence :
// Author:
// Note:
/*****************************************************************************/
LOCAL void ChargeCallBackFunc(
uint32 taskid, // the client's task id
uint32 event_id, // the event type
void *param_ptr // data follow the even
);
/*****************************************************************************/
// Description : handle udisk call back function
// Global resource dependence :
// Author: Jassmine.Meng
// Note:
/*****************************************************************************/
LOCAL void UdiskCallBackFunc(
uint32 taskid, // the client's task id
uint32 event_id, // the event type
void *param_ptr // data follow the even
);
/*****************************************************************************/
// Description : handle keypad call back function
// Global resource dependence :
// Author: Great.Tian
// Note:
/*****************************************************************************/
LOCAL void KeypadCallBackFunc(
BLOCK_ID id, // Client thread ID
uint32 argc, // Signal code
void *argv // Key Code
);
/*****************************************************************************/
// Description : handle touch panel call back function
// Global resource dependence :
// Author: Robert.Lu
// Note:
/*****************************************************************************/
LOCAL void TPCallBackFunc(
BLOCK_ID id, // Client thread ID
uint32 argc, // Signal code
void *argv // Key Code
);
/*****************************************************************************/
// Description : handle keypad call back function
// Global resource dependence :
// Author: Great.Tian
// Note:
/*****************************************************************************/
LOCAL void KeypadCallBackFunc(
BLOCK_ID id, // Client thread ID
uint32 argc, // Signal code
void *argv // Key Code
)
{
MmiSignalS* sendSignal = PNULL;
uint32 key_code = (uint32)argv;
uint16 single_code = (uint16)(argc & 0xFFFF);
SCI_TRACE_LOW("KeypadCallBackFunc: key_code = %d, single_code = %d!", key_code, single_code);
// check the key message
if (MMK_CheckKeySingle(single_code, key_code))
{
// create the signal to send requesting task
MmiCreateSignal(single_code, sizeof(MmiKeyPress), &sendSignal);
sendSignal->sig.keyPress.keyCode = key_code;
sendSignal->send = KPDSVR;
MmiSendSignal(TASK_FL_ID, sendSignal);
}
else
{
SCI_TRACE_LOW("KeypadCallBackFunc: the key message is too much!");
}
}
/*****************************************************************************/
// Description : display the init image
// Global resource dependence :
// Author: Great.Tian
// Note:
/*****************************************************************************/
LOCAL void DisplayInitImage(
uint32 image_id
)
{
int16 mainscreen_width = MMI_GetFullScreenWidth();
int16 mainscreen_height = MMI_GetFullScreenHeight();
GUI_RECT_T sublcd_rect = MMI_GetSubLcdRect();
GUI_DisplayStaticBmp(
MAINLCD_ID,
0,
0,
image_id);
LCD_InvalidateRect(
MAINLCD_ID,
0,
0,
mainscreen_width-1,
mainscreen_height-1);
//@Lin.Lin, 2005-2-25, to display background in subscreen when power on
//edison,由于小屏幕合盖和开盖都是一样的image, 因此修改
if(LCD_IsExistSubLcd())
{
GUI_DisplayStaticBmp(SUBLCD_ID, 0, 0, IMAGE_SUBLCD_ICON_BG); //临时替换,应使用子屏背景图
LCD_InvalidateRect(SUBLCD_ID, 0, 0, sublcd_rect.right, sublcd_rect.bottom);
}
// 因为MMIDEFAULT_SetLcdBackLight函数中会调用MMITHEME_UpdateRect函数
// MMIDEFAULT_SetLcdBackLight(TRUE);
MMIDEFAULT_DirectSetLcdLightTrue();
// #ifndef WIN32
SCI_TRACE_LOW("DisplayInitImage: time = %d", SCI_GetTickCount());
// #endif
}
/*-------------------------------------------------------------------------*/
/* FUNCTIONS */
/*-------------------------------------------------------------------------*/
/*****************************************************************************/
// Description : register the MN signal and callback function
// Global resource dependence :
//
// Author:
// Note:
/*****************************************************************************/
LOCAL void APP_RegisterPsService( void )
{
//Register phone event
SCI_RegisterMsg( MN_APP_PHONE_SERVICE,
EV_MN_APP_NETWORK_STATUS_IND_F,
MAX_MN_APP_PHONE_EVENTS_NUM - 1,
SCI_NULL);
SCI_TRACE_LOW("Phone event is registered successfully");
//Register call event
SCI_RegisterMsg( MN_APP_CALL_SERVICE,
EV_MN_APP_CALL_START_IND_F,
MAX_MN_APP_CALL_EVENTS_NUM - 1,
SCI_NULL);
SCI_TRACE_LOW("call event is registered successfully");
//Register sms event
SCI_RegisterMsg( MN_APP_SMS_SERVICE,
EV_MN_APP_SMS_READY_IND_F,
MAX_MN_APP_SMS_EVENTS_NUM - 1,
SCI_NULL);
SCI_TRACE_LOW("sms event is registered successfully");
//Register smscb event
SCI_RegisterMsg( MN_APP_SMSCB_SERVICE,
EV_MN_APP_SMSCB_MSG_IND_F,
MAX_MN_APP_SMSCB_EVENTS_NUM - 1,
SCI_NULL);
SCI_TRACE_LOW("smscb event is registered successfully");
//Register ss event
SCI_RegisterMsg( MN_APP_SS_SERVICE,
EV_MN_APP_BEGIN_REGISTER_SS_F,
MAX_MN_APP_SS_EVENTS_NUM - 1,
SCI_NULL);
SCI_TRACE_LOW("ss event is registered successfully");
//Register SIM event
SCI_RegisterMsg( MN_APP_SIM_SERVICE,
EV_MN_APP_MSISDN_UPDATE_CNF_F,
MAX_MN_APP_SIM_EVENTS_NUM - 1,
SCI_NULL);
SCI_TRACE_LOW("SIM event is registered successfully");
//Register STK event
SCI_RegisterMsg( MN_APP_SIMAT_SERVICE,
EV_MN_APP_SIMAT_DISPLAY_TEXT_IND_F,
SIMAT_EVENT_NUM - 1,
SCI_NULL );
SCI_RegisterMsg( MN_APP_SIMAT_SERVICE,
EV_MN_APP_REGISTER_SS_CNF_F,
MAX_MN_APP_SS_EVENTS_NUM - 1,
SCI_NULL );
SCI_TRACE_LOW("STK event is registered successfully");
//add by figo.feng 2004.09.24
SCI_RegisterMsg(MN_APP_GPRS_SERVICE,
EV_MN_APP_SET_PDP_CONTEXT_CNF_F,
MAX_MN_APP_GPRS_EVENTS_NUM - 1,
SCI_NULL);
SCI_TRACE_LOW("GPRS_SERVICE event is registered successfully");
}
/*****************************************************************************/
// Description : register the REF signal and callback function
// Global resource dependence :
//
// Author:
// Note:
/*****************************************************************************/
LOCAL void APP_RegisterRefService( void )
{
//Register key event
SCI_RegisterMsg( KEYPAD_SERVICE,
KPD_DOWN,
KPD_UP,
KeypadCallBackFunc);
//Register TIME and ALARM event
SCI_RegisterMsg( TIME_SERVICE,
MISC_MSG_RTC_MIN,
MISC_MSG_MAX - 1,
SCI_NULL);
//Register CHARGE event
SCI_RegisterMsg( CHR_SERVICE,
CHR_CAP_IND,
CHR_MSG_MAX_NUM - 1,
ChargeCallBackFunc);
//Register UDISK event
#ifndef WIN32
SCI_RegisterMsg( UDISK_SERVICE,
UDISK_PLUGIN,
UDISK_MSG_MAX - 1,
UdiskCallBackFunc);
//Register record(录音) event
SCI_RegisterMsg( AUDIO_SERVICE,
AUDIO_SUCCESS,
MAX_AUDIO_EVENTS_NUM - 1,
SCI_NULL);
#endif
}
/*****************************************************************************/
// Description : handle charge call back function
// Global resource dependence :
// Author: Jassmine.Meng
// Note:
/*****************************************************************************/
LOCAL void ChargeCallBackFunc(
uint32 taskid, // the client's task id
uint32 event_id, // the event type
void *param_ptr // data follow the even
)
{
uint16 signal_size;
uint16 signal_code;
xSignalHeaderRec *signal_ptr = PNULL;
switch (event_id)
{
case CHR_CAP_IND :
SCI_TRACE_LOW("Receive CHR_CAP_IND");
signal_code = CHR_CAP_IND;
signal_size = sizeof(xSignalHeaderRec);
break;
case CHR_CHARGE_START_IND:
SCI_TRACE_LOW("Receive CHR_CHARGE_START_IND");
signal_code = CHR_CHARGE_START_IND;
signal_size = sizeof(xSignalHeaderRec);
break;
case CHR_CHARGE_END_IND:
SCI_TRACE_LOW("Receive CHR_CHARGE_END_IND");
signal_code = CHR_CHARGE_END_IND;
signal_size = sizeof(xSignalHeaderRec);
break;
case CHR_WARNING_IND:
SCI_TRACE_LOW("Receive CHR_WARNING_IND");
signal_code = CHR_WARNING_IND;
signal_size = sizeof(xSignalHeaderRec);
break;
case CHR_SHUTDOWN_IND:
SCI_TRACE_LOW("Receive CHR_SHUTDOWN_IND");
signal_code = CHR_SHUTDOWN_IND;
signal_size = sizeof(xSignalHeaderRec);
break;
case CHR_CHARGE_FINISH:
SCI_TRACE_LOW("Receive CHR_CHARGE_FINISH");
signal_code = CHR_CHARGE_FINISH;
signal_size = sizeof(xSignalHeaderRec);
break;
case CHR_CHARGE_DISCONNECT:
SCI_TRACE_LOW("Receive CHR_CHARGE_DISCONNECT");
signal_code = CHR_CHARGE_DISCONNECT;
signal_size = sizeof(xSignalHeaderRec);
break;
default :
SCI_TRACE_LOW("ChargeCallBackFunc:event_id = %d",event_id);
return;
break;
}
MMI_CREATE_SIGNAL(signal_ptr,signal_code,signal_size,SCI_IdentifyThread());
// Send the signal to the dedicated task's queue
MMI_SEND_SIGNAL((xSignalHeaderRec*)signal_ptr, taskid);
}
/*****************************************************************************/
// Description : handle udisk call back function
// Global resource dependence :
// Author: Jassmine.Meng
// Note:
/*****************************************************************************/
LOCAL void UdiskCallBackFunc(
uint32 taskid, // the client's task id
uint32 event_id, // the event type
void *param_ptr // data follow the even
)
{
uint16 signal_size;
uint16 signal_code;
xSignalHeaderRec *signal_ptr = PNULL;
switch (event_id)
{
case UDISK_PLUGIN :
SCI_TRACE_LOW("Receive UDISK_PLUGIN");
signal_code = UDISK_PLUGIN;
signal_size = sizeof(xSignalHeaderRec);
MMI_CREATE_SIGNAL(signal_ptr,signal_code,signal_size,SCI_IdentifyThread());
// Send the signal to the dedicated task's queue
MMI_SEND_SIGNAL((xSignalHeaderRec*)signal_ptr, taskid);
break;
case UDISK_PLUGOUT :
SCI_TRACE_LOW("Receive UDISK_PLUGOUT");
signal_code = UDISK_PLUGOUT;
signal_size = sizeof(xSignalHeaderRec);
MMI_CREATE_SIGNAL(signal_ptr,signal_code,signal_size,SCI_IdentifyThread());
// Send the signal to the dedicated task's queue
MMI_SEND_SIGNAL((xSignalHeaderRec*)signal_ptr, taskid);
break;
case UDISK_START_CNF:
break;
case UDISK_STOP_CNF:
break;
case UDISK_FAIL:
SCI_TRACE_LOW("Receive UDISK_FAIL");
signal_code = UDISK_FAIL;
signal_size = sizeof(xSignalHeaderRec);
MMI_CREATE_SIGNAL(signal_ptr,signal_code,signal_size,SCI_IdentifyThread());
// Send the signal to the dedicated task's queue
MMI_SEND_SIGNAL((xSignalHeaderRec*)signal_ptr, taskid);
break;
default :
SCI_TRACE_LOW("UdiskCallBackFunc:event_id = %d",event_id);
break;
}
}
/*****************************************************************************/
// Description : init MMK
// MMI Message
// Global resource dependence :
// Author:Louis wei
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -