From a9c53c68c6b7fc7dbae822d0823aa0a3e650ed41 Mon Sep 17 00:00:00 2001 From: Zach Johnson <zachoverflow@google.com> Date: Thu, 5 Oct 2017 17:47:13 -0700 Subject: [PATCH] Add ability to disable wide band speech Some HF android-based devices need to disable wide band speech due to interop issues. Test: Pair and test phone calls Bug: 65053641 Change-Id: Ie8c4a50c40149562d6b52336fba1a61f1abf5198 --- system/bta/ag/bta_ag_sco.cc | 16 ++++++++++++++++ system/internal_include/bt_target.h | 4 ++++ 2 files changed, 20 insertions(+) diff --git a/system/bta/ag/bta_ag_sco.cc b/system/bta/ag/bta_ag_sco.cc index 15f98f3387b..1ae1f86e077 100644 --- a/system/bta/ag/bta_ag_sco.cc +++ b/system/bta/ag/bta_ag_sco.cc @@ -379,8 +379,10 @@ static void bta_ag_create_sco(tBTA_AG_SCB* p_scb, bool is_orig) { return; } +#if (DISABLE_WBS == FALSE) if ((p_scb->sco_codec == BTA_AG_CODEC_MSBC) && !p_scb->codec_fallback) esco_codec = BTA_AG_CODEC_MSBC; +#endif if (p_scb->codec_fallback) { p_scb->codec_fallback = false; @@ -621,9 +623,14 @@ static void bta_ag_sco_event(tBTA_AG_SCB* p_scb, uint8_t event) { /* remove listening connection */ bta_ag_remove_sco(p_scb, false); +#if (DISABLE_WBS == FALSE) /* start codec negotiation */ p_sco->state = BTA_AG_SCO_CODEC_ST; bta_ag_codec_negotiate(p_scb); +#else + bta_ag_create_sco(p_scb, true); + p_sco->state = BTA_AG_SCO_OPENING_ST; +#endif break; case BTA_AG_SCO_SHUTDOWN_E: @@ -718,11 +725,13 @@ static void bta_ag_sco_event(tBTA_AG_SCB* p_scb, uint8_t event) { } break; +#if (DISABLE_WBS == FALSE) case BTA_AG_SCO_REOPEN_E: /* start codec negotiation */ p_sco->state = BTA_AG_SCO_CODEC_ST; bta_ag_codec_negotiate(p_scb); break; +#endif case BTA_AG_SCO_XFER_E: /* save xfer scb */ @@ -995,11 +1004,18 @@ static void bta_ag_sco_event(tBTA_AG_SCB* p_scb, uint8_t event) { bta_ag_create_sco(p_scb, false); bta_ag_remove_sco(p_sco->p_xfer_scb, false); +#if (DISABLE_WBS == FALSE) /* start codec negotiation */ p_sco->state = BTA_AG_SCO_CODEC_ST; tBTA_AG_SCB* p_cn_scb = p_sco->p_xfer_scb; p_sco->p_xfer_scb = nullptr; bta_ag_codec_negotiate(p_cn_scb); +#else + /* create sco connection to peer */ + bta_ag_create_sco(p_sco->p_xfer_scb, true); + p_sco->p_xfer_scb = nullptr; + p_sco->state = BTA_AG_SCO_OPENING_ST; +#endif break; } diff --git a/system/internal_include/bt_target.h b/system/internal_include/bt_target.h index cf09b15daab..10a4b116092 100644 --- a/system/internal_include/bt_target.h +++ b/system/internal_include/bt_target.h @@ -280,6 +280,10 @@ #define BTM_SCO_INCLUDED TRUE /* TRUE includes SCO code */ #endif +#ifndef DISABLE_WBS +#define DISABLE_WBS FALSE +#endif + /* This is used to work around a controller bug that doesn't like Disconnect * issued while there is a role switch in progress */ -- GitLab