BtAudio: Improve LE offload compatability
Bug: 203490261
Test: m android.hardware.bluetooth.audio-V1-impl
Change-Id: I7dd37cb697b03bb5fe0bdc467f8e190575e0e2e1
diff --git a/bluetooth/audio/utils/aidl_session/BluetoothAudioSession.cpp b/bluetooth/audio/utils/aidl_session/BluetoothAudioSession.cpp
index 8052b01..f626db8 100644
--- a/bluetooth/audio/utils/aidl_session/BluetoothAudioSession.cpp
+++ b/bluetooth/audio/utils/aidl_session/BluetoothAudioSession.cpp
@@ -35,22 +35,8 @@
static constexpr int kWritePollMs = 1; // polled non-blocking interval
static constexpr int kReadPollMs = 1; // polled non-blocking interval
-const CodecConfiguration BluetoothAudioSession::kInvalidCodecConfiguration = {};
-const LeAudioConfiguration kInvalidLeAudioConfiguration = {};
-AudioConfiguration BluetoothAudioSession::invalidSoftwareAudioConfiguration =
- {};
-AudioConfiguration BluetoothAudioSession::invalidOffloadAudioConfiguration = {};
-AudioConfiguration BluetoothAudioSession::invalidLeOffloadAudioConfig = {};
-
BluetoothAudioSession::BluetoothAudioSession(const SessionType& session_type)
- : session_type_(session_type), stack_iface_(nullptr), data_mq_(nullptr) {
- invalidSoftwareAudioConfiguration.set<AudioConfiguration::pcmConfig>(
- kInvalidPcmConfiguration);
- invalidOffloadAudioConfiguration.set<AudioConfiguration::a2dpConfig>(
- kInvalidCodecConfiguration);
- invalidLeOffloadAudioConfig.set<AudioConfiguration::leAudioConfig>(
- kInvalidLeAudioConfiguration);
-}
+ : session_type_(session_type), stack_iface_(nullptr), data_mq_(nullptr) {}
/***
*
@@ -72,13 +58,7 @@
} else if (!UpdateDataPath(mq_desc)) {
LOG(ERROR) << __func__ << " - SessionType=" << toString(session_type_)
<< " MqDescriptor Invalid";
- if (session_type_ == SessionType::A2DP_HARDWARE_OFFLOAD_ENCODING_DATAPATH) {
- audio_config_ = std::make_unique<AudioConfiguration>(
- invalidOffloadAudioConfiguration);
- } else {
- audio_config_ = std::make_unique<AudioConfiguration>(
- invalidSoftwareAudioConfiguration);
- }
+ audio_config_ = nullptr;
} else {
stack_iface_ = stack_iface;
LOG(INFO) << __func__ << " - SessionType=" << toString(session_type_)
@@ -91,13 +71,7 @@
std::lock_guard<std::recursive_mutex> guard(mutex_);
bool toggled = IsSessionReady();
LOG(INFO) << __func__ << " - SessionType=" << toString(session_type_);
- if (session_type_ == SessionType::A2DP_HARDWARE_OFFLOAD_ENCODING_DATAPATH) {
- audio_config_ =
- std::make_unique<AudioConfiguration>(invalidOffloadAudioConfiguration);
- } else {
- audio_config_ =
- std::make_unique<AudioConfiguration>(invalidSoftwareAudioConfiguration);
- }
+ audio_config_ = nullptr;
stack_iface_ = nullptr;
UpdateDataPath(nullptr);
if (toggled) {
@@ -111,17 +85,17 @@
*
***/
-const AudioConfiguration& BluetoothAudioSession::GetAudioConfig() {
+const AudioConfiguration BluetoothAudioSession::GetAudioConfig() {
std::lock_guard<std::recursive_mutex> guard(mutex_);
if (!IsSessionReady()) {
switch (session_type_) {
case SessionType::A2DP_HARDWARE_OFFLOAD_ENCODING_DATAPATH:
- return invalidOffloadAudioConfiguration;
+ return AudioConfiguration(CodecConfiguration{});
case SessionType::LE_AUDIO_HARDWARE_OFFLOAD_ENCODING_DATAPATH:
case SessionType::LE_AUDIO_HARDWARE_OFFLOAD_DECODING_DATAPATH:
- return invalidLeOffloadAudioConfig;
+ return AudioConfiguration(LeAudioConfiguration{});
default:
- return invalidSoftwareAudioConfiguration;
+ return AudioConfiguration(PcmConfiguration{});
}
}
return *audio_config_;
@@ -164,7 +138,7 @@
session_type_ ==
SessionType::LE_AUDIO_HARDWARE_OFFLOAD_DECODING_DATAPATH ||
(data_mq_ != nullptr && data_mq_->isValid()));
- return stack_iface_ != nullptr && is_mq_valid;
+ return stack_iface_ != nullptr && is_mq_valid && audio_config_ != nullptr;
}
/***