乐鑫技术交流
直播中

李志静

7年用户 1394经验值
私信 关注
[问答]

关于使用BLE白名单(idf 5.0)遇到的疑问

请教下BLE白名单(idf 5.0)的使用方法

场景:esp32s3(periperal)和华为手机(central)互连,第一次连接配对绑定,后续连接采用过滤广播连接

① esp32s3在没调用esp_ble_gap_config_local_privacy时,显示的手机地址类型是1(random),地址是addr_1
② 调用esp_ble_gap_config_local_privacy(true)后,显示的手机地址类型是2(rpa_public),地址是addr_2

esp_ble_gap_update_whitelist()好像只能支持0,1类型
无论我调用esp_ble_gap_update_whitelist(addr_1, 1) 还是
esp_ble_gap_update_whitelist(addr_2, 1)

白名单功能都不生效

那么手机(rpa_public类型地址)就没法使用esp32s3的白名单功能了吗?

另外白名单好像在esp32重启后会清空,而绑定名单不会,
从绑定名单里读出来的所有设备地址类型都是0,似乎没有正确记录随机地址类型,
那么我如何在系统重启后恢复白名单呢?难道要自己额外记录地址类型

最后再吐槽下,BLE API写的是真差,说明也不到位,再看了下STM32的,真实简单易懂
                                                                                                                                                            
               

回帖(1)

李木木

2024-6-12 09:50:40
1-白名单功能都不生效问题
首先考虑 “esp_ble_gap_update_whitelist” 是否成功,查看 log,然后考虑在开启广播时(“esp_ble_gap_start_advertising”)有没有设置“Advertising filter policy”?

2-rpa_public 类型地址问题
“esp_ble_gap_update_whitelist ”支持 “BLE_WL_ADDR_TYPE_PUBLIC” 和“BLE_WL_ADDR_TYPE_RANDOM”类型, 调用 esp_ble_gap_config_local_privacy(true) 后,显示的手机地址类型是2(rpa_public),说明手机的rpa地址已经被解析出来,后面可以使用手机的 public 地址加入白名单,因此,esp_ble_wl_addr_type_t 设置为 “BLE_WL_ADDR_TYPE_PUBLIC”。

3-似乎没有正确记录随机地址类型问题
一般来说手机使用的是 public 地址,从绑定名单里读出来的所有设备地址类型都是 0,说明手机的地址已经被解析出来。

4-如何在系统重启后恢复白名单
绑定列表可以自动保存到 nvc_flash。白名单需要根据需求添加,如果重启后还要使用白名单,需要将白名单预先保存到 nvc_flash,重启后进行恢复。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分