Loading system/audio_hal_interface/aidl/hfp_client_interface_aidl.cc +2 −2 Original line number Original line Diff line number Diff line Loading @@ -64,8 +64,8 @@ tBTA_AG_SCB* get_hfp_active_device_callback() { return cb; return cb; } } std::unordered_map<int, ::hfp::sco_config> HfpTransport::GetHfpScoConfig( std::unordered_map<tBTA_AG_UUID_CODEC, ::hfp::sco_config> SessionType sessionType) { HfpTransport::GetHfpScoConfig(SessionType sessionType) { auto providerInfo = auto providerInfo = ::bluetooth::audio::aidl::ProviderInfo::GetProviderInfo(sessionType); ::bluetooth::audio::aidl::ProviderInfo::GetProviderInfo(sessionType); return providerInfo->GetHfpScoConfig(); return providerInfo->GetHfpScoConfig(); Loading system/audio_hal_interface/aidl/hfp_client_interface_aidl.h +2 −2 Original line number Original line Diff line number Diff line Loading @@ -72,8 +72,8 @@ class HfpTransport { void LogBytesProcessed(size_t bytes_read); void LogBytesProcessed(size_t bytes_read); static std::unordered_map<int, ::hfp::sco_config> GetHfpScoConfig( static std::unordered_map<tBTA_AG_UUID_CODEC, ::hfp::sco_config> SessionType sessionType); GetHfpScoConfig(SessionType sessionType); private: private: tHFP_CTRL_CMD hfp_pending_cmd_; tHFP_CTRL_CMD hfp_pending_cmd_; Loading system/audio_hal_interface/aidl/provider_info.cc +7 −4 Original line number Original line Diff line number Diff line Loading @@ -58,20 +58,23 @@ ProviderInfo::ProviderInfo(SessionType sessionType, : codecInfos(std::move(codecs)) { : codecInfos(std::move(codecs)) { for (auto codecInfo : codecInfos) { for (auto codecInfo : codecInfos) { if (codecInfo.id == CodecId::Core::CVSD) { if (codecInfo.id == CodecId::Core::CVSD) { hfpScoConfigMap[UUID_CODEC_CVSD] = recordHfpCodecInfo(codecInfo); hfpScoConfigMap[tBTA_AG_UUID_CODEC::UUID_CODEC_CVSD] = recordHfpCodecInfo(codecInfo); } else if (codecInfo.id == CodecId::Core::MSBC) { } else if (codecInfo.id == CodecId::Core::MSBC) { hfpScoConfigMap[UUID_CODEC_MSBC] = recordHfpCodecInfo(codecInfo); hfpScoConfigMap[tBTA_AG_UUID_CODEC::UUID_CODEC_MSBC] = recordHfpCodecInfo(codecInfo); } else if (codecInfo.id == CodecId::Core::LC3) { } else if (codecInfo.id == CodecId::Core::LC3) { if (sessionType == SessionType::HFP_HARDWARE_OFFLOAD_DATAPATH || if (sessionType == SessionType::HFP_HARDWARE_OFFLOAD_DATAPATH || sessionType == SessionType::HFP_SOFTWARE_ENCODING_DATAPATH || sessionType == SessionType::HFP_SOFTWARE_ENCODING_DATAPATH || sessionType == SessionType::HFP_SOFTWARE_DECODING_DATAPATH) { sessionType == SessionType::HFP_SOFTWARE_DECODING_DATAPATH) { hfpScoConfigMap[UUID_CODEC_LC3] = recordHfpCodecInfo(codecInfo); hfpScoConfigMap[tBTA_AG_UUID_CODEC::UUID_CODEC_LC3] = recordHfpCodecInfo(codecInfo); } } } } } } } } const std::unordered_map<int, ::hfp::sco_config>& const std::unordered_map<tBTA_AG_UUID_CODEC, ::hfp::sco_config>& ProviderInfo::GetHfpScoConfig() { ProviderInfo::GetHfpScoConfig() { return hfpScoConfigMap; return hfpScoConfigMap; } } Loading system/audio_hal_interface/aidl/provider_info.h +4 −2 Original line number Original line Diff line number Diff line Loading @@ -36,11 +36,13 @@ class ProviderInfo { ~ProviderInfo() = default; ~ProviderInfo() = default; const std::unordered_map<int, ::hfp::sco_config>& GetHfpScoConfig(); const std::unordered_map<tBTA_AG_UUID_CODEC, ::hfp::sco_config>& GetHfpScoConfig(); private: private: const std::vector<CodecInfo> codecInfos; const std::vector<CodecInfo> codecInfos; std::unordered_map<int /* HFP CODEC in UUID_CODEC_XXX */, ::hfp::sco_config> std::unordered_map<tBTA_AG_UUID_CODEC /* HFP CODEC in UUID_CODEC_XXX */, ::hfp::sco_config> hfpScoConfigMap; hfpScoConfigMap; }; }; } // namespace bluetooth::audio::aidl } // namespace bluetooth::audio::aidl system/audio_hal_interface/hfp_client_interface.cc +15 −9 Original line number Original line Diff line number Diff line Loading @@ -77,19 +77,25 @@ HfpConfiguration get_default_hfp_configuration() { return hfp_config; return hfp_config; } } CodecId get_codec_id_by_peer_codec(tBTA_AG_PEER_CODEC sco_codec) { CodecId sco_codec_to_hal_codec(tBTA_AG_UUID_CODEC sco_codec) { if (sco_codec & BTM_SCO_CODEC_LC3) return CodecId::Core::LC3; switch (sco_codec) { if (sco_codec & BTM_SCO_CODEC_MSBC) return CodecId::Core::MSBC; case tBTA_AG_UUID_CODEC::UUID_CODEC_LC3: if (sco_codec & BTM_SCO_CODEC_CVSD) return CodecId::Core::CVSD; return CodecId::Core::LC3; // Unknown vendor codec otherwise case tBTA_AG_UUID_CODEC::UUID_CODEC_MSBC: CodecId codec_id = CodecId::Vendor(); return CodecId::Core::MSBC; return codec_id; case tBTA_AG_UUID_CODEC::UUID_CODEC_CVSD: return CodecId::Core::CVSD; default: log::warn("Unknown sco_codec {}, defaulting to vendor codec", bta_ag_uuid_codec_text(sco_codec)); return CodecId::Vendor(); } } } AudioConfiguration offload_config_to_hal_audio_config( AudioConfiguration offload_config_to_hal_audio_config( const ::hfp::offload_config& offload_config) { const ::hfp::offload_config& offload_config) { HfpConfiguration hfp_config{ HfpConfiguration hfp_config{ .codecId = get_codec_id_by_peer_codec(offload_config.sco_codec), .codecId = sco_codec_to_hal_codec(offload_config.sco_codec), .connectionHandle = offload_config.connection_handle, .connectionHandle = offload_config.connection_handle, .nrec = offload_config.is_nrec, .nrec = offload_config.is_nrec, .controllerCodec = offload_config.is_controller_codec, .controllerCodec = offload_config.is_controller_codec, Loading Loading @@ -504,7 +510,7 @@ void HfpClientInterface::Offload::CancelStreamingRequest() { } } } } std::unordered_map<int, ::hfp::sco_config> std::unordered_map<tBTA_AG_UUID_CODEC, ::hfp::sco_config> HfpClientInterface::Offload::GetHfpScoConfig() { HfpClientInterface::Offload::GetHfpScoConfig() { return aidl::hfp::HfpTransport::GetHfpScoConfig( return aidl::hfp::HfpTransport::GetHfpScoConfig( aidl::SessionType::HFP_HARDWARE_OFFLOAD_DATAPATH); aidl::SessionType::HFP_HARDWARE_OFFLOAD_DATAPATH); Loading Loading
system/audio_hal_interface/aidl/hfp_client_interface_aidl.cc +2 −2 Original line number Original line Diff line number Diff line Loading @@ -64,8 +64,8 @@ tBTA_AG_SCB* get_hfp_active_device_callback() { return cb; return cb; } } std::unordered_map<int, ::hfp::sco_config> HfpTransport::GetHfpScoConfig( std::unordered_map<tBTA_AG_UUID_CODEC, ::hfp::sco_config> SessionType sessionType) { HfpTransport::GetHfpScoConfig(SessionType sessionType) { auto providerInfo = auto providerInfo = ::bluetooth::audio::aidl::ProviderInfo::GetProviderInfo(sessionType); ::bluetooth::audio::aidl::ProviderInfo::GetProviderInfo(sessionType); return providerInfo->GetHfpScoConfig(); return providerInfo->GetHfpScoConfig(); Loading
system/audio_hal_interface/aidl/hfp_client_interface_aidl.h +2 −2 Original line number Original line Diff line number Diff line Loading @@ -72,8 +72,8 @@ class HfpTransport { void LogBytesProcessed(size_t bytes_read); void LogBytesProcessed(size_t bytes_read); static std::unordered_map<int, ::hfp::sco_config> GetHfpScoConfig( static std::unordered_map<tBTA_AG_UUID_CODEC, ::hfp::sco_config> SessionType sessionType); GetHfpScoConfig(SessionType sessionType); private: private: tHFP_CTRL_CMD hfp_pending_cmd_; tHFP_CTRL_CMD hfp_pending_cmd_; Loading
system/audio_hal_interface/aidl/provider_info.cc +7 −4 Original line number Original line Diff line number Diff line Loading @@ -58,20 +58,23 @@ ProviderInfo::ProviderInfo(SessionType sessionType, : codecInfos(std::move(codecs)) { : codecInfos(std::move(codecs)) { for (auto codecInfo : codecInfos) { for (auto codecInfo : codecInfos) { if (codecInfo.id == CodecId::Core::CVSD) { if (codecInfo.id == CodecId::Core::CVSD) { hfpScoConfigMap[UUID_CODEC_CVSD] = recordHfpCodecInfo(codecInfo); hfpScoConfigMap[tBTA_AG_UUID_CODEC::UUID_CODEC_CVSD] = recordHfpCodecInfo(codecInfo); } else if (codecInfo.id == CodecId::Core::MSBC) { } else if (codecInfo.id == CodecId::Core::MSBC) { hfpScoConfigMap[UUID_CODEC_MSBC] = recordHfpCodecInfo(codecInfo); hfpScoConfigMap[tBTA_AG_UUID_CODEC::UUID_CODEC_MSBC] = recordHfpCodecInfo(codecInfo); } else if (codecInfo.id == CodecId::Core::LC3) { } else if (codecInfo.id == CodecId::Core::LC3) { if (sessionType == SessionType::HFP_HARDWARE_OFFLOAD_DATAPATH || if (sessionType == SessionType::HFP_HARDWARE_OFFLOAD_DATAPATH || sessionType == SessionType::HFP_SOFTWARE_ENCODING_DATAPATH || sessionType == SessionType::HFP_SOFTWARE_ENCODING_DATAPATH || sessionType == SessionType::HFP_SOFTWARE_DECODING_DATAPATH) { sessionType == SessionType::HFP_SOFTWARE_DECODING_DATAPATH) { hfpScoConfigMap[UUID_CODEC_LC3] = recordHfpCodecInfo(codecInfo); hfpScoConfigMap[tBTA_AG_UUID_CODEC::UUID_CODEC_LC3] = recordHfpCodecInfo(codecInfo); } } } } } } } } const std::unordered_map<int, ::hfp::sco_config>& const std::unordered_map<tBTA_AG_UUID_CODEC, ::hfp::sco_config>& ProviderInfo::GetHfpScoConfig() { ProviderInfo::GetHfpScoConfig() { return hfpScoConfigMap; return hfpScoConfigMap; } } Loading
system/audio_hal_interface/aidl/provider_info.h +4 −2 Original line number Original line Diff line number Diff line Loading @@ -36,11 +36,13 @@ class ProviderInfo { ~ProviderInfo() = default; ~ProviderInfo() = default; const std::unordered_map<int, ::hfp::sco_config>& GetHfpScoConfig(); const std::unordered_map<tBTA_AG_UUID_CODEC, ::hfp::sco_config>& GetHfpScoConfig(); private: private: const std::vector<CodecInfo> codecInfos; const std::vector<CodecInfo> codecInfos; std::unordered_map<int /* HFP CODEC in UUID_CODEC_XXX */, ::hfp::sco_config> std::unordered_map<tBTA_AG_UUID_CODEC /* HFP CODEC in UUID_CODEC_XXX */, ::hfp::sco_config> hfpScoConfigMap; hfpScoConfigMap; }; }; } // namespace bluetooth::audio::aidl } // namespace bluetooth::audio::aidl
system/audio_hal_interface/hfp_client_interface.cc +15 −9 Original line number Original line Diff line number Diff line Loading @@ -77,19 +77,25 @@ HfpConfiguration get_default_hfp_configuration() { return hfp_config; return hfp_config; } } CodecId get_codec_id_by_peer_codec(tBTA_AG_PEER_CODEC sco_codec) { CodecId sco_codec_to_hal_codec(tBTA_AG_UUID_CODEC sco_codec) { if (sco_codec & BTM_SCO_CODEC_LC3) return CodecId::Core::LC3; switch (sco_codec) { if (sco_codec & BTM_SCO_CODEC_MSBC) return CodecId::Core::MSBC; case tBTA_AG_UUID_CODEC::UUID_CODEC_LC3: if (sco_codec & BTM_SCO_CODEC_CVSD) return CodecId::Core::CVSD; return CodecId::Core::LC3; // Unknown vendor codec otherwise case tBTA_AG_UUID_CODEC::UUID_CODEC_MSBC: CodecId codec_id = CodecId::Vendor(); return CodecId::Core::MSBC; return codec_id; case tBTA_AG_UUID_CODEC::UUID_CODEC_CVSD: return CodecId::Core::CVSD; default: log::warn("Unknown sco_codec {}, defaulting to vendor codec", bta_ag_uuid_codec_text(sco_codec)); return CodecId::Vendor(); } } } AudioConfiguration offload_config_to_hal_audio_config( AudioConfiguration offload_config_to_hal_audio_config( const ::hfp::offload_config& offload_config) { const ::hfp::offload_config& offload_config) { HfpConfiguration hfp_config{ HfpConfiguration hfp_config{ .codecId = get_codec_id_by_peer_codec(offload_config.sco_codec), .codecId = sco_codec_to_hal_codec(offload_config.sco_codec), .connectionHandle = offload_config.connection_handle, .connectionHandle = offload_config.connection_handle, .nrec = offload_config.is_nrec, .nrec = offload_config.is_nrec, .controllerCodec = offload_config.is_controller_codec, .controllerCodec = offload_config.is_controller_codec, Loading Loading @@ -504,7 +510,7 @@ void HfpClientInterface::Offload::CancelStreamingRequest() { } } } } std::unordered_map<int, ::hfp::sco_config> std::unordered_map<tBTA_AG_UUID_CODEC, ::hfp::sco_config> HfpClientInterface::Offload::GetHfpScoConfig() { HfpClientInterface::Offload::GetHfpScoConfig() { return aidl::hfp::HfpTransport::GetHfpScoConfig( return aidl::hfp::HfpTransport::GetHfpScoConfig( aidl::SessionType::HFP_HARDWARE_OFFLOAD_DATAPATH); aidl::SessionType::HFP_HARDWARE_OFFLOAD_DATAPATH); Loading