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

Commit 3ff3786d authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

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

parents 4c526351 d0a5a350
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())