(精品)MTK各个重要功能模块 (2)

上传人:cn****1 文档编号:417800272 上传时间:2022-10-29 格式:DOC 页数:320 大小:1.74MB
返回 下载 相关 举报
(精品)MTK各个重要功能模块 (2)_第1页
第1页 / 共320页
(精品)MTK各个重要功能模块 (2)_第2页
第2页 / 共320页
(精品)MTK各个重要功能模块 (2)_第3页
第3页 / 共320页
(精品)MTK各个重要功能模块 (2)_第4页
第4页 / 共320页
(精品)MTK各个重要功能模块 (2)_第5页
第5页 / 共320页
点击查看更多>>
资源描述

《(精品)MTK各个重要功能模块 (2)》由会员分享,可在线阅读,更多相关《(精品)MTK各个重要功能模块 (2)(320页珍藏版)》请在金锄头文库上搜索。

1、开发归档mtk学习开发归档011.1. 各模块功能Application layer: 包含用户定义的应用程序Framework layer: 包含消息处理和事件操作。UI Layer: 包含ui相关联的函数MMI Queue: 协议栈/L4将事件写入其中,MMI Task从中读取事件。L4/NS Queue: MMI Task将事件写入其中,L4 task/Network Simulator从中读取事件。MMI Task执行流程:1. 等待消息事件发送给MMI 队列2. MMI 队列中的消息由协议占发送3. Framework层执行事件。4. Framework层出发应用层的回调函数应用层对

2、接收事件做出回应(以按键事件为例子)1.1. L4 - MMI Task说明:1. 协议占向MMI Queue中写入事件2. MMI Task从MMI Queue中读取Framework层为最新注册事件调用回调函数应用层接收到按键事件并做出回应1.1. MMI-L4(应用程序发送播放声音请求)说明:1.应用层向framework层发送请求,使其向L4队列传送信息2.Framework将消息写入L4队列3.L4从L4队列中读取事件并播放请求的声音1.1.1. Framework 层1. 为应用程序提供事件句柄API来管理事件句柄键盘事件句柄API 协议事件句柄API Misc.Handlers-

3、 Exit Handlers Set Exit handlers for particular screen Execute Exit handler for current screen Clear Crrent Exit Handler2. History API3. Queue API- Create Queue oslMsgqid OslIntCreateMsgQ(PS8 queue_name,U32 max_msg_size,U32 max_msgs)- Write to QueueOSLSTATUS OslIntWriteMsgQ(oslMsgqidmsgqid,void *msg

4、Ptr,U32 msgSize, OSLWAITMODE wait_mode)- Read from QueueOSLSTATUS OslIntReadMsgQ(oslMsgqidmsgqid,void *msgPtr, U32 *msgSize,OSLWAITMODE wait_mode)1.1.2. UI 层2. 窗口函数Function to enter : void ShowCategoryXScreen(argument list);Function to exit : void ExitCategoryXScreen(void);Function to get the size o

5、f history : BYTE* GetCategoryXHistory(BYTE* buffer);Function to get the history : INT GetCategoryXHistorySize(void);ShowCatagoryXXXScreen注册事件句柄预处理UI元素- 调用重绘函数RedrawCategoryXXXScreen- 使用GDI函数绘制窗口ExitCategoryXXXScreen- 重新设置函数指针其他操作依据不同的窗口而定GetCategoryXXXHistorySize- 用来返回gui buffer和input buffer的大小GetCa

6、tegoryXXXHistory- 用来返回gui buffer和input buffer的数据GetCategoryXXXData- 用来返回input buffer- 改变softkey labelsVoid ChangeLeftSoftkey(STRING_ID s,IMAGE_ID i);Void ChangeRightSoftkey(STRING_ID s, IMAGE_ID i);- 改变softkey functionsVoid SetLeftSoftkeyFunction(void(*f)(void),KEY_EVENT_TYPE k);Void SetRightSoftkey

