Correct the PWLE valid duration

Getting the maximum duration from HAL to avoid
different supported duration under different devices.

Fix: 231486866
Test: atest VtsHalVibratorTargetTest
Signed-off-by: chasewu <chasewu@google.com>
Change-Id: I02e96869d9a8e6d5143ae64e3a077bf90dcdb43e
Merged-In: I02e96869d9a8e6d5143ae64e3a077bf90dcdb43e
This commit is contained in:
chasewu
2022-03-31 23:23:27 +08:00
parent 7e3f8470c2
commit 22cb901d1a

View File

@@ -196,7 +196,7 @@ static ActivePwle composeValidActivePwle(sp<IVibrator> vibrator, int32_t capabil
active.startFrequency = frequencyHz;
active.endAmplitude = (getAmplitudeMin() + getAmplitudeMax()) / 2;
active.endFrequency = frequencyHz;
active.duration = 1000;
vibrator->getPwlePrimitiveDurationMax(&(active.duration));
return active;
}
@@ -756,7 +756,9 @@ TEST_P(VibratorAidl, ComposeValidPwleWithCallback) {
std::future<void> completionFuture{completionPromise.get_future()};
sp<CompletionCallback> callback =
new CompletionCallback([&completionPromise] { completionPromise.set_value(); });
uint32_t durationMs = 2100; // Sum of 2 active and 1 braking below
int32_t segmentDurationMaxMs;
vibrator->getPwlePrimitiveDurationMax(&segmentDurationMaxMs);
uint32_t durationMs = segmentDurationMaxMs * 2 + 100; // Sum of 2 active and 1 braking below
//TODO(b/187207798): revert back to conservative timeout values once
//latencies have been fixed
std::chrono::milliseconds timeout{durationMs * 4};
@@ -860,7 +862,7 @@ TEST_P(VibratorAidl, ComposePwleSegmentDurationBoundary) {
if (capabilities & IVibrator::CAP_COMPOSE_PWLE_EFFECTS) {
ActivePwle active = composeValidActivePwle(vibrator, capabilities);
int segmentDurationMaxMs;
int32_t segmentDurationMaxMs;
vibrator->getPwlePrimitiveDurationMax(&segmentDurationMaxMs);
active.duration = segmentDurationMaxMs + 10; // Segment duration greater than allowed