• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Bluetooth LE как сбросить контроллер?

Slacky

Member
Нужно отслеживать ADV сообщения от конкретного устройства. Берем пример, адаптируем слегка и получаем сканер ADV в пассивном режиме. Но в пассивном режиме нельзя посмотреть имя устройства. Только MAC-адрес.

И тут такая идея. Сперва запускаем сканирование в активном режиме, находим известное нам имя устроства, запоминаем его MAC и перегружаем bt контроллер уже в пассивный режим.

И вот тут загвоздка. Повторная инициализация не работает. Точнее все функции отрабатывают без ошибок, но ничего не выводится. Выключаю так

C:
void ble_deinit() {
    ESP_ERROR_CHECK(esp_bluedroid_disable());
    ESP_ERROR_CHECK(esp_bluedroid_deinit());
    ESP_ERROR_CHECK(esp_bt_controller_disable());
    ESP_ERROR_CHECK(esp_bt_controller_deinit());
}
Что еще нужно выключить-почистить, чтобы заработало?
 

Slacky

Member
Сам задал вопрос, сам ответил :))

Нельзя вызывать переинициализацию из функции callback. Пришлось создать таск и уже из него проверять ...
 
Сверху Снизу