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

Commit d3972aa2 authored by Grzegorz Kołodziejczyk's avatar Grzegorz Kołodziejczyk Committed by Grzegorz Kolodziejczyk
Browse files

broadcast: Don't stop ISO when there is active Unicast

Broadcast and Unicast uses ISO module for handling controller actions.
Cleaning up module have to check if other module Broadcast or Unicast is
active to not block access to controller.

Tag: #bug
Bug: 328533583
Bug: 316005152
Test: atest bluetooth_le_audio_client_test
Change-Id: Id11c68e28ced9678720bfd9fa7b50829e64dfa28
parent af3f35a9
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@
#include "bta/le_audio/le_audio_types.h"
#include "bta/le_audio/le_audio_utils.h"
#include "bta/le_audio/metrics_collector.h"
#include "bta_le_audio_api.h"
#include "common/strings.h"
#include "device/include/controller.h"
#include "include/check.h"
@@ -129,6 +130,10 @@ class LeAudioBroadcasterImpl : public LeAudioBroadcaster, public BigCallbacks {
    broadcasts_.clear();
    callbacks_ = nullptr;
    is_iso_running_ = false;

    if (!LeAudioClient::IsLeAudioClientRunning())
      IsoManager::GetInstance()->Stop();

    queued_start_broadcast_request_ = std::nullopt;
    queued_create_broadcast_request_ = std::nullopt;

+2 −0
Original line number Diff line number Diff line
@@ -119,6 +119,8 @@ static void cleanup_message_loop_thread() {
  message_loop_thread.ShutDown();
}

bool LeAudioClient::IsLeAudioClientRunning(void) { return false; }

namespace bluetooth::le_audio {
namespace broadcaster {
BroadcastConfiguration GetBroadcastConfig(
+5 −1
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@
#include "bta_gatt_queue.h"
#include "bta_groups.h"
#include "bta_le_audio_api.h"
#include "bta_le_audio_broadcaster_api.h"
#include "btif/include/btif_profile_storage.h"
#include "btm_iso_api.h"
#include "client_parser.h"
@@ -6302,7 +6303,10 @@ void LeAudioClient::Cleanup(void) {
  CodecManager::GetInstance()->Stop();
  ContentControlIdKeeper::GetInstance()->Stop();
  LeAudioGroupStateMachine::Cleanup();

  if (!LeAudioBroadcaster::IsLeAudioBroadcasterRunning())
    IsoManager::GetInstance()->Stop();

  bluetooth::le_audio::MetricsCollector::Get()->Flush();
}

+3 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@
#include "bta_gatt_queue_mock.h"
#include "bta_groups.h"
#include "bta_le_audio_api.h"
#include "bta_le_audio_broadcaster_api.h"
#include "btif_storage_mock.h"
#include "btm_api_mock.h"
#include "btm_iso_api.h"
@@ -226,6 +227,8 @@ const stack_config_t* stack_config_get_interface(void) {
  return &mock_stack_config;
}

bool LeAudioBroadcaster::IsLeAudioBroadcasterRunning() { return false; }

namespace bluetooth::le_audio {
class MockLeAudioSourceHalClient;
MockLeAudioSourceHalClient* mock_le_audio_source_hal_client_;