From e214e64bbbb6cbaef8b07888e48a995f9f4cd564 Mon Sep 17 00:00:00 2001 From: Jeongik Cha Date: Mon, 26 Sep 2022 23:08:56 +0900 Subject: 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 --- libs/vibrator/Android.bp | 60 ++++++++++++++++------ libs/vibrator/ExternalVibration.cpp | 11 ++++ .../include/vibrator/ExternalVibrationUtils.h | 16 +++--- 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 +#include +#include #include #include #include + +// To guarantee if HapticScale enum has the same value as IExternalVibratorService +static_assert(static_cast(android::os::HapticScale::MUTE) == static_cast(android::os::IExternalVibratorService::SCALE_MUTE)); +static_assert(static_cast(android::os::HapticScale::VERY_LOW) == static_cast(android::os::IExternalVibratorService::SCALE_VERY_LOW)); +static_assert(static_cast(android::os::HapticScale::LOW) == static_cast(android::os::IExternalVibratorService::SCALE_LOW)); +static_assert(static_cast(android::os::HapticScale::NONE) == static_cast(android::os::IExternalVibratorService::SCALE_NONE)); +static_assert(static_cast(android::os::HapticScale::HIGH) == static_cast(android::os::IExternalVibratorService::SCALE_HIGH)); +static_assert(static_cast(android::os::HapticScale::VERY_HIGH) == static_cast(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 - 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); -- cgit v1.2.3-59-g8ed1b