fingerprint: send cancel-message to system
authorLukas0610 <mail@lukasberger.at>
Wed, 7 Mar 2018 12:04:55 +0000 (13:04 +0100)
committerLukasz Patron <priv.luk@gmail.com>
Mon, 9 Apr 2018 22:22:33 +0000 (00:22 +0200)
Android expects a FINGERPRINT_ERROR_CANCELED error-message if a
fingerprint authentication-requested was cancelled.

As bauth doesn't deliver such a message on its own, we use the
already notify-wrapper to send a message to Android if the
authentication was cancelled by bauth to allow a proper operation
of the fingerprint-service.

Some devices (hero, hero2) with the fingerprint scanner embedded in
the home button need this for the "config_fingerprintWakeAndUnlock"
option to work reliably.

Change-Id: Id5ec866a7608885925687a1927e0e6085e9b6cff
Ref: BUGBASH-1422

fingerprint/bauth/fingerprint.c

index 722460922d9fab1b7b2bbfb9880e6d5fa1e5ce4f..5145de63938b0bd6fca498516a0083a772b30551 100644 (file)
@@ -19,6 +19,7 @@
 #include <dlfcn.h>
 #include <stdlib.h>
 #include <errno.h>
+#include <string.h>
 
 #include <cutils/log.h>
 
@@ -122,7 +123,19 @@ static uint64_t fingerprint_get_auth_id(struct fingerprint_device __unused *dev)
 
 static int fingerprint_cancel(struct fingerprint_device __unused *dev)
 {
-    return bauth_handle->ss_fingerprint_cancel();
+    fingerprint_msg_t *cancel_msg;
+    int ret = 0;
+
+    ret = bauth_handle->ss_fingerprint_cancel();
+
+    cancel_msg = (fingerprint_msg_t *)malloc(sizeof(fingerprint_msg_t));
+    memset(cancel_msg, 0, sizeof(fingerprint_msg_t));
+
+    cancel_msg->type = FINGERPRINT_ERROR;
+    cancel_msg->data.error = FINGERPRINT_ERROR_CANCELED;
+
+    original_notify(cancel_msg);
+    return ret;
 }
 
 static int fingerprint_remove(struct fingerprint_device __unused *dev, uint32_t gid, uint32_t fid)