转自:http://www.05935.com/bc/294540/
连接事件
在一个连接当中,主设备会在每个连接事件里向从设备发送数据包。一个连接事件是指主设备和从设备之间相互发送数据包的过程。连接事件的进行始终位于一个频率,每个数据包会在上个数据包发完之后等待150μs再发送。
连接间隔决定了主设备与从设备的交互间隔;它是指两个连续的连接事件开始处的时间距离,可以是7.5ms ~ 4s内的任意值,但必须为1.25ms的整数倍。要确定从设备与主设备的实际交互间隔,需要用到从设备延迟这一参数,代表从设备在必须侦听之前可以忽略多少个连接事件。
如下图所示,连接事件被一个个的连接间隔分开。从主设备发送数据包开始,每个连接事件可以持续进行,直至主设备或从设备停止响应。在连接事件之外,主从设备之间不发送任何数据包。
举个例子,如果连接间隔为100ms,从设备延迟是9,那么从设备可以忽略9个链接事件,但不得不侦听第10个连接事件。换言之,从设备必须每秒侦听一次,而此时监控超时的最小值应为1010ms。反过来,另一个极端的例子是,如果监控超时使用了32s的最大值,对于间隔为100ms的链路,从设备延时必须小于等于319。
虽然如此,如果将从设备延迟设为可行的最大值,在监控超时发生前从设备只能获得唯一一次侦听主设备的机会,这可不是一个好主意。因此,建议至少给从设备留出6次侦听的机会。在前面的例子中,如果连接间隔为100ms,从设备延迟为9,那么监控超时应该至少为6s,这样一来,链路在最终断开前从设备至少会有6次侦听的机会。
连接参数介绍
主设备和从设备建立连接之后,所有的数据通信都是在连接事件(ConnectionEvents)中进行的。
尖刺的波就是连接事件(Connectionevents),剩下的Sleeping是睡眠时间,设备在建立连接之后的大多数时间都是处于Sleeping,这种情况下耗电量比较低,而在连接事件(Connectionevents)中,耗电量就相对高很多,这也是BLE为什么省电的原因之一。
每个连接事件(Connectionevents)中,都需要由Master发起包,再由Slave回复。
Master即主机,简称M;Slave即从机,简称S。抓包过程中看到的M->S或者S->M即主机到从机