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

Commit 565f4ad6 authored by Jakub Tyszkowski's avatar Jakub Tyszkowski Committed by Łukasz Rymanowski
Browse files

LeAudio: Bind configuration provider life time with the Codec Manager

In the near future, the Codec Manager, will become the main source for
the audio set configurations.

Bug: 295972694
Test: atest bluetooth_le_audio_test bluetooth_le_audio_client_test bluetooth_test_broadcaster bluetooth_test_broadcaster_state_machine
Change-Id: Id779e17385aef8e675794a90726329e72c0de6f4
parent 2b409cfe
Loading
Loading
Loading
Loading
+0 −1
Original line number Original line Diff line number Diff line
@@ -109,7 +109,6 @@ cc_library_static {
        "le_audio/hal_verifier.cc",
        "le_audio/hal_verifier.cc",
        "le_audio/le_audio_health_status.cc",
        "le_audio/le_audio_health_status.cc",
        "le_audio/le_audio_log_history.cc",
        "le_audio/le_audio_log_history.cc",
        "le_audio/le_audio_set_configuration_provider.cc",
        "le_audio/le_audio_set_configuration_provider_json.cc",
        "le_audio/le_audio_set_configuration_provider_json.cc",
        "le_audio/le_audio_types.cc",
        "le_audio/le_audio_types.cc",
        "le_audio/le_audio_utils.cc",
        "le_audio/le_audio_utils.cc",
+1 −4
Original line number Original line Diff line number Diff line
@@ -42,7 +42,7 @@ class LeAudioClient {
      base::Closure initCb, base::Callback<bool()> hal_2_1_verifier,
      base::Closure initCb, base::Callback<bool()> hal_2_1_verifier,
      const std::vector<bluetooth::le_audio::btle_audio_codec_config_t>&
      const std::vector<bluetooth::le_audio::btle_audio_codec_config_t>&
          offloading_preference);
          offloading_preference);
  static void Cleanup(base::Callback<void()> cleanupCb);
  static void Cleanup(void);
  static LeAudioClient* Get(void);
  static LeAudioClient* Get(void);
  static void DebugDump(int fd);
  static void DebugDump(int fd);


