From 2fdc111c2511eeb4e02862cc644e9cf4d55629c2 Mon Sep 17 00:00:00 2001 From: Michael Bestas Date: Wed, 4 Jan 2023 09:09:36 +0200 Subject: [PATCH] chiron: Switch to OSS libnotifyaudiohal Change-Id: Id392223e539716522d1c54efecae38ef72e38a1d --- device.mk | 3 +- sepolicy/vendor/audioserver.te | 1 - sepolicy/vendor/hal_sensors_default.te | 4 +-- sepolicy/vendor/system_server.te | 1 - ultrasound/Android.bp | 13 ++++++++ ultrasound/libnotifyaudiohal.cpp | 42 ++++++++++++++++++++++++++ 6 files changed, 58 insertions(+), 6 deletions(-) delete mode 100644 sepolicy/vendor/audioserver.te create mode 100644 ultrasound/Android.bp create mode 100644 ultrasound/libnotifyaudiohal.cpp diff --git a/device.mk b/device.mk index 8750639..a5760d8 100644 --- a/device.mk +++ b/device.mk @@ -331,7 +331,8 @@ PRODUCT_COPY_FILES += \ # Sensors PRODUCT_PACKAGES += \ android.hardware.sensors@1.0-impl:64 \ - android.hardware.sensors@1.0-service + android.hardware.sensors@1.0-service \ + libnotifyaudiohal:64 # Sdcard support PRODUCT_CHARACTERISTICS := nosdcard diff --git a/sepolicy/vendor/audioserver.te b/sepolicy/vendor/audioserver.te deleted file mode 100644 index 777af94..0000000 --- a/sepolicy/vendor/audioserver.te +++ /dev/null @@ -1 +0,0 @@ -allow audioserver hal_sensors_default:binder call; diff --git a/sepolicy/vendor/hal_sensors_default.te b/sepolicy/vendor/hal_sensors_default.te index bf2d27f..282a346 100644 --- a/sepolicy/vendor/hal_sensors_default.te +++ b/sepolicy/vendor/hal_sensors_default.te @@ -1,5 +1,3 @@ -allow hal_sensors_default audioserver_service:service_manager find; -allow hal_sensors_default audioserver:binder { call transfer }; allow hal_sensors_default sound_device:chr_file { ioctl read open }; -binder_use(hal_sensors_default) +hal_client_domain(hal_sensors_default, hal_audio) set_prop(hal_sensors_default, vendor_sensors_prop); diff --git a/sepolicy/vendor/system_server.te b/sepolicy/vendor/system_server.te index 0778398..9476da5 100644 --- a/sepolicy/vendor/system_server.te +++ b/sepolicy/vendor/system_server.te @@ -1,3 +1,2 @@ allow system_server fingerprint_sysfs:file rw_file_perms; -allow system_server sound_device:chr_file rw_file_perms; get_prop(system_server, vendor_fp_prop) diff --git a/ultrasound/Android.bp b/ultrasound/Android.bp new file mode 100644 index 0000000..7634d17 --- /dev/null +++ b/ultrasound/Android.bp @@ -0,0 +1,13 @@ +cc_library_shared { + name: "libnotifyaudiohal", + srcs: [ + "libnotifyaudiohal.cpp", + ], + shared_libs: [ + "android.hardware.audio@6.0", + "libhidlbase", + "liblog", + "libutils", + ], + vendor: true, +} diff --git a/ultrasound/libnotifyaudiohal.cpp b/ultrasound/libnotifyaudiohal.cpp new file mode 100644 index 0000000..71127a2 --- /dev/null +++ b/ultrasound/libnotifyaudiohal.cpp @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2023 The LineageOS Project + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#define LOG_TAG "libnotifyaudiohal" + +#include +#include +#include + +using android::sp; +using android::hardware::audio::V6_0::IDevicesFactory; +using android::hardware::audio::V6_0::IPrimaryDevice; +using android::hardware::audio::V6_0::Result; + +void ultrasound_enable(int enable) { + ALOGD("ultrasound_enable: %d", enable); + auto factory = IDevicesFactory::getService(); + factory->openPrimaryDevice([&](Result retval, const sp& result) { + if (retval == Result::OK) { + result->setParameters({} /* context */, + { + {"ultrasound-sensor", std::to_string(enable)}, + }); + } + }); +} + +extern "C" void elliptic_notify_audio_hal(char* param) { + ALOGD("elliptic_notify_audio_hal: %s", param); + if (!strcmp(param, "ultrasound_enable=1")) { + ultrasound_enable(1); + } else if (!strcmp(param, "ultrasound_enable=0")) { + ultrasound_enable(0); + } +} + +extern "C" void elliptic_ultrasound_supported() { + return; +}