在上一节介绍了基于Advertiser与Scanner的发现,对于FiRa的蓝牙OOB中,设备分为主连接器(Connector Primary,CP)与辅助连接器(Connector Secondary,CS),本节介绍基于蓝牙GATT服务的发现实现。
8、蓝牙GATT服务发现
基于蓝牙GATT的服务发现流程,以及FiRa设备的蓝牙应用层,该应用实现设备发现并建立蓝牙连接。
8.1 辅助连接器(Connector Secondary,CS)
本节描述蓝牙GATT层实现CS的结构和方法。
8.1.1 CS的GATT server定义
在GATT服务器端实现CS的设备被要求公开一个GATT Primary Service,UUID : 0xFFF4。
以下GATT特征公开在CS GATT Primary Service。此服务中,每个特征仅允许存在一个实例。
可以看到,对于CS端服务的几个Characteristic的UUID依次为:0x2A03、0x2A04、0x2A05。
在OOB实现数据交换,均通过通过“IN”和“OUT”控制点特征,需要遵守第9.1节中描述的数据交换协议。
8.1.2 实现CS的GATT Server的行为
GATT服务器简单等待来自客户端的发现。直到一个客户端使能“OUT”控制点特征的值通知方法(通过客户端特征配置描述符,CCCD),服务器端都应该忽略各种通过“IN”控制点特征写入方法发送的命令。
一旦在“OUT”控制点特征上启用句柄值通知方法,GATT服务器将执行FiRA连接器数据包和FiRa连接器消息的处理,具体如下:
- 它对FiRa连接器数据包中接收到的具有给定SECID,通过“IN”控制点特性的分段FiRa连接器命令消息(FiRa Connector command Message)进行重组。
- 它将