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
#include <dlfcn.h>
#include <stdlib.h>
#include <errno.h>
+#include <string.h>
#include <cutils/log.h>
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)