分类:
2010-05-06 14:46:21
由于MTK自带FLASH只有512K,交易菜单有8级,需要将菜单存入nvram中,参照MTK 中nvram的读写操作一贴,实际应用。
1.在在nvram_editor_data_item.h文件中定义自己保存在nvram 中的结构体数据类型 typedef struct
{ U16 menulevel; //菜单级别
U8 menuoptflag; //菜单操作标志
U8 trancecode; //交易代码
U8 rechflag; //冲证标识
U8 functionindex; //功能提示索引
U8 systemnum; //系统号码序号
U8 cmdlen[3]; //流程代码长度
U8 cmddetail[40]; //流程代码
U16 displaycontentlong; //显示内容长度
U8 displaycontent[24]; //显示内容
}nvram_dynamic_Message;
2.在 nvram_user_defs.h 文件中的NVRAM_EF_LAST_LID_COMMAPP枚举中添加 NVRAM_EF_DYNAMIC_LID,
#define NVRAM_EF_DYNAMIC_SIZE sizeof(nvram_dynamic_Message)
#define NVRAM_EF_DYNAMIC_TOTAL 512
3.在nvram_user_config.c文件中的logical_data_item_table_cust 结构体数组中添加自己的项
{NVRAM_EF_DYNAMIC_LID,
NVRAM_EF_DYNAMIC_SIZE,
NVRAM_EF_DYNAMIC_TOTAL,
NVRAM_EF_ZERO_DEFAULT,
NVRAM_ATTR_AVERAGE,
NVRAM_CATEGORY_USER,
"MT20",
"000",
"dynamic menu\0",
NVRAM_RESERVED_VALUE
}
4. WriteRecord(NVRAM_EF_DYNAMIC_LID,num,buf,76,&error);
if(error != NVRAM_READ_SUCCESS)
{
dbg_print("error = %x\n",error);
return;
}
dbg_print("write nvram success!\n");
memset(buf,0,76);
ReadRecord(NVRAM_EF_DYNAMIC_LID,num,buf,76,&error);
dbg_print("%x\n",buf[1]);