已绑定手机 已实名认证
|
发表于 2016-11-16 15:00:00
|
显示全部楼层
|阅读模式
来自 广东省深圳市罗湖区
[DESCRIPTION]
客户有需求修改WIFI的参数,如打开5G支持项等,同时需要可以半擦和OTA升级,但是原本的WIFI MAC地址不可以丢失。
[SOLUTION]
WIFI nvram参数更新升级,同时保留MAC地址,可以按照以下步骤修改:
1. 修改 AP_CFG_RDEB_FILE_WIFI_LID_VERNO,将此值增加 1.
Custom_NvRam_LID.h (alps\MediaTek\custom\$projet\cgen\inc)
#define AP_CFG_RDEB_FILE_WIFI_LID_VERNO "000" 修改为 "001"
2. 修改 CFG_file_info_custom.h 中的 wifi 项
CFG_file_info_custom.h (alps\mediatek\custom\$projet\cgen\inc)
{
"/data/nvram/APCFG/APRDEB/WIFI", VER(AP_CFG_RDEB_FILE_WIFI_LID),
CFG_FILE_WIFI_REC_SIZE,
CFG_FILE_WIFI_REC_TOTAL, SIGNLE_DEFUALT_REC, (char *)&stWifiCfgDefault,
DataReset, NULL
},
最后两个参数改为:
{
"/data/nvram/APCFG/APRDEB/WIFI", VER(AP_CFG_RDEB_FILE_WIFI_LID),
CFG_FILE_WIFI_REC_SIZE,
CFG_FILE_WIFI_REC_TOTAL, SIGNLE_DEFUALT_REC, (char *)&stWifiCfgDefault,
DataConvert , WIFI_ConvertFunc
},
3. 添加客制化函数 WIFI_ConvertFunc.
int WIFI_ConvertFunc(int CurrentVerID, int NewVerID, char *pSrcMem, char
*pDstMem)
{
int rec_size = CFG_FILE_WIFI_REC_SIZE;
int rec_num = CFG_FILE_WIFI_REC_TOTAL;
UINT_8 aucMacAddress[6] = {0};
WIFI_CFG_PARAM_STRUCT *p_wifi_para;
if(NULL == pSrcMem || NULL == pDstMem){
return false;
}
else{
// get the old wifi mac addr //保存原始MAC数据
p_wifi_para = (WIFI_CFG_PARAM_STRUCT*)pSrcMem;
meMCPy(aucMacAddress, p_wifi_para->aucMacAddress, sizeof(aucMacAddress));
//write the new wifi parameter //赋值新的WIFI参数
memcpy(pDstMem, &stWifiCfgDefault, sizeof(WIFI_CFG_PARAM_STRUCT));
//restore the wifi mac addr //回写原始MAC数据
p_wifi_para = (WIFI_CFG_PARAM_STRUCT*)pDstMem;
memcpy(p_wifi_para->aucMacAddress, aucMacAddress, sizeof(aucMacAddress));
return true;
}
}
|
|