Page 1 of 1

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

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

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

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

测试代码如下:
  1.    
  2.     ret = esp_bluedroid_disable();
  3.     ESP_LOGI(BT_AV_TAG, "esp_bluedroid_disable");
  4.     vTaskDelay(2*1000/portTICK_RATE_MS);
  5.     ret = esp_bluedroid_deinit();
  6.     ESP_LOGI(BT_AV_TAG, "esp_bluedroid_deinit");
  7.     vTaskDelay(2*1000/portTICK_RATE_MS);
  8.     bt_app_task_shut_down();
  9.     ESP_LOGI(BT_AV_TAG, "FreeHeapSize=%d", xPortGetFreeHeapSize());
  10.     vTaskDelay(20*1000/portTICK_RATE_MS);
  11.  
  12.  
  13.     ESP_ERROR_CHECK(esp_bt_controller_mem_release(ESP_BT_MODE_BLE));
  14.     esp_bt_controller_config_t bt_cfg2 = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
  15.     if ((err = esp_bt_controller_init(&bt_cfg2)) != ESP_OK) {
  16.        ESP_LOGE(BT_AV_TAG, "%s initialize controller failed: %s\n", __func__, esp_err_to_name(ret));
  17.        return;
  18.    }
  19.  
  20.    if ((err = esp_bt_controller_enable(ESP_BT_MODE_CLASSIC_BT)) != ESP_OK) {
  21.        ESP_LOGE(BT_AV_TAG, "%s enable controller failed: %s\n", __func__, esp_err_to_name(ret));
  22.        return;
  23.    }
  24.  
  25.    if ((err = esp_bluedroid_init()) != ESP_OK) {
  26.        ESP_LOGE(BT_AV_TAG, "%s initialize bluedroid failed: %s\n", __func__, esp_err_to_name(ret));
  27.        return;
  28.    }
  29.  
  30.    if ((err = esp_bluedroid_enable()) != ESP_OK) {
  31.        ESP_LOGE(BT_AV_TAG, "%s enable bluedroid failed: %s\n", __func__, esp_err_to_name(ret));
  32.        return;
  33.    }
  34.  
  35.    /* create application task */
  36.    bt_app_task_start_up();
  37.  
  38.    /* Bluetooth device name, connection mode and profile set up */
  39.    bt_app_work_dispatch(bt_av_hdl_stack_evt, BT_APP_EVT_STACK_UP, NULL, 0, NULL);