Как получить доступ к низкоуровневым функциям Bluetooth в pybluez?

#python #linux #bluetooth

#python #linux #bluetooth

Вопрос:

Существуют ли функции-оболочки pybluez для функциональности bt более низкого уровня? Я ничего не смог найти в документах. То, что мне нужно использовать, эквивалентно функциональности:

 l2ping (single ping)
hcitool cc
hcitool rssi
hcitool lq
hcitool tpl
hcitool dc
  

Есть ли способ получить доступ к этому из pybluez (или фактически любого другого языка-оболочки и / или скриптового языка)?

Ответ №1:

Простой способ получить точно такую же функциональность — просто заставить скрипты python вызывать hcitool из командной строки.

Но для пользовательского решения вы можете использовать pybluez для отправки тех же пакетов команд HCI, которые генерируют эти другие команды. Например, hcitool rssi просто отправляет команду чтения RSSI HCI на локальный адаптер BT и анализирует результат. С помощью pybluez вы можете открывать сокет HCI, создавать пакеты команд и самостоятельно анализировать результаты. Если у вас нет доступа к спецификации BT, которая определяет форматы пакетов команд, вы можете либо посмотреть исходный код для hcitool, чтобы узнать, что они отправляют, или вы можете использовать hcidump.

Чтобы использовать hcidump, вы можете запустить hcidump в терминале, чтобы отслеживать локальный трафик команд HCI, в то время как вы используете другой терминал для выполнения других ваших команд через hcitool. С помощью hcidump вы сможете записывать необработанные транзакции пакетов, которые вы можете использовать в качестве ссылки для того, что вы хотите сгенерировать из pybluez.

Этот пример http://code.google.com/p/pybluez/source/browse/trunk/examples/advanced/inquiry-with-rssi.py показывает, как обращаться с сокетами HCI для ручного формирования пакетов команд и анализа результатов. Вам просто нужно настроить команды, которые вы хотите использовать.

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

1. Вот некоторые обновления pybluez link для низкоуровневой функции для bluetooth и ble: github.com/karulis/pybluez/blob/master/examples/advanced /… и github.com/karulis/pybluez/blob/master/examples/ble /…