从零开始的nrf52832蓝牙开发(7)--广播与扫描白名单

1.主机端

开启白名单的选项在之前章节的扫描参数里:

我们需要更改为:

 

关于扫描策略:

 

BLE_GAP_SCAN_FP_ACCEPT_ALL:接收所有的广播包,除去广播地址不是指向该设备的定向广播。
BLE_GAP_SCAN_FP_WHITELIST:接收在白名单里所有的广播,除去广播地址不是指向该设备的定向广播。
BLE_GAP_SCAN_FP_ALL_NOT_RESOLVED_DIRECTED:接收所有的广播包,包含定向广播包。这里如果广播MAC地址是私密地址,这里是无法被解析的。
BLE_GAP_SCAN_FP_WHITELIST_NOT_RESOLVED_DIRECTED:接收白名单里所有的广播包,包含定向广播包。这里如果广播MAC地址是私密地址,这里是无法被解析的。
 

这里设置为扫描白名单的选项后,我们怎么去设置白名单呢?

开启这个选项后,在协议栈扫描相关初始化完成后,会由协议栈给我们一个设置白名单回调事件,我们需要在这个事件中设置白名单:

在回调函数中设置:

 注意,当白名单里面有多个成员时,p_peer_addr 应该是一个结构体数组指针。这里的len成员要根据实际情况设置:

可以看到,白名单成员数量不能超过:

 

这里是8。 然后就是扫描到白名单里面的成员后的处理:

相较于前几章我们可以看到每种事件保存数据的结构体都很分明:

 

2.从机端

和上一章相同,略。

3.实际现象

 

注意,过滤和白名单扫描有本质区别:

开启过滤时,其实仍然是扫描所有设备,扫描到符合过滤规则的设备时,触发的是:

NRF_BLE_SCAN_EVT_FILTER_MATCH

而扫描到不符合过滤规则的设备时,触发的是:

NRF_BLE_SCAN_EVT_NOT_FOUND

而开启白名单扫描是改变的扫描模式,这种情况下,一旦设置成功,只会在扫描到白名单设备时触发:

NRF_BLE_SCAN_EVT_WHITELIST_ADV_REPORT

而不再会有其他事件。 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值