Merge "vibrator: Enforce API-Specific Effect Range" into qt-dev

am: f42815ed26

Change-Id: I77c463d83e74c6e426ce9fddd179ab49666ebff6
This commit is contained in:
Harpreet "Eli" Sangha
2019-05-16 10:53:57 -07:00
committed by android-build-merger
2 changed files with 19 additions and 2 deletions

View File

@@ -176,15 +176,30 @@ static uint8_t convertEffectStrength(EffectStrength strength) {
}
Return<void> Vibrator::perform(V1_0::Effect effect, EffectStrength strength, perform_cb _hidl_cb) {
return performEffect(static_cast<Effect>(effect), strength, _hidl_cb);
return performWrapper(effect, strength, _hidl_cb);
}
Return<void> Vibrator::perform_1_1(V1_1::Effect_1_1 effect, EffectStrength strength,
perform_cb _hidl_cb) {
return performEffect(static_cast<Effect>(effect), strength, _hidl_cb);
return performWrapper(effect, strength, _hidl_cb);
}
Return<void> Vibrator::perform_1_2(Effect effect, EffectStrength strength, perform_cb _hidl_cb) {
return performWrapper(effect, strength, _hidl_cb);
}
template <typename T>
Return<void> Vibrator::performWrapper(T effect, EffectStrength strength, perform_cb _hidl_cb) {
auto validEffectRange = hidl_enum_range<T>();
if (effect < *validEffectRange.begin() || effect > *std::prev(validEffectRange.end())) {
_hidl_cb(Status::UNSUPPORTED_OPERATION, 0);
return Void();
}
auto validStrengthRange = hidl_enum_range<EffectStrength>();
if (strength < *validStrengthRange.begin() || strength > *std::prev(validStrengthRange.end())) {
_hidl_cb(Status::UNSUPPORTED_OPERATION, 0);
return Void();
}
return performEffect(static_cast<Effect>(effect), strength, _hidl_cb);
}

View File

@@ -50,6 +50,8 @@ public:
private:
Return<Status> on(uint32_t timeoutMs, bool forceOpenLoop, bool isWaveform);
template <typename T>
Return<void> performWrapper(T effect, EffectStrength strength, perform_cb _hidl_cb);
Return<void> performEffect(Effect effect, EffectStrength strength, perform_cb _hidl_cb);
std::ofstream mActivate;
std::ofstream mDuration;