Você pode usar (na linha de comando):
sudo hciconfig hci0 reset
Eu não sei o equivalente C ...
Eu tenho um programa em C que funciona bem na primeira vez que ele roda (BLUEZ C API) mas se eu pressionar CTRL + C para pará-lo e se eu rodá-lo novamente ele nunca encontrará nenhum dispositivo BLE (função de escaneamento). Se eu reiniciar o Linux, ele funciona novamente. Meu programa está em um tempo (1) loop de digitalização e informações do dispositivo de impressão (incluindo dados do fabricante) e chamadas:
stop_hci_scan(current_hci_state);
error_check_and_exit(current_hci_state);
close_hci_device(current_hci_state);
estão fora do loop.
O programa deve sobreviver a este evento (CTRL + C) porque estou planejando colocá-lo em um serviço linux para que seja possível reiniciá-lo automaticamente se ele cair ou algo assim.
Então, parece que eu preciso fazer alguma limpeza antes de lançar o programa pela segunda vez (para evitar a reinicialização), certo?
Mas o que?
Você pode usar (na linha de comando):
sudo hciconfig hci0 reset
Eu não sei o equivalente C ...