2

我有一个硬件作为外围设备,我想读取它的所有内存,它有 1081344 字节。使用 23 字节的标准大小(20 字节对数据有用 -> 请参阅编辑以了解它是如何工作的)读取所有内存需要一分钟多的时间,所以我想提高吞吐量。为此,我可以使 MTU 更大,正如我在这篇有用的文章 ( https://punchthrough.com/blog/posts/maximizing-ble-throughput-part-2-use-larger-att-mtu ) 中看到的那样。听说用较大的 MTU 传输不稳定。是不是太不稳定以至于不值得使用,或者不管不稳定,它都能提供更好的吞吐量?

问题是android仅从API 21提供requestMtu方法。我想知道是否可以从外围更改MTU而无需在android端实现任何回调或函数(这样它可以在18之后的任何API上工作)。从这个答案(Requesting MTU with Bluetooth Low Energy connection on Android 4.3-4.4 (API 18-20))看来是可能的,但我不确定我是否应该在android端做一些实现。

如果 android 不接受这个请求,是否有另一种方法可以在不依赖 API 21 的新功能的情况下更改 MTU?这个答案(Change the MTU or Packet Size for Bluetooth in Android?)让我相信这是可能的,但我不清楚它是如何完成的。

如果我可以向外围设备请求 MTU 大小(固件开发人员向我确认这是可能的),外围设备能否知道它是否成功?我认为使用它就足够了,因为我可以通过特性与我的外围设备进行通信,它可以告诉我请求是否被接受。我只是想知道是否可以相信 android 会接受并发送成功响应,或者在 21 之前的 API 上是否存在 23 字节 MTU 的限制。

由于在硬件上实现它需要一些时间,我想知道它是否值得尝试,或者是否绝对行不通。

编辑:外围设备现在一次更新一个包含 20 个字节的包的特性,并向我的中心发送更改通知。因此,块的划分是在服务器端完成的。我想要的是使这些块更大。

4

0 回答 0