Skip to content
Snippets Groups Projects
Commit 366c2be1 authored by Bao Do's avatar Bao Do Committed by Automerger Merge Worker
Browse files

Merge "Add wrapper for LE Multi-codec's HAL functions" into main am:...

Merge "Add wrapper for LE Multi-codec's HAL functions" into main am: 7f2e59e5 am: b85e7f37 am: 9c31835d

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Bluetooth/+/2836297



Change-Id: I61ace3f1b9faf8102261149da00c02f9f64660ca
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents e595ad41 9c31835d
No related branches found
No related tags found
No related merge requests found
......@@ -560,6 +560,132 @@ size_t BluetoothAudioSourceClientInterface::WriteAudioData(const uint8_t* p_buf,
return total_written;
}
std::optional<IBluetoothAudioProviderFactory::ProviderInfo>
BluetoothAudioClientInterface::GetProviderInfo(SessionType session_type) {
if (provider_factory_ == nullptr) {
LOG(WARNING) << __func__ << ": No provider factory";
return std::nullopt;
}
std::optional<IBluetoothAudioProviderFactory::ProviderInfo> provider_info;
auto aidl_retval =
provider_factory_->getProviderInfo(session_type, &provider_info);
if (!aidl_retval.isOk()) {
LOG(FATAL) << __func__ << ": BluetoothAudioHal::getProviderInfo failure: "
<< aidl_retval.getDescription();
}
return provider_info;
}
void BluetoothAudioClientInterface::SetCodecPriority(CodecId codec_id,
int32_t priority) {
CHECK(provider_ != nullptr);
auto aidl_retval = provider_->setCodecPriority(codec_id, priority);
if (!aidl_retval.isOk()) {
LOG(FATAL) << __func__ << ": BluetoothAudioHal::setCodecPriority failure: "
<< aidl_retval.getDescription();
}
}
std::vector<IBluetoothAudioProvider::LeAudioAseConfigurationSetting>
BluetoothAudioClientInterface::GetLeAudioAseConfiguration(
std::optional<std::vector<
std::optional<IBluetoothAudioProvider::LeAudioDeviceCapabilities>>>&
remoteSinkAudioCapabilities,
std::optional<std::vector<
std::optional<IBluetoothAudioProvider::LeAudioDeviceCapabilities>>>&
remoteSourceAudioCapabilities,
std::vector<IBluetoothAudioProvider::LeAudioConfigurationRequirement>&
requirements) {
CHECK(provider_ != nullptr);
std::vector<IBluetoothAudioProvider::LeAudioAseConfigurationSetting>
configurations;
auto aidl_retval = provider_->getLeAudioAseConfiguration(
remoteSinkAudioCapabilities, remoteSourceAudioCapabilities, requirements,
&configurations);
if (!aidl_retval.isOk()) {
LOG(FATAL) << __func__
<< ": BluetoothAudioHal::getLeAudioAseConfiguration failure: "
<< aidl_retval.getDescription();
}
LOG(INFO) << __func__
<< ": BluetoothAudioHal::getLeAudioAseConfiguration returned "
<< configurations.size() << " configurations.";
return configurations;
}
IBluetoothAudioProvider::LeAudioAseQosConfigurationPair
BluetoothAudioClientInterface::getLeAudioAseQosConfiguration(
IBluetoothAudioProvider::LeAudioAseQosConfigurationRequirement&
qosRequirement) {
CHECK(provider_ != nullptr);
IBluetoothAudioProvider::LeAudioAseQosConfigurationPair qos_configuration;
auto aidl_retval = provider_->getLeAudioAseQosConfiguration(
qosRequirement, &qos_configuration);
if (!aidl_retval.isOk()) {
LOG(FATAL) << __func__
<< ": BluetoothAudioHal::getLeAudioAseQosConfiguration failure: "
<< aidl_retval.getDescription();
}
return qos_configuration;
}
void BluetoothAudioClientInterface::onSinkAseMetadataChanged(
IBluetoothAudioProvider::AseState state, int32_t cigId, int32_t cisId,
std::optional<std::vector<std::optional<MetadataLtv>>>& metadata) {
CHECK(provider_ != nullptr);
auto aidl_retval =
provider_->onSinkAseMetadataChanged(state, cigId, cisId, metadata);
if (!aidl_retval.isOk()) {
LOG(FATAL) << __func__
<< ": BluetoothAudioHal::onSinkAseMetadataChanged failure: "
<< aidl_retval.getDescription();
}
}
void BluetoothAudioClientInterface::onSourceAseMetadataChanged(
IBluetoothAudioProvider::AseState state, int32_t cigId, int32_t cisId,
std::optional<std::vector<std::optional<MetadataLtv>>>& metadata) {
CHECK(provider_ != nullptr);
auto aidl_retval =
provider_->onSourceAseMetadataChanged(state, cigId, cisId, metadata);
if (!aidl_retval.isOk()) {
LOG(FATAL) << __func__
<< ": BluetoothAudioHal::onSinkAseMetadataChanged failure: "
<< aidl_retval.getDescription();
}
}
IBluetoothAudioProvider::LeAudioBroadcastConfigurationSetting
BluetoothAudioClientInterface::getLeAudioBroadcastConfiguration(
const std::optional<std::vector<
std::optional<IBluetoothAudioProvider::LeAudioDeviceCapabilities>>>&
remoteSinkAudioCapabilities,
const IBluetoothAudioProvider::LeAudioBroadcastConfigurationRequirement&
requirement) {
CHECK(provider_ != nullptr);
IBluetoothAudioProvider::LeAudioBroadcastConfigurationSetting setting;
auto aidl_retval = provider_->getLeAudioBroadcastConfiguration(
remoteSinkAudioCapabilities, requirement, &setting);
if (!aidl_retval.isOk()) {
LOG(FATAL) << __func__
<< ": BluetoothAudioHal::onSinkAseMetadataChanged failure: "
<< aidl_retval.getDescription();
}
return setting;
}
} // namespace aidl
} // namespace audio
} // namespace bluetooth
......@@ -39,11 +39,17 @@ namespace aidl {
using ::aidl::android::hardware::bluetooth::audio::AudioCapabilities;
using ::aidl::android::hardware::bluetooth::audio::AudioConfiguration;
using ::aidl::android::hardware::bluetooth::audio::BluetoothAudioStatus;
using ::aidl::android::hardware::bluetooth::audio::CodecId;
using ::aidl::android::hardware::bluetooth::audio::CodecInfo;
using ::aidl::android::hardware::bluetooth::audio::CodecSpecificCapabilitiesLtv;
using ::aidl::android::hardware::bluetooth::audio::
CodecSpecificConfigurationLtv;
using ::aidl::android::hardware::bluetooth::audio::IBluetoothAudioPort;
using ::aidl::android::hardware::bluetooth::audio::IBluetoothAudioProvider;
using ::aidl::android::hardware::bluetooth::audio::
IBluetoothAudioProviderFactory;
using ::aidl::android::hardware::bluetooth::audio::LatencyMode;
using ::aidl::android::hardware::bluetooth::audio::MetadataLtv;
using ::aidl::android::hardware::bluetooth::audio::PcmConfiguration;
using ::aidl::android::hardware::common::fmq::MQDescriptor;
......@@ -89,6 +95,43 @@ class BluetoothAudioClientInterface {
void FlushAudioData();
std::optional<IBluetoothAudioProviderFactory::ProviderInfo> GetProviderInfo(
SessionType session_type);
void SetCodecPriority(CodecId codec_id, int32_t priority);
std::vector<IBluetoothAudioProvider::LeAudioAseConfigurationSetting>
GetLeAudioAseConfiguration(
std::optional<std::vector<
std::optional<IBluetoothAudioProvider::LeAudioDeviceCapabilities>>>&
remoteSinkAudioCapabilities,
std::optional<std::vector<
std::optional<IBluetoothAudioProvider::LeAudioDeviceCapabilities>>>&
remoteSourceAudioCapabilities,
std::vector<IBluetoothAudioProvider::LeAudioConfigurationRequirement>&
requirements);
IBluetoothAudioProvider::LeAudioAseQosConfigurationPair
getLeAudioAseQosConfiguration(
IBluetoothAudioProvider::LeAudioAseQosConfigurationRequirement&
qosRequirement);
void onSinkAseMetadataChanged(
IBluetoothAudioProvider::AseState state, int32_t cigId, int32_t cisId,
std::optional<std::vector<std::optional<MetadataLtv>>>& metadata);
void onSourceAseMetadataChanged(
IBluetoothAudioProvider::AseState state, int32_t cigId, int32_t cisId,
std::optional<std::vector<std::optional<MetadataLtv>>>& metadata);
IBluetoothAudioProvider::LeAudioBroadcastConfigurationSetting
getLeAudioBroadcastConfiguration(
const std::optional<std::vector<
std::optional<IBluetoothAudioProvider::LeAudioDeviceCapabilities>>>&
remoteSinkAudioCapabilities,
const IBluetoothAudioProvider::LeAudioBroadcastConfigurationRequirement&
requirement);
static constexpr PcmConfiguration kInvalidPcmConfiguration = {};
static bool is_aidl_available();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment