2 添加资源
所有的字符串,图片,声音资源最终都是以二进制数组的形式存在于程序中的。
2.1 定义ID范围
Plutommi\\mmi\\inc\\mmidatatype.h
首先定义始末范围
#define RESOURCE_BASE_RANGE(name, count)
\\
RESOURCE_BASE_##name, \\
RESOURCE_BASE_##name##_END = RESOURCE_BASE_##name + count – 1
Typedef enum { …
#if defined(__PDK_DEMO__)
RESOURCE_BASE_RANGE(PDK_DEMO, 100), #endif
…
} RESOURCE_BASE_ENUM;
typedef struct {
char *appname;
unsigned short min; // value;
unsigned short max; } mmi_resource_base_struct;
#define RESOURCE_BASE_TABLE_BEGIN() \\ const mmi_resource_base_struct g_mmi_resource_base_table[] = {
#define RESOURCE_BASE_TABLE_ITEM(ENUM_NAME) \\
{#ENUM_NAME, \\
(U16) RESOURCE_BASE_##ENUM_NAME, \\
(U16) RESOURCE_BASE_##ENUM_NAME##_END}, #define RESOURCE_BASE_TABLE_END() \\
};
6
然后定义应用程序使用的宏定义
#if defined(__PDK_DEMO__)
#define PDK_DEMO_BASE ((U16) RESOURCE_BASE_PDK_DEMO) #define PDK_DEMO_BASE_MAX ((U16) RESOURCE_BASE_PDK_DEMO_END) RESOURCE_BASE_TABLE_ITEM(PDK_DEMO) #endif //__PDK_DEMO__
2.2 添加应用程序
添加应用程序
Add new application
Plutommi\\mmi\\inc\\mmidatatype.h
typedef enum { …
APP_MIIPTS, …
} APPLICATION_DEPLOY;
#define ADD_APPLICATION(nId, pName, nMinId, nMaxId) \\
AddApp(nId, pName, nMinId, nMaxId)
void PopulateResData(void) { …
ADD_APPLICATION(APP_MIIPTS, \T\
… };
添加字符串
添加图片
添加菜单
7
2.3 添加菜单
define a new menu item in a new file ?plutommi\\mmi\\inc\\menuid\\miiptsmenuitems.h‘ MENU_ID_MIIPTS_APP,
include our app-menu in message menu
PopulateMessagesResData()?
ADD_APPLICATION_MENUITEM(MESSAGES_MENU_SMS_MENUID, …
MENU_ID_MIIPTS_APP, .. );
we add our appmenu into the system message menu. ADD_APPLICATION_MENUITEM((MENU_ID_MIIPTS_APP, MAIN_MENU_MESSAGES_MENUID, 0, SHOW, MOVEABLEACROSSPARENT|SHORTCUTABLE, STR_ID_MIIPTS_APP_NAME, 0));
2.4 Add new string
资源id在plutommi\\Customer\\ResGenerator文件夹里面
GetImageRaw读取资源ReadRes.c文件中
2.5 图片资源
gdi_image_draw_id
GetImage:从资源id中获取buffer GetImageTheme:取theme相关的图像 GetImageRaw:
GetImageFromIndex:
gdi_image_codec_draw: gdi_image_parse_info
gdi_image_parse_resource_internal: gdi_image_gif_draw_handler
8
1,
ImageIdMap:
资源内部格式:8位控制信息,0位type,1为帧数,
InitializeResourceVariables.c:初始化资源相关的变量
mtk_nCustImageNames:resource generator产生的图像的数组
CustImgDataHW.h:中就是所有的图像数组
2.6 编译资源
AlmInitRTCPwron? PopulateResData
#if defined(__PDK_DEMO__) {
extern void populate_pdk_demo_res(void); populate_pdk_d emo_res(); }
#endif //__PDK_DEMO__
这段代码,只有resgen时候才会用到。
编译资源时,会把Res_MMI目录下的所有源文件拷贝到工作目录,然后编译,其他的源文件不编译,所以需要把资源生成文件发在该目录下。
9
3 NVRAM
Default值在文件nvram_common_config.c中定义
目前, 我的format之后,值不是0,而是FF,为什么?因为Flash的默认情况下都是1,写操作是将某些位置为0,这是由Flash的原理决定的。
size必须为偶数 index是从1开始
读可以size内的任意大小,写必须为声明的大小 必须在nvram_user_config.c中定义新的nvram 项
锐锦的nvram定义在nvram_user_config.c中
联桥的定义在
属性:NVRAM_CATEGORY_USER
NVRAM_RESERVED_VALUE 这2条很重要
MAX_PHB_SIM_ENTRY = 250 MAX_PHB_PHONE_ENTRY = 200
初始化的时候,malloc函数还没有初始化? 我觉得有些不可能
nvram每项数据最大不能超过2k
1. Add new lid to nvram_lid_commapp_enum in
\\custom\\common\\PLUTO_MMI\\nvram_common_defs.h
code example: typedef enum {
NVRAM_EF_ADC_LID = NVRAM_LID_COMMAPP_BEGIN, …
NVRAM_EF_RAC_PREFERENCE_LID,
NVRAM_EF_MIIPTS_MSG_LID, //our code /* Add LID with its compile optoin in the tail comment */
NVRAM_EF_LAST_LID_COMMAPP
10