繁体   English   中英

BLE 4.0/4.1 支持 Android 64 字节数据传输

[英]BLE 4.0/4.1 supporting data transfer of 64 bytes in Android

我们有一些具有 BT 堆栈 4.0 和 4.1 的 android 设备。 按照理论,4.0 和 4.1 仅支持 23 (20 +3) 个字节的数据传输。 而 BT 栈 4.2 和 5.0 支持高达 251 字节 MTU 的数据传输。

但是在我们的应用程序中,我们要求 64 字节的 MTU 大小并且它工作正常。 我们能够发送和接收这种大小的数据。 我们能够连续发送 500-700 个 64 字节的数据包。

有没有人知道为什么它的工作方式不同? 还是只是一些以这种方式工作的安卓设备?

我们希望消除不支持我们的应用程序的设备。

您对这里的术语感到困惑。 根据规范,自蓝牙 4.0 以来的所有 BLE 版本的最大可能 MTU 为 64 KB,即使 Android 将 GATT 限制为 517。

BLE 4.2 中添加的新功能是“LE 数据包长度扩展”,它是对链路层的增强,将空中最大包长度从 27 字节增加到 251 字节,并且不会影响主机层。道路。 如果主机发送的数据包大于链路层可以处理的数据包,它会被发送方堆栈自动分段并在接收方重新组装。

因此,无论链路层功能如何,您的 Android 应用程序都将正常工作。 您唯一应该关心的是远程应用程序是否支持您想要的 64 MTU。

更新

蓝牙核心 v4.0 规范第 6 部分 B 部分第 2.4 节:

LLID 字段对于开始和延续片段有两个不同的值。

10b = LL Data PDU: Start of an L2CAP message or a complete L2CAP message with no fragmentation.
01b = LL Data PDU: Continuation fragment of an L2CAP message, or an Empty PDU.

当主机数据包大于链路层可以处理的(通常为 27 或 251 字节,带有 LE 数据长度扩展)时,继续较早数据包的特性很重要。 当无线数据包的长度永远不会超过 27 字节时,这就是您如何获得例如 517 的 MTU。

有关 L2CAP 分片和重组的更多信息,请参阅蓝牙核心规范第 3 卷 A 部分第 7.2 节。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM