Merge "cs40l26: Add a maximum scale protection for primitive effects" into tm-qpr-dev am: b1531ba9b2
am: d49b166867
Original change: https://googleplex-android-review.googlesource.com/c/device/google/felix/+/21158974 Change-Id: Ib2e7362f0ca95952f40e669111394b54e1cd63dd Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
commit
d4e4cf8f9e
2 changed files with 11 additions and 0 deletions
|
@ -529,6 +529,7 @@ Vibrator::Vibrator(std::unique_ptr<HwApi> hwApiDefault, std::unique_ptr<HwCal> h
|
||||||
mSupportedPrimitives = defaultSupportedPrimitives;
|
mSupportedPrimitives = defaultSupportedPrimitives;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mPrimitiveMaxScale = {1.0f, 0.95f, 0.75f, 0.9f, 1.0f, 1.0f, 1.0f, 0.75f, 0.75f};
|
||||||
mPrimitiveMinScale = {0.0f, 0.01f, 0.11f, 0.23f, 0.0f, 0.25f, 0.02f, 0.03f, 0.16f};
|
mPrimitiveMinScale = {0.0f, 0.01f, 0.11f, 0.23f, 0.0f, 0.25f, 0.02f, 0.03f, 0.16f};
|
||||||
|
|
||||||
// ====== Get GPIO status and init it ================
|
// ====== Get GPIO status and init it ================
|
||||||
|
@ -771,6 +772,11 @@ ndk::ScopedAStatus Vibrator::compose(const std::vector<CompositeEffect> &composi
|
||||||
if (!status.isOk()) {
|
if (!status.isOk()) {
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
// Add a max and min threshold to prevent the device crash(overcurrent) or no
|
||||||
|
// feeling
|
||||||
|
if (effectScale > mPrimitiveMaxScale[static_cast<uint32_t>(e_curr.primitive)]) {
|
||||||
|
effectScale = mPrimitiveMaxScale[static_cast<uint32_t>(e_curr.primitive)];
|
||||||
|
}
|
||||||
if (effectScale < mPrimitiveMinScale[static_cast<uint32_t>(e_curr.primitive)]) {
|
if (effectScale < mPrimitiveMinScale[static_cast<uint32_t>(e_curr.primitive)]) {
|
||||||
effectScale = mPrimitiveMinScale[static_cast<uint32_t>(e_curr.primitive)];
|
effectScale = mPrimitiveMinScale[static_cast<uint32_t>(e_curr.primitive)];
|
||||||
}
|
}
|
||||||
|
@ -1444,6 +1450,10 @@ ndk::ScopedAStatus Vibrator::getSimpleDetails(Effect effect, EffectStrength stre
|
||||||
case Effect::HEAVY_CLICK:
|
case Effect::HEAVY_CLICK:
|
||||||
effectIndex = WAVEFORM_CLICK_INDEX;
|
effectIndex = WAVEFORM_CLICK_INDEX;
|
||||||
intensity *= 1.0f;
|
intensity *= 1.0f;
|
||||||
|
// WAVEFORM_CLICK_INDEX is 2, but the primitive CLICK index is 1.
|
||||||
|
if (intensity > mPrimitiveMaxScale[WAVEFORM_CLICK_INDEX - 1]) {
|
||||||
|
intensity = mPrimitiveMaxScale[WAVEFORM_CLICK_INDEX - 1];
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION);
|
return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION);
|
||||||
|
|
|
@ -231,6 +231,7 @@ class Vibrator : public BnVibrator {
|
||||||
bool mIsChirpEnabled;
|
bool mIsChirpEnabled;
|
||||||
uint32_t mSupportedPrimitivesBits = 0x0;
|
uint32_t mSupportedPrimitivesBits = 0x0;
|
||||||
std::vector<CompositePrimitive> mSupportedPrimitives;
|
std::vector<CompositePrimitive> mSupportedPrimitives;
|
||||||
|
std::vector<float> mPrimitiveMaxScale;
|
||||||
std::vector<float> mPrimitiveMinScale;
|
std::vector<float> mPrimitiveMinScale;
|
||||||
bool mConfigHapticAlsaDeviceDone{false};
|
bool mConfigHapticAlsaDeviceDone{false};
|
||||||
bool mGPIOStatus;
|
bool mGPIOStatus;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue