Профиль BLE GAP через GATT в Linux

Я работаю над BLE, используя стек BlueZ-4.101, мне удалось перенести все необходимые двоичные файлы и подключить два устройства.

Я создаю соединение с помощью команды: gatttool -i hci0 -b -I connect, т.е. открываю интерактивный режим и подключаюсь через него. Когда я пытаюсь обнаружить основные службы другого подключенного устройства, отображается сообщение Ошибка обнаружения всех основных служб: истекло время ожидания

Где я ошибаюсь, может кто-нибудь указать? Как мы можем проверить основные сервисы нашего собственного устройства? На самом деле служба информации об устройстве должна быть реализована с этим стеком, может ли кто-нибудь перечислить шаги по этому поводу?


person Kshipra    schedule 10.07.2014    source источник
comment
Вы передаете MAC-адрес с помощью команды gatttool? Кроме того, знаете ли вы, к какому типу адреса устройства вы пытаетесь подключиться? Попробуйте использовать эту команду и посмотрите, что произойдет: #gatttool -t random -b ‹MAC-адрес› --primary, но сначала убедитесь, что вы видите устройство, к которому пытаетесь подключиться, с помощью команды #hcitool lescan.   -  person Youssif Saeed    schedule 11.07.2014
comment
Наш Mac-адрес публичный, а не случайный. Однако я попробовал эту команду, но она не может подключиться, и на периферийном устройстве я получаю ошибку сегментации, и демон bluetooth убивается. Это поведение такое же, без использования заданного случайного флага.   -  person Kshipra    schedule 11.07.2014
comment
И я могу видеть свое устройство с помощью команды hcitool lescan. Много раз я также получил Connection refused(111) connect error   -  person Kshipra    schedule 12.07.2014
comment
Как мы можем проверить, что у нас по умолчанию включена ненаправленная реклама с подключением LE на стороне сервера Gatt? Как и в случае с bluez 4.101, у нас нет таких опций hciconfig hci0 leadv 0, чтобы сделать его подключаемым.   -  person Kshipra    schedule 12.07.2014
comment
Одна из проблем решена. Для подключения к устройству ble я сначала выполнил сопряжение с использованием двоичного файла bt-device, так как у меня нет настройки python на целевой плате, поэтому я не использовал simple-agent. Я получил список основных услуг и характеристик. Но связь не стабильная. Он отключается через случайное время. Также отключается реклама на периферийном конце. Почему это так?   -  person Kshipra    schedule 14.07.2014
comment
Вам, вероятно, потребуется правильная отладка на периферийной и центральной стороне, чтобы выяснить настоящую причину. Попробуйте использовать #hcidump и #btmon, чтобы увидеть, что именно происходит с необработанными данными.   -  person Youssif Saeed    schedule 14.07.2014
comment
hcidump на периферийной стороне показывает Reason: Connection Timeout   -  person Kshipra    schedule 15.07.2014
comment
Также прокомментируйте шаги по внедрению DIS в систему.   -  person Kshipra    schedule 15.07.2014
comment
Мне удалось получить характеристики DIS, и через командную строку я могу прочитать его значение ASCCII. Есть ли какое-либо приложение, с помощью которого я могу обнаружить службу и прочитать ее правильное значение?   -  person Kshipra    schedule 17.07.2014
comment
Мы смогли прочитать значения через приложение, создав для него файл conf и проанализировав его в нашем коде. Спасибо   -  person Kshipra    schedule 22.07.2014


Ответы (1)


Вы можете попробовать выполнить сопряжение с удаленным устройством перед подключением к нему через gatttool.

Для сопряжения можно использовать simple-agent или bt-device утилиты.

Чтобы реализовать DIS, вы можете посмотреть, как реализованы GATT и GAP, аналогично тому, как вы можете добавить атрибуты и дескрипторы для характеристик DIS.

Надеюсь, это будет полезно.

person user2423804    schedule 05.08.2014