diff --git a/backend/genesys/command_set.h b/backend/genesys/command_set.h index e73a137fe..89f7e7160 100644 --- a/backend/genesys/command_set.h +++ b/backend/genesys/command_set.h @@ -76,6 +76,13 @@ public: Genesys_Register_Set& regs) const = 0; virtual void init_regs_for_scan(Genesys_Device* dev, const Genesys_Sensor& sensor) const = 0; + /** Set up registers for a scan. Similar to init_regs_for_scan except that the session is + already computed from the session + */ + virtual void init_regs_for_scan_session(Genesys_Device* dev, const Genesys_Sensor& sensor, + Genesys_Register_Set* reg, + const ScanSession& session) const= 0; + virtual void set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, std::uint8_t set) const = 0; virtual void set_powersaving(Genesys_Device* dev, int delay) const = 0; virtual void save_power(Genesys_Device* dev, bool enable) const = 0; @@ -85,6 +92,7 @@ public: virtual void end_scan(Genesys_Device* dev, Genesys_Register_Set* regs, bool check_stop) const = 0; + /** * Send gamma tables to ASIC */ diff --git a/backend/genesys/gl124.cpp b/backend/genesys/gl124.cpp index 49851ba6f..74946d093 100644 --- a/backend/genesys/gl124.cpp +++ b/backend/genesys/gl124.cpp @@ -863,12 +863,9 @@ static void gl124_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens reg->set16(REG_DUMMY, sensor.dummy_pixel); } -/** set up registers for an actual scan - * - * this function sets up the scanner to scan in normal or single line mode - */ -static void gl124_init_scan_regs(Genesys_Device* dev, const Genesys_Sensor& sensor, - Genesys_Register_Set* reg, const ScanSession& session) +void CommandSetGl124::init_regs_for_scan_session(Genesys_Device* dev, const Genesys_Sensor& sensor, + Genesys_Register_Set* reg, + const ScanSession& session) const { DBG_HELPER(dbg); session.assert_computed(); @@ -1223,7 +1220,7 @@ void CommandSetGl124::slow_back_home(Genesys_Device* dev, bool wait_until_home) ScanFlag::REVERSE; compute_session(dev, session, sensor); - gl124_init_scan_regs(dev, sensor, &local_reg, session); + init_regs_for_scan_session(dev, sensor, &local_reg, session); // clear scan and feed count dev->interface->write_register(REG_0x0D, REG_0x0D_CLRLNCNT | REG_0x0D_CLRMCNT); @@ -1313,7 +1310,7 @@ static void gl124_feed(Genesys_Device* dev, unsigned int steps, int reverse) } compute_session(dev, session, sensor); - gl124_init_scan_regs(dev, sensor, &local_reg, session); + dev->cmd_set->init_regs_for_scan_session(dev, sensor, &local_reg, session); local_reg.set24(REG_EXPR, 0); local_reg.set24(REG_EXPG, 0); @@ -1397,7 +1394,7 @@ void CommandSetGl124::search_start_position(Genesys_Device* dev) const ScanFlag::DISABLE_BUFFER_FULL_MOVE; compute_session(dev, session, sensor); - gl124_init_scan_regs(dev, sensor, &local_reg, session); + init_regs_for_scan_session(dev, sensor, &local_reg, session); // send to scanner dev->interface->write_registers(local_reg); @@ -1465,7 +1462,7 @@ void CommandSetGl124::init_regs_for_coarse_calibration(Genesys_Device* dev, ScanFlag::IGNORE_LINE_DISTANCE; compute_session(dev, session, sensor); - gl124_init_scan_regs(dev, sensor, ®s, session); + init_regs_for_scan_session(dev, sensor, ®s, session); sanei_genesys_set_motor_power(regs, false); @@ -1532,7 +1529,7 @@ void CommandSetGl124::init_regs_for_shading(Genesys_Device* dev, const Genesys_S compute_session(dev, session, sensor); try { - gl124_init_scan_regs(dev, sensor, ®s, session); + init_regs_for_scan_session(dev, sensor, ®s, session); } catch (...) { catch_all_exceptions(__func__, [&](){ sanei_genesys_set_motor_power(regs, false); }); throw; @@ -1609,7 +1606,7 @@ void CommandSetGl124::init_regs_for_scan(Genesys_Device* dev, const Genesys_Sens session.params.flags = ScanFlag::NONE; compute_session(dev, session, sensor); - gl124_init_scan_regs(dev, sensor, &dev->reg, session); + init_regs_for_scan_session(dev, sensor, &dev->reg, session); } /** @@ -1753,7 +1750,7 @@ static void move_to_calibration_area(Genesys_Device* dev, const Genesys_Sensor& ScanFlag::IGNORE_LINE_DISTANCE; compute_session(dev, session, sensor); - gl124_init_scan_regs(dev, sensor, ®s, session); + dev->cmd_set->init_regs_for_scan_session(dev, sensor, ®s, session); size = pixels * 3; std::vector line(size); @@ -1836,7 +1833,7 @@ SensorExposure CommandSetGl124::led_calibration(Genesys_Device* dev, const Genes ScanFlag::IGNORE_LINE_DISTANCE; compute_session(dev, session, sensor); - gl124_init_scan_regs(dev, sensor, ®s, session); + init_regs_for_scan_session(dev, sensor, ®s, session); total_size = num_pixels * channels * (session.params.depth / 8) * 1; std::vector line(total_size); @@ -2011,7 +2008,7 @@ void CommandSetGl124::offset_calibration(Genesys_Device* dev, const Genesys_Sens ScanFlag::IGNORE_LINE_DISTANCE; compute_session(dev, session, sensor); - gl124_init_scan_regs(dev, sensor, ®s, session); + init_regs_for_scan_session(dev, sensor, ®s, session); sanei_genesys_set_motor_power(regs, false); @@ -2172,7 +2169,7 @@ void CommandSetGl124::coarse_gain_calibration(Genesys_Device* dev, const Genesys compute_session(dev, session, sensor); try { - gl124_init_scan_regs(dev, sensor, ®s, session); + init_regs_for_scan_session(dev, sensor, ®s, session); } catch (...) { catch_all_exceptions(__func__, [&](){ sanei_genesys_set_motor_power(regs, false); }); throw; @@ -2287,7 +2284,7 @@ void CommandSetGl124::init_regs_for_warmup(Genesys_Device* dev, const Genesys_Se ScanFlag::IGNORE_LINE_DISTANCE; compute_session(dev, session, sensor); - gl124_init_scan_regs(dev, sensor, reg, session); + init_regs_for_scan_session(dev, sensor, reg, session); num_pixels = session.output_pixels; diff --git a/backend/genesys/gl124.h b/backend/genesys/gl124.h index c1c6fe2cc..711ba067f 100644 --- a/backend/genesys/gl124.h +++ b/backend/genesys/gl124.h @@ -137,6 +137,10 @@ public: void init_regs_for_scan(Genesys_Device* dev, const Genesys_Sensor& sensor) const override; + void init_regs_for_scan_session(Genesys_Device* dev, const Genesys_Sensor& sensor, + Genesys_Register_Set* reg, + const ScanSession& session) const override; + void set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t set) const override; void set_powersaving(Genesys_Device* dev, int delay) const override; void save_power(Genesys_Device* dev, bool enable) const override; diff --git a/backend/genesys/gl646.cpp b/backend/genesys/gl646.cpp index a88280939..eb583206f 100644 --- a/backend/genesys/gl646.cpp +++ b/backend/genesys/gl646.cpp @@ -166,22 +166,9 @@ static int get_cksel(SensorId sensor_id, int required, unsigned channels) return 1; } -/** - * Setup register and motor tables for a scan at the - * given resolution and color mode. TODO try to not use any filed from - * the device. - * @param dev pointer to a struct describing the device - * @param regs register set to fill - * @param slope_table1 first motor table to fill - * @param slope_table2 second motor table to fill - * @note No harcoded SENSOR or MOTOR 'names' should be present and - * registers are set from settings tables and flags related - * to the hardware capabilities. - * */ -static void gl646_setup_registers(Genesys_Device* dev, - const Genesys_Sensor& sensor, - Genesys_Register_Set* regs, - const ScanSession& session) +void CommandSetGl646::init_regs_for_scan_session(Genesys_Device* dev, const Genesys_Sensor& sensor, + Genesys_Register_Set* regs, + const ScanSession& session) const { DBG_HELPER(dbg); session.assert_computed(); @@ -1535,8 +1522,7 @@ void CommandSetGl646::slow_back_home(Genesys_Device* dev, bool wait_until_home) } compute_session(dev, session, sensor); - // set up correct values for scan (gamma and shading enabled) - gl646_setup_registers(dev, sensor, &dev->reg, session); + init_regs_for_scan_session(dev, sensor, &dev->reg, session); /* backward , no actual data scanned TODO more setup flags to avoid this register manipulations ? */ dev->reg.find_reg(0x01).value &= ~REG_0x01_SCAN; @@ -1776,8 +1762,7 @@ void CommandSetGl646::init_regs_for_scan(Genesys_Device* dev, const Genesys_Sens ScanSession session = calculate_scan_session(dev, sensor, dev->settings); - // set up correct values for scan (gamma and shading enabled) - gl646_setup_registers(dev, sensor, &dev->reg, session); + init_regs_for_scan_session(dev, sensor, &dev->reg, session); /* gamma is only enabled at final scan time */ if (dev->settings.depth < 16) { @@ -1865,8 +1850,7 @@ static void setup_for_scan(Genesys_Device* dev, } compute_session(dev, session, sensor); - // set up correct values for scan (gamma and shading enabled) - gl646_setup_registers(dev, sensor, regs, session); + dev->cmd_set->init_regs_for_scan_session(dev, sensor, regs, session); } /** diff --git a/backend/genesys/gl646.h b/backend/genesys/gl646.h index 1ba01fa79..7e93bbb06 100644 --- a/backend/genesys/gl646.h +++ b/backend/genesys/gl646.h @@ -254,6 +254,10 @@ public: void init_regs_for_scan(Genesys_Device* dev, const Genesys_Sensor& sensor) const override; + void init_regs_for_scan_session(Genesys_Device* dev, const Genesys_Sensor& sensor, + Genesys_Register_Set* reg, + const ScanSession& session) const override; + void set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t set) const override; void set_powersaving(Genesys_Device* dev, int delay) const override; void save_power(Genesys_Device* dev, bool enable) const override; diff --git a/backend/genesys/gl841.cpp b/backend/genesys/gl841.cpp index 1c97d9305..152cbb49b 100644 --- a/backend/genesys/gl841.cpp +++ b/backend/genesys/gl841.cpp @@ -1533,10 +1533,9 @@ static StepType gl841_scan_step_type(Genesys_Device *dev, int yres) return type; } -// set up registers for an actual scan this function sets up the scanner to scan in normal or single -// line mode -static void gl841_init_scan_regs(Genesys_Device* dev, const Genesys_Sensor& sensor, - Genesys_Register_Set* reg, const ScanSession& session) +void CommandSetGl841::init_regs_for_scan_session(Genesys_Device* dev, const Genesys_Sensor& sensor, + Genesys_Register_Set* reg, + const ScanSession& session) const { DBG_HELPER(dbg); session.assert_computed(); @@ -2364,7 +2363,7 @@ void CommandSetGl841::search_start_position(Genesys_Device* dev) const ScanFlag::DISABLE_BUFFER_FULL_MOVE; compute_session(dev, session, sensor); - gl841_init_scan_regs(dev, sensor, &local_reg, session); + init_regs_for_scan_session(dev, sensor, &local_reg, session); // send to scanner dev->interface->write_registers(local_reg); @@ -2431,7 +2430,7 @@ void CommandSetGl841::init_regs_for_coarse_calibration(Genesys_Device* dev, ScanFlag::IGNORE_LINE_DISTANCE; compute_session(dev, session, sensor); - gl841_init_scan_regs(dev, sensor, ®s, session); + init_regs_for_scan_session(dev, sensor, ®s, session); DBG(DBG_info, "%s: optical sensor res: %d dpi, actual res: %d\n", __func__, sensor.optical_res / sensor.ccd_pixels_per_system_pixel(), dev->settings.xres); @@ -2503,7 +2502,7 @@ void CommandSetGl841::init_regs_for_shading(Genesys_Device* dev, const Genesys_S ScanFlag::IGNORE_LINE_DISTANCE; compute_session(dev, session, calib_sensor); - gl841_init_scan_regs(dev, calib_sensor, ®s, session); + init_regs_for_scan_session(dev, calib_sensor, ®s, session); dev->scanhead_position_in_steps += dev->calib_lines + starty; @@ -2594,7 +2593,7 @@ void CommandSetGl841::init_regs_for_scan(Genesys_Device* dev, const Genesys_Sens session.params.flags = flags; compute_session(dev, session, sensor); - gl841_init_scan_regs(dev, sensor, &dev->reg, session); + init_regs_for_scan_session(dev, sensor, &dev->reg, session); } @@ -2675,7 +2674,7 @@ SensorExposure CommandSetGl841::led_calibration(Genesys_Device* dev, const Genes ScanFlag::IGNORE_LINE_DISTANCE; compute_session(dev, session, calib_sensor_base); - gl841_init_scan_regs(dev, calib_sensor_base, ®s, session); + init_regs_for_scan_session(dev, calib_sensor_base, ®s, session); dev->interface->write_registers(regs); @@ -2886,7 +2885,7 @@ static void ad_fe_offset_calibration(Genesys_Device* dev, const Genesys_Sensor& ScanFlag::IGNORE_LINE_DISTANCE; compute_session(dev, session, calib_sensor); - gl841_init_scan_regs(dev, calib_sensor, ®s, session); + dev->cmd_set->init_regs_for_scan_session(dev, calib_sensor, ®s, session); total_size = num_pixels * 3 * 2 * 1; @@ -3016,7 +3015,7 @@ void CommandSetGl841::offset_calibration(Genesys_Device* dev, const Genesys_Sens ScanFlag::DISABLE_LAMP; compute_session(dev, session, calib_sensor); - gl841_init_scan_regs(dev, calib_sensor, ®s, session); + init_regs_for_scan_session(dev, calib_sensor, ®s, session); total_size = num_pixels * channels * 2 * 1; /* colors * bytes_per_color * scan lines */ @@ -3386,7 +3385,7 @@ void CommandSetGl841::coarse_gain_calibration(Genesys_Device* dev, const Genesys ScanFlag::IGNORE_LINE_DISTANCE; compute_session(dev, session, calib_sensor); - gl841_init_scan_regs(dev, calib_sensor, ®s, session); + init_regs_for_scan_session(dev, calib_sensor, ®s, session); dev->interface->write_registers(regs); @@ -3539,7 +3538,7 @@ void CommandSetGl841::init_regs_for_warmup(Genesys_Device* dev, const Genesys_Se ScanFlag::IGNORE_LINE_DISTANCE; compute_session(dev, session, sensor); - gl841_init_scan_regs(dev, sensor, local_reg, session); + init_regs_for_scan_session(dev, sensor, local_reg, session); num_pixels = session.output_pixels; @@ -3657,7 +3656,7 @@ void CommandSetGl841::init(Genesys_Device* dev) const ScanFlag::IGNORE_LINE_DISTANCE; compute_session(dev, session, calib_sensor); - gl841_init_scan_regs(dev, calib_sensor, ®s, session); + init_regs_for_scan_session(dev, calib_sensor, ®s, session); dev->interface->write_registers(regs); @@ -3787,7 +3786,7 @@ void CommandSetGl841::search_strip(Genesys_Device* dev, const Genesys_Sensor& se size = pixels * channels * lines * (session.params.depth / 8); std::vector data(size); - gl841_init_scan_regs(dev, sensor, &local_reg, session); + init_regs_for_scan_session(dev, sensor, &local_reg, session); /* set up for reverse or forward */ r = sanei_genesys_get_address(&local_reg, 0x02); diff --git a/backend/genesys/gl841.h b/backend/genesys/gl841.h index 3c9a4ab4b..dd3b1e0bd 100644 --- a/backend/genesys/gl841.h +++ b/backend/genesys/gl841.h @@ -71,6 +71,10 @@ public: void init_regs_for_scan(Genesys_Device* dev, const Genesys_Sensor& sensor) const override; + void init_regs_for_scan_session(Genesys_Device* dev, const Genesys_Sensor& sensor, + Genesys_Register_Set* reg, + const ScanSession& session) const override; + void set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t set) const override; void set_powersaving(Genesys_Device* dev, int delay) const override; void save_power(Genesys_Device* dev, bool enable) const override; diff --git a/backend/genesys/gl843.cpp b/backend/genesys/gl843.cpp index e532f95fe..753b4d7ef 100644 --- a/backend/genesys/gl843.cpp +++ b/backend/genesys/gl843.cpp @@ -1160,10 +1160,9 @@ static void gl843_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens r->value = sensor.dummy_pixel; } -// set up registers for an actual scan this function sets up the scanner to scan in normal or single -// line mode -static void gl843_init_scan_regs(Genesys_Device* dev, const Genesys_Sensor& sensor, - Genesys_Register_Set* reg, const ScanSession& session) +void CommandSetGl843::init_regs_for_scan_session(Genesys_Device* dev, const Genesys_Sensor& sensor, + Genesys_Register_Set* reg, + const ScanSession& session) const { DBG_HELPER(dbg); session.assert_computed(); @@ -1831,7 +1830,7 @@ void CommandSetGl843::slow_back_home(Genesys_Device* dev, bool wait_until_home) ScanFlag::REVERSE; compute_session(dev, session, sensor); - gl843_init_scan_regs(dev, sensor, &local_reg, session); + init_regs_for_scan_session(dev, sensor, &local_reg, session); // clear scan and feed count dev->interface->write_register(REG_0x0D, REG_0x0D_CLRLNCNT | REG_0x0D_CLRMCNT); @@ -1921,7 +1920,7 @@ void CommandSetGl843::search_start_position(Genesys_Device* dev) const ScanFlag::DISABLE_BUFFER_FULL_MOVE; compute_session(dev, session, sensor); - gl843_init_scan_regs(dev, sensor, &local_reg, session); + init_regs_for_scan_session(dev, sensor, &local_reg, session); // send to scanner dev->interface->write_registers(local_reg); @@ -1992,7 +1991,7 @@ void CommandSetGl843::init_regs_for_coarse_calibration(Genesys_Device* dev, session.params.flags = flags; compute_session(dev, session, sensor); - gl843_init_scan_regs(dev, sensor, ®s, session); + init_regs_for_scan_session(dev, sensor, ®s, session); sanei_genesys_set_motor_power(regs, false); @@ -2038,7 +2037,7 @@ static void gl843_feed(Genesys_Device* dev, unsigned int steps) ScanFlag::IGNORE_LINE_DISTANCE; compute_session(dev, session, sensor); - gl843_init_scan_regs(dev, sensor, &local_reg, session); + dev->cmd_set->init_regs_for_scan_session(dev, sensor, &local_reg, session); // clear scan and feed count dev->interface->write_register(REG_0x0D, REG_0x0D_CLRLNCNT); @@ -2163,7 +2162,7 @@ void CommandSetGl843::init_regs_for_shading(Genesys_Device* dev, const Genesys_S session.params.flags = flags; compute_session(dev, session, calib_sensor); - gl843_init_scan_regs(dev, calib_sensor, ®s, session); + init_regs_for_scan_session(dev, calib_sensor, ®s, session); // the pixel number may be updated to conform to scanner constraints dev->calib_pixels = session.output_pixels; @@ -2249,7 +2248,7 @@ void CommandSetGl843::init_regs_for_scan(Genesys_Device* dev, const Genesys_Sens session.params.flags = flags; compute_session(dev, session, sensor); - gl843_init_scan_regs(dev, sensor, &dev->reg, session); + init_regs_for_scan_session(dev, sensor, &dev->reg, session); } /** @@ -2328,7 +2327,7 @@ SensorExposure CommandSetGl843::led_calibration(Genesys_Device* dev, const Genes ScanFlag::IGNORE_LINE_DISTANCE; compute_session(dev, session, calib_sensor); - gl843_init_scan_regs(dev, calib_sensor, ®s, session); + init_regs_for_scan_session(dev, calib_sensor, ®s, session); dev->interface->write_registers(regs); @@ -2554,7 +2553,7 @@ void CommandSetGl843::offset_calibration(Genesys_Device* dev, const Genesys_Sens DBG(DBG_io, "%s: resolution =%d\n", __func__, resolution); DBG(DBG_io, "%s: pixels =%d\n", __func__, pixels); DBG(DBG_io, "%s: black_pixels=%d\n", __func__, black_pixels); - gl843_init_scan_regs(dev, calib_sensor, ®s, session); + init_regs_for_scan_session(dev, calib_sensor, ®s, session); sanei_genesys_set_motor_power(regs, false); @@ -2773,7 +2772,7 @@ void CommandSetGl843::coarse_gain_calibration(Genesys_Device* dev, const Genesys std::size_t pixels = session.output_pixels; try { - gl843_init_scan_regs(dev, calib_sensor, ®s, session); + init_regs_for_scan_session(dev, calib_sensor, ®s, session); } catch (...) { catch_all_exceptions(__func__, [&](){ sanei_genesys_set_motor_power(regs, false); }); throw; @@ -2890,7 +2889,7 @@ void CommandSetGl843::init_regs_for_warmup(Genesys_Device* dev, const Genesys_Se ScanFlag::IGNORE_LINE_DISTANCE; compute_session(dev, session, calib_sensor); - gl843_init_scan_regs(dev, calib_sensor, reg, session); + init_regs_for_scan_session(dev, calib_sensor, reg, session); sanei_genesys_set_motor_power(*reg, false); dev->interface->write_registers(*reg); @@ -3136,7 +3135,7 @@ void CommandSetGl843::search_strip(Genesys_Device* dev, const Genesys_Sensor& se } compute_session(dev, session, calib_sensor); - gl843_init_scan_regs(dev, calib_sensor, &local_reg, session); + init_regs_for_scan_session(dev, calib_sensor, &local_reg, session); dev->interface->write_registers(local_reg); diff --git a/backend/genesys/gl843.h b/backend/genesys/gl843.h index 6d7bd3330..5912b50a9 100644 --- a/backend/genesys/gl843.h +++ b/backend/genesys/gl843.h @@ -71,6 +71,10 @@ public: void init_regs_for_scan(Genesys_Device* dev, const Genesys_Sensor& sensor) const override; + void init_regs_for_scan_session(Genesys_Device* dev, const Genesys_Sensor& sensor, + Genesys_Register_Set* reg, + const ScanSession& session) const override; + void set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t set) const override; void set_powersaving(Genesys_Device* dev, int delay) const override; void save_power(Genesys_Device* dev, bool enable) const override; diff --git a/backend/genesys/gl846.cpp b/backend/genesys/gl846.cpp index bbffc0bed..11c38f7c4 100644 --- a/backend/genesys/gl846.cpp +++ b/backend/genesys/gl846.cpp @@ -715,10 +715,9 @@ static void gl846_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens r->value = sensor.dummy_pixel; } -// set up registers for an actual scan this function sets up the scanner to scan in normal or single -// line mode -static void gl846_init_scan_regs(Genesys_Device* dev, const Genesys_Sensor& sensor, - Genesys_Register_Set* reg, const ScanSession& session) +void CommandSetGl846::init_regs_for_scan_session(Genesys_Device* dev, const Genesys_Sensor& sensor, + Genesys_Register_Set* reg, + const ScanSession& session) const { DBG_HELPER(dbg); session.assert_computed(); @@ -972,7 +971,7 @@ void CommandSetGl846::slow_back_home(Genesys_Device* dev, bool wait_until_home) ScanFlag::REVERSE; compute_session(dev, session, sensor); - gl846_init_scan_regs(dev, sensor, &local_reg, session); + init_regs_for_scan_session(dev, sensor, &local_reg, session); // clear scan and feed count dev->interface->write_register(REG_0x0D, REG_0x0D_CLRLNCNT | REG_0x0D_CLRMCNT); @@ -1061,7 +1060,7 @@ void CommandSetGl846::search_start_position(Genesys_Device* dev) const ScanFlag::IGNORE_LINE_DISTANCE; compute_session(dev, session, sensor); - gl846_init_scan_regs(dev, sensor, &local_reg, session); + init_regs_for_scan_session(dev, sensor, &local_reg, session); // send to scanner dev->interface->write_registers(local_reg); @@ -1130,7 +1129,7 @@ void CommandSetGl846::init_regs_for_coarse_calibration(Genesys_Device* dev, ScanFlag::IGNORE_LINE_DISTANCE; compute_session(dev, session, sensor); - gl846_init_scan_regs(dev, sensor, ®s, session); + init_regs_for_scan_session(dev, sensor, ®s, session); DBG(DBG_info, "%s: optical sensor res: %d dpi, actual res: %d\n", __func__, sensor.optical_res / sensor.ccd_pixels_per_system_pixel(), dev->settings.xres); @@ -1172,7 +1171,7 @@ static void gl846_feed(Genesys_Device* dev, unsigned int steps) ScanFlag::IGNORE_LINE_DISTANCE; compute_session(dev, session, sensor); - gl846_init_scan_regs(dev, sensor, &local_reg, session); + dev->cmd_set->init_regs_for_scan_session(dev, sensor, &local_reg, session); local_reg.set24(REG_EXPR, 0); local_reg.set24(REG_EXPG, 0); @@ -1267,7 +1266,7 @@ void CommandSetGl846::init_regs_for_shading(Genesys_Device* dev, const Genesys_S ScanFlag::IGNORE_LINE_DISTANCE; compute_session(dev, session, sensor); - gl846_init_scan_regs(dev, sensor, ®s, session); + init_regs_for_scan_session(dev, sensor, ®s, session); dev->interface->write_registers(regs); @@ -1349,7 +1348,7 @@ void CommandSetGl846::init_regs_for_scan(Genesys_Device* dev, const Genesys_Sens session.params.flags = ScanFlag::DISABLE_BUFFER_FULL_MOVE; compute_session(dev, session, sensor); - gl846_init_scan_regs(dev, sensor, &dev->reg, session); + init_regs_for_scan_session(dev, sensor, &dev->reg, session); } @@ -1485,7 +1484,7 @@ SensorExposure CommandSetGl846::led_calibration(Genesys_Device* dev, const Genes ScanFlag::IGNORE_LINE_DISTANCE; compute_session(dev, session, sensor); - gl846_init_scan_regs(dev, sensor, ®s, session); + init_regs_for_scan_session(dev, sensor, ®s, session); total_size = num_pixels * channels * (session.params.depth / 8) * 1; std::vector line(total_size); @@ -1828,7 +1827,7 @@ void CommandSetGl846::search_strip(Genesys_Device* dev, const Genesys_Sensor& se } compute_session(dev, session, sensor); - gl846_init_scan_regs(dev, sensor, &local_reg, session); + init_regs_for_scan_session(dev, sensor, &local_reg, session); size = pixels * channels * lines * (session.params.depth / 8); std::vector data(size); @@ -2049,7 +2048,7 @@ void CommandSetGl846::offset_calibration(Genesys_Device* dev, const Genesys_Sens ScanFlag::IGNORE_LINE_DISTANCE; compute_session(dev, session, sensor); - gl846_init_scan_regs(dev, sensor, ®s, session); + init_regs_for_scan_session(dev, sensor, ®s, session); sanei_genesys_set_motor_power(regs, false); @@ -2204,7 +2203,7 @@ void CommandSetGl846::coarse_gain_calibration(Genesys_Device* dev, const Genesys compute_session(dev, session, sensor); try { - gl846_init_scan_regs(dev, sensor, ®s, session); + init_regs_for_scan_session(dev, sensor, ®s, session); } catch (...) { catch_all_exceptions(__func__, [&](){ sanei_genesys_set_motor_power(regs, false); }); throw; diff --git a/backend/genesys/gl846.h b/backend/genesys/gl846.h index f2bee5f92..04ab01467 100644 --- a/backend/genesys/gl846.h +++ b/backend/genesys/gl846.h @@ -156,6 +156,10 @@ public: void init_regs_for_scan(Genesys_Device* dev, const Genesys_Sensor& sensor) const override; + void init_regs_for_scan_session(Genesys_Device* dev, const Genesys_Sensor& sensor, + Genesys_Register_Set* reg, + const ScanSession& session) const override; + void set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t set) const override; void set_powersaving(Genesys_Device* dev, int delay) const override; void save_power(Genesys_Device* dev, bool enable) const override; diff --git a/backend/genesys/gl847.cpp b/backend/genesys/gl847.cpp index 252a30080..7a03049a8 100644 --- a/backend/genesys/gl847.cpp +++ b/backend/genesys/gl847.cpp @@ -724,10 +724,9 @@ static void gl847_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens r->value = sensor.dummy_pixel; } -// set up registers for an actual scan this function sets up the scanner to scan in normal or single -// line mode -static void gl847_init_scan_regs(Genesys_Device* dev, const Genesys_Sensor& sensor, - Genesys_Register_Set* reg, const ScanSession& session) +void CommandSetGl847::init_regs_for_scan_session(Genesys_Device* dev, const Genesys_Sensor& sensor, + Genesys_Register_Set* reg, + const ScanSession& session) const { DBG_HELPER(dbg); session.assert_computed(); @@ -1017,7 +1016,7 @@ void CommandSetGl847::slow_back_home(Genesys_Device* dev, bool wait_until_home) ScanFlag::REVERSE; compute_session(dev, session, sensor); - gl847_init_scan_regs(dev, sensor, &local_reg, session); + init_regs_for_scan_session(dev, sensor, &local_reg, session); // clear scan and feed count dev->interface->write_register(REG_0x0D, REG_0x0D_CLRLNCNT | REG_0x0D_CLRMCNT); @@ -1104,7 +1103,7 @@ void CommandSetGl847::search_start_position(Genesys_Device* dev) const ScanFlag::IGNORE_LINE_DISTANCE; compute_session(dev, session, sensor); - gl847_init_scan_regs(dev, sensor, &local_reg, session); + init_regs_for_scan_session(dev, sensor, &local_reg, session); // send to scanner dev->interface->write_registers(local_reg); @@ -1173,7 +1172,7 @@ void CommandSetGl847::init_regs_for_coarse_calibration(Genesys_Device* dev, ScanFlag::IGNORE_LINE_DISTANCE; compute_session(dev, session, sensor); - gl847_init_scan_regs(dev, sensor, ®s, session); + init_regs_for_scan_session(dev, sensor, ®s, session); DBG(DBG_info, "%s: optical sensor res: %d dpi, actual res: %d\n", __func__, sensor.optical_res / sensor.ccd_pixels_per_system_pixel(), dev->settings.xres); @@ -1214,7 +1213,7 @@ static void gl847_feed(Genesys_Device* dev, unsigned int steps) ScanFlag::IGNORE_LINE_DISTANCE; compute_session(dev, session, sensor); - gl847_init_scan_regs(dev, sensor, &local_reg, session); + dev->cmd_set->init_regs_for_scan_session(dev, sensor, &local_reg, session); // set exposure to zero local_reg.set24(REG_EXPR,0); @@ -1299,7 +1298,7 @@ void CommandSetGl847::init_regs_for_shading(Genesys_Device* dev, const Genesys_S ScanFlag::IGNORE_LINE_DISTANCE; compute_session(dev, session, sensor); - gl847_init_scan_regs(dev, sensor, ®s, session); + init_regs_for_scan_session(dev, sensor, ®s, session); dev->interface->write_registers(regs); @@ -1380,7 +1379,7 @@ void CommandSetGl847::init_regs_for_scan(Genesys_Device* dev, const Genesys_Sens session.params.flags = ScanFlag::DISABLE_BUFFER_FULL_MOVE; compute_session(dev, session, sensor); - gl847_init_scan_regs(dev, sensor, &dev->reg, session); + init_regs_for_scan_session(dev, sensor, &dev->reg, session); } @@ -1517,7 +1516,7 @@ SensorExposure CommandSetGl847::led_calibration(Genesys_Device* dev, const Genes ScanFlag::IGNORE_LINE_DISTANCE; compute_session(dev, session, sensor); - gl847_init_scan_regs(dev, sensor, ®s, session); + init_regs_for_scan_session(dev, sensor, ®s, session); total_size = num_pixels * channels * (session.params.depth/8) * 1; std::vector line(total_size); @@ -1899,7 +1898,7 @@ void CommandSetGl847::search_strip(Genesys_Device* dev, const Genesys_Sensor& se size = pixels * channels * lines * (session.params.depth / 8); std::vector data(size); - gl847_init_scan_regs(dev, sensor, &local_reg, session); + init_regs_for_scan_session(dev, sensor, &local_reg, session); dev->interface->write_registers(local_reg); @@ -2118,7 +2117,7 @@ void CommandSetGl847::offset_calibration(Genesys_Device* dev, const Genesys_Sens ScanFlag::IGNORE_LINE_DISTANCE; compute_session(dev, session, sensor); - gl847_init_scan_regs(dev, sensor, ®s, session); + init_regs_for_scan_session(dev, sensor, ®s, session); sanei_genesys_set_motor_power(regs, false); @@ -2272,7 +2271,7 @@ void CommandSetGl847::coarse_gain_calibration(Genesys_Device* dev, const Genesys compute_session(dev, session, sensor); try { - gl847_init_scan_regs(dev, sensor, ®s, session); + init_regs_for_scan_session(dev, sensor, ®s, session); } catch (...) { catch_all_exceptions(__func__, [&](){ sanei_genesys_set_motor_power(regs, false); }); throw; diff --git a/backend/genesys/gl847.h b/backend/genesys/gl847.h index c9798aac9..6e1db2178 100644 --- a/backend/genesys/gl847.h +++ b/backend/genesys/gl847.h @@ -140,6 +140,10 @@ public: void init_regs_for_scan(Genesys_Device* dev, const Genesys_Sensor& sensor) const override; + void init_regs_for_scan_session(Genesys_Device* dev, const Genesys_Sensor& sensor, + Genesys_Register_Set* reg, + const ScanSession& session) const override; + void set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t set) const override; void set_powersaving(Genesys_Device* dev, int delay) const override; void save_power(Genesys_Device* dev, bool enable) const override;