diff options
3 files changed, 19 insertions, 9 deletions
diff --git a/services/vibratorservice/VibratorHalWrapper.cpp b/services/vibratorservice/VibratorHalWrapper.cpp index 3ddc4f2aca..536a6b352b 100644 --- a/services/vibratorservice/VibratorHalWrapper.cpp +++ b/services/vibratorservice/VibratorHalWrapper.cpp @@ -131,9 +131,10 @@ HalResult<void> HalWrapper::performPwleEffect(const std::vector<PrimitivePwle>&, return HalResult<void>::unsupported(); } -HalResult<void> HalWrapper::composePwleV2(const CompositePwleV2&, const std::function<void()>&) { +HalResult<milliseconds> HalWrapper::composePwleV2(const CompositePwleV2&, + const std::function<void()>&) { ALOGV("Skipped composePwleV2 because it's not available in Vibrator HAL"); - return HalResult<void>::unsupported(); + return HalResult<milliseconds>::unsupported(); } HalResult<Capabilities> HalWrapper::getCapabilities() { @@ -359,11 +360,18 @@ HalResult<void> AidlHalWrapper::performPwleEffect(const std::vector<PrimitivePwl return HalResultFactory::fromStatus(getHal()->composePwle(primitives, cb)); } -HalResult<void> AidlHalWrapper::composePwleV2(const CompositePwleV2& composite, - const std::function<void()>& completionCallback) { +HalResult<milliseconds> AidlHalWrapper::composePwleV2( + const CompositePwleV2& composite, const std::function<void()>& completionCallback) { // This method should always support callbacks, so no need to double check. auto cb = ndk::SharedRefBase::make<HalCallbackWrapper>(completionCallback); - return HalResultFactory::fromStatus(getHal()->composePwleV2(composite, cb)); + + milliseconds totalDuration(0); + for (const auto& primitive : composite.pwlePrimitives) { + totalDuration += milliseconds(primitive.timeMillis); + } + + return HalResultFactory::fromStatus<milliseconds>(getHal()->composePwleV2(composite, cb), + totalDuration); } HalResult<Capabilities> AidlHalWrapper::getCapabilitiesInternal() { diff --git a/services/vibratorservice/include/vibratorservice/VibratorHalWrapper.h b/services/vibratorservice/include/vibratorservice/VibratorHalWrapper.h index 339a6e1d0d..9a39ad4f7b 100644 --- a/services/vibratorservice/include/vibratorservice/VibratorHalWrapper.h +++ b/services/vibratorservice/include/vibratorservice/VibratorHalWrapper.h @@ -423,8 +423,8 @@ public: virtual HalResult<void> performPwleEffect(const std::vector<PrimitivePwle>& primitives, const std::function<void()>& completionCallback); - virtual HalResult<void> composePwleV2(const CompositePwleV2& composite, - const std::function<void()>& completionCallback); + virtual HalResult<std::chrono::milliseconds> composePwleV2( + const CompositePwleV2& composite, const std::function<void()>& completionCallback); protected: // Shared pointer to allow CallbackScheduler to outlive this wrapper. @@ -511,8 +511,9 @@ public: const std::vector<PrimitivePwle>& primitives, const std::function<void()>& completionCallback) override final; - HalResult<void> composePwleV2(const CompositePwleV2& composite, - const std::function<void()>& completionCallback) override final; + HalResult<std::chrono::milliseconds> composePwleV2( + const CompositePwleV2& composite, + const std::function<void()>& completionCallback) override final; protected: HalResult<Capabilities> getCapabilitiesInternal() override final; diff --git a/services/vibratorservice/test/VibratorHalWrapperAidlTest.cpp b/services/vibratorservice/test/VibratorHalWrapperAidlTest.cpp index c58e05cedb..7545148ee1 100644 --- a/services/vibratorservice/test/VibratorHalWrapperAidlTest.cpp +++ b/services/vibratorservice/test/VibratorHalWrapperAidlTest.cpp @@ -787,5 +787,6 @@ TEST_F(VibratorHalWrapperAidlTest, TestComposePwleV2) { result = mWrapper->composePwleV2(composite, callback); ASSERT_TRUE(result.isOk()); + ASSERT_EQ(300ms, result.value()); ASSERT_EQ(1, *callbackCounter.get()); } |