summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJim Miller <jaggies@google.com>2015-04-11 13:30:32 -0700
committerJim Miller <jaggies@google.com>2015-04-11 13:30:32 -0700
commit16323032c51635586760a5a3135b2019f4fa03fb (patch)
tree4010e17b03e79d88c987ec99a0ab897fa6d1d944
parent847be6a44c7bd1ea7ba5231033a0ca6bf13b0254 (diff)
downloadandroid_device_generic_goldfish-16323032c51635586760a5a3135b2019f4fa03fb.tar.gz
android_device_generic_goldfish-16323032c51635586760a5a3135b2019f4fa03fb.tar.bz2
android_device_generic_goldfish-16323032c51635586760a5a3135b2019f4fa03fb.zip
Fix build; Fix problems with SDK fingerprint emulation code
- Fix prototypes - Add new IDLE state - Fix potential memory corruption bug. Change-Id: If731c6123f3ccd4bb2055707d447a016100696a1
-rw-r--r--fingerprint/fingerprint.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/fingerprint/fingerprint.c b/fingerprint/fingerprint.c
index 075c262..1942888 100644
--- a/fingerprint/fingerprint.c
+++ b/fingerprint/fingerprint.c
@@ -29,7 +29,8 @@
typedef enum worker_state_t {
STATE_ENROLL = 1,
STATE_SCAN = 2,
- STATE_EXIT = 3
+ STATE_IDLE = 3,
+ STATE_EXIT = 4
} worker_state_t;
typedef struct worker_thread_t {
@@ -106,7 +107,7 @@ static void* listenerFunction(void* data)
ALOGD("send notice finger %d", fingerid);
} else if (strncmp("off", buffer, 3) == 0) {
dev->listener.finger_is_on = 0;
- ALOGD("finger off", fingerid);
+ ALOGD("finger off %d", fingerid);
} else {
ALOGE("error: '%s'", buffer);
}
@@ -130,8 +131,8 @@ static void createListenerThread(emu_fingerprint_hal_device_t* dev)
static int fingerprint_close(hw_device_t *dev)
{
if (dev) {
+ destroyListenerThread((emu_fingerprint_hal_device_t*) dev);
free(dev);
- destroyListenerThread(dev);
return 0;
} else {
return -1;
@@ -145,7 +146,7 @@ static void setListenerState(emu_fingerprint_hal_device_t* dev, worker_state_t s
}
static int fingerprint_authenticate(struct fingerprint_device __unused *device,
- uint64_t sessionId, uint32_t gid)
+ uint64_t __unused operation_id, __unused uint32_t gid)
{
ALOGE("fingerprint_authenticate");
@@ -155,7 +156,8 @@ static int fingerprint_authenticate(struct fingerprint_device __unused *device,
}
static int fingerprint_enroll(struct fingerprint_device __unused *device,
- uint32_t __unused timeout_sec) {
+ uint32_t __unused gid,
+ uint32_t __unused timeout_sec) {
ALOGE("fingerpring_enroll");
emu_fingerprint_hal_device_t* dev = (emu_fingerprint_hal_device_t*) device;
setListenerState(dev, STATE_ENROLL);
@@ -163,16 +165,15 @@ static int fingerprint_enroll(struct fingerprint_device __unused *device,
}
-static int fingerprint_enroll_cancel(struct fingerprint_device __unused *device,
- uint32_t __unused timeout_sec) {
- ALOGE("fingerpring_enroll_cancel");
+static int fingerprint_cancel(struct fingerprint_device __unused *device) {
+ ALOGE("fingerpring_cancel");
emu_fingerprint_hal_device_t* dev = (emu_fingerprint_hal_device_t*) device;
- setListenerState(dev, STATE_SCAN);
+ setListenerState(dev, STATE_IDLE);
return 0;
}
static int fingerprint_remove(struct fingerprint_device __unused *dev,
- uint32_t __unused fingerprint_id) {
+ fingerprint_finger_id_t __unused fingerprint_id) {
return FINGERPRINT_ERROR;
}
@@ -205,7 +206,7 @@ static int fingerprint_open(const hw_module_t* module, const char __unused *id,
dev->device.common.close = fingerprint_close;
dev->device.enroll = fingerprint_enroll;
- dev->device.enroll_cancel = fingerprint_enroll_cancel;
+ dev->device.cancel = fingerprint_cancel;
dev->device.authenticate = fingerprint_authenticate;
dev->device.remove = fingerprint_remove;
dev->device.set_notify = set_notify_callback;