genesys: Expose init_regs_for_scan_session() to the cmd set

merge-requests/228/merge
Povilas Kanapickas 2019-11-30 19:06:51 +02:00
rodzic 79b4d1560a
commit cba6086ce7
13 zmienionych plików z 106 dodań i 97 usunięć

Wyświetl plik

@ -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
*/

Wyświetl plik

@ -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, &regs, session);
init_regs_for_scan_session(dev, sensor, &regs, 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, &regs, session);
init_regs_for_scan_session(dev, sensor, &regs, 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, &regs, session);
dev->cmd_set->init_regs_for_scan_session(dev, sensor, &regs, session);
size = pixels * 3;
std::vector<uint8_t> 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, &regs, session);
init_regs_for_scan_session(dev, sensor, &regs, session);
total_size = num_pixels * channels * (session.params.depth / 8) * 1;
std::vector<uint8_t> 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, &regs, session);
init_regs_for_scan_session(dev, sensor, &regs, 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, &regs, session);
init_regs_for_scan_session(dev, sensor, &regs, 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;

Wyświetl plik

@ -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;

Wyświetl plik

@ -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);
}
/**

Wyświetl plik

@ -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;

Wyświetl plik

@ -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, &regs, session);
init_regs_for_scan_session(dev, sensor, &regs, 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, &regs, session);
init_regs_for_scan_session(dev, calib_sensor, &regs, 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, &regs, session);
init_regs_for_scan_session(dev, calib_sensor_base, &regs, 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, &regs, session);
dev->cmd_set->init_regs_for_scan_session(dev, calib_sensor, &regs, 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, &regs, session);
init_regs_for_scan_session(dev, calib_sensor, &regs, 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, &regs, session);
init_regs_for_scan_session(dev, calib_sensor, &regs, 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, &regs, session);
init_regs_for_scan_session(dev, calib_sensor, &regs, 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<uint8_t> 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);

Wyświetl plik

@ -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;

Wyświetl plik

@ -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, &regs, session);
init_regs_for_scan_session(dev, sensor, &regs, 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, &regs, session);
init_regs_for_scan_session(dev, calib_sensor, &regs, 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, &regs, session);
init_regs_for_scan_session(dev, calib_sensor, &regs, 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, &regs, session);
init_regs_for_scan_session(dev, calib_sensor, &regs, 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, &regs, session);
init_regs_for_scan_session(dev, calib_sensor, &regs, 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);

Wyświetl plik

@ -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;

Wyświetl plik

@ -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, &regs, session);
init_regs_for_scan_session(dev, sensor, &regs, 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, &regs, session);
init_regs_for_scan_session(dev, sensor, &regs, 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, &regs, session);
init_regs_for_scan_session(dev, sensor, &regs, session);
total_size = num_pixels * channels * (session.params.depth / 8) * 1;
std::vector<uint8_t> 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<uint8_t> 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, &regs, session);
init_regs_for_scan_session(dev, sensor, &regs, 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, &regs, session);
init_regs_for_scan_session(dev, sensor, &regs, session);
} catch (...) {
catch_all_exceptions(__func__, [&](){ sanei_genesys_set_motor_power(regs, false); });
throw;

Wyświetl plik

@ -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;

Wyświetl plik

@ -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, &regs, session);
init_regs_for_scan_session(dev, sensor, &regs, 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, &regs, session);
init_regs_for_scan_session(dev, sensor, &regs, 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, &regs, session);
init_regs_for_scan_session(dev, sensor, &regs, session);
total_size = num_pixels * channels * (session.params.depth/8) * 1;
std::vector<uint8_t> 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<uint8_t> 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, &regs, session);
init_regs_for_scan_session(dev, sensor, &regs, 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, &regs, session);
init_regs_for_scan_session(dev, sensor, &regs, session);
} catch (...) {
catch_all_exceptions(__func__, [&](){ sanei_genesys_set_motor_power(regs, false); });
throw;

Wyświetl plik

@ -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;