Page 1 of 1

蓝牙a2dp sink模式,关闭蓝牙后,重新打开,无法连接

Posted: Wed Apr 17, 2019 2:30 am
by espgtxs
失能蓝牙,反初始化,关闭主任务

然后,再次初始化,开启蓝牙、主任务,可以连接蓝牙,但是不能作为音频设备连接上。

只能用一次的蓝牙音箱,不符合要求啊!

测试代码如下:

Code: Untitled.c Select all

    
ret = esp_bluedroid_disable();
ESP_LOGI(BT_AV_TAG, "esp_bluedroid_disable");
vTaskDelay(2*1000/portTICK_RATE_MS);
ret = esp_bluedroid_deinit();
ESP_LOGI(BT_AV_TAG, "esp_bluedroid_deinit");
vTaskDelay(2*1000/portTICK_RATE_MS);
bt_app_task_shut_down();
ESP_LOGI(BT_AV_TAG, "FreeHeapSize=%d", xPortGetFreeHeapSize());
vTaskDelay(20*1000/portTICK_RATE_MS);


ESP_ERROR_CHECK(esp_bt_controller_mem_release(ESP_BT_MODE_BLE));
esp_bt_controller_config_t bt_cfg2 = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
if ((err = esp_bt_controller_init(&bt_cfg2)) != ESP_OK) {
ESP_LOGE(BT_AV_TAG, "%s initialize controller failed: %s\n", __func__, esp_err_to_name(ret));
return;
}

if ((err = esp_bt_controller_enable(ESP_BT_MODE_CLASSIC_BT)) != ESP_OK) {
ESP_LOGE(BT_AV_TAG, "%s enable controller failed: %s\n", __func__, esp_err_to_name(ret));
return;
}

if ((err = esp_bluedroid_init()) != ESP_OK) {
ESP_LOGE(BT_AV_TAG, "%s initialize bluedroid failed: %s\n", __func__, esp_err_to_name(ret));
return;
}

if ((err = esp_bluedroid_enable()) != ESP_OK) {
ESP_LOGE(BT_AV_TAG, "%s enable bluedroid failed: %s\n", __func__, esp_err_to_name(ret));
return;
}

/* create application task */
bt_app_task_start_up();

/* Bluetooth device name, connection mode and profile set up */
bt_app_work_dispatch(bt_av_hdl_stack_evt, BT_APP_EVT_STACK_UP, NULL, 0, NULL);