我有一个硬件充当外设,我想读取它的所有内存,有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不接受此请求,是否有其他方法可以更改MTU而不依赖于API 21的新功能?这个答案(Change the MTU or Packet Size for Bluetooth in Android?)让我相信这是可能的,但我不清楚它是如何完成的。
如果我可以从外围设备请求MTU大小(固件开发人员向我确认这是可能的),外围设备是否可以知道它是否已成功?我认为这样就足够了,因为我可以通过特性与我的外围设备进行通信,它可以告诉我是否接受了请求。我只想知道是否可以相信android会接受并发送成功响应,或者是否在21之前的API上有23个字节的MTU限制。
由于在硬件上实现它需要一些时间,我想知道它是否值得尝试,或者肯定不会起作用。
编辑:外围设备现在一次用一个20字节的包更新一个单一的caractheristic,并向我的中心发送更改通知。因此,块中的分区是在服务器端完成的。我想要的是让那些块更大。