diff --git a/fingerprint/BiometricsFingerprint.cpp b/fingerprint/BiometricsFingerprint.cpp index cde5c9b..dd8998e 100644 --- a/fingerprint/BiometricsFingerprint.cpp +++ b/fingerprint/BiometricsFingerprint.cpp @@ -17,6 +17,7 @@ #include "BiometricsFingerprint.h" +#include #include #include #include @@ -30,6 +31,8 @@ #define NOTIFY_FINGER_UP IMotFodEventType::FINGER_UP #define NOTIFY_FINGER_DOWN IMotFodEventType::FINGER_DOWN +#define FOD_HBM_PATH "/sys/devices/platform/soc/soc:qcom,dsi-display-primary/fod_hbm" + namespace android { namespace hardware { namespace biometrics { @@ -37,6 +40,10 @@ namespace fingerprint { namespace V2_3 { namespace implementation { +void setFodHbm(bool status) { + android::base::WriteStringToFile(status ? "1" : "0", FOD_HBM_PATH); +} + void BiometricsFingerprint::disableHighBrightFod() { std::lock_guard lock(mSetHbmFodMutex); @@ -45,6 +52,7 @@ void BiometricsFingerprint::disableHighBrightFod() { mMotoFingerprint->sendFodEvent(NOTIFY_FINGER_UP, {}, [](IMotFodEventResult, const hidl_vec &) {}); + setFodHbm(false); hbmFodEnabled = false; } @@ -55,6 +63,7 @@ void BiometricsFingerprint::enableHighBrightFod() { if (hbmFodEnabled) return; + setFodHbm(true); mMotoFingerprint->sendFodEvent(NOTIFY_FINGER_DOWN, {}, [](IMotFodEventResult, const hidl_vec &) {}); diff --git a/fingerprint/android.hardware.biometrics.fingerprint@2.3-service.eqs.rc b/fingerprint/android.hardware.biometrics.fingerprint@2.3-service.eqs.rc index 2509e07..6697161 100644 --- a/fingerprint/android.hardware.biometrics.fingerprint@2.3-service.eqs.rc +++ b/fingerprint/android.hardware.biometrics.fingerprint@2.3-service.eqs.rc @@ -1,3 +1,6 @@ +on init + chown system system /sys/devices/platform/soc/soc:qcom,dsi-display-primary/fod_hbm + service fps_hal.eqs /vendor/bin/hw/android.hardware.biometrics.fingerprint@2.3-service.eqs # "class hal" causes a race condition on some devices due to files created # in /data. As a workaround, postpone startup until later in boot once