蓝牙连接
蓝牙连接是如何进入到连接状态呢,首先必须经历前面提到的广播阶段,主端通过扫描到从端的广播来发现这个设备,之后让主端发出连接请求来要求与从端建立连接,便可以进入到连接状态。由于蓝牙连接牵涉的点比较多,所以在这里就是简单的给出蓝牙连接简单模型!从通信模型上来看,BLE连接属于双向通信。较之广播而言,连接的过程则要复杂的多,但是没有关系,这些个复杂的交互过程在如今都已经被芯片供应商们都封装好了,我们需要做的,就是使用它并能够理解一个其中大概的原理就好了。最常用的蓝牙连接模型如下图所示,主端在发出数据后即会进入接收模式等待从端的数据,而从端则反之,这样就完成了一次或多次数据交换,这样一个过程称为一次连接事件connection event。在完成一次连接事件之后即进入到休眠状态idle以节省功耗,在一段时间后双方同时唤醒再交换一次数据,这个时间间隔也称为连接间隔 connection interval。可以看到,因为只能在每一次蓝牙事件发生的时候才能够交互一次数据,所以蓝牙的通信速率实际上是取决于蓝牙连接间隔的长短,间隔越短,可以达到的通信速率也就越快。而当没有实际数据交互的时候,BLE底层也会通过发送空包交互的方式来维系蓝牙连接的存在,当有数据的时候再将数据加载进去即可。此外,蓝牙底层对于数据交互有着严苛的要求,比如当从端发送一包数据至主端后,它会等待主端的回复信息以确认数据已经发送成功,否则会持续发送直到连接断开为止。这个过程也是蓝牙协议底层在处理的,对于应用层来说这些问题都不用关心。除了连接间隔之外,还有两个参数需要关心。一个叫从机时延,从上图最开始可以看到在完成一次连接事件之后,从端进入休眠,并直接跳过了接下来的两次事件,然后再与主端交互一次。这样做,比较适合长时间连接并交互数据不多的设备,无疑更省电!另一个叫连接超时则很好理解,当通信双方从一次连接事件之后,持续一段时间没有交互数据并达到设定时间则会发生连接超时然后通信双方断开。让每一个物体
有生命!
长按关注