杰理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);