芯方式

恢复出厂设置时,实现蓝牙的Factory Restore功能

0
阅读(2692)

[DESCRIPTION]
客户需求:在进行恢复出厂设置操作时,默认设置是不会对蓝牙相关的设置进行恢复的。若需要在
MenuàSettingsàRestore Factory Settings进行手机恢复出厂设置时,希望将蓝牙相关设置一并进行Factory
Restore,包括:默认关闭蓝牙、恢复蓝牙名称、清空以配对列表信息等(注:不会对蓝牙地址进行更新),则可参考
此文档实现。
[Branch & Version]09B.10.12
其他Branch和平台类似,需要强调的一点是除了处理相关的NVram,需要将系统文件中BT相关的文件删除掉,方法如下
,各个Branch类似;
[SOLUTION]来自半导体社区
1、在BT NVRAM LID中,加入Factory Restore属性:
文件:nvram_common_config.c中数组:logical_data_item_table_comm_app[]中找到NVRAM_EF_BT_INFO_LID及
NVRAM_EF_BTHF_CONFIG_LID,将其Attr属性更改为:NVRAM_ATTR_AVERAGE | NVRAM_ATTR_FACTORY_RESET(原来是
NVRAM_ATTR_AVERAGE)。
添加该attr后,当进行恢复出厂设置操作时,会对此NVRAM LID进行Restore,如下是对NVRAM_EF_BT_INFO_LID的更改
(NVRAM_EF_BTHF_CONFIG_LID同理):
,{
NVRAM_EF_BT_INFO_LID,
NVRAM_EF_BT_INFO_SIZE,
NVRAM_EF_BT_INFO_TOTAL,
NVRAM_NORMAL(NVRAM_EF_ZERO_DEFAULT),
NVRAM_ATTR_AVERAGE | NVRAM_ATTR_FACTORY_RESET,
NVRAM_CATEGORY_USER,
"MP25",
VER(NVRAM_EF_BT_INFO_LID),
"Bluetooth info",
NVRAM_APP_RESERVED
}
2、对系统盘中保存的BT相关的System File进行Restore:
添加 Restore BT相关的System File函数:
void mmi_bluetooth_restore_factory_default(void)
{
FS_XDelete(L"z:\\@bip", FS_FILE_TYPE | FS_DIR_TYPE | FS_RECURSIVE_TYPE, NULL, 0);
FS_XDelete(L"z:\\@bt", FS_FILE_TYPE | FS_DIR_TYPE | FS_RECURSIVE_TYPE, NULL, 0);
FS_XDelete(L"z:\\@ftp", FS_FILE_TYPE | FS_DIR_TYPE | FS_RECURSIVE_TYPE, NULL, 0);
return;
}
3、在Factory Restore过程中,添加对蓝牙的Restore处理
在Factory Restore过程中,添加对蓝牙的Restore功能,主要包括两个方面,一是在添加对处理蓝牙Factory
Restore的Callback函数,二是在Factory Reset前添加对蓝牙的Check。
首先添加如下两个Check函数,若判断到当前有蓝牙链接存在,则禁止掉Factory Restore:
U8 mmi_bluetooth_restore_factory_check(void)
{
if (srv_bt_cm_is_activated () == MMI_TRUE)
{
if (srv_bt_cm_get_existed_conn_num())
return 0;
}
return 1;
}
U8 RstStartRestoreResetAppCheck(void)
{
U8 result=mmi_bluetooth_restore_factory_check();
return result;
}
另外,在void RstStartRestoreResetAppStatus(void)中添加对如下函数的调用:
mmi_bluetooth_restore_factory_default();//删除相关的系统文件
同时,将static mmi_restore_callback_struct mmi_restore_app_callback[] =
{
{NVRAM_APP_PHNSET, 0, RstStartRestoreResetAppStatus,NULL},
。。。
}
更改为
static mmi_restore_callback_struct mmi_restore_app_callback[] =
{
{NVRAM_APP_PHNSET, 0, RstStartRestoreResetAppStatus, RstStartRestoreResetAppCheck},
。。。。。
}

ICfans