NV文件系统的使用


1,NVid和数据结构定义
(1)数据结构id定义
typedef enum
{
    MMINV_HELLO_FLAG = MMI_MODULE_SAMPLE << 16,     //MMI_MODULE_SAMPLE这个是模块id
    MMINV_HELLO_STRUCT_PART,
    MMINV_HELLO_MAX_ITEM_NUM
    
}HELLO_NV_ITEM_E;

(2)数据结构定义
typedef struct MMI_HELLO_T
{
    BOOLEAN is_set;
    wchar w_str[32];
    uint32 str_len;
}MMI_HELLO_T;                   //要存储的结构体

(3)数据结构长度计算
const uint16 hello_nv_len[] =
{
    sizeof(BOOLEAN),             // MMINV_HELLO_FLAG      对应bool数据类型对应的大小
    sizeof(MMI_HELLO_T),         // size of MMI_HELLO_T   对应MMI_HELLO_T的数据结构大小
};                              //注册前需要先将要存储的数据计算大小保存到uint16一维数组中
常量数组 hello_nv_len 中每个元素的定义必须同 NV 枚举类型的顺序保持一致,这是约定


2、注册 NV
(1)【函数原形】:
PUBLIC void MMI_RegModuleNv(uint16 module_id /*模块的 ID*/, 
                            const uint16 nv_len[]/*数组的地址*/, 
                            uint16 nv_max_item /*数组的长度*/);
                            
(2)本例子
    MMI_RegModuleNv(MMI_MODULE_SAMPLE,        // 注册 NV,模块 ID:MMI_MODULE_SAMPLE;
                    hello_nv_len, 
                    sizeof(hello_nv_len)/sizeof(uint16));

小结:NV 是一段不可变的存储空间,就像读写文件一样,只不过读写文件时传入的是文件路径,而读写
NV 时传入的是 NV 的 ID 而已。

3、读NV数据
【函数原型】
PUBLIC MN_RETURN_RESULT_E MMI_ReadNVItem(
                                        uint32 item_id,   /*NV 项的 ID*/
                                        void * buffer_ptr /*存放数据的地址空间*/);
                                        
4、写NV数据
【函数原型】
PUBLIC void MMI_WriteNVItem(
                            uint32 item_id,   /*NV 项的 ID*/
                            void buffer_ptr【20】 /*写入的数据*/
                            );
                            
                            
                            int num;-》id
                            char  x;

5、使用
case MSG_APP_UP:
{
    BOOLEAN flag = FALSE;
    nv_return = MMI_ReadNVItem(MMINV_HELLO_FLAG, &flag);   //将注册过的NV数据读取出来保存大falg中
    if (!flag)
    {
        flag = FALSE;     
    }
    else
    {
        flag = TRUE;
    );
    MMI_WriteNVItem(MMINV_HELLO_FLAG, &flag);             //将flag中的内容写入注册的NV
}
break
 
   

typedef struct MMI_HELLO_T
{
    BOOLEAN is_set;
    wchar w_str[32];
    uint32 str_len;
}MMI_HELLO_T;                   

typedef struct MMI_HELLO_T  
{
    BOOLEAN is_set;
    wchar w_str[32];
    uint32 str_len;
    
    int   callnum;          //从1.0->2.0新增加的数据,注册时候根据id即已经注册,再次读取时候按照新的数据结构解析就可以了
}MMI_HELLO_T;       


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部