Я буду задавать очень субъективный вопрос, но он важен, так как я стремлюсь оправиться от неудачного эффективного использования BlueZ программно.
В основном я представляю устройство IoT edge, работающее на миниатюрном компьютере (например, Raspberry pi или Intel Compute Stick). Устройство будет работать под управлением ОС AlpineLinux и взаимодействовать с облаком.
Поскольку это среда IoT, нет необходимости упоминать важность Bluetooth BLE в диапазоне ISM. Отсюда главная важность возможности настройки и работы с BlueZ.
Я хочу сделать несколько вещей с BlueZ BLE, включая, но не ограничиваясь
Реклама
Сопряжение
- Характеристика
- Broadcast
Безопасная передача данных и т.д ...
Поскольку мне потребуется полный контроль над данными, для обработки данных и взаимодействия с облаком (Edge AI или Data-science on Cloud) я рассматриваю три способа использования BlueZ:
- Выполнять вызовы API DBus для методов BlueZ.
- Измените кодовую базу BlueZ и сделайте установку пользовательского бина.
(Так что обработчики обратных вызовов могут быть зарегистрированы и множество других bluez
методы могут быть вызваны)
- Вызов BlueZ с помощью утилит командной строки, таких как hcitool / bluetoothctl, внутри программы с использованием вызовов system ().
Нет 1, где я потерпел неудачу. Это непомерное количество усилий для создания и экспорта объектов DBus, а затем для вызова методов BlueZ. Кроме того, нет никаких гарантий, что вы сможете позаботиться о всех проблемах с BLE.
№ 2 выглядит очень многообещающе, и я хочу полностью изучить, насколько реально изменить код BlueZ под мои нужды.
Нет 3 - наименее желательный вариант, но я все же хочу использовать его как запасной вариант.
Учитывая мою постановку проблемы, какая стратегия наиболее эффективна? Я спрашиваю это вслух, чтобы я не делал больше ошибок и тратил себе время и усилия.