BLE 链路层状态机
在链路层,BLE设备有两种角色:
(1) Master role:主设备,在通信建立的过程中起主导作用,发起连接建立。
(2) Slave role:从设备,在通信建立的过程中发送广播消息的设备会作为从设备。
链路层的状态有如下几种:
(1) Standby:在此状态下链路层不收发任何数据包,任何其它状态都可以转换为该状态。
(2) Advertising:链路层在此状态下将会发送广播消息,或者处于侦听广播响应消息。
(3) Scanning:在这种状态下,链路层会扫描是否有广播消息。
(4) Initiating:链路层在这种状态会侦听广播信道消息,链路层也会响应广播消息从而启动连接建立。
(5) Connection:设备建立连接之后就进入connection状态。
上述各个状态之间的转移图如下(图片来源于BLE协议规范):
(1) 对于主设备而言,它的状态转移路径为:standby->initiating->connection->standby;
(2) 对于从设备而言,状态转移路径为:standby->advertising->connection->standby;
(3) 对于scanning状态,主要用于如下场景:当一个设备在收到advertise消息之后,如果想要获取关于该advertiser更多的信息,会进入scanning状态。