diff options
author | 2025-02-28 13:26:52 +0000 | |
---|---|---|
committer | 2025-02-28 13:39:45 +0000 | |
commit | 3efb014d52d88263d341088fa3234f379971c3d9 (patch) | |
tree | c123f7450d36594dfcd8329d4bd58524ff813e76 | |
parent | 69e737f03b69269e2057e36b102239f80a2c75bb (diff) |
Remove IVibrator HIDL dependencies from idlcli
Android Q is now no longer supported for launching or
upgrading devices in Android V so the vibrator HIDL HAL
versions no longer needs to be supported by the platform.
Bug: 308452413
Test: manually using the command line
Flag: EXEMPT internal command line tools
Change-Id: I5ac0d7d895996d095f990e3b78d9c80e73bcaf97
34 files changed, 253 insertions, 461 deletions
diff --git a/cmds/idlcli/Android.bp b/cmds/idlcli/Android.bp index 36dcbca0a3..b87ef2dc36 100644 --- a/cmds/idlcli/Android.bp +++ b/cmds/idlcli/Android.bp @@ -25,13 +25,8 @@ cc_defaults { name: "idlcli-defaults", shared_libs: [ "android.hardware.vibrator-V3-ndk", - "android.hardware.vibrator@1.0", - "android.hardware.vibrator@1.1", - "android.hardware.vibrator@1.2", - "android.hardware.vibrator@1.3", "libbase", "libbinder_ndk", - "libhidlbase", "liblog", "libutils", ], diff --git a/cmds/idlcli/utils.h b/cmds/idlcli/utils.h index 262f2e50b6..dc52c57987 100644 --- a/cmds/idlcli/utils.h +++ b/cmds/idlcli/utils.h @@ -18,7 +18,6 @@ #define FRAMEWORK_NATIVE_CMDS_IDLCLI_UTILS_H_ #include <android/binder_enums.h> -#include <hidl/HidlSupport.h> #include <iomanip> #include <iostream> diff --git a/cmds/idlcli/vibrator.h b/cmds/idlcli/vibrator.h index b9434950f6..1a9993e5e7 100644 --- a/cmds/idlcli/vibrator.h +++ b/cmds/idlcli/vibrator.h @@ -22,102 +22,30 @@ #include <aidl/android/hardware/vibrator/IVibratorManager.h> #include <android/binder_manager.h> #include <android/binder_process.h> -#include <android/hardware/vibrator/1.3/IVibrator.h> #include "IdlCli.h" #include "utils.h" namespace android { -using hardware::Return; +using ::aidl::android::hardware::vibrator::IVibrator; using idlcli::IdlCli; -static constexpr int NUM_TRIES = 2; - -// Creates a Return<R> with STATUS::EX_NULL_POINTER. -template <class R> -inline R NullptrStatus() { - using ::android::hardware::Status; - return Status::fromExceptionCode(Status::EX_NULL_POINTER); -} - -template <> -inline ndk::ScopedAStatus NullptrStatus() { - return ndk::ScopedAStatus(AStatus_fromExceptionCode(EX_NULL_POINTER)); -} - -template <typename I> inline auto getService(std::string name) { - const auto instance = std::string() + I::descriptor + "/" + name; + const auto instance = std::string() + IVibrator::descriptor + "/" + name; auto vibBinder = ndk::SpAIBinder(AServiceManager_checkService(instance.c_str())); - return I::fromBinder(vibBinder); -} - -template <> -inline auto getService<android::hardware::vibrator::V1_0::IVibrator>(std::string name) { - return android::hardware::vibrator::V1_0::IVibrator::getService(name); -} - -template <> -inline auto getService<android::hardware::vibrator::V1_1::IVibrator>(std::string name) { - return android::hardware::vibrator::V1_1::IVibrator::getService(name); -} - -template <> -inline auto getService<android::hardware::vibrator::V1_2::IVibrator>(std::string name) { - return android::hardware::vibrator::V1_2::IVibrator::getService(name); -} - -template <> -inline auto getService<android::hardware::vibrator::V1_3::IVibrator>(std::string name) { - return android::hardware::vibrator::V1_3::IVibrator::getService(name); + return IVibrator::fromBinder(vibBinder); } -template <typename I> -using shared_ptr = std::invoke_result_t<decltype(getService<I>)&, std::string>; - -template <typename I> -class HalWrapper { -public: - static std::unique_ptr<HalWrapper> Create() { - // Assume that if getService returns a nullptr, HAL is not available on the - // device. - const auto name = IdlCli::Get().getName(); - auto hal = getService<I>(name.empty() ? "default" : name); - return hal ? std::unique_ptr<HalWrapper>(new HalWrapper(std::move(hal))) : nullptr; - } - - template <class R, class... Args0, class... Args1> - R call(R (I::*fn)(Args0...), Args1&&... args1) { - return (*mHal.*fn)(std::forward<Args1>(args1)...); - } - -private: - HalWrapper(shared_ptr<I>&& hal) : mHal(std::move(hal)) {} - -private: - shared_ptr<I> mHal; -}; - -template <typename I> static auto getHal() { - static auto sHalWrapper = HalWrapper<I>::Create(); - return sHalWrapper.get(); -} - -template <class R, class I, class... Args0, class... Args1> -R halCall(R (I::*fn)(Args0...), Args1&&... args1) { - auto hal = getHal<I>(); - return hal ? hal->call(fn, std::forward<Args1>(args1)...) : NullptrStatus<R>(); + // Assume that if getService returns a nullptr, HAL is not available on the device. + const auto name = IdlCli::Get().getName(); + return getService(name.empty() ? "default" : name); } namespace idlcli { namespace vibrator { -namespace V1_0 = ::android::hardware::vibrator::V1_0; -namespace V1_1 = ::android::hardware::vibrator::V1_1; -namespace V1_2 = ::android::hardware::vibrator::V1_2; -namespace V1_3 = ::android::hardware::vibrator::V1_3; namespace aidl = ::aidl::android::hardware::vibrator; class VibratorCallback : public aidl::BnVibratorCallback { diff --git a/cmds/idlcli/vibrator/CommandAlwaysOnDisable.cpp b/cmds/idlcli/vibrator/CommandAlwaysOnDisable.cpp index 9afa300c2b..cae690945c 100644 --- a/cmds/idlcli/vibrator/CommandAlwaysOnDisable.cpp +++ b/cmds/idlcli/vibrator/CommandAlwaysOnDisable.cpp @@ -51,21 +51,17 @@ class CommandAlwaysOnDisable : public Command { } Status doMain(Args && /*args*/) override { - std::string statusStr; - Status ret; + auto hal = getHal(); - if (auto hal = getHal<aidl::IVibrator>()) { - auto status = hal->call(&aidl::IVibrator::alwaysOnDisable, mId); - - statusStr = status.getDescription(); - ret = status.isOk() ? OK : ERROR; - } else { + if (!hal) { return UNAVAILABLE; } - std::cout << "Status: " << statusStr << std::endl; + auto status = hal->alwaysOnDisable(mId); + + std::cout << "Status: " << status.getDescription() << std::endl; - return ret; + return status.isOk() ? OK : ERROR; } int32_t mId; diff --git a/cmds/idlcli/vibrator/CommandAlwaysOnEnable.cpp b/cmds/idlcli/vibrator/CommandAlwaysOnEnable.cpp index bb7f9f284a..410ca52068 100644 --- a/cmds/idlcli/vibrator/CommandAlwaysOnEnable.cpp +++ b/cmds/idlcli/vibrator/CommandAlwaysOnEnable.cpp @@ -72,21 +72,17 @@ class CommandAlwaysOnEnable : public Command { } Status doMain(Args && /*args*/) override { - std::string statusStr; - Status ret; + auto hal = getHal(); - if (auto hal = getHal<aidl::IVibrator>()) { - auto status = hal->call(&aidl::IVibrator::alwaysOnEnable, mId, mEffect, mStrength); - - statusStr = status.getDescription(); - ret = status.isOk() ? OK : ERROR; - } else { + if (!hal) { return UNAVAILABLE; } - std::cout << "Status: " << statusStr << std::endl; + auto status = hal->alwaysOnEnable(mId, mEffect, mStrength); + + std::cout << "Status: " << status.getDescription() << std::endl; - return ret; + return status.isOk() ? OK : ERROR; } int32_t mId; diff --git a/cmds/idlcli/vibrator/CommandCompose.cpp b/cmds/idlcli/vibrator/CommandCompose.cpp index eb9008b68e..41acb98a95 100644 --- a/cmds/idlcli/vibrator/CommandCompose.cpp +++ b/cmds/idlcli/vibrator/CommandCompose.cpp @@ -89,7 +89,7 @@ class CommandCompose : public Command { } Status doMain(Args && /*args*/) override { - auto hal = getHal<aidl::IVibrator>(); + auto hal = getHal(); if (!hal) { return UNAVAILABLE; @@ -104,7 +104,7 @@ class CommandCompose : public Command { callback = ndk::SharedRefBase::make<VibratorCallback>(); } - auto status = hal->call(&aidl::IVibrator::compose, mComposite, callback); + auto status = hal->compose(mComposite, callback); if (status.isOk() && callback) { callback->waitForComplete(); diff --git a/cmds/idlcli/vibrator/CommandComposePwle.cpp b/cmds/idlcli/vibrator/CommandComposePwle.cpp index b8308ce16f..5f6bf8677e 100644 --- a/cmds/idlcli/vibrator/CommandComposePwle.cpp +++ b/cmds/idlcli/vibrator/CommandComposePwle.cpp @@ -163,7 +163,7 @@ class CommandComposePwle : public Command { } Status doMain(Args && /*args*/) override { - auto hal = getHal<aidl::IVibrator>(); + auto hal = getHal(); if (!hal) { return UNAVAILABLE; @@ -178,7 +178,7 @@ class CommandComposePwle : public Command { callback = ndk::SharedRefBase::make<VibratorCallback>(); } - auto status = hal->call(&aidl::IVibrator::composePwle, mCompositePwle, callback); + auto status = hal->composePwle(mCompositePwle, callback); if (status.isOk() && callback) { callback->waitForComplete(); diff --git a/cmds/idlcli/vibrator/CommandComposePwleV2.cpp b/cmds/idlcli/vibrator/CommandComposePwleV2.cpp index 6d3cf84a2e..bd682eacae 100644 --- a/cmds/idlcli/vibrator/CommandComposePwleV2.cpp +++ b/cmds/idlcli/vibrator/CommandComposePwleV2.cpp @@ -108,7 +108,7 @@ class CommandComposePwleV2 : public Command { } Status doMain(Args&& /*args*/) override { - auto hal = getHal<aidl::IVibrator>(); + auto hal = getHal(); if (!hal) { return UNAVAILABLE; @@ -123,7 +123,7 @@ class CommandComposePwleV2 : public Command { callback = ndk::SharedRefBase::make<VibratorCallback>(); } - auto status = hal->call(&aidl::IVibrator::composePwleV2, mCompositePwle, callback); + auto status = hal->composePwleV2(mCompositePwle, callback); if (status.isOk() && callback) { callback->waitForComplete(); diff --git a/cmds/idlcli/vibrator/CommandGetBandwidthAmplitudeMap.cpp b/cmds/idlcli/vibrator/CommandGetBandwidthAmplitudeMap.cpp index aa01a11237..44115e9a97 100644 --- a/cmds/idlcli/vibrator/CommandGetBandwidthAmplitudeMap.cpp +++ b/cmds/idlcli/vibrator/CommandGetBandwidthAmplitudeMap.cpp @@ -44,29 +44,38 @@ class CommandGetBandwidthAmplitudeMap : public Command { } Status doMain(Args && /*args*/) override { - std::string statusStr; + auto hal = getHal(); + + if (!hal) { + return UNAVAILABLE; + } + std::vector<float> bandwidthAmplitude; float frequencyMinimumHz; float frequencyResolutionHz; - Status ret; - if (auto hal = getHal<aidl::IVibrator>()) { - auto status = - hal->call(&aidl::IVibrator::getBandwidthAmplitudeMap, &bandwidthAmplitude); - statusStr = status.getDescription(); - ret = (status.isOk() ? OK : ERROR); + auto status = hal->getBandwidthAmplitudeMap(&bandwidthAmplitude); - status = hal->call(&aidl::IVibrator::getFrequencyMinimum, &frequencyMinimumHz); - ret = (status.isOk() ? OK : ERROR); + if (!status.isOk()) { + std::cout << "Status: " << status.getDescription() << std::endl; + return ERROR; + } - status = - hal->call(&aidl::IVibrator::getFrequencyResolution, &frequencyResolutionHz); - ret = (status.isOk() ? OK : ERROR); - } else { - return UNAVAILABLE; + status = hal->getFrequencyMinimum(&frequencyMinimumHz); + + if (!status.isOk()) { + std::cout << "Status: " << status.getDescription() << std::endl; + return ERROR; } - std::cout << "Status: " << statusStr << std::endl; + status = hal->getFrequencyResolution(&frequencyResolutionHz); + + if (!status.isOk()) { + std::cout << "Status: " << status.getDescription() << std::endl; + return ERROR; + } + + std::cout << "Status: " << status.getDescription() << std::endl; std::cout << "Bandwidth Amplitude Map: " << std::endl; float frequency = frequencyMinimumHz; for (auto &e : bandwidthAmplitude) { @@ -74,7 +83,7 @@ class CommandGetBandwidthAmplitudeMap : public Command { frequency += frequencyResolutionHz; } - return ret; + return OK; } }; diff --git a/cmds/idlcli/vibrator/CommandGetCapabilities.cpp b/cmds/idlcli/vibrator/CommandGetCapabilities.cpp index 303a9895e4..507d871cac 100644 --- a/cmds/idlcli/vibrator/CommandGetCapabilities.cpp +++ b/cmds/idlcli/vibrator/CommandGetCapabilities.cpp @@ -42,22 +42,19 @@ class CommandGetCapabilities : public Command { } Status doMain(Args && /*args*/) override { - std::string statusStr; - int32_t cap; - Status ret; + auto hal = getHal(); - if (auto hal = getHal<aidl::IVibrator>()) { - auto status = hal->call(&aidl::IVibrator::getCapabilities, &cap); - statusStr = status.getDescription(); - ret = status.isOk() ? OK : ERROR; - } else { + if (!hal) { return UNAVAILABLE; } - std::cout << "Status: " << statusStr << std::endl; + int32_t cap; + auto status = hal->getCapabilities(&cap); + + std::cout << "Status: " << status.getDescription() << std::endl; std::cout << "Capabilities: " << std::bitset<32>(cap) << std::endl; - return ret; + return status.isOk() ? OK : ERROR; } }; diff --git a/cmds/idlcli/vibrator/CommandGetCompositionDelayMax.cpp b/cmds/idlcli/vibrator/CommandGetCompositionDelayMax.cpp index 10508bd4dc..1c1eb3c6ff 100644 --- a/cmds/idlcli/vibrator/CommandGetCompositionDelayMax.cpp +++ b/cmds/idlcli/vibrator/CommandGetCompositionDelayMax.cpp @@ -44,22 +44,19 @@ class CommandGetCompositionDelayMax : public Command { } Status doMain(Args && /*args*/) override { - std::string statusStr; - int32_t maxDelayMs; - Status ret; + auto hal = getHal(); - if (auto hal = getHal<aidl::IVibrator>()) { - auto status = hal->call(&aidl::IVibrator::getCompositionDelayMax, &maxDelayMs); - statusStr = status.getDescription(); - ret = status.isOk() ? OK : ERROR; - } else { + if (!hal) { return UNAVAILABLE; } - std::cout << "Status: " << statusStr << std::endl; + int32_t maxDelayMs; + auto status = hal->getCompositionDelayMax(&maxDelayMs); + + std::cout << "Status: " << status.getDescription() << std::endl; std::cout << "Max Delay: " << maxDelayMs << " ms" << std::endl; - return ret; + return status.isOk() ? OK : ERROR; } }; diff --git a/cmds/idlcli/vibrator/CommandGetCompositionSizeMax.cpp b/cmds/idlcli/vibrator/CommandGetCompositionSizeMax.cpp index 900cb18809..cfd4c53ceb 100644 --- a/cmds/idlcli/vibrator/CommandGetCompositionSizeMax.cpp +++ b/cmds/idlcli/vibrator/CommandGetCompositionSizeMax.cpp @@ -44,22 +44,19 @@ class CommandGetCompositionSizeMax : public Command { } Status doMain(Args && /*args*/) override { - std::string statusStr; - int32_t maxSize; - Status ret; + auto hal = getHal(); - if (auto hal = getHal<aidl::IVibrator>()) { - auto status = hal->call(&aidl::IVibrator::getCompositionSizeMax, &maxSize); - statusStr = status.getDescription(); - ret = status.isOk() ? OK : ERROR; - } else { + if (!hal) { return UNAVAILABLE; } - std::cout << "Status: " << statusStr << std::endl; + int32_t maxSize; + auto status = hal->getCompositionSizeMax(&maxSize); + + std::cout << "Status: " << status.getDescription() << std::endl; std::cout << "Max Size: " << maxSize << std::endl; - return ret; + return status.isOk() ? OK : ERROR; } }; diff --git a/cmds/idlcli/vibrator/CommandGetFrequencyMinimum.cpp b/cmds/idlcli/vibrator/CommandGetFrequencyMinimum.cpp index 504c6482ad..2a614466ab 100644 --- a/cmds/idlcli/vibrator/CommandGetFrequencyMinimum.cpp +++ b/cmds/idlcli/vibrator/CommandGetFrequencyMinimum.cpp @@ -44,22 +44,19 @@ class CommandGetFrequencyMinimum : public Command { } Status doMain(Args && /*args*/) override { - std::string statusStr; - float frequencyMinimumHz; - Status ret; + auto hal = getHal(); - if (auto hal = getHal<aidl::IVibrator>()) { - auto status = hal->call(&aidl::IVibrator::getFrequencyMinimum, &frequencyMinimumHz); - statusStr = status.getDescription(); - ret = status.isOk() ? OK : ERROR; - } else { + if (!hal) { return UNAVAILABLE; } - std::cout << "Status: " << statusStr << std::endl; + float frequencyMinimumHz; + auto status = hal->getFrequencyMinimum(&frequencyMinimumHz); + + std::cout << "Status: " << status.getDescription() << std::endl; std::cout << "Minimum Frequency: " << frequencyMinimumHz << " Hz" << std::endl; - return ret; + return status.isOk() ? OK : ERROR; } }; diff --git a/cmds/idlcli/vibrator/CommandGetFrequencyResolution.cpp b/cmds/idlcli/vibrator/CommandGetFrequencyResolution.cpp index de358385a0..157d6bf732 100644 --- a/cmds/idlcli/vibrator/CommandGetFrequencyResolution.cpp +++ b/cmds/idlcli/vibrator/CommandGetFrequencyResolution.cpp @@ -44,23 +44,19 @@ class CommandGetFrequencyResolution : public Command { } Status doMain(Args && /*args*/) override { - std::string statusStr; - float frequencyResolutionHz; - Status ret; + auto hal = getHal(); - if (auto hal = getHal<aidl::IVibrator>()) { - auto status = - hal->call(&aidl::IVibrator::getFrequencyResolution, &frequencyResolutionHz); - statusStr = status.getDescription(); - ret = status.isOk() ? OK : ERROR; - } else { + if (!hal) { return UNAVAILABLE; } - std::cout << "Status: " << statusStr << std::endl; + float frequencyResolutionHz; + auto status = hal->getFrequencyResolution(&frequencyResolutionHz); + + std::cout << "Status: " << status.getDescription() << std::endl; std::cout << "Frequency Resolution: " << frequencyResolutionHz << " Hz" << std::endl; - return ret; + return status.isOk() ? OK : ERROR; } }; diff --git a/cmds/idlcli/vibrator/CommandGetFrequencyToOutputAccelerationMap.cpp b/cmds/idlcli/vibrator/CommandGetFrequencyToOutputAccelerationMap.cpp index 2edd0caf2e..2eb45100db 100644 --- a/cmds/idlcli/vibrator/CommandGetFrequencyToOutputAccelerationMap.cpp +++ b/cmds/idlcli/vibrator/CommandGetFrequencyToOutputAccelerationMap.cpp @@ -46,26 +46,22 @@ class CommandGetFrequencyToOutputAccelerationMap : public Command { } Status doMain(Args&& /*args*/) override { - std::string statusStr; - std::vector<FrequencyAccelerationMapEntry> frequencyToOutputAccelerationMap; - Status ret; - - if (auto hal = getHal<aidl::IVibrator>()) { - auto status = hal->call(&aidl::IVibrator::getFrequencyToOutputAccelerationMap, - &frequencyToOutputAccelerationMap); - statusStr = status.getDescription(); - ret = (status.isOk() ? OK : ERROR); - } else { + auto hal = getHal(); + + if (!hal) { return UNAVAILABLE; } - std::cout << "Status: " << statusStr << std::endl; + std::vector<FrequencyAccelerationMapEntry> frequencyToOutputAccelerationMap; + auto status = hal->getFrequencyToOutputAccelerationMap(&frequencyToOutputAccelerationMap); + + std::cout << "Status: " << status.getDescription() << std::endl; std::cout << "Frequency to Output Amplitude Map: " << std::endl; for (auto& entry : frequencyToOutputAccelerationMap) { std::cout << entry.frequencyHz << " " << entry.maxOutputAccelerationGs << std::endl; } - return ret; + return status.isOk() ? OK : ERROR; } }; diff --git a/cmds/idlcli/vibrator/CommandGetPrimitiveDuration.cpp b/cmds/idlcli/vibrator/CommandGetPrimitiveDuration.cpp index 460d39e64f..c957f6b316 100644 --- a/cmds/idlcli/vibrator/CommandGetPrimitiveDuration.cpp +++ b/cmds/idlcli/vibrator/CommandGetPrimitiveDuration.cpp @@ -57,22 +57,19 @@ class CommandGetPrimitiveDuration : public Command { } Status doMain(Args && /*args*/) override { - std::string statusStr; - int32_t duration; - Status ret; + auto hal = getHal(); - if (auto hal = getHal<aidl::IVibrator>()) { - auto status = hal->call(&aidl::IVibrator::getPrimitiveDuration, mPrimitive, &duration); - statusStr = status.getDescription(); - ret = status.isOk() ? OK : ERROR; - } else { + if (!hal) { return UNAVAILABLE; } - std::cout << "Status: " << statusStr << std::endl; + int32_t duration; + auto status = hal->getPrimitiveDuration(mPrimitive, &duration); + + std::cout << "Status: " << status.getDescription() << std::endl; std::cout << "Duration: " << duration << std::endl; - return ret; + return status.isOk() ? OK : ERROR; } CompositePrimitive mPrimitive; diff --git a/cmds/idlcli/vibrator/CommandGetPwleCompositionSizeMax.cpp b/cmds/idlcli/vibrator/CommandGetPwleCompositionSizeMax.cpp index b2c35519eb..c1b027833b 100644 --- a/cmds/idlcli/vibrator/CommandGetPwleCompositionSizeMax.cpp +++ b/cmds/idlcli/vibrator/CommandGetPwleCompositionSizeMax.cpp @@ -44,22 +44,19 @@ class CommandGetPwleCompositionSizeMax : public Command { } Status doMain(Args && /*args*/) override { - std::string statusStr; - int32_t maxSize; - Status ret; + auto hal = getHal(); - if (auto hal = getHal<aidl::IVibrator>()) { - auto status = hal->call(&aidl::IVibrator::getPwleCompositionSizeMax, &maxSize); - statusStr = status.getDescription(); - ret = status.isOk() ? OK : ERROR; - } else { + if (!hal) { return UNAVAILABLE; } - std::cout << "Status: " << statusStr << std::endl; + int32_t maxSize; + auto status = hal->getPwleCompositionSizeMax(&maxSize); + + std::cout << "Status: " << status.getDescription() << std::endl; std::cout << "Max Size: " << maxSize << std::endl; - return ret; + return status.isOk() ? OK : ERROR; } }; diff --git a/cmds/idlcli/vibrator/CommandGetPwlePrimitiveDurationMax.cpp b/cmds/idlcli/vibrator/CommandGetPwlePrimitiveDurationMax.cpp index 90819731c4..ed00ba0c13 100644 --- a/cmds/idlcli/vibrator/CommandGetPwlePrimitiveDurationMax.cpp +++ b/cmds/idlcli/vibrator/CommandGetPwlePrimitiveDurationMax.cpp @@ -44,22 +44,19 @@ class CommandGetPwlePrimitiveDurationMax : public Command { } Status doMain(Args && /*args*/) override { - std::string statusStr; - int32_t maxDurationMs; - Status ret; + auto hal = getHal(); - if (auto hal = getHal<aidl::IVibrator>()) { - auto status = hal->call(&aidl::IVibrator::getPwlePrimitiveDurationMax, &maxDurationMs); - statusStr = status.getDescription(); - ret = status.isOk() ? OK : ERROR; - } else { + if (!hal) { return UNAVAILABLE; } - std::cout << "Status: " << statusStr << std::endl; + int32_t maxDurationMs; + auto status = hal->getPwlePrimitiveDurationMax(&maxDurationMs); + + std::cout << "Status: " << status.getDescription() << std::endl; std::cout << "Primitive duration max: " << maxDurationMs << " ms" << std::endl; - return ret; + return status.isOk() ? OK : ERROR; } }; diff --git a/cmds/idlcli/vibrator/CommandGetPwleV2CompositionSizeMax.cpp b/cmds/idlcli/vibrator/CommandGetPwleV2CompositionSizeMax.cpp index cca072c46f..f780b8bfd7 100644 --- a/cmds/idlcli/vibrator/CommandGetPwleV2CompositionSizeMax.cpp +++ b/cmds/idlcli/vibrator/CommandGetPwleV2CompositionSizeMax.cpp @@ -44,22 +44,19 @@ class CommandGetPwleV2CompositionSizeMax : public Command { } Status doMain(Args&& /*args*/) override { - std::string statusStr; - int32_t maxSize; - Status ret; + auto hal = getHal(); - if (auto hal = getHal<aidl::IVibrator>()) { - auto status = hal->call(&aidl::IVibrator::getPwleV2CompositionSizeMax, &maxSize); - statusStr = status.getDescription(); - ret = status.isOk() ? OK : ERROR; - } else { + if (!hal) { return UNAVAILABLE; } - std::cout << "Status: " << statusStr << std::endl; + int32_t maxSize; + auto status = hal->getPwleV2CompositionSizeMax(&maxSize); + + std::cout << "Status: " << status.getDescription() << std::endl; std::cout << "Max Size: " << maxSize << std::endl; - return ret; + return status.isOk() ? OK : ERROR; } }; diff --git a/cmds/idlcli/vibrator/CommandGetPwleV2PrimitiveDurationMaxMillis.cpp b/cmds/idlcli/vibrator/CommandGetPwleV2PrimitiveDurationMaxMillis.cpp index dbbfe1a6d4..e84e969e7c 100644 --- a/cmds/idlcli/vibrator/CommandGetPwleV2PrimitiveDurationMaxMillis.cpp +++ b/cmds/idlcli/vibrator/CommandGetPwleV2PrimitiveDurationMaxMillis.cpp @@ -44,23 +44,19 @@ class CommandGetPwleV2PrimitiveDurationMaxMillis : public Command { } Status doMain(Args&& /*args*/) override { - std::string statusStr; - int32_t maxDurationMs; - Status ret; + auto hal = getHal(); - if (auto hal = getHal<aidl::IVibrator>()) { - auto status = hal->call(&aidl::IVibrator::getPwleV2PrimitiveDurationMaxMillis, - &maxDurationMs); - statusStr = status.getDescription(); - ret = status.isOk() ? OK : ERROR; - } else { + if (!hal) { return UNAVAILABLE; } - std::cout << "Status: " << statusStr << std::endl; + int32_t maxDurationMs; + auto status = hal->getPwleV2PrimitiveDurationMaxMillis(&maxDurationMs); + + std::cout << "Status: " << status.getDescription() << std::endl; std::cout << "Primitive duration max: " << maxDurationMs << " ms" << std::endl; - return ret; + return status.isOk() ? OK : ERROR; } }; diff --git a/cmds/idlcli/vibrator/CommandGetPwleV2PrimitiveDurationMinMillis.cpp b/cmds/idlcli/vibrator/CommandGetPwleV2PrimitiveDurationMinMillis.cpp index 09225c49c4..448fd2adc2 100644 --- a/cmds/idlcli/vibrator/CommandGetPwleV2PrimitiveDurationMinMillis.cpp +++ b/cmds/idlcli/vibrator/CommandGetPwleV2PrimitiveDurationMinMillis.cpp @@ -44,23 +44,19 @@ class CommandGetPwleV2PrimitiveDurationMinMillis : public Command { } Status doMain(Args&& /*args*/) override { - std::string statusStr; - int32_t minDurationMs; - Status ret; + auto hal = getHal(); - if (auto hal = getHal<aidl::IVibrator>()) { - auto status = hal->call(&aidl::IVibrator::getPwleV2PrimitiveDurationMinMillis, - &minDurationMs); - statusStr = status.getDescription(); - ret = status.isOk() ? OK : ERROR; - } else { + if (!hal) { return UNAVAILABLE; } - std::cout << "Status: " << statusStr << std::endl; + int32_t minDurationMs; + auto status = hal->getPwleV2PrimitiveDurationMinMillis(&minDurationMs); + + std::cout << "Status: " << status.getDescription() << std::endl; std::cout << "Primitive duration min: " << minDurationMs << " ms" << std::endl; - return ret; + return status.isOk() ? OK : ERROR; } }; diff --git a/cmds/idlcli/vibrator/CommandGetQFactor.cpp b/cmds/idlcli/vibrator/CommandGetQFactor.cpp index a2681e905b..e04bad9384 100644 --- a/cmds/idlcli/vibrator/CommandGetQFactor.cpp +++ b/cmds/idlcli/vibrator/CommandGetQFactor.cpp @@ -42,22 +42,19 @@ class CommandGetQFactor : public Command { } Status doMain(Args && /*args*/) override { - std::string statusStr; - float qFactor; - Status ret; + auto hal = getHal(); - if (auto hal = getHal<aidl::IVibrator>()) { - auto status = hal->call(&aidl::IVibrator::getQFactor, &qFactor); - statusStr = status.getDescription(); - ret = status.isOk() ? OK : ERROR; - } else { + if (!hal) { return UNAVAILABLE; } - std::cout << "Status: " << statusStr << std::endl; + float qFactor; + auto status = hal->getQFactor(&qFactor); + + std::cout << "Status: " << status.getDescription() << std::endl; std::cout << "Q Factor: " << qFactor << std::endl; - return ret; + return status.isOk() ? OK : ERROR; } }; diff --git a/cmds/idlcli/vibrator/CommandGetResonantFrequency.cpp b/cmds/idlcli/vibrator/CommandGetResonantFrequency.cpp index 81a6391de5..e222ea656e 100644 --- a/cmds/idlcli/vibrator/CommandGetResonantFrequency.cpp +++ b/cmds/idlcli/vibrator/CommandGetResonantFrequency.cpp @@ -44,22 +44,19 @@ class CommandGetResonantFrequency : public Command { } Status doMain(Args && /*args*/) override { - std::string statusStr; - float resonantFrequencyHz; - Status ret; + auto hal = getHal(); - if (auto hal = getHal<aidl::IVibrator>()) { - auto status = hal->call(&aidl::IVibrator::getResonantFrequency, &resonantFrequencyHz); - statusStr = status.getDescription(); - ret = status.isOk() ? OK : ERROR; - } else { + if (!hal) { return UNAVAILABLE; } - std::cout << "Status: " << statusStr << std::endl; + float resonantFrequencyHz; + auto status = hal->getResonantFrequency(&resonantFrequencyHz); + + std::cout << "Status: " << status.getDescription() << std::endl; std::cout << "Resonant Frequency: " << resonantFrequencyHz << " Hz" << std::endl; - return ret; + return status.isOk() ? OK : ERROR; } }; diff --git a/cmds/idlcli/vibrator/CommandGetSupportedAlwaysOnEffects.cpp b/cmds/idlcli/vibrator/CommandGetSupportedAlwaysOnEffects.cpp index edfcd9195a..9b05540fce 100644 --- a/cmds/idlcli/vibrator/CommandGetSupportedAlwaysOnEffects.cpp +++ b/cmds/idlcli/vibrator/CommandGetSupportedAlwaysOnEffects.cpp @@ -44,25 +44,22 @@ class CommandGetSupportedAlwaysOnEffects : public Command { } Status doMain(Args && /*args*/) override { - std::string statusStr; - std::vector<Effect> effects; - Status ret; + auto hal = getHal(); - if (auto hal = getHal<aidl::IVibrator>()) { - auto status = hal->call(&aidl::IVibrator::getSupportedAlwaysOnEffects, &effects); - statusStr = status.getDescription(); - ret = status.isOk() ? OK : ERROR; - } else { + if (!hal) { return UNAVAILABLE; } - std::cout << "Status: " << statusStr << std::endl; + std::vector<Effect> effects; + auto status = hal->getSupportedAlwaysOnEffects(&effects); + + std::cout << "Status: " << status.getDescription() << std::endl; std::cout << "Effects:" << std::endl; for (auto &e : effects) { std::cout << " " << toString(e) << std::endl; } - return ret; + return status.isOk() ? OK : ERROR; } }; diff --git a/cmds/idlcli/vibrator/CommandGetSupportedBraking.cpp b/cmds/idlcli/vibrator/CommandGetSupportedBraking.cpp index b326e07c22..f95f682fc0 100644 --- a/cmds/idlcli/vibrator/CommandGetSupportedBraking.cpp +++ b/cmds/idlcli/vibrator/CommandGetSupportedBraking.cpp @@ -44,25 +44,22 @@ class CommandGetSupportedBraking : public Command { } Status doMain(Args && /*args*/) override { - std::string statusStr; - std::vector<Braking> braking; - Status ret; + auto hal = getHal(); - if (auto hal = getHal<aidl::IVibrator>()) { - auto status = hal->call(&aidl::IVibrator::getSupportedBraking, &braking); - statusStr = status.getDescription(); - ret = status.isOk() ? OK : ERROR; - } else { + if (!hal) { return UNAVAILABLE; } - std::cout << "Status: " << statusStr << std::endl; + std::vector<Braking> braking; + auto status = hal->getSupportedBraking(&braking); + + std::cout << "Status: " << status.getDescription() << std::endl; std::cout << "Braking Mechanisms:" << std::endl; for (auto &e : braking) { std::cout << " " << toString(e) << std::endl; } - return ret; + return status.isOk() ? OK : ERROR; } }; diff --git a/cmds/idlcli/vibrator/CommandGetSupportedEffects.cpp b/cmds/idlcli/vibrator/CommandGetSupportedEffects.cpp index 7658f22def..05de1b87cf 100644 --- a/cmds/idlcli/vibrator/CommandGetSupportedEffects.cpp +++ b/cmds/idlcli/vibrator/CommandGetSupportedEffects.cpp @@ -44,25 +44,22 @@ class CommandGetSupportedEffects : public Command { } Status doMain(Args && /*args*/) override { - std::string statusStr; - std::vector<Effect> effects; - Status ret; + auto hal = getHal(); - if (auto hal = getHal<aidl::IVibrator>()) { - auto status = hal->call(&aidl::IVibrator::getSupportedEffects, &effects); - statusStr = status.getDescription(); - ret = status.isOk() ? OK : ERROR; - } else { + if (!hal) { return UNAVAILABLE; } - std::cout << "Status: " << statusStr << std::endl; + std::vector<Effect> effects; + auto status = hal->getSupportedEffects(&effects); + + std::cout << "Status: " << status.getDescription() << std::endl; std::cout << "Effects:" << std::endl; for (auto &e : effects) { std::cout << " " << toString(e) << std::endl; } - return ret; + return status.isOk() ? OK : ERROR; } }; diff --git a/cmds/idlcli/vibrator/CommandGetSupportedPrimitives.cpp b/cmds/idlcli/vibrator/CommandGetSupportedPrimitives.cpp index d101681914..0f33f0f2e9 100644 --- a/cmds/idlcli/vibrator/CommandGetSupportedPrimitives.cpp +++ b/cmds/idlcli/vibrator/CommandGetSupportedPrimitives.cpp @@ -44,25 +44,22 @@ class CommandGetSupportedPrimitives : public Command { } Status doMain(Args && /*args*/) override { - std::string statusStr; - std::vector<CompositePrimitive> primitives; - Status ret; + auto hal = getHal(); - if (auto hal = getHal<aidl::IVibrator>()) { - auto status = hal->call(&aidl::IVibrator::getSupportedPrimitives, &primitives); - statusStr = status.getDescription(); - ret = status.isOk() ? OK : ERROR; - } else { + if (!hal) { return UNAVAILABLE; } - std::cout << "Status: " << statusStr << std::endl; + std::vector<CompositePrimitive> primitives; + auto status = hal->getSupportedPrimitives(&primitives); + + std::cout << "Status: " << status.getDescription() << std::endl; std::cout << "Primitives:" << std::endl; for (auto &e : primitives) { std::cout << " " << toString(e) << std::endl; } - return ret; + return status.isOk() ? OK : ERROR; } }; diff --git a/cmds/idlcli/vibrator/CommandOff.cpp b/cmds/idlcli/vibrator/CommandOff.cpp index cedb9fec06..e55b44a9c8 100644 --- a/cmds/idlcli/vibrator/CommandOff.cpp +++ b/cmds/idlcli/vibrator/CommandOff.cpp @@ -42,24 +42,17 @@ class CommandOff : public Command { } Status doMain(Args && /*args*/) override { - std::string statusStr; - Status ret; + auto hal = getHal(); - if (auto hal = getHal<aidl::IVibrator>()) { - auto status = hal->call(&aidl::IVibrator::off); - statusStr = status.getDescription(); - ret = status.isOk() ? OK : ERROR; - } else if (auto hal = getHal<V1_0::IVibrator>()) { - auto status = hal->call(&V1_0::IVibrator::off); - statusStr = toString(status); - ret = status.isOk() && status == V1_0::Status::OK ? OK : ERROR; - } else { + if (!hal) { return UNAVAILABLE; } - std::cout << "Status: " << statusStr << std::endl; + auto status = hal->off(); - return ret; + std::cout << "Status: " << status.getDescription() << std::endl; + + return status.isOk() ? OK : ERROR; } }; diff --git a/cmds/idlcli/vibrator/CommandOn.cpp b/cmds/idlcli/vibrator/CommandOn.cpp index 8212fc14a7..856c219750 100644 --- a/cmds/idlcli/vibrator/CommandOn.cpp +++ b/cmds/idlcli/vibrator/CommandOn.cpp @@ -67,34 +67,27 @@ class CommandOn : public Command { } Status doMain(Args && /*args*/) override { - std::string statusStr; - Status ret; - std::shared_ptr<VibratorCallback> callback; + auto hal = getHal(); - if (auto hal = getHal<aidl::IVibrator>()) { - ABinderProcess_setThreadPoolMaxThreadCount(1); - ABinderProcess_startThreadPool(); + if (!hal) { + return UNAVAILABLE; + } - int32_t cap; - hal->call(&aidl::IVibrator::getCapabilities, &cap); + std::shared_ptr<VibratorCallback> callback; - if (mBlocking && (cap & aidl::IVibrator::CAP_ON_CALLBACK)) { - callback = ndk::SharedRefBase::make<VibratorCallback>(); - } + ABinderProcess_setThreadPoolMaxThreadCount(1); + ABinderProcess_startThreadPool(); - auto status = hal->call(&aidl::IVibrator::on, mDuration, callback); + int32_t cap; + hal->getCapabilities(&cap); - statusStr = status.getDescription(); - ret = status.isOk() ? OK : ERROR; - } else if (auto hal = getHal<V1_0::IVibrator>()) { - auto status = hal->call(&V1_0::IVibrator::on, mDuration); - statusStr = toString(status); - ret = status.isOk() && status == V1_0::Status::OK ? OK : ERROR; - } else { - return UNAVAILABLE; + if (mBlocking && (cap & aidl::IVibrator::CAP_ON_CALLBACK)) { + callback = ndk::SharedRefBase::make<VibratorCallback>(); } - if (ret == OK && mBlocking) { + auto status = hal->on(mDuration, callback); + + if (status.isOk() && mBlocking) { if (callback) { callback->waitForComplete(); } else { @@ -102,9 +95,9 @@ class CommandOn : public Command { } } - std::cout << "Status: " << statusStr << std::endl; + std::cout << "Status: " << status.getDescription() << std::endl; - return ret; + return status.isOk() ? OK : ERROR; } bool mBlocking; diff --git a/cmds/idlcli/vibrator/CommandPerform.cpp b/cmds/idlcli/vibrator/CommandPerform.cpp index c897686cbe..0a354e2c5a 100644 --- a/cmds/idlcli/vibrator/CommandPerform.cpp +++ b/cmds/idlcli/vibrator/CommandPerform.cpp @@ -28,34 +28,6 @@ class CommandVibrator; namespace vibrator { -/* - * The following static asserts are only relevant here because the argument - * parser uses a single implementation for determining the string names. - */ -static_assert(static_cast<uint8_t>(V1_0::EffectStrength::LIGHT) == - static_cast<uint8_t>(aidl::EffectStrength::LIGHT)); -static_assert(static_cast<uint8_t>(V1_0::EffectStrength::MEDIUM) == - static_cast<uint8_t>(aidl::EffectStrength::MEDIUM)); -static_assert(static_cast<uint8_t>(V1_0::EffectStrength::STRONG) == - static_cast<uint8_t>(aidl::EffectStrength::STRONG)); -static_assert(static_cast<uint8_t>(V1_3::Effect::CLICK) == - static_cast<uint8_t>(aidl::Effect::CLICK)); -static_assert(static_cast<uint8_t>(V1_3::Effect::DOUBLE_CLICK) == - static_cast<uint8_t>(aidl::Effect::DOUBLE_CLICK)); -static_assert(static_cast<uint8_t>(V1_3::Effect::TICK) == static_cast<uint8_t>(aidl::Effect::TICK)); -static_assert(static_cast<uint8_t>(V1_3::Effect::THUD) == static_cast<uint8_t>(aidl::Effect::THUD)); -static_assert(static_cast<uint8_t>(V1_3::Effect::POP) == static_cast<uint8_t>(aidl::Effect::POP)); -static_assert(static_cast<uint8_t>(V1_3::Effect::HEAVY_CLICK) == - static_cast<uint8_t>(aidl::Effect::HEAVY_CLICK)); -static_assert(static_cast<uint8_t>(V1_3::Effect::RINGTONE_1) == - static_cast<uint8_t>(aidl::Effect::RINGTONE_1)); -static_assert(static_cast<uint8_t>(V1_3::Effect::RINGTONE_2) == - static_cast<uint8_t>(aidl::Effect::RINGTONE_2)); -static_assert(static_cast<uint8_t>(V1_3::Effect::RINGTONE_15) == - static_cast<uint8_t>(aidl::Effect::RINGTONE_15)); -static_assert(static_cast<uint8_t>(V1_3::Effect::TEXTURE_TICK) == - static_cast<uint8_t>(aidl::Effect::TEXTURE_TICK)); - using aidl::Effect; using aidl::EffectStrength; @@ -107,61 +79,31 @@ class CommandPerform : public Command { } Status doMain(Args && /*args*/) override { - std::string statusStr; + auto hal = getHal(); + + if (!hal) { + return UNAVAILABLE; + } + uint32_t lengthMs; - Status ret; std::shared_ptr<VibratorCallback> callback; - if (auto hal = getHal<aidl::IVibrator>()) { - ABinderProcess_setThreadPoolMaxThreadCount(1); - ABinderProcess_startThreadPool(); + ABinderProcess_setThreadPoolMaxThreadCount(1); + ABinderProcess_startThreadPool(); - int32_t cap; - hal->call(&aidl::IVibrator::getCapabilities, &cap); + int32_t cap; + hal->getCapabilities(&cap); - if (mBlocking && (cap & aidl::IVibrator::CAP_PERFORM_CALLBACK)) { - callback = ndk::SharedRefBase::make<VibratorCallback>(); - } - - int32_t aidlLengthMs; - auto status = hal->call(&aidl::IVibrator::perform, mEffect, mStrength, callback, - &aidlLengthMs); + if (mBlocking && (cap & aidl::IVibrator::CAP_PERFORM_CALLBACK)) { + callback = ndk::SharedRefBase::make<VibratorCallback>(); + } - statusStr = status.getDescription(); - lengthMs = static_cast<uint32_t>(aidlLengthMs); - ret = status.isOk() ? OK : ERROR; - } else { - Return<void> hidlRet; - V1_0::Status status; - auto callback = [&status, &lengthMs](V1_0::Status retStatus, uint32_t retLengthMs) { - status = retStatus; - lengthMs = retLengthMs; - }; - - if (auto hal = getHal<V1_3::IVibrator>()) { - hidlRet = - hal->call(&V1_3::IVibrator::perform_1_3, static_cast<V1_3::Effect>(mEffect), - static_cast<V1_0::EffectStrength>(mStrength), callback); - } else if (auto hal = getHal<V1_2::IVibrator>()) { - hidlRet = - hal->call(&V1_2::IVibrator::perform_1_2, static_cast<V1_2::Effect>(mEffect), - static_cast<V1_0::EffectStrength>(mStrength), callback); - } else if (auto hal = getHal<V1_1::IVibrator>()) { - hidlRet = hal->call(&V1_1::IVibrator::perform_1_1, - static_cast<V1_1::Effect_1_1>(mEffect), - static_cast<V1_0::EffectStrength>(mStrength), callback); - } else if (auto hal = getHal<V1_0::IVibrator>()) { - hidlRet = hal->call(&V1_0::IVibrator::perform, static_cast<V1_0::Effect>(mEffect), - static_cast<V1_0::EffectStrength>(mStrength), callback); - } else { - return UNAVAILABLE; - } + int32_t aidlLengthMs; + auto status = hal->perform(mEffect, mStrength, callback, &aidlLengthMs); - statusStr = toString(status); - ret = hidlRet.isOk() && status == V1_0::Status::OK ? OK : ERROR; - } + lengthMs = static_cast<uint32_t>(aidlLengthMs); - if (ret == OK && mBlocking) { + if (status.isOk() && mBlocking) { if (callback) { callback->waitForComplete(); } else { @@ -169,10 +111,10 @@ class CommandPerform : public Command { } } - std::cout << "Status: " << statusStr << std::endl; + std::cout << "Status: " << status.getDescription() << std::endl; std::cout << "Length: " << lengthMs << std::endl; - return ret; + return status.isOk() ? OK : ERROR; } bool mBlocking; diff --git a/cmds/idlcli/vibrator/CommandSetAmplitude.cpp b/cmds/idlcli/vibrator/CommandSetAmplitude.cpp index 8b8058c4fd..8050723729 100644 --- a/cmds/idlcli/vibrator/CommandSetAmplitude.cpp +++ b/cmds/idlcli/vibrator/CommandSetAmplitude.cpp @@ -50,25 +50,17 @@ class CommandSetAmplitude : public Command { } Status doMain(Args && /*args*/) override { - std::string statusStr; - Status ret; - - if (auto hal = getHal<aidl::IVibrator>()) { - auto status = hal->call(&aidl::IVibrator::setAmplitude, - static_cast<float>(mAmplitude) / UINT8_MAX); - statusStr = status.getDescription(); - ret = status.isOk() ? OK : ERROR; - } else if (auto hal = getHal<V1_0::IVibrator>()) { - auto status = hal->call(&V1_0::IVibrator::setAmplitude, mAmplitude); - statusStr = toString(status); - ret = status.isOk() && status == V1_0::Status::OK ? OK : ERROR; - } else { + auto hal = getHal(); + + if (!hal) { return UNAVAILABLE; } - std::cout << "Status: " << statusStr << std::endl; + auto status = hal->setAmplitude(static_cast<float>(mAmplitude) / UINT8_MAX); + + std::cout << "Status: " << status.getDescription() << std::endl; - return ret; + return status.isOk() ? OK : ERROR; } uint8_t mAmplitude; diff --git a/cmds/idlcli/vibrator/CommandSetExternalControl.cpp b/cmds/idlcli/vibrator/CommandSetExternalControl.cpp index 179579310a..8f8d4b7641 100644 --- a/cmds/idlcli/vibrator/CommandSetExternalControl.cpp +++ b/cmds/idlcli/vibrator/CommandSetExternalControl.cpp @@ -48,24 +48,17 @@ class CommandSetExternalControl : public Command { } Status doMain(Args && /*args*/) override { - std::string statusStr; - Status ret; - - if (auto hal = getHal<aidl::IVibrator>()) { - auto status = hal->call(&aidl::IVibrator::setExternalControl, mEnable); - statusStr = status.getDescription(); - ret = status.isOk() ? OK : ERROR; - } else if (auto hal = getHal<V1_3::IVibrator>()) { - auto status = hal->call(&V1_3::IVibrator::setExternalControl, mEnable); - statusStr = toString(status); - ret = status.isOk() && status == V1_0::Status::OK ? OK : ERROR; - } else { + auto hal = getHal(); + + if (!hal) { return UNAVAILABLE; } - std::cout << "Status: " << statusStr << std::endl; + auto status = hal->setExternalControl(mEnable); + + std::cout << "Status: " << status.getDescription() << std::endl; - return ret; + return status.isOk() ? OK : ERROR; } bool mEnable; diff --git a/cmds/idlcli/vibrator/CommandSupportsAmplitudeControl.cpp b/cmds/idlcli/vibrator/CommandSupportsAmplitudeControl.cpp index cdc529a2f3..31ee954f63 100644 --- a/cmds/idlcli/vibrator/CommandSupportsAmplitudeControl.cpp +++ b/cmds/idlcli/vibrator/CommandSupportsAmplitudeControl.cpp @@ -42,15 +42,22 @@ class CommandSupportsAmplitudeControl : public Command { } Status doMain(Args && /*args*/) override { - auto ret = halCall(&V1_0::IVibrator::supportsAmplitudeControl); + auto hal = getHal(); - if (!ret.isOk()) { + if (!hal) { return UNAVAILABLE; } - std::cout << "Result: " << std::boolalpha << ret << std::endl; + int32_t cap; - return OK; + auto status = hal->getCapabilities(&cap); + + bool hasAmplitudeControl = cap & IVibrator::CAP_AMPLITUDE_CONTROL; + + std::cout << "Status: " << status.getDescription() << std::endl; + std::cout << "Result: " << std::boolalpha << hasAmplitudeControl << std::endl; + + return status.isOk() ? OK : ERROR; } }; diff --git a/cmds/idlcli/vibrator/CommandSupportsExternalControl.cpp b/cmds/idlcli/vibrator/CommandSupportsExternalControl.cpp index ed15d76286..f0c542cfe3 100644 --- a/cmds/idlcli/vibrator/CommandSupportsExternalControl.cpp +++ b/cmds/idlcli/vibrator/CommandSupportsExternalControl.cpp @@ -42,15 +42,22 @@ class CommandSupportsExternalControl : public Command { } Status doMain(Args && /*args*/) override { - auto ret = halCall(&V1_3::IVibrator::supportsExternalControl); + auto hal = getHal(); - if (!ret.isOk()) { + if (!hal) { return UNAVAILABLE; } - std::cout << "Result: " << std::boolalpha << ret << std::endl; + int32_t cap; - return OK; + auto status = hal->getCapabilities(&cap); + + bool hasExternalControl = cap & IVibrator::CAP_EXTERNAL_CONTROL; + + std::cout << "Status: " << status.getDescription() << std::endl; + std::cout << "Result: " << std::boolalpha << hasExternalControl << std::endl; + + return status.isOk() ? OK : ERROR; } }; |