137****com
芯片型号:GR5515IGND
SDK版本:GR551x_SDK_V2.0.1
场景:
使用GR551x_SDK_V2.0.1\projects\ble\ble_central\ble_app_uart_c 这个示例,作为BLE主机进行扫描附件的设备。
在这个demo工程中,使用了ble_scanner模块进行扫描的过滤匹配管理,取消了自动连接使能,仅用于扫描搜索周围设备。
扫描初始化、扫描回调分别如下:
执行过程:
芯片烧入程序后,执行代码之初,搜索发现附近的BLE信号,可以输出MAC地址、RSSI、广播名称,
但是过了一段时间后(半分钟),所有外围设备,都只得到MAC地址、RSSI,但是没有广播名信息。
主机重启后,又可以搜索发现设备并拿到蓝牙名,但是过段时间又是只拿到RSSI而没有广播名信息。
问题:要持续完整搜索到外围设备的所有信息(主要是广播名),这个需要demo工程如何配置?是不是有最大缓存的限制?如何改大限制?
zhongchengzhi
您好,广播名字不是以NULL字符结束的,您需要把字符串拷贝出来再打印:
case BLE_SCANNER_EVT_ADV_REPORT_PARSE:
{
uint8_t *p_addr = p_evt->param.parse_record.peer_addr.gap_addr.addr;
int8_t rssi = p_evt->param.parse_record.rssi;
uint8_t device_name[100] = {0};
memcpy(device_name, p_evt->param.parse_record.local_name.p_data, MIN(p_evt->param.parse_record.local_name.length, sizeof(device_name) - 1));
APP_LOG_INFO("MAC=%02X:%02X:%02X:%02X:%02X:%02X, %d, %s", p_addr[5], p_addr[4], p_addr[3], p_addr[2], p_addr[1], p_addr[0],
rssi, device_name);
}
打开微信,使用“扫一扫”即可关注