Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e36c438e authored by Yuyang Huang's avatar Yuyang Huang
Browse files

Integrate bluetooth.sco.managed_by_audio system property with aconfig flag

Enable per device feature enable or disable on native layer

bug: 312592568
Bug: 315234036
Test: atest net_test_bta
Change-Id: I172b1e4a890bfae4a2cf44f56f0943f3db3ed54c
parent cd5ba9c7
Loading
Loading
Loading
Loading
+5 −4
Original line number Original line Diff line number Diff line
@@ -24,6 +24,7 @@
#include <thread>
#include <thread>
#include <vector>
#include <vector>


#include "bta/ag/bta_ag_int.h"
#include "include/check.h"
#include "include/check.h"


namespace bluetooth {
namespace bluetooth {
@@ -287,7 +288,7 @@ bool BluetoothAudioClientInterface::UpdateAudioConfig(
           SessionType::LE_AUDIO_SOFTWARE_DECODING_DATAPATH ||
           SessionType::LE_AUDIO_SOFTWARE_DECODING_DATAPATH ||
       transport_->GetSessionType() ==
       transport_->GetSessionType() ==
           SessionType::LE_AUDIO_BROADCAST_SOFTWARE_ENCODING_DATAPATH ||
           SessionType::LE_AUDIO_BROADCAST_SOFTWARE_ENCODING_DATAPATH ||
       (IS_FLAG_ENABLED(is_sco_managed_by_audio) &&
       (bta_ag_is_sco_managed_by_audio() &&
        (transport_->GetSessionType() ==
        (transport_->GetSessionType() ==
             SessionType::HFP_SOFTWARE_ENCODING_DATAPATH ||
             SessionType::HFP_SOFTWARE_ENCODING_DATAPATH ||
         transport_->GetSessionType() ==
         transport_->GetSessionType() ==
@@ -318,7 +319,7 @@ bool BluetoothAudioClientInterface::UpdateAudioConfig(
      (is_leaudio_broadcast_offload_session &&
      (is_leaudio_broadcast_offload_session &&
       audio_config_tag == AudioConfiguration::leAudioBroadcastConfig);
       audio_config_tag == AudioConfiguration::leAudioBroadcastConfig);
  bool is_hfp_offload_audio_config =
  bool is_hfp_offload_audio_config =
      (IS_FLAG_ENABLED(is_sco_managed_by_audio) &&
      (bta_ag_is_sco_managed_by_audio() &&
       transport_->GetSessionType() ==
       transport_->GetSessionType() ==
           SessionType::HFP_HARDWARE_OFFLOAD_DATAPATH &&
           SessionType::HFP_HARDWARE_OFFLOAD_DATAPATH &&
       audio_config_tag == AudioConfiguration::hfpConfig);
       audio_config_tag == AudioConfiguration::hfpConfig);
@@ -424,7 +425,7 @@ int BluetoothAudioClientInterface::StartSession() {
             transport_->GetSessionType() ==
             transport_->GetSessionType() ==
                 SessionType::
                 SessionType::
                     LE_AUDIO_BROADCAST_HARDWARE_OFFLOAD_ENCODING_DATAPATH ||
                     LE_AUDIO_BROADCAST_HARDWARE_OFFLOAD_ENCODING_DATAPATH ||
             (IS_FLAG_ENABLED(is_sco_managed_by_audio) &&
             (bta_ag_is_sco_managed_by_audio() &&
              transport_->GetSessionType() ==
              transport_->GetSessionType() ==
                  SessionType::HFP_HARDWARE_OFFLOAD_DATAPATH)) {
                  SessionType::HFP_HARDWARE_OFFLOAD_DATAPATH)) {
    transport_->ResetPresentationPosition();
    transport_->ResetPresentationPosition();
@@ -518,7 +519,7 @@ void BluetoothAudioClientInterface::FlushAudioData() {
          SessionType::LE_AUDIO_HARDWARE_OFFLOAD_DECODING_DATAPATH ||
          SessionType::LE_AUDIO_HARDWARE_OFFLOAD_DECODING_DATAPATH ||
      transport_->GetSessionType() ==
      transport_->GetSessionType() ==
          SessionType::LE_AUDIO_BROADCAST_HARDWARE_OFFLOAD_ENCODING_DATAPATH ||
          SessionType::LE_AUDIO_BROADCAST_HARDWARE_OFFLOAD_ENCODING_DATAPATH ||
      (IS_FLAG_ENABLED(is_sco_managed_by_audio) &&
      (bta_ag_is_sco_managed_by_audio() &&
       transport_->GetSessionType() ==
       transport_->GetSessionType() ==
           SessionType::HFP_HARDWARE_OFFLOAD_DATAPATH)) {
           SessionType::HFP_HARDWARE_OFFLOAD_DATAPATH)) {
    return;
    return;
+1 −1
Original line number Original line Diff line number Diff line
@@ -789,7 +789,7 @@ void bta_ag_post_sco_close(tBTA_AG_SCB* p_scb, const tBTA_AG_DATA& data) {
                                        "BTA_AG_POST_SCO_CALL_END_INCALL")) {
                                        "BTA_AG_POST_SCO_CALL_END_INCALL")) {
          break;
          break;
        }
        }
        if (IS_FLAG_ENABLED(is_sco_managed_by_audio)) {
        if (bta_ag_is_sco_managed_by_audio()) {
          // let Audio HAL open the SCO
          // let Audio HAL open the SCO
          break;
          break;
        }
        }
+8 −8
Original line number Original line Diff line number Diff line
@@ -1452,7 +1452,7 @@ static void bta_ag_hsp_result(tBTA_AG_SCB* p_scb,
                                        bta_ag_result_text(result.result))) {
                                        bta_ag_result_text(result.result))) {
          break;
          break;
        }
        }
        if (IS_FLAG_ENABLED(is_sco_managed_by_audio)) {
        if (bta_ag_is_sco_managed_by_audio()) {
          // let Audio HAL open the SCO
          // let Audio HAL open the SCO
          break;
          break;
        }
        }
@@ -1475,7 +1475,7 @@ static void bta_ag_hsp_result(tBTA_AG_SCB* p_scb,
                                          bta_ag_result_text(result.result))) {
                                          bta_ag_result_text(result.result))) {
            break;
            break;
          }
          }
          if (IS_FLAG_ENABLED(is_sco_managed_by_audio)) {
          if (bta_ag_is_sco_managed_by_audio()) {
            // let Audio HAL open the SCO
            // let Audio HAL open the SCO
            break;
            break;
          }
          }
@@ -1573,7 +1573,7 @@ static void bta_ag_hfp_result(tBTA_AG_SCB* p_scb,
                                          bta_ag_result_text(result.result))) {
                                          bta_ag_result_text(result.result))) {
            break;
            break;
          }
          }
          if (IS_FLAG_ENABLED(is_sco_managed_by_audio)) {
          if (bta_ag_is_sco_managed_by_audio()) {
            // let Audio HAL open the SCO
            // let Audio HAL open the SCO
            break;
            break;
          }
          }
