|
刚才想做一个事情,就是在手机设置里添加一项
主菜单类型设置 MATRIX /PAGE/LIST等等,然后用户只要选一下就可以设置自己喜欢的类型了
然后设计到NVRAM保存的问题
我的想法是这样的,开机,进行变量初始化,(单独一个文件,里面全部是手机用到的全部初始化值,包括默认语言,默认输入法等等,多少个客户,对应多少个这样的文件,然后根据不同的客户,选择不同的初始化文件),然后把变量的值写到NVRAM里。
类似
void MApp_Torch_Init_TorchSetting(void)
{
g_phnset_torch_cntx_p->TorchLevel = DEFAULT_TORCH_LIGHT_LEVEL;
g_phnset_torch_cntx_p->TorchTime = DEFAULT_TORCH_LIGHT_TIME;
MApp_Torch_Save_TorchSetting();
}
void MApp_Torch_Save_TorchSetting(void)
{
S16 error;
WriteValue(NVRAM_BYTE_TORCH_SETTING_LEVEL, &(g_phnset_torch_cntx_p->TorchLevel), DS_BYTE, &error);
WriteValue(NVRAM_BYTE_TORCH_SETTING_TIME, &(g_phnset_torch_cntx_p->TorchTime), DS_BYTE, &error);
}
但是我发现MTK不是这么做的,比如currentCity,
开机初始化执行InitPhoneSetupCntx函数。
这个函数里是这么执行关于默认城市的
g_phnset_cntx_p->currentCity = 0;
ReadValue(CURRENT_CITY, &(g_phnset_cntx_p->currentCity), DS_BYTE, &Err);
if (g_phnset_cntx_p->currentCity == 0xff)
{
g_phnset_cntx_p->currentCity = 0;
WriteValue(CURRENT_CITY, &g_phnset_cntx_p->currentCity, DS_BYTE, &Err);
}
将NVRAM里的数据赋值给g_phnset_cntx_p->currentCity 变量。
然后具体进入日期菜单的时候
又调用PhnsetReadNvmHomeCityIdxNStoreCityName,
里面做了什么呢?
ReadValue(CURRENT_CITY, &(g_phnset_cntx_p->currentCity), DS_BYTE, &error);
if (error != NVRAM_READ_SUCCESS)
{
g_phnset_cntx_p->currentCity = 0;
}
else if (g_phnset_cntx_p->currentCity > NUM_CITYS)
{
g_phnset_cntx_p->currentCity = 0;
}
将NVRAM里的数据赋值给g_phnset_cntx_p->currentCity 变量。
我觉得非常不好,干吗赋值两次?
高手帮忙解释下我的疑问 |
|