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

Commit 4e2b2d4b authored by Lais Andrade's avatar Lais Andrade
Browse files

Accept float values in Vibrator setAmplitude

This is a first step towards unifying the waveform APIs to prepare for
the PWLE composition. The IVibrator.aidl already supports float
amplitude values, so this also exposes the complete supported amplitude
range.

Bug: 167947076
Test: atest libvibratorservice_test
Change-Id: Icd60cfa51807846de064052ab38a06ae21772755
parent f5b97a8b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -161,7 +161,7 @@ HalResult<void> HalController::off() {
    return apply(offFn, "off");
}

HalResult<void> HalController::setAmplitude(int32_t amplitude) {
HalResult<void> HalController::setAmplitude(float amplitude) {
    hal_fn<void> setAmplitudeFn = [&](std::shared_ptr<HalWrapper> hal) {
        return hal->setAmplitude(amplitude);
    };
+5 −5
Original line number Diff line number Diff line
@@ -168,9 +168,8 @@ HalResult<void> AidlHalWrapper::off() {
    return HalResult<void>::fromStatus(getHal()->off());
}

HalResult<void> AidlHalWrapper::setAmplitude(int32_t amplitude) {
    float convertedAmplitude = static_cast<float>(amplitude) / std::numeric_limits<uint8_t>::max();
    return HalResult<void>::fromStatus(getHal()->setAmplitude(convertedAmplitude));
HalResult<void> AidlHalWrapper::setAmplitude(float amplitude) {
    return HalResult<void>::fromStatus(getHal()->setAmplitude(amplitude));
}

HalResult<void> AidlHalWrapper::setExternalControl(bool enabled) {
@@ -346,8 +345,9 @@ HalResult<void> HidlHalWrapper<I>::off() {
}

template <typename I>
HalResult<void> HidlHalWrapper<I>::setAmplitude(int32_t amplitude) {
    auto result = getHal()->setAmplitude(static_cast<uint8_t>(amplitude));
HalResult<void> HidlHalWrapper<I>::setAmplitude(float amplitude) {
    uint8_t amp = static_cast<uint8_t>(amplitude * std::numeric_limits<uint8_t>::max());
    auto result = getHal()->setAmplitude(amp);
    return HalResult<void>::fromStatus(result.withDefault(V1_0::Status::UNKNOWN_ERROR));
}

+3 −3
Original line number Diff line number Diff line
@@ -142,7 +142,7 @@ BENCHMARK_WRAPPER(VibratorBench, setAmplitude, {

    auto duration = 60s;
    auto callback = []() {};
    auto amplitude = UINT8_MAX;
    auto amplitude = 1.0f;

    for (auto _ : state) {
        state.PauseTiming();
@@ -169,7 +169,7 @@ BENCHMARK_WRAPPER(VibratorBench, setAmplitudeCached, {

    auto duration = 6000s;
    auto callback = []() {};
    auto amplitude = UINT8_MAX;
    auto amplitude = 1.0f;

    checkHalResult(mController.on(duration, callback), state);

@@ -224,7 +224,7 @@ BENCHMARK_WRAPPER(VibratorBench, setExternalAmplitudeCached, {
        return;
    }

    auto amplitude = UINT8_MAX;
    auto amplitude = 1.0f;

    checkHalResult(mController.setExternalControl(true), state);

+1 −1
Original line number Diff line number Diff line
@@ -61,7 +61,7 @@ public:
                       const std::function<void()>& completionCallback) final override;
    HalResult<void> off() final override;

    HalResult<void> setAmplitude(int32_t amplitude) final override;
    HalResult<void> setAmplitude(float amplitude) final override;
    HalResult<void> setExternalControl(bool enabled) final override;

    HalResult<void> alwaysOnEnable(int32_t id, hardware::vibrator::Effect effect,
+3 −3
Original line number Diff line number Diff line
@@ -173,7 +173,7 @@ public:
                               const std::function<void()>& completionCallback) = 0;
    virtual HalResult<void> off() = 0;

    virtual HalResult<void> setAmplitude(int32_t amplitude) = 0;
    virtual HalResult<void> setAmplitude(float amplitude) = 0;
    virtual HalResult<void> setExternalControl(bool enabled) = 0;

    virtual HalResult<void> alwaysOnEnable(int32_t id, hardware::vibrator::Effect effect,
@@ -223,7 +223,7 @@ public:
                       const std::function<void()>& completionCallback) override final;
    HalResult<void> off() override final;

    HalResult<void> setAmplitude(int32_t amplitude) override final;
    HalResult<void> setAmplitude(float amplitude) override final;
    HalResult<void> setExternalControl(bool enabled) override final;

    HalResult<void> alwaysOnEnable(int32_t id, hardware::vibrator::Effect effect,
@@ -295,7 +295,7 @@ public:
                       const std::function<void()>& completionCallback) override final;
    HalResult<void> off() override final;

    HalResult<void> setAmplitude(int32_t amplitude) override final;
    HalResult<void> setAmplitude(float amplitude) override final;
    virtual HalResult<void> setExternalControl(bool enabled) override;

    HalResult<void> alwaysOnEnable(int32_t id, hardware::vibrator::Effect effect,
Loading