@@ -90,7 +90,4 @@ class LeAudioClient {
  static bool GetAsesForStorage(const RawAddress& addr,
  static bool GetAsesForStorage(const RawAddress& addr,
                                std::vector<uint8_t>& out);
                                std::vector<uint8_t>& out);
  static bool IsLeAudioClientRunning();
  static bool IsLeAudioClientRunning();

  static void InitializeAudioSetConfigurationProvider(void);
  static void CleanupAudioSetConfigurationProvider(void);
};
};
+3 −5
Original line number Original line Diff line number Diff line
@@ -3556,7 +3556,7 @@ class LeAudioClientImpl : public LeAudioClient {
    }
    }
  }
  }


  void Cleanup(base::Callback<void()> cleanupCb) {
  void Cleanup() {
    StopVbcCloseTimeout();
    StopVbcCloseTimeout();
    if (alarm_is_scheduled(suspend_timeout_)) alarm_cancel(suspend_timeout_);
    if (alarm_is_scheduled(suspend_timeout_)) alarm_cancel(suspend_timeout_);


@@ -3570,8 +3570,6 @@ class LeAudioClientImpl : public LeAudioClient {
    leAudioDevices_.Cleanup(gatt_if_);
    leAudioDevices_.Cleanup(gatt_if_);
    if (gatt_if_) BTA_GATTC_AppDeregister(gatt_if_);
    if (gatt_if_) BTA_GATTC_AppDeregister(gatt_if_);


    std::move(cleanupCb).Run();

    if (leAudioHealthStatus_) {
    if (leAudioHealthStatus_) {
      leAudioHealthStatus_->Cleanup();
      leAudioHealthStatus_->Cleanup();
    }
    }
@@ -5633,7 +5631,7 @@ void LeAudioClient::DebugDump(int fd) {
  dprintf(fd, "\n");
  dprintf(fd, "\n");
}
}


void LeAudioClient::Cleanup(base::Callback<void()> cleanupCb) {
void LeAudioClient::Cleanup(void) {
  std::scoped_lock<std::mutex> lock(instance_mutex);
  std::scoped_lock<std::mutex> lock(instance_mutex);
  if (!instance) {
  if (!instance) {
    LOG(ERROR) << "Not initialized";
    LOG(ERROR) << "Not initialized";
@@ -5642,7 +5640,7 @@ void LeAudioClient::Cleanup(base::Callback<void()> cleanupCb) {


  LeAudioClientImpl* ptr = instance;
  LeAudioClientImpl* ptr = instance;
  instance = nullptr;
  instance = nullptr;
  ptr->Cleanup(cleanupCb);
  ptr->Cleanup();
  delete ptr;
  delete ptr;
  ptr = nullptr;
  ptr = nullptr;


+1 −3
Original line number Original line Diff line number Diff line
@@ -50,7 +50,7 @@ void LeAudioClient::Initialize(
    base::Closure initCb, base::Callback<bool()> hal_2_1_verifier,
    base::Closure initCb, base::Callback<bool()> hal_2_1_verifier,
    const std::vector<bluetooth::le_audio::btle_audio_codec_config_t>&
    const std::vector<bluetooth::le_audio::btle_audio_codec_config_t>&
        offloading_preference) {}
        offloading_preference) {}
void LeAudioClient::Cleanup(base::Callback<void()> cleanupCb) {}
void LeAudioClient::Cleanup(void) {}
LeAudioClient* LeAudioClient::Get(void) { return nullptr; }
LeAudioClient* LeAudioClient::Get(void) { return nullptr; }
void LeAudioClient::DebugDump(int fd) {}
void LeAudioClient::DebugDump(int fd) {}
void LeAudioClient::AddFromStorage(const RawAddress& addr, bool autoconnect,
void LeAudioClient::AddFromStorage(const RawAddress& addr, bool autoconnect,
@@ -79,5 +79,3 @@ bool LeAudioClient::GetAsesForStorage(const RawAddress& addr,
  return false;
  return false;
}
}
bool LeAudioClient::IsLeAudioClientRunning() { return false; }
bool LeAudioClient::IsLeAudioClientRunning() { return false; }
void LeAudioClient::InitializeAudioSetConfigurationProvider(void) {}
void LeAudioClient::CleanupAudioSetConfigurationProvider(void) {}
+3 −1
Original line number Original line Diff line number Diff line
@@ -95,8 +95,9 @@ struct codec_manager_impl {
                            kIsoDataPathPlatformDefault, {});
                            kIsoDataPathPlatformDefault, {});
    btm_configure_data_path(btm_data_direction::CONTROLLER_TO_HOST,
    btm_configure_data_path(btm_data_direction::CONTROLLER_TO_HOST,
                            kIsoDataPathPlatformDefault, {});
                            kIsoDataPathPlatformDefault, {});
    UpdateOffloadCapability(offloading_preference);
    SetCodecLocation(CodecLocation::ADSP);
    SetCodecLocation(CodecLocation::ADSP);
    le_audio::AudioSetConfigurationProvider::Initialize();
    UpdateOffloadCapability(offloading_preference);
  }
  }
  ~codec_manager_impl() {
  ~codec_manager_impl() {
    if (GetCodecLocation() != CodecLocation::HOST) {
    if (GetCodecLocation() != CodecLocation::HOST) {
@@ -105,6 +106,7 @@ struct codec_manager_impl {
      btm_configure_data_path(btm_data_direction::CONTROLLER_TO_HOST,
      btm_configure_data_path(btm_data_direction::CONTROLLER_TO_HOST,
                              kIsoDataPathHci, {});
                              kIsoDataPathHci, {});
    }
    }
    le_audio::AudioSetConfigurationProvider::Cleanup();
  }
  }
  CodecLocation GetCodecLocation(void) const { return codec_location_; }
  CodecLocation GetCodecLocation(void) const { return codec_location_; }


Loading