杰理SDK会自动从VM区域读取蓝牙名字。代码如下,在user_cfg.c文件里。
//-----------------------------CFG_BT_NAME--------------------------------------//
ret = syscfg_read(CFG_BT_NAME, tmp, 32);
if (ret < 0) {
log_info("read bt name err\n");
} else if (ret >= LOCAL_NAME_LEN) {
memset(bt_cfg.edr_name, 0x00, LOCAL_NAME_LEN);
memcpy(bt_cfg.edr_name, tmp, LOCAL_NAME_LEN);
bt_cfg.edr_name[LOCAL_NAME_LEN - 1] = 0;
} else {
memset(bt_cfg.edr_name, 0x00, LOCAL_NAME_LEN);
memcpy(bt_cfg.edr_name, tmp, ret);
}
改名办法很简单就是把这一段注释掉,使用自己的名字。
//蓝牙名修改
memset(bt_cfg.edr_name, 0x00, LOCAL_NAME_LEN);
extern u8 my_ble_name[20];
u8 len = strlen(my_ble_name);
if(len>15)
{
len = 15;//截断超长的蓝牙名字
}
memcpy(bt_cfg.edr_name, my_ble_name, len);
/* g_printf("bt name config:%s\n", bt_cfg.edr_name); */
log_info("bt name config:%s\n", bt_cfg.edr_name);
但是这样修改只是改了EDR蓝牙名字,杰理的SDK会自动把BLE的名字会扩展成*****(BLE)。如果不想显示BLE字样,可以在le_gatt_common.c文件里把BLE扩展的字符去掉即可。
//static const char ble_ext_name[] = "(BLE)";
static const char ble_ext_name[1] = 0;//不显示BLE字样
当然也可以把这个蓝牙名字保存在VM区域,每次上电自动读取。杰理提供了相关的读写函数,在syscfg_id.h文件里。
/* --------------------------------------------------------------------------*/
/**
* @brief 读取对应配置项的内容
*
* @param [in] item_id 配置项ID号
* @param [out] buf 用于存储read数据内容
* @param [in] len buf的长度(byte), buf长度必须大于等于read数据长度
*
* @return 1)执行正确: 返回值等于实际上所读到的数据长度(大于0);
* 2)执行错误: 返回值小于等于0, 小于0表示相关错误码;
*/
/* --------------------------------------------------------------------------*/
int syscfg_read(u16 item_id, void *buf, u16 len);
/* --------------------------------------------------------------------------*/
/**
* @brief 写入对应配置项的内容
*
* @param [in] item_id 配置项ID号
* @param [in] buf 用于存储write数据内容
* @param [in] len buf的长度(byte), buf长度必须大于等于write数据长度
*
* @return 1)执行正确: 返回值等于实际上所读到的数据长度(大于0);
* 2)执行错误: 返回值小于等于0, 小于0表示相关错误码;
*/
/* --------------------------------------------------------------------------*/
int syscfg_write(u16 item_id, void *buf, u16 len);