【发布时间】:2018-01-15 06:45:38
【问题描述】:
如何找出低功耗蓝牙 (BLE) 中 MTU 和最大特征尺寸之间的关系?
我有一个运行“回声”程序的 BLE 开发板 - 所以无论它收到什么,它都会立即回复。
在我的 Android 设备上,如果我请求 247 字节的 MTU(成功),然后写入 247 字节的特征,它将作为两个数据包发送:一个具有 242 字节,一个具有 5 字节。任何写入超过 244 字节的特征的尝试都会导致 2 个数据包 - 第一个具有 242 字节,第二个具有剩余字节。不知道为什么第一个数据包的长度是 242 字节而不是 244,但确实如此。
如果我请求一个 100 字节的 MTU,则会发生同样的事情,但是当特征长度超过 97 字节时数据包会被拆分,并且第一个数据包总是 95 字节长。
所以很明显,在这个特定的 Android 设备上,最大数据包长度比 MTU 值短 3 个字节。我在 iOS 上看到过有关 MTU 的页面,其中数据包长度比 MTU 值短 3 个字节。
我是否保证在所有移动设备和所有 BLE 实现上 MTU 和最大特征长度之间的差异为 3 个字节?
【问题讨论】:
标签: android ios bluetooth bluetooth-lowenergy