FiRa标准——蓝牙OOB规范(四)

15 篇文章 0 订阅
本文详细介绍了如何通过蓝牙GATT服务使用CS和CP数据交换协议,特别是FiRa连接器如何处理数据包、消息结构、分段与重组,以及管理协议和不同角色之间的数据交互。重点在于并行分段会话和FiRa连接器数据包交错的处理策略。
摘要由CSDN通过智能技术生成

9、通过蓝牙GATT服务数据传输

9.1 使用CS和CP数据交换协议

通过蓝牙GATT“IN”和“OUT”控制点特征的数据编码以及序列机制。

9.1.1 FiRa连接器数据包

所有GATT特征被定义为“IN”和“OUT”控制点传输数据均使用相同的数据结构。所有蓝牙应用层数据(top of GATT)由FiRa连接器数据包组成,所有数据包均为可变大小,最大可达到GATT服务根据FiRa连接器能力提供的优化数据包大小(optimized_size)。

FiRa连接器数据包提供拆包与重组机制,这允许传输超过FiRa连接器消息大小的数据包传输。
FiRa连接器数据包结构

Chaining Bit用于标识拆包片段,为1,表明是最后一个包,用于重组中标识数据包。

数据包头以特定安全组件ID(SECID)进行区分,其中管理SECID为0b000_0001,是隐藏、不公开的。关于安全组件ID相关,已经在上一篇文章FiRa标准——蓝牙OOB规范(三)中进行了介绍,是FiRa连接器能力中的重要组成部分。

9.1.2 FiRa连接器消息结构

FiRa连接器消息是用于FiRa连接器数据包传输FiRa应用程序数据的更高一层数据结构(数据可能超过optimized_size)。提供了一种在蓝牙GATT层上传输无限制数据串的机制,通过有限的缓冲区大小来实现(连接到GATT服务器与客户端之间商定的ATT_MTU大小)。

FiRa连接器消息结构

9.1.3 FiRa连接器数据分段

FiRa OOB连接器需要负责进行数据分段与重组工作。一个命令/响应数据字符串封装在一个FiRa连接器消息中,并且可以通过一个或多个FiRa连接数据包发送。FiRa连接器数据包的数量及其大小受限于蓝牙GATT层实现时确定的ATT_MTU大小。FiRa连接器数据包包含连续的FiRa连接器消息片段,编码规则如下:

  • 在使用蓝牙GATT方法(如写入或处理值通知)发送FiRa连接器数据包,所有的拆分数据均包含Data Packet Header,即Data Packet Header + Body的结构,将FiRa Connector Message拆分开来。
  • Data Packet Header中CB字段均设置为0,除最后一个片段置为1。即对于一个完整单独的包,CB置为1,为0表示该包不完整,需要进行拼接。
  • 只有第一个片段包含FiRa连接器消息头。

FiRa连接器拆分数据传输
从图中也可以看出,一个消息帧通常会大于每个数据包,数据包受限于Optimized Data Packet size,而消息可以拆分为多个包,对于最后一包数据,CB需要设置为1。

9.1.4 并行分段会话和FiRa连接器数据包交错

上一节描述的分段/重组机制允许管理并行会话,安全组件一端的每个SECID目标一个会话。但是,此功能为可选的,且依赖于具体实现。每个GATT server和client实现CS,应通过FiRa连接器能力特性中的“最大并发分段会话数量”字段来指示是否支持此功能。在CP端将基于此,确保正在进行的分段会话刷领不超过该并发数量。
以下示例说明了FiRa连接器数据包序列携带了两个交错的分段会话。(Data Packet #1与#3为SECID=X,#2为SECID=Y数据包)

FiRa连接器数据交错示例

从图中可以看到,要能够允许交错分段数据的处理,非常重要的一点就是SECID应该是不同的,这也是在前面的约定中限制了每个SECID只能有一个会话。

9.1.5 管理协议和管理SECID

管理SECID用于发出与FiRa蓝牙OOB连接器定义的数据传输和协议相关的错误和事件。
管理SECID(0b000_0001)应始终暴露在每个CS实现上,同时标记为静态。
管理SECID用于传输FiRa连接器消息。安全组件协议类型应设置为“FiRa OOB管理协议”(0b0001)。

FiRa OOB管理协议事件定义如下:
OOB管理协议事件

FiRa设备根据其角色,发送或处理FiRa OOB管理协议事件行为。
OOB管理协议行为根据图中也可以看到关于管理事件的传输方向:

能力改变
CS
CP
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萝卜D大哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值