Merge "audio: Add retries for BT proxy port registration" into main

This commit is contained in:
Mikhail Naganov 2024-01-29 17:17:56 +00:00 committed by Gerrit Code Review
commit 3552515d70
2 changed files with 9 additions and 1 deletions

View file

@ -299,7 +299,13 @@ ndk::ScopedAStatus ModuleBluetooth::createProxy(const AudioPort& audioPort, int3
: std::shared_ptr<BluetoothAudioPortAidl>(
std::make_shared<BluetoothAudioPortAidlOut>());
const auto& devicePort = audioPort.ext.get<AudioPortExt::device>();
if (const auto device = devicePort.device.type; !proxy.ptr->registerPort(device)) {
const auto device = devicePort.device.type;
bool registrationSuccess = false;
for (int i = 0; i < kCreateProxyRetries && !registrationSuccess; ++i) {
registrationSuccess = proxy.ptr->registerPort(device);
usleep(kCreateProxyRetrySleepMs * 1000);
}
if (!registrationSuccess) {
LOG(ERROR) << __func__ << ": failed to register BT port for " << device.toString();
return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_STATE);
}

View file

@ -85,6 +85,8 @@ class ModuleBluetooth final : public Module {
ndk::ScopedAStatus findOrCreateProxy(
const ::aidl::android::media::audio::common::AudioPort& audioPort, CachedProxy& proxy);
static constexpr int kCreateProxyRetries = 5;
static constexpr int kCreateProxyRetrySleepMs = 250;
ChildInterface<BluetoothA2dp> mBluetoothA2dp;
ChildInterface<BluetoothLe> mBluetoothLe;
std::map<int32_t /*instantiated device port ID*/, CachedProxy> mProxies;