Сбой при отключении bluedroid
у меня есть ESP32, и я хочу использовать deepsleep, когда он не используется. Перед отправкой в спящий режим я очищаю все, поэтому отключите, деинициализируйте и отключите все, что я построил раньше. Но я получаю сбой, когда пытаюсь отключить bluedroid. Кто-нибудь знает, почему это происходит?
void bt_deinit() {
Serial.println("Deinit AVRC");
if (esp_avrc_ct_deinit() != ESP_OK)
Serial.write("Failed to deinit avrc");
Serial.println("Deinit A2DP");
if (esp_a2d_source_deinit() != ESP_OK)
Serial.println("Failed to deinit a2dp");
Serial.println("disable bluedroid");
if (esp_bluedroid_disable() != ESP_OK)
Serial.println("Failed to disable bluedroid");
Serial.println("Deinit bluedroid");
if (esp_bluedroid_deinit() != ESP_OK)
Serial.println("Failed to deinit bluedroid");
Serial.println("Stop BT");
if (btStop() == false)
Serial.println("Failed to stop bt");
}
выход:
Port closed
Uploading to I/O board
Opening port
Port open
Hello there!
Bluetooth init success
good night
Deinit AVRC
Deinit A2DP
disable bluedroid
/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/queue.c:719 (xQueueGenericSend)- assert failed!
abort() was called at PC 0x4008de6f on core 0
Backtrace: 0x40091918:0x3ffce3b0 0x40091b49:0x3ffce3d0 0x4008de6f:0x3ffce3f0 0x4013bfb6:0x3ffce430 0x4013c5f6:0x3ffce460 0x400fdbe2:0x3ffce480 0x400fdc35:0x3ffce4a0 0x400fe12e:0x3ffce4c0 0x400f6bd9:0x3ffce4e0 0x4008e559:0x3ffce510
Rebooting...
ets Jun 8 2016 00:22:57
rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1216
ho 0 tail 12 room 4
load:0x40078000,len:9720
ho 0 tail 12 room 4
load:0x40080400,len:6352
entry 0x400806b8
Hello there!
Bluetooth init success
это прекрасно работает, если я просто не деинициализирую все и не отправлю его прямо спать. Но это не самый элегантный способ.
@Stack, 👍2
Обсуждение1 ответ
▲ 1
декодированный backtrace в вашем вопросе отсутствует, одним из вариантов увидеть трассировку стека является https://github.com/littleyoda/EspStackTraceDecoder
я не знаю точно, является ли это вашим случаем или нет, но вызов esp_ble_gap_stop_scanning() перед esp_bluedroid_deinit (), возможно, избегает вашего сбоя.
,
@asat
Смотрите также:
- Пример кода для ESP32 в качестве медиа-контроллера для Android/iPhone Media Apps
- Библиотека ардуино или код для ESP32 для сканирования устройств Bluetooth?
- Имена синтаксического анализа обнаружения Bluetooth ESP32
- Веб-страница с использованием Bluetooth?
- Можно ли использовать WiFi и Bluetooth/BLE в одном проекте ESP32?
- ESP32 запускает BLE после глубокого сна
- Максимальная скорость ESP32 Bluetooth SPP
- ESP32 Arduino Bluetooth Serial не подключается повторно после отключения
upvote для хорошо представленного вопроса ... к сожалению, у меня нет опыта, чтобы помочь вам ..... возможно, что-то не закончило выключение .... вставьте задержку перед отключением bluedroid .... может быть, это порядок событий.... может быть, сначала остановите, а затем отключите.... возможно, обратный порядок последовательности запуска, @jsotola