mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 16:23:37 +00:00
Merge "CSD: Load the ISoundDoseFactory dynamically" into udc-dev
This commit is contained in:
@@ -1,46 +0,0 @@
|
||||
package {
|
||||
// See: http://go/android-license-faq
|
||||
// A large-scale-change added 'default_applicable_licenses' to import
|
||||
// all of the 'license_kinds' from "hardware_interfaces_license"
|
||||
// to get the below license kinds:
|
||||
// SPDX-license-identifier-Apache-2.0
|
||||
default_applicable_licenses: ["hardware_interfaces_license"],
|
||||
}
|
||||
|
||||
cc_defaults {
|
||||
name: "aidlsounddoseservice_defaults",
|
||||
vendor: true,
|
||||
header_libs: [
|
||||
"libsounddoseaidl_headers",
|
||||
],
|
||||
}
|
||||
|
||||
cc_library {
|
||||
name: "libsounddoseserviceexampleimpl",
|
||||
defaults: [
|
||||
"aidlsounddoseservice_defaults",
|
||||
"latest_android_media_audio_common_types_ndk_shared",
|
||||
"latest_android_hardware_audio_core_sounddose_ndk_shared",
|
||||
"latest_android_hardware_audio_sounddose_ndk_shared",
|
||||
],
|
||||
export_include_dirs: ["include"],
|
||||
srcs: [
|
||||
"SoundDoseFactory.cpp",
|
||||
],
|
||||
shared_libs: [
|
||||
"libaudioservicesounddoseimpl",
|
||||
"libbase",
|
||||
"libbinder_ndk",
|
||||
],
|
||||
|
||||
visibility: [
|
||||
"//hardware/interfaces/audio/common/all-versions/default/service",
|
||||
],
|
||||
}
|
||||
|
||||
cc_library_headers {
|
||||
name: "libsounddoseaidl_headers",
|
||||
export_include_dirs: ["include"],
|
||||
vendor_available: true,
|
||||
host_supported: true,
|
||||
}
|
||||
@@ -1,49 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#define LOG_TAG "AHAL_SoundDoseFactory"
|
||||
|
||||
#include "SoundDoseFactory.h"
|
||||
|
||||
#include <android-base/logging.h>
|
||||
#include <core-impl/SoundDose.h>
|
||||
|
||||
namespace aidl::android::hardware::audio::sounddose {
|
||||
|
||||
using ::aidl::android::hardware::audio::core::sounddose::SoundDose;
|
||||
|
||||
ndk::ScopedAStatus SoundDoseFactory::getSoundDose(const std::string& in_module,
|
||||
std::shared_ptr<ISoundDose>* _aidl_return) {
|
||||
auto soundDoseIt = mSoundDoseBinderMap.find(in_module);
|
||||
if (soundDoseIt != mSoundDoseBinderMap.end()) {
|
||||
*_aidl_return = ISoundDose::fromBinder(soundDoseIt->second);
|
||||
|
||||
LOG(DEBUG) << __func__
|
||||
<< ": returning cached instance of ISoundDose: " << _aidl_return->get()
|
||||
<< " for module " << in_module;
|
||||
return ndk::ScopedAStatus::ok();
|
||||
}
|
||||
|
||||
auto soundDose = ndk::SharedRefBase::make<SoundDose>();
|
||||
mSoundDoseBinderMap[in_module] = soundDose->asBinder();
|
||||
*_aidl_return = soundDose;
|
||||
|
||||
LOG(DEBUG) << __func__ << ": returning new instance of ISoundDose: " << _aidl_return->get()
|
||||
<< " for module " << in_module;
|
||||
return ndk::ScopedAStatus::ok();
|
||||
}
|
||||
|
||||
} // namespace aidl::android::hardware::audio::sounddose
|
||||
@@ -1,38 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <aidl/android/hardware/audio/core/sounddose/ISoundDose.h>
|
||||
#include <aidl/android/hardware/audio/sounddose/BnSoundDoseFactory.h>
|
||||
#include <android/binder_interface_utils.h>
|
||||
|
||||
#include <unordered_map>
|
||||
|
||||
namespace aidl::android::hardware::audio::sounddose {
|
||||
|
||||
using ::aidl::android::hardware::audio::core::sounddose::ISoundDose;
|
||||
|
||||
class SoundDoseFactory : public BnSoundDoseFactory {
|
||||
public:
|
||||
ndk::ScopedAStatus getSoundDose(const std::string& module,
|
||||
std::shared_ptr<ISoundDose>* _aidl_return) override;
|
||||
|
||||
private:
|
||||
std::unordered_map<std::string, ndk::SpAIBinder> mSoundDoseBinderMap;
|
||||
};
|
||||
|
||||
} // namespace aidl::android::hardware::audio::sounddose
|
||||
@@ -38,13 +38,11 @@ cc_binary {
|
||||
name: "android.hardware.audio.service",
|
||||
|
||||
init_rc: ["android.hardware.audio.service.rc"],
|
||||
vintf_fragments: ["android.hardware.audio.sounddose-aidl.xml"],
|
||||
relative_install_path: "hw",
|
||||
vendor: true,
|
||||
|
||||
defaults: [
|
||||
"android_hardware_audio_config_defaults",
|
||||
"latest_android_hardware_audio_sounddose_ndk_shared",
|
||||
],
|
||||
|
||||
srcs: ["service.cpp"],
|
||||
@@ -56,7 +54,6 @@ cc_binary {
|
||||
],
|
||||
|
||||
shared_libs: [
|
||||
"//hardware/interfaces/audio/aidl/sounddose/default:libsounddoseserviceexampleimpl",
|
||||
"libcutils",
|
||||
"libbinder",
|
||||
"libbinder_ndk",
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
<manifest version="1.0" type="device">
|
||||
<hal format="aidl">
|
||||
<name>android.hardware.audio.sounddose</name>
|
||||
<version>1</version>
|
||||
<fqname>ISoundDoseFactory/default</fqname>
|
||||
</hal>
|
||||
</manifest>
|
||||
@@ -20,10 +20,6 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include <SoundDoseFactory.h>
|
||||
#include <android-base/logging.h>
|
||||
#include <android/binder_ibinder_platform.h>
|
||||
#include <android/binder_manager.h>
|
||||
#include <android/binder_process.h>
|
||||
#include <binder/ProcessState.h>
|
||||
#include <cutils/properties.h>
|
||||
@@ -37,8 +33,6 @@ using android::OK;
|
||||
|
||||
using InterfacesList = std::vector<std::string>;
|
||||
|
||||
using aidl::android::hardware::audio::sounddose::SoundDoseFactory;
|
||||
|
||||
/** Try to register the provided factories in the provided order.
|
||||
* If any registers successfully, do not register any other and return true.
|
||||
* If all fail, return false.
|
||||
@@ -144,6 +138,10 @@ int main(int /* argc */, char* /* argv */ []) {
|
||||
"android.hardware.bluetooth.audio-impl",
|
||||
"createIBluetoothAudioProviderFactory",
|
||||
},
|
||||
{
|
||||
"android.hardware.audio.sounddose-vendor-impl",
|
||||
"createISoundDoseFactory",
|
||||
},
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
@@ -171,13 +169,5 @@ int main(int /* argc */, char* /* argv */ []) {
|
||||
}
|
||||
}
|
||||
|
||||
// Register ISoundDoseFactory interface as a workaround for using the audio AIDL HAL
|
||||
auto soundDoseDefault = ndk::SharedRefBase::make<SoundDoseFactory>();
|
||||
const std::string soundDoseDefaultName =
|
||||
std::string() + SoundDoseFactory::descriptor + "/default";
|
||||
binder_status_t status = AServiceManager_addService(soundDoseDefault->asBinder().get(),
|
||||
soundDoseDefaultName.c_str());
|
||||
CHECK_EQ(STATUS_OK, status);
|
||||
|
||||
joinRpcThreadpool();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user