沧州制作网站,宁津哪个网络公司做网站比较好,普通的个人简历怎么写,设计师设计软件一、简介 从之前的文章中我们知道#xff0c;蓝牙GAP层定义了四种角色#xff0c;广播者#xff08;Broadcaster#xff09;、观察者#xff08;Observer#xff09;、外围设备#xff08;Peripheral#xff09;、中央设备#xff08;Central#xff09;。 之前的学习…一、简介 从之前的文章中我们知道蓝牙GAP层定义了四种角色广播者Broadcaster、观察者Observer、外围设备Peripheral、中央设备Central。 之前的学习一直都是 外围设备Peripheral。这篇文章介绍下中央设备Central。 外围设备主要是通过广播向外发送数据而中央设备如何发现外围设备就需要通过扫描了。 扫描是一个在一定范围内用来寻址其他低功耗蓝牙设备广播的过程。扫描者设备在扫描过程中会使用广播信道。与广播过程不同的是扫描过程中没有严格的时间定义和信道规则。 扫描分为主动扫描和被动扫描。 不管是主动还是被动扫描扫描的基本流程为设置扫描参数 - 使能扫描 - Controller上报扫描结果 - 停止扫描。
二、主动扫描 主动扫描不单单可以捕获到对端设备的广播数据包还可以捕获扫描响应数据包。 设备不断发送广播信号给主机Observer如果主机不开启扫描窗口是收不到设备的广播的。主机不仅要开启射频接收窗口而且还要主机的射频接收窗口跟广播发送的发射窗口匹配成功主机才能收到设备的广播信号。由于这种匹配成功是一个概率事件所以主机扫描到设备也是一个概率事件。也就是说主机有时会很快扫描到设备比如只需要一个广播事件。主机有时也会很慢才能扫到设备比如需要10个广播事件甚至更多。 下图为主机主动扫描广播的过程 控制器收到扫描数据包后将向应用层发送一个广播报告事件adv_report该事件同样包括了链路层数据包的广播类型。因此主机能够判断对端设备是否可以连接或扫描。并区分出广播数据包和扫描响应数据包。 扫描是集中器监听广播数据包和发送扫描请求的过程它有2个定时参数需要特别注意扫描窗口和扫描间隔。 对于每一个扫描间隔集中器扫描的时间等于一个扫描窗口这就意味着如果扫描窗口等于扫描间隔那么集中器将处于连续扫描之中。 如果集中器想建立一个连接。当扫描监听到广播数据包后将会发送连接请求。 主动扫描流程图大致如下
2.1 、扫描参数 Host 设置BLE扫描所必须得参数到Controller。这样Controller才知晓扫描上报哪类低功耗设备信息。 LE_Scan_Type扫描类型主动扫描还是被动扫描。 LE_Scan_Interval扫描间隔控制器多久扫描一次。也就是两个连续扫描的间隔。 LE_Scan_Window扫描窗口。每次扫描所持续的时间在持续时间内扫描设备一直在刚播信道上监听。 注扫描窗口和扫描间隔这两个参数非常重要。扫描窗口的设置要小于或等于扫描间隔并且都是0.625ms的整数倍。这两个参数决定了控制器的扫描占空比。如果把两者的时间间隔设置为相同的大小那么控制器会进行连续扫描。每个间隔会改变扫描频率也就是切换扫描信道。 Own_Address_Type本端设备的扫描请求数据包中使用的地址类型。 Scanning_Filter_PolicyBLE扫描的过滤策略也就是说接受任何广播数据或者仅仅接受报名单设备的广播数据包。实际上就是决定是否使用白名单过滤广播数据包。需要注意的是如果定向广播数据包中的目的地址并非自己那么该数据必须被抛弃。即使广播数据包的发送者在自己的报名单内也不例外。官方对筛选定义了如下四种情况
#define BLE_GAP_SCAN_FP_ACCEPT_ALL 0x00接收所有的广播包除去广播地址不是指向该设备的定向广播#define BLE_GAP_SCAN_FP_WHITELIST 0x01接收在白名单里的所有广播除去广播地址不是指向该设备的定向广播。#define BLE_GAP_SCAN_FP_ALL_NOT_RESOLVED_DIRECTED 0x02接收所有的广播包包含定向广播包。如果广播MAC地址是私密地址这里无法被解析。#define BLE_GAP_SCAN_FP_WHITELIST_NOT_RESOLVED_DIRECTED 0x03接收白名单里所有的广播包包含定向广播包。如果广播MAC地址是私密地址这里无法被解析。
2.2、使能/停止扫描 Host启动和停止广播启动扫描后控制端发现周围环境中的广播设备。 LE_Scan_Enable使能还是停止扫描。Filter_Duplicates是否开启广播重复过滤。开启后可避免主机在BLE扫描期间接收到重复的低功耗设备信息该值只有在扫描使能才会生效。
2.3、上报扫描结果 BLE扫描过程中一个或多个低功耗蓝牙设备对主动扫描作出响应或者在被动扫描期间收到了广播。控制器一次将扫描到的信息上报给应用层。 三、被动扫描 在被动扫描中扫描者仅仅去监听广播包而不向广播者发送任何数据。 一旦扫描参数设置完成主机就可以启动扫描。扫描过程中如果控制器接收到符合过滤策略和其他规则的广播数据包则发送一个LE Advertising Report事件给主机。除了广播者的设备地址外报告事件还包括广播数据包中的数据以及接受广播数据包时的信号接受强度RSSI。可以利用该信号强度以及位于广播数据包中的发送功率共同确定信号的路径损失从而给出大致的范围。这个应用就是防丢器和蓝牙定位。被动扫描不需要向从机发送任何数据。 下图是被动扫描的过程