diff --git a/hidl/fingerprint/BiometricsFingerprint.cpp b/hidl/fingerprint/BiometricsFingerprint.cpp index 2055a25..99f0e5c 100644 --- a/hidl/fingerprint/BiometricsFingerprint.cpp +++ b/hidl/fingerprint/BiometricsFingerprint.cpp @@ -38,6 +38,7 @@ Return BiometricsFingerprint::setNotify( } Return BiometricsFingerprint::preEnroll() { + this->isEnrolling = true; setDimlayerHbm(1); return mOplusBiometricsFingerprint->preEnroll(); } @@ -48,6 +49,7 @@ Return BiometricsFingerprint::enroll(const hidl_array BiometricsFingerprint::postEnroll() { + this->isEnrolling = false; setDimlayerHbm(0); return mOplusBiometricsFingerprint->postEnroll(); } @@ -57,7 +59,9 @@ Return BiometricsFingerprint::getAuthenticatorId() { } Return BiometricsFingerprint::cancel() { - setDimlayerHbm(0); + if (!this->isEnrolling) { + setDimlayerHbm(0); + } return mOplusBiometricsFingerprint->cancel(); } @@ -75,7 +79,8 @@ Return BiometricsFingerprint::setActiveGroup(uint32_t gid, } Return BiometricsFingerprint::authenticate(uint64_t operationId, uint32_t gid) { - setDimlayerHbm(1); + // In case postEnroll never got called for whatever reason, set isEnrolling to false. + this->isEnrolling = false; return mOplusBiometricsFingerprint->authenticate(operationId, gid); } @@ -84,12 +89,18 @@ Return BiometricsFingerprint::isUdfps(uint32_t sensorID) { } Return BiometricsFingerprint::onFingerDown(uint32_t x, uint32_t y, float minor, float major) { + if (!this->isEnrolling) { + setDimlayerHbm(1); + } setFpPress(1); return mOplusBiometricsFingerprint->onFingerDown(x, y, minor, major); } Return BiometricsFingerprint::onFingerUp() { setFpPress(0); + if (!this->isEnrolling) { + setDimlayerHbm(0); + } return mOplusBiometricsFingerprint->onFingerUp(); } @@ -116,8 +127,10 @@ Return BiometricsFingerprint::onAuthenticated(uint64_t deviceId, uint32_t Return BiometricsFingerprint::onError(uint64_t deviceId, FingerprintError error, int32_t vendorCode) { - setDimlayerHbm(0); setFpPress(0); + if (!this->isEnrolling) { + setDimlayerHbm(0); + } return mClientCallback->onError(deviceId, error, vendorCode); } diff --git a/hidl/fingerprint/BiometricsFingerprint.h b/hidl/fingerprint/BiometricsFingerprint.h index 49f09e0..78390d7 100644 --- a/hidl/fingerprint/BiometricsFingerprint.h +++ b/hidl/fingerprint/BiometricsFingerprint.h @@ -126,6 +126,7 @@ class BiometricsFingerprint : public IBiometricsFingerprint, sp mClientCallback; int mOplusDisplayFd; + bool isEnrolling; }; } // namespace implementation