Loading bluetooth/audio/aidl/default/BluetoothAudioProviderFactory.cpp +17 −2 Original line number Diff line number Diff line Loading @@ -39,6 +39,9 @@ namespace audio { static const std::string kLeAudioOffloadProviderName = "LE_AUDIO_OFFLOAD_HARDWARE_OFFLOAD_PROVIDER"; static const std::string kHfpOffloadProviderName = "HFP_OFFLOAD_HARDWARE_OFFLOAD_PROVIDER"; BluetoothAudioProviderFactory::BluetoothAudioProviderFactory() {} ndk::ScopedAStatus BluetoothAudioProviderFactory::openProvider( Loading Loading @@ -170,6 +173,7 @@ ndk::ScopedAStatus BluetoothAudioProviderFactory::getProviderInfo( provider_info.name = a2dp_offload_codec_factory_.name; for (auto codec : a2dp_offload_codec_factory_.codecs) provider_info.codecInfos.push_back(codec->info); return ndk::ScopedAStatus::ok(); } if (session_type == Loading @@ -184,13 +188,24 @@ ndk::ScopedAStatus BluetoothAudioProviderFactory::getProviderInfo( auto& provider_info = _aidl_return->emplace(); provider_info.name = kLeAudioOffloadProviderName; provider_info.codecInfos = db_codec_info; *_aidl_return = provider_info; return ndk::ScopedAStatus::ok(); } } if (session_type == SessionType::HFP_HARDWARE_OFFLOAD_DATAPATH) { std::vector<CodecInfo> db_codec_info = BluetoothAudioCodecs::GetHfpOffloadCodecInfo(); if (!db_codec_info.empty()) { auto& provider_info = _aidl_return->emplace(); provider_info.name = kHfpOffloadProviderName; provider_info.codecInfos = db_codec_info; return ndk::ScopedAStatus::ok(); } } // Unsupported for other sessions return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); } } // namespace audio } // namespace bluetooth Loading bluetooth/audio/aidl/vts/VtsHalBluetoothAudioTargetTest.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -1944,6 +1944,7 @@ class BluetoothAudioProviderHfpHardwareAidl BluetoothAudioHalVersion::VERSION_AIDL_V4) { GTEST_SKIP(); } GetProviderInfoHelper(SessionType::HFP_HARDWARE_OFFLOAD_DATAPATH); OpenProviderHelper(SessionType::HFP_HARDWARE_OFFLOAD_DATAPATH); // Can open or empty capability ASSERT_TRUE(temp_provider_capabilities_.empty() || Loading bluetooth/audio/utils/Android.bp +25 −1 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ cc_library_shared { "aidl_session/BluetoothAudioSession.cpp", "aidl_session/HidlToAidlMiddleware.cpp", "aidl_session/BluetoothLeAudioCodecsProvider.cpp", "aidl_session/BluetoothHfpCodecsProvider.cpp", "aidl_session/BluetoothLeAudioAseConfigurationSettingProvider.cpp", ], export_include_dirs: ["aidl_session/"], Loading @@ -68,9 +69,13 @@ cc_library_shared { static_libs: [ "btaudiohal_flags_c_lib", ], generated_sources: ["le_audio_codec_capabilities"], generated_sources: [ "le_audio_codec_capabilities", "hfp_codec_capabilities", ], generated_headers: [ "le_audio_codec_capabilities", "hfp_codec_capabilities", "AIDLLeAudioSetConfigSchemas_h", ], required: [ Loading @@ -78,9 +83,12 @@ cc_library_shared { "aidl_audio_set_configurations_json", "aidl_audio_set_scenarios_bfbs", "aidl_audio_set_scenarios_json", "hfp_codec_capabilities_xml", ], } // TODO: Write test for BluetoothHfpCodecsProvider.cpp cc_test { name: "BluetoothLeAudioCodecsProviderTest", srcs: [ Loading Loading @@ -114,6 +122,14 @@ xsd_config { root_elements: ["leAudioOffloadSetting"], } xsd_config { name: "hfp_codec_capabilities", srcs: ["hfp_codec_capabilities/hfp_codec_capabilities.xsd"], package_name: "aidl.android.hardware.bluetooth.audio.hfp.setting", api_dir: "hfp_codec_capabilities/schema", root_elements: ["hfpOffloadSetting"], } genrule { name: "AIDLLeAudioSetConfigSchemas_h", tools: [ Loading Loading @@ -176,6 +192,14 @@ prebuilt_etc { vendor: true, } prebuilt_etc { name: "hfp_codec_capabilities_xml", src: "hfp_codec_capabilities/hfp_codec_capabilities.xml", filename: "hfp_codec_capabilities.xml", sub_dir: "aidl/hfp", vendor: true, } prebuilt_etc { name: "aidl_audio_set_configurations_bfbs", src: ":AIDLLeAudioSetConfigsSchema_bfbs", Loading bluetooth/audio/utils/aidl_session/BluetoothAudioCodecs.cpp +13 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ #include <aidl/android/hardware/bluetooth/audio/SbcChannelMode.h> #include <android-base/logging.h> #include "BluetoothHfpCodecsProvider.h" #include "BluetoothLeAudioAseConfigurationSettingProvider.h" #include "BluetoothLeAudioCodecsProvider.h" Loading Loading @@ -100,6 +101,7 @@ const std::vector<CodecCapabilities> kDefaultOffloadA2dpCodecCapabilities = { std::vector<LeAudioCodecCapabilitiesSetting> kDefaultOffloadLeAudioCapabilities; std::unordered_map<SessionType, std::vector<CodecInfo>> kDefaultOffloadLeAudioCodecInfoMap; std::vector<CodecInfo> kDefaultOffloadHfpCodecInfo; template <class T> bool BluetoothAudioCodecs::ContainedInVector( Loading Loading @@ -439,6 +441,17 @@ std::vector<CodecInfo> BluetoothAudioCodecs::GetLeAudioOffloadCodecInfo( return codec_info_map_iter->second; } std::vector<CodecInfo> BluetoothAudioCodecs::GetHfpOffloadCodecInfo() { if (kDefaultOffloadHfpCodecInfo.empty()) { auto hfp_offload_setting = BluetoothHfpCodecsProvider::ParseFromHfpOffloadSettingFile(); // Load file into list kDefaultOffloadHfpCodecInfo = BluetoothHfpCodecsProvider::GetHfpAudioCodecInfo(hfp_offload_setting); } return kDefaultOffloadHfpCodecInfo; } std::vector<LeAudioAseConfigurationSetting> BluetoothAudioCodecs::GetLeAudioAseConfigurationSettings() { return AudioSetConfigurationProviderJson:: Loading bluetooth/audio/utils/aidl_session/BluetoothAudioCodecs.h +2 −0 Original line number Diff line number Diff line Loading @@ -57,6 +57,8 @@ class BluetoothAudioCodecs { static std::vector<LeAudioAseConfigurationSetting> GetLeAudioAseConfigurationSettings(); static std::vector<CodecInfo> GetHfpOffloadCodecInfo(); private: template <typename T> struct identity { Loading Loading
bluetooth/audio/aidl/default/BluetoothAudioProviderFactory.cpp +17 −2 Original line number Diff line number Diff line Loading @@ -39,6 +39,9 @@ namespace audio { static const std::string kLeAudioOffloadProviderName = "LE_AUDIO_OFFLOAD_HARDWARE_OFFLOAD_PROVIDER"; static const std::string kHfpOffloadProviderName = "HFP_OFFLOAD_HARDWARE_OFFLOAD_PROVIDER"; BluetoothAudioProviderFactory::BluetoothAudioProviderFactory() {} ndk::ScopedAStatus BluetoothAudioProviderFactory::openProvider( Loading Loading @@ -170,6 +173,7 @@ ndk::ScopedAStatus BluetoothAudioProviderFactory::getProviderInfo( provider_info.name = a2dp_offload_codec_factory_.name; for (auto codec : a2dp_offload_codec_factory_.codecs) provider_info.codecInfos.push_back(codec->info); return ndk::ScopedAStatus::ok(); } if (session_type == Loading @@ -184,13 +188,24 @@ ndk::ScopedAStatus BluetoothAudioProviderFactory::getProviderInfo( auto& provider_info = _aidl_return->emplace(); provider_info.name = kLeAudioOffloadProviderName; provider_info.codecInfos = db_codec_info; *_aidl_return = provider_info; return ndk::ScopedAStatus::ok(); } } if (session_type == SessionType::HFP_HARDWARE_OFFLOAD_DATAPATH) { std::vector<CodecInfo> db_codec_info = BluetoothAudioCodecs::GetHfpOffloadCodecInfo(); if (!db_codec_info.empty()) { auto& provider_info = _aidl_return->emplace(); provider_info.name = kHfpOffloadProviderName; provider_info.codecInfos = db_codec_info; return ndk::ScopedAStatus::ok(); } } // Unsupported for other sessions return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); } } // namespace audio } // namespace bluetooth Loading
bluetooth/audio/aidl/vts/VtsHalBluetoothAudioTargetTest.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -1944,6 +1944,7 @@ class BluetoothAudioProviderHfpHardwareAidl BluetoothAudioHalVersion::VERSION_AIDL_V4) { GTEST_SKIP(); } GetProviderInfoHelper(SessionType::HFP_HARDWARE_OFFLOAD_DATAPATH); OpenProviderHelper(SessionType::HFP_HARDWARE_OFFLOAD_DATAPATH); // Can open or empty capability ASSERT_TRUE(temp_provider_capabilities_.empty() || Loading
bluetooth/audio/utils/Android.bp +25 −1 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ cc_library_shared { "aidl_session/BluetoothAudioSession.cpp", "aidl_session/HidlToAidlMiddleware.cpp", "aidl_session/BluetoothLeAudioCodecsProvider.cpp", "aidl_session/BluetoothHfpCodecsProvider.cpp", "aidl_session/BluetoothLeAudioAseConfigurationSettingProvider.cpp", ], export_include_dirs: ["aidl_session/"], Loading @@ -68,9 +69,13 @@ cc_library_shared { static_libs: [ "btaudiohal_flags_c_lib", ], generated_sources: ["le_audio_codec_capabilities"], generated_sources: [ "le_audio_codec_capabilities", "hfp_codec_capabilities", ], generated_headers: [ "le_audio_codec_capabilities", "hfp_codec_capabilities", "AIDLLeAudioSetConfigSchemas_h", ], required: [ Loading @@ -78,9 +83,12 @@ cc_library_shared { "aidl_audio_set_configurations_json", "aidl_audio_set_scenarios_bfbs", "aidl_audio_set_scenarios_json", "hfp_codec_capabilities_xml", ], } // TODO: Write test for BluetoothHfpCodecsProvider.cpp cc_test { name: "BluetoothLeAudioCodecsProviderTest", srcs: [ Loading Loading @@ -114,6 +122,14 @@ xsd_config { root_elements: ["leAudioOffloadSetting"], } xsd_config { name: "hfp_codec_capabilities", srcs: ["hfp_codec_capabilities/hfp_codec_capabilities.xsd"], package_name: "aidl.android.hardware.bluetooth.audio.hfp.setting", api_dir: "hfp_codec_capabilities/schema", root_elements: ["hfpOffloadSetting"], } genrule { name: "AIDLLeAudioSetConfigSchemas_h", tools: [ Loading Loading @@ -176,6 +192,14 @@ prebuilt_etc { vendor: true, } prebuilt_etc { name: "hfp_codec_capabilities_xml", src: "hfp_codec_capabilities/hfp_codec_capabilities.xml", filename: "hfp_codec_capabilities.xml", sub_dir: "aidl/hfp", vendor: true, } prebuilt_etc { name: "aidl_audio_set_configurations_bfbs", src: ":AIDLLeAudioSetConfigsSchema_bfbs", Loading
bluetooth/audio/utils/aidl_session/BluetoothAudioCodecs.cpp +13 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ #include <aidl/android/hardware/bluetooth/audio/SbcChannelMode.h> #include <android-base/logging.h> #include "BluetoothHfpCodecsProvider.h" #include "BluetoothLeAudioAseConfigurationSettingProvider.h" #include "BluetoothLeAudioCodecsProvider.h" Loading Loading @@ -100,6 +101,7 @@ const std::vector<CodecCapabilities> kDefaultOffloadA2dpCodecCapabilities = { std::vector<LeAudioCodecCapabilitiesSetting> kDefaultOffloadLeAudioCapabilities; std::unordered_map<SessionType, std::vector<CodecInfo>> kDefaultOffloadLeAudioCodecInfoMap; std::vector<CodecInfo> kDefaultOffloadHfpCodecInfo; template <class T> bool BluetoothAudioCodecs::ContainedInVector( Loading Loading @@ -439,6 +441,17 @@ std::vector<CodecInfo> BluetoothAudioCodecs::GetLeAudioOffloadCodecInfo( return codec_info_map_iter->second; } std::vector<CodecInfo> BluetoothAudioCodecs::GetHfpOffloadCodecInfo() { if (kDefaultOffloadHfpCodecInfo.empty()) { auto hfp_offload_setting = BluetoothHfpCodecsProvider::ParseFromHfpOffloadSettingFile(); // Load file into list kDefaultOffloadHfpCodecInfo = BluetoothHfpCodecsProvider::GetHfpAudioCodecInfo(hfp_offload_setting); } return kDefaultOffloadHfpCodecInfo; } std::vector<LeAudioAseConfigurationSetting> BluetoothAudioCodecs::GetLeAudioAseConfigurationSettings() { return AudioSetConfigurationProviderJson:: Loading
bluetooth/audio/utils/aidl_session/BluetoothAudioCodecs.h +2 −0 Original line number Diff line number Diff line Loading @@ -57,6 +57,8 @@ class BluetoothAudioCodecs { static std::vector<LeAudioAseConfigurationSetting> GetLeAudioAseConfigurationSettings(); static std::vector<CodecInfo> GetHfpOffloadCodecInfo(); private: template <typename T> struct identity { Loading