diff --git a/services/audio_policy/server/src/service/routers/cockpit_phone_router.cpp b/services/audio_policy/server/src/service/routers/cockpit_phone_router.cpp index e4a557b04f7d0578e19d01ebd8d12769ed9666f2..caed9db03e57cff23ca21bb8033a454fb3bab9be 100644 --- a/services/audio_policy/server/src/service/routers/cockpit_phone_router.cpp +++ b/services/audio_policy/server/src/service/routers/cockpit_phone_router.cpp @@ -21,6 +21,18 @@ using namespace std; namespace OHOS { namespace AudioStandard { +vector> GetBTCarDevices(vector> &descs) +{ + vector> carDescs; + for (const auto &desc : descs) { + if (desc == nullptr || desc->deviceCategory_ != BT_CAR) { + continue; + } + carDescs.push_back(make_unique(*desc)); + } + return carDescs; +} + unique_ptr CockpitPhoneRouter::GetMediaRenderDevice(StreamUsage streamUsage, int32_t clientUID) { return make_unique(); @@ -28,12 +40,24 @@ unique_ptr CockpitPhoneRouter::GetMediaRenderDevice(Strea unique_ptr CockpitPhoneRouter::GetCallRenderDevice(StreamUsage streamUsage, int32_t clientUID) { - return make_unique(); + vector> descs = + AudioDeviceManager::GetAudioDeviceManager().GetCommRenderPublicDevices(); + vector> carDescs = GetBTCarDevices(descs); + unique_ptr desc = GetLatestConnectDeivce(carDescs); + AUDIO_DEBUG_LOG("streamUsage %{public}d clientUID %{public}d fetch device %{public}d", streamUsage, + clientUID, desc->deviceType_); + return desc; } unique_ptr CockpitPhoneRouter::GetCallCaptureDevice(SourceType sourceType, int32_t clientUID) { - return make_unique(); + vector> descs = + AudioDeviceManager::GetAudioDeviceManager().GetCommCapturePublicDevices(); + vector> carDescs = GetBTCarDevices(descs); + unique_ptr desc = GetLatestConnectDeivce(carDescs); + AUDIO_DEBUG_LOG("sourceType %{public}d clientUID %{public}d fetch device %{public}d", sourceType, + clientUID, desc->deviceType_); + return desc; } unique_ptr CockpitPhoneRouter::GetRingRenderDevice(StreamUsage streamUsage, int32_t clientUID)