• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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. Пришлось создать таск и уже из него проверять ...
 
Сверху Снизу