aidl: vibrator: Don't allow intensity 0
authorTim Zimmermann <tim@linux4.de>
Fri, 15 Apr 2022 08:04:25 +0000 (10:04 +0200)
committerTim Zimmermann <tim@linux4.de>
Fri, 15 Apr 2022 08:04:25 +0000 (10:04 +0200)
* Even if amplitude is > 0 resulting intensity might be 0 sometimes
* New devices just return EINVAL in kernel and ignore it, but on older
  ones this may result in very weak vibration

Change-Id: I5d290d60d8414ca747dce4af847f190e3caedbe0

aidl/vibrator/Vibrator.cpp

index 95d5aec6b8fcdc818a70ba74510de8e3a08c3070..0f64702f88ec69de711380a415d1c789bb54caae 100644 (file)
@@ -162,6 +162,11 @@ ndk::ScopedAStatus Vibrator::setAmplitude(float amplitude) {
     if (intensity > INTENSITY_MAX) {
         intensity = INTENSITY_MAX;
     }
+
+    if (intensity == 0) {
+        return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT);
+    }
+
     LOG(DEBUG) << "Setting intensity: " << intensity;
 
     if (mHasTimedOutIntensity) {