Use android.hardware.vibrator NDK backend
Update vibrator HAL dependency to use the NDK backend.
Bug: 349595412
Test: libvibratorservice_test
Flag: EXEMPT mechanical refactor
Change-Id: I1eee7ea86d0535f93ed09d5295b3efbb4d5a1870
diff --git a/services/vibratorservice/VibratorManagerHalWrapper.cpp b/services/vibratorservice/VibratorManagerHalWrapper.cpp
index 1341266..93ec781 100644
--- a/services/vibratorservice/VibratorManagerHalWrapper.cpp
+++ b/services/vibratorservice/VibratorManagerHalWrapper.cpp
@@ -20,7 +20,7 @@
#include <vibratorservice/VibratorManagerHalWrapper.h>
-namespace Aidl = android::hardware::vibrator;
+namespace Aidl = aidl::android::hardware::vibrator;
namespace android {
@@ -75,10 +75,11 @@
std::shared_ptr<HalWrapper> AidlManagerHalWrapper::connectToVibrator(
int32_t vibratorId, std::shared_ptr<CallbackScheduler> callbackScheduler) {
- std::function<HalResult<sp<Aidl::IVibrator>>()> reconnectFn = [=, this]() {
- sp<Aidl::IVibrator> vibrator;
- auto result = this->getHal()->getVibrator(vibratorId, &vibrator);
- return HalResultFactory::fromStatus<sp<Aidl::IVibrator>>(result, vibrator);
+ std::function<HalResult<std::shared_ptr<Aidl::IVibrator>>()> reconnectFn = [=, this]() {
+ std::shared_ptr<Aidl::IVibrator> vibrator;
+ auto status = this->getHal()->getVibrator(vibratorId, &vibrator);
+ return HalResultFactory::fromStatus<std::shared_ptr<Aidl::IVibrator>>(std::move(status),
+ vibrator);
};
auto result = reconnectFn();
if (!result.isOk()) {
@@ -93,11 +94,13 @@
}
HalResult<void> AidlManagerHalWrapper::ping() {
- return HalResultFactory::fromStatus(IInterface::asBinder(getHal())->pingBinder());
+ return HalResultFactory::fromStatus(AIBinder_ping(getHal()->asBinder().get()));
}
void AidlManagerHalWrapper::tryReconnect() {
- sp<Aidl::IVibratorManager> newHandle = checkVintfService<Aidl::IVibratorManager>();
+ auto aidlServiceName = std::string(Aidl::IVibratorManager::descriptor) + "/default";
+ std::shared_ptr<Aidl::IVibratorManager> newHandle = Aidl::IVibratorManager::fromBinder(
+ ndk::SpAIBinder(AServiceManager_checkService(aidlServiceName.c_str())));
if (newHandle) {
std::lock_guard<std::mutex> lock(mHandleMutex);
mHandle = std::move(newHandle);
@@ -111,9 +114,9 @@
return HalResult<ManagerCapabilities>::ok(*mCapabilities);
}
int32_t cap = 0;
- auto result = getHal()->getCapabilities(&cap);
+ auto status = getHal()->getCapabilities(&cap);
auto capabilities = static_cast<ManagerCapabilities>(cap);
- auto ret = HalResultFactory::fromStatus<ManagerCapabilities>(result, capabilities);
+ auto ret = HalResultFactory::fromStatus<ManagerCapabilities>(std::move(status), capabilities);
if (ret.isOk()) {
// Cache copy of returned value.
mCapabilities.emplace(ret.value());
@@ -128,8 +131,8 @@
return HalResult<std::vector<int32_t>>::ok(*mVibratorIds);
}
std::vector<int32_t> ids;
- auto result = getHal()->getVibratorIds(&ids);
- auto ret = HalResultFactory::fromStatus<std::vector<int32_t>>(result, ids);
+ auto status = getHal()->getVibratorIds(&ids);
+ auto ret = HalResultFactory::fromStatus<std::vector<int32_t>>(std::move(status), ids);
if (ret.isOk()) {
// Cache copy of returned value and the individual controllers.
mVibratorIds.emplace(ret.value());
@@ -178,7 +181,8 @@
HalResult<ManagerCapabilities> capabilities = getCapabilities();
bool supportsCallback = capabilities.isOk() &&
static_cast<int32_t>(capabilities.value() & ManagerCapabilities::TRIGGER_CALLBACK);
- auto cb = supportsCallback ? new HalCallbackWrapper(completionCallback) : nullptr;
+ auto cb = supportsCallback ? ndk::SharedRefBase::make<HalCallbackWrapper>(completionCallback)
+ : nullptr;
return HalResultFactory::fromStatus(getHal()->triggerSynced(cb));
}
@@ -196,7 +200,7 @@
return ret;
}
-sp<Aidl::IVibratorManager> AidlManagerHalWrapper::getHal() {
+std::shared_ptr<Aidl::IVibratorManager> AidlManagerHalWrapper::getHal() {
std::lock_guard<std::mutex> lock(mHandleMutex);
return mHandle;
}