mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 05:49:27 +00:00
Bluetooth audio hal check broadcast configuraiton for the broadcast offload
The patch contains the following changes 1. Check the broadcast audio configuration as starting broadcast offload session 2. Update audio configuration checker for broadcast offload 3. Remove the IsOffloadLeAudioConfigurationValid function that the audio configuraiton is invalid as session started, so we don't need to check it at that time Bug: 210987580 Test: start the offload broadcast stream, and check the session status Change-Id: I60b1b506051873f6d942f2febace6562634fc12a
This commit is contained in:
@@ -55,21 +55,20 @@ ndk::ScopedAStatus LeAudioOffloadAudioProvider::startSession(
|
|||||||
const std::shared_ptr<IBluetoothAudioPort>& host_if,
|
const std::shared_ptr<IBluetoothAudioPort>& host_if,
|
||||||
const AudioConfiguration& audio_config,
|
const AudioConfiguration& audio_config,
|
||||||
const std::vector<LatencyMode>& latency_modes, DataMQDesc* _aidl_return) {
|
const std::vector<LatencyMode>& latency_modes, DataMQDesc* _aidl_return) {
|
||||||
if (audio_config.getTag() != AudioConfiguration::leAudioConfig) {
|
if (session_type_ ==
|
||||||
|
SessionType::LE_AUDIO_BROADCAST_HARDWARE_OFFLOAD_ENCODING_DATAPATH) {
|
||||||
|
if (audio_config.getTag() != AudioConfiguration::leAudioBroadcastConfig) {
|
||||||
|
LOG(WARNING) << __func__ << " - Invalid Audio Configuration="
|
||||||
|
<< audio_config.toString();
|
||||||
|
*_aidl_return = DataMQDesc();
|
||||||
|
return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT);
|
||||||
|
}
|
||||||
|
} else if (audio_config.getTag() != AudioConfiguration::leAudioConfig) {
|
||||||
LOG(WARNING) << __func__ << " - Invalid Audio Configuration="
|
LOG(WARNING) << __func__ << " - Invalid Audio Configuration="
|
||||||
<< audio_config.toString();
|
<< audio_config.toString();
|
||||||
*_aidl_return = DataMQDesc();
|
*_aidl_return = DataMQDesc();
|
||||||
return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT);
|
return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT);
|
||||||
}
|
}
|
||||||
const auto& le_audio_config =
|
|
||||||
audio_config.get<AudioConfiguration::leAudioConfig>();
|
|
||||||
if (!BluetoothAudioCodecs::IsOffloadLeAudioConfigurationValid(
|
|
||||||
session_type_, le_audio_config)) {
|
|
||||||
LOG(WARNING) << __func__ << " - Unsupported LC3 Offloaded Configuration="
|
|
||||||
<< le_audio_config.toString();
|
|
||||||
*_aidl_return = DataMQDesc();
|
|
||||||
return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT);
|
|
||||||
}
|
|
||||||
|
|
||||||
return BluetoothAudioProvider::startSession(
|
return BluetoothAudioProvider::startSession(
|
||||||
host_if, audio_config, latency_modes, _aidl_return);
|
host_if, audio_config, latency_modes, _aidl_return);
|
||||||
|
|||||||
@@ -317,19 +317,6 @@ bool BluetoothAudioCodecs::IsOffloadLc3ConfigurationValid(
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BluetoothAudioCodecs::IsOffloadLeAudioConfigurationValid(
|
|
||||||
const SessionType& session_type, const LeAudioConfiguration&) {
|
|
||||||
if (session_type !=
|
|
||||||
SessionType::LE_AUDIO_HARDWARE_OFFLOAD_ENCODING_DATAPATH &&
|
|
||||||
session_type !=
|
|
||||||
SessionType::LE_AUDIO_HARDWARE_OFFLOAD_DECODING_DATAPATH &&
|
|
||||||
session_type !=
|
|
||||||
SessionType::LE_AUDIO_BROADCAST_HARDWARE_OFFLOAD_ENCODING_DATAPATH) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::vector<PcmCapabilities>
|
std::vector<PcmCapabilities>
|
||||||
BluetoothAudioCodecs::GetSoftwarePcmCapabilities() {
|
BluetoothAudioCodecs::GetSoftwarePcmCapabilities() {
|
||||||
return {kDefaultSoftwarePcmCapabilities};
|
return {kDefaultSoftwarePcmCapabilities};
|
||||||
|
|||||||
@@ -44,9 +44,6 @@ class BluetoothAudioCodecs {
|
|||||||
static bool IsOffloadCodecConfigurationValid(
|
static bool IsOffloadCodecConfigurationValid(
|
||||||
const SessionType& session_type, const CodecConfiguration& codec_config);
|
const SessionType& session_type, const CodecConfiguration& codec_config);
|
||||||
|
|
||||||
static bool IsOffloadLeAudioConfigurationValid(
|
|
||||||
const SessionType& session_type, const LeAudioConfiguration&);
|
|
||||||
|
|
||||||
static std::vector<LeAudioCodecCapabilitiesSetting>
|
static std::vector<LeAudioCodecCapabilitiesSetting>
|
||||||
GetLeAudioOffloadCodecCapabilities(const SessionType& session_type);
|
GetLeAudioOffloadCodecCapabilities(const SessionType& session_type);
|
||||||
|
|
||||||
|
|||||||
@@ -276,11 +276,14 @@ bool BluetoothAudioSession::UpdateAudioConfig(
|
|||||||
bool is_offload_a2dp_session =
|
bool is_offload_a2dp_session =
|
||||||
(session_type_ == SessionType::A2DP_HARDWARE_OFFLOAD_ENCODING_DATAPATH ||
|
(session_type_ == SessionType::A2DP_HARDWARE_OFFLOAD_ENCODING_DATAPATH ||
|
||||||
session_type_ == SessionType::A2DP_HARDWARE_OFFLOAD_DECODING_DATAPATH);
|
session_type_ == SessionType::A2DP_HARDWARE_OFFLOAD_DECODING_DATAPATH);
|
||||||
bool is_offload_le_audio_session =
|
bool is_offload_le_audio_unicast_session =
|
||||||
(session_type_ ==
|
(session_type_ ==
|
||||||
SessionType::LE_AUDIO_HARDWARE_OFFLOAD_ENCODING_DATAPATH ||
|
SessionType::LE_AUDIO_HARDWARE_OFFLOAD_ENCODING_DATAPATH ||
|
||||||
session_type_ ==
|
session_type_ ==
|
||||||
SessionType::LE_AUDIO_HARDWARE_OFFLOAD_DECODING_DATAPATH);
|
SessionType::LE_AUDIO_HARDWARE_OFFLOAD_DECODING_DATAPATH);
|
||||||
|
bool is_offload_le_audio_broadcast_session =
|
||||||
|
(session_type_ ==
|
||||||
|
SessionType::LE_AUDIO_BROADCAST_HARDWARE_OFFLOAD_ENCODING_DATAPATH);
|
||||||
auto audio_config_tag = audio_config.getTag();
|
auto audio_config_tag = audio_config.getTag();
|
||||||
bool is_software_audio_config =
|
bool is_software_audio_config =
|
||||||
(is_software_session &&
|
(is_software_session &&
|
||||||
@@ -288,11 +291,15 @@ bool BluetoothAudioSession::UpdateAudioConfig(
|
|||||||
bool is_a2dp_offload_audio_config =
|
bool is_a2dp_offload_audio_config =
|
||||||
(is_offload_a2dp_session &&
|
(is_offload_a2dp_session &&
|
||||||
audio_config_tag == AudioConfiguration::a2dpConfig);
|
audio_config_tag == AudioConfiguration::a2dpConfig);
|
||||||
bool is_le_audio_offload_audio_config =
|
bool is_le_audio_offload_unicast_audio_config =
|
||||||
(is_offload_le_audio_session &&
|
(is_offload_le_audio_unicast_session &&
|
||||||
audio_config_tag == AudioConfiguration::leAudioConfig);
|
audio_config_tag == AudioConfiguration::leAudioConfig);
|
||||||
|
bool is_le_audio_offload_broadcast_audio_config =
|
||||||
|
(is_offload_le_audio_broadcast_session &&
|
||||||
|
audio_config_tag == AudioConfiguration::leAudioBroadcastConfig);
|
||||||
if (!is_software_audio_config && !is_a2dp_offload_audio_config &&
|
if (!is_software_audio_config && !is_a2dp_offload_audio_config &&
|
||||||
!is_le_audio_offload_audio_config) {
|
!is_le_audio_offload_unicast_audio_config &&
|
||||||
|
!is_le_audio_offload_broadcast_audio_config) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
audio_config_ = std::make_unique<AudioConfiguration>(audio_config);
|
audio_config_ = std::make_unique<AudioConfiguration>(audio_config);
|
||||||
|
|||||||
Reference in New Issue
Block a user