Могу ли я запросить изменение MTU с периферийного устройства на Android (даже в старых API)?

У меня есть аппаратное обеспечение, выполняющее роль периферийного устройства, и я хочу прочитать всю его память, которая имеет 1081344 байта. При использовании стандартного размера 23 байта (из них 20 байтов полезны для данных -> см. "Правка", чтобы понять, как он это делает), требуется больше минуты, чтобы прочитать всю память, поэтому я хочу улучшить пропускную способность. Для этого я мог бы увеличить MTU, как я видел в этой полезной статье ( https://punchthrough.com/blog/posts/maximizing-ble-throughput-part-2-use-larger-att-mtu). Я слышал, что перевод с большим MTU нестабилен. Слишком нестабильно, что его не стоит использовать, или оно, несмотря на нестабильность, предлагает лучшую пропускную способность?

Проблема в том, что android предоставляет метод requestMtu только из API 21. Я хочу знать, возможно ли заменить MTU с периферийного устройства без необходимости реализовывать какие-либо обратные вызовы или функции на стороне Android (таким образом, он будет работать на любом API после 18). Исходя из этого ответа (запрос MTU с подключением Bluetooth Low Energy на Android 4.3-4.4 (API 18-20)) это представляется возможным, но я не уверен, что есть какая-то реализация, которую я должен сделать на стороне Android.

Если android не примет этот запрос, есть ли другой способ изменить MTU без зависимости от новых функций API 21 и далее? Этот ответ ( изменить MTU или размер пакета для Bluetooth в Android?) Заставляет меня поверить, что это возможно, но мне не ясно, как это делается.

Если я могу запросить размер MTU от периферийного устройства (разработчик прошивки подтвердил мне, что это возможно), может ли периферийное устройство узнать, удалось ли это? Я думаю, что этого будет достаточно для работы, потому что я могу общаться с моим периферийным устройством через характеристики, и он может сказать мне, был ли принят запрос или нет. Я просто хочу знать, можно ли верить, что android примет и отправит ответ об успешном выполнении или есть какое-то ограничение в 23 байта MTU для API до 21.

Поскольку для реализации этого на аппаратном обеспечении требуется некоторое время, я хотел бы знать, стоит ли его пытаться или точно не сработает.

Изменить: периферийное устройство теперь обновляет одну единственную характеристику с пакетом из 20 байтов за раз и отправляет уведомления об изменениях в мой центр. Итак, деление на куски выполняется на стороне сервера. То, что я хочу, это сделать эти куски больше.

0 ответов

Другие вопросы по тегам