Как поддерживать несколько одновременных подключений BLE с поддержкой Notify с Bluez в качестве периферийного устройства

#linux #bluetooth-lowenergy #bluez #gatt

#linux #bluetooth-низкое энергопотребление #bluez #gatt

Вопрос:

Я хотел бы поддерживать несколько (по крайней мере, 2) одновременных подключений BLE к Bluez в качестве периферийного устройства с помощью одного адаптера. Я считаю, что это технически возможно, поскольку многие встроенные платформы поддерживают это (Silabs, Nordic).

В настоящее время при первом подключении реклама GATT полностью прекращается до тех пор, пока соединение снова не будет разорвано. Есть ли какой-нибудь способ сохранить рекламу?

Кроме того, если это вообще возможно, я в настоящее время не вижу способа использовать уведомления атрибутов для определенного соединения. Для отправки уведомлений о значениях характеристик используется метод dbus PropertyChanged, хотя кажется, что нет способа указать, на какие удаленные устройства его отправлять. Есть ли способ уведомлять только определенное соединение об изменениях значений?

Я могу сделать вышеуказанное на Silabs EFR32 без проблем, но хотел бы получить то же самое на встроенном Linux.

Большое спасибо

Комментарии:

1. Этот вопрос ( marc.info/?l=linux-bluetoothamp;m=157496569911675amp;w=2 ) получил запрос в списке рассылки разработчиков BlueZ ( bluez.org/development/lists ) и не получил ответа.

2. спасибо @ukBaz, я пытался искать там, должно быть, были неправильные условия поиска. Мне трудно поверить, что это не было сделано раньше или что в этом пока нет необходимости.

3. @Climax Просто интересно, нашли ли вы когда-нибудь решение проблемы уведомления только об одном соединении в BlueZ?

4. @JasonWright, к сожалению, не привет. Одним из ключей может быть использование интерфейса bluez fd, где соединения создают файловые дескрипторы. Я не смог протестировать, поскольку мы перешли на систему на базе Nordic hardware.