Как получить ATT HANDLE UUID на рекламодателе BLE
Я создал простого рекламодателя BLE, используя библиотеку Python dbus (Bluez 5.48). В этом примере приложения добавлена одна служба, и эта служба имеет две характеристики. При запуске рекламодателя всем службам и характерным UUID будет назначен 16-битный дескриптор ATT, чтобы клиент мог напрямую читать или записывать эти UUID с помощью HANDLE.
Рекламодатель работает отлично, и Клиент может подписаться на UUID. Однако Клиент ожидает фиксированный дескриптор ATT для обоих UUID. Но рекламодатель меняет местами дескрипторы ATT при повторном подключении.
Итак, есть ли способ, с помощью которого я могу 1- Сохранить статические дескрипторы ATT. 2- Или рекламодатель должен знать дескрипторы ATT, назначенные для UUID.
Я потратил много времени, чтобы выяснить это, но пока безуспешно.
Использование этого кода для создания рекламодателя. https://github.com/ukBaz/python-bluezero/blob/master/bluezero/peripheral.py
1 ответ
Думаю, BlueZ пытается поступить правильно, глядя на это:
https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc/settings-storage.txt
Проблема, скорее всего, в том, что он делает это только с сопряженными устройствами, и в этом примере отключена безопасность. Не могу вспомнить, как его включить с головы до ног. Попробую потом найти время, чтобы посмотреть.