diff options
| author | 2018-12-14 12:06:10 +0900 | |
|---|---|---|
| committer | 2018-12-27 19:14:30 +0900 | |
| commit | a456f087a201670c2936cd2d2d559367175a3189 (patch) | |
| tree | 734b1b9b50aadcc69a09a5ea1f0e1b770b5f0acb | |
| parent | ba281ccf76984b090a71d482c8b2762d514cd4b9 (diff) | |
vibrator: Add Vibrator HAL 1.3
Bug: 117835666
Test: Sanity Check Via 'cmd vibrator'
Change-Id: I6cd13429895e1d8b26d6f615a359561986b6b871
Signed-off-by: Harpreet "Eli" Sangha <eliptus@google.com>
| -rw-r--r-- | Android.bp | 1 | ||||
| -rw-r--r-- | services/core/java/com/android/server/VibratorService.java | 2 | ||||
| -rw-r--r-- | services/core/jni/Android.bp | 1 | ||||
| -rw-r--r-- | services/core/jni/com_android_server_VibratorService.cpp | 19 |
4 files changed, 22 insertions, 1 deletions
diff --git a/Android.bp b/Android.bp index 4211162d523f..e113c3e0f972 100644 --- a/Android.bp +++ b/Android.bp @@ -735,6 +735,7 @@ java_defaults { "android.hardware.vibrator-V1.0-java", "android.hardware.vibrator-V1.1-java", "android.hardware.vibrator-V1.2-java", + "android.hardware.vibrator-V1.3-java", "android.hardware.wifi-V1.0-java-constants", "android.hardware.radio-V1.0-java", "android.hardware.radio-V1.3-java", diff --git a/services/core/java/com/android/server/VibratorService.java b/services/core/java/com/android/server/VibratorService.java index 9f353a80a5be..5d4c5c359a2b 100644 --- a/services/core/java/com/android/server/VibratorService.java +++ b/services/core/java/com/android/server/VibratorService.java @@ -149,6 +149,8 @@ public class VibratorService extends IVibratorService.Stub native static boolean vibratorSupportsAmplitudeControl(); native static void vibratorSetAmplitude(int amplitude); native static long vibratorPerformEffect(long effect, long strength); + static native boolean vibratorSupportsExternalControl(); + static native void vibratorSetExternalControl(boolean enabled); private final IUidObserver mUidObserver = new IUidObserver.Stub() { @Override public void onUidStateChanged(int uid, int procState, long procStateSeq) { diff --git a/services/core/jni/Android.bp b/services/core/jni/Android.bp index 6d7219173b32..b39e76714a0d 100644 --- a/services/core/jni/Android.bp +++ b/services/core/jni/Android.bp @@ -118,6 +118,7 @@ cc_defaults { "android.hardware.vibrator@1.0", "android.hardware.vibrator@1.1", "android.hardware.vibrator@1.2", + "android.hardware.vibrator@1.3", "android.hardware.vr@1.0", "android.frameworks.schedulerservice@1.0", "android.frameworks.sensorservice@1.0", diff --git a/services/core/jni/com_android_server_VibratorService.cpp b/services/core/jni/com_android_server_VibratorService.cpp index defcfd9a3370..63dca62104a1 100644 --- a/services/core/jni/com_android_server_VibratorService.cpp +++ b/services/core/jni/com_android_server_VibratorService.cpp @@ -22,6 +22,7 @@ #include <android/hardware/vibrator/1.1/types.h> #include <android/hardware/vibrator/1.2/IVibrator.h> #include <android/hardware/vibrator/1.2/types.h> +#include <android/hardware/vibrator/1.3/IVibrator.h> #include "jni.h" #include <nativehelper/JNIHelp.h> @@ -42,6 +43,7 @@ using android::hardware::vibrator::V1_1::Effect_1_1; namespace V1_0 = android::hardware::vibrator::V1_0; namespace V1_1 = android::hardware::vibrator::V1_1; namespace V1_2 = android::hardware::vibrator::V1_2; +namespace V1_3 = android::hardware::vibrator::V1_3; namespace android { @@ -136,6 +138,19 @@ static void vibratorSetAmplitude(JNIEnv*, jobject, jint amplitude) { } } +static jboolean vibratorSupportsExternalControl(JNIEnv*, jobject) { + return halCall(&V1_3::IVibrator::supportsExternalControl).withDefault(false); +} + +static void vibratorSetExternalControl(JNIEnv*, jobject, jboolean enabled) { + Status status = halCall(&V1_3::IVibrator::setExternalControl, static_cast<uint32_t>(enabled)) + .withDefault(Status::UNKNOWN_ERROR); + if (status != Status::OK) { + ALOGE("Failed to set vibrator external control (%" PRIu32 ").", + static_cast<uint32_t>(status)); + } +} + static jlong vibratorPerformEffect(JNIEnv*, jobject, jlong effect, jint strength) { Status status; uint32_t lengthMs; @@ -187,7 +202,9 @@ static const JNINativeMethod method_table[] = { { "vibratorOff", "()V", (void*)vibratorOff }, { "vibratorSupportsAmplitudeControl", "()Z", (void*)vibratorSupportsAmplitudeControl}, { "vibratorSetAmplitude", "(I)V", (void*)vibratorSetAmplitude}, - { "vibratorPerformEffect", "(JJ)J", (void*)vibratorPerformEffect} + { "vibratorPerformEffect", "(JJ)J", (void*)vibratorPerformEffect}, + { "vibratorSupportsExternalControl", "()Z", (void*)vibratorSupportsExternalControl}, + { "vibratorSetExternalControl", "(Z)V", (void*)vibratorSetExternalControl}, }; int register_android_server_VibratorService(JNIEnv *env) |