CN / EN
CN / EN

提问

设计支持

您的项目私密技术问题如需获得一对一支持,请点击下方联系我们。

GR5515芯片作为主机扫描时,什么情况下获取不到附件外围设备的广播名? GR551x

137****com

2023-11-30 14:49

芯片型号: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工程如何配置?是不是有最大缓存的限制?如何改大限制?

0收藏

0赞成

zhongchengzhi

汇顶员工
2023-11-30 17:00

您好,广播名字不是以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);
    }


2条评论

0赞成

0收藏

您的评论

登录后可回答问题,请 注册

我们时刻倾听您的声音
联系销售

扫描关注公众号

打开微信,使用“扫一扫”即可关注