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

Commit eed4a59a authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

Merge "idlcli: Use ndk_platform Backend for AIDL" am: aa0f5b00 am: ffb4e4d0

Change-Id: I969205984908270d429c387d1c86f2ddb109026b
parents fb8e17dc ffb4e4d0
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -20,15 +20,16 @@ cc_defaults {
        "android.hardware.vibrator@1.2",
        "android.hardware.vibrator@1.3",
        "libbase",
        "libbinder",
        "libbinder_ndk",
        "libhidlbase",
        "liblog",
        "libutils",
        "vintf-vibrator-cpp",
        "vintf-vibrator-ndk_platform",
    ],
    cflags: [
        "-DLOG_TAG=\"idlcli\"",
    ],
    vendor_available: true,
}

cc_library {
+16 −12
Original line number Diff line number Diff line
@@ -13,13 +13,12 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef FRAMEWORK_NATIVE_CMDS_IDLCLI_VIBRATOR_H_
#define FRAMEWORK_NATIVE_CMDS_IDLCLI_VIBRATOR_H_

#include <aidl/android/hardware/vibrator/IVibrator.h>
#include <android/binder_manager.h>
#include <android/hardware/vibrator/1.3/IVibrator.h>
#include <android/hardware/vibrator/IVibrator.h>
#include <binder/IServiceManager.h>

#include "utils.h"

@@ -39,21 +38,26 @@ inline R NullptrStatus() {
}

template <>
inline binder::Status NullptrStatus() {
    using binder::Status;
    return Status::fromExceptionCode(Status::EX_NULL_POINTER);
inline ndk::ScopedAStatus NullptrStatus() {
    return ndk::ScopedAStatus(AStatus_fromExceptionCode(EX_NULL_POINTER));
}

template <typename I>
inline sp<I> getService() {
inline auto getService() {
    return I::getService();
}

template <>
inline sp<hardware::vibrator::IVibrator> getService() {
    return waitForVintfService<hardware::vibrator::IVibrator>();
inline auto getService<aidl::android::hardware::vibrator::IVibrator>() {
    const auto instance =
            std::string() + aidl::android::hardware::vibrator::IVibrator::descriptor + "/default";
    auto vibBinder = ndk::SpAIBinder(AServiceManager_getService(instance.c_str()));
    return aidl::android::hardware::vibrator::IVibrator::fromBinder(vibBinder);
}

template <typename I>
using shared_ptr = std::result_of_t<decltype(getService<I>)&()>;

template <typename I>
class HalWrapper {
public:
@@ -70,10 +74,10 @@ public:
    }

private:
    HalWrapper(sp<I>&& hal) : mHal(std::move(hal)) {}
    HalWrapper(shared_ptr<I>&& hal) : mHal(std::move(hal)) {}

private:
    sp<I> mHal;
    shared_ptr<I> mHal;
};

template <typename I>
@@ -95,7 +99,7 @@ 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 = ::android::hardware::vibrator;
namespace aidl = ::aidl::android::hardware::vibrator;

} // namespace vibrator
} // namespace idlcli
+1 −1
Original line number Diff line number Diff line
@@ -80,7 +80,7 @@ class CommandCompose : public Command {
        Status ret;
        if (auto hal = getHal<aidl::IVibrator>()) {
            auto status = hal->call(&aidl::IVibrator::compose, mComposite, nullptr);
            statusStr = status.toString8();
            statusStr = status.getDescription();
            ret = status.isOk() ? OK : ERROR;
        } else {
            return UNAVAILABLE;
+1 −1
Original line number Diff line number Diff line
@@ -48,7 +48,7 @@ class CommandGetCapabilities : public Command {

        if (auto hal = getHal<aidl::IVibrator>()) {
            auto status = hal->call(&aidl::IVibrator::getCapabilities, &cap);
            statusStr = status.toString8();
            statusStr = status.getDescription();
            ret = status.isOk() ? OK : ERROR;
        } else {
            return UNAVAILABLE;
+1 −1
Original line number Diff line number Diff line
@@ -50,7 +50,7 @@ class CommandGetCompositionDelayMax : public Command {

        if (auto hal = getHal<aidl::IVibrator>()) {
            auto status = hal->call(&aidl::IVibrator::getCompositionDelayMax, &maxDelayMs);
            statusStr = status.toString8();
            statusStr = status.getDescription();
            ret = status.isOk() ? OK : ERROR;
        } else {
            return UNAVAILABLE;
Loading