diff --git a/doc/libfprint-docs.xml b/doc/libfprint-docs.xml index e56f4b77..8f8622d3 100644 --- a/doc/libfprint-docs.xml +++ b/doc/libfprint-docs.xml @@ -24,7 +24,7 @@ - API Documentation + Library API Documentation @@ -36,11 +36,10 @@ - API Index diff --git a/doc/libfprint-sections.txt b/doc/libfprint-sections.txt index e3d1bb8d..1f99e5a1 100644 --- a/doc/libfprint-sections.txt +++ b/doc/libfprint-sections.txt @@ -1,6 +1,6 @@ -fprint.h
+fprint.h events Initialisation and events handling fp_set_debug @@ -17,6 +17,7 @@ fp_set_pollfd_notifiers
+fprint.h discovery Device discovery fp_dscv_dev @@ -32,6 +33,7 @@ fp_dscv_dev_for_dscv_print
+fprint.h drv fp_driver fp_driver_get_name @@ -41,6 +43,7 @@ fp_driver_get_scan_type
+fprint.h dev fp_dev fp_scan_type @@ -91,6 +94,7 @@ fp_async_capture_stop
+fprint.h print_data fp_finger fp_print_data @@ -106,6 +110,7 @@ fp_print_data_get_devtype
+fprint.h dscv_print fp_dscv_print fp_discover_prints @@ -117,6 +122,7 @@ fp_dscv_print_delete
+fprint.h img fp_img fp_minutia @@ -131,5 +137,28 @@ fp_img_get_minutiae
+fprint.h poll
+ +
+fpi-ssm.h +fpi-ssm +fpi_ssm +ssm_completed_fn +ssm_handler_fn + +fpi_ssm_new +fpi_ssm_free +fpi_ssm_start +fpi_ssm_start_subsm + +fpi_ssm_next_state +fpi_ssm_jump_to_state +fpi_ssm_mark_completed +fpi_ssm_mark_failed +fpi_ssm_set_user_data +fpi_ssm_get_user_data +fpi_ssm_get_error +fpi_ssm_get_cur_state +
diff --git a/libfprint/drivers/aes1610.c b/libfprint/drivers/aes1610.c index f307a3bc..fe5de8db 100644 --- a/libfprint/drivers/aes1610.c +++ b/libfprint/drivers/aes1610.c @@ -101,12 +101,12 @@ static void stub_capture_stop_cb(struct fp_img_dev *dev, int result, void *user_ /* check that read succeeded but ignore all data */ static void generic_ignore_data_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; if (transfer->status != LIBUSB_TRANSFER_COMPLETED) - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); else if (transfer->length != transfer->actual_length) - fpi_ssm_mark_aborted(ssm, -EPROTO); + fpi_ssm_mark_failed(ssm, -EPROTO); else fpi_ssm_next_state(ssm); @@ -117,16 +117,16 @@ static void generic_ignore_data_cb(struct libusb_transfer *transfer) static void generic_write_regv_cb(struct fp_img_dev *dev, int result, void *user_data) { - struct fpi_ssm *ssm = user_data; + fpi_ssm *ssm = user_data; if (result == 0) fpi_ssm_next_state(ssm); else - fpi_ssm_mark_aborted(ssm, result); + fpi_ssm_mark_failed(ssm, result); } /* read the specified number of bytes from the IN endpoint but throw them * away, then increment the SSM */ -static void generic_read_ignore_data(struct fpi_ssm *ssm, size_t bytes) +static void generic_read_ignore_data(fpi_ssm *ssm, size_t bytes) { struct libusb_transfer *transfer = libusb_alloc_transfer(0); unsigned char *data; @@ -134,7 +134,7 @@ static void generic_read_ignore_data(struct fpi_ssm *ssm, size_t bytes) int r; if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); return; } @@ -147,7 +147,7 @@ static void generic_read_ignore_data(struct fpi_ssm *ssm, size_t bytes) if (r < 0) { g_free(data); libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } } @@ -557,17 +557,17 @@ enum capture_states { static void capture_read_strip_cb(struct libusb_transfer *transfer) { unsigned char *stripdata; - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct aes1610_dev *aesdev = fpi_imgdev_get_user_data(dev); unsigned char *data = transfer->buffer; int sum, i; if (transfer->status != LIBUSB_TRANSFER_COMPLETED) { - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); goto out; } else if (transfer->length != transfer->actual_length) { - fpi_ssm_mark_aborted(ssm, -EPROTO); + fpi_ssm_mark_failed(ssm, -EPROTO); goto out; } @@ -594,7 +594,7 @@ static void capture_read_strip_cb(struct libusb_transfer *transfer) } if (sum < 0) { - fpi_ssm_mark_aborted(ssm, sum); + fpi_ssm_mark_failed(ssm, sum); goto out; } fp_dbg("sum=%d", sum); @@ -643,7 +643,7 @@ out: libusb_free_transfer(transfer); } -static void capture_run_state(struct fpi_ssm *ssm) +static void capture_run_state(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct aes1610_dev *aesdev = fpi_imgdev_get_user_data(dev); @@ -672,7 +672,7 @@ static void capture_run_state(struct fpi_ssm *ssm) unsigned char *data; if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); break; } @@ -684,13 +684,13 @@ static void capture_run_state(struct fpi_ssm *ssm) if (r < 0) { g_free(data); libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } break; }; } -static void capture_sm_complete(struct fpi_ssm *ssm) +static void capture_sm_complete(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct aes1610_dev *aesdev = fpi_imgdev_get_user_data(dev); @@ -708,7 +708,7 @@ static void capture_sm_complete(struct fpi_ssm *ssm) static void start_capture(struct fp_img_dev *dev) { struct aes1610_dev *aesdev = fpi_imgdev_get_user_data(dev); - struct fpi_ssm *ssm; + fpi_ssm *ssm; if (aesdev->deactivating) { complete_deactivation(dev); @@ -738,7 +738,7 @@ enum activate_states { ACTIVATE_NUM_STATES, }; -static void activate_run_state(struct fpi_ssm *ssm) +static void activate_run_state(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); @@ -753,7 +753,7 @@ static void activate_run_state(struct fpi_ssm *ssm) } /* jump to finger detection */ -static void activate_sm_complete(struct fpi_ssm *ssm) +static void activate_sm_complete(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); fp_dbg("status %d", fpi_ssm_get_error(ssm)); @@ -767,7 +767,7 @@ static void activate_sm_complete(struct fpi_ssm *ssm) static int dev_activate(struct fp_img_dev *dev, enum fp_imgdev_state state) { struct aes1610_dev *aesdev = fpi_imgdev_get_user_data(dev); - struct fpi_ssm *ssm = fpi_ssm_new(fpi_imgdev_get_dev(dev), activate_run_state, + fpi_ssm *ssm = fpi_ssm_new(fpi_imgdev_get_dev(dev), activate_run_state, ACTIVATE_NUM_STATES); fpi_ssm_set_user_data(ssm, dev); aesdev->read_regs_retry_count = 0; diff --git a/libfprint/drivers/aes2501.c b/libfprint/drivers/aes2501.c index 87879a46..ea626474 100644 --- a/libfprint/drivers/aes2501.c +++ b/libfprint/drivers/aes2501.c @@ -180,22 +180,22 @@ static int regval_from_dump(unsigned char *data, uint8_t target) static void generic_write_regv_cb(struct fp_img_dev *dev, int result, void *user_data) { - struct fpi_ssm *ssm = user_data; + fpi_ssm *ssm = user_data; if (result == 0) fpi_ssm_next_state(ssm); else - fpi_ssm_mark_aborted(ssm, result); + fpi_ssm_mark_failed(ssm, result); } /* check that read succeeded but ignore all data */ static void generic_ignore_data_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; if (transfer->status != LIBUSB_TRANSFER_COMPLETED) - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); else if (transfer->length != transfer->actual_length) - fpi_ssm_mark_aborted(ssm, -EPROTO); + fpi_ssm_mark_failed(ssm, -EPROTO); else fpi_ssm_next_state(ssm); @@ -205,7 +205,7 @@ static void generic_ignore_data_cb(struct libusb_transfer *transfer) /* read the specified number of bytes from the IN endpoint but throw them * away, then increment the SSM */ -static void generic_read_ignore_data(struct fpi_ssm *ssm, size_t bytes) +static void generic_read_ignore_data(fpi_ssm *ssm, size_t bytes) { struct libusb_transfer *transfer = libusb_alloc_transfer(0); unsigned char *data; @@ -213,7 +213,7 @@ static void generic_read_ignore_data(struct fpi_ssm *ssm, size_t bytes) int r; if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); return; } @@ -225,7 +225,7 @@ static void generic_read_ignore_data(struct fpi_ssm *ssm, size_t bytes) if (r < 0) { g_free(data); libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } } @@ -436,7 +436,7 @@ enum capture_states { static void capture_read_strip_cb(struct libusb_transfer *transfer) { unsigned char *stripdata; - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct aes2501_dev *aesdev = fpi_imgdev_get_user_data(dev); unsigned char *data = transfer->buffer; @@ -444,23 +444,23 @@ static void capture_read_strip_cb(struct libusb_transfer *transfer) int threshold; if (transfer->status != LIBUSB_TRANSFER_COMPLETED) { - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); goto out; } else if (transfer->length != transfer->actual_length) { - fpi_ssm_mark_aborted(ssm, -EPROTO); + fpi_ssm_mark_failed(ssm, -EPROTO); goto out; } threshold = regval_from_dump(data + 1 + 192*8 + 1 + 16*2 + 1 + 8, AES2501_REG_DATFMT); if (threshold < 0) { - fpi_ssm_mark_aborted(ssm, threshold); + fpi_ssm_mark_failed(ssm, threshold); goto out; } sum = sum_histogram_values(data + 1 + 192*8, threshold & 0x0f); if (sum < 0) { - fpi_ssm_mark_aborted(ssm, sum); + fpi_ssm_mark_failed(ssm, sum); goto out; } fp_dbg("sum=%d", sum); @@ -520,7 +520,7 @@ out: libusb_free_transfer(transfer); } -static void capture_run_state(struct fpi_ssm *ssm) +static void capture_run_state(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct aes2501_dev *aesdev = fpi_imgdev_get_user_data(dev); @@ -553,7 +553,7 @@ static void capture_run_state(struct fpi_ssm *ssm) unsigned char *data; if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); break; } @@ -565,13 +565,13 @@ static void capture_run_state(struct fpi_ssm *ssm) if (r < 0) { g_free(data); libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } break; }; } -static void capture_sm_complete(struct fpi_ssm *ssm) +static void capture_sm_complete(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct aes2501_dev *aesdev = fpi_imgdev_get_user_data(dev); @@ -589,7 +589,7 @@ static void capture_sm_complete(struct fpi_ssm *ssm) static void start_capture(struct fp_img_dev *dev) { struct aes2501_dev *aesdev = fpi_imgdev_get_user_data(dev); - struct fpi_ssm *ssm; + fpi_ssm *ssm; if (aesdev->deactivating) { complete_deactivation(dev); @@ -713,11 +713,11 @@ enum activate_states { void activate_read_regs_cb(struct fp_img_dev *dev, int status, unsigned char *regs, void *user_data) { - struct fpi_ssm *ssm = user_data; + fpi_ssm *ssm = user_data; struct aes2501_dev *aesdev = fpi_imgdev_get_user_data(dev); if (status != 0) { - fpi_ssm_mark_aborted(ssm, status); + fpi_ssm_mark_failed(ssm, status); } else { fp_dbg("reg 0xaf = %x", regs[0x5f]); if (regs[0x5f] != 0x6b || ++aesdev->read_regs_retry_count == 13) @@ -730,14 +730,14 @@ void activate_read_regs_cb(struct fp_img_dev *dev, int status, static void activate_init3_cb(struct fp_img_dev *dev, int result, void *user_data) { - struct fpi_ssm *ssm = user_data; + fpi_ssm *ssm = user_data; if (result == 0) fpi_ssm_jump_to_state(ssm, READ_REGS); else - fpi_ssm_mark_aborted(ssm, result); + fpi_ssm_mark_failed(ssm, result); } -static void activate_run_state(struct fpi_ssm *ssm) +static void activate_run_state(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); @@ -791,7 +791,7 @@ static void activate_run_state(struct fpi_ssm *ssm) } } -static void activate_sm_complete(struct fpi_ssm *ssm) +static void activate_sm_complete(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); fp_dbg("status %d", fpi_ssm_get_error(ssm)); @@ -805,7 +805,7 @@ static void activate_sm_complete(struct fpi_ssm *ssm) static int dev_activate(struct fp_img_dev *dev, enum fp_imgdev_state state) { struct aes2501_dev *aesdev = fpi_imgdev_get_user_data(dev); - struct fpi_ssm *ssm = fpi_ssm_new(fpi_imgdev_get_dev(dev), activate_run_state, + fpi_ssm *ssm = fpi_ssm_new(fpi_imgdev_get_dev(dev), activate_run_state, ACTIVATE_NUM_STATES); fpi_ssm_set_user_data(ssm, dev); aesdev->read_regs_retry_count = 0; diff --git a/libfprint/drivers/aes2550.c b/libfprint/drivers/aes2550.c index ab4acaab..1916aa15 100644 --- a/libfprint/drivers/aes2550.c +++ b/libfprint/drivers/aes2550.c @@ -200,7 +200,7 @@ enum capture_states { }; /* Returns number of processed bytes */ -static int process_strip_data(struct fpi_ssm *ssm, unsigned char *data) +static int process_strip_data(fpi_ssm *ssm, unsigned char *data) { unsigned char *stripdata; struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); @@ -231,20 +231,20 @@ static int process_strip_data(struct fpi_ssm *ssm, unsigned char *data) static void capture_reqs_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; if ((transfer->status == LIBUSB_TRANSFER_COMPLETED) && (transfer->length == transfer->actual_length)) { fpi_ssm_next_state(ssm); } else { - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } libusb_free_transfer(transfer); } static void capture_set_idle_reqs_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct aes2550_dev *aesdev = fpi_imgdev_get_user_data(dev); @@ -265,14 +265,14 @@ static void capture_set_idle_reqs_cb(struct libusb_transfer *transfer) /* marking machine complete will re-trigger finger detection loop */ fpi_ssm_mark_completed(ssm); } else { - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } libusb_free_transfer(transfer); } static void capture_read_data_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct aes2550_dev *aesdev = fpi_imgdev_get_user_data(dev); unsigned char *data = transfer->buffer; @@ -280,7 +280,7 @@ static void capture_read_data_cb(struct libusb_transfer *transfer) if (transfer->status != LIBUSB_TRANSFER_COMPLETED) { fp_dbg("request is not completed, %d", transfer->status); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); goto out; } @@ -293,7 +293,7 @@ static void capture_read_data_cb(struct libusb_transfer *transfer) r = process_strip_data(ssm, data); if (r < 0) { fp_dbg("Processing strip data failed: %d", r); - fpi_ssm_mark_aborted(ssm, -EPROTO); + fpi_ssm_mark_failed(ssm, -EPROTO); goto out; } aesdev->heartbeat_cnt = 0; @@ -323,7 +323,7 @@ out: libusb_free_transfer(transfer); } -static void capture_run_state(struct fpi_ssm *ssm) +static void capture_run_state(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); int r; @@ -333,7 +333,7 @@ static void capture_run_state(struct fpi_ssm *ssm) { struct libusb_transfer *transfer = libusb_alloc_transfer(0); if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); return; } libusb_fill_bulk_transfer(transfer, fpi_imgdev_get_usb_dev(dev), EP_OUT, capture_reqs, @@ -341,7 +341,7 @@ static void capture_run_state(struct fpi_ssm *ssm) r = libusb_submit_transfer(transfer); if (r < 0) { libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); } } break; @@ -351,7 +351,7 @@ static void capture_run_state(struct fpi_ssm *ssm) unsigned char *data; if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); break; } @@ -363,7 +363,7 @@ static void capture_run_state(struct fpi_ssm *ssm) if (r < 0) { g_free(data); libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } } break; @@ -371,7 +371,7 @@ static void capture_run_state(struct fpi_ssm *ssm) { struct libusb_transfer *transfer = libusb_alloc_transfer(0); if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); return; } libusb_fill_bulk_transfer(transfer, fpi_imgdev_get_usb_dev(dev), EP_OUT, capture_set_idle_reqs, @@ -379,14 +379,14 @@ static void capture_run_state(struct fpi_ssm *ssm) r = libusb_submit_transfer(transfer); if (r < 0) { libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); } } break; }; } -static void capture_sm_complete(struct fpi_ssm *ssm) +static void capture_sm_complete(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct aes2550_dev *aesdev = fpi_imgdev_get_user_data(dev); @@ -404,7 +404,7 @@ static void capture_sm_complete(struct fpi_ssm *ssm) static void start_capture(struct fp_img_dev *dev) { struct aes2550_dev *aesdev = fpi_imgdev_get_user_data(dev); - struct fpi_ssm *ssm; + fpi_ssm *ssm; if (aesdev->deactivating) { complete_deactivation(dev); @@ -444,25 +444,25 @@ enum activate_states { static void init_reqs_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; if ((transfer->status == LIBUSB_TRANSFER_COMPLETED) && (transfer->length == transfer->actual_length)) { fpi_ssm_next_state(ssm); } else { - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } libusb_free_transfer(transfer); } static void init_read_data_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; if (transfer->status == LIBUSB_TRANSFER_COMPLETED) { fpi_ssm_next_state(ssm); } else { - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } g_free(transfer->buffer); libusb_free_transfer(transfer); @@ -472,18 +472,18 @@ static void init_read_data_cb(struct libusb_transfer *transfer) * need more info for implementaion */ static void calibrate_read_data_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; if (transfer->status == LIBUSB_TRANSFER_COMPLETED) { fpi_ssm_next_state(ssm); } else { - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } g_free(transfer->buffer); libusb_free_transfer(transfer); } -static void activate_run_state(struct fpi_ssm *ssm) +static void activate_run_state(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); int r; @@ -493,7 +493,7 @@ static void activate_run_state(struct fpi_ssm *ssm) { struct libusb_transfer *transfer = libusb_alloc_transfer(0); if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); return; } libusb_fill_bulk_transfer(transfer, fpi_imgdev_get_usb_dev(dev), EP_OUT, init_reqs, @@ -501,7 +501,7 @@ static void activate_run_state(struct fpi_ssm *ssm) r = libusb_submit_transfer(transfer); if (r < 0) { libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); } } break; @@ -511,7 +511,7 @@ static void activate_run_state(struct fpi_ssm *ssm) unsigned char *data; if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); break; } @@ -523,7 +523,7 @@ static void activate_run_state(struct fpi_ssm *ssm) if (r < 0) { g_free(data); libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } } break; @@ -531,7 +531,7 @@ static void activate_run_state(struct fpi_ssm *ssm) { struct libusb_transfer *transfer = libusb_alloc_transfer(0); if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); return; } libusb_fill_bulk_transfer(transfer, fpi_imgdev_get_usb_dev(dev), EP_OUT, calibrate_reqs, @@ -539,7 +539,7 @@ static void activate_run_state(struct fpi_ssm *ssm) r = libusb_submit_transfer(transfer); if (r < 0) { libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); } } break; @@ -549,7 +549,7 @@ static void activate_run_state(struct fpi_ssm *ssm) unsigned char *data; if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); break; } @@ -561,14 +561,14 @@ static void activate_run_state(struct fpi_ssm *ssm) if (r < 0) { g_free(data); libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } } break; } } -static void activate_sm_complete(struct fpi_ssm *ssm) +static void activate_sm_complete(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); fp_dbg("status %d", fpi_ssm_get_error(ssm)); @@ -581,7 +581,7 @@ static void activate_sm_complete(struct fpi_ssm *ssm) static int dev_activate(struct fp_img_dev *dev, enum fp_imgdev_state state) { - struct fpi_ssm *ssm = fpi_ssm_new(fpi_imgdev_get_dev(dev), activate_run_state, + fpi_ssm *ssm = fpi_ssm_new(fpi_imgdev_get_dev(dev), activate_run_state, ACTIVATE_NUM_STATES); fpi_ssm_set_user_data(ssm, dev); fpi_ssm_start(ssm, activate_sm_complete); diff --git a/libfprint/drivers/aesx660.c b/libfprint/drivers/aesx660.c index e443e219..15852552 100644 --- a/libfprint/drivers/aesx660.c +++ b/libfprint/drivers/aesx660.c @@ -37,7 +37,7 @@ static void complete_deactivation(struct fp_img_dev *dev); #define min(a, b) (((a) < (b)) ? (a) : (b)) -static void aesX660_send_cmd_timeout(struct fpi_ssm *ssm, const unsigned char *cmd, +static void aesX660_send_cmd_timeout(fpi_ssm *ssm, const unsigned char *cmd, size_t cmd_len, libusb_transfer_cb_fn callback, int timeout) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); @@ -45,7 +45,7 @@ static void aesX660_send_cmd_timeout(struct fpi_ssm *ssm, const unsigned char *c int r; if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); return; } @@ -56,17 +56,17 @@ static void aesX660_send_cmd_timeout(struct fpi_ssm *ssm, const unsigned char *c if (r < 0) { fp_dbg("failed to submit transfer\n"); libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); } } -static void aesX660_send_cmd(struct fpi_ssm *ssm, const unsigned char *cmd, +static void aesX660_send_cmd(fpi_ssm *ssm, const unsigned char *cmd, size_t cmd_len, libusb_transfer_cb_fn callback) { return aesX660_send_cmd_timeout(ssm, cmd, cmd_len, callback, BULK_TIMEOUT); } -static void aesX660_read_response(struct fpi_ssm *ssm, size_t buf_len, +static void aesX660_read_response(fpi_ssm *ssm, size_t buf_len, libusb_transfer_cb_fn callback) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); @@ -75,7 +75,7 @@ static void aesX660_read_response(struct fpi_ssm *ssm, size_t buf_len, int r; if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); return; } @@ -89,13 +89,13 @@ static void aesX660_read_response(struct fpi_ssm *ssm, size_t buf_len, fp_dbg("Failed to submit rx transfer: %d\n", r); g_free(data); libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } } static void aesX660_send_cmd_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; if ((transfer->status == LIBUSB_TRANSFER_COMPLETED) && (transfer->length == transfer->actual_length)) { @@ -103,25 +103,25 @@ static void aesX660_send_cmd_cb(struct libusb_transfer *transfer) } else { fp_dbg("tx transfer status: %d, actual_len: %.4x\n", transfer->status, transfer->actual_length); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } libusb_free_transfer(transfer); } static void aesX660_read_calibrate_data_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; unsigned char *data = transfer->buffer; if ((transfer->status != LIBUSB_TRANSFER_COMPLETED) || (transfer->length != transfer->actual_length)) { - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); goto out; } /* Calibrate response was read correctly? */ if (data[AESX660_RESPONSE_TYPE_OFFSET] != AESX660_CALIBRATE_RESPONSE) { fp_dbg("Bogus calibrate response: %.2x\n", data[0]); - fpi_ssm_mark_aborted(ssm, -EPROTO); + fpi_ssm_mark_failed(ssm, -EPROTO); goto out; } @@ -143,7 +143,7 @@ enum finger_det_states { static void finger_det_read_fd_data_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct aesX660_dev *aesdev = fpi_imgdev_get_user_data(dev); unsigned char *data = transfer->buffer; @@ -159,13 +159,13 @@ static void finger_det_read_fd_data_cb(struct libusb_transfer *transfer) if ((transfer->status != LIBUSB_TRANSFER_COMPLETED) || (transfer->length != transfer->actual_length)) { fp_dbg("Failed to read FD data\n"); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); goto out; } if (data[AESX660_RESPONSE_TYPE_OFFSET] != AESX660_FINGER_DET_RESPONSE) { fp_dbg("Bogus FD response: %.2x\n", data[0]); - fpi_ssm_mark_aborted(ssm, -EPROTO); + fpi_ssm_mark_failed(ssm, -EPROTO); goto out; } @@ -184,18 +184,18 @@ out: static void finger_det_set_idle_cmd_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; if ((transfer->status == LIBUSB_TRANSFER_COMPLETED) && (transfer->length == transfer->actual_length)) { fpi_ssm_mark_completed(ssm); } else { - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } libusb_free_transfer(transfer); } -static void finger_det_sm_complete(struct fpi_ssm *ssm) +static void finger_det_sm_complete(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct aesX660_dev *aesdev = fpi_imgdev_get_user_data(dev); @@ -215,7 +215,7 @@ static void finger_det_sm_complete(struct fpi_ssm *ssm) } } -static void finger_det_run_state(struct fpi_ssm *ssm) +static void finger_det_run_state(fpi_ssm *ssm) { switch (fpi_ssm_get_cur_state(ssm)) { case FINGER_DET_SEND_LED_CMD: @@ -239,7 +239,7 @@ static void finger_det_run_state(struct fpi_ssm *ssm) static void start_finger_detection(struct fp_img_dev *dev) { - struct fpi_ssm *ssm; + fpi_ssm *ssm; struct aesX660_dev *aesdev = fpi_imgdev_get_user_data(dev); if (aesdev->deactivating) { @@ -263,7 +263,7 @@ enum capture_states { }; /* Returns number of processed bytes */ -static int process_stripe_data(struct fpi_ssm *ssm, unsigned char *data) +static int process_stripe_data(fpi_ssm *ssm, unsigned char *data) { struct fpi_frame *stripe; unsigned char *stripdata; @@ -294,7 +294,7 @@ static int process_stripe_data(struct fpi_ssm *ssm, unsigned char *data) static void capture_set_idle_cmd_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct aesX660_dev *aesdev = fpi_imgdev_get_user_data(dev); @@ -313,14 +313,14 @@ static void capture_set_idle_cmd_cb(struct libusb_transfer *transfer) fpi_imgdev_report_finger_status(dev, FALSE); fpi_ssm_mark_completed(ssm); } else { - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } libusb_free_transfer(transfer); } static void capture_read_stripe_data_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct aesX660_dev *aesdev = fpi_imgdev_get_user_data(dev); unsigned char *data = transfer->buffer; @@ -328,7 +328,7 @@ static void capture_read_stripe_data_cb(struct libusb_transfer *transfer) size_t copied, actual_len = transfer->actual_length; if (transfer->status != LIBUSB_TRANSFER_COMPLETED) { - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); goto out; } @@ -371,7 +371,7 @@ out: libusb_free_transfer(transfer); } -static void capture_run_state(struct fpi_ssm *ssm) +static void capture_run_state(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct aesX660_dev *aesdev = fpi_imgdev_get_user_data(dev); @@ -400,7 +400,7 @@ static void capture_run_state(struct fpi_ssm *ssm) } } -static void capture_sm_complete(struct fpi_ssm *ssm) +static void capture_sm_complete(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct aesX660_dev *aesdev = fpi_imgdev_get_user_data(dev); @@ -420,7 +420,7 @@ static void capture_sm_complete(struct fpi_ssm *ssm) static void start_capture(struct fp_img_dev *dev) { struct aesX660_dev *aesdev = fpi_imgdev_get_user_data(dev); - struct fpi_ssm *ssm; + fpi_ssm *ssm; if (aesdev->deactivating) { complete_deactivation(dev); @@ -448,7 +448,7 @@ enum activate_states { static void activate_read_id_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct aesX660_dev *aesdev = fpi_imgdev_get_user_data(dev); unsigned char *data = transfer->buffer; @@ -456,7 +456,7 @@ static void activate_read_id_cb(struct libusb_transfer *transfer) if ((transfer->status != LIBUSB_TRANSFER_COMPLETED) || (transfer->length != transfer->actual_length)) { fp_dbg("read_id cmd failed\n"); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); goto out; } /* ID was read correctly */ @@ -465,7 +465,7 @@ static void activate_read_id_cb(struct libusb_transfer *transfer) data[4], data[3], data[5], data[6], data[7]); } else { fp_dbg("Bogus read ID response: %.2x\n", data[AESX660_RESPONSE_TYPE_OFFSET]); - fpi_ssm_mark_aborted(ssm, -EPROTO); + fpi_ssm_mark_failed(ssm, -EPROTO); goto out; } @@ -487,7 +487,7 @@ static void activate_read_id_cb(struct libusb_transfer *transfer) break; default: fp_dbg("Failed to init device! init status: %.2x\n", data[7]); - fpi_ssm_mark_aborted(ssm, -EPROTO); + fpi_ssm_mark_failed(ssm, -EPROTO); break; } @@ -499,7 +499,7 @@ out: static void activate_read_init_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct aesX660_dev *aesdev = fpi_imgdev_get_user_data(dev); unsigned char *data = transfer->buffer; @@ -509,14 +509,14 @@ static void activate_read_init_cb(struct libusb_transfer *transfer) if ((transfer->status != LIBUSB_TRANSFER_COMPLETED) || (transfer->length != transfer->actual_length)) { fp_dbg("read_init transfer status: %d, actual_len: %d\n", transfer->status, transfer->actual_length); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); goto out; } /* ID was read correctly */ if (data[0] != 0x42 || data[3] != 0x01) { fp_dbg("Bogus read init response: %.2x %.2x\n", data[0], data[3]); - fpi_ssm_mark_aborted(ssm, -EPROTO); + fpi_ssm_mark_failed(ssm, -EPROTO); goto out; } aesdev->init_cmd_idx++; @@ -534,7 +534,7 @@ out: libusb_free_transfer(transfer); } -static void activate_run_state(struct fpi_ssm *ssm) +static void activate_run_state(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct aesX660_dev *aesdev = fpi_imgdev_get_user_data(dev); @@ -580,7 +580,7 @@ static void activate_run_state(struct fpi_ssm *ssm) } } -static void activate_sm_complete(struct fpi_ssm *ssm) +static void activate_sm_complete(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); int err = fpi_ssm_get_error(ssm); @@ -594,7 +594,7 @@ static void activate_sm_complete(struct fpi_ssm *ssm) int aesX660_dev_activate(struct fp_img_dev *dev, enum fp_imgdev_state state) { - struct fpi_ssm *ssm = fpi_ssm_new(fpi_imgdev_get_dev(dev), activate_run_state, + fpi_ssm *ssm = fpi_ssm_new(fpi_imgdev_get_dev(dev), activate_run_state, ACTIVATE_NUM_STATES); fpi_ssm_set_user_data(ssm, dev); fpi_ssm_start(ssm, activate_sm_complete); diff --git a/libfprint/drivers/elan.c b/libfprint/drivers/elan.c index 8457405a..a3b3e538 100644 --- a/libfprint/drivers/elan.c +++ b/libfprint/drivers/elan.c @@ -313,7 +313,7 @@ static void elan_submit_image(struct fp_img_dev *dev) fpi_imgdev_image_captured(dev, img); } -static void elan_cmd_done(struct fpi_ssm *ssm) +static void elan_cmd_done(fpi_ssm *ssm) { G_DEBUG_HERE(); fpi_ssm_next_state(ssm); @@ -321,7 +321,7 @@ static void elan_cmd_done(struct fpi_ssm *ssm) static void elan_cmd_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct elan_dev *elandev = fpi_imgdev_get_user_data(dev); @@ -335,7 +335,7 @@ static void elan_cmd_cb(struct libusb_transfer *transfer) fp_dbg("transfer length error: expected %d, got %d", transfer->length, transfer->actual_length); elan_dev_reset(elandev); - fpi_ssm_mark_aborted(ssm, -EPROTO); + fpi_ssm_mark_failed(ssm, -EPROTO); } else if (transfer->endpoint & LIBUSB_ENDPOINT_IN) { /* just finished receiving */ dbg_buf(elandev->last_read, transfer->actual_length); @@ -348,21 +348,21 @@ static void elan_cmd_cb(struct libusb_transfer *transfer) break; case LIBUSB_TRANSFER_CANCELLED: fp_dbg("transfer cancelled"); - fpi_ssm_mark_aborted(ssm, -ECANCELED); + fpi_ssm_mark_failed(ssm, -ECANCELED); elan_deactivate(dev); break; case LIBUSB_TRANSFER_TIMED_OUT: fp_dbg("transfer timed out"); - fpi_ssm_mark_aborted(ssm, -ETIMEDOUT); + fpi_ssm_mark_failed(ssm, -ETIMEDOUT); break; default: fp_dbg("transfer failed: %d", transfer->status); elan_dev_reset(elandev); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } } -static void elan_cmd_read(struct fpi_ssm *ssm) +static void elan_cmd_read(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct elan_dev *elandev = fpi_imgdev_get_user_data(dev); @@ -383,7 +383,7 @@ static void elan_cmd_read(struct fpi_ssm *ssm) struct libusb_transfer *transfer = libusb_alloc_transfer(0); if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); return; } elandev->cur_transfer = transfer; @@ -398,10 +398,10 @@ static void elan_cmd_read(struct fpi_ssm *ssm) transfer->flags = LIBUSB_TRANSFER_FREE_TRANSFER; int r = libusb_submit_transfer(transfer); if (r < 0) - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } -static void elan_run_cmd(struct fpi_ssm *ssm, const struct elan_cmd *cmd, +static void elan_run_cmd(fpi_ssm *ssm, const struct elan_cmd *cmd, int cmd_timeout) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); @@ -421,7 +421,7 @@ static void elan_run_cmd(struct fpi_ssm *ssm, const struct elan_cmd *cmd, struct libusb_transfer *transfer = libusb_alloc_transfer(0); if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); return; } elandev->cur_transfer = transfer; @@ -432,7 +432,7 @@ static void elan_run_cmd(struct fpi_ssm *ssm, const struct elan_cmd *cmd, transfer->flags = LIBUSB_TRANSFER_FREE_TRANSFER; int r = libusb_submit_transfer(transfer); if (r < 0) - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } enum stop_capture_states { @@ -440,7 +440,7 @@ enum stop_capture_states { STOP_CAPTURE_NUM_STATES, }; -static void stop_capture_run_state(struct fpi_ssm *ssm) +static void stop_capture_run_state(fpi_ssm *ssm) { G_DEBUG_HERE(); @@ -451,7 +451,7 @@ static void stop_capture_run_state(struct fpi_ssm *ssm) } } -static void stop_capture_complete(struct fpi_ssm *ssm) +static void stop_capture_complete(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct elan_dev *elandev = fpi_imgdev_get_user_data(dev); @@ -485,7 +485,7 @@ static void elan_stop_capture(struct fp_img_dev *dev) elan_dev_reset(elandev); - struct fpi_ssm *ssm = + fpi_ssm *ssm = fpi_ssm_new(fpi_imgdev_get_dev(dev), stop_capture_run_state, STOP_CAPTURE_NUM_STATES); fpi_ssm_set_user_data(ssm, dev); @@ -500,7 +500,7 @@ enum capture_states { CAPTURE_NUM_STATES, }; -static void capture_run_state(struct fpi_ssm *ssm) +static void capture_run_state(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct elan_dev *elandev = fpi_imgdev_get_user_data(dev); @@ -521,12 +521,12 @@ static void capture_run_state(struct fpi_ssm *ssm) fpi_imgdev_report_finger_status(dev, TRUE); elan_run_cmd(ssm, &get_image_cmd, ELAN_CMD_TIMEOUT); } else - fpi_ssm_mark_aborted(ssm, -EBADMSG); + fpi_ssm_mark_failed(ssm, -EBADMSG); break; case CAPTURE_CHECK_ENOUGH_FRAMES: r = elan_save_img_frame(elandev); if (r < 0) - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); else if (elandev->num_frames < ELAN_MAX_FRAMES) { /* quickly stop if finger is removed */ elandev->cmd_timeout = ELAN_FINGER_TIMEOUT; @@ -538,7 +538,7 @@ static void capture_run_state(struct fpi_ssm *ssm) } } -static void capture_complete(struct fpi_ssm *ssm) +static void capture_complete(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct elan_dev *elandev = fpi_imgdev_get_user_data(dev); @@ -578,7 +578,7 @@ static void elan_capture(struct fp_img_dev *dev) G_DEBUG_HERE(); elan_dev_reset(elandev); - struct fpi_ssm *ssm = + fpi_ssm *ssm = fpi_ssm_new(fpi_imgdev_get_dev(dev), capture_run_state, CAPTURE_NUM_STATES); fpi_ssm_set_user_data(ssm, dev); fpi_ssm_start(ssm, capture_complete); @@ -586,7 +586,7 @@ static void elan_capture(struct fp_img_dev *dev) static void fpi_ssm_next_state_async(void *data) { - fpi_ssm_next_state((struct fpi_ssm *)data); + fpi_ssm_next_state((fpi_ssm *)data); } /* this function needs to have elandev->background and elandev->last_read to be @@ -624,7 +624,7 @@ enum calibrate_states { CALIBRATE_NUM_STATES, }; -static void calibrate_run_state(struct fpi_ssm *ssm) +static void calibrate_run_state(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct elan_dev *elandev = fpi_imgdev_get_user_data(dev); @@ -660,7 +660,7 @@ static void calibrate_run_state(struct fpi_ssm *ssm) ELAN_CMD_TIMEOUT); else { fp_dbg("calibration failed"); - fpi_ssm_mark_aborted(ssm, -1); + fpi_ssm_mark_failed(ssm, -1); } break; case CALIBRATE_CHECK_STATUS: @@ -680,7 +680,7 @@ static void calibrate_run_state(struct fpi_ssm *ssm) && elandev->last_read[0] == 0x01) elandev->calib_status = 0x01; if (!fpi_timeout_add(50, fpi_ssm_next_state_async, ssm)) - fpi_ssm_mark_aborted(ssm, -ETIME); + fpi_ssm_mark_failed(ssm, -ETIME); } break; case CALIBRATE_REPEAT_STATUS: @@ -689,7 +689,7 @@ static void calibrate_run_state(struct fpi_ssm *ssm) } } -static void calibrate_complete(struct fpi_ssm *ssm) +static void calibrate_complete(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); @@ -711,7 +711,7 @@ static void elan_calibrate(struct fp_img_dev *dev) elan_dev_reset(elandev); elandev->calib_atts_left = ELAN_CALIBRATION_ATTEMPTS; - struct fpi_ssm *ssm = fpi_ssm_new(fpi_imgdev_get_dev(dev), calibrate_run_state, + fpi_ssm *ssm = fpi_ssm_new(fpi_imgdev_get_dev(dev), calibrate_run_state, CALIBRATE_NUM_STATES); fpi_ssm_set_user_data(ssm, dev); fpi_ssm_start(ssm, calibrate_complete); @@ -726,7 +726,7 @@ enum activate_states { ACTIVATE_NUM_STATES, }; -static void activate_run_state(struct fpi_ssm *ssm) +static void activate_run_state(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct elan_dev *elandev = fpi_imgdev_get_user_data(dev); @@ -770,7 +770,7 @@ static void activate_run_state(struct fpi_ssm *ssm) } } -static void activate_complete(struct fpi_ssm *ssm) +static void activate_complete(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); @@ -790,7 +790,7 @@ static void elan_activate(struct fp_img_dev *dev) G_DEBUG_HERE(); elan_dev_reset(elandev); - struct fpi_ssm *ssm = + fpi_ssm *ssm = fpi_ssm_new(fpi_imgdev_get_dev(dev), activate_run_state, ACTIVATE_NUM_STATES); fpi_ssm_set_user_data(ssm, dev); fpi_ssm_start(ssm, activate_complete); diff --git a/libfprint/drivers/elan.h b/libfprint/drivers/elan.h index 8a321b47..fc36bb54 100644 --- a/libfprint/drivers/elan.h +++ b/libfprint/drivers/elan.h @@ -210,8 +210,8 @@ static const struct usb_id elan_id_table[] = { {0, 0, 0,}, }; -static void elan_cmd_done(struct fpi_ssm *ssm); -static void elan_cmd_read(struct fpi_ssm *ssm); +static void elan_cmd_done(fpi_ssm *ssm); +static void elan_cmd_read(fpi_ssm *ssm); static void elan_calibrate(struct fp_img_dev *dev); static void elan_capture(struct fp_img_dev *dev); diff --git a/libfprint/drivers/etes603.c b/libfprint/drivers/etes603.c index fdaf7f20..2e2799ba 100644 --- a/libfprint/drivers/etes603.c +++ b/libfprint/drivers/etes603.c @@ -669,14 +669,14 @@ static int async_tx(struct fp_img_dev *idev, unsigned int ep, void *cb, static void async_tx_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm); struct etes603_dev *dev = fpi_imgdev_get_user_data(idev); if (transfer->status != LIBUSB_TRANSFER_COMPLETED) { fp_warn("transfer is not completed (status=%d)", transfer->status); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); libusb_free_transfer(transfer); } else { unsigned char endpoint = transfer->endpoint; @@ -691,7 +691,7 @@ static void async_tx_cb(struct libusb_transfer *transfer) length, actual_length); /* Chained with the answer */ if (async_tx(idev, EP_IN, async_tx_cb, ssm)) - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } else if (endpoint == EP_IN) { dev->ans_len = actual_length; fpi_ssm_next_state(ssm); @@ -699,7 +699,7 @@ static void async_tx_cb(struct libusb_transfer *transfer) } } -static void m_exit_state(struct fpi_ssm *ssm) +static void m_exit_state(fpi_ssm *ssm) { struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm); struct etes603_dev *dev = fpi_imgdev_get_user_data(idev); @@ -724,10 +724,10 @@ static void m_exit_state(struct fpi_ssm *ssm) return; err: - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } -static void m_exit_complete(struct fpi_ssm *ssm) +static void m_exit_complete(fpi_ssm *ssm) { struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm); @@ -742,14 +742,14 @@ static void m_exit_complete(struct fpi_ssm *ssm) static void m_exit_start(struct fp_img_dev *idev) { - struct fpi_ssm *ssm = fpi_ssm_new(fpi_imgdev_get_dev(idev), m_exit_state, + fpi_ssm *ssm = fpi_ssm_new(fpi_imgdev_get_dev(idev), m_exit_state, EXIT_NUM_STATES); fp_dbg("Switching device to idle mode"); fpi_ssm_set_user_data(ssm, idev); fpi_ssm_start(ssm, m_exit_complete); } -static void m_capture_state(struct fpi_ssm *ssm) +static void m_capture_state(fpi_ssm *ssm) { struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm); struct etes603_dev *dev = fpi_imgdev_get_user_data(idev); @@ -827,10 +827,10 @@ static void m_capture_state(struct fpi_ssm *ssm) return; err: - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } -static void m_capture_complete(struct fpi_ssm *ssm) +static void m_capture_complete(fpi_ssm *ssm) { struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm); struct etes603_dev *dev = fpi_imgdev_get_user_data(idev); @@ -852,7 +852,7 @@ static void m_capture_complete(struct fpi_ssm *ssm) } } -static void m_finger_state(struct fpi_ssm *ssm) +static void m_finger_state(fpi_ssm *ssm) { struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm); struct etes603_dev *dev = fpi_imgdev_get_user_data(idev); @@ -945,16 +945,16 @@ static void m_finger_state(struct fpi_ssm *ssm) return; err: - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } -static void m_finger_complete(struct fpi_ssm *ssm) +static void m_finger_complete(fpi_ssm *ssm) { struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm); struct etes603_dev *dev = fpi_imgdev_get_user_data(idev); if (!fpi_ssm_get_error(ssm)) { - struct fpi_ssm *ssm_cap; + fpi_ssm *ssm_cap; ssm_cap = fpi_ssm_new(fpi_imgdev_get_dev(idev), m_capture_state, CAP_NUM_STATES); fpi_ssm_set_user_data(ssm_cap, idev); @@ -973,7 +973,7 @@ static void m_finger_complete(struct fpi_ssm *ssm) static void m_start_fingerdetect(struct fp_img_dev *idev) { - struct fpi_ssm *ssmf; + fpi_ssm *ssmf; ssmf = fpi_ssm_new(fpi_imgdev_get_dev(idev), m_finger_state, FGR_NUM_STATES); fpi_ssm_set_user_data(ssmf, idev); fpi_ssm_start(ssmf, m_finger_complete); @@ -982,7 +982,7 @@ static void m_start_fingerdetect(struct fp_img_dev *idev) /* * Tune value of VRT and VRB for contrast and brightness. */ -static void m_tunevrb_state(struct fpi_ssm *ssm) +static void m_tunevrb_state(fpi_ssm *ssm) { struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm); struct etes603_dev *dev = fpi_imgdev_get_user_data(idev); @@ -1131,10 +1131,10 @@ static void m_tunevrb_state(struct fpi_ssm *ssm) return; err: - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } -static void m_tunevrb_complete(struct fpi_ssm *ssm) +static void m_tunevrb_complete(fpi_ssm *ssm) { struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm); @@ -1156,7 +1156,7 @@ static void m_tunevrb_complete(struct fpi_ssm *ssm) * This function tunes the DCoffset value and adjusts the gain value if * required. */ -static void m_tunedc_state(struct fpi_ssm *ssm) +static void m_tunedc_state(fpi_ssm *ssm) { struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm); struct etes603_dev *dev = fpi_imgdev_get_user_data(idev); @@ -1255,15 +1255,15 @@ static void m_tunedc_state(struct fpi_ssm *ssm) return; err: - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } -static void m_tunedc_complete(struct fpi_ssm *ssm) +static void m_tunedc_complete(fpi_ssm *ssm) { struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm); if (!fpi_ssm_get_error(ssm)) { - struct fpi_ssm *ssm_tune; + fpi_ssm *ssm_tune; ssm_tune = fpi_ssm_new(fpi_imgdev_get_dev(idev), m_tunevrb_state, TUNEVRB_NUM_STATES); fpi_ssm_set_user_data(ssm_tune, idev); @@ -1278,7 +1278,7 @@ static void m_tunedc_complete(struct fpi_ssm *ssm) fpi_ssm_free(ssm); } -static void m_init_state(struct fpi_ssm *ssm) +static void m_init_state(fpi_ssm *ssm) { struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm); struct etes603_dev *dev = fpi_imgdev_get_user_data(idev); @@ -1375,15 +1375,15 @@ static void m_init_state(struct fpi_ssm *ssm) return; err: - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } -static void m_init_complete(struct fpi_ssm *ssm) +static void m_init_complete(fpi_ssm *ssm) { struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm); if (!fpi_ssm_get_error(ssm)) { - struct fpi_ssm *ssm_tune; + fpi_ssm *ssm_tune; ssm_tune = fpi_ssm_new(fpi_imgdev_get_dev(idev), m_tunedc_state, TUNEDC_NUM_STATES); fpi_ssm_set_user_data(ssm_tune, idev); @@ -1401,7 +1401,7 @@ static void m_init_complete(struct fpi_ssm *ssm) static int dev_activate(struct fp_img_dev *idev, enum fp_imgdev_state state) { struct etes603_dev *dev = fpi_imgdev_get_user_data(idev); - struct fpi_ssm *ssm; + fpi_ssm *ssm; g_assert(dev); diff --git a/libfprint/drivers/upeksonly.c b/libfprint/drivers/upeksonly.c index 9cccb865..62a61a15 100644 --- a/libfprint/drivers/upeksonly.c +++ b/libfprint/drivers/upeksonly.c @@ -81,7 +81,7 @@ struct sonly_dev { int dev_model; int img_width; - struct fpi_ssm *loopsm; + fpi_ssm *loopsm; struct libusb_transfer *img_transfer[NUM_BULK_TRANSFERS]; struct img_transfer_data *img_transfer_data; int num_flying; @@ -100,7 +100,7 @@ struct sonly_dev { enum sonly_kill_transfers_action killing_transfers; int kill_status_code; union { - struct fpi_ssm *kill_ssm; + fpi_ssm *kill_ssm; void (*kill_cb)(struct fp_img_dev *dev); }; }; @@ -180,7 +180,7 @@ static void last_transfer_killed(struct fp_img_dev *dev) switch (sdev->killing_transfers) { case ABORT_SSM: fp_dbg("abort ssm error %d", sdev->kill_status_code); - fpi_ssm_mark_aborted(sdev->kill_ssm, sdev->kill_status_code); + fpi_ssm_mark_failed(sdev->kill_ssm, sdev->kill_status_code); return; case ITERATE_SSM: fp_dbg("iterate ssm"); @@ -520,7 +520,7 @@ static void img_data_cb(struct libusb_transfer *transfer) /***** STATE MACHINE HELPERS *****/ struct write_regs_data { - struct fpi_ssm *ssm; + fpi_ssm *ssm; struct libusb_transfer *transfer; const struct sonly_regwrite *regs; size_t num_regs; @@ -534,7 +534,7 @@ static void write_regs_finished(struct write_regs_data *wrdata, int result) if (result == 0) fpi_ssm_next_state(wrdata->ssm); else - fpi_ssm_mark_aborted(wrdata->ssm, result); + fpi_ssm_mark_failed(wrdata->ssm, result); g_free(wrdata); } @@ -574,7 +574,7 @@ static void write_regs_cb(struct libusb_transfer *transfer) write_regs_iterate(wrdata); } -static void sm_write_regs(struct fpi_ssm *ssm, +static void sm_write_regs(fpi_ssm *ssm, const struct sonly_regwrite *regs, size_t num_regs) { struct write_regs_data *wrdata = g_malloc(sizeof(*wrdata)); @@ -584,7 +584,7 @@ static void sm_write_regs(struct fpi_ssm *ssm, wrdata->transfer = libusb_alloc_transfer(0); if (!wrdata->transfer) { g_free(wrdata); - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); return; } @@ -605,16 +605,16 @@ static void sm_write_regs(struct fpi_ssm *ssm, static void sm_write_reg_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; g_free(transfer->buffer); if (transfer->status != LIBUSB_TRANSFER_COMPLETED) - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); else fpi_ssm_next_state(ssm); } -static void sm_write_reg(struct fpi_ssm *ssm, uint8_t reg, uint8_t value) +static void sm_write_reg(fpi_ssm *ssm, uint8_t reg, uint8_t value) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct libusb_transfer *transfer = libusb_alloc_transfer(0); @@ -622,7 +622,7 @@ static void sm_write_reg(struct fpi_ssm *ssm, uint8_t reg, uint8_t value) int r; if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); return; } @@ -641,18 +641,18 @@ static void sm_write_reg(struct fpi_ssm *ssm, uint8_t reg, uint8_t value) if (r < 0) { g_free(data); libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } } static void sm_read_reg_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct sonly_dev *sdev = fpi_imgdev_get_user_data(dev); if (transfer->status != LIBUSB_TRANSFER_COMPLETED) { - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } else { sdev->read_reg_result = libusb_control_transfer_get_data(transfer)[0]; fp_dbg("read reg result = %02x", sdev->read_reg_result); @@ -662,7 +662,7 @@ static void sm_read_reg_cb(struct libusb_transfer *transfer) g_free(transfer->buffer); } -static void sm_read_reg(struct fpi_ssm *ssm, uint8_t reg) +static void sm_read_reg(fpi_ssm *ssm, uint8_t reg) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct libusb_transfer *transfer = libusb_alloc_transfer(0); @@ -670,7 +670,7 @@ static void sm_read_reg(struct fpi_ssm *ssm, uint8_t reg) int r; if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); return; } @@ -687,19 +687,19 @@ static void sm_read_reg(struct fpi_ssm *ssm, uint8_t reg) if (r < 0) { g_free(data); libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } } static void sm_await_intr_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct sonly_dev *sdev = fpi_imgdev_get_user_data(dev); if (transfer->status != LIBUSB_TRANSFER_COMPLETED) { g_free(transfer->buffer); - fpi_ssm_mark_aborted(ssm, transfer->status); + fpi_ssm_mark_failed(ssm, transfer->status); return; } @@ -713,7 +713,7 @@ static void sm_await_intr_cb(struct libusb_transfer *transfer) fpi_ssm_next_state(ssm); } -static void sm_await_intr(struct fpi_ssm *ssm) +static void sm_await_intr(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct libusb_transfer *transfer = libusb_alloc_transfer(0); @@ -721,7 +721,7 @@ static void sm_await_intr(struct fpi_ssm *ssm) int r; if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); return; } @@ -737,7 +737,7 @@ static void sm_await_intr(struct fpi_ssm *ssm) if (r < 0) { libusb_free_transfer(transfer); g_free(data); - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } } @@ -763,7 +763,7 @@ enum awfsm_1000_states { AWFSM_1000_NUM_STATES, }; -static void awfsm_2016_run_state(struct fpi_ssm *ssm) +static void awfsm_2016_run_state(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct sonly_dev *sdev = fpi_imgdev_get_user_data(dev); @@ -810,7 +810,7 @@ static void awfsm_2016_run_state(struct fpi_ssm *ssm) } } -static void awfsm_1000_run_state(struct fpi_ssm *ssm) +static void awfsm_1000_run_state(fpi_ssm *ssm) { switch (fpi_ssm_get_cur_state(ssm)) { case AWFSM_1000_WRITEV_1: @@ -851,7 +851,7 @@ enum capsm_1001_states { CAPSM_1001_NUM_STATES, }; -static void capsm_fire_bulk(struct fpi_ssm *ssm) +static void capsm_fire_bulk(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct sonly_dev *sdev = fpi_imgdev_get_user_data(dev); @@ -861,7 +861,7 @@ static void capsm_fire_bulk(struct fpi_ssm *ssm) if (r < 0) { if (i == 0) { /* first one failed: easy peasy */ - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); return; } @@ -881,7 +881,7 @@ static void capsm_fire_bulk(struct fpi_ssm *ssm) fpi_ssm_next_state(ssm); } -static void capsm_2016_run_state(struct fpi_ssm *ssm) +static void capsm_2016_run_state(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct sonly_dev *sdev = fpi_imgdev_get_user_data(dev); @@ -913,7 +913,7 @@ static void capsm_2016_run_state(struct fpi_ssm *ssm) } } -static void capsm_1000_run_state(struct fpi_ssm *ssm) +static void capsm_1000_run_state(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct sonly_dev *sdev = fpi_imgdev_get_user_data(dev); @@ -939,7 +939,7 @@ static void capsm_1000_run_state(struct fpi_ssm *ssm) } } -static void capsm_1001_run_state(struct fpi_ssm *ssm) +static void capsm_1001_run_state(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct sonly_dev *sdev = fpi_imgdev_get_user_data(dev); @@ -994,7 +994,7 @@ enum deinitsm_1001_states { DEINITSM_1001_NUM_STATES, }; -static void deinitsm_2016_run_state(struct fpi_ssm *ssm) +static void deinitsm_2016_run_state(fpi_ssm *ssm) { switch (fpi_ssm_get_cur_state(ssm)) { case DEINITSM_2016_WRITEV: @@ -1003,7 +1003,7 @@ static void deinitsm_2016_run_state(struct fpi_ssm *ssm) } } -static void deinitsm_1000_run_state(struct fpi_ssm *ssm) +static void deinitsm_1000_run_state(fpi_ssm *ssm) { switch (fpi_ssm_get_cur_state(ssm)) { case DEINITSM_1000_WRITEV: @@ -1012,7 +1012,7 @@ static void deinitsm_1000_run_state(struct fpi_ssm *ssm) } } -static void deinitsm_1001_run_state(struct fpi_ssm *ssm) +static void deinitsm_1001_run_state(fpi_ssm *ssm) { switch (fpi_ssm_get_cur_state(ssm)) { case DEINITSM_1001_WRITEV: @@ -1048,7 +1048,7 @@ enum initsm_1001_states { INITSM_1001_NUM_STATES, }; -static void initsm_2016_run_state(struct fpi_ssm *ssm) +static void initsm_2016_run_state(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct sonly_dev *sdev = fpi_imgdev_get_user_data(dev); @@ -1078,7 +1078,7 @@ static void initsm_2016_run_state(struct fpi_ssm *ssm) } } -static void initsm_1000_run_state(struct fpi_ssm *ssm) +static void initsm_1000_run_state(fpi_ssm *ssm) { switch (fpi_ssm_get_cur_state(ssm)) { case INITSM_1000_WRITEV_1: @@ -1087,7 +1087,7 @@ static void initsm_1000_run_state(struct fpi_ssm *ssm) } } -static void initsm_1001_run_state(struct fpi_ssm *ssm) +static void initsm_1001_run_state(fpi_ssm *ssm) { switch (fpi_ssm_get_cur_state(ssm)) { case INITSM_1001_WRITEV_1: @@ -1120,7 +1120,7 @@ enum loopsm_states { LOOPSM_NUM_STATES, }; -static void loopsm_run_state(struct fpi_ssm *ssm) +static void loopsm_run_state(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct sonly_dev *sdev = fpi_imgdev_get_user_data(dev); @@ -1139,7 +1139,7 @@ static void loopsm_run_state(struct fpi_ssm *ssm) if (sdev->deactivating) { fpi_ssm_mark_completed(ssm); } else { - struct fpi_ssm *awfsm = NULL; + fpi_ssm *awfsm = NULL; switch (sdev->dev_model) { case UPEKSONLY_2016: awfsm = fpi_ssm_new(fpi_imgdev_get_dev(dev), awfsm_2016_run_state, @@ -1167,7 +1167,7 @@ static void loopsm_run_state(struct fpi_ssm *ssm) } break; case LOOPSM_RUN_CAPSM: ; - struct fpi_ssm *capsm = NULL; + fpi_ssm *capsm = NULL; switch (sdev->dev_model) { case UPEKSONLY_2016: capsm = fpi_ssm_new(fpi_imgdev_get_dev(dev), capsm_2016_run_state, @@ -1188,7 +1188,7 @@ static void loopsm_run_state(struct fpi_ssm *ssm) case LOOPSM_CAPTURE: break; case LOOPSM_RUN_DEINITSM: ; - struct fpi_ssm *deinitsm = NULL; + fpi_ssm *deinitsm = NULL; switch (sdev->dev_model) { case UPEKSONLY_2016: deinitsm = fpi_ssm_new(fpi_imgdev_get_dev(dev), deinitsm_2016_run_state, @@ -1248,7 +1248,7 @@ static void dev_deactivate(struct fp_img_dev *dev) cancel_img_transfers(dev); } -static void loopsm_complete(struct fpi_ssm *ssm) +static void loopsm_complete(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct sonly_dev *sdev = fpi_imgdev_get_user_data(dev); @@ -1267,7 +1267,7 @@ static void loopsm_complete(struct fpi_ssm *ssm) } } -static void initsm_complete(struct fpi_ssm *ssm) +static void initsm_complete(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct sonly_dev *sdev = fpi_imgdev_get_user_data(dev); @@ -1286,7 +1286,7 @@ static void initsm_complete(struct fpi_ssm *ssm) static int dev_activate(struct fp_img_dev *dev, enum fp_imgdev_state state) { struct sonly_dev *sdev = fpi_imgdev_get_user_data(dev); - struct fpi_ssm *ssm = NULL; + fpi_ssm *ssm = NULL; int i; sdev->deactivating = FALSE; diff --git a/libfprint/drivers/upektc.c b/libfprint/drivers/upektc.c index ffa31f33..e70d204b 100644 --- a/libfprint/drivers/upektc.c +++ b/libfprint/drivers/upektc.c @@ -56,7 +56,7 @@ enum activate_states { ACTIVATE_NUM_STATES, }; -static void upektc_next_init_cmd(struct fpi_ssm *ssm) +static void upektc_next_init_cmd(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct upektc_dev *upekdev = fpi_imgdev_get_user_data(dev); @@ -70,7 +70,7 @@ static void upektc_next_init_cmd(struct fpi_ssm *ssm) static void write_init_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct upektc_dev *upekdev = fpi_imgdev_get_user_data(dev); @@ -81,24 +81,24 @@ static void write_init_cb(struct libusb_transfer *transfer) else upektc_next_init_cmd(ssm); } else { - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } libusb_free_transfer(transfer); } static void read_init_data_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; if (transfer->status == LIBUSB_TRANSFER_COMPLETED) upektc_next_init_cmd(ssm); else - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); g_free(transfer->buffer); libusb_free_transfer(transfer); } -static void activate_run_state(struct fpi_ssm *ssm) +static void activate_run_state(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct upektc_dev *upekdev = fpi_imgdev_get_user_data(dev); @@ -109,7 +109,7 @@ static void activate_run_state(struct fpi_ssm *ssm) { struct libusb_transfer *transfer = libusb_alloc_transfer(0); if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); return; } libusb_fill_bulk_transfer(transfer, fpi_imgdev_get_usb_dev(dev), upekdev->ep_out, @@ -118,7 +118,7 @@ static void activate_run_state(struct fpi_ssm *ssm) r = libusb_submit_transfer(transfer); if (r < 0) { libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); } } break; @@ -128,7 +128,7 @@ static void activate_run_state(struct fpi_ssm *ssm) unsigned char *data; if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); break; } @@ -141,14 +141,14 @@ static void activate_run_state(struct fpi_ssm *ssm) if (r < 0) { g_free(data); libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } } break; } } -static void activate_sm_complete(struct fpi_ssm *ssm) +static void activate_sm_complete(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); fp_dbg("status %d", fpi_ssm_get_error(ssm)); @@ -283,31 +283,31 @@ enum capture_states { static void capture_cmd_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; if ((transfer->status == LIBUSB_TRANSFER_COMPLETED) && (transfer->length == transfer->actual_length)) { fpi_ssm_next_state(ssm); } else { - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } libusb_free_transfer(transfer); } static void capture_read_data_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); unsigned char *data = transfer->buffer; struct fp_img *img; if (transfer->status != LIBUSB_TRANSFER_COMPLETED) { fp_dbg("request is not completed, %d", transfer->status); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); goto out; } else if (transfer->length != transfer->actual_length) { fp_dbg("expected %d, sent %d bytes", transfer->length, transfer->actual_length); - fpi_ssm_mark_aborted(ssm, -EPROTO); + fpi_ssm_mark_failed(ssm, -EPROTO); goto out; } @@ -321,7 +321,7 @@ out: libusb_free_transfer(transfer); } -static void capture_run_state(struct fpi_ssm *ssm) +static void capture_run_state(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct upektc_dev *upekdev = fpi_imgdev_get_user_data(dev); @@ -332,7 +332,7 @@ static void capture_run_state(struct fpi_ssm *ssm) { struct libusb_transfer *transfer = libusb_alloc_transfer(0); if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); return; } libusb_fill_bulk_transfer(transfer, fpi_imgdev_get_usb_dev(dev), upekdev->ep_out, @@ -341,7 +341,7 @@ static void capture_run_state(struct fpi_ssm *ssm) r = libusb_submit_transfer(transfer); if (r < 0) { libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); } } break; @@ -351,7 +351,7 @@ static void capture_run_state(struct fpi_ssm *ssm) unsigned char *data; if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); break; } @@ -363,14 +363,14 @@ static void capture_run_state(struct fpi_ssm *ssm) if (r < 0) { g_free(data); libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } } break; }; } -static void capture_sm_complete(struct fpi_ssm *ssm) +static void capture_sm_complete(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct upektc_dev *upekdev = fpi_imgdev_get_user_data(dev); @@ -388,7 +388,7 @@ static void capture_sm_complete(struct fpi_ssm *ssm) static void start_capture(struct fp_img_dev *dev) { struct upektc_dev *upekdev = fpi_imgdev_get_user_data(dev); - struct fpi_ssm *ssm; + fpi_ssm *ssm; if (upekdev->deactivating) { complete_deactivation(dev); @@ -404,7 +404,7 @@ static void start_capture(struct fp_img_dev *dev) static int dev_activate(struct fp_img_dev *dev, enum fp_imgdev_state state) { struct upektc_dev *upekdev = fpi_imgdev_get_user_data(dev); - struct fpi_ssm *ssm = fpi_ssm_new(fpi_imgdev_get_dev(dev), activate_run_state, + fpi_ssm *ssm = fpi_ssm_new(fpi_imgdev_get_dev(dev), activate_run_state, ACTIVATE_NUM_STATES); fpi_ssm_set_user_data(ssm, dev); upekdev->init_idx = 0; diff --git a/libfprint/drivers/upektc_img.c b/libfprint/drivers/upektc_img.c index 814707d0..495b6790 100644 --- a/libfprint/drivers/upektc_img.c +++ b/libfprint/drivers/upektc_img.c @@ -71,7 +71,7 @@ static void upektc_img_cmd_update_crc(unsigned char *cmd_buf, size_t size) cmd_buf[size - 1] = (crc & 0xff00) >> 8; } -static void upektc_img_submit_req(struct fpi_ssm *ssm, +static void upektc_img_submit_req(fpi_ssm *ssm, const unsigned char *buf, size_t buf_size, unsigned char seq, libusb_transfer_cb_fn cb) { @@ -83,7 +83,7 @@ static void upektc_img_submit_req(struct fpi_ssm *ssm, BUG_ON(buf_size > MAX_CMD_SIZE); if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); return; } @@ -99,11 +99,11 @@ static void upektc_img_submit_req(struct fpi_ssm *ssm, r = libusb_submit_transfer(transfer); if (r < 0) { libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } } -static void upektc_img_read_data(struct fpi_ssm *ssm, size_t buf_size, size_t buf_offset, libusb_transfer_cb_fn cb) +static void upektc_img_read_data(fpi_ssm *ssm, size_t buf_size, size_t buf_offset, libusb_transfer_cb_fn cb) { struct libusb_transfer *transfer = libusb_alloc_transfer(0); struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); @@ -111,7 +111,7 @@ static void upektc_img_read_data(struct fpi_ssm *ssm, size_t buf_size, size_t bu int r; if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); return; } @@ -125,7 +125,7 @@ static void upektc_img_read_data(struct fpi_ssm *ssm, size_t buf_size, size_t bu r = libusb_submit_transfer(transfer); if (r < 0) { libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } } @@ -144,11 +144,11 @@ enum capture_states { static void capture_reqs_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; if ((transfer->status != LIBUSB_TRANSFER_COMPLETED) || (transfer->length != transfer->actual_length)) { - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); return; } switch (fpi_ssm_get_cur_state(ssm)) { @@ -181,7 +181,7 @@ static int upektc_img_process_image_frame(unsigned char *image_buf, unsigned cha static void capture_read_data_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct upektc_img_dev *upekdev = fpi_imgdev_get_user_data(dev); unsigned char *data = upekdev->response; @@ -190,7 +190,7 @@ static void capture_read_data_cb(struct libusb_transfer *transfer) if (transfer->status != LIBUSB_TRANSFER_COMPLETED) { fp_dbg("request is not completed, %d", transfer->status); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); return; } @@ -291,7 +291,7 @@ static void capture_read_data_cb(struct libusb_transfer *transfer) break; default: fp_err("Uknown response!\n"); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); break; } break; @@ -300,11 +300,11 @@ static void capture_read_data_cb(struct libusb_transfer *transfer) break; default: fp_err("Not handled response!\n"); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } } -static void capture_run_state(struct fpi_ssm *ssm) +static void capture_run_state(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct upektc_img_dev *upekdev = fpi_imgdev_get_user_data(dev); @@ -341,7 +341,7 @@ static void capture_run_state(struct fpi_ssm *ssm) }; } -static void capture_sm_complete(struct fpi_ssm *ssm) +static void capture_sm_complete(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct upektc_img_dev *upekdev = fpi_imgdev_get_user_data(dev); @@ -361,7 +361,7 @@ static void capture_sm_complete(struct fpi_ssm *ssm) static void start_capture(struct fp_img_dev *dev) { struct upektc_img_dev *upekdev = fpi_imgdev_get_user_data(dev); - struct fpi_ssm *ssm; + fpi_ssm *ssm; upekdev->image_size = 0; @@ -380,29 +380,29 @@ enum deactivate_states { static void deactivate_reqs_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; if ((transfer->status == LIBUSB_TRANSFER_COMPLETED) && (transfer->length == transfer->actual_length)) { fpi_ssm_jump_to_state(ssm, CAPTURE_READ_DATA); } else { - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } } /* TODO: process response properly */ static void deactivate_read_data_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; if (transfer->status == LIBUSB_TRANSFER_COMPLETED) { fpi_ssm_mark_completed(ssm); } else { - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } } -static void deactivate_run_state(struct fpi_ssm *ssm) +static void deactivate_run_state(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct upektc_img_dev *upekdev = fpi_imgdev_get_user_data(dev); @@ -419,7 +419,7 @@ static void deactivate_run_state(struct fpi_ssm *ssm) }; } -static void deactivate_sm_complete(struct fpi_ssm *ssm) +static void deactivate_sm_complete(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct upektc_img_dev *upekdev = fpi_imgdev_get_user_data(dev); @@ -440,7 +440,7 @@ static void deactivate_sm_complete(struct fpi_ssm *ssm) static void start_deactivation(struct fp_img_dev *dev) { struct upektc_img_dev *upekdev = fpi_imgdev_get_user_data(dev); - struct fpi_ssm *ssm; + fpi_ssm *ssm; upekdev->image_size = 0; @@ -467,40 +467,40 @@ enum activate_states { static void init_reqs_ctrl_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; if (transfer->status == LIBUSB_TRANSFER_COMPLETED) { fpi_ssm_next_state(ssm); } else { - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } } static void init_reqs_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; if ((transfer->status == LIBUSB_TRANSFER_COMPLETED) && (transfer->length == transfer->actual_length)) { fpi_ssm_next_state(ssm); } else { - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } } /* TODO: process response properly */ static void init_read_data_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; if (transfer->status == LIBUSB_TRANSFER_COMPLETED) { fpi_ssm_next_state(ssm); } else { - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } } -static void activate_run_state(struct fpi_ssm *ssm) +static void activate_run_state(fpi_ssm *ssm) { struct libusb_transfer *transfer; struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm); @@ -516,7 +516,7 @@ static void activate_run_state(struct fpi_ssm *ssm) transfer = libusb_alloc_transfer(0); if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); break; } transfer->flags |= LIBUSB_TRANSFER_FREE_BUFFER | @@ -531,7 +531,7 @@ static void activate_run_state(struct fpi_ssm *ssm) if (r < 0) { g_free(data); libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } } break; @@ -564,7 +564,7 @@ static void activate_run_state(struct fpi_ssm *ssm) } } -static void activate_sm_complete(struct fpi_ssm *ssm) +static void activate_sm_complete(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); int err = fpi_ssm_get_error(ssm); @@ -580,7 +580,7 @@ static void activate_sm_complete(struct fpi_ssm *ssm) static int dev_activate(struct fp_img_dev *dev, enum fp_imgdev_state state) { struct upektc_img_dev *upekdev = fpi_imgdev_get_user_data(dev); - struct fpi_ssm *ssm = fpi_ssm_new(fpi_imgdev_get_dev(dev), activate_run_state, + fpi_ssm *ssm = fpi_ssm_new(fpi_imgdev_get_dev(dev), activate_run_state, ACTIVATE_NUM_STATES); fpi_ssm_set_user_data(ssm, dev); upekdev->seq = 0; diff --git a/libfprint/drivers/upekts.c b/libfprint/drivers/upekts.c index 0858959e..283ab019 100644 --- a/libfprint/drivers/upekts.c +++ b/libfprint/drivers/upekts.c @@ -484,7 +484,7 @@ enum initsm_states { INITSM_NUM_STATES, }; -static void initsm_read_msg_response_cb(struct fpi_ssm *ssm, +static void initsm_read_msg_response_cb(fpi_ssm *ssm, enum read_msg_status status, uint8_t seq, unsigned char expect_subcmd, unsigned char subcmd) { @@ -494,15 +494,15 @@ static void initsm_read_msg_response_cb(struct fpi_ssm *ssm, if (status != READ_MSG_RESPONSE) { fp_err("expected response, got %d seq=%x in state %d", status, seq, fpi_ssm_get_cur_state(ssm)); - fpi_ssm_mark_aborted(ssm, -1); + fpi_ssm_mark_failed(ssm, -1); } else if (subcmd != expect_subcmd) { fp_warn("expected response to subcmd 0x%02x, got response to %02x in " "state %d", expect_subcmd, subcmd, fpi_ssm_get_cur_state(ssm)); - fpi_ssm_mark_aborted(ssm, -1); + fpi_ssm_mark_failed(ssm, -1); } else if (seq != upekdev->seq) { fp_err("expected response to cmd seq=%02x, got response to %02x " "in state %d", upekdev->seq, seq, fpi_ssm_get_cur_state(ssm)); - fpi_ssm_mark_aborted(ssm, -1); + fpi_ssm_mark_failed(ssm, -1); } else { fp_dbg("state %d completed", fpi_ssm_get_cur_state(ssm)); fpi_ssm_next_state(ssm); @@ -513,7 +513,7 @@ static void read28_0b_cb(struct fp_dev *dev, enum read_msg_status status, uint8_t seq, unsigned char subcmd, unsigned char *data, size_t data_len, void *user_data) { - initsm_read_msg_response_cb((struct fpi_ssm *) user_data, status, seq, + initsm_read_msg_response_cb((fpi_ssm *) user_data, status, seq, 0x0b, subcmd); } @@ -521,7 +521,7 @@ static void read28_0c_cb(struct fp_dev *dev, enum read_msg_status status, uint8_t seq, unsigned char subcmd, unsigned char *data, size_t data_len, void *user_data) { - initsm_read_msg_response_cb((struct fpi_ssm *) user_data, status, seq, + initsm_read_msg_response_cb((fpi_ssm *) user_data, status, seq, 0x0c, subcmd); } @@ -529,7 +529,7 @@ static void read28_08_cb(struct fp_dev *dev, enum read_msg_status status, uint8_t seq, unsigned char subcmd, unsigned char *data, size_t data_len, void *user_data) { - initsm_read_msg_response_cb((struct fpi_ssm *) user_data, status, seq, + initsm_read_msg_response_cb((fpi_ssm *) user_data, status, seq, 0x08, subcmd); } @@ -537,7 +537,7 @@ static void read28_07_cb(struct fp_dev *dev, enum read_msg_status status, uint8_t seq, unsigned char subcmd, unsigned char *data, size_t data_len, void *user_data) { - initsm_read_msg_response_cb((struct fpi_ssm *) user_data, status, seq, + initsm_read_msg_response_cb((fpi_ssm *) user_data, status, seq, 0x07, subcmd); } @@ -545,30 +545,30 @@ static void read28_06_cb(struct fp_dev *dev, enum read_msg_status status, uint8_t seq, unsigned char subcmd, unsigned char *data, size_t data_len, void *user_data) { - initsm_read_msg_response_cb((struct fpi_ssm *) user_data, status, seq, + initsm_read_msg_response_cb((fpi_ssm *) user_data, status, seq, 0x06, subcmd); } -static void initsm_read_msg_cmd_cb(struct fpi_ssm *ssm, +static void initsm_read_msg_cmd_cb(fpi_ssm *ssm, enum read_msg_status status, uint8_t expect_seq, uint8_t seq) { struct fp_dev *dev = fpi_ssm_get_dev(ssm); struct upekts_dev *upekdev = fpi_dev_get_user_data(dev); if (status == READ_MSG_ERROR) { - fpi_ssm_mark_aborted(ssm, -1); + fpi_ssm_mark_failed(ssm, -1); return; } else if (status != READ_MSG_CMD) { fp_err("expected command, got %d seq=%x in state %d", status, seq, fpi_ssm_get_cur_state(ssm)); - fpi_ssm_mark_aborted(ssm, -1); + fpi_ssm_mark_failed(ssm, -1); return; } upekdev->seq = seq; if (seq != expect_seq) { fp_err("expected seq=%x, got %x in state %d", expect_seq, seq, fpi_ssm_get_cur_state(ssm)); - fpi_ssm_mark_aborted(ssm, -1); + fpi_ssm_mark_failed(ssm, -1); return; } @@ -579,41 +579,41 @@ static void read_msg05_cb(struct fp_dev *dev, enum read_msg_status status, uint8_t seq, unsigned char subcmd, unsigned char *data, size_t data_len, void *user_data) { - initsm_read_msg_cmd_cb((struct fpi_ssm *) user_data, status, 5, seq); + initsm_read_msg_cmd_cb((fpi_ssm *) user_data, status, 5, seq); } static void read_msg03_cb(struct fp_dev *dev, enum read_msg_status status, uint8_t seq, unsigned char subcmd, unsigned char *data, size_t data_len, void *user_data) { - initsm_read_msg_cmd_cb((struct fpi_ssm *) user_data, status, 3, seq); + initsm_read_msg_cmd_cb((fpi_ssm *) user_data, status, 3, seq); } static void ctrl400_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; /* FIXME check length? */ if (transfer->status == LIBUSB_TRANSFER_COMPLETED) fpi_ssm_next_state(ssm); else - fpi_ssm_mark_aborted(ssm, -1); + fpi_ssm_mark_failed(ssm, -1); g_free(transfer->buffer); libusb_free_transfer(transfer); } -static void initsm_read_msg_handler(struct fpi_ssm *ssm, +static void initsm_read_msg_handler(fpi_ssm *ssm, read_msg_cb_fn callback) { int r = read_msg_async(fpi_ssm_get_dev(ssm), callback, ssm); if (r < 0) { fp_err("async read msg failed in state %d", fpi_ssm_get_cur_state(ssm)); - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } } static void initsm_send_msg_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; if (transfer->status == LIBUSB_TRANSFER_COMPLETED && transfer->length == transfer->actual_length) { fp_dbg("state %d completed", fpi_ssm_get_cur_state(ssm)); @@ -621,12 +621,12 @@ static void initsm_send_msg_cb(struct libusb_transfer *transfer) } else { fp_err("failed, state=%d rqlength=%d actual_length=%d", fpi_ssm_get_cur_state(ssm), transfer->length, transfer->actual_length); - fpi_ssm_mark_aborted(ssm, -1); + fpi_ssm_mark_failed(ssm, -1); } libusb_free_transfer(transfer); } -static void initsm_send_msg28_handler(struct fpi_ssm *ssm, +static void initsm_send_msg28_handler(fpi_ssm *ssm, unsigned char subcmd, const unsigned char *data, uint16_t innerlen) { struct fp_dev *dev = fpi_ssm_get_dev(ssm); @@ -636,7 +636,7 @@ static void initsm_send_msg28_handler(struct fpi_ssm *ssm, transfer = alloc_send_cmd28_transfer(dev, subcmd, data, innerlen, initsm_send_msg_cb, ssm); if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); return; } @@ -645,11 +645,11 @@ static void initsm_send_msg28_handler(struct fpi_ssm *ssm, fp_err("urb submission failed error %d in state %d", r, fpi_ssm_get_cur_state(ssm)); g_free(transfer->buffer); libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } } -static void initsm_run_state(struct fpi_ssm *ssm) +static void initsm_run_state(fpi_ssm *ssm) { struct fp_dev *dev = fpi_ssm_get_dev(ssm); struct upekts_dev *upekdev = fpi_dev_get_user_data(dev); @@ -662,7 +662,7 @@ static void initsm_run_state(struct fpi_ssm *ssm) transfer = libusb_alloc_transfer(0); if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); break; } @@ -676,7 +676,7 @@ static void initsm_run_state(struct fpi_ssm *ssm) if (r < 0) { g_free(data); libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } break; case READ_MSG03: @@ -686,7 +686,7 @@ static void initsm_run_state(struct fpi_ssm *ssm) transfer = alloc_send_cmdresponse_transfer(dev, ++upekdev->seq, init_resp03, sizeof(init_resp03), initsm_send_msg_cb, ssm); if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); break; } @@ -694,7 +694,7 @@ static void initsm_run_state(struct fpi_ssm *ssm) if (r < 0) { g_free(transfer->buffer); libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } break; case READ_MSG05: @@ -736,7 +736,7 @@ static void initsm_run_state(struct fpi_ssm *ssm) } } -static struct fpi_ssm *initsm_new(struct fp_dev *dev) +static fpi_ssm *initsm_new(struct fp_dev *dev) { return fpi_ssm_new(dev, initsm_run_state, INITSM_NUM_STATES); } @@ -749,11 +749,11 @@ enum deinitsm_states { static void send_resp07_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; if (transfer->status != LIBUSB_TRANSFER_COMPLETED) - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); else if (transfer->length != transfer->actual_length) - fpi_ssm_mark_aborted(ssm, -EPROTO); + fpi_ssm_mark_failed(ssm, -EPROTO); else fpi_ssm_next_state(ssm); libusb_free_transfer(transfer); @@ -763,28 +763,28 @@ static void read_msg01_cb(struct fp_dev *dev, enum read_msg_status status, uint8_t seq, unsigned char subcmd, unsigned char *data, size_t data_len, void *user_data) { - struct fpi_ssm *ssm = user_data; + fpi_ssm *ssm = user_data; struct upekts_dev *upekdev = fpi_dev_get_user_data(dev); if (status == READ_MSG_ERROR) { - fpi_ssm_mark_aborted(ssm, -1); + fpi_ssm_mark_failed(ssm, -1); return; } else if (status != READ_MSG_CMD) { fp_err("expected command, got %d seq=%x", status, seq); - fpi_ssm_mark_aborted(ssm, -1); + fpi_ssm_mark_failed(ssm, -1); return; } upekdev->seq = seq; if (seq != 1) { fp_err("expected seq=1, got %x", seq); - fpi_ssm_mark_aborted(ssm, -1); + fpi_ssm_mark_failed(ssm, -1); return; } fpi_ssm_next_state(ssm); } -static void deinitsm_state_handler(struct fpi_ssm *ssm) +static void deinitsm_state_handler(fpi_ssm *ssm) { struct fp_dev *dev = fpi_ssm_get_dev(ssm); int r; @@ -797,7 +797,7 @@ static void deinitsm_state_handler(struct fpi_ssm *ssm) transfer = alloc_send_cmdresponse_transfer(dev, 0x07, &dummy, 1, send_resp07_cb, ssm); if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); break; } @@ -805,18 +805,18 @@ static void deinitsm_state_handler(struct fpi_ssm *ssm) if (r < 0) { g_free(transfer->buffer); libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } break; case READ_MSG01: ; r = read_msg_async(dev, read_msg01_cb, ssm); if (r < 0) - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); break; } } -static struct fpi_ssm *deinitsm_new(struct fp_dev *dev) +static fpi_ssm *deinitsm_new(struct fp_dev *dev) { return fpi_ssm_new(dev, deinitsm_state_handler, DEINITSM_NUM_STATES); } @@ -868,14 +868,14 @@ enum enroll_start_sm_states { }; /* Called when the device initialization state machine completes */ -static void enroll_start_sm_cb_initsm(struct fpi_ssm *initsm) +static void enroll_start_sm_cb_initsm(fpi_ssm *initsm) { - struct fpi_ssm *enroll_start_ssm = fpi_ssm_get_user_data(initsm); + fpi_ssm *enroll_start_ssm = fpi_ssm_get_user_data(initsm); int error = fpi_ssm_get_error(initsm); fpi_ssm_free(initsm); if (error) - fpi_ssm_mark_aborted(enroll_start_ssm, error); + fpi_ssm_mark_failed(enroll_start_ssm, error); else fpi_ssm_next_state(enroll_start_ssm); } @@ -883,11 +883,11 @@ static void enroll_start_sm_cb_initsm(struct fpi_ssm *initsm) /* called when enroll init URB has completed */ static void enroll_start_sm_cb_init(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; if (transfer->status != LIBUSB_TRANSFER_COMPLETED) - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); else if (transfer->length != transfer->actual_length) - fpi_ssm_mark_aborted(ssm, -EPROTO); + fpi_ssm_mark_failed(ssm, -EPROTO); else fpi_ssm_next_state(ssm); libusb_free_transfer(transfer); @@ -898,32 +898,32 @@ static void enroll_start_sm_cb_msg28(struct fp_dev *dev, unsigned char *data, size_t data_len, void *user_data) { struct upekts_dev *upekdev = fpi_dev_get_user_data(dev); - struct fpi_ssm *ssm = user_data; + fpi_ssm *ssm = user_data; if (status != READ_MSG_RESPONSE) { fp_err("expected response, got %d seq=%x", status, seq); - fpi_ssm_mark_aborted(ssm, -1); + fpi_ssm_mark_failed(ssm, -1); } else if (subcmd != 0) { fp_warn("expected response to subcmd 0, got response to %02x", subcmd); - fpi_ssm_mark_aborted(ssm, -1); + fpi_ssm_mark_failed(ssm, -1); } else if (seq != upekdev->seq) { fp_err("expected response to cmd seq=%02x, got response to %02x", upekdev->seq, seq); - fpi_ssm_mark_aborted(ssm, -1); + fpi_ssm_mark_failed(ssm, -1); } else { fpi_ssm_next_state(ssm); } } -static void enroll_start_sm_run_state(struct fpi_ssm *ssm) +static void enroll_start_sm_run_state(fpi_ssm *ssm) { struct fp_dev *dev = fpi_ssm_get_dev(ssm); int r; switch (fpi_ssm_get_cur_state(ssm)) { case RUN_INITSM: ; - struct fpi_ssm *initsm = initsm_new(dev); + fpi_ssm *initsm = initsm_new(dev); fpi_ssm_set_user_data(initsm, ssm); fpi_ssm_start(initsm, enroll_start_sm_cb_initsm); break; @@ -932,7 +932,7 @@ static void enroll_start_sm_run_state(struct fpi_ssm *ssm) transfer = alloc_send_cmd28_transfer(dev, 0x02, enroll_init, sizeof(enroll_init), enroll_start_sm_cb_init, ssm); if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); break; } @@ -940,7 +940,7 @@ static void enroll_start_sm_run_state(struct fpi_ssm *ssm) if (r < 0) { g_free(transfer->buffer); libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } break; case READ_ENROLL_MSG28: ; @@ -950,7 +950,7 @@ static void enroll_start_sm_run_state(struct fpi_ssm *ssm) * include a 30 01 poll somewhere? */ r = read_msg_async(dev, enroll_start_sm_cb_msg28, ssm); if (r < 0) - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); break; } } @@ -1112,7 +1112,7 @@ static void enroll_iterate(struct fp_dev *dev) } } -static void enroll_started(struct fpi_ssm *ssm) +static void enroll_started(fpi_ssm *ssm) { struct fp_dev *dev = fpi_ssm_get_dev(ssm); fpi_drvcb_enroll_started(dev, fpi_ssm_get_error(ssm)); @@ -1128,7 +1128,7 @@ static int enroll_start(struct fp_dev *dev) struct upekts_dev *upekdev = fpi_dev_get_user_data(dev); /* do_init state machine first */ - struct fpi_ssm *ssm = fpi_ssm_new(dev, enroll_start_sm_run_state, + fpi_ssm *ssm = fpi_ssm_new(dev, enroll_start_sm_run_state, ENROLL_START_NUM_STATES); upekdev->enroll_passed = FALSE; @@ -1136,7 +1136,7 @@ static int enroll_start(struct fp_dev *dev) return 0; } -static void enroll_stop_deinit_cb(struct fpi_ssm *ssm) +static void enroll_stop_deinit_cb(fpi_ssm *ssm) { /* don't really care about errors */ fpi_drvcb_enroll_stopped(fpi_ssm_get_dev(ssm)); @@ -1145,12 +1145,12 @@ static void enroll_stop_deinit_cb(struct fpi_ssm *ssm) static int enroll_stop(struct fp_dev *dev) { - struct fpi_ssm *ssm = deinitsm_new(dev); + fpi_ssm *ssm = deinitsm_new(dev); fpi_ssm_start(ssm, enroll_stop_deinit_cb); return 0; } -static void verify_stop_deinit_cb(struct fpi_ssm *ssm) +static void verify_stop_deinit_cb(fpi_ssm *ssm) { /* don't really care about errors */ fpi_drvcb_verify_stopped(fpi_ssm_get_dev(ssm)); @@ -1159,7 +1159,7 @@ static void verify_stop_deinit_cb(struct fpi_ssm *ssm) static void do_verify_stop(struct fp_dev *dev) { - struct fpi_ssm *ssm = deinitsm_new(dev); + fpi_ssm *ssm = deinitsm_new(dev); fpi_ssm_start(ssm, verify_stop_deinit_cb); } @@ -1176,14 +1176,14 @@ enum { }; /* Called when the device initialization state machine completes */ -static void verify_start_sm_cb_initsm(struct fpi_ssm *initsm) +static void verify_start_sm_cb_initsm(fpi_ssm *initsm) { - struct fpi_ssm *verify_start_ssm = fpi_ssm_get_user_data(initsm); + fpi_ssm *verify_start_ssm = fpi_ssm_get_user_data(initsm); int err; err = fpi_ssm_get_error(initsm); if (err) - fpi_ssm_mark_aborted(verify_start_ssm, err); + fpi_ssm_mark_failed(verify_start_ssm, err); else fpi_ssm_next_state(verify_start_ssm); fpi_ssm_free(initsm); @@ -1191,24 +1191,24 @@ static void verify_start_sm_cb_initsm(struct fpi_ssm *initsm) static void verify_init_2803_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; if (transfer->status != LIBUSB_TRANSFER_COMPLETED) - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); else if (transfer->length != transfer->actual_length) - fpi_ssm_mark_aborted(ssm, -EPROTO); + fpi_ssm_mark_failed(ssm, -EPROTO); else fpi_ssm_next_state(ssm); libusb_free_transfer(transfer); } -static void verify_start_sm_run_state(struct fpi_ssm *ssm) +static void verify_start_sm_run_state(fpi_ssm *ssm) { struct fp_dev *dev = fpi_ssm_get_dev(ssm); int r; switch (fpi_ssm_get_cur_state(ssm)) { case VERIFY_RUN_INITSM: ; - struct fpi_ssm *initsm = initsm_new(dev); + fpi_ssm *initsm = initsm_new(dev); fpi_ssm_set_user_data(initsm, ssm); fpi_ssm_start(initsm, verify_start_sm_cb_initsm); break; @@ -1225,7 +1225,7 @@ static void verify_start_sm_run_state(struct fpi_ssm *ssm) verify_init_2803_cb, ssm); g_free(data); if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); break; } @@ -1233,7 +1233,7 @@ static void verify_start_sm_run_state(struct fpi_ssm *ssm) if (r < 0) { g_free(transfer->buffer); libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } break; } @@ -1391,7 +1391,7 @@ static void verify_iterate(struct fp_dev *dev) } } -static void verify_started(struct fpi_ssm *ssm) +static void verify_started(fpi_ssm *ssm) { struct fp_dev *dev = fpi_ssm_get_dev(ssm); struct upekts_dev *upekdev = fpi_dev_get_user_data(dev); @@ -1408,7 +1408,7 @@ static void verify_started(struct fpi_ssm *ssm) static int verify_start(struct fp_dev *dev) { struct upekts_dev *upekdev = fpi_dev_get_user_data(dev); - struct fpi_ssm *ssm = fpi_ssm_new(dev, verify_start_sm_run_state, + fpi_ssm *ssm = fpi_ssm_new(dev, verify_start_sm_run_state, VERIFY_NUM_STATES); upekdev->stop_verify = FALSE; fpi_ssm_start(ssm, verify_started); diff --git a/libfprint/drivers/uru4000.c b/libfprint/drivers/uru4000.c index 080edf72..fddd4110 100644 --- a/libfprint/drivers/uru4000.c +++ b/libfprint/drivers/uru4000.c @@ -306,17 +306,17 @@ static int read_regs(struct fp_img_dev *dev, uint16_t first_reg, static void response_cb(struct fp_img_dev *dev, int status, void *user_data) { - struct fpi_ssm *ssm = user_data; + fpi_ssm *ssm = user_data; if (status == 0) fpi_ssm_next_state(ssm); else - fpi_ssm_mark_aborted(ssm, status); + fpi_ssm_mark_failed(ssm, status); } static void challenge_cb(struct fp_img_dev *dev, int status, uint16_t num_regs, unsigned char *data, void *user_data) { - struct fpi_ssm *ssm = user_data; + fpi_ssm *ssm = user_data; struct uru4k_dev *urudev = fpi_imgdev_get_user_data(dev); unsigned char *respdata; PK11Context *ctx; @@ -324,7 +324,7 @@ static void challenge_cb(struct fp_img_dev *dev, int status, r = status; if (status != 0) { - fpi_ssm_mark_aborted(ssm, status); + fpi_ssm_mark_failed(ssm, status); return; } @@ -346,7 +346,7 @@ static void challenge_cb(struct fp_img_dev *dev, int status, g_free(respdata); } if (r < 0) - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } /* @@ -354,7 +354,7 @@ static void challenge_cb(struct fp_img_dev *dev, int status, * authentication scheme, where the device challenges the authenticity of the * driver. */ -static void sm_do_challenge_response(struct fpi_ssm *ssm) +static void sm_do_challenge_response(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); int r; @@ -362,7 +362,7 @@ static void sm_do_challenge_response(struct fpi_ssm *ssm) G_DEBUG_HERE(); r = read_regs(dev, REG_CHALLENGE, CR_LENGTH, challenge_cb, ssm); if (r < 0) - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } /***** INTERRUPT HANDLING *****/ @@ -508,24 +508,24 @@ static int dev_change_state(struct fp_img_dev *dev, enum fp_imgdev_state state) static void sm_write_reg_cb(struct fp_img_dev *dev, int result, void *user_data) { - struct fpi_ssm *ssm = user_data; + fpi_ssm *ssm = user_data; if (result) - fpi_ssm_mark_aborted(ssm, result); + fpi_ssm_mark_failed(ssm, result); else fpi_ssm_next_state(ssm); } -static void sm_write_regs(struct fpi_ssm *ssm, uint16_t first_reg, uint16_t num_regs, +static void sm_write_regs(fpi_ssm *ssm, uint16_t first_reg, uint16_t num_regs, void *data) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); int r = write_regs(dev, first_reg, num_regs, data, sm_write_reg_cb, ssm); if (r < 0) - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } -static void sm_write_reg(struct fpi_ssm *ssm, uint16_t reg, +static void sm_write_reg(fpi_ssm *ssm, uint16_t reg, unsigned char value) { sm_write_regs(ssm, reg, 1, &value); @@ -534,11 +534,11 @@ static void sm_write_reg(struct fpi_ssm *ssm, uint16_t reg, static void sm_read_reg_cb(struct fp_img_dev *dev, int result, uint16_t num_regs, unsigned char *data, void *user_data) { - struct fpi_ssm *ssm = user_data; + fpi_ssm *ssm = user_data; struct uru4k_dev *urudev = fpi_imgdev_get_user_data(dev); if (result) { - fpi_ssm_mark_aborted(ssm, result); + fpi_ssm_mark_failed(ssm, result); } else { memcpy(urudev->last_reg_rd, data, num_regs); fp_dbg("reg value %x", urudev->last_reg_rd[0]); @@ -546,29 +546,29 @@ static void sm_read_reg_cb(struct fp_img_dev *dev, int result, } } -static void sm_read_regs(struct fpi_ssm *ssm, uint16_t reg, uint16_t num_regs) +static void sm_read_regs(fpi_ssm *ssm, uint16_t reg, uint16_t num_regs) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct uru4k_dev *urudev = fpi_imgdev_get_user_data(dev); int r; if (num_regs > sizeof(urudev->last_reg_rd)) { - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); return; } fp_dbg("read %d regs at %x", num_regs, reg); r = read_regs(dev, reg, num_regs, sm_read_reg_cb, ssm); if (r < 0) - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } -static void sm_read_reg(struct fpi_ssm *ssm, uint16_t reg) +static void sm_read_reg(fpi_ssm *ssm, uint16_t reg) { sm_read_regs(ssm, reg, 1); } -static void sm_set_hwstat(struct fpi_ssm *ssm, unsigned char value) +static void sm_set_hwstat(fpi_ssm *ssm, unsigned char value) { fp_dbg("set %02x", value); sm_write_reg(ssm, REG_HWSTAT, value); @@ -587,14 +587,14 @@ enum imaging_states { static void image_transfer_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; if (transfer->status == LIBUSB_TRANSFER_CANCELLED) { fp_dbg("cancelled"); - fpi_ssm_mark_aborted(ssm, -ECANCELED); + fpi_ssm_mark_failed(ssm, -ECANCELED); } else if (transfer->status != LIBUSB_TRANSFER_COMPLETED) { fp_dbg("error"); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } else { fpi_ssm_next_state(ssm); } @@ -687,7 +687,7 @@ static int calc_dev2(struct uru4k_image *img) return res / IMAGE_WIDTH; } -static void imaging_run_state(struct fpi_ssm *ssm) +static void imaging_run_state(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct uru4k_dev *urudev = fpi_imgdev_get_user_data(dev); @@ -706,7 +706,7 @@ static void imaging_run_state(struct fpi_ssm *ssm) urudev->img_data, sizeof(struct uru4k_image), image_transfer_cb, ssm, 0); r = libusb_submit_transfer(urudev->img_transfer); if (r < 0) - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); break; case IMAGING_SEND_INDEX: fp_dbg("hw header lines %d", img->num_lines); @@ -810,7 +810,7 @@ static void imaging_run_state(struct fpi_ssm *ssm) } } -static void imaging_complete(struct fpi_ssm *ssm) +static void imaging_complete(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct uru4k_dev *urudev = fpi_imgdev_get_user_data(dev); @@ -862,19 +862,19 @@ enum rebootpwr_states { static void rebootpwr_pause_cb(void *data) { - struct fpi_ssm *ssm = data; + fpi_ssm *ssm = data; struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct uru4k_dev *urudev = fpi_imgdev_get_user_data(dev); if (!--urudev->rebootpwr_ctr) { fp_err("could not reboot device power"); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } else { fpi_ssm_jump_to_state(ssm, REBOOTPWR_GET_HWSTAT); } } -static void rebootpwr_run_state(struct fpi_ssm *ssm) +static void rebootpwr_run_state(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct uru4k_dev *urudev = fpi_imgdev_get_user_data(dev); @@ -896,7 +896,7 @@ static void rebootpwr_run_state(struct fpi_ssm *ssm) break; case REBOOTPWR_PAUSE: if (fpi_timeout_add(10, rebootpwr_pause_cb, ssm) == NULL) - fpi_ssm_mark_aborted(ssm, -ETIME); + fpi_ssm_mark_failed(ssm, -ETIME); break; } } @@ -939,13 +939,13 @@ enum powerup_states { static void powerup_pause_cb(void *data) { - struct fpi_ssm *ssm = data; + fpi_ssm *ssm = data; struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct uru4k_dev *urudev = fpi_imgdev_get_user_data(dev); if (!--urudev->powerup_ctr) { fp_err("could not power device up"); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } else if (!urudev->profile->auth_cr) { fpi_ssm_jump_to_state(ssm, POWERUP_SET_HWSTAT); } else { @@ -953,7 +953,7 @@ static void powerup_pause_cb(void *data) } } -static void powerup_run_state(struct fpi_ssm *ssm) +static void powerup_run_state(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct uru4k_dev *urudev = fpi_imgdev_get_user_data(dev); @@ -979,7 +979,7 @@ static void powerup_run_state(struct fpi_ssm *ssm) break; case POWERUP_PAUSE: if (fpi_timeout_add(10, powerup_pause_cb, ssm) == NULL) - fpi_ssm_mark_aborted(ssm, -ETIME); + fpi_ssm_mark_failed(ssm, -ETIME); break; case POWERUP_CHALLENGE_RESPONSE: sm_do_challenge_response(ssm); @@ -1024,11 +1024,11 @@ enum init_states { static void init_scanpwr_irq_cb(struct fp_img_dev *dev, int status, uint16_t type, void *user_data) { - struct fpi_ssm *ssm = user_data; + fpi_ssm *ssm = user_data; struct uru4k_dev *urudev = fpi_imgdev_get_user_data(dev); if (status) - fpi_ssm_mark_aborted(ssm, status); + fpi_ssm_mark_failed(ssm, status); else if (type != IRQDATA_SCANPWR_ON) fp_dbg("ignoring interrupt"); else if (fpi_ssm_get_cur_state(ssm) != INIT_AWAIT_SCAN_POWER) { @@ -1042,7 +1042,7 @@ static void init_scanpwr_irq_cb(struct fp_img_dev *dev, int status, static void init_scanpwr_timeout(void *user_data) { - struct fpi_ssm *ssm = user_data; + fpi_ssm *ssm = user_data; struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct uru4k_dev *urudev = fpi_imgdev_get_user_data(dev); @@ -1052,13 +1052,13 @@ static void init_scanpwr_timeout(void *user_data) if (++urudev->scanpwr_irq_timeouts >= 3) { fp_err("powerup timed out 3 times, giving up"); - fpi_ssm_mark_aborted(ssm, -ETIMEDOUT); + fpi_ssm_mark_failed(ssm, -ETIMEDOUT); } else { fpi_ssm_jump_to_state(ssm, INIT_GET_HWSTAT); } } -static void init_run_state(struct fpi_ssm *ssm) +static void init_run_state(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct uru4k_dev *urudev = fpi_imgdev_get_user_data(dev); @@ -1075,7 +1075,7 @@ static void init_run_state(struct fpi_ssm *ssm) fpi_ssm_jump_to_state(ssm, INIT_CHECK_HWSTAT_POWERDOWN); break; case INIT_REBOOT_POWER: ; - struct fpi_ssm *rebootsm = fpi_ssm_new(fpi_imgdev_get_dev(dev), rebootpwr_run_state, + fpi_ssm *rebootsm = fpi_ssm_new(fpi_imgdev_get_dev(dev), rebootpwr_run_state, REBOOTPWR_NUM_STATES); fpi_ssm_set_user_data(rebootsm, dev); fpi_ssm_start_subsm(ssm, rebootsm); @@ -1088,13 +1088,13 @@ static void init_run_state(struct fpi_ssm *ssm) break; case INIT_POWERUP: ; if (!IRQ_HANDLER_IS_RUNNING(urudev)) { - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); break; } urudev->irq_cb_data = ssm; urudev->irq_cb = init_scanpwr_irq_cb; - struct fpi_ssm *powerupsm = fpi_ssm_new(fpi_imgdev_get_dev(dev), powerup_run_state, + fpi_ssm *powerupsm = fpi_ssm_new(fpi_imgdev_get_dev(dev), powerup_run_state, POWERUP_NUM_STATES); fpi_ssm_set_user_data(powerupsm, dev); fpi_ssm_start_subsm(ssm, powerupsm); @@ -1111,7 +1111,7 @@ static void init_run_state(struct fpi_ssm *ssm) urudev->scanpwr_irq_timeout = fpi_timeout_add(300, init_scanpwr_timeout, ssm); if (!urudev->scanpwr_irq_timeout) { - fpi_ssm_mark_aborted(ssm, -ETIME); + fpi_ssm_mark_failed(ssm, -ETIME); break; } break; @@ -1138,7 +1138,7 @@ static void init_run_state(struct fpi_ssm *ssm) } } -static void activate_initsm_complete(struct fpi_ssm *ssm) +static void activate_initsm_complete(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); int r = fpi_ssm_get_error(ssm); @@ -1160,7 +1160,7 @@ static void activate_initsm_complete(struct fpi_ssm *ssm) static int dev_activate(struct fp_img_dev *dev, enum fp_imgdev_state state) { struct uru4k_dev *urudev = fpi_imgdev_get_user_data(dev); - struct fpi_ssm *ssm; + fpi_ssm *ssm; int r; r = start_irq_handler(dev); @@ -1196,7 +1196,7 @@ static void dev_deactivate(struct fp_img_dev *dev) static int execute_state_change(struct fp_img_dev *dev) { struct uru4k_dev *urudev = fpi_imgdev_get_user_data(dev); - struct fpi_ssm *ssm; + fpi_ssm *ssm; switch (urudev->activate_state) { case IMGDEV_STATE_INACTIVE: diff --git a/libfprint/drivers/vcom5s.c b/libfprint/drivers/vcom5s.c index cbd03751..539ffadf 100644 --- a/libfprint/drivers/vcom5s.c +++ b/libfprint/drivers/vcom5s.c @@ -74,10 +74,10 @@ enum v5s_cmd { static void sm_write_reg_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; if (transfer->status != LIBUSB_TRANSFER_COMPLETED) - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); else fpi_ssm_next_state(ssm); @@ -85,7 +85,7 @@ static void sm_write_reg_cb(struct libusb_transfer *transfer) libusb_free_transfer(transfer); } -static void sm_write_reg(struct fpi_ssm *ssm, unsigned char reg, +static void sm_write_reg(fpi_ssm *ssm, unsigned char reg, unsigned char value) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); @@ -94,7 +94,7 @@ static void sm_write_reg(struct fpi_ssm *ssm, unsigned char reg, int r; if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); return; } @@ -107,16 +107,16 @@ static void sm_write_reg(struct fpi_ssm *ssm, unsigned char reg, if (r < 0) { g_free(data); libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } } static void sm_exec_cmd_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; if (transfer->status != LIBUSB_TRANSFER_COMPLETED) - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); else fpi_ssm_next_state(ssm); @@ -124,7 +124,7 @@ static void sm_exec_cmd_cb(struct libusb_transfer *transfer) libusb_free_transfer(transfer); } -static void sm_exec_cmd(struct fpi_ssm *ssm, unsigned char cmd, +static void sm_exec_cmd(fpi_ssm *ssm, unsigned char cmd, unsigned char param) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); @@ -133,7 +133,7 @@ static void sm_exec_cmd(struct fpi_ssm *ssm, unsigned char cmd, int r; if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); return; } @@ -146,7 +146,7 @@ static void sm_exec_cmd(struct fpi_ssm *ssm, unsigned char cmd, if (r < 0) { g_free(data); libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } } @@ -187,16 +187,16 @@ static gboolean finger_is_present(unsigned char *data) /***** IMAGE ACQUISITION *****/ -static void capture_iterate(struct fpi_ssm *ssm); +static void capture_iterate(fpi_ssm *ssm); static void capture_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct v5s_dev *vdev = fpi_imgdev_get_user_data(dev); if (transfer->status != LIBUSB_TRANSFER_COMPLETED) { - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); goto out; } @@ -218,7 +218,7 @@ out: libusb_free_transfer(transfer); } -static void capture_iterate(struct fpi_ssm *ssm) +static void capture_iterate(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct v5s_dev *vdev = fpi_imgdev_get_user_data(dev); @@ -227,7 +227,7 @@ static void capture_iterate(struct fpi_ssm *ssm) int r; if (!transfer) { - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); return; } @@ -238,12 +238,12 @@ static void capture_iterate(struct fpi_ssm *ssm) r = libusb_submit_transfer(transfer); if (r < 0) { libusb_free_transfer(transfer); - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } } -static void sm_do_capture(struct fpi_ssm *ssm) +static void sm_do_capture(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct v5s_dev *vdev = fpi_imgdev_get_user_data(dev); @@ -265,7 +265,7 @@ enum loop_states { LOOP_NUM_STATES, }; -static void loop_run_state(struct fpi_ssm *ssm) +static void loop_run_state(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct v5s_dev *vdev = fpi_imgdev_get_user_data(dev); @@ -293,7 +293,7 @@ static void loop_run_state(struct fpi_ssm *ssm) } } -static void loopsm_complete(struct fpi_ssm *ssm) +static void loopsm_complete(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct v5s_dev *vdev = fpi_imgdev_get_user_data(dev); @@ -314,7 +314,7 @@ static void loopsm_complete(struct fpi_ssm *ssm) static int dev_activate(struct fp_img_dev *dev, enum fp_imgdev_state state) { struct v5s_dev *vdev = fpi_imgdev_get_user_data(dev); - struct fpi_ssm *ssm = fpi_ssm_new(fpi_imgdev_get_dev(dev), loop_run_state, + fpi_ssm *ssm = fpi_ssm_new(fpi_imgdev_get_dev(dev), loop_run_state, LOOP_NUM_STATES); fpi_ssm_set_user_data(ssm, dev); vdev->deactivating = FALSE; diff --git a/libfprint/drivers/vfs0050.c b/libfprint/drivers/vfs0050.c index dcf5d693..54b24f9a 100644 --- a/libfprint/drivers/vfs0050.c +++ b/libfprint/drivers/vfs0050.c @@ -27,7 +27,7 @@ /* Callback for async_write */ static void async_write_callback(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm); int transferred = transfer->actual_length, error = @@ -36,14 +36,14 @@ static void async_write_callback(struct libusb_transfer *transfer) if (error != 0) { fp_err("USB write transfer: %s", libusb_error_name(error)); fpi_imgdev_session_error(idev, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); return; } if (transferred != len) { fp_err("Written only %d of %d bytes", transferred, len); fpi_imgdev_session_error(idev, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); return; } @@ -51,7 +51,7 @@ static void async_write_callback(struct libusb_transfer *transfer) } /* Send data to EP1, the only out endpoint */ -static void async_write(struct fpi_ssm *ssm, void *data, int len) +static void async_write(fpi_ssm *ssm, void *data, int len) { struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm); struct libusb_device_handle *usb_dev = fpi_imgdev_get_usb_dev(idev); @@ -67,7 +67,7 @@ static void async_write(struct fpi_ssm *ssm, void *data, int len) /* Callback for async_read */ static void async_read_callback(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm); int transferred = transfer->actual_length, error = @@ -78,14 +78,14 @@ static void async_read_callback(struct libusb_transfer *transfer) fp_err("USB read transfer on endpoint %d: %s", ep - 0x80, libusb_error_name(error)); fpi_imgdev_session_error(idev, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); return; } if (transferred != len) { fp_err("Received %d instead of %d bytes", transferred, len); fpi_imgdev_session_error(idev, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); return; } @@ -93,7 +93,7 @@ static void async_read_callback(struct libusb_transfer *transfer) } /* Receive data from the given ep and compare with expected */ -static void async_read(struct fpi_ssm *ssm, int ep, void *data, int len) +static void async_read(fpi_ssm *ssm, int ep, void *data, int len) { struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm); struct libusb_device_handle *usb_dev = fpi_imgdev_get_usb_dev(idev); @@ -119,7 +119,7 @@ static void async_read(struct fpi_ssm *ssm, int ep, void *data, int len) /* Callback for async_read */ static void async_abort_callback(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm); int transferred = transfer->actual_length, error = transfer->status; @@ -134,7 +134,7 @@ static void async_abort_callback(struct libusb_transfer *transfer) if (error != 0) { fp_err("USB write transfer: %s", libusb_error_name(error)); fpi_imgdev_session_error(idev, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); return; } @@ -147,7 +147,7 @@ static void async_abort_callback(struct libusb_transfer *transfer) } /* Receive data from the given ep and compare with expected */ -static void async_abort(struct fpi_ssm *ssm, int ep) +static void async_abort(fpi_ssm *ssm, int ep) { struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm); struct libusb_device_handle *usb_dev = fpi_imgdev_get_usb_dev(idev); @@ -279,7 +279,7 @@ static void submit_image(struct fp_img_dev *idev) /* Proto functions */ /* SSM loop for clear_ep2 */ -static void clear_ep2_ssm(struct fpi_ssm *ssm) +static void clear_ep2_ssm(fpi_ssm *ssm) { struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm); @@ -302,22 +302,22 @@ static void clear_ep2_ssm(struct fpi_ssm *ssm) default: fp_err("Unknown SUBSM1 state"); fpi_imgdev_session_error(idev, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } } /* Send command to clear EP2 */ -static void clear_ep2(struct fpi_ssm *ssm) +static void clear_ep2(fpi_ssm *ssm) { struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm); - struct fpi_ssm *subsm = + fpi_ssm *subsm = fpi_ssm_new(fpi_imgdev_get_dev(idev), clear_ep2_ssm, SUBSM1_STATES); fpi_ssm_set_user_data(subsm, idev); fpi_ssm_start_subsm(ssm, subsm); } -static void send_control_packet_ssm(struct fpi_ssm *ssm) +static void send_control_packet_ssm(fpi_ssm *ssm) { struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm); struct vfs_dev_t *vdev = fpi_imgdev_get_user_data(idev); @@ -363,7 +363,7 @@ static void send_control_packet_ssm(struct fpi_ssm *ssm) (vdev->interrupt, empty_interrupt, VFS_INTERRUPT_SIZE)) { fp_err("Unknown SUBSM2 state"); fpi_imgdev_session_error(idev, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); break; } async_abort(ssm, 3); @@ -380,16 +380,16 @@ static void send_control_packet_ssm(struct fpi_ssm *ssm) default: fp_err("Unknown SUBSM2 state"); fpi_imgdev_session_error(idev, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } } /* Send device state control packet */ -static void send_control_packet(struct fpi_ssm *ssm) +static void send_control_packet(fpi_ssm *ssm) { struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm); - struct fpi_ssm *subsm = + fpi_ssm *subsm = fpi_ssm_new(fpi_imgdev_get_dev(idev), send_control_packet_ssm, SUBSM2_STATES); fpi_ssm_set_user_data(subsm, idev); fpi_ssm_start_subsm(ssm, subsm); @@ -406,7 +406,7 @@ static void clear_data(struct vfs_dev_t *vdev) /* After receiving interrupt from EP3 */ static void interrupt_callback(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm); struct vfs_dev_t *vdev = fpi_imgdev_get_user_data(idev); @@ -423,7 +423,7 @@ static void interrupt_callback(struct libusb_transfer *transfer) fp_err("USB read interrupt transfer: %s", libusb_error_name(error)); fpi_imgdev_session_error(idev, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); return; } @@ -432,7 +432,7 @@ static void interrupt_callback(struct libusb_transfer *transfer) fp_err("Unknown interrupt size %d", transferred); /* Abort ssm */ fpi_imgdev_session_error(idev, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); return; } @@ -461,12 +461,12 @@ static void interrupt_callback(struct libusb_transfer *transfer) /* Abort ssm */ fpi_imgdev_session_error(idev, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } static void receive_callback(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm); struct vfs_dev_t *vdev = fpi_imgdev_get_user_data(idev); @@ -476,7 +476,7 @@ static void receive_callback(struct libusb_transfer *transfer) fp_err("USB read transfer: %s", libusb_error_name(error)); fpi_imgdev_session_error(idev, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); return; } @@ -494,7 +494,7 @@ static void receive_callback(struct libusb_transfer *transfer) /* Stub to keep SSM alive when waiting an interrupt */ static void wait_interrupt(void *data) { - struct fpi_ssm *ssm = data; + fpi_ssm *ssm = data; struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm); struct vfs_dev_t *vdev = fpi_imgdev_get_user_data(idev); @@ -506,19 +506,19 @@ static void wait_interrupt(void *data) /* SSM stub to prepare device to another scan after orange light was on */ static void another_scan(void *data) { - struct fpi_ssm *ssm = data; + fpi_ssm *ssm = data; fpi_ssm_jump_to_state(ssm, SSM_TURN_ON); } /* Another SSM stub to continue after waiting for probable vdev->active changes */ static void scan_completed(void *data) { - struct fpi_ssm *ssm = data; + fpi_ssm *ssm = data; fpi_ssm_next_state(ssm); } /* Main SSM loop */ -static void activate_ssm(struct fpi_ssm *ssm) +static void activate_ssm(fpi_ssm *ssm) { struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm); struct libusb_device_handle *usb_dev = fpi_imgdev_get_usb_dev(idev); @@ -664,14 +664,14 @@ static void activate_ssm(struct fpi_ssm *ssm) default: fp_err("Unknown state"); fpi_imgdev_session_error(idev, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } } /* Driver functions */ /* Callback for dev_activate ssm */ -static void dev_activate_callback(struct fpi_ssm *ssm) +static void dev_activate_callback(fpi_ssm *ssm) { struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm); struct vfs_dev_t *vdev = fpi_imgdev_get_user_data(idev); @@ -691,7 +691,7 @@ static int dev_activate(struct fp_img_dev *idev, enum fp_imgdev_state state) vdev->need_report = 1; vdev->ssm_active = 1; - struct fpi_ssm *ssm = fpi_ssm_new(fpi_imgdev_get_dev(idev), activate_ssm, SSM_STATES); + fpi_ssm *ssm = fpi_ssm_new(fpi_imgdev_get_dev(idev), activate_ssm, SSM_STATES); fpi_ssm_set_user_data(ssm, idev); fpi_ssm_start(ssm, dev_activate_callback); return 0; @@ -713,7 +713,7 @@ static void dev_deactivate(struct fp_img_dev *idev) } /* Callback for dev_open ssm */ -static void dev_open_callback(struct fpi_ssm *ssm) +static void dev_open_callback(fpi_ssm *ssm) { /* Notify open complete */ fpi_imgdev_open_complete(fpi_ssm_get_user_data(ssm), 0); @@ -738,7 +738,7 @@ static int dev_open(struct fp_img_dev *idev, unsigned long driver_data) fpi_imgdev_set_user_data(idev, vdev); /* Clearing previous device state */ - struct fpi_ssm *ssm = fpi_ssm_new(fpi_imgdev_get_dev(idev), activate_ssm, SSM_STATES); + fpi_ssm *ssm = fpi_ssm_new(fpi_imgdev_get_dev(idev), activate_ssm, SSM_STATES); fpi_ssm_set_user_data(ssm, idev); fpi_ssm_start(ssm, dev_open_callback); return 0; diff --git a/libfprint/drivers/vfs101.c b/libfprint/drivers/vfs101.c index 3304b1f9..d57b4fcd 100644 --- a/libfprint/drivers/vfs101.c +++ b/libfprint/drivers/vfs101.c @@ -199,7 +199,7 @@ static int result_code(struct fp_img_dev *dev, int result) /* Callback of asynchronous send */ static void async_send_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct vfs101_dev *vdev = fpi_imgdev_get_user_data(dev); @@ -214,7 +214,7 @@ static void async_send_cb(struct libusb_transfer *transfer) /* Transfer not completed, return IO error */ fp_err("transfer not completed, status = %d", transfer->status); fpi_imgdev_session_error(dev, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); goto out; } @@ -224,7 +224,7 @@ static void async_send_cb(struct libusb_transfer *transfer) fp_err("length mismatch, got %d, expected %d", transfer->actual_length, transfer->length); fpi_imgdev_session_error(dev, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); goto out; } } @@ -242,7 +242,7 @@ out: } /* Submit asynchronous send */ -static void async_send(struct fpi_ssm *ssm) +static void async_send(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct vfs101_dev *vdev = fpi_imgdev_get_user_data(dev); @@ -255,7 +255,7 @@ static void async_send(struct fpi_ssm *ssm) /* Allocation transfer failed, return no memory error */ fp_err("allocation of usb transfer failed"); fpi_imgdev_session_error(dev, -ENOMEM); - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); return; } @@ -275,7 +275,7 @@ static void async_send(struct fpi_ssm *ssm) libusb_free_transfer(vdev->transfer); fp_err("submit of usb transfer failed"); fpi_imgdev_session_error(dev, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); return; } } @@ -283,7 +283,7 @@ static void async_send(struct fpi_ssm *ssm) /* Callback of asynchronous recv */ static void async_recv_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct vfs101_dev *vdev = fpi_imgdev_get_user_data(dev); @@ -298,7 +298,7 @@ static void async_recv_cb(struct libusb_transfer *transfer) /* Transfer not completed, return IO error */ fp_err("transfer not completed, status = %d", transfer->status); fpi_imgdev_session_error(dev, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); goto out; } @@ -308,7 +308,7 @@ static void async_recv_cb(struct libusb_transfer *transfer) fp_err("seqnum mismatch, got %04x, expected %04x", get_seqnum(vdev->buffer[1], vdev->buffer[0]), vdev->seqnum); fpi_imgdev_session_error(dev, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); goto out; } } @@ -329,7 +329,7 @@ out: } /* Submit asynchronous recv */ -static void async_recv(struct fpi_ssm *ssm) +static void async_recv(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct vfs101_dev *vdev = fpi_imgdev_get_user_data(dev); @@ -342,7 +342,7 @@ static void async_recv(struct fpi_ssm *ssm) /* Allocation transfer failed, return no memory error */ fp_err("allocation of usb transfer failed"); fpi_imgdev_session_error(dev, -ENOMEM); - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); return; } @@ -357,17 +357,17 @@ static void async_recv(struct fpi_ssm *ssm) libusb_free_transfer(vdev->transfer); fp_err("submit of usb transfer failed"); fpi_imgdev_session_error(dev, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); return; } } -static void async_load(struct fpi_ssm *ssm); +static void async_load(fpi_ssm *ssm); /* Callback of asynchronous load */ static void async_load_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct vfs101_dev *vdev = fpi_imgdev_get_user_data(dev); @@ -382,7 +382,7 @@ static void async_load_cb(struct libusb_transfer *transfer) /* Transfer not completed */ fp_err("transfer not completed, status = %d, length = %d", transfer->status, vdev->length); fpi_imgdev_session_error(dev, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); goto out; } @@ -391,7 +391,7 @@ static void async_load_cb(struct libusb_transfer *transfer) /* Received incomplete frame, return protocol error */ fp_err("received incomplete frame"); fpi_imgdev_session_error(dev, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); goto out; } } @@ -406,7 +406,7 @@ static void async_load_cb(struct libusb_transfer *transfer) /* Buffer full, image too large, return no memory error */ fp_err("buffer full, image too large"); fpi_imgdev_session_error(dev, -ENOMEM); - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); goto out; } else @@ -430,7 +430,7 @@ out: } /* Submit asynchronous load */ -static void async_load(struct fpi_ssm *ssm) +static void async_load(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct vfs101_dev *vdev = fpi_imgdev_get_user_data(dev); @@ -444,7 +444,7 @@ static void async_load(struct fpi_ssm *ssm) /* Allocation transfer failed, return no memory error */ fp_err("allocation of usb transfer failed"); fpi_imgdev_session_error(dev, -ENOMEM); - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); return; } @@ -462,7 +462,7 @@ static void async_load(struct fpi_ssm *ssm) libusb_free_transfer(vdev->transfer); fp_err("submit of usb transfer failed"); fpi_imgdev_session_error(dev, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); return; } } @@ -470,7 +470,7 @@ static void async_load(struct fpi_ssm *ssm) /* Callback of asynchronous sleep */ static void async_sleep_cb(void *data) { - struct fpi_ssm *ssm = data; + fpi_ssm *ssm = data; struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct vfs101_dev *vdev = fpi_imgdev_get_user_data(dev); @@ -481,7 +481,7 @@ static void async_sleep_cb(void *data) } /* Submit asynchronous sleep */ -static void async_sleep(unsigned int msec, struct fpi_ssm *ssm) +static void async_sleep(unsigned int msec, fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct vfs101_dev *vdev = fpi_imgdev_get_user_data(dev); @@ -494,7 +494,7 @@ static void async_sleep(unsigned int msec, struct fpi_ssm *ssm) /* Failed to add timeout */ fp_err("failed to add timeout"); fpi_imgdev_session_error(dev, -ETIME); - fpi_ssm_mark_aborted(ssm, -ETIME); + fpi_ssm_mark_failed(ssm, -ETIME); } } @@ -507,7 +507,7 @@ enum }; /* Exec swap sequential state machine */ -static void m_swap_state(struct fpi_ssm *ssm) +static void m_swap_state(fpi_ssm *ssm) { switch (fpi_ssm_get_cur_state(ssm)) { @@ -524,11 +524,11 @@ static void m_swap_state(struct fpi_ssm *ssm) } /* Start swap sequential state machine */ -static void m_swap(struct fpi_ssm *ssm, unsigned char *data, size_t length) +static void m_swap(fpi_ssm *ssm, unsigned char *data, size_t length) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct vfs101_dev *vdev = fpi_imgdev_get_user_data(dev); - struct fpi_ssm *subsm; + fpi_ssm *subsm; /* Prepare data for sending */ memcpy(vdev->buffer, data, length); @@ -542,7 +542,7 @@ static void m_swap(struct fpi_ssm *ssm, unsigned char *data, size_t length) } /* Retrieve fingerprint image */ -static void vfs_get_print(struct fpi_ssm *ssm, unsigned int param, int type) +static void vfs_get_print(fpi_ssm *ssm, unsigned int param, int type) { unsigned char data[2][0x0e] = { { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, @@ -562,7 +562,7 @@ static void vfs_get_print(struct fpi_ssm *ssm, unsigned int param, int type) } /* Set a parameter value on the device */ -static void vfs_set_param(struct fpi_ssm *ssm, unsigned int param, unsigned int value) +static void vfs_set_param(fpi_ssm *ssm, unsigned int param, unsigned int value) { unsigned char data[0x0a] = { 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00 }; @@ -579,7 +579,7 @@ static void vfs_set_param(struct fpi_ssm *ssm, unsigned int param, unsigned int } /* Abort previous print */ -static void vfs_abort_print(struct fpi_ssm *ssm) +static void vfs_abort_print(fpi_ssm *ssm) { unsigned char data[0x06] = { 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00 }; @@ -590,7 +590,7 @@ static void vfs_abort_print(struct fpi_ssm *ssm) } /* Poke a value on a region */ -static void vfs_poke(struct fpi_ssm *ssm, unsigned int addr, unsigned int value, unsigned int size) +static void vfs_poke(fpi_ssm *ssm, unsigned int addr, unsigned int value, unsigned int size) { unsigned char data[0x0f] = { 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; @@ -612,7 +612,7 @@ static void vfs_poke(struct fpi_ssm *ssm, unsigned int addr, unsigned int value, } /* Get current finger state */ -static void vfs_get_finger_state(struct fpi_ssm *ssm) +static void vfs_get_finger_state(fpi_ssm *ssm) { unsigned char data[0x06] = { 0x00, 0x00, 0x00, 0x00, 0x16, 0x00 }; @@ -623,7 +623,7 @@ static void vfs_get_finger_state(struct fpi_ssm *ssm) } /* Load raw image from reader */ -static void vfs_img_load(struct fpi_ssm *ssm) +static void vfs_img_load(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct vfs101_dev *vdev = fpi_imgdev_get_user_data(dev); @@ -754,7 +754,7 @@ static void img_copy(struct vfs101_dev *vdev, struct fp_img *img) } /* Extract fingerpint image from raw data */ -static void img_extract(struct fpi_ssm *ssm) +static void img_extract(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct vfs101_dev *vdev = fpi_imgdev_get_user_data(dev); @@ -912,7 +912,7 @@ enum }; /* Exec loop sequential state machine */ -static void m_loop_state(struct fpi_ssm *ssm) +static void m_loop_state(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct vfs101_dev *vdev = fpi_imgdev_get_user_data(dev); @@ -961,7 +961,7 @@ static void m_loop_state(struct fpi_ssm *ssm) /* Unknown state */ fp_err("unknown device state 0x%02x", vdev->buffer[0x0a]); fpi_imgdev_session_error(dev, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); break; } break; @@ -1018,7 +1018,7 @@ static void m_loop_state(struct fpi_ssm *ssm) /* reach max loop counter, return protocol error */ fp_err("finger not removed from the scanner"); fpi_imgdev_session_error(dev, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } } else @@ -1108,7 +1108,7 @@ static void m_loop_state(struct fpi_ssm *ssm) /* reach max loop counter, return protocol error */ fp_err("waiting abort reach max loop counter"); fpi_imgdev_session_error(dev, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } break; @@ -1120,7 +1120,7 @@ static void m_loop_state(struct fpi_ssm *ssm) } /* Complete loop sequential state machine */ -static void m_loop_complete(struct fpi_ssm *ssm) +static void m_loop_complete(fpi_ssm *ssm) { /* Free sequential state machine */ fpi_ssm_free(ssm); @@ -1176,7 +1176,7 @@ enum }; /* Exec init sequential state machine */ -static void m_init_state(struct fpi_ssm *ssm) +static void m_init_state(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct vfs101_dev *vdev = fpi_imgdev_get_user_data(dev); @@ -1237,7 +1237,7 @@ static void m_init_state(struct fpi_ssm *ssm) /* reach max loop counter, return protocol error */ fp_err("waiting abort reach max loop counter"); fpi_imgdev_session_error(dev, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } break; @@ -1273,7 +1273,7 @@ static void m_init_state(struct fpi_ssm *ssm) /* reach max loop counter, return protocol error */ fp_err("finger not removed from the scanner"); fpi_imgdev_session_error(dev, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); } } else @@ -1417,11 +1417,11 @@ static void m_init_state(struct fpi_ssm *ssm) } /* Complete init sequential state machine */ -static void m_init_complete(struct fpi_ssm *ssm) +static void m_init_complete(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct vfs101_dev *vdev = fpi_imgdev_get_user_data(dev); - struct fpi_ssm *ssm_loop; + fpi_ssm *ssm_loop; if (!fpi_ssm_get_error(ssm) && vdev->active) { @@ -1442,7 +1442,7 @@ static void m_init_complete(struct fpi_ssm *ssm) static int dev_activate(struct fp_img_dev *dev, enum fp_imgdev_state state) { struct vfs101_dev *vdev = fpi_imgdev_get_user_data(dev); - struct fpi_ssm *ssm; + fpi_ssm *ssm; /* Check if already active */ if (vdev->active) diff --git a/libfprint/drivers/vfs301.c b/libfprint/drivers/vfs301.c index 45be8b36..403bd363 100644 --- a/libfprint/drivers/vfs301.c +++ b/libfprint/drivers/vfs301.c @@ -29,13 +29,13 @@ /* Callback of asynchronous sleep */ static void async_sleep_cb(void *data) { - struct fpi_ssm *ssm = data; + fpi_ssm *ssm = data; fpi_ssm_next_state(ssm); } /* Submit asynchronous sleep */ -static void async_sleep(unsigned int msec, struct fpi_ssm *ssm) +static void async_sleep(unsigned int msec, fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct fpi_timeout *timeout; @@ -47,11 +47,11 @@ static void async_sleep(unsigned int msec, struct fpi_ssm *ssm) /* Failed to add timeout */ fp_err("failed to add timeout"); fpi_imgdev_session_error(dev, -ETIME); - fpi_ssm_mark_aborted(ssm, -ETIME); + fpi_ssm_mark_failed(ssm, -ETIME); } } -static int submit_image(struct fpi_ssm *ssm) +static int submit_image(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); vfs301_dev_t *vdev = fpi_imgdev_get_user_data(dev); @@ -103,7 +103,7 @@ enum }; /* Exec loop sequential state machine */ -static void m_loop_state(struct fpi_ssm *ssm) +static void m_loop_state(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); vfs301_dev_t *vdev = fpi_imgdev_get_user_data(dev); @@ -161,14 +161,14 @@ static void m_loop_state(struct fpi_ssm *ssm) } /* Complete loop sequential state machine */ -static void m_loop_complete(struct fpi_ssm *ssm) +static void m_loop_complete(fpi_ssm *ssm) { /* Free sequential state machine */ fpi_ssm_free(ssm); } /* Exec init sequential state machine */ -static void m_init_state(struct fpi_ssm *ssm) +static void m_init_state(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); vfs301_dev_t *vdev = fpi_imgdev_get_user_data(dev); @@ -181,10 +181,10 @@ static void m_init_state(struct fpi_ssm *ssm) } /* Complete init sequential state machine */ -static void m_init_complete(struct fpi_ssm *ssm) +static void m_init_complete(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); - struct fpi_ssm *ssm_loop; + fpi_ssm *ssm_loop; if (!fpi_ssm_get_error(ssm)) { /* Notify activate complete */ @@ -203,7 +203,7 @@ static void m_init_complete(struct fpi_ssm *ssm) /* Activate device */ static int dev_activate(struct fp_img_dev *dev, enum fp_imgdev_state state) { - struct fpi_ssm *ssm; + fpi_ssm *ssm; /* Start init ssm */ ssm = fpi_ssm_new(fpi_imgdev_get_dev(dev), m_init_state, 1); diff --git a/libfprint/drivers/vfs5011.c b/libfprint/drivers/vfs5011.c index 8b460acf..f1e3d99c 100644 --- a/libfprint/drivers/vfs5011.c +++ b/libfprint/drivers/vfs5011.c @@ -75,14 +75,14 @@ static void start_scan(struct fp_img_dev *dev); static void async_send_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; struct usbexchange_data *data = fpi_ssm_get_user_data(ssm); struct usb_action *action; if (fpi_ssm_get_cur_state(ssm) >= data->stepcount) { fp_err("Radiation detected!"); fpi_imgdev_session_error(data->device, -EINVAL); - fpi_ssm_mark_aborted(ssm, -EINVAL); + fpi_ssm_mark_failed(ssm, -EINVAL); goto out; } @@ -90,7 +90,7 @@ static void async_send_cb(struct libusb_transfer *transfer) if (action->type != ACTION_SEND) { fp_err("Radiation detected!"); fpi_imgdev_session_error(data->device, -EINVAL); - fpi_ssm_mark_aborted(ssm, -EINVAL); + fpi_ssm_mark_failed(ssm, -EINVAL); goto out; } @@ -98,7 +98,7 @@ static void async_send_cb(struct libusb_transfer *transfer) /* Transfer not completed, return IO error */ fp_err("transfer not completed, status = %d", transfer->status); fpi_imgdev_session_error(data->device, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); goto out; } if (transfer->length != transfer->actual_length) { @@ -106,7 +106,7 @@ static void async_send_cb(struct libusb_transfer *transfer) fp_err("length mismatch, got %d, expected %d", transfer->actual_length, transfer->length); fpi_imgdev_session_error(data->device, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); goto out; } @@ -119,7 +119,7 @@ out: static void async_recv_cb(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = transfer->user_data; + fpi_ssm *ssm = transfer->user_data; struct usbexchange_data *data = fpi_ssm_get_user_data(ssm); struct usb_action *action; @@ -127,14 +127,14 @@ static void async_recv_cb(struct libusb_transfer *transfer) /* Transfer not completed, return IO error */ fp_err("transfer not completed, status = %d", transfer->status); fpi_imgdev_session_error(data->device, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); goto out; } if (fpi_ssm_get_cur_state(ssm) >= data->stepcount) { fp_err("Radiation detected!"); fpi_imgdev_session_error(data->device, -EINVAL); - fpi_ssm_mark_aborted(ssm, -EINVAL); + fpi_ssm_mark_failed(ssm, -EINVAL); goto out; } @@ -142,7 +142,7 @@ static void async_recv_cb(struct libusb_transfer *transfer) if (action->type != ACTION_RECEIVE) { fp_err("Radiation detected!"); fpi_imgdev_session_error(data->device, -EINVAL); - fpi_ssm_mark_aborted(ssm, -EINVAL); + fpi_ssm_mark_failed(ssm, -EINVAL); goto out; } @@ -152,14 +152,14 @@ static void async_recv_cb(struct libusb_transfer *transfer) transfer->actual_length, action->correct_reply_size); fpi_imgdev_session_error(data->device, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); goto out; } if (memcmp(transfer->buffer, action->data, action->correct_reply_size) != 0) { fp_dbg("Wrong reply:"); fpi_imgdev_session_error(data->device, -EIO); - fpi_ssm_mark_aborted(ssm, -EIO); + fpi_ssm_mark_failed(ssm, -EIO); goto out; } } else @@ -171,14 +171,14 @@ out: libusb_free_transfer(transfer); } -static void usbexchange_loop(struct fpi_ssm *ssm) +static void usbexchange_loop(fpi_ssm *ssm) { struct usbexchange_data *data = fpi_ssm_get_user_data(ssm); if (fpi_ssm_get_cur_state(ssm) >= data->stepcount) { fp_err("Bug detected: state %d out of range, only %d steps", fpi_ssm_get_cur_state(ssm), data->stepcount); fpi_imgdev_session_error(data->device, -EINVAL); - fpi_ssm_mark_aborted(ssm, -EINVAL); + fpi_ssm_mark_failed(ssm, -EINVAL); return; } @@ -193,7 +193,7 @@ static void usbexchange_loop(struct fpi_ssm *ssm) if (transfer == NULL) { fp_err("Failed to allocate transfer"); fpi_imgdev_session_error(data->device, -ENOMEM); - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); return; } libusb_fill_bulk_transfer(transfer, fpi_imgdev_get_usb_dev(data->device), @@ -209,7 +209,7 @@ static void usbexchange_loop(struct fpi_ssm *ssm) if (transfer == NULL) { fp_err("Failed to allocate transfer"); fpi_imgdev_session_error(data->device, -ENOMEM); - fpi_ssm_mark_aborted(ssm, -ENOMEM); + fpi_ssm_mark_failed(ssm, -ENOMEM); return; } libusb_fill_bulk_transfer(transfer, fpi_imgdev_get_usb_dev(data->device), @@ -222,21 +222,21 @@ static void usbexchange_loop(struct fpi_ssm *ssm) default: fp_err("Bug detected: invalid action %d", action->type); fpi_imgdev_session_error(data->device, -EINVAL); - fpi_ssm_mark_aborted(ssm, -EINVAL); + fpi_ssm_mark_failed(ssm, -EINVAL); return; } if (ret != 0) { fp_err("USB transfer error: %s", strerror(ret)); fpi_imgdev_session_error(data->device, ret); - fpi_ssm_mark_aborted(ssm, ret); + fpi_ssm_mark_failed(ssm, ret); } } -static void usb_exchange_async(struct fpi_ssm *ssm, +static void usb_exchange_async(fpi_ssm *ssm, struct usbexchange_data *data) { - struct fpi_ssm *subsm = fpi_ssm_new(fpi_imgdev_get_dev(data->device), + fpi_ssm *subsm = fpi_ssm_new(fpi_imgdev_get_dev(data->device), usbexchange_loop, data->stepcount); fpi_ssm_set_user_data(subsm, data); @@ -395,7 +395,7 @@ static int process_chunk(struct vfs5011_data *data, int transferred) return 0; } -void submit_image(struct fpi_ssm *ssm, struct vfs5011_data *data) +void submit_image(fpi_ssm *ssm, struct vfs5011_data *data) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct fp_img *img; @@ -422,7 +422,7 @@ void submit_image(struct fpi_ssm *ssm, struct vfs5011_data *data) static void chunk_capture_callback(struct libusb_transfer *transfer) { - struct fpi_ssm *ssm = (struct fpi_ssm *)transfer->user_data; + fpi_ssm *ssm = (fpi_ssm *)transfer->user_data; struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct vfs5011_data *data; @@ -441,7 +441,7 @@ static void chunk_capture_callback(struct libusb_transfer *transfer) } else { if (!data->deactivating) { fp_err("Failed to capture data"); - fpi_ssm_mark_aborted(ssm, -1); + fpi_ssm_mark_failed(ssm, -1); } else { fpi_ssm_mark_completed(ssm); } @@ -452,7 +452,7 @@ static void chunk_capture_callback(struct libusb_transfer *transfer) static int capture_chunk_async(struct vfs5011_data *data, libusb_device_handle *handle, int nline, - int timeout, struct fpi_ssm *ssm) + int timeout, fpi_ssm *ssm) { fp_dbg("capture_chunk_async: capture %d lines, already have %d", nline, data->lines_recorded); @@ -472,7 +472,7 @@ static int capture_chunk_async(struct vfs5011_data *data, static void async_sleep_cb(void *data) { - struct fpi_ssm *ssm = data; + fpi_ssm *ssm = data; fpi_ssm_next_state(ssm); } @@ -665,7 +665,7 @@ struct usb_action vfs5011_initiate_capture[] = { /* ====================== lifprint interface ======================= */ -static void activate_loop(struct fpi_ssm *ssm) +static void activate_loop(fpi_ssm *ssm) { enum {READ_TIMEOUT = 0}; @@ -712,7 +712,7 @@ static void activate_loop(struct fpi_ssm *ssm) if (r != 0) { fp_err("Failed to capture data"); fpi_imgdev_session_error(dev, r); - fpi_ssm_mark_aborted(ssm, r); + fpi_ssm_mark_failed(ssm, r); } break; @@ -723,7 +723,7 @@ static void activate_loop(struct fpi_ssm *ssm) /* Failed to add timeout */ fp_err("failed to add timeout"); fpi_imgdev_session_error(dev, -1); - fpi_ssm_mark_aborted(ssm, -1); + fpi_ssm_mark_failed(ssm, -1); } break; @@ -742,7 +742,7 @@ static void activate_loop(struct fpi_ssm *ssm) } } -static void activate_loop_complete(struct fpi_ssm *ssm) +static void activate_loop_complete(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct vfs5011_data *data; @@ -772,7 +772,7 @@ static void activate_loop_complete(struct fpi_ssm *ssm) } -static void open_loop(struct fpi_ssm *ssm) +static void open_loop(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct vfs5011_data *data; @@ -793,7 +793,7 @@ static void open_loop(struct fpi_ssm *ssm) }; } -static void open_loop_complete(struct fpi_ssm *ssm) +static void open_loop_complete(fpi_ssm *ssm) { struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm); struct vfs5011_data *data; @@ -829,7 +829,7 @@ static int dev_open(struct fp_img_dev *dev, unsigned long driver_data) return r; } - struct fpi_ssm *ssm; + fpi_ssm *ssm; ssm = fpi_ssm_new(fpi_imgdev_get_dev(dev), open_loop, DEV_OPEN_NUM_STATES); fpi_ssm_set_user_data(ssm, dev); fpi_ssm_start(ssm, open_loop_complete); @@ -853,7 +853,7 @@ static void dev_close(struct fp_img_dev *dev) static void start_scan(struct fp_img_dev *dev) { struct vfs5011_data *data; - struct fpi_ssm *ssm; + fpi_ssm *ssm; data = fpi_imgdev_get_user_data(dev); data->loop_running = TRUE; diff --git a/libfprint/drivers_api.h b/libfprint/drivers_api.h index 2aba675d..02fe43ca 100644 --- a/libfprint/drivers_api.h +++ b/libfprint/drivers_api.h @@ -36,6 +36,7 @@ #include #include "fprint.h" +#include "fpi-ssm.h" #include "assembling.h" #include "drivers/driver_ids.h" @@ -211,35 +212,6 @@ struct fpi_timeout *fpi_timeout_add(unsigned int msec, fpi_timeout_fn callback, void *data); void fpi_timeout_cancel(struct fpi_timeout *timeout); -/* async drv <--> lib comms */ - -struct fpi_ssm; -typedef void (*ssm_completed_fn)(struct fpi_ssm *ssm); -typedef void (*ssm_handler_fn)(struct fpi_ssm *ssm); - -/* sequential state machine: state machine that iterates sequentially over - * a predefined series of states. can be aborted by either completion or - * abortion error conditions. */ - -/* for library and drivers */ -struct fpi_ssm *fpi_ssm_new(struct fp_dev *dev, ssm_handler_fn handler, - int nr_states); -void fpi_ssm_free(struct fpi_ssm *machine); -void fpi_ssm_start(struct fpi_ssm *machine, ssm_completed_fn callback); -void fpi_ssm_start_subsm(struct fpi_ssm *parent, struct fpi_ssm *child); - -/* for drivers */ -void fpi_ssm_next_state(struct fpi_ssm *machine); -void fpi_ssm_jump_to_state(struct fpi_ssm *machine, int state); -void fpi_ssm_mark_completed(struct fpi_ssm *machine); -void fpi_ssm_mark_aborted(struct fpi_ssm *machine, int error); -struct fp_dev *fpi_ssm_get_dev(struct fpi_ssm *machine); -void fpi_ssm_set_user_data(struct fpi_ssm *machine, - void *user_data); -void *fpi_ssm_get_user_data(struct fpi_ssm *machine); -int fpi_ssm_get_error(struct fpi_ssm *machine); -int fpi_ssm_get_cur_state(struct fpi_ssm *machine); - void fpi_drvcb_open_complete(struct fp_dev *dev, int status); void fpi_drvcb_close_complete(struct fp_dev *dev); diff --git a/libfprint/drv.c b/libfprint/drv.c deleted file mode 100644 index d5507453..00000000 --- a/libfprint/drv.c +++ /dev/null @@ -1,199 +0,0 @@ -/* - * Functions to assist with asynchronous driver <---> library communications - * Copyright (C) 2007-2008 Daniel Drake - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#define FP_COMPONENT "drv" - -#include "fp_internal.h" - -#include -#include - -/* SSM: sequential state machine - * Asynchronous driver design encourages some kind of state machine behind it. - * In most cases, the state machine is entirely linear - you only go to the - * next state, you never jump or go backwards. The SSM functions help you - * implement such a machine. - * - * e.g. S1 --> S2 --> S3 --> S4 - * S1 is the start state - * There is also an implicit error state and an implicit accepting state - * (both with implicit edges from every state). - * - * You can also jump to any arbitrary state (while marking completion of the - * current state) while the machine is running. In other words there are - * implicit edges linking one state to every other state. OK, we're stretching - * the "state machine" description at this point. - * - * To create a ssm, you pass a state handler function and the total number of - * states (4 in the above example). - * - * To start a ssm, you pass in a completion callback function which gets - * called when the ssm completes (both on error and on failure). - * - * To iterate to the next state, call fpi_ssm_next_state(). It is legal to - * attempt to iterate beyond the final state - this is equivalent to marking - * the ssm as successfully completed. - * - * To mark successful completion of a SSM, either iterate beyond the final - * state or call fpi_ssm_mark_completed() from any state. - * - * To mark failed completion of a SSM, call fpi_ssm_mark_aborted() from any - * state. You must pass a non-zero error code. - * - * Your state handling function looks at ssm->cur_state in order to determine - * the current state and hence which operations to perform (a switch statement - * is appropriate). - * Typically, the state handling function fires off an asynchronous libusb - * transfer, and the callback function iterates the machine to the next state - * upon success (or aborts the machine on transfer failure). - * - * Your completion callback should examine ssm->error in order to determine - * whether the ssm completed or failed. An error code of zero indicates - * successful completion. - */ - -/* Allocate a new ssm */ -struct fpi_ssm *fpi_ssm_new(struct fp_dev *dev, ssm_handler_fn handler, - int nr_states) -{ - struct fpi_ssm *machine; - BUG_ON(nr_states < 1); - - machine = g_malloc0(sizeof(*machine)); - machine->handler = handler; - machine->nr_states = nr_states; - machine->dev = dev; - machine->completed = TRUE; - return machine; -} - -struct fp_dev * -fpi_ssm_get_dev(struct fpi_ssm *machine) -{ - return machine->dev; -} - -void -fpi_ssm_set_user_data(struct fpi_ssm *machine, - void *user_data) -{ - machine->priv = user_data; -} - -void * -fpi_ssm_get_user_data(struct fpi_ssm *machine) -{ - return machine->priv; -} - -/* Free a ssm */ -void fpi_ssm_free(struct fpi_ssm *machine) -{ - if (!machine) - return; - g_free(machine); -} - -/* Invoke the state handler */ -static void __ssm_call_handler(struct fpi_ssm *machine) -{ - fp_dbg("%p entering state %d", machine, machine->cur_state); - machine->handler(machine); -} - -/* Start a ssm. You can also restart a completed or aborted ssm. */ -void fpi_ssm_start(struct fpi_ssm *ssm, ssm_completed_fn callback) -{ - BUG_ON(!ssm->completed); - ssm->callback = callback; - ssm->cur_state = 0; - ssm->completed = FALSE; - ssm->error = 0; - __ssm_call_handler(ssm); -} - -static void __subsm_complete(struct fpi_ssm *ssm) -{ - struct fpi_ssm *parent = ssm->parentsm; - BUG_ON(!parent); - if (ssm->error) - fpi_ssm_mark_aborted(parent, ssm->error); - else - fpi_ssm_next_state(parent); - fpi_ssm_free(ssm); -} - -/* start a SSM as a child of another. if the child completes successfully, the - * parent will be advanced to the next state. if the child aborts, the parent - * will be aborted with the same error code. the child will be automatically - * freed upon completion/abortion. */ -void fpi_ssm_start_subsm(struct fpi_ssm *parent, struct fpi_ssm *child) -{ - child->parentsm = parent; - fpi_ssm_start(child, __subsm_complete); -} - -/* Mark a ssm as completed successfully. */ -void fpi_ssm_mark_completed(struct fpi_ssm *machine) -{ - BUG_ON(machine->completed); - machine->completed = TRUE; - fp_dbg("%p completed with status %d", machine, machine->error); - if (machine->callback) - machine->callback(machine); -} - -/* Mark a ssm as aborted with error. */ -void fpi_ssm_mark_aborted(struct fpi_ssm *machine, int error) -{ - fp_dbg("error %d from state %d", error, machine->cur_state); - BUG_ON(error == 0); - machine->error = error; - fpi_ssm_mark_completed(machine); -} - -/* Iterate to next state of a ssm */ -void fpi_ssm_next_state(struct fpi_ssm *machine) -{ - BUG_ON(machine->completed); - machine->cur_state++; - if (machine->cur_state == machine->nr_states) { - fpi_ssm_mark_completed(machine); - } else { - __ssm_call_handler(machine); - } -} - -void fpi_ssm_jump_to_state(struct fpi_ssm *machine, int state) -{ - BUG_ON(machine->completed); - BUG_ON(state >= machine->nr_states); - machine->cur_state = state; - __ssm_call_handler(machine); -} - -int fpi_ssm_get_cur_state(struct fpi_ssm *machine) -{ - return machine->cur_state; -} - -int fpi_ssm_get_error(struct fpi_ssm *machine) -{ - return machine->error; -} diff --git a/libfprint/fp_internal.h b/libfprint/fp_internal.h index e7501824..48a25182 100644 --- a/libfprint/fp_internal.h +++ b/libfprint/fp_internal.h @@ -348,40 +348,6 @@ void fpi_poll_exit(void); typedef void (*fpi_timeout_fn)(void *data); -/* async drv <--> lib comms */ - -struct fpi_ssm; -typedef void (*ssm_completed_fn)(struct fpi_ssm *ssm); -typedef void (*ssm_handler_fn)(struct fpi_ssm *ssm); - -/* sequential state machine: state machine that iterates sequentially over - * a predefined series of states. can be aborted by either completion or - * abortion error conditions. */ -struct fpi_ssm { - struct fp_dev *dev; - struct fpi_ssm *parentsm; - void *priv; - int nr_states; - int cur_state; - gboolean completed; - int error; - ssm_completed_fn callback; - ssm_handler_fn handler; -}; - - -/* for library and drivers */ -struct fpi_ssm *fpi_ssm_new(struct fp_dev *dev, ssm_handler_fn handler, - int nr_states); -void fpi_ssm_free(struct fpi_ssm *machine); -void fpi_ssm_start(struct fpi_ssm *machine, ssm_completed_fn callback); - -/* for drivers */ -void fpi_ssm_next_state(struct fpi_ssm *machine); -void fpi_ssm_jump_to_state(struct fpi_ssm *machine, int state); -void fpi_ssm_mark_completed(struct fpi_ssm *machine); -void fpi_ssm_mark_aborted(struct fpi_ssm *machine, int error); - void fpi_drvcb_open_complete(struct fp_dev *dev, int status); void fpi_drvcb_close_complete(struct fp_dev *dev); diff --git a/libfprint/fpi-ssm.c b/libfprint/fpi-ssm.c new file mode 100644 index 00000000..da3a0625 --- /dev/null +++ b/libfprint/fpi-ssm.c @@ -0,0 +1,317 @@ +/* + * Functions to assist with asynchronous driver <---> library communications + * Copyright (C) 2007-2008 Daniel Drake + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#define FP_COMPONENT "drv" + +#include "fp_internal.h" +#include "fpi-ssm.h" + +#include +#include + +/** + * SECTION:fpi-ssm + * @title: Sequential state machine + * + * Asynchronous driver design encourages some kind of state machine behind it. + * In most cases, the state machine is entirely linear - you only go to the + * next state, you never jump or go backwards. The #fpi_ssm functions help you + * implement such a machine. + * + * e.g. `S1` ↦ `S2` ↦ `S3` ↦ `S4` + * + * `S1` is the start state + * There is also an implicit error state and an implicit accepting state + * (both with implicit edges from every state). + * + * You can also jump to any arbitrary state (while marking completion of the + * current state) while the machine is running. In other words there are + * implicit edges linking one state to every other state. + * + * To create an #fpi_ssm, you pass a state handler function and the total number of + * states (4 in the above example) to fpi_ssm_new(). Note that the state numbers + * start at zero, making them match the first value in a C enumeration. + * + * To start a ssm, you pass in a completion callback function to fpi_ssm_start() + * which gets called when the ssm completes (both on error and on failure). + * + * To iterate to the next state, call fpi_ssm_next_state(). It is legal to + * attempt to iterate beyond the final state - this is equivalent to marking + * the ssm as successfully completed. + * + * To mark successful completion of a SSM, either iterate beyond the final + * state or call fpi_ssm_mark_completed() from any state. + * + * To mark failed completion of a SSM, call fpi_ssm_mark_failed() from any + * state. You must pass a non-zero error code. + * + * Your state handling function looks at the return value of + * fpi_ssm_get_cur_state() in order to determine the current state and hence + * which operations to perform (a switch statement is appropriate). + * + * Typically, the state handling function fires off an asynchronous + * communication with the device (such as a libsub transfer), and the + * callback function iterates the machine to the next state + * upon success (or fails). + * + * Your completion callback should examine the return value of + * fpi_ssm_get_error() in order to determine whether the #fpi_ssm completed or + * failed. An error code of zero indicates successful completion. + */ + +struct fpi_ssm { + struct fp_dev *dev; + fpi_ssm *parentsm; + void *priv; + int nr_states; + int cur_state; + gboolean completed; + int error; + ssm_completed_fn callback; + ssm_handler_fn handler; +}; + +/** + * fpi_ssm_new: + * @dev: a #fp_dev fingerprint device + * @handler: the callback function + * @nr_states: the number of states + * + * Allocate a new ssm, with @nr_states states. The @handler callback + * will be called after each state transition. + * + * Returns: a new #fpi_ssm state machine + */ +fpi_ssm *fpi_ssm_new(struct fp_dev *dev, ssm_handler_fn handler, + int nr_states) +{ + fpi_ssm *machine; + BUG_ON(nr_states < 1); + + machine = g_malloc0(sizeof(*machine)); + machine->handler = handler; + machine->nr_states = nr_states; + machine->dev = dev; + machine->completed = TRUE; + return machine; +} + +/** + * fpi_ssm_get_dev: + * @machine: an #fpi_ssm state machine + * + * Returns the #fp_dev attached to the #fpi_ssm as passed + * in fpi_ssm_new(). + * + * Returns: a struct #fp_dev + */ +struct fp_dev * +fpi_ssm_get_dev(fpi_ssm *machine) +{ + return machine->dev; +} + +/** + * fpi_ssm_set_user_data: + * @machine: an #fpi_ssm state machine + * @user_data: a pointer to user data + * + * Set a user data pointer in the #fpi_ssm structure, to be + * retrieved with fpi_ssm_get_user_data() at a later point. + */ +void +fpi_ssm_set_user_data(fpi_ssm *machine, + void *user_data) +{ + machine->priv = user_data; +} + +/** + * fpi_ssm_get_user_data: + * @machine: an #fpi_ssm state machine + * + * Retrieve the pointer to user data set with + * fpi_ssm_set_user_data(). + * + * Returns: a pointer + */ +void * +fpi_ssm_get_user_data(fpi_ssm *machine) +{ + return machine->priv; +} + +/** + * fpi_ssm_free: + * @machine: an #fpi_ssm state machine + * + * Frees a state machine. This does not call any error or success + * callbacks, so you need to do this yourself. + */ +void fpi_ssm_free(fpi_ssm *machine) +{ + if (!machine) + return; + g_free(machine); +} + +/* Invoke the state handler */ +static void __ssm_call_handler(fpi_ssm *machine) +{ + fp_dbg("%p entering state %d", machine, machine->cur_state); + machine->handler(machine); +} + +/** + * fpi_ssm_start: + * @ssm: an #fpi_ssm state machine + * @callback: the #ssm_completed_fn callback to call on completion + * + * Starts a state machine. You can also use this function to restart + * a completed or failed state machine. The @callback will be called + * on completion. + */ +void fpi_ssm_start(fpi_ssm *ssm, ssm_completed_fn callback) +{ + BUG_ON(!ssm->completed); + ssm->callback = callback; + ssm->cur_state = 0; + ssm->completed = FALSE; + ssm->error = 0; + __ssm_call_handler(ssm); +} + +static void __subsm_complete(fpi_ssm *ssm) +{ + fpi_ssm *parent = ssm->parentsm; + BUG_ON(!parent); + if (ssm->error) + fpi_ssm_mark_failed(parent, ssm->error); + else + fpi_ssm_next_state(parent); + fpi_ssm_free(ssm); +} + +/** + * fpi_ssm_start_subsm: + * @parent: an #fpi_ssm state machine + * @child: an #fpi_ssm state machine + * + * Starts a state machine as a child of another. if the child completes + * successfully, the parent will be advanced to the next state. if the + * child fails, the parent will be marked as failed with the same error code. + * + * The child will be automatically freed upon completion or failure. + */ +void fpi_ssm_start_subsm(fpi_ssm *parent, fpi_ssm *child) +{ + child->parentsm = parent; + fpi_ssm_start(child, __subsm_complete); +} + +/** + * fpi_ssm_mark_completed: + * @machine: an #fpi_ssm state machine + * + * Mark a ssm as completed successfully. The callback set when creating + * the state machine with fpi_ssm_new() will be called synchronously. + */ +void fpi_ssm_mark_completed(fpi_ssm *machine) +{ + BUG_ON(machine->completed); + machine->completed = TRUE; + fp_dbg("%p completed with status %d", machine, machine->error); + if (machine->callback) + machine->callback(machine); +} + +/** + * fpi_ssm_mark_failed: + * @machine: an #fpi_ssm state machine + * @error: the error code + * + * Mark a state machine as failed with @error as the error code. + */ +void fpi_ssm_mark_failed(fpi_ssm *machine, int error) +{ + fp_dbg("error %d from state %d", error, machine->cur_state); + BUG_ON(error == 0); + machine->error = error; + fpi_ssm_mark_completed(machine); +} + +/** + * fpi_ssm_next_state: + * @machine: an #fpi_ssm state machine + * + * Iterate to next state of a state machine. If the current state is the + * last state, then the state machine will be marked as completed, as + * if calling fpi_ssm_mark_completed(). + */ +void fpi_ssm_next_state(fpi_ssm *machine) +{ + BUG_ON(machine->completed); + machine->cur_state++; + if (machine->cur_state == machine->nr_states) { + fpi_ssm_mark_completed(machine); + } else { + __ssm_call_handler(machine); + } +} + +/** + * fpi_ssm_jump_to_state: + * @machine: an #fpi_ssm state machine + * @state: the state to jump to + * + */ +void fpi_ssm_jump_to_state(fpi_ssm *machine, int state) +{ + BUG_ON(machine->completed); + BUG_ON(state >= machine->nr_states); + machine->cur_state = state; + __ssm_call_handler(machine); +} + +/** + * fpi_ssm_get_cur_state: + * @machine: an #fpi_ssm state machine + * + * Returns the value of the current state. Note that states are + * 0-indexed, so a value of 0 means “the first state”. + * + * Returns: the current state. + */ +int fpi_ssm_get_cur_state(fpi_ssm *machine) +{ + return machine->cur_state; +} + +/** + * fpi_ssm_get_error: + * @machine: an #fpi_ssm state machine + * + * Returns the error code set by fpi_ssm_mark_failed(). + * + * Returns: a error code + */ +int fpi_ssm_get_error(fpi_ssm *machine) +{ + return machine->error; +} diff --git a/libfprint/fpi-ssm.h b/libfprint/fpi-ssm.h new file mode 100644 index 00000000..73ee2cab --- /dev/null +++ b/libfprint/fpi-ssm.h @@ -0,0 +1,79 @@ +/* + * Driver API definitions + * Copyright (C) 2007-2008 Daniel Drake + * Copyright (C) 2018 Bastien Nocera + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __FPI_SSM_H__ +#define __FPI_SSM_H__ + +#include +#include +#include +#include +#include +#include + +/* async drv <--> lib comms */ + +/** + * fpi_ssm: + * + * Sequential state machine that iterates sequentially over + * a predefined series of states. Can be terminated by either completion or + * failure error conditions. + */ +typedef struct fpi_ssm fpi_ssm; + +/** + * ssm_completed_fn: + * @ssm: a #fpi_ssm state machine + * + * The callback called when a state machine completes successfully, + * as set when calling fpi_ssm_start(). + */ +typedef void (*ssm_completed_fn)(fpi_ssm *ssm); + +/** + * ssm_handler_fn: + * @ssm: a #fpi_ssm state machine + * + * The callback called when a state machine transitions from one + * state to the next, as set when calling fpi_ssm_new(). + */ +typedef void (*ssm_handler_fn)(fpi_ssm *ssm); + +/* for library and drivers */ +fpi_ssm *fpi_ssm_new(struct fp_dev *dev, ssm_handler_fn handler, + int nr_states); +void fpi_ssm_free(fpi_ssm *machine); +void fpi_ssm_start(fpi_ssm *ssm, ssm_completed_fn callback); +void fpi_ssm_start_subsm(fpi_ssm *parent, fpi_ssm *child); + +/* for drivers */ +void fpi_ssm_next_state(fpi_ssm *machine); +void fpi_ssm_jump_to_state(fpi_ssm *machine, int state); +void fpi_ssm_mark_completed(fpi_ssm *machine); +void fpi_ssm_mark_failed(fpi_ssm *machine, int error); +struct fp_dev *fpi_ssm_get_dev(fpi_ssm *machine); +void fpi_ssm_set_user_data(fpi_ssm *machine, + void *user_data); +void *fpi_ssm_get_user_data(fpi_ssm *machine); +int fpi_ssm_get_error(fpi_ssm *machine); +int fpi_ssm_get_cur_state(fpi_ssm *machine); + +#endif diff --git a/libfprint/meson.build b/libfprint/meson.build index c97dcf86..0a9ed021 100644 --- a/libfprint/meson.build +++ b/libfprint/meson.build @@ -4,7 +4,8 @@ libfprint_sources = [ 'async.c', 'core.c', 'data.c', - 'drv.c', + 'fpi-ssm.c', + 'fpi-ssm.h', 'img.c', 'imgdev.c', 'poll.c',