MSTAR平台开发入手简中版.ppt_第1页
MSTAR平台开发入手简中版.ppt_第2页
MSTAR平台开发入手简中版.ppt_第3页
MSTAR平台开发入手简中版.ppt_第4页
MSTAR平台开发入手简中版.ppt_第5页
已阅读5页,还剩82页未读 继续免费阅读

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Demo App 快速指导 Sunny Wang(王乔),2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,2,内容,MAE平台简介 State machine(状态机) Widget/Container/Model(控件/容器/数据容器) View(视图) AP Manager(应用程序管理者) 基于MAE平台设计第一个应用程序 设计状态机 用XFSM实现状态机 用XRG装载资源 编写代码 在模拟器上运行,1 MAE平台简介,2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,4,1.1 MAE平台架构,1.2 AP的组成,2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,5,1.3状态机(State machine),状态(Mode) 状态跳转( Transition ) 执行顺序( Sequence ),2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,6,1.3.1 状态和活动Mode and Activities,一个状态包含 状态名(Mode name) 进入活动(Entry activity) 退出活动(Exit activity),2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,7,1.3.2 状态跳转(Transition),状态跳转包含: 源状态(Source Mode) 目标状态(Destination Mode) 跳转类型(Transition Type ) 事件/条件(Event /Condition):Internal, External 行为(Action),2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,8,Source Mode,Target Mode,Event & Condition (optional),Run Action (optional),Exit Activities,Entry Activities,1.3.3 执行顺序(Execute sequence),进入退出函数和action的执行顺序 执行Condition函数:return TRUE 退出源状态(Exist 函数) 执行Action函数 进入目的状态(Entry函数),2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,9,1.4 XMMI UI layout,XMMI给AP提供了containers和widgets来设计UI layout Widget是基本的UI单位,例如Image widget和Text widget等 Container用来把多个widget (和container)放在一起组成一个显示单元 UI flow是由View manager控制的多个View组成的 Model是数据的容器,通常和Widget搭配使用。,2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,10,1.5 Widget,显示数据 处理事件 只知道自己的大小而不知道自己的位置 必须放在一个Container里面 通常情况下只能搭配一种Model 需要监听数据的改变 有一些共同和特殊的属性(properties) Color, padding, widget-specific flags,2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,11,1.6 Container,有一个 (widget)stack来存放其子widget 对widget的Layout进行管理 处理Widget绘制的请求 自下而上的绘制其子widget,2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,12,1.7 Model,一个数据容器 只用来存放数据而不去管数据如何呈现 可以对其存放的数据进行操作 有一个通知机制(IModel) 添加listener (注册一个callback函数) 通知 取消(Cancel)listener,2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,13,2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,14,1.8 Container, Widget 和 Model之间的通知机制,Widget,Container,Model,Add Listener,Notify,Events,ICONTAINER_Invalidate(),IWIDGET_Draw(),1.9 VDF (View Description File) (一),什么是VDF? VDF即View Description File,是一种XML格式的编程语言,我们可以用 VDF来描述手机画面。如widget和container的大小、位置、属性等。 为什么要使用VDF? 我们可以在C代码中把widget插入container,但是对于复杂的View来说这样就太麻烦了。于是XMMI提供了VDF的机制来简化UI的实现。 VDF的优点 语法简单,容易使用 具有高可读性 容易定制,2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,15,2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,16,1.9 VDF (View Description File)(二),Resource File .c,Generator,Header file (View ID & Widget ID),2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,17,1.9 VDF (View Description File) (三), ,VDF的语法可以参考ViewDefinitionLanguage.dtd, mae_vdftags.h,1.10 AP Manager,2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,18,Applet A,Applet B,A,AP History,MAE,B,1.10 AP Manager,2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,19,Applet A,Applet B,A,AP History,MAE,B,1.11 引用个数Reference count,MAE 把每一个 APP/SRV/Widget看做一个对象,Reference count用来表示使用该对象当前被引用的个数。 当一个对象被另一个对象创建或引用时,这个对象的Reference count会被加一。 当一个对象被引用它的对象释放的时候,MAE会将其Reference count减一,然后判断Reference count是否等于0。只有Reference count等于0时该对象才会真正被释放。,2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,20,1.12 事件处理流程Event flow,2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,21,每一个object有它自己的事件处理函数叫做 xxx_HandleEvent,1、用户可以对接收到的Event进行处理,2、该Event被交给View manager处理,3、如果View manager未处理,把该事件交给state machine处理,2. 基于MAE平台设计第一个应用程序,将讲述以下内容,创建一个范例AP 使用XFSM设计AP 通过主菜单启动AP,2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,23,2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,24,2.1 设计工具,XMMI提供了以下工具,这些工具让我们设计AP变得更容易 XFSM (Xmmi Finite State Machine): 这个工具帮助我们用状态机来设计AP。程序员可以使用XFSM来设计状态树和状态条状。 XFSM会把这些设计转变成C代码。 XRG (Xmmi Resource Generator): XRG管理所有的资源,这些资源会在AP中用到,例如: 字符串 图片和铃声 VDF 用户设定值(可定制) 其他 (菜单, 字体 ,PLMN表格等),2.2 XFSM 与 XRG的关系,XFSM帮助我们建立AP的程序框架,XRG 提供AP要用到的资源,将框架 和资源组合 在一起,2.3 创建一个新AP的过程,AP设计阶段(状态机,UI流图) 使用XFSM实现状态机 创建一个新工程 设计状态树(Mode Tree) 创建事件(Event) 设计状态跳转(Transition) 将设计转成C代码 使用XRG新增需要的资源 添加需要的字符串,图片 添加demo中要用到的菜单 添加Shortcut 创建一个新的VDF文件和头文件(head file),并添加到XRG中 编辑mmi_mainmenuapp.vdf,将demo加入主菜单 编译XRG 编写代码 在模拟器上运行,休息,打电话,睡觉,闭眼,睁眼,去洗澡,9:00PM,电话铃响,去接电话,接完电话,去睡觉,洗完澡,状态分级后的简化状态模型,2.4 状态跳转图,状态树,英文化,系统化,范例APP状态树,2.5 状态树,2.6 UI Flow,Select Demo,Incoming call,End call,End call,Select 9:00 PM,Go to Bed,3 用XFSM实现状态机,2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,31,3.1 创建一个新XFSM工程(一),在XFSM打开工程文件 1.运行toolsXFSMXFSMWin.exe , 菜单FileOpen (projsccustomerSZsrcmmiresourceXFSMProjectXFSMWS_xmmi.xml),3.1 创建一个新XFSM工程(二),新增一个子工程, 菜单FileAddNew Project 在弹出的串口输入如下信息, 文件路径选择 projscapplicationmmiapp,设置页面,默认值即可。 如果需要为DEMOAPP设置一个编译宏,可以再Compiler Option一项中输入 “definded(_MMI_DEMOAPP_)”,3.1 创建一个新XFSM工程(二),3.2 设计状态树,Init : entry Active: TakeRest: entry & exit WatchTV: Entry & Exit TakeShower: entry & exit AnswerCall: entry & exit GotoBed: entry & exit Error: entry & exit Suspend: Stop:,3.2.1 添加Init mode,在Modes页面, 在root mode “DemoApp”上点鼠标右键. 选择“Add item“.,3.2.2 添加Active mode,3.2.3 添加Suspend mode,3.2.4 添加Stop mode,3.2.5 添加TakeRest mode,3.2.6 添加AnswerCall mode,3.2.7 添加GotoBed mode,3.2.8 添加ShowError mode,3.3添加内部事件,InitSuccess ShowError Ring TakeShower EndCall GoToSleep WatchTV CloseApp,3.4 添加状态跳转,状态跳转列表 Transitions: FROM-TO-TYPE-ACTION-CONDITION-EVENT1-EVENT2-. _DemoApp -_DemoApp -internal -TRUE-FALSE-DEMOAPP_IEVT_CloseApp _DemoApp -_Active_Error-default -FALSE-FALSE-DEMOAPP_IEVT_ShowError _Init -_Active-default -FALSE-FALSE-DEMOAPP_IEVT_InitSuccess _Active_TakeRest-_Active_AnswerCall -default-FALSE-FALSE-DEMOAPP_IEVT_Ring _Active_AnswerCall-_Active_TakeRest-deep-FALSE-FALSE-DEMOAPP_IEVT_EndCall _Active_TakeRest_WatchTV -_Active_TakeRest_TakeShower-default -FALSE-FALSE-DEMOAPP_IEVT_TakeShower _Active_TakeRest_TakeShower-_Active_GotoBed -default -FALSE-FALSE-DEMOAPP_IEVT_GoToSleep _Active_TakeRest_TakeShower-_Active_TakeRest_TakeShower-internal -TRUE-FALSE-MAE_EVT_KEY_PRESS,3.4.1 添加transition(一),2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,45,3.4.2 添加transition(二),2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,46,3.4.3 添加transition(三),2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,47,3.4.4 添加transition(四),2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,48,3.4.5 添加transition(五),2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,49,3.4.6 添加transition(六),2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,50,3.4.7 添加transition(七),2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,51,3.4.8 添加transition(八),2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,52,步骤4 添加transition,3.4.9 状态跳转结果,3.4.10 生成代码,2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,54,将XFSM的设计生成代码,执行菜单 Build-Gen All,3.4.11 XFSM 帮我们做的修改,DemoApp 源文件 在App_mmiSource Filesapp下创建DemoApp文件夹, 并将mmi_DemoApp.c放入其中的src目录 DemoApp头文件 在DemoAppinc目录中放mmi_DemoApp.h, 在DemoAppincpriv中放mmi_DemoApp_priv.h 模拟器AP包含路径: 修改projscapplicationmmiappAppIncludePath_V2.ini. makefile: 修改projscapplicationmmiappapp.mak Classe ID头文件: 修改projscapplicationmmicoremmi_clstbl.h,2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,55,4 在XRG中添加资源,4.1 打开XRG工程 4.2 添加字符串 4.3 添加图片 4.4 添加菜单ID 4.5 添加Shortcut function ID 4.6 添加与修改VDF,4.1 打开XRG工程,2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,57,运行toolsXRGXRG.exe,菜单File-Open Project打开工程文件 projsccustomerSZsrcmmiresourcexmmi_basexmmi.xml,4.2 添加字符串,2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,58,添加一个字符串的步骤如下: 打开String ID Manager 添加一个新的字符串ID 填充该ID对应的每种语言的内容,4.2.1 打开String ID Manager,2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,59,添加字符串 在StringTable上点击右键,在弹出的菜单中,选择String ID Manager,4.2.2 添加一个新的字符串ID(一),2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,60,添加字符串 在Common上点击右键,在弹出的菜单中,选择Add-Single,4.2.2 添加一个新的字符串ID(二),2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,61,添加字符串 生成如下红框内所示的新字符串ID,4.2.2 添加一个新的字符串ID(三),2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,62,添加字符串 按红色框内修改字符串ID,然后点击OK,4.2.3 填充新字符串内容(一),2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,63,添加字符串 双击Chinese_S,在String处输入“样例”,添加该字符的中文文字,4.2.3 填充新字符串内容(二),2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,64,添加字符串 双击English,在String处输入“Demo”,添加该字符的英文文字,4.2.4 参照前面的步骤添加其他字符串,TXT_LIL_N_DEMO_WATCH_TV(中文“看电视”,英“Watch TV” TXT_LIL_N_DEMO_REACH_9(中文“9点到”,英“9:00PM”) TXT_LIL_N_DEMO_TAKE_SHOWER(中文“洗澡”,英“Take shower”) TXT_LIL_N_DEMO_SPREAD_SOAP(中文“擦肥皂”,英“Spread soap”),4.3 添加图片,4.3.1 将图片加入目录,2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,67,添加图片 在目录projsccustomerSZsrcmmiresourcexmmi_base_ResimageQVGA中新建Demo文件夹,并将DEMO_IMG_ANSWER_CALL.png, DEMO_IMG_SLEEP.png, DEMO_IMG_TAKE_SHOWER.png拷贝到此目录中,4.3.2 打开图片列表,2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,68,添加图片 双击image_list,XRG会装载所有图片资源界面。,4.3.3 添加图片 (wxd),2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,69,添加图片 点击鼠标右键,选择Add-Multiple,此功能可以一次把一个目录下的图片添加进来。Single就只能一次添加一张图片。 在弹出的窗口选中Demo,如右图。然后点击OK,4.4 添加菜单ID,4.4.1 打开菜单列表,2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,71,添加菜单 双击menu_list,XRG装载MENU界面,如下图。点击红色框内的Main Menu切换到mainmenu界面,4.4.2 添加该AP在主菜单中菜单ID(一),2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,72,添加菜单 在Organizer上点击右键,选择Add Sub-Menu,在弹出的对话框中按右图进行输入,4.4.3 添加该AP在主菜单中菜单ID(二),2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,73,添加菜单 输入完毕后如下所示,4.4.4 添加AP内部的菜单ID(一),2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,74,添加菜单 切换到AP MENU页面,在Application上点右键,在新窗口如下输入,4.4.4 添加AP内部的菜单ID(二),2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,75,添加菜单 再次在application上点右键,输入左图数据,添加完菜单后在树状结构中新增菜单,如右图,4.5 添加Shortcut function ID(一),2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,76,在Setting上点击右键,选择Library Mode. 在弹出的窗口中,点开Enum,双击Shortcuts Function ID,4.5 添加Shortcut function ID(二),2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,77,添加Shortcut 点击ADD,添加SHORTCUTS_FUNC_DEMO,4.6 添加VDF,4.6.1 准备VDF和头文件,2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,79,编辑VDF和头文件 demoapp.vdf,放入左图所示目录中 projsccustomerSZsrcmmiresourcexmmi_base_ResvdfQVGAappDemo mmi_demoapp_view_id.h,放入右图所示目录中 projscapplicationmmiappDemoAppinc,4.6.2 打开VDF列表,2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,80,添加VDF 双击vdf_list,XRG装载VDF界面,4.6.3 增加一个VDF(一),2019/7/12,Copyright 2008 MStar Semiconductor, Inc. All rights reserved.,81,添加VDF 点击鼠标右键,选择Add-Single,4.6.3 增加一个VDF(二),2019/7/12,Copyr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论