Получать уведомления BLE> 20 байт на Android - PullRequest
4 голосов
/ 15 марта 2019

После установления соединения с периферийным устройством BLE CC2652 используемое приложение Android отправляет запрос на обновление MTU

requestMtu (65)

Обновляет ли это размер MTU только для исходящих данных (приложение для Android)? Или я должен иметь возможность получать уведомления размером до 65 байт?

Я могу получать уведомления размером менее 20 байт даже после запроса обновления MTU.

P.S .: Я проверил, что одно и то же периферийное устройство может отправлять уведомления размером более 20 байтов на другое центральное устройство BLE CC2652.

1 Ответ

1 голос
/ 27 марта 2019

У нас также была эта проблема в проекте, и мы обнаружили, что на нормальную передачу данных влияет размер MTU, в то время как размер уведомлений остается на уровне 20 байтов.

В спецификации Bluetooth, том 3, часть F, раздел 3.4.7.1 указано (спасибо комментарий от Эмиля):

Сервер может отправлять уведомление о значении атрибута в любоевремя.Размер значения атрибута составляет от 0 до (ATT_MTU-3)

Но ниже таблицы также указано:

Примечание: для клиента, чтобы получить длинный атрибут, ондолжен будет использовать запрос чтения BLOB-объектов после получения этого уведомления.

Меня это немного смущает.Что означает «длинный»?Больше, чем размер MTU по умолчанию?Или дольше, чем согласованный размер MTU?

В конце мы попытались, но у нас не получилось.Теперь мы используем уведомление в качестве триггера, а затем наше приложение должно активно прочитать характеристику.

Обратите внимание, что на Android вам также нужно активно устанавливать размер MTU из вашего приложения.В противном случае телефон останется на 20 байтах.iPhone делает это автоматически.

...