从 BLE v4.2 到 4.0 的有效载荷大小的向后兼容性
Posted
技术标签:
【中文标题】从 BLE v4.2 到 4.0 的有效载荷大小的向后兼容性【英文标题】:Backward compatibility on payload size from BLE v4.2 to 4.0 【发布时间】:2017-10-18 14:39:39 【问题描述】:我有一个蓝牙 LE 版本 4.2 的硬件设备,它可以发送有效载荷为 251 字节的数据包。但我将通过移动应用程序(android 和 ios)接收数据,并且手机将具有不同的蓝牙 LE 版本,如 v4.0、v4.1 或 v4.2。
假设我的硬件设备充当主设备,而移动设备充当从设备。而且这里master不知道slave的蓝牙版本。
如果master发送的数据包的payload为251字节,slave(v4.0 - payload: 33 bytes)如何处理。
问题 1:BLE GATT 服务器是否能够通过保留 251 个数据包的缓冲区并一个接一个地发送 33 个数据包来处理这种向后兼容的情况?
问题 2:通过将主设备保持在 v4.2 并仍然使用所有 BLE 版本回答从设备,获得高吞吐量的最佳方法是什么?
问候, 湿婆。
【问题讨论】:
【参考方案1】:如果您阅读蓝牙核心规范,您会发现在链路层上,链路层数据包大小可以从双方协商(从机或主机都没有关系)。如果其他设备不支持它,则将使用默认长度。否则将使用较大的长度。所以它完全向后兼容。
此外,GATT 层根本不需要更改以支持 LE 数据长度扩展,因为分片和重组由 L2CAP 层处理。
但请注意,您需要将较大的 MTU 换成 GATT 才能使用该功能。最好 4+MTU 应该是链路层数据包最大长度的倍数。
【讨论】:
以上是关于从 BLE v4.2 到 4.0 的有效载荷大小的向后兼容性的主要内容,如果未能解决你的问题,请参考以下文章
当有效载荷长度大小大于 1000K 时,无法获得有效载荷响应。(Coap)