定义NVRAM 数据有三种方式:
(一)、在nvram_editor_data_item.h、nvram_data_item.h、nvram_data_item.c三个文件中添加。
1、在nvram_editor_data_item.h文件中定义自己保存在nvram 中的结构体数据类型。
例如: typedef struct
{
Int a;
Char b;
}my_nvram_data_t;
2、在 nvram_data_item.h 文件中的nvram_lid_core_enum 枚举中定义自己的nvram ID(建议在最后面添加,但必须添加到NVRAM_EF_LAST_LID_CORE 的前面)。再定义两个宏,一个宏是前面定义的结构体的字节大小,另一个是在nvram中保存的数据个数,如果在nvram中只需要保存一个数据的话,就定义为 1。
例如: typedef enum
{
……
……
My_nvram_data_lid, //自己定义的nvram ID
NVRAM_EF_LAST_LID_CORE
}nvram_lid_core_enum;
#define my_nvram_data_size sizeof( my_nvram_data_t )
#define my_nvram_data_total 1
3、在nvram_data_items.c文件中的lobical_data_item_table_core 结构体数组中添加自己的项。建议添加在最后,仿照前面的添加。
例如: Itable_entry_struct logical_data_item_table_core[] =
{
……
……
,{
My_nvram_data_lid , //前面定义的枚举 ID
my_nvram_data_size , //前面定义的宏,结构体大小
my_nvram_data_total , //前面定义的宏,nvram中数据的个数
NVRAM_EF_ZERO_DEFAULT,
NVRAM_ATTR_AVERAGE,
NVRAM_CATEGORY_USER,
“ MT1D” , // 根据前面的数据项递增
VER( My_nvram_data_lid ),
“ my nvram test\0” , //数据描述,只做参考,无其他作用
NVRAM_RESERVED_VALUE
}
, { NVRAM_EF_RESERVED_LID}
}
4、 my_nvram_data_t my_nvram_data = {0};
S16 error ;
//将my_nvram_data中的数据写到nvram中My_nvram_data_lid 标志处,error保存错误标志
WriteRecord(My_nvram_data_lid, 1, &my_nvram_data, sizeof(my_nvram_data_t ), & error);
//将nvram中My_nvram_data_lid 标志处的数据读到my_nvram_data中,error保存错误标志
ReadRecord(My_nvram_data_lid, 1, &my_nvram_data, sizeof(my_nvram_data_t ), & error);
二、在common_nvram_editor_data_item.h、nvram_user_defs.h、nvram_user_config.c中定义
1、common_nvram_editor_data_item.h 此处定义nvram 中保存数据的结构体数据类型
2、nvram_user_defs.h 此处定义nvram ID 和结构体数据大小、数据总数
3、nvram_user_config.c 此处填充nvram 结构数据内容及defult值
(在 MTK 下建议使用此方法修改 nvram)
三、在coustom_mmi_default_value.h、common_mmi_cache_config.c中定义
1、在custom_mmi_default_value.h 文件中有三个枚举类型BYTEDATA,SHORTDATA和DOUBLEDATA。分别占1个字节,2个字节,8个字节。根据自己的所要保存的数据大小在相应的枚举里定义自己的nvram ID。建议在最后面添加,但都必须添加在最后一项的前面。
例如: typedef enum
{
……
……
Nvram_my_shortdata_id,
NVRAM_LAST_SHORT_ELEMENT
}SHORTDATA;
2、在common_mmi_cache_config.c文件中存在三个结构体数组common_mmi_cache_byte[]、common_mmi_cache_short[],common_mmi_cache_double[]。在对应的数组里添加自己的数据项,设置nvram的初始值。
例如: mmi_cache_short_entry common_mmi_cache_short[] =
{
……
……
SHORT_ENTRY(Nvram_my_shortdata_id, 0x00, 0x00) ,
{0xFF, 0xFF, 0xFF, “”, “”,””}
};
3、 short int myNvramData;
S16 error;
//写 nvram
WriteValue(Nvram_my_shortdata_id , &myNvramData , DS_SHORT , &error) ;
//读 nvram
ReadValue(Nvram_my_shortdata_id , &myNvramData , DS_SHORT, &error) ;
(注意:在模拟器下,修改了 nvram 最后是在 DOS 下用 new 命令全部重新编译一次)
阅读(3247) | 评论(0) | 转发(0) |