Support AIDL Vibrator
co-authored by: SebaUbuntu <barezzisebastiano@gmail.com>
Change-Id: Ifaa0af4cb0fe0dee7d2a9ad4c58a5ede5ce46d59
diff --git a/minuitwrp/Android.bp b/minuitwrp/Android.bp
index 8005e02..7a56103 100644
--- a/minuitwrp/Android.bp
+++ b/minuitwrp/Android.bp
@@ -53,7 +53,8 @@
"libcutils",
"liblog",
"libbase",
- "libsync"
+ "libsync",
+ "libbinder_ndk"
],
static_libs: ["libpixelflinger_twrp"]
}
diff --git a/minuitwrp/events.cpp b/minuitwrp/events.cpp
index 34c01e3..8abf055 100644
--- a/minuitwrp/events.cpp
+++ b/minuitwrp/events.cpp
@@ -32,6 +32,13 @@
#include <android/hardware/vibrator/1.2/IVibrator.h>
#endif
+#ifdef USE_QTI_AIDL_HAPTICS
+#include <aidl/android/hardware/vibrator/IVibrator.h>
+#include <android/binder_manager.h>
+using ::aidl::android::hardware::vibrator::IVibrator;
+static const std::string kVibratorInstance = std::string(IVibrator::descriptor) + "/default";
+#endif
+
#include "common.h"
#include "minuitwrp/minui.h"
@@ -140,6 +147,11 @@
if (vib != nullptr) {
vib->on((uint32_t)timeout_ms);
}
+#elif defined(USE_QTI_AIDL_HAPTICS)
+ std::shared_ptr<IVibrator> vib = IVibrator::fromBinder(ndk::SpAIBinder(AServiceManager_getService(kVibratorInstance.c_str())));
+ if (vib != nullptr) {
+ vib->on((uint32_t)timeout_ms, nullptr);
+ }
#else
if (std::ifstream(LEDS_HAPTICS_ACTIVATE_FILE).good()) {
write_to_file(LEDS_HAPTICS_DURATION_FILE, tout);
diff --git a/minuitwrp/libminuitwrp_defaults.go b/minuitwrp/libminuitwrp_defaults.go
index bcb2e88..92be0a0 100644
--- a/minuitwrp/libminuitwrp_defaults.go
+++ b/minuitwrp/libminuitwrp_defaults.go
@@ -15,6 +15,10 @@
cflags = append(cflags, "-DUSE_QTI_HAPTICS")
}
+ if getMakeVars(ctx, "TW_SUPPORT_INPUT_AIDL_HAPTICS") == "true" {
+ cflags = append(cflags, "-DUSE_QTI_AIDL_HAPTICS")
+ }
+
if getMakeVars(ctx, "TW_TARGET_USES_QCOM_BSP") == "true" {
cflags = append(cflags, "-DMSM_BSP")
}
@@ -245,6 +249,11 @@
sharedLibs = append(sharedLibs, "libhidlbase")
}
+ if getMakeVars(ctx, "TW_SUPPORT_INPUT_AIDL_HAPTICS") == "true" {
+ sharedLibs = append(sharedLibs, "android.hardware.vibrator-ndk_platform")
+ sharedLibs = append(sharedLibs, "android.hardware.vibrator-cpp")
+ }
+
if getMakeVars(ctx, "TW_INCLUDE_JPEG") != "" {
sharedLibs = append(sharedLibs, "libjpeg")
}
diff --git a/prebuilt/Android.mk b/prebuilt/Android.mk
index d3672b6..effa273 100755
--- a/prebuilt/Android.mk
+++ b/prebuilt/Android.mk
@@ -47,6 +47,7 @@
#RELINK_SOURCE_FILES += $(TARGET_OUT_EXECUTABLES)/twrpmtp
RECOVERY_LIBRARY_SOURCE_FILES += $(TARGET_RECOVERY_ROOT_OUT)/system/lib64/android.hardware.fastboot@1.0.so
RECOVERY_LIBRARY_SOURCE_FILES += $(TARGET_RECOVERY_ROOT_OUT)/system/lib64/ld-android.so
+RECOVERY_LIBRARY_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libandroid_runtime_lazy.so
RECOVERY_LIBRARY_SOURCE_FILES += $(TARGET_RECOVERY_ROOT_OUT)/system/lib64/libc.so
RECOVERY_LIBRARY_SOURCE_FILES += $(TARGET_RECOVERY_ROOT_OUT)/system/lib64/libdl.so
RECOVERY_LIBRARY_SOURCE_FILES += $(TARGET_RECOVERY_ROOT_OUT)/system/lib64/libm.so
@@ -70,6 +71,7 @@
RECOVERY_LIBRARY_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/bootstrap/libdl_android.so
RECOVERY_LIBRARY_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libprotobuf-cpp-lite.so
RECOVERY_LIBRARY_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libbinder.so
+RECOVERY_LIBRARY_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libbinder_ndk.so
RECOVERY_LIBRARY_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libchrome.so
RECOVERY_LIBRARY_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libevent.so
RECOVERY_BINARY_SOURCE_FILES += $(TARGET_OUT_EXECUTABLES)/keystore
@@ -191,6 +193,8 @@
RECOVERY_LIBRARY_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/android.hardware.vibrator@1.0.so
RECOVERY_LIBRARY_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/android.hardware.vibrator@1.1.so
RECOVERY_LIBRARY_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/android.hardware.vibrator@1.2.so
+ RECOVERY_LIBRARY_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/android.hardware.vibrator-V1-ndk_platform.so
+ RECOVERY_LIBRARY_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/android.hardware.vibrator-V1-cpp.so
RECOVERY_LIBRARY_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libstatslog.so
RECOVERY_LIBRARY_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libsoft_attestation_cert.so
RECOVERY_LIBRARY_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libxml2.so