change(bt/bluedroid): optimized the HFP example workflow to improve audio quality

Disabled inquiry scan and page scan after SCO connection establishment
to reduce over-the-air bandwidth usage and improve audio quality by
prevent scan activities from interrupting SCO traffic.
This commit is contained in:
Jin Cheng
2026-08-05 18:01:21 +08:00
parent c8585795ec
commit 6d83ab5035
2 changed files with 18 additions and 6 deletions

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2021-2025 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2021-2026 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Unlicense OR CC0-1.0
*/
@@ -315,10 +315,12 @@ void bt_app_hf_cb(esp_hf_cb_event_t event, esp_hf_cb_param_t *param)
case ESP_HF_AUDIO_STATE_EVT:
{
ESP_LOGI(BT_HF_TAG, "--Audio State %s", c_audio_state_str[param->audio_stat.state]);
#if CONFIG_BT_HFP_AUDIO_DATA_PATH_HCI
if (param->audio_stat.state == ESP_HF_AUDIO_STATE_CONNECTED ||
param->audio_stat.state == ESP_HF_AUDIO_STATE_CONNECTED_MSBC)
{
/* Disable connectable and discoverable mode to save the over-the-air bandwidth and ensure audio quality */
esp_bt_gap_set_scan_mode(ESP_BT_NON_CONNECTABLE, ESP_BT_NON_DISCOVERABLE);
#if CONFIG_BT_HFP_AUDIO_DATA_PATH_HCI
if(param->audio_stat.state == ESP_HF_AUDIO_STATE_CONNECTED) {
s_audio_code = ESP_HF_AUDIO_STATE_CONNECTED;
} else {
@@ -328,11 +330,15 @@ void bt_app_hf_cb(esp_hf_cb_event_t event, esp_hf_cb_param_t *param)
esp_hf_ag_register_data_callback(bt_app_hf_incoming_cb, bt_app_hf_outgoing_cb);
/* Begin send esco data task */
bt_app_send_data();
#endif /* #if CONFIG_BT_HFP_AUDIO_DATA_PATH_HCI */
} else if (param->audio_stat.state == ESP_HF_AUDIO_STATE_DISCONNECTED) {
ESP_LOGI(BT_HF_TAG, "--ESP AG Audio Connection Disconnected.");
/* Resume connectable and discoverable mode */
esp_bt_gap_set_scan_mode(ESP_BT_CONNECTABLE, ESP_BT_GENERAL_DISCOVERABLE);
#if CONFIG_BT_HFP_AUDIO_DATA_PATH_HCI
bt_app_send_data_shut_down();
}
#endif /* #if CONFIG_BT_HFP_AUDIO_DATA_PATH_HCI */
}
break;
}

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2021-2026 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Unlicense OR CC0-1.0
*/
@@ -258,16 +258,22 @@ void bt_app_hf_client_cb(esp_hf_client_cb_event_t event, esp_hf_client_cb_param_
{
ESP_LOGI(BT_HF_TAG, "--audio state %s",
c_audio_state_str[param->audio_stat.state]);
#if CONFIG_BT_HFP_AUDIO_DATA_PATH_HCI
if (param->audio_stat.state == ESP_HF_CLIENT_AUDIO_STATE_CONNECTED ||
param->audio_stat.state == ESP_HF_CLIENT_AUDIO_STATE_CONNECTED_MSBC) {
/* Disable connectable and discoverable mode to save the over-the-air bandwidth and ensure audio quality */
esp_bt_gap_set_scan_mode(ESP_BT_NON_CONNECTABLE, ESP_BT_NON_DISCOVERABLE);
#if CONFIG_BT_HFP_AUDIO_DATA_PATH_HCI
esp_hf_client_register_data_callback(bt_app_hf_client_incoming_cb,
bt_app_hf_client_outgoing_cb);
bt_app_hf_client_audio_open();
#endif /* #if CONFIG_BT_HFP_AUDIO_DATA_PATH_HCI */
} else if (param->audio_stat.state == ESP_HF_CLIENT_AUDIO_STATE_DISCONNECTED) {
/* Resume connectable and discoverable mode */
esp_bt_gap_set_scan_mode(ESP_BT_CONNECTABLE, ESP_BT_GENERAL_DISCOVERABLE);
#if CONFIG_BT_HFP_AUDIO_DATA_PATH_HCI
bt_app_hf_client_audio_close();
#endif /* #if CONFIG_BT_HFP_AUDIO_DATA_PATH_HCI */
}
#endif /* #if CONFIG_BT_HFP_AUDIO_DATA_PATH_HCI */
break;
}