
引言在蓝牙低功耗Bluetooth Low Energy, BLE协议栈中Link Layer链路层是位于Physical Layer物理层之上、L2CAP层之下的核心层。它负责管理无线接口的状态、数据包的收发调度、物理信道的选择以及连接的建立与维护。如果说BLE是一辆汽车那么Link Layer就是它的变速箱——决定了设备当前处于什么档位以及如何在不同档位之间切换。Link Layer的核心设计之一就是状态机。本文将从BLE Core Specification出发深入浅出地解读Link Layer的各个状态及其切换逻辑。1. 状态机概述Link Layer的操作可以通过一个状态机来描述。根据BLE Core SpecificationLink Layer定义了以下7种状态Standby State待机状态Advertising State广播状态Scanning State扫描状态Initiating State发起状态Connection State连接状态Synchronization State同步状态Isochronous Broadcasting State等时广播状态在早期的BLE规范v4.0/4.1/4.2中只有前5种状态。Synchronization State和Isochronous Broadcasting State是随着LE Isochronous Channels特性在v5.2中引入的。Link Layer状态机有几个关键特性单一活跃状态一个状态机在同一时刻只能处于一个状态。多实例支持Link Layer可以有多个状态机实例。这意味着一个设备可以同时维持多个连接、或多个广播集——这就是BLE支持多连接、多角色并发的底层基础。最小能力要求Link Layer至少需要支持Advertising State或Scanning State之一。2. 七种状态详解2.1. Standby State待机状态Standby是Link Layer的空挡状态——设备不发送也不接收任何数据包。这是系统上电后的初始状态有一个非常重要的特性Standby State可以从任何其他状态进入。也就是说无论设备当前在做什么广播、扫描、连接等只要停止当前操作就可以回到待机状态。Standby本身不执行任何通信功能但它是一切通信的起点。从Standby可以切换到Advertising State开始广播Scanning State开始扫描Initiating State开始发起连接Synchronization State开始同步Isochronous Broadcasting State开始等时广播但需要注意的是不能直接从Standby进入Connection State——必须先经过Initiating或Advertising2.2 Advertising State广播状态Advertising State是设备宣告自己存在的状态。处于广播状态的设备被称为Advertiser广播者。它会在广播物理信道上定期发送广播数据包可能监听并响应由这些广播触发的响应如Scan RequestAdvertising State只能从Standby State进入。从广播状态可以回到Standby State停止广播进入Connection State当收到Connect Request并成功建立连接时当从Advertising State进入Connection State时设备扮演的是Peripheral Role外围角色。 类比Advertising State就像一个人在广场上举着牌子喊我在这里来找我。2.3. Scanning State扫描状态Scanning State是设备寻找别人的状态。处于扫描状态的设备被称为Scanner扫描者。它会监听广播物理信道上的广播数据包可以是被动扫描只接收也可以是主动扫描发送Scan Request获取更多数据Scanning State只能从Standby State进入。从扫描状态只能回到Standby State——扫描完成后设备要么回到待机要么转换角色去发起连接需要先回到Standby再进入Initiating。 类比Scanning State就像一个人在广场上四处张望寻找有没有人举着牌子。2.4 Initiating State发起状态Initiating State是设备主动搭讪的状态。处于发起状态的设备被称为Initiator发起者。它会监听特定设备的广播物理信道数据包当收到目标设备的可连接广播时发送连接请求以发起连接Initiating State只能从Standby State进入。从发起状态可以回到Standby State连接失败或取消发起进入Connection State连接成功建立当从Initiating State进入Connection State时设备扮演的是Central Role中心角色。 类比Initiating State就像一个人看到心仪的对象后主动走过去打招呼。2.5 Connection State连接状态Connection State是设备建立关系后的通信状态。进入Connection State后设备就处于一个连接之中。在连接状态内部定义了两种角色Central Role中心角色从Initiating State进入时担任。负责定义传输时序。Peripheral Role外围角色从Advertising State进入时担任。与单个Central通信。⚠️ 重要区别与经典蓝牙BR/EDR不同BLE在连接建立后角色是固定的不支持角色切换。一旦连接建立Central永远是CentralPeripheral永远是Peripheral。Connection State可以从两个方向进入从Initiating State → Central Role从Advertising State → Peripheral Role断开连接后设备回到Standby State2.6 Synchronization State同步状态Synchronization State是设备收听周期性广播的状态。处于同步状态的设备被称为Synchronized Receiver同步接收器。它会监听来自特定设备的周期性物理信道数据包可以接收Broadcast Isochronous GroupBIG中的等时数据包Synchronization State可以从Standby State进入。这个状态是v5.2引入的主要用于支持LE Audio等需要接收广播等时流的场景。2.7 Isochronous Broadcasting State等时广播状态Isochronous Broadcasting State是设备发送等时数据的状态。处于此状态的设备被称为Isochronous Broadcaster等时广播者。它会在等时物理信道上传输等时数据包如BIS - Broadcast Isochronous Stream用于广播音频流等对时序有要求的应用Isochronous Broadcasting State可以从Standby State进入。这也是v5.2引入的状态是LE Audio广播场景的核心支撑。3. 状态切换全景当前状态可切换到的状态触发条件StandbyAdvertising开始广播StandbyScanning开始扫描StandbyInitiating发起连接StandbySynchronization同步周期性广播StandbyIsochronous Broadcasting开始等时广播AdvertisingStandby停止广播AdvertisingConnection (Peripheral)连接成功ScanningStandby停止扫描InitiatingStandby取消发起/连接失败InitiatingConnection (Central)连接成功ConnectionStandby断开连接SynchronizationStandby停止同步Isochronous BroadcastingStandby停止广播关键观察Standby是唯一可以从任何状态进入的状态只有Standby能进入其他状态除了Connection可以从Initiating或Advertising进入Scanning只能回到Standby不能直接进入Connection4. 多状态机与并发一个重要的设计是Link Layer可以有多个状态机实例。这意味着一个BLE设备可以同时在一个状态机中作为Central维持连接在另一个状态机中作为Peripheral接受连接在第三个状态机中广播数据这就是BLE支持多连接、多角色并发的底层机制。例如一个智能手机可以同时连接多个蓝牙设备耳机、手表、键盘等同时还在广播自己的存在。5. 总结Link Layer状态机是BLE协议栈的神经中枢它用7种状态优雅地描述了设备在无线通信中的所有可能行为模式Standby静默待命一切通信的起点和终点Advertising宣告存在等待被发现或被连接Scanning主动发现寻找周围的设备Initiating主动出击发起连接Connection建立关系进行双向通信Synchronization收听广播流v5.2Isochronous Broadcasting发送广播流v5.2理解这7种状态及其切换逻辑是深入理解BLE协议栈工作原理的第一步也是进行BLE应用开发和问题调试的基础。参考Bluetooth Core Specification v5.4 [Vol 6] Part B, Section 1.1