1.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层出发应用层的回调函数 应用层对接收事件做出回应 (以按键事件为例子) 说明: 1. 协议占向MMI Queue中写入事件 2. MMI Task从MMI Queue中读取 Framework层为最新注册事件调用回调函数 应用层接收到按键事件并做出回应 (应用程序发送播放声音请求) 说明: 1.应用层向framework层发送请求,使其向L4队列传送信息 2.Framework将消息写入L4队列 3.L4从L4队列中读取事件并播放请求的声音1.1. L4 -> MMI Task
1.1. MMI->L4
1. 为应用程序提供事件句柄API来管理事件句柄 键盘事件句柄API 协议事件句柄API Misc.Handlers - Exit Handlers Set Exit handlers for particular screen Execute Exit handler for current screen Clear Crrent Exit Handler 2. History API 3. Queue API - Create Queue oslMsgqid OslIntCreateMsgQ(PS8 queue_name,U32 max_msg_size,U32 max_msgs) - Write to Queue OSLSTATUS OslIntWriteMsgQ(oslMsgqidmsgqid,void *msgPtr,U32 msgSize, OSLWAITMODE wait_mode) - Read from Queue OSLSTATUS OslIntReadMsgQ(oslMsgqidmsgqid,void *msgPtr, U32 *msgSize,OSLWAITMODE wait_mode) 2. 窗口函数 Function to enter : void ShowCategoryXScreen(argument list); Function to exit : void ExitCategoryXScreen(void); Function to get the size of history : BYTE* GetCategoryXHistory(BYTE* buffer); Function to get the history : INT GetCategoryXHistorySize(void); ShowCatagoryXXXScreen 注册事件句柄 预处理UI元素 - 调用重绘函数 RedrawCategoryXXXScreen - 使用GDI函数绘制窗口 ExitCategoryXXXScreen - 重新设置函数指针 其他操作依据不同的窗口而定 GetCategoryXXXHistorySize - 用来返回gui buffer和input buffer的大小 GetCategoryXXXHistory - 用来返回gui buffer和input buffer的数据 GetCategoryXXXData - 用来返回input buffer - 改变softkey labels Void ChangeLeftSoftkey(STRING_ID s,IMAGE_ID i); Void ChangeRightSoftkey(STRING_ID s, IMAGE_ID i); - 改变softkey functions Void SetLeftSoftkeyFunction(void(*f)(void),KEY_EVENT_TYPE k); Void SetRightSoftkeyFunction(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 定义各种资源 ID Screens Strings Images Menu 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 mcu/make 添加目录名到CUS_REL_SRC_COMP - Initialization 初始化函数 1. InitializeAll(Not all) 在现有工程主要工作: <1.> ADD_APPLICATION (AddApp函数)在framework中来添加新的 应用程序。 void AddApp(U32 nId, S8 *pName, U16 nMinId, U16 nMaxId) <2.> PopulateXXX :为各个应用程序加载其各种资源(字符串,图片,菜单项) 2. 初始化各种事件句柄 高亮显示句柄 协议事件句柄 - Entry and Exit 标准入口函数 调用执行当前的退出句柄 获得当前窗口的GUI buffer 获得窗口显示元素 注册高亮显示句柄 调用窗口函数绘制窗体 设置退出句柄 标准出口函数 创建History 节点 将入口函数保存入History节点中 填充输入buffer和History 节点中的GUI buffer 保存history 高亮句柄 改变左键和右键句柄 1.1.1. Framework 层
1.1.2. UI 层