Mocor平台SC6531模块添加

       

1. 创建模块文件夹(假设模块名为XXX,以下类同):

  a) 在“%工程目录%\MS_MMI\source\mmi_app\app”目录下创建模块文件夹“xxx”,并在其下创建名为“c”和“h”两个子文件夹,分别用于保存模块的源代码和头文件。

  b) 在“%工程目录%\project\public_mk\mmi_res_128x64\xxx”目录下新建名为“MMI_RES_DEFAULT”的文件夹,并在其中创建“ANIM”、“DATA”、“IMAGE”三个子文件夹。(提醒:建立完毕后需加至相应的压缩包内)

2. 创建模块相关文件:

  a) 在“h”文件夹下分别创建以下文件:xxx_mdu_def.h、mmixxx_export.h、mmixxx_id.def、mmixxx_id.h、mmixxx_image.h、mmixxx_menutable.def、mmixxx_menutable.h、mmixxx_menu_id.def、mmixxx_nv.h、mmixxx_text.h,各文件功能简述如下:

  • xxx_mdu_def.h:模块资源定义(包含图片、字符串等)
  • mmixxx_export.h:模块外部接口,用于声明各函数,供其它模块调用
  • mmixxx_id.def:存放WIN_ID数组的元素(文件被mmixxx_id.c中的数组作为元素包含)
  • mmixxx_id.h:定义CTRL_ID枚举类型
  • mmixxx_image.h:定义IMAGE_ID枚举类型,但具体的枚举元素在xxx_mdu_def.h添加(无须改动)
  • mmixxx_menutable.def:存放MENU_GROUP_ID枚举的元素
  • mmixxx_menutable.h:定义MENU_GROUP_ID和MENU_ID两个枚举类型,但具体的枚举元素分别在mmixxx_menutable.def和mmixxx_menu_id.def中添加(MENU_GROUP_ID和MENU_ID需要被模块的其它文件使用,因此将定义直接放在头文件中,无须改动)
  • mmixxx_menu_id.def:存放MENU_ID枚举的元素
  • mmixxx_nv.h:定义NV的ITEM_ID枚举类型
  • mmixxx_text.h:定义TEXT_ID枚举类型,但具体的枚举元素在xxx_mdu_def.h添加(无须改动)

  b) 在“c”文件夹下分别创建以下文件:mmixxx_app.c、mmixxx_id.c、mmixxx_menutable.c、mmixxx_nv.c、mmixxx_wintab.c,各文件功能简述如下:

  • mmixxx_app.c:定义模块的功能函数,供外部调用,功能函数的声明在mmixxx_export.h中
  • mmixxx_id.c:WIN_ID数组的定义,但具体的数组元素在mmixxx_id.def添加(无须改动)
  • mmixxx_menutable.c:组合各级MENU_GROUP的MENU(当模块较大时,可将各级菜单组分开于多个文件中)
  • mmixxx_nv.c:NV的ITEM_ID内存空间申请,将ITEM_ID所需空间组合成数组,因此数组元素要与mmixxx_nv.h中的ITEM_ID一一对应
  • mmixxx_wintab.c:定义WINDOWS_TABLE及其回调函数

3. 在工程文件mmi_res_prj_def.h中添加XXX模块的ID:

1 RES_ADD_MODULE(MMI_MODULE_XXX,"\\xxx\\xxx_mdu_def.h")         // MMI_MODULE_XXX为模块ID,"\\xxx\\xxx_mdu_def.h"为模块路径

4. 修改mk文件:

  a) 在resource.mk(路径:%工程目录%\make\resource)中增加模块定义路径和文件名:

  • 在相应位置添加:MS_MMI/source/mmi_app/app/xxx/h \
  • 在“SOURCE +=”表达式最后增加xxx_mdu_def.h

  b) 在app.mk(路径:%工程目录%\make\app)中增加模块定义路径和文件名:

  • 在相应位置添加:MINCPATH += MS_MMI/source/mmi_app/app/xxx/h
  • 在相应位置添加:MSRCPATH += MS_MMI/source/mmi_app/app/xxx/c
  • 在“SOURCES =”表达式最后增加模块中所有c文件的文件名

特别声明:模块添加完毕后无法在mainapp.c之流中直接调用(即使是在其中包含了相应的头文件),调用模块还是得新建一级菜单后在其下(或在已有菜单下)附加模块功能。


说明:以下内容为本人在工程中添加模块的具体实践,仅供参考。(模块源码不便上传,如若需要请另外联系本人。)

添加模块需要修改工程中的文件罗列如下(模块名为DEMO):

  • 在mainmenu_win.c的HandleMainMenuWinMsg()函数(文件1985行前后)中的switch(msg_id)结构中添加新case分支:
1 case ID_DEMO_MULTIMEDIA:  //ID_DEMO_MULTIMEDIA为MENU_ID
2      MMIDEMO_EnterMultimediaWin();
3      break;

         注意:需要包含mmidemo_export.h和mmidemo_menutable.h两个头文件

  • 在mmi_menutable.c的menu_mainmenu_icon []数组(文件428行前后)中添加元素:
1 {ID_DEMO_MULTIMEDIA,TIP_NULL,{STXT_OK,TXT_NULL,STXT_RETURN},TXT_DEMO_MULTIMEDIA,IMAGE_DEMO_MULTIMEDIA_1,0,0,MENU_NULL},

  注意:需要包含mmidemo_image.h、mmidemo_text.h和mmidemo_menutable.h 三个头文件

  • 在mmimain.c的InitMMIModule()函数(文件1746行前后)中添加模块初始化函数:
1 MMIAPIDEMO_InitModule();

  注意:需要包含mmidemo_export.h头文件

  运行效果(仅截取模拟器屏幕):

   

(欢迎转载,转载请注明出处!谢谢。)

posted @ 2017-12-26 11:07  Q10040  阅读(1233)  评论(0编辑  收藏  举报