diff --git a/common.mk b/common.mk index 17b8d9d..75f263f 100644 --- a/common.mk +++ b/common.mk @@ -383,6 +383,8 @@ PRODUCT_COPY_FILES += \ # Sensors PRODUCT_PACKAGES += \ android.hardware.sensors-service.samsung-multihal \ + libsensorndkbridge \ + libshim_sensorndkbridge \ sensors.samsung \ PRODUCT_COPY_FILES += \ diff --git a/extract-files.sh b/extract-files.sh index 9d2d5ed..135785e 100755 --- a/extract-files.sh +++ b/extract-files.sh @@ -34,6 +34,10 @@ function blob_fixup() { xxd -p -c0 "${2}" | sed "s/600e40f9820c805224008052e10315aa080040f9e30314aa/600e40f9820c805224008052e10315aa080040f9030080d2/g" | xxd -r -p > "${2}".patched mv "${2}".patched "${2}" ;; + vendor/lib*/libsensorlistener.so) + [ "$2" = "" ] && return 0 + "${PATCHELF}" --add-needed "libshim_sensorndkbridge.so" "${2}" + ;; vendor/lib64/hw/gatekeeper.mdfpp.so|vendor/lib64/libkeymaster_helper.so|vendor/lib64/libskeymaster4device.so) "${PATCHELF}" --replace-needed "libcrypto.so" "libcrypto-v33.so" "${2}" ;; diff --git a/proprietary-files.txt b/proprietary-files.txt index bb37e5c..6ee02ed 100644 --- a/proprietary-files.txt +++ b/proprietary-files.txt @@ -633,7 +633,6 @@ vendor/lib64/libsecnativefeature.so # Sensors vendor/lib/libsensorlistener.so -vendor/lib/libsensorndkbridge.so vendor/lib/libsensorslog.so vendor/lib/libsns_device_mode_stub.so vendor/lib/libsns_fastRPC_util.so @@ -646,7 +645,6 @@ vendor/lib/libssc_default_listener.so vendor/lib/sensors.ssc.so vendor/lib64/libnanopb.so vendor/lib64/libsensorlistener.so -vendor/lib64/libsensorndkbridge.so vendor/lib64/libsensorslog.so vendor/lib64/libsns_device_mode_stub.so vendor/lib64/libsns_fastRPC_util.so diff --git a/shims/libsensorndkbridge/ASensorManager.cpp b/shims/libsensorndkbridge/ASensorManager.cpp new file mode 100644 index 0000000..b90fb31 --- /dev/null +++ b/shims/libsensorndkbridge/ASensorManager.cpp @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2020-2024 The LineageOS Project + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +#define LOG_TAG "libshim_sensorndkbridge" +#include + +using android::Mutex; + +static Mutex gLock; + +extern "C" ALooper* ALooper_forCamera() { + Mutex::Autolock autoLock(gLock); + LOG(VERBOSE) << "ALooper_forCamera"; + return new ALooper; +} + +extern "C" int ALooper_release_forCamera(ALooper* sLooper) { + if (sLooper != nullptr) { + Mutex::Autolock autoLock(gLock); + delete sLooper; + } + + return 0; +} + +extern "C" int ALooper_pollOnce_camera(ALooper* sLooper, int timeoutMillis, int* outFd, + int* outEvents, void** outData) { + int res = sLooper->pollOnce(timeoutMillis, outFd, outEvents, outData); + LOG(VERBOSE) << "ALooper_pollOnce_camera => " << res; + return res; +} diff --git a/shims/libsensorndkbridge/Android.bp b/shims/libsensorndkbridge/Android.bp new file mode 100644 index 0000000..ee69ff5 --- /dev/null +++ b/shims/libsensorndkbridge/Android.bp @@ -0,0 +1,18 @@ +// +// Copyright (C) 2020-2024 The LineageOS Project +// SPDX-License-Identifier: Apache-2.0 +// + +cc_library_shared { + name: "libshim_sensorndkbridge", + srcs: ["ASensorManager.cpp"], + shared_libs: [ + "libbase", + "libsensorndkbridge", + "libutils", + ], + include_dirs: [ + "frameworks/hardware/interfaces/sensorservice/libsensorndkbridge", + ], + vendor: true, +}