mirror of
https://gitlab.freedesktop.org/libfprint/libfprint.git
synced 2025-11-15 07:38:12 +00:00
lib: Add fp_dev argument to timeout callback
To cut down on the fpi_ssm_get_user_data() usage again.
This commit is contained in:
@@ -583,7 +583,9 @@ static void elan_capture(struct fp_img_dev *dev)
|
||||
fpi_ssm_start(ssm, capture_complete);
|
||||
}
|
||||
|
||||
static void fpi_ssm_next_state_async(void *data)
|
||||
static void
|
||||
fpi_ssm_next_state_async(struct fp_dev *dev,
|
||||
void *data)
|
||||
{
|
||||
fpi_ssm_next_state((fpi_ssm *)data);
|
||||
}
|
||||
@@ -678,7 +680,7 @@ static void calibrate_run_state(fpi_ssm *ssm, struct fp_dev *_dev, void *user_da
|
||||
if (elandev->calib_status == 0x00
|
||||
&& elandev->last_read[0] == 0x01)
|
||||
elandev->calib_status = 0x01;
|
||||
if (!fpi_timeout_add(50, fpi_ssm_next_state_async, ssm))
|
||||
if (!fpi_timeout_add(50, fpi_ssm_next_state_async, _dev, ssm))
|
||||
fpi_ssm_mark_failed(ssm, -ETIME);
|
||||
}
|
||||
break;
|
||||
@@ -884,9 +886,11 @@ static void elan_change_state(struct fp_img_dev *dev)
|
||||
elandev->dev_state = next_state;
|
||||
}
|
||||
|
||||
static void elan_change_state_async(void *data)
|
||||
static void
|
||||
elan_change_state_async(struct fp_dev *dev,
|
||||
void *data)
|
||||
{
|
||||
elan_change_state((struct fp_img_dev *)data);
|
||||
elan_change_state(FP_IMG_DEV (dev));
|
||||
}
|
||||
|
||||
static int dev_change_state(struct fp_img_dev *dev, enum fp_imgdev_state state)
|
||||
@@ -902,7 +906,7 @@ static int dev_change_state(struct fp_img_dev *dev, enum fp_imgdev_state state)
|
||||
/* schedule state change instead of calling it directly to allow all actions
|
||||
* related to the previous state to complete */
|
||||
elandev->dev_state_next = state;
|
||||
if (!fpi_timeout_add(10, elan_change_state_async, dev)) {
|
||||
if (!fpi_timeout_add(10, elan_change_state_async, FP_DEV(dev), NULL)) {
|
||||
fpi_imgdev_session_error(dev, -ETIME);
|
||||
return -ETIME;
|
||||
}
|
||||
|
||||
@@ -876,11 +876,12 @@ enum rebootpwr_states {
|
||||
REBOOTPWR_NUM_STATES,
|
||||
};
|
||||
|
||||
static void rebootpwr_pause_cb(void *data)
|
||||
static void
|
||||
rebootpwr_pause_cb(struct fp_dev *dev,
|
||||
void *data)
|
||||
{
|
||||
fpi_ssm *ssm = data;
|
||||
struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm);
|
||||
struct uru4k_dev *urudev = FP_INSTANCE_DATA(FP_DEV(dev));
|
||||
struct uru4k_dev *urudev = FP_INSTANCE_DATA(dev);
|
||||
|
||||
if (!--urudev->rebootpwr_ctr) {
|
||||
fp_err("could not reboot device power");
|
||||
@@ -911,7 +912,7 @@ static void rebootpwr_run_state(fpi_ssm *ssm, struct fp_dev *_dev, void *user_da
|
||||
fpi_ssm_next_state(ssm);
|
||||
break;
|
||||
case REBOOTPWR_PAUSE:
|
||||
if (fpi_timeout_add(10, rebootpwr_pause_cb, ssm) == NULL)
|
||||
if (fpi_timeout_add(10, rebootpwr_pause_cb, _dev, ssm) == NULL)
|
||||
fpi_ssm_mark_failed(ssm, -ETIME);
|
||||
break;
|
||||
}
|
||||
@@ -953,11 +954,12 @@ enum powerup_states {
|
||||
POWERUP_NUM_STATES,
|
||||
};
|
||||
|
||||
static void powerup_pause_cb(void *data)
|
||||
static void
|
||||
powerup_pause_cb(struct fp_dev *dev,
|
||||
void *data)
|
||||
{
|
||||
fpi_ssm *ssm = data;
|
||||
struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm);
|
||||
struct uru4k_dev *urudev = FP_INSTANCE_DATA(FP_DEV(dev));
|
||||
struct uru4k_dev *urudev = FP_INSTANCE_DATA(dev);
|
||||
|
||||
if (!--urudev->powerup_ctr) {
|
||||
fp_err("could not power device up");
|
||||
@@ -994,7 +996,7 @@ static void powerup_run_state(fpi_ssm *ssm, struct fp_dev *_dev, void *user_data
|
||||
fpi_ssm_next_state(ssm);
|
||||
break;
|
||||
case POWERUP_PAUSE:
|
||||
if (fpi_timeout_add(10, powerup_pause_cb, ssm) == NULL)
|
||||
if (fpi_timeout_add(10, powerup_pause_cb, _dev, ssm) == NULL)
|
||||
fpi_ssm_mark_failed(ssm, -ETIME);
|
||||
break;
|
||||
case POWERUP_CHALLENGE_RESPONSE:
|
||||
@@ -1056,11 +1058,12 @@ static void init_scanpwr_irq_cb(struct fp_img_dev *dev, int status,
|
||||
}
|
||||
}
|
||||
|
||||
static void init_scanpwr_timeout(void *user_data)
|
||||
static void
|
||||
init_scanpwr_timeout(struct fp_dev *dev,
|
||||
void *user_data)
|
||||
{
|
||||
fpi_ssm *ssm = user_data;
|
||||
struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm);
|
||||
struct uru4k_dev *urudev = FP_INSTANCE_DATA(FP_DEV(dev));
|
||||
struct uru4k_dev *urudev = FP_INSTANCE_DATA(dev);
|
||||
|
||||
fp_warn("powerup timed out");
|
||||
urudev->irq_cb = NULL;
|
||||
@@ -1123,7 +1126,8 @@ static void init_run_state(fpi_ssm *ssm, struct fp_dev *_dev, void *user_data)
|
||||
* so we include this timeout loop to retry the whole process 3 times
|
||||
* if we don't get an irq any time soon. */
|
||||
urudev->scanpwr_irq_timeout = fpi_timeout_add(300,
|
||||
init_scanpwr_timeout, ssm);
|
||||
init_scanpwr_timeout,
|
||||
_dev, ssm);
|
||||
if (!urudev->scanpwr_irq_timeout) {
|
||||
fpi_ssm_mark_failed(ssm, -ETIME);
|
||||
break;
|
||||
|
||||
@@ -499,11 +499,12 @@ static void receive_callback(struct libusb_transfer *transfer)
|
||||
}
|
||||
|
||||
/* Stub to keep SSM alive when waiting an interrupt */
|
||||
static void wait_interrupt(void *data)
|
||||
static void
|
||||
wait_interrupt(struct fp_dev *dev,
|
||||
void *data)
|
||||
{
|
||||
fpi_ssm *ssm = data;
|
||||
struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm);
|
||||
struct vfs_dev_t *vdev = FP_INSTANCE_DATA(FP_DEV(idev));
|
||||
struct vfs_dev_t *vdev = FP_INSTANCE_DATA(dev);
|
||||
|
||||
/* Keep sleeping while this flag is on */
|
||||
if (vdev->wait_interrupt)
|
||||
@@ -511,14 +512,18 @@ 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)
|
||||
static void
|
||||
another_scan(struct fp_dev *dev,
|
||||
void *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)
|
||||
static void
|
||||
scan_completed(struct fp_dev *dev,
|
||||
void *data)
|
||||
{
|
||||
fpi_ssm *ssm = data;
|
||||
fpi_ssm_next_state(ssm);
|
||||
@@ -608,7 +613,7 @@ static void activate_ssm(fpi_ssm *ssm, struct fp_dev *_dev, void *user_data)
|
||||
}
|
||||
|
||||
if (vdev->wait_interrupt)
|
||||
fpi_timeout_add(VFS_SSM_TIMEOUT, wait_interrupt, ssm);
|
||||
fpi_timeout_add(VFS_SSM_TIMEOUT, wait_interrupt, _dev, ssm);
|
||||
break;
|
||||
|
||||
case SSM_RECEIVE_FINGER:
|
||||
@@ -647,7 +652,7 @@ static void activate_ssm(fpi_ssm *ssm, struct fp_dev *_dev, void *user_data)
|
||||
clear_data(vdev);
|
||||
|
||||
/* Wait for probable vdev->active changing */
|
||||
fpi_timeout_add(VFS_SSM_TIMEOUT, scan_completed, ssm);
|
||||
fpi_timeout_add(VFS_SSM_TIMEOUT, scan_completed, _dev, ssm);
|
||||
break;
|
||||
|
||||
case SSM_NEXT_RECEIVE:
|
||||
@@ -665,7 +670,7 @@ static void activate_ssm(fpi_ssm *ssm, struct fp_dev *_dev, void *user_data)
|
||||
|
||||
case SSM_WAIT_ANOTHER_SCAN:
|
||||
/* Orange light is on now */
|
||||
fpi_timeout_add(VFS_SSM_ORANGE_TIMEOUT, another_scan, ssm);
|
||||
fpi_timeout_add(VFS_SSM_ORANGE_TIMEOUT, another_scan, _dev, ssm);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
@@ -471,11 +471,12 @@ async_load(fpi_ssm *ssm,
|
||||
}
|
||||
|
||||
/* Callback of asynchronous sleep */
|
||||
static void async_sleep_cb(void *data)
|
||||
static void
|
||||
async_sleep_cb(struct fp_dev *dev,
|
||||
void *data)
|
||||
{
|
||||
fpi_ssm *ssm = data;
|
||||
struct fp_img_dev *dev = fpi_ssm_get_user_data(ssm);
|
||||
struct vfs101_dev *vdev = FP_INSTANCE_DATA(FP_DEV(dev));
|
||||
struct vfs101_dev *vdev = FP_INSTANCE_DATA(dev);
|
||||
|
||||
/* Cleanup timeout */
|
||||
vdev->timeout = NULL;
|
||||
@@ -492,7 +493,7 @@ async_sleep(unsigned int msec,
|
||||
struct vfs101_dev *vdev = FP_INSTANCE_DATA(FP_DEV(dev));
|
||||
|
||||
/* Add timeout */
|
||||
vdev->timeout = fpi_timeout_add(msec, async_sleep_cb, ssm);
|
||||
vdev->timeout = fpi_timeout_add(msec, async_sleep_cb, FP_DEV(dev), ssm);
|
||||
|
||||
if (vdev->timeout == NULL)
|
||||
{
|
||||
|
||||
@@ -27,7 +27,9 @@
|
||||
/************************** GENERIC STUFF *************************************/
|
||||
|
||||
/* Callback of asynchronous sleep */
|
||||
static void async_sleep_cb(void *data)
|
||||
static void
|
||||
async_sleep_cb(struct fp_dev *dev,
|
||||
void *data)
|
||||
{
|
||||
fpi_ssm *ssm = data;
|
||||
|
||||
@@ -43,7 +45,7 @@ async_sleep(unsigned int msec,
|
||||
fpi_timeout *timeout;
|
||||
|
||||
/* Add timeout */
|
||||
timeout = fpi_timeout_add(msec, async_sleep_cb, ssm);
|
||||
timeout = fpi_timeout_add(msec, async_sleep_cb, FP_DEV(dev), ssm);
|
||||
|
||||
if (timeout == NULL) {
|
||||
/* Failed to add timeout */
|
||||
|
||||
@@ -472,7 +472,9 @@ static int capture_chunk_async(struct vfs5011_data *data,
|
||||
return libusb_submit_transfer(data->flying_transfer);
|
||||
}
|
||||
|
||||
static void async_sleep_cb(void *data)
|
||||
static void
|
||||
async_sleep_cb(struct fp_dev *dev,
|
||||
void *data)
|
||||
{
|
||||
fpi_ssm *ssm = data;
|
||||
|
||||
@@ -719,7 +721,7 @@ static void activate_loop(fpi_ssm *ssm, struct fp_dev *_dev, void *user_data)
|
||||
break;
|
||||
|
||||
case DEV_ACTIVATE_DATA_COMPLETE:
|
||||
timeout = fpi_timeout_add(1, async_sleep_cb, ssm);
|
||||
timeout = fpi_timeout_add(1, async_sleep_cb, _dev, ssm);
|
||||
|
||||
if (timeout == NULL) {
|
||||
/* Failed to add timeout */
|
||||
|
||||
Reference in New Issue
Block a user