@@ -1597,7 +1597,7 @@ static void bta_ag_hfp_result(tBTA_AG_SCB* p_scb,
                                          bta_ag_result_text(result.result))) {
                                          bta_ag_result_text(result.result))) {
            break;
            break;
          }
          }
          if (IS_FLAG_ENABLED(is_sco_managed_by_audio)) {
          if (bta_ag_is_sco_managed_by_audio()) {
            // let Audio HAL open the SCO
            // let Audio HAL open the SCO
            break;
            break;
          }
          }
@@ -1624,7 +1624,7 @@ static void bta_ag_hfp_result(tBTA_AG_SCB* p_scb,
                                        bta_ag_result_text(result.result))) {
                                        bta_ag_result_text(result.result))) {
          break;
          break;
        }
        }
        if (IS_FLAG_ENABLED(is_sco_managed_by_audio)) {
        if (bta_ag_is_sco_managed_by_audio()) {
          // let Audio HAL open the SCO
          // let Audio HAL open the SCO
          break;
          break;
        }
        }
@@ -1641,7 +1641,7 @@ static void bta_ag_hfp_result(tBTA_AG_SCB* p_scb,
                                        bta_ag_result_text(result.result))) {
                                        bta_ag_result_text(result.result))) {
          break;
          break;
        }
        }
        if (IS_FLAG_ENABLED(is_sco_managed_by_audio)) {
        if (bta_ag_is_sco_managed_by_audio()) {
          // let Audio HAL open the SCO
          // let Audio HAL open the SCO
          break;
          break;
        }
        }
@@ -1658,7 +1658,7 @@ static void bta_ag_hfp_result(tBTA_AG_SCB* p_scb,
                                          bta_ag_result_text(result.result))) {
                                          bta_ag_result_text(result.result))) {
            break;
            break;
          }
          }
          if (IS_FLAG_ENABLED(is_sco_managed_by_audio)) {
          if (bta_ag_is_sco_managed_by_audio()) {
            // let Audio HAL open the SCO
            // let Audio HAL open the SCO
            break;
            break;
          }
          }
@@ -1680,7 +1680,7 @@ static void bta_ag_hfp_result(tBTA_AG_SCB* p_scb,
                                          bta_ag_result_text(result.result))) {
                                          bta_ag_result_text(result.result))) {
            break;
            break;
          }
          }
          if (IS_FLAG_ENABLED(is_sco_managed_by_audio)) {
          if (bta_ag_is_sco_managed_by_audio()) {
            // let Audio HAL open the SCO
            // let Audio HAL open the SCO
            break;
            break;
          }
          }
+10 −0
Original line number Original line Diff line number Diff line
@@ -442,6 +442,16 @@ const RawAddress& bta_ag_get_active_device();
void bta_clear_active_device();
void bta_clear_active_device();
void bta_ag_send_qac(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
void bta_ag_send_qac(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
void bta_ag_send_qcs(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
void bta_ag_send_qcs(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
/**
 * Check if SCO is managed by Audio is enabled. This is set via the system property
 * bluetooth.sco.managed_by_audio.
 * <p>When set to false, Bluetooth will manage the start and end of the SCO.
 * <p>When set to true, Audio will manage the start and end of the SCO through
 * HAL.
 *
 * @return true if SCO managed by Audio is enabled, false otherwise
 */
bool bta_ag_is_sco_managed_by_audio();


namespace fmt {
namespace fmt {
template <>
template <>
+1 −1
Original line number Original line Diff line number Diff line
@@ -463,7 +463,7 @@ void bta_ag_api_disable() {
    }
    }
  }
  }


  if (IS_FLAG_ENABLED(is_sco_managed_by_audio)) {
  if (bta_ag_is_sco_managed_by_audio()) {
    // Stop session if not done
    // Stop session if not done
    bta_clear_active_device();
    bta_clear_active_device();
  }
  }
Loading