经典蓝牙
Bluedroid
以下 Bluedroid API 已变更:
/bt/host/bluedroid/api/include/api/esp_hf_defs.h
类型
esp_hf_wbs_config_t已替换为esp_hf_codec_mode_t,新的公开类型表示协商得到的编解码(CVSD, mSBC 或 LC3-SWB),而不再是“是否开启宽带语音”的开关。esp_hf_wbs_config_t保留为esp_hf_codec_mode_t的废弃别名。枚举名已重命名,数值 0 / 1 / 2 保持不变。旧的
ESP_HF_WBS_*名称仍作为宏别名指向新枚举:
旧枚举
新枚举
取值
ESP_HF_WBS_NONE
ESP_HF_CODEC_NONE0
ESP_HF_WBS_NO
ESP_HF_CODEC_CVSD1
ESP_HF_WBS_YES
ESP_HF_CODEC_MSBC2
—
ESP_HF_CODEC_LC33
现有对
ESP_HF_WBS_NO/ESP_HF_WBS_YES的switch或比较仍可编译。新代码请使用新名称。
ESP_HF_CODEC_NONE表示尚未协商编解码,或将偏好重置为协议栈默认值,并不表示不能使用 CVSD。ESP_HF_CODEC_CVSD表示当前选中的是窄带编解码,可能是对端不支持宽带、未开启宽带,或从 mSBC / LC3 回退。
ESP_HF_CODEC_LC3为新增取值。若代码用编解码值去下标访问只有 3 项的表,需补充 LC3 项或增加 default 分支。不要把
esp_hf_codec_mode_t当作能力位图。对端编解码能力通过ESP_HF_BAC_RESPONSE_EVT中的ESP_HF_CODEC_CAP_CVSD/ESP_HF_CODEC_CAP_MSBC/ESP_HF_CODEC_CAP_LC3单独上报。音频连接状态新增
ESP_HF_AUDIO_STATE_CONNECTED_LC3,用于表示已建立的 LC3-SWB 链路,与现有的ESP_HF_AUDIO_STATE_CONNECTED(CVSD)和ESP_HF_AUDIO_STATE_CONNECTED_MSBC并列。/bt/host/bluedroid/api/include/api/esp_hf_ag_api.h
esp_hf_ag_set_codec()的参数类型改为esp_hf_codec_mode_t。传入ESP_HF_CODEC_CVSD、ESP_HF_CODEC_MSBC、ESP_HF_CODEC_LC3,或ESP_HF_CODEC_NONE以恢复协议栈默认偏好。
ESP_HF_WBS_RESPONSE_EVT(wbs_rep):字段codec的类型改为esp_hf_codec_mode_t。字段名codec未改。新增status字段(esp_bt_status_t),用于报告请求是否成功。
ESP_HF_BCS_RESPONSE_EVT(bcs_rep):字段mode的类型改为esp_hf_codec_mode_t。字段名mode未改。建议替换:
// 修改前 esp_hf_ag_set_codec(bda, ESP_HF_WBS_YES); if (param->bcs_rep.mode == ESP_HF_WBS_NO) { /* CVSD */ } // 修改后 esp_hf_ag_set_codec(bda, ESP_HF_CODEC_MSBC); if (param->bcs_rep.mode == ESP_HF_CODEC_CVSD) { /* CVSD */ } else if (param->bcs_rep.mode == ESP_HF_CODEC_LC3) { /* LC3-SWB */ }