From be94045ad9e58acff4ca3d0029833ee7208b31cb Mon Sep 17 00:00:00 2001 From: AbhiShek Aggarwal Date: Wed, 30 Jan 2019 20:51:44 +0000 Subject: [PATCH] sm6250-common: Add support for event-based tap to wake gesture control Change-Id: Id963e3c7302a7ee46a5a6b6d1b743a5718d71f4c --- power-libperfmgr/Android.bp | 4 ++++ power-libperfmgr/Power.cpp | 21 +++++++++++++++++-- ...er@1.3-service.xiaomi_sm6250-libperfmgr.rc | 2 +- sepolicy/vendor/hal_power_default.te | 3 +++ 4 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 sepolicy/vendor/hal_power_default.te diff --git a/power-libperfmgr/Android.bp b/power-libperfmgr/Android.bp index a0763a5..60553d6 100644 --- a/power-libperfmgr/Android.bp +++ b/power-libperfmgr/Android.bp @@ -41,6 +41,10 @@ cc_binary { "android.hardware.power@1.2", "android.hardware.power@1.3", "libperfmgr", + ], + header_libs: [ + "libhardware_headers", + "generated_kernel_headers", ], proprietary: true, } diff --git a/power-libperfmgr/Power.cpp b/power-libperfmgr/Power.cpp index 3e35c69..300c557 100644 --- a/power-libperfmgr/Power.cpp +++ b/power-libperfmgr/Power.cpp @@ -28,6 +28,11 @@ #include #include "Power.h" +#include + +constexpr char kWakeupEventNode[] = "/dev/input/event2"; +constexpr int kWakeupModeOff = 4; +constexpr int kWakeupModeOn = 5; namespace android { namespace hardware { @@ -136,8 +141,20 @@ Return Power::powerHint(PowerHint_1_0 hint, int32_t data) { return Void(); } -Return Power::setFeature(Feature /*feature*/, bool /*activate*/) { - // Nothing to do +Return Power::setFeature(Feature feature, bool activate) { + switch (feature) { + case Feature::POWER_FEATURE_DOUBLE_TAP_TO_WAKE: { + int fd = open(kWakeupEventNode, O_RDWR); + struct input_event ev; + ev.type = EV_SYN; + ev.code = SYN_CONFIG; + ev.value = activate ? kWakeupModeOn : kWakeupModeOff; + write(fd, &ev, sizeof(ev)); + close(fd); + } break; + default: + break; + } return Void(); } diff --git a/power-libperfmgr/android.hardware.power@1.3-service.xiaomi_sm6250-libperfmgr.rc b/power-libperfmgr/android.hardware.power@1.3-service.xiaomi_sm6250-libperfmgr.rc index 7b58e8c..a5d4f1d 100644 --- a/power-libperfmgr/android.hardware.power@1.3-service.xiaomi_sm6250-libperfmgr.rc +++ b/power-libperfmgr/android.hardware.power@1.3-service.xiaomi_sm6250-libperfmgr.rc @@ -1,7 +1,7 @@ service vendor.power-hal-1-3 /vendor/bin/hw/android.hardware.power@1.3-service.xiaomi_sm6250-libperfmgr class hal user root - group system + group system input priority -20 interface android.hardware.power@1.0::IPower default interface android.hardware.power@1.1::IPower default diff --git a/sepolicy/vendor/hal_power_default.te b/sepolicy/vendor/hal_power_default.te new file mode 100644 index 0000000..da39c42 --- /dev/null +++ b/sepolicy/vendor/hal_power_default.te @@ -0,0 +1,3 @@ +# Allow hal_power_default to write to dt2w nodes +allow hal_power_default input_device:dir search; +allow hal_power_default input_device:chr_file rw_file_perms;