summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jeongik Cha <jeongik@google.com> 2022-09-26 23:08:56 +0900
committer Jeongik Cha <jeongik@google.com> 2022-10-14 16:33:02 +0900
commite214e64bbbb6cbaef8b07888e48a995f9f4cd564 (patch)
treecb32b89d047bf2b8c47648e06aaa14be345f103d
parent39983c6e5d8095d66853984a4c524b80a1dbc0c4 (diff)
Use hardcoded value for HapticScale
To remove dependencies from vendor to platform, use hardcoded value instead of refering IExternalVibratorService. But the equality of value is checked static_assert Test: m Bug: 248993206 Change-Id: I8a8bcc093d095b26294b68d29d44289d4b5d728d
-rw-r--r--libs/vibrator/Android.bp60
-rw-r--r--libs/vibrator/ExternalVibration.cpp11
-rw-r--r--libs/vibrator/include/vibrator/ExternalVibrationUtils.h16
3 files changed, 63 insertions, 24 deletions
diff --git a/libs/vibrator/Android.bp b/libs/vibrator/Android.bp
index 83c250a24f..2af51a722c 100644
--- a/libs/vibrator/Android.bp
+++ b/libs/vibrator/Android.bp
@@ -21,10 +21,30 @@ package {
default_applicable_licenses: ["frameworks_native_license"],
}
+cc_defaults {
+ name: "libvibrator_defaults",
+
+ cflags: [
+ "-Wall",
+ "-Werror",
+ "-Wno-missing-field-initializers",
+ "-Wno-unused-variable",
+ "-Wno-unused-parameter",
+ ],
+
+ export_include_dirs: ["include"],
+
+ host_supported: true,
+ target: {
+ darwin: {
+ enabled: false,
+ },
+ },
+}
+
cc_library {
name: "libvibrator",
- vendor_available: true,
- double_loadable: true,
+ defaults: ["libvibrator_defaults"],
shared_libs: [
"libbinder",
@@ -32,6 +52,10 @@ cc_library {
"libutils",
],
+ whole_static_libs: [
+ "libvibratorutils",
+ ],
+
header_libs: [
"libaudio_system_headers",
],
@@ -44,23 +68,27 @@ cc_library {
srcs: [
":libvibrator_aidl",
- "*.cpp",
+ "ExternalVibration.cpp",
],
+}
- cflags: [
- "-Wall",
- "-Werror",
- "-Wno-missing-field-initializers",
- "-Wno-unused-variable",
- "-Wno-unused-parameter",
+cc_library {
+ name: "libvibratorutils",
+ defaults: ["libvibrator_defaults"],
+
+ vendor_available: true,
+ double_loadable: true,
+
+ shared_libs: [
+ "libutils",
],
- export_include_dirs: ["include"],
+ srcs: [
+ "ExternalVibrationUtils.cpp",
+ ],
- host_supported: true,
- target: {
- darwin: {
- enabled: false,
- },
- },
+ visibility: [
+ "//frameworks/native/libs/vibrator",
+ "//frameworks/av/media/libeffects/hapticgenerator",
+ ],
}
diff --git a/libs/vibrator/ExternalVibration.cpp b/libs/vibrator/ExternalVibration.cpp
index f6fc19e05d..ec906458a3 100644
--- a/libs/vibrator/ExternalVibration.cpp
+++ b/libs/vibrator/ExternalVibration.cpp
@@ -15,11 +15,22 @@
*/
#include <vibrator/ExternalVibration.h>
+#include <vibrator/ExternalVibrationUtils.h>
+#include <android/os/IExternalVibratorService.h>
#include <binder/Parcel.h>
#include <log/log.h>
#include <utils/Errors.h>
+
+// To guarantee if HapticScale enum has the same value as IExternalVibratorService
+static_assert(static_cast<int>(android::os::HapticScale::MUTE) == static_cast<int>(android::os::IExternalVibratorService::SCALE_MUTE));
+static_assert(static_cast<int>(android::os::HapticScale::VERY_LOW) == static_cast<int>(android::os::IExternalVibratorService::SCALE_VERY_LOW));
+static_assert(static_cast<int>(android::os::HapticScale::LOW) == static_cast<int>(android::os::IExternalVibratorService::SCALE_LOW));
+static_assert(static_cast<int>(android::os::HapticScale::NONE) == static_cast<int>(android::os::IExternalVibratorService::SCALE_NONE));
+static_assert(static_cast<int>(android::os::HapticScale::HIGH) == static_cast<int>(android::os::IExternalVibratorService::SCALE_HIGH));
+static_assert(static_cast<int>(android::os::HapticScale::VERY_HIGH) == static_cast<int>(android::os::IExternalVibratorService::SCALE_VERY_HIGH));
+
void writeAudioAttributes(const audio_attributes_t& attrs, android::Parcel* out) {
out->writeInt32(attrs.usage);
out->writeInt32(attrs.content_type);
diff --git a/libs/vibrator/include/vibrator/ExternalVibrationUtils.h b/libs/vibrator/include/vibrator/ExternalVibrationUtils.h
index 84357fcb35..c588bfdedd 100644
--- a/libs/vibrator/include/vibrator/ExternalVibrationUtils.h
+++ b/libs/vibrator/include/vibrator/ExternalVibrationUtils.h
@@ -17,17 +17,17 @@
#ifndef ANDROID_EXTERNAL_VIBRATION_UTILS_H
#define ANDROID_EXTERNAL_VIBRATION_UTILS_H
-#include <android/os/IExternalVibratorService.h>
-
namespace android::os {
+// Copied from frameworks/base/core/java/android/os/IExternalVibratorService.aidl
+// The values are checked in ExternalVibration.cpp
enum class HapticScale {
- MUTE = IExternalVibratorService::SCALE_MUTE,
- VERY_LOW = IExternalVibratorService::SCALE_VERY_LOW,
- LOW = IExternalVibratorService::SCALE_LOW,
- NONE = IExternalVibratorService::SCALE_NONE,
- HIGH = IExternalVibratorService::SCALE_HIGH,
- VERY_HIGH = IExternalVibratorService::SCALE_VERY_HIGH,
+ MUTE = -100,
+ VERY_LOW = -2,
+ LOW = -1,
+ NONE = 0,
+ HIGH = 1,
+ VERY_HIGH = 2,
};
bool isValidHapticScale(HapticScale scale);