
У меня есть программа на 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
Я не знаю эквивалента на языке Си...