《展讯平台MMI介绍》PPT课件.ppt

上传人:wuy****n92 文档编号:54715342 上传时间:2022-10-29 格式:PPT 页数:73 大小:1.20MB
返回 下载 相关 举报
《展讯平台MMI介绍》PPT课件.ppt_第1页
第1页 / 共73页
《展讯平台MMI介绍》PPT课件.ppt_第2页
第2页 / 共73页
点击查看更多>>
资源描述

《《展讯平台MMI介绍》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《展讯平台MMI介绍》PPT课件.ppt(73页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、10/29/2022Proprietary and Confidential Information2展讯平台展讯平台MMI软件开发介绍软件开发介绍撰写人:日期:Spreadtrum10/29/202210/29/2022Proprietary and Confidential Information3培训目的培训目的介绍展讯MMI平台介绍如何使用展讯MMI平台10/29/2022Proprietary and Confidential Information4缩略语缩略语GUI:Graphical User InterfaceMMI:Man Machine InterfaceSMS:Shor

2、t Message ServiceSS:Supplementary ServicePB:Phone BookMMS:Multimedia Message ServiceATC:AT CommandWAP:Wireless Application ProtocolFS:File SystemOSA:Operating System Abstract layerRTOS:Real-Time Operating SystemDAL:Device Abstract LayerHAL:Hardware Abstract LayerSTK:SIM ToolKit10/29/2022Proprietary

3、and Confidential Information5培训内容培训内容F平台简介FReference MMI介绍FGUI介绍FKernel介绍F资源介绍F实例介绍10/29/2022Proprietary and Confidential Information6平台简介平台简介 Spreadtrum提供了一个完整的MMI开发平台。包括MMI开发配套工具软件包和一套参考的MMI源码。客户可以基于此方便的做二次开发。10/29/2022Proprietary and Confidential Information7平台结构平台结构RTOSDiagnosticsDrivers(HAL)MN(

4、Call,CB,SS,SMS,GPRS)Layer 3Layer 1Layer 2Call SMSCBS SSPB Game.ATCMIDIMP3MPEG4H.263 EnginesDigital CameraDAL(LCD,KPD,CHR)FS,AUDIO,VIDEO,Multimedia EnginesOSAMMI Platform(Kenel,GUI)Other application10/29/2022Proprietary and Confidential Information8Message ManagementWindowManagementCallSMSPhonebookCa

5、ll RecordSettingSTKWAPCameraMMSMenuListboxEditboxAnimationTextboxLabelMsgboxMMI结构结构KERNELGUIRef MMI10/29/2022Proprietary and Confidential Information9MMI平台三个重要概念平台三个重要概念Application:应用,指MMI中的应用模块。例如:SMS,CC等。一个应用可以包含多个窗口。Window:窗口,用于显示和处理送给此窗口的各种消息。例如:按键消息、Timer消息等。一个窗口上可以有多个控件Control:控件,可以完成某种特定功能。例如

6、:编辑功能、文本显示功能、动画功能等。10/29/2022Proprietary and Confidential Information10窗口、控件示例窗口、控件示例WindowControl10/29/2022Proprietary and Confidential Information11应用、窗口和控件关系图应用、窗口和控件关系图10/29/2022Proprietary and Confidential Information12培训内容培训内容F平台简介FReference MMI介绍FGUI介绍FKernel介绍F资源介绍F实例介绍10/29/2022Proprietary

7、and Confidential Information13Call Control基本通话功能(MO和MT)紧急呼叫发送DTMF通话50秒提示音来电过滤通话计时功能呼叫等待自动重拨IP一键通10/29/2022Proprietary and Confidential Information14SMS收发短消息支持长短信支持群发处理小区广播短信黑名单10/29/2022Proprietary and Confidential Information15Reference MMIAccessoryGameDigital CameraEng(工程模式)Environment SettingVide

8、oMSD(防盗功能)MP3U DiskRecordPhone(开关机,Pin)PhonebookSTKCall LogMMSBrowserMultimedia10/29/2022Proprietary and Confidential Information16大内存的分配和复用大内存的分配和复用大内存(Memory Block)本平台上内存的使用分为三类:Memory Poolsize 1600Byte,在 memory pool 申请Heap1600B Size 50KB,根据应用的互斥性,为特定的应用分配了大块的Memory block10/29/2022Proprietary and

9、Confidential Information17大内存的分配和复用(续)大内存的分配和复用(续)平台中的各个模块往往会分配比较大的连续内存,而且只提供给本模块使用,通常会造成内存的浪费,为了节省Memory,因此需要对大块内存进行复用。如下图所示:每当需要增加新的大块Memory Block的时候,首先是应该考虑是否可以和别的模块共用。不行再增加新的block。10/29/2022Proprietary and Confidential Information18培训内容培训内容F平台简介FReference MMI介绍FGUI介绍介绍FKernel介绍F资源介绍F实例介绍10/29/20

10、22Proprietary and Confidential Information19GUIGUI 模块的主要功能就是给应用开发提供最基本的图形控件接口,并跟窗口系统、消息机制结合,处理基本的人机操作10/29/2022Proprietary and Confidential Information20GUI提供的控件提供的控件树状结构,显示多级菜单选中后自动进入下级子菜单,或者执行相应的操作菜单项文字过长滚动显示 目前已实现的风格:文字菜单,旋转图,九宫格Menu10/29/2022Proprietary and Confidential Information21GUI提供的控件(续)提

11、供的控件(续)能正确编辑和录入数字号码、密码、字母及文字包括标题、软键盘,日期、时间、秒表、密码、数字号码、字母、非ASCII码文字等正文的各种特殊显示显示编辑中的光标显示编辑中的候选字自动分页支持滚动条EditBox10/29/2022Proprietary and Confidential Information22GUI提供的控件(续)提供的控件(续)分为三类:单选,多选,文字支持上下滚动,连续滚动支持数据分批载入可以在标题上显示当前项和总项数(例如 2/200)动态添加,删除,更改ListBox10/29/2022Proprietary and Confidential Informa

12、tion23GUI提供的控件(续)提供的控件(续)AnimitionCalendarTextbox MsgboxPrgboxPunctuationSelectionpageLabelSoftkeyStatusbarStrokepageBlock(68ad提供半透显示)ButtonDropdownlistRichtext(68ad提供)Iconlist(68ad提供)Spellpage请参考MMK_GUI控件软件API接口说明书.doc10/29/2022Proprietary and Confidential Information24控件控件(control)封装图形化,和用户交互可接受消息

13、,有消息处理函数依赖于窗口存在每个具体的控件有唯一ID控件的特征控件的特征模块化,使用控件可以使开发人员专注于应用的功能开发,而不是过多考虑界面的开发 方便添加新控件更改现有控件风格优点优点10/29/2022Proprietary and Confidential Information25控件(续)控件(续)控件的风格控件的风格每一类Control和Window的缺省显示风格定义在文件中用户可自定义各种不同的字体、背景色、前景色,定义在文件中和屏幕高度,宽度有关的数据定义在中10/29/2022Proprietary and Confidential Information26控件的创建方

14、式控件的创建方式在wintable中添加:CREATE_MENU_CTRLCREATE_LISTBOX_CTRLCREATE_TEXTEDITBOX_CTRLCREATE_ANIMATION.Open窗口后调用控件的函数静态创建静态创建创建animation控件(GUIANIMATE_Init)将该控件加入到window中(MMK_CreateDynaCtrl)设定animation控件的参数(GUIANIMATE_SetParam)销毁控件(GUIANIMATE_Destroy)动态创建动态创建10/29/2022Proprietary and Confidential Informatio

15、n27GUI_LCD直接在屏幕上画线,显示图片对底层LCD驱动进行封装 LCD_DrawHLine LCD_DrawVLine LCD_DrawRect LCD_FillRect LCD_DisplayCompressedBmp LCD_DrawLine 10/29/2022Proprietary and Confidential Information28GUI_Font直接在屏幕上显示字符串获得字体的高度,宽度GUI_GetFontWidth GUI_GetFontHeight LCD_DisplayStringInRect LCD_DisplayString .10/29/2022Pro

16、prietary and Confidential Information29培训内容培训内容F平台简介FReference MMI介绍FGUI介绍FKernel介绍介绍F资源介绍F实例介绍10/29/2022Proprietary and Confidential Information30KernelMMI Kernel主要提供完善的消息驱动流程和窗口管理机制。为各种上层应用(CC、SMS、WAP、MMS等)提供良好的支持。整个kernel可以分为5个部分:消息、键盘、触摸屏、定时器和窗口。MMI消息是MMI Task用一个循环来接收和处理的。10/29/2022Proprietary a

17、nd Confidential Information31消息消息开始初始化内部消息队列为空获得外部消息Dispatch外部消息刷屏释放外部消息释放内部消息刷屏Dispatch内部消息是否在App_Task的消息循环当中总是处理完内部消息之后再处理外部消息。10/29/2022Proprietary and Confidential Information32消息分类消息分类内部消息内部消息:MMI task内部发送、接收和处理的消息 MSG_TYPE_WINDOW把消息派发给指定的窗口 MSG_TYPE_FOCUS把消息派发给Focus的窗口 MSG_TYPE_BROADCAST派发广播消息

18、。派发内部消息派发内部消息根据内部消息的类型:10/29/2022Proprietary and Confidential Information33消息分类(续)消息分类(续)外部消息:外部消息:主要包括PS消息、key消息、Timer消息和一些由其它task发送过来的消息派发外部消息派发外部消息根据外部消息来源分为:Keypad把消息派发给键盘部分,键盘部分验证消息的合法性,并把消息派发给窗口;Touchpanel 把消息派发给触摸屏部分,触摸屏部分验证消息的合法性,并把消息派发给窗口;Timer把消息派发给定时器部分,定时器部分会根据定时器的ID将消息派发给键盘,触摸屏和窗口或者直接处理

19、背光灯键盘灯等;其它task根据消息的ID,遍历所有的App,把消息交给注册过消息ID的App处理。10/29/2022Proprietary and Confidential Information34消息发送方式消息发送方式MMK_SendMsg发送同步消息,消息会立即得到处理。而发送同步消息的窗口必须等到接收消息的窗口将消息处理完之后才能够返回。MMK_PostMsg发送异步消息,消息添加到内部消息队列,然后直接返回。10/29/2022Proprietary and Confidential Information35键盘键盘接收到按键消息按键状态验证按键合法性验证按键合法性记录同时按

20、键信息,启动按键计时器该按键无效将对应的同时按键信息清除是否DTMF按键定时器启动处理DTMF停止按键定时器调用Focus的窗口处理函数MMK_DispMsgToWinUPDOWN是否是是否否是MSG_KEYDOWNMSG_KEYUPMSG_KEYPRESSUP否10/29/2022Proprietary and Confidential Information36触摸屏触摸屏接收到触摸屏消息按键状态记录键值,启动计时器将保存的键值清空按键定时器启动停止按键定时器记录当前控件并调用其处理函数UPDOWN是MSG_TP_PRESS_DOWNMSG_TP_PRESS_UPMOVE在触摸点有响应消息

21、的控件调用DEFAULT处理函数MSG_TP_PRESS_MOVE否是10/29/2022Proprietary and Confidential Information37定时器定时器派发定时器消息定时器ID键盘模块长按消息处理函数触摸屏模块长按消息处理函数关闭键盘背光灯关闭LCD背光灯LCD Sleep点亮背光灯,停止Sleep定时器窗口模块消息处理函数停止一次性的定时器KBD_TIMERTP_TIMEROTHERKEYPAD_LIGHT_TIMERLCD_LIGHT_TIMER是否定时器信号是否在定时器数组中返回否是10/29/2022Proprietary and Confidenti

22、al Information38窗口窗口窗口是最终用户可以直接看到的一个个实在的屏幕,是直接和用户打交道的,专门处理用户的按键输入等操作,并且将最终用户输入后的处理结果显示在屏幕上。窗口管理主要包括应用窗口和控件之间的管理和通信、各个窗口间稳定的切换。10/29/2022Proprietary and Confidential Information39窗口链表窗口链表openedwin_listprocmsg_winend_openwinlistfocus_winend_virwinlistvirtualwin_list10/29/2022Proprietary and Confidenti

23、al Information40窗口优先级窗口优先级设置窗口优先级的目的是为了保护那些重要的窗口在处于Focus状态下不被打断,比如Call窗口,在Call的过程中不应该出现被SMS或者Alarm窗口打断,否则会影响Call的过程。我们在这里暂时制定了4个优先级:WIN_LOWEST_LEVEL,WIN_ONE_LEVEL,WIN_TWO_LEVEL,WIN_THREE_LEVEL。次序是由低到高10/29/2022Proprietary and Confidential Information41窗口的基本操作窗口的基本操作打开窗口打开窗口分配窗口数据空间解析window table初始化控

24、件创建控件并附着到窗口窗口已打开返回判断窗口优先级向focus窗口发送(send)MSG_LOSE_FOCUS将新窗口加入到opened win list设置新窗口为focus窗口向新窗口发送(Post)MSG_OPEN_WINDOW向新窗口发送(Post)MSG_FULL_PAINT获得之前的 virtual win list向新窗口发送(Send)MSG_OPEN_WINDOW将新窗口加入到虚拟窗口链表中是否SwitchFocusWindowOpenVirtualWindow10/29/2022Proprietary and Confidential Information42打开窗口打开

25、窗口(1 1)新窗口优先级新窗口优先级=focus窗口优先级窗口优先级openedwin_listprocmsg_winend_openwinlistfocus_winend_virwinlistvirtualwin_listfocus_winend_openwinlist10/29/2022Proprietary and Confidential Information43打开窗口(打开窗口(2 2)新窗口优先级新窗口优先级 virwin_list最后窗口优先级最后窗口优先级end_openwinlistfocus_win10/29/2022Proprietary and Confident

26、ial Information46关闭窗口(关闭窗口(2 2)Openwin_list最后窗口优先级最后窗口优先级=virwin_list最后窗口优先级最后窗口优先级322openedwin_listprocmsg_winend_openwinlistfocus_winend_virwinlistvirtualwin_listend_virwinlist210/29/2022Proprietary and Confidential Information47窗口和控件之间的管理和通信窗口和控件之间的管理和通信MMK_DispMsgToFocusWinMMK_DefaultProcessWinM

27、sg判断返回值MMK_ProcOpenWinMsgMMK_RunWinProcMMK_ProcSpecialWinMsg结束MMK_RunWinProcMMI_RESULT_TRUEMMI_RESULT_CTLOK等控件处理MMI_RESULT_FALSE进行缺省的消息处理,具体为:如果是除MSG_OPEN_WINDOW、MSG_CLOSE_WINDOW、MSG_GET_FOCUS、MSG_LOSE_FOCUS、MSG_FULL_PAINT五个窗口消息之外的消息,则先交给active control进行消息处理如果是以下三种消息MSG_OPEN_WINDOW、MSG_FULL_PAINT、MS

28、G_LOSE_FOCUS则对此进行处理1.当是OPEN_WINDOW消息时,如果是focus窗口,则给各control发送MSG_CTL_OPEN消息;给activecontrol发送MSG_CTL_GETACTIVE消息;如果不是focus,则给各control发送MSG_VIRTUAL_OPEN消息;2.当是FULL_PAINT消息时,画title,画softkey;3.当是LOSE_FOCUS消息时,从消息队列删除发给它的FULL_PAINT消息窗口消息处理函数特别的消息处理函数,包括以下消息:,调用各control的Destroy函数进行销毁;,依次调用各control的消息处理函数处

29、理MSG_CTL_GET_FOCUS消息;如果有菜单并且需要滚动显示标题时创建timer;,依次调用各control的消息处理函数处理MSG_CTL_LOSE_FOCUS消息;4.MSG_FULL_PAINT,显示title和softkey;依次调用各control的消息处理函数处理MSG_CTL_PAINT消息;5.MSG_TIMER,滚动显示title或者调用各control消息处理函数处理MSG_TIMER消息;10/29/2022Proprietary and Confidential Information48培训内容培训内容F平台简介FReference MMI介绍FGUI介绍FK

30、ernel介绍F资源介绍资源介绍F实例介绍10/29/2022Proprietary and Confidential Information49资源介绍资源介绍资源信息包括text,image,animation,ring,font每个App都有自己单独的资源project,包含上述资源信息使用ResourceEditor可以方便的管理资源。10/29/2022Proprietary and Confidential Information50资源介绍(续)资源介绍(续)在ResourceEditor中添加,更改资源之后保存,会生成相应project的资源的头文件。比如mmi*_等。在这些头

31、文件中包含相应的资源ID,mmi中使用这些ID就可以得到相应的资源10/29/2022Proprietary and Confidential Information51培训内容培训内容F平台简介FReference MMI介绍FGUI介绍FKernel介绍F资源介绍F实例介绍实例介绍10/29/2022Proprietary and Confidential Information52实例介绍实例介绍实例介绍:实例介绍:app、window、control的创建(以record为例)App的添加,以模块化实现方式,window和control的创建是在Step5中实现。Step1:创建工作目

32、录和相应的文件创建工作目录和相应的文件Step2:定义定义record Application全局变量全局变量Step3:注册系统消息注册系统消息Step4:模块初始化模块初始化Step5:Window的实现的实现Step6:Menu的实现的实现Step7:NV的实现的实现Step8:模块资源的增加模块资源的增加以上以上8点不是缺一不可,要视具体应用而言点不是缺一不可,要视具体应用而言在下面的举例中,黑色黑色表示code;红色红色表示注意;绿色绿色是code注释10/29/2022Proprietary and Confidential Information53Step1:创建工作目录和相应

33、的文件创建工作目录和相应的文件MMI_AppApprecordMMI_AppApprecordcMMI_AppApprecordh添加目录:添加目录:10/29/2022Proprietary and Confidential Information54Step1:创建工作目录和相应的文件创建工作目录和相应的文件(续续)添加文件:添加文件:CH说明功 能函数mmirecord.cmmirecord.hRecord模块外部数据结构,接口函数,供其它模块调用mmirecord_internal.hReocrd模块内部数据结构,接口函数,仅供record模块内部调用窗 口处理mmirecord_wi

34、ntab.cmmirecord_id.hRecord模块定义的win ID,控件IDMenummirecord_menutable.cmmirecord_menutable.defRecord模块涉及的菜单mmirecord_menutable.hNVmmirecord_nv.cmmirecord_nv.hRecord模块定义的NVResourcemmirecord_image.hRecord模块的资源文件,有图片,字符串。Reord模块没有动画,所以没有mmirecord_anim.h文件mmirecord_text.h显示mmirecord_position.hRecord模块显示位置定义

35、,公用部分mmirecord_position_176x220.h176*220的LCD显示位置定义mmirecord_position_240 x320.h240*320的LCD显示位置定义10/29/2022Proprietary and Confidential Information55Step2:定义定义record Application全局变量全局变量/record applicationMMI_APPLICATION_T g_mmirecord_app;需要在中声明 extern MMI_APPLICATION_T g_cc_app;extern MMI_APPLICATION

36、_T g_mmisms_app;extern MMI_APPLICATION_T g_mmipb_app;extern MMI_APPLICATION_T g_mmirecord_app;10/29/2022Proprietary and Confidential Information56Step3:注册系统消息注册系统消息在文件中增加此应用模块希望处理的系统消息/voice recordREG_APP(AUDIO_RECORD_FINISH_IND,AUDIO_RECORD_WRITE_HEADER_FAILED_REP,&g_mmirecord_app)10/29/2022Proprie

37、tary and Confidential Information57Step4:模块初始化模块初始化在中void APP_Init(void)/初始化开机和IDLE界面的APPLICATION MMIPHONE_AppInit();/init the main application main_app_init();/voicerecord MMIAPIRECORD_AppInit();10/29/2022Proprietary and Confidential Information58void MMIAPIRECORD_AppInit(void)/record 内部状态 初始化/NV读写

38、/系统消息处理函数=MMIRECORD_HandlePsMsg;Step4:模块初始化(续)模块初始化(续)需要编写消息处理函数MMIRECORD_HandlePsMsg。实现对AUDIO_RECORD_FINISH_IND 等系统消息的处理。10/29/2022Proprietary and Confidential Information59Step5:Window的实现的实现(1 1)1.创建 Window Table表/the menu window when record is in MMIRECORD_STATE_START statusWINDOW_TABLE(MMIRECORD

39、_OPTIONMENU_WIN_TAB)=CLEAR_LCD,WIN_PRIO(WIN_ONE_LEVEL),WIN_FUNC(uint32)HandleStartStatusRecordMenuWinMsg),WIN_ID(MMIRECORD_OPTIONMENU_WIN_ID),CREATE_MENU_CTRL(0,0,240,320,_GroupId,_CtrlId),END_WIN;使用使用Window Table设计窗口设计窗口10/29/2022Proprietary and Confidential Information60WINDOW_TABLE:用来定义Table数组,后面

40、的参数是数组名,在应用调用MMK_CreateWin的时候需要用到。CLEAR_LCD:清除LCD Buffer。WIN_PRIO:设置窗口优先级的,参数为MMI_WIN_PRIORITY_E枚举类型。WIN_TITLE_ID:用于设置窗口的标题,后面的参数是窗口文本的ID(非必需)。WIN_FUNC:设置窗口的消息处理函数,后面的参数是该窗口的消息处理函数。WIN_ID:设置窗口ID,参数为MMI_WINDOW_ID_E枚举类型。CREATE_MENU_CTRL:用于创建一个menu控件(如果有控件,才必需)。END_WIN:Window Table的结束标志,每一个Window Table

41、的最后一个成员必须是END_WIN宏。Step5:Window的实现的实现(2 2)参数说明参数说明10/29/2022Proprietary and Confidential Information61Step5:Window的实现的实现(3 3)2.Create WindowMMK_CreateWin(uint32*)MMIRECORD_OPTIONMENU_WIN_TAB,PNULL);在CreateWin中会使用MMK_CreateMenuCtrl,创建menu控件10/29/2022Proprietary and Confidential Information623.编写窗口消息处

42、理函数MMI_RESULT_E HandleStartStatusRecordMenuWinMsg(MMI_WIN_ID_T win_id,MMI_MESSAGE_ID_E msg_id,DPARAM param )switch(msg_id)case MSG_OPEN_WINDOW:break;case MSG_CLOSE_WINDOW:break;default:break;依次类似编写每个Window。Step5:Window的实现的实现(4 4)10/29/2022Proprietary and Confidential Information63Step6:Menu的实现的实现(1

43、1)1.App中有个静态的全局变量用来记录所有模块的菜单信息:/静态菜单group组指针LOCAL const GUIMENU_GROUP_T *s_gui_menu_group_ptrMMI_MAX_MODU_NUM;那么,在中PUBLIC void MMIRECORD_RegMenuGroup(void)MMI_RegMenuGroup(MMI_MODULE_RECORD,record_menu_table);就是将s_gui_menu_group_ptrMMI_MODULE_RECORD 赋值为record_menu_table所记录的菜单信息。10/29/2022Proprietary

44、 and Confidential Information64Step6:Menu的实现(的实现(2 2)2.record_menu_table就是record模块中记录的菜单信息,定义如下const GUIMENU_GROUP_T record_menu_table=NULL,#include;10/29/2022Proprietary and Confidential Information653.Menu item的定义:const GUIMENU_ITEM_T menu_record=ID_RECORD_STARTRECORD,TIP_NULL,STXT_OK,TXT_NULL,STX

45、T_RETURN,TXT_RECORD_START,0,0,0,MENU_NULL,ID_RECORD_LIST,TIP_NULL,STXT_OK,TXT_NULL,STXT_RETURN,TXT_RECORD_LIST,0,0,0,MENU_NULL,;Step6:Menu的实现的实现(3 3)10/29/2022Proprietary and Confidential Information664.menu ID和group ID/Menu IDtypedef enum/menu id的高16位是模块索引 MMIRECORD_ID_MENU_START=(MMI_MODULE_RECORD

46、 16),ID_RECORD_STARTRECORD,MMIRECORD_ID_MENU_MAXMMIRECORD_ID_MENU_E;/group idtypedef enum MMIRECORD_MENU_LABEL_START=(MMI_MODULE_RECORD 16),#include MMIRECORD_MENUTABLE_MAX MMIRECORD_MENU_LABEL_E;Group ID的高16位代表模块的索引,可以通过其获得相应的module ID和offset,从而根据全局变量s_gui_menu_group_ptr得到相应的group指针,即menu的相应信息Step6

47、:Menu的实现的实现(4 4)10/29/2022Proprietary and Confidential Information67Step7:NV的实现的实现(1 1)1.NV Item大小uint16 record_nv_len=/record volume and incall record volume 1,/MMINV_RECORD_NORMALRECORD_VOL 1,/MMINV_INCALLRECORD_VOL 1,/MMINV_RECORD_OTHERRECORD_VOL sizeof(FILE_DEV_E_T)/MMINV_RECORD_STORAGE;10/29/20

48、22Proprietary and Confidential Information682.NV的注册PUBLIC void MMIRECORD_RegNv(void)MMI_RegModuleNv(MMI_MODULE_RECORD,record_nv_len,sizeof(record_nv_len)/sizeof(uint16);App中静态全局变量LOCAL const uint16 *s_mmi_nv_lenMMI_MAX_MODU_NUM;用来记录所有模块的NV信息,指向对应模块NV的指针。静态全局变量LOCAL uint16 s_mmi_nv_max_itemMMI_MAX_MO

49、DU_NUM用来记录所有模块NV的最大个数。注册NV函数是分别对这两个全局变量进行赋值,方便对读写NV的操作。Step7:NV的实现(的实现(2 2)10/29/2022Proprietary and Confidential Information693.NV Item IDtypedef enum MMINV_RECORD_NORMALRECORD_VOL=MMI_MODULE_RECORD 16,MMINV_RECORD_INCALLRECORD_VOL,MMINV_RECORD_OTHERRECORD_VOL,MMINV_RECORD_STORAGE,MMIRECORD_MAX_NV_

50、ITEM_NUMMMIRECORD_NV_ITEM_E;NV item ID的高16位代表模块的索引,可以通过其获得相应的module ID和offset,从而根据全局变量s_mmi_nv_max_item,s_mmi_nv_len计算得到nv item 对应的真正ID,及读写NV需要的参数item_idApp应用NV item的起始ID是从MN_NV_USER_BASE开始Step7:NV的实现(的实现(3 3)10/29/2022Proprietary and Confidential Information70Step8:模块资源的增加模块资源的增加ResourceEditor 工具打开

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

当前位置:首页 > 教育专区 > 初中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