如需要了解更多蓝牙相关知识,请点击下方连接
https://blog.csdn.net/weixin_47456647/article/details/155188246?spm=1011.2415.3001.5331
在蓝牙 ® 低功耗(BLE)的面向连接类应用中,通常由一台中心设备发起并维持与多台外设的连接。如图 1 所示,您可以看到:一台中心设备(如智能手机)可连接多台外设(如锁具、灯具、温控设备、开关等)。一台中心设备能支持的连接数量,取决于该设备自身的配置。

最近有人问我:像智能手表这样的外设,是否可以同时维持与多台中心设备(如智能手机、笔记本电脑)的连接?这在蓝牙规范中是否被允许?
图 2 展示了 "智能手表作为外设" 的场景:它可同时维持与 3 台智能手机、3 台笔记本电脑的连接 ------ 即便这些连接都是由这些中心设备发起的。

规范层面
是的,这是被允许的。下方截图(图 3)来自《蓝牙 ® 核心规范 5.1》第 6 卷 B 部分 11.1 节 "允许的状态与角色组合"(第 2684 页)。

Figure 3 -- Screenshot from Bluetooth® Core 5.1
从图 3 的红框部分可以看到,作为外设的设备具备以下能力:
- 维持连接的同时,也可以处于广播状态
- 可以与多台中心设备建立多个连接
时序重叠
下图 4 展示了两台中心设备(中心 1 和中心 2)的场景:它们都与同一台外设连接,且处于同一时间轴上。
- 蓝色部分代表中心 1 与外设建立连接,连接间隔由中心 1 分配给外设
- "M1→S" 表示中心 1 向外设发送数据包
- "S→M1" 表示外设向中心 1 回复
- 绿色部分代表中心 2 与外设建立连接,连接间隔由中心 2 分配给外设
- "M2→S" 表示中心 2 向外设发送数据包
- "S→M2" 表示外设向中心 2 回复
外设只有一个收发器,且该收发器工作在半双工模式下。因此,同一时间仅能与特定的中心设备通信。在图 4 中可以看到,中心 1 和中心 2 是交替与外设进行通信的。

图 5 的情况有所不同:在这个场景中,中心 2 调整了与外设的连接间隔,导致出现了两个重叠的时隙(红色部分)。
- 重叠 1:外设正在向中心 1 发送数据包,同时中心 2 向外设发送数据包
- 重叠 2:中心 1 和中心 2 同时向外设发送数据包

应对措施
虽然时序重叠是可能发生的,但有三种应对措施可以处理这种情况。以下措施并未在蓝牙核心规范中定义,但或许对您有帮助:
连接优先级排序:开发者在外设的固件设计中,可定义一个连接优先级表(按从高到低排序)。部分蓝牙 BLE SDK(软件开发工具包)也内置了优先级表。开发者需确认应用是否需要单个外设同时连接多台中心设备。
更新连接参数:若已对连接进行优先级排序,当出现重叠时,外设可更新连接间隔、外设延迟、监督超时等连接参数。根据连接优先级,外设可调整这些参数以避免重叠冲突。关于 "连接参数请求" 的更多细节,请参考《蓝牙 ® 核心规范 5.1》第 6 卷 D 部分 6.12 节 "连接参数请求"。
断开连接:外设发起的连接参数更新可能不被中心设备接受(因为中心设备有权决定是否接受)。若中心设备拒绝了更新的连接参数,外设唯一的选择是断开连接。断开哪条连接取决于连接的优先级:低优先级的连接会被优先断开,高优先级的连接则会保留。
无论选择哪种方式,没有对错之分,只看是否适合您的应用或系统设计。希望这些内容对您有帮助!