From c6784d2f1db40a65721766b6fc6442a93bc6eab8 Mon Sep 17 00:00:00 2001 From: Povilas Kanapickas Date: Sat, 23 Nov 2019 12:38:41 +0200 Subject: [PATCH] genesys: Simplify API of sanei_genesys_create_slope_table3() --- backend/genesys/genesys.cpp | 34 +++++++++++++--------------------- backend/genesys/gl841.cpp | 12 ++++-------- backend/genesys/low.h | 4 ++-- 3 files changed, 19 insertions(+), 31 deletions(-) diff --git a/backend/genesys/genesys.cpp b/backend/genesys/genesys.cpp index c9a23fbe9..2cbb1a72e 100644 --- a/backend/genesys/genesys.cpp +++ b/backend/genesys/genesys.cpp @@ -434,14 +434,14 @@ SANE_Int sanei_genesys_generate_slope_table(std::vector& slope_table, * @return Time for acceleration * @note all times in pixel time */ -SANE_Int sanei_genesys_create_slope_table3(Genesys_Device * dev, +SANE_Int sanei_genesys_create_slope_table3(const Genesys_Motor& motor, std::vector& slope_table, int max_step, unsigned int use_steps, int step_type, int exposure_time, - double yres, - unsigned int *used_steps, + unsigned yres, + unsigned int *used_steps, unsigned int *final_exposure) { unsigned int sum_time = 0; @@ -450,26 +450,18 @@ SANE_Int sanei_genesys_create_slope_table3(Genesys_Device * dev, unsigned int vstart; unsigned int vfinal; - DBG(DBG_proc, "%s: step_type = %d, exposure_time = %d, yres = %g\n", __func__, + DBG(DBG_proc, "%s: step_type = %d, exposure_time = %d, yres = %d\n", __func__, step_type, exposure_time, yres); /* final speed */ - vtarget = static_cast((exposure_time * yres) / dev->motor.base_ydpi); + vtarget = (exposure_time * yres) / motor.base_ydpi; - vstart = dev->motor.slopes[step_type].maximum_start_speed; - vend = dev->motor.slopes[step_type].maximum_speed; + vstart = motor.slopes[step_type].maximum_start_speed; + vend = motor.slopes[step_type].maximum_speed; - vtarget >>= step_type; - if (vtarget > 65535) - vtarget = 65535; - - vstart >>= step_type; - if (vstart > 65535) - vstart = 65535; - - vend >>= step_type; - if (vend > 65535) - vend = 65535; + vtarget = std::min(vtarget >> step_type, 65535u); + vstart = std::min(vstart >> step_type, 65535u); + vend = std::min(vend >> step_type, 65535u); sum_time = sanei_genesys_generate_slope_table (slope_table, max_step, @@ -477,13 +469,13 @@ SANE_Int sanei_genesys_create_slope_table3(Genesys_Device * dev, vtarget, vstart, vend, - dev->motor.slopes[step_type].minimum_steps << step_type, - dev->motor.slopes[step_type].g, + motor.slopes[step_type].minimum_steps << step_type, + motor.slopes[step_type].g, used_steps, &vfinal); if (final_exposure) { - *final_exposure = static_cast((vfinal * dev->motor.base_ydpi) / yres); + *final_exposure = (vfinal * motor.base_ydpi) / yres; } DBG(DBG_proc, "%s: returns sum_time=%d, completed\n", __func__, sum_time); diff --git a/backend/genesys/gl841.cpp b/backend/genesys/gl841.cpp index abac67297..00e913ab8 100644 --- a/backend/genesys/gl841.cpp +++ b/backend/genesys/gl841.cpp @@ -867,8 +867,7 @@ static void gl841_init_motor_regs(Genesys_Device* dev, const Genesys_Sensor& sen fast_exposure = dev->motor.slopes[0].maximum_start_speed; } - sanei_genesys_create_slope_table3( - dev, + sanei_genesys_create_slope_table3(dev->motor, fast_slope_table, 256, fast_slope_steps, @@ -1031,8 +1030,7 @@ static void gl841_init_motor_regs_scan(Genesys_Device* dev, const Genesys_Sensor how many steps we need for slow acceleration and how much steps we are allowed to use. */ - slow_slope_time = sanei_genesys_create_slope_table3 ( - dev, + slow_slope_time = sanei_genesys_create_slope_table3(dev->motor, slow_slope_table, 256, 256, scan_step_type, @@ -1041,8 +1039,7 @@ static void gl841_init_motor_regs_scan(Genesys_Device* dev, const Genesys_Sensor &slow_slope_steps, nullptr); - sanei_genesys_create_slope_table3 ( - dev, + sanei_genesys_create_slope_table3(dev->motor, back_slope_table, 256, 256, scan_step_type, @@ -1067,8 +1064,7 @@ static void gl841_init_motor_regs_scan(Genesys_Device* dev, const Genesys_Sensor DBG(DBG_info, "%s: Maximum allowed slope steps for fast slope: %d\n", __func__, fast_slope_steps); - fast_slope_time = sanei_genesys_create_slope_table3 ( - dev, + fast_slope_time = sanei_genesys_create_slope_table3(dev->motor, fast_slope_table, 256, fast_slope_steps, 0, diff --git a/backend/genesys/low.h b/backend/genesys/low.h index 197f46e05..4c8a21c82 100644 --- a/backend/genesys/low.h +++ b/backend/genesys/low.h @@ -345,11 +345,11 @@ SANE_Int sanei_genesys_generate_slope_table(std::vector& slope_table, unsigned int steps, double g, unsigned int *used_steps, unsigned int *vfinal); -SANE_Int sanei_genesys_create_slope_table3(Genesys_Device * dev, +SANE_Int sanei_genesys_create_slope_table3(const Genesys_Motor& motor, std::vector& slope_table, int max_step, unsigned int use_steps, int step_type, int exposure_time, - double yres, + unsigned yres, unsigned int *used_steps, unsigned int *final_exposure);