разработать периферийное устройство BLE с использованием C на Intel Edison


Я пытаюсь разработать периферийное устройство Bluetooth LE в Intel-Edison, используя библиотеку C. Устройство должно уметь:

  1. рекламировать (ГЭП)
  2. принять соединение (GAP)
  3. поддержка пользовательского сервиса GATT, просто чтение/запись значения характеристики.

Я пытаюсь использовать HCI и bluez для реализации этого. эксперименты bluez, intel-edison-playground, которые демонстрируют, как рекламировать и сканировать, можно скомпилировать и запустить на edison. BLE-реклама и сканирование работают.

Но мне сложно понять, как принять подключение и поддержать сервис ГАТТ. Я пытаюсь найти в Google информацию о документе HCI, но безуспешно. Может ли кто-нибудь предоставить фрагмент кода (c или псевдо или описание)?

Большое спасибо!
Андрей


person yzandrew    schedule 16.06.2015    source источник
comment
Вопросы, в которых нас просят порекомендовать или найти книгу, инструмент, программную библиотеку, учебное пособие или другой сторонний ресурс, не относятся к теме Stack Overflow, поскольку они, как правило, привлекают самоуверенные ответы и спам. Вместо этого опишите проблему и то, что уже было сделано для ее решения.   -  person too honest for this site    schedule 17.06.2015
comment
@ Олаф, хорошо, я изменил свой вопрос. Пожалуйста, дайте мне знать, если у него все еще есть проблема.   -  person yzandrew    schedule 17.06.2015
comment
Проблема в том, что это сайт вопросов и ответов, а не сервис кодирования. Если у вас есть конкретная проблема с вашим кодом, вы можете показать это. В противном случае вопрос, скорее всего, будет закрыт. Вы должны знать через ›4 года.   -  person too honest for this site    schedule 17.06.2015


Ответы (1)


Если вы загрузите исходный код bluez, вы найдете документацию по протоколу hci в /doc/mgmt-api.txt. Я сам не использую интерфейс hci, и я не уверен, что разработчики намерены использовать этот интерфейс для реализации периферийных устройств, поэтому я не уверен, насколько хорошо это будет работать.

Я выбрал подход DBus API для своего проекта, который описан в /doc/gatt-api.txt и /doc/advertising-api.txt. Этот подход включает в себя написание программы, которая создает объекты DBus, которые поддерживают определенные интерфейсы DBus org.bluez (GattService1, который содержит GattCharacteristic1 и GattDescriptor1) и интерфейс ObjectManager, чтобы открыть все для bluez. Затем вы используете LEAdvertisment1, чтобы определить, что рекламируется, и зарегистрировать рекламу с помощью интерфейса LEAdvertisingManger1 на адаптере.

Я использовал Qt для упрощения коммуникационных частей DBus.

DBus API для BLE на bluez все еще находится в активной разработке, и не все функции поддерживаются (например, я до сих пор не нашел способа запускать и останавливать рекламу). 5.31 содержит множество добавленных поддерживаемых и некоторые критические исправления ошибок для дескрипторов, но требует более нового ядра.

person danielweberdlc    schedule 18.06.2015
comment
большое спасибо за информацию. Сейчас я пытаюсь использовать dbus API вместо hci. - person yzandrew; 20.06.2015