Мне нужно отправить длинное (скажем, 10 КБ) уведомление от Bluez 5.37 на моем устройстве Linux на мобильный телефон.
Моя реализация основана на src/shared/gatt-server.c
.
Я не могу найти такого примера в Bluez. src/shared/gatt-server.c
, bt_gatt_server_send_notification()
строго обрезает пакет до MTU-1 и отбрасывает остальное. Для этого мне нужна очередь вывода, как в gatt-client.c
. bt_gatt_client_read_long_value()
похоже на пример того, что мне нужно, но для длинных характерных чтений.
- Есть ли способ отправить длинное уведомление, совместимое с большинством телефонов Android с Bluetooth 4.0? Это требует некоторого взаимодействия со стороны телефона - отправки ATT_READ_BLOB_REQUESTS, AFAIS.
- Или существует общая библиотека пакетирования, которая будет работать с пакетами размером 20 байт?
- Другой способ, который я могу придумать, - это создать другую характеристику, использовать сообщения с уведомлениями для коротких сообщений и, э-э, уведомлений о том, что «Привет, есть длинное сообщение, прочтите его по этой характеристике».
Какой способ лучше? Существует ли пример любого из трех способов?