7、Function(void(*f)(void),KEY_EVENT_TYPE k);- 在菜单中获得高亮显示项INT GetHighlightedItem(void); 设置高亮显示效果Void SetHighlightedItem(INT item_index); 注册高亮显示句柄Void RegisterHighlightHandler(void(*fptr)(INT item_index); 移除高亮显示句柄Void ClearHighlightHandler(void);书写应用程序- 资源在PixtelDataTypes.h中定义APP_BASE定义各种资源 IDScreensStr

8、ingsImagesMenu Items (GlobalMenuItem.h)书写资源生成函数Resource Generator(PopulateRes.c)调用使用宏定义ADD_APPLICATION_XXX修改ResGenerator的”Makefile”和”readexcel.c”- Make file在make file中添加关键宏定义在 MMI_features$Proj.h中添加feature macro添加库文件(COMPOBJS)添加编译列表 创建目录 in mcumake 添加目录名到CUS_REL_SRC_COMP- Initialization初始化函数1. Initi

9、alizeAll(Not all)在现有工程主要工作: ADD_APPLICATION (AddApp函数)在framework中来添加新的 应用程序。 void AddApp(U32 nId, S8 *pName, U16 nMinId, U16 nMaxId) PopulateXXX :为各个应用程序加载其各种资源(字符串,图片,菜单项)2. 初始化各种事件句柄高亮显示句柄协议事件句柄- Entry and Exit标准入口函数调用执行当前的退出句柄获得当前窗口的GUI buffer获得窗口显示元素注册高亮显示句柄调用窗口函数绘制窗体设置退出句柄标准出口函数创建History 节点将入口函

10、数保存入History节点中填充输入buffer和History 节点中的GUI buffer保存history高亮句柄改变左键和右键句柄mtk学习开发归档021. MMI 和L4通信1.1. 如何通信Send/Receive messages thru the message Queue.#define OslMsgSendExtQueue msg_send_ext_queue#define OslReceiveMsgExtQ receive_msg_ext_qSetProtocolEventHandler(FuncCB, msg_id);1.2. 通信数据typedef struct il

11、m_struct oslModuleType oslSrcId; / Source module ID.oslModuleType oslDestId; / Destination module ID.oslMsgType oslSapId; / service access point.oslMsgType oslMsgId; / message name ID.oslParaType *oslDataPtr; /local parameter bufferoslPeerParaPtr *oslPeerBuffPtr; /peer buffer pointer ilm_struct;1.3.

12、 如何从MMI Queue中侦听消息OslReadCircularQ(&Message);OslReceiveMsgExtQ(mmi_qid, &mmi_message);1.4. 如何在MMI 队列中写入消息当NVRAM接收到其他消息时:OslWriteCircularQ(&ilm_ptr);1.5. 如何从L4C接听消息注册一个消息回调函数SetProtocolEventHandler(FuncCB, msg_id);1.6. 如何向L4C 发送消息2. 构建一个本地参数指针3. 将请求数据填充进本地参数指针中。4. 给结构体ilm_struct赋值。5. 向L4C发送消息。消息信息 =

13、头信息 + 数据信息Local parameter Header info:#define LOCAL_PARA_HDR kal_uint8 ref_count; kal_uint16 msg_len;peer buffer parameter Header info :#define PEER_BUFF_HDR kal_uint16 pdu_len; kal_uint8 ref_count; kal_uint8 pb_resvered; kal_uint16 free_header_space; kal_uint16 free_tail_space;2.7. 本地参数:(local para

14、meter)Header info + Data info:例如:typedef struct LOCAL_PARA_HDRkal_uint8 volume_type;kal_uint8 volume_level; mmi_eq_set_volume_req_struct;2.8. 如何创建本地参数:(动态分配内存)OslConstructDataPtr(sizeof(mmi_at_alarm_query_res_req_struct);2.9. 何时释放本地参数当L4接收到消息并处理完成后,会自动释放参数。OslFreeDataPtr(sizeof(mmi_at_alarm_query_res_req_struct);Peer buffer parameter:Header info + Data infoEx: typedef

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号