Как настроить BlueZ? - PullRequest
       10

Как настроить BlueZ?

1 голос
/ 29 мая 2019

Я буду задавать очень субъективный вопрос, но он важен, так как я стремлюсь оправиться от неудачного эффективного использования BlueZ программно.

В основном я представляю устройство IoT edge, работающее на миниатюрном компьютере (например, Raspberry pi или Intel Compute Stick). Устройство будет работать под управлением ОС AlpineLinux и взаимодействовать с облаком.

Поскольку это среда IoT, нет необходимости упоминать важность Bluetooth BLE в диапазоне ISM. Отсюда главная важность возможности настройки и работы с BlueZ.

Я хочу сделать несколько вещей с BlueZ BLE, включая, но не ограничиваясь

  1. Реклама

  2. Сопряжение

  3. Характеристика
  4. Broadcast Безопасная передача данных и т.д ...

Поскольку мне потребуется полный контроль над данными, для обработки данных и взаимодействия с облаком (Edge AI или Data-science on Cloud) я рассматриваю три способа использования BlueZ:

  1. Выполнять вызовы API DBus для методов BlueZ.
  2. Измените кодовую базу BlueZ и сделайте установку пользовательского бина. (Так что обработчики обратных вызовов могут быть зарегистрированы и множество других bluez методы могут быть вызваны)
  3. Вызов BlueZ с помощью утилит командной строки, таких как hcitool / bluetoothctl, внутри программы с использованием вызовов system ().

Нет 1, где я потерпел неудачу. Это непомерное количество усилий для создания и экспорта объектов DBus, а затем для вызова методов BlueZ. Кроме того, нет никаких гарантий, что вы сможете позаботиться о всех проблемах с BLE.

№ 2 выглядит очень многообещающе, и я хочу полностью изучить, насколько реально изменить код BlueZ под мои нужды.

Нет 3 - наименее желательный вариант, но я все же хочу использовать его как запасной вариант.

Учитывая мою постановку проблемы, какая стратегия наиболее эффективна? Я спрашиваю это вслух, чтобы я не делал больше ошибок и тратил себе время и усилия.

1 Ответ

1 голос
/ 18 июня 2019

Ваша лучшая стратегия - начать со второго пути (который вы уже нашли многообещающим), так как это жизнеспособное решение, и многие разработчики используют этот метод для создания своих программ BlueZ.Вот что я хотел бы сделать: -

  1. Запишите все функциональные возможности системы в какой-то блок-схеме или конечном автомате.Это помогает вам визуализировать всю систему и то, что необходимо сделать для достижения конечной цели.
  2. Попробуйте выполнить все перечисленные выше функции вручную, используя bluetoothctl и btmgmt.Это включает в себя рекламу, сопряжение и т. Д. Я рекомендую избегать устаревших команд, таких как hcitool и hciconfig, поскольку они устарели и имеют совершенно другую структуру кода.
  3. Когда сталкиваемся с чем-то, что не используется по умолчанию в bluetoothctl/ btmgmt или если вы хотите настроить функциональность, обновите исходный код, чтобы сделать это.
  4. Наконец, как только вы вручную настроите систему для выполнения необходимых вам функций (это может быть не все, она можетпросто подмножество функций), вы можете перейти к автоматизации всего процесса.Это включает в себя изменение источника команд bluetoothctl / btmgmt, чтобы вместо ручного вмешательства все зависело от событий.
  5. Это бонус, но если вы можете создавать автоматизированные тесты с использованием Python или другого языка сценариев,тогда это гарантирует, что ваша система будет устойчивой и что прежние функциональные возможности не будут нарушаться при добавлении новых.

К концу этого процесса вы будете гораздо лучше понимать внутреннее устройствоAPI-интерфейсы bluetoothctl / btmgmt и D-BUS, с помощью которых вы можете полностью отсоединить свой код от исходного bluetoothctl / btmgmt или создать программу с нуля.

Возможно, вы уже это знаете, но при изменении инструментов этоявляется исходной точкой для исходного кода: -

Дополнительные сведения об использовании команд bluetoothctl и btmgmt см. По ссылкам ниже: -

Надеюсь, это поможет.

...