Функция BlueZ hci_le_set_scan_parameters() не работает в коде VC++

Я запускаю известный пример кода C++ на Raspberry Pi 3 (работающий как клиент в последней версии Raspbian) для связи с устройствами BLE (работающими как серверы) из проекта VS2017 C++ для Linux в режиме отладки. Мой проект компилируется без ошибок и даже предупреждений. Я использую функции HCI библиотеки BlueZ. Подскажите, пожалуйста, почему вызов функции BlueZ hci_le_set_scan_parameters() не работает (возвращает -1). Из

Вот ссылка на исходный код C++, который я использую без каких-либо изменений: https://github.com/carsonmcdonald/bluez-experiments/blob/master/experiments/scantest.c

Заранее спасибо.


person Paul Tomov    schedule 11.04.2018    source источник
comment
Очевидно, что для функции hci_le_set_scan_parameters() требуются права root или повышенные привилегии. Из командной строки команды sudo gatttool работали нормально. Возможные решения, подобные этому (stackoverflow.com/questions/34723861/) для временной настройки привилегий root в коде C++ перед вызовом функции HCI не Работа.   -  person Paul Tomov    schedule 11.04.2018


Ответы (1)


Помимо требований повышенных привилегий, также существует вероятность того, что ваш контроллер Bluetooth находится в странном состоянии. Есть два способа исправить это:

  • Просто подожди
  • Использовать bluetoothctl

Запустите bluetoothctl от имени пользователя root (sudo bluetoothctl), затем выполните следующие команды.

  • агент на
  • агент по умолчанию
  • сканировать на
  • отсканировать
  • агент выключен
  • выход

Этого должно быть достаточно, чтобы отключить ваш контроллер и снова заставить функции HCI работать. Но помните, вам, скорее всего, понадобятся повышенные привилегии для выполнения этих команд.

person jeff    schedule 05.01.2019