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

Commit d0a5a350 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix crash for getting offload capability" into tm-dev

parents 0d5006a9 c2056d0a
Loading
Loading
Loading
Loading
+1 −5
Original line number Diff line number Diff line
@@ -3623,10 +3623,6 @@ void LeAudioClient::Initialize(
      << ", LE Audio Client requires Bluetooth Audio HAL V2.1 at least. Either "
         "disable LE Audio Profile, or update your HAL";

  // TODO: The capability list should pass to the codec manager once it's ready
  std::vector<::le_audio::set_configurations::AudioSetConfiguration>
      capabilities = ::bluetooth::audio::le_audio::get_offload_capabilities();

  IsoManager::GetInstance()->Start();

  if (leAudioClientAudioSource == nullptr)
@@ -3642,7 +3638,7 @@ void LeAudioClient::Initialize(
  instance = new LeAudioClientImpl(callbacks_, stateMachineCallbacks, initCb);

  IsoManager::GetInstance()->RegisterCigCallbacks(stateMachineHciCallbacks);
  CodecManager::GetInstance()->Start(offloading_preference, capabilities);
  CodecManager::GetInstance()->Start(offloading_preference);
}

void LeAudioClient::DebugDump(int fd) {
+12 −15
Original line number Diff line number Diff line
@@ -45,8 +45,7 @@ namespace le_audio {
struct codec_manager_impl {
 public:
  codec_manager_impl(
      const std::vector<btle_audio_codec_config_t>& offloading_preference,
      const std::vector<AudioSetConfiguration>& adsp_capabilities) {
      const std::vector<btle_audio_codec_config_t>& offloading_preference) {
    offload_enable_ = osi_property_get_bool(
                          "ro.bluetooth.leaudio_offload.supported", false) &&
                      !osi_property_get_bool(
@@ -71,7 +70,7 @@ struct codec_manager_impl {
                            kIsoDataPathPlatformDefault, {});
    btm_configure_data_path(btm_data_direction::CONTROLLER_TO_HOST,
                            kIsoDataPathPlatformDefault, {});
    UpdateOffloadCapability(offloading_preference, adsp_capabilities);
    UpdateOffloadCapability(offloading_preference);
    SetCodecLocation(CodecLocation::ADSP);
  }
  ~codec_manager_impl() {
@@ -218,8 +217,7 @@ struct codec_manager_impl {
  }

  void UpdateOffloadCapability(
      const std::vector<btle_audio_codec_config_t>& offloading_preference,
      const std::vector<AudioSetConfiguration>& adsp_capabilities) {
      const std::vector<btle_audio_codec_config_t>& offloading_preference) {
    LOG(INFO) << __func__;
    std::unordered_set<uint8_t> offload_preference_set;

@@ -228,6 +226,10 @@ struct codec_manager_impl {
      return;
    }

    std::vector<::le_audio::set_configurations::AudioSetConfiguration>
        adsp_capabilities =
            ::bluetooth::audio::le_audio::get_offload_capabilities();

    for (auto codec : offloading_preference) {
      auto it = btle_audio_codec_type_map_.find(codec.codec_type);

@@ -272,12 +274,10 @@ struct CodecManager::impl {
  impl(const CodecManager& codec_manager) : codec_manager_(codec_manager) {}

  void Start(
      const std::vector<btle_audio_codec_config_t>& offloading_preference,
      const std::vector<set_configurations::AudioSetConfiguration>&
          adsp_capabilities) {
      const std::vector<btle_audio_codec_config_t>& offloading_preference) {
    LOG_ASSERT(!codec_manager_impl_);
    codec_manager_impl_ = std::make_unique<codec_manager_impl>(
        offloading_preference, adsp_capabilities);
    codec_manager_impl_ =
        std::make_unique<codec_manager_impl>(offloading_preference);
  }

  void Stop() {
@@ -294,11 +294,8 @@ struct CodecManager::impl {
CodecManager::CodecManager() : pimpl_(std::make_unique<impl>(*this)) {}

void CodecManager::Start(
    const std::vector<btle_audio_codec_config_t>& offloading_preference,
    const std::vector<set_configurations::AudioSetConfiguration>&
        adsp_capabilities) {
  if (!pimpl_->IsRunning())
    pimpl_->Start(offloading_preference, adsp_capabilities);
    const std::vector<btle_audio_codec_config_t>& offloading_preference) {
  if (!pimpl_->IsRunning()) pimpl_->Start(offloading_preference);
}

void CodecManager::Stop() {
+2 −5
Original line number Diff line number Diff line
@@ -38,11 +38,8 @@ class CodecManager {
    static CodecManager* instance = new CodecManager();
    return instance;
  }
  void Start(
      const std::vector<bluetooth::le_audio::btle_audio_codec_config_t>&
          offloading_preference,
      const std::vector<::le_audio::set_configurations::AudioSetConfiguration>&
          adsp_capabilities);
  void Start(const std::vector<bluetooth::le_audio::btle_audio_codec_config_t>&
                 offloading_preference);
  void Stop(void);
  virtual types::CodecLocation GetCodecLocation(void) const;
  virtual void UpdateActiveSourceAudioConfig(
+1 −3
Original line number Diff line number Diff line
@@ -63,9 +63,7 @@ CodecManager::GetOffloadCodecConfig(types::LeAudioContextType ctx_type) {

void CodecManager::Start(
    const std::vector<bluetooth::le_audio::btle_audio_codec_config_t>&
        offloading_preference,
    const std::vector<set_configurations::AudioSetConfiguration>&
        adsp_capabilities) {
        offloading_preference) {
  // It is needed here as CodecManager which is a singleton creates it, but in
  // this mock we want to destroy and recreate the mock on each test case.
  if (!pimpl_) {
+1 −3
Original line number Diff line number Diff line
@@ -393,9 +393,7 @@ class StateMachineTest : public Test {
    ASSERT_NE(codec_manager_, nullptr);
    std::vector<bluetooth::le_audio::btle_audio_codec_config_t>
        mock_offloading_preference(0);
    std::vector<set_configurations::AudioSetConfiguration>
        mock_adsp_capabilities(0);
    codec_manager_->Start(mock_offloading_preference, mock_adsp_capabilities);
    codec_manager_->Start(mock_offloading_preference);
    mock_codec_manager_ = MockCodecManager::GetInstance();
    ASSERT_NE(mock_codec_manager_, nullptr);
    ON_CALL(*mock_codec_manager_, GetCodecLocation())