Add amplitude control to vibrator HAL

Providing control over the strength of the vibration allows the platform
to provide a richer haptic experience to users. How this amplitude is
modulated is left up to the vibrator implementation.

This also adds an interface to ask the HAL to perform specific haptic
effects. By exposing the intent of the haptic event to the HAL, we can
let device and haptic driver manufacturers implement custom waveforms
that more closely match the desired effect.

Test: Manual testing with Marlin HAL +
      adb shell /data/nativetest/vibrator_hidl_hal_test/vibrator_hidl_hal_test
Change-Id: Icfccb464c6c85adecdf354e2bd4cf422d7d31eb5
diff --git a/vibrator/1.0/default/Vibrator.h b/vibrator/1.0/default/Vibrator.h
index 061b364..bea6ea8 100644
--- a/vibrator/1.0/default/Vibrator.h
+++ b/vibrator/1.0/default/Vibrator.h
@@ -26,23 +26,18 @@
 namespace V1_0 {
 namespace implementation {
 
-using ::android::hardware::vibrator::V1_0::IVibrator;
-using ::android::hardware::vibrator::V1_0::Status;
-using ::android::hardware::Return;
-using ::android::hardware::Void;
-using ::android::hardware::hidl_vec;
-using ::android::hardware::hidl_string;
-using ::android::sp;
-
 struct Vibrator : public IVibrator {
   Vibrator(vibrator_device_t *device);
 
   // Methods from ::android::hardware::vibrator::V1_0::IVibrator follow.
   Return<Status> on(uint32_t timeoutMs)  override;
   Return<Status> off()  override;
+  Return<bool> supportsAmplitudeControl() override;
+  Return<Status> setAmplitude(uint8_t amplitude) override;
+  Return<void> perform(Effect effect, EffectStrength strength, perform_cb _hidl_cb) override;
 
-  private:
-    vibrator_device_t    *mDevice;
+private:
+  vibrator_device_t    *mDevice;
 };
 
 extern "C" IVibrator* HIDL_FETCH_IVibrator(const char* name);