Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit be9d0e1e authored by Simon Bowden's avatar Simon Bowden
Browse files

Decouple HapticScale and ExternalVibratorService scale.

HapticScale operates independently of IExternalVibratorService, so there's
no need to have identical constants.

Bug: 248993206
Test: presubmit
Change-Id: I990fcfa4a3c6fe6b468c49d4e3a023913d102a95
parent c3927860
Loading
Loading
Loading
Loading
+20 −9
Original line number Diff line number Diff line
@@ -22,15 +22,6 @@
#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);
@@ -74,5 +65,25 @@ inline bool ExternalVibration::operator==(const ExternalVibration& rhs) const {
    return mToken == rhs.mToken;
}

os::HapticScale ExternalVibration::externalVibrationScaleToHapticScale(int externalVibrationScale) {
    switch (externalVibrationScale) {
        case IExternalVibratorService::SCALE_MUTE:
            return os::HapticScale::MUTE;
        case IExternalVibratorService::SCALE_VERY_LOW:
            return os::HapticScale::VERY_LOW;
        case IExternalVibratorService::SCALE_LOW:
            return os::HapticScale::LOW;
        case IExternalVibratorService::SCALE_NONE:
            return os::HapticScale::NONE;
        case IExternalVibratorService::SCALE_HIGH:
            return os::HapticScale::HIGH;
        case IExternalVibratorService::SCALE_VERY_HIGH:
            return os::HapticScale::VERY_HIGH;
        default:
          ALOGE("Unknown ExternalVibrationScale %d, not applying scaling", externalVibrationScale);
          return os::HapticScale::NONE;
      }
}

} // namespace os
} // namespace android
+6 −1
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@
#include <binder/Parcelable.h>
#include <system/audio.h>
#include <utils/RefBase.h>
#include <vibrator/ExternalVibrationUtils.h>

namespace android {
namespace os {
@@ -44,6 +45,10 @@ public :
    audio_attributes_t getAudioAttributes() const { return mAttrs; }
    sp<IExternalVibrationController> getController() { return mController; }

    /* Converts the scale from non-public ExternalVibrationService into the HapticScale
     * used by the utils.
     */
    static os::HapticScale externalVibrationScaleToHapticScale(int externalVibrationScale);

private:
    int32_t mUid;
@@ -53,7 +58,7 @@ private:
    sp<IBinder> mToken = new BBinder();
};

} // namespace android
} // namespace os
} // namespace android

#endif // ANDROID_EXTERNAL_VIBRATION_H
+0 −2
Original line number Diff line number Diff line
@@ -19,8 +19,6 @@

namespace android::os {

// Copied from frameworks/base/core/java/android/os/IExternalVibratorService.aidl
// The values are checked in ExternalVibration.cpp
enum class HapticScale {
    MUTE = -100,
    VERY_LOW = -2,