1

我有一个蓝牙 LE 版本 4.2 的硬件设备,它可以发送有效载荷为 251 字节的数据包。但我将通过移动应用程序(Android 和 IOS)接收数据,并且手机将具有不同的蓝牙 LE 版本,如 v4.0、v4.1 或 v4.2。

假设我的硬件设备充当主设备,而移动设备充当从设备。而且这里master不知道slave的蓝牙版本。

如果master发送的数据包的payload为251字节,slave(v4.0-payload:33字节)如何处理。

问题 1:BLE GATT 服务器是否能够通过保留 251 个数据包的缓冲区并一个接一个地发送 33 个数据包来处理这种向后兼容的情况?

问题 2:通过将主设备保持在 v4.2 并仍然使用所有 BLE 版本回答从设备,获得高吞吐量的最佳方法是什么?

问候,西瓦。

4

1 回答 1

1

如果您阅读蓝牙核心规范,您会发现在链路层上,链路层数据包大小可以从双方协商(从属或主控无关紧要)。如果其他设备不支持它,则将使用默认长度。否则将使用较大的长度。所以它是完全向后兼容的。

此外,GATT 层根本不需要更改以支持 LE 数据长度扩展,因为分片和重组由 L2CAP 层处理。

但是请注意,您需要为 GATT 交换较大的 MTU 才能使用该功能。最好 4+MTU 应该是链路层数据包最大长度的倍数。

于 2017-10-18T19:37:15.977 回答