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;