MTK软件行业有一个岗位,叫做MMI工程师,专门为mmi设置一个岗位就可知道MMI模块在mtk中的核心处理地位,当然他的地位也就决定了他的事务繁忙,mmi需要接收和处理所有其他task的消息,并在界面上进行相应的表现,这个数据量是相当大的。比如media层,L4层等。
3 extern void mmi_frm_set_protocol_event_handler(U16 eventID, PsIntFuncPtr funcPtr, MMI_BOOL isMultiHandler);
4 extern void mmi_frm_clear_protocol_event_handler(U16 eventID, PsIntFuncPtr funcPtr);
5 extern void mmi_frm_clear_all_protocol_event_handler( void );
6 #ifdef __MMI_DUAL_SIM__
7 extern void mmi_frm_set_slave_protocol_event_handler(U16 eventID, PsIntFuncPtr funcPtr, MMI_BOOL isMultiHandler);
8 extern void mmi_frm_clear_slave_protocol_event_handler(U16 eventID, PsIntFuncPtr funcPtr);
9 extern void mmi_frm_clear_all_slave_protocol_event_handler( void );
10 #endif /* __MMI_DUAL_SIM__ */
2 * Global Variable
3 **************************************************************************** */
4 PseventInfo protocolEventHandler[MAX_PROTOCOL_EVENT];
5 #ifdef __MMI_DUAL_SIM__
6 PseventInfo SlaveProtocolEventHandler[MAX_SLAVE_PROTOCOL_EVENT];
7 #endif /* __MMI_DUAL_SIM__ */
8
9 /* static event table info, e.g. table pointer, num. of table items */
10 const mmi_frm_event_static_info_struct g_event_table_static_info[EVENT_TABLE_END] = {
11 {protocolEventHandler, sizeof (protocolEventHandler) / sizeof (PseventInfo)},
12 #ifdef __MMI_DUAL_SIM__
13 {SlaveProtocolEventHandler, sizeof (SlaveProtocolEventHandler) / sizeof (PseventInfo)},
14 #endif
15 };
16
17 /* runtime event table info, e.g. used and max. size */
18 mmi_frm_event_runtime_info_struct g_event_table_runtime_info[EVENT_TABLE_END];
* Typedef
**************************************************************************** */
typedef void ( * PsFuncPtr) ( void * );
/* Async PRT event information struct */
typedef struct _PseventInfo
{
PsFuncPtr entryFuncPtr;
U16 eventID; /* for timer & hardware events */
U8 flagMulti; /* is multi-handler or not */
} PseventInfo;
typedef struct _PIntseventInfo
{
U16 eventID; /* for timer & hardware events */
PsIntFuncPtr entryIntFuncPtr;
PsIntFuncPtr postIntFuncPtr;
} PsInteventInfo;
/* enum event table */
typedef enum {
EVENT_TABLE_MASTER, /* main table */
#ifdef __MMI_DUAL_SIM__
EVENT_TABLE_SLAVE, /* table for dual sim */
#endif
EVENT_TABLE_END
} mmi_frm_event_table_enum;
/* static info of event table (may declared as const) */
typedef struct {
PseventInfo * table; /* pointer to event table */
U16 num_of_events; /* number of events (table size) */
} mmi_frm_event_static_info_struct;
/* runtime info of event table */
typedef struct {
U16 max_events; /* max. count of events used */
U16 used_events; /* count of currently used events */
} mmi_frm_event_runtime_info_struct;
mmi_frm_event_table_enum tableType,
U16 eventID,
PsFuncPtr * pFuncPtr,
S16 startIdx,
MMI_BOOL doSwap,
S16 * pNextIdx,
S16 * pFirstEmptyIdx,
MMI_BOOL * pIsMultiInTable);
(U16) Message.oslMsgId,
( void * )Message.oslDataPtr,
( int )Message.oslSrcId,
( void * ) & Message);
作者:张素丰,转载请注明出处:http://www.cnblogs.com/zhangsufeng/archive/2010/09/17/1828545.html
目前的答案是:我根本就不知道如何去实现~~~希望自己以后也能用的上这样的架构。。
(相应代码考虑版权问题,请自行在自己的工程中查看代码,谢谢!)
来自这里:
http://www.cnblogs.com/zhangsufeng/archive/2010/09/17/1828545.html
http://www.guaiguaier.com