2015-02-25 4 views
2

Я новичок в BLUEZ, а также в Linux. Я обнаружил, что Bluez способствует использованию API DBUS. Я хочу знать, что такое DBUS API с точки зрения BLUEZ, и что использовать их вместо прямого C APIS? Насколько это отличается от C API?DBUS API в BLUEZ

ответ

2

Из моего собственного опыта:

  • Dbus APIs являются официально опубликованы те так, скорее всего, будет стабильным, поддерживается и документированы.
  • C apis немного более низкий уровень, и не всегда очевидно, как их можно использовать (кроме простого обнаружения).
  • C apis - это более легкий вес, тогда как для API DBUS требуется больше как во время сборки, так и во время выполнения (glib, dbus, bluetoothd, чтобы назвать несколько вещей).

Так что это зависит от того, чего вы пытаетесь достичь. Если вам просто нужны базовые открытия и соединения rfcomm/l2cap, то C apis, вероятно, в порядке. Если вам нужно что-либо помимо этого, и если ваша платформа способна разместить дополнительные накладные расходы на DBUS/bluetoothd/etc, то вы, вероятно, захотите пойти с DBIS DBUS.

+0

Я пытаюсь создать центральный центр BLE, который получает уведомления от многих периферийных устройств BLE. BLE центральный должен быть построен на машине Linux с помощью BLUEZ. Могу ли я это сделать с помощью API DBUS? – Shruthi

+0

Кроме того, могу ли я написать прикладную программу C для использования DBUS apis? или это должно быть только в Python? – Shruthi

+0

@ user3301710 Кто упомянул Python? Существуют библиотеки в C и Python для DBUS. –

1

Bluez подталкивает использование интерфейса DBUS над остальным. К сожалению, не все возможно через интерфейс DBUS.

Я не смотрел на него недавно, но было так, что BLE плохо поддерживалась, хотя DBUS. Вы можете взаимодействовать только с официально опубликованными профилями BLE, такими как мониторы сердечного ритма. Если вы хотите что-либо сделать с атрибутами, не входящими в какой-либо профиль Bluetooth BLE, вы застряли. Так, например, акселерометрам было невозможно получить доступ через интерфейс DBUS.

Возможно, это было изменено в ветке 5.X (я не смотрел на нее, потому что она не работает на ядре 3.4, которое я должен использовать). 4X-ветвь Bluez не изменилась, и это определенно так, что у вас будут проблемы с BLE над DBUS по непрофильным атрибутам.

Просто обратите внимание, что если вы используете ядро ​​версии 3.4 или старше, у вас возникнут проблемы с открытием более одного сокета L2CAP. В ядре есть ошибка, которую никто не заинтересован в исправлении. (что происходит, все данные поступают с одного разъема, независимо от того, из какого устройства оно поступало)

2

Обновление: bluez теперь поддерживает gatt API через dbus. Только что закончил в 5.28 (хотя я думаю, что в предыдущих версиях были бит).

 Смежные вопросы

  • Нет связанных вопросов^_^