Сканирование Linux BLE после нажатия CTRL+C

Сканирование Linux BLE после нажатия CTRL+C

У меня есть программа на C, которая работает хорошо при первом запуске (BLUEZ C API), но если я нажимаю Ctrl+, Cчтобы остановить ее, а затем запускаю ее снова, она никогда не находит никаких устройств BLE (функция сканирования). Если я перезагружу Linux, она снова заработает. Моя программа находится в цикле while(1), сканируя и печатая информацию об устройстве (включая данные производителя) и вызывает:

stop_hci_scan(current_hci_state);
error_check_and_exit(current_hci_state);
close_hci_device(current_hci_state);

находятся вне цикла.

Программадолжендожить до этого события ( Ctrl+ C), потому что я планирую поместить его в службу Linux, чтобы иметь возможность автоматически перезапускать его в случае зависания или чего-то в этом роде.

Итак, похоже, мне нужно выполнить некоторую очистку перед повторным запуском программы (чтобы избежать перезагрузки), верно?

Но что?

решение1

Вы можете использовать (в командной строке):

sudo hciconfig hci0 reset

Я не знаю эквивалента на языке Си...

Связанный контент