kopia lustrzana https://gitlab.com/sane-project/backends
genesys: Merge chip-specific compute_session functions
rodzic
05f313cc53
commit
0fa25a233b
|
@ -887,20 +887,6 @@ static void gl124_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
|
|||
reg->set16(REG_DUMMY, sensor.dummy_pixel);
|
||||
}
|
||||
|
||||
static void gl124_compute_session(Genesys_Device* dev, ScanSession& s,
|
||||
const Genesys_Sensor& sensor)
|
||||
{
|
||||
DBG_HELPER(dbg);
|
||||
|
||||
compute_session(dev, s, sensor);
|
||||
|
||||
s.enable_ledadd = (s.params.channels == 1 && dev->model->is_cis && dev->settings.true_gray);
|
||||
s.computed = true;
|
||||
|
||||
DBG(DBG_info, "%s ", __func__);
|
||||
debug_dump(DBG_info, s);
|
||||
}
|
||||
|
||||
/** set up registers for an actual scan
|
||||
*
|
||||
* this function sets up the scanner to scan in normal or single line mode
|
||||
|
@ -1018,7 +1004,7 @@ void CommandSetGl124::calculate_current_setup(Genesys_Device * dev,
|
|||
session.params.color_filter = dev->settings.color_filter;
|
||||
session.params.flags = 0;
|
||||
|
||||
gl124_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
/* compute scan parameters values */
|
||||
/* pixels are allways given at half or full CCD optical resolution */
|
||||
|
@ -1319,7 +1305,7 @@ void CommandSetGl124::slow_back_home(Genesys_Device* dev, bool wait_until_home)
|
|||
session.params.flags = SCAN_FLAG_DISABLE_SHADING |
|
||||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl124_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl124_init_scan_regs(dev, sensor, &local_reg, session);
|
||||
|
||||
|
@ -1409,7 +1395,7 @@ static void gl124_feed(Genesys_Device* dev, unsigned int steps, int reverse)
|
|||
SCAN_FLAG_FEEDING |
|
||||
SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl124_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl124_init_scan_regs(dev, sensor, &local_reg, session);
|
||||
|
||||
|
@ -1492,7 +1478,7 @@ void CommandSetGl124::search_start_position(Genesys_Device* dev) const
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE |
|
||||
SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE;
|
||||
gl124_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl124_init_scan_regs(dev, sensor, &local_reg, session);
|
||||
|
||||
|
@ -1553,7 +1539,7 @@ void CommandSetGl124::init_regs_for_coarse_calibration(Genesys_Device* dev,
|
|||
SCAN_FLAG_SINGLE_LINE |
|
||||
SCAN_FLAG_FEEDING |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl124_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl124_init_scan_regs(dev, sensor, ®s, session);
|
||||
|
||||
|
@ -1619,7 +1605,7 @@ void CommandSetGl124::init_regs_for_shading(Genesys_Device* dev, const Genesys_S
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl124_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
try {
|
||||
gl124_init_scan_regs(dev, sensor, ®s, session);
|
||||
|
@ -1697,7 +1683,7 @@ void CommandSetGl124::init_regs_for_scan(Genesys_Device* dev, const Genesys_Sens
|
|||
session.params.scan_mode = dev->settings.scan_mode;
|
||||
session.params.color_filter = dev->settings.color_filter;
|
||||
session.params.flags = 0;
|
||||
gl124_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl124_init_scan_regs(dev, sensor, &dev->reg, session);
|
||||
}
|
||||
|
@ -1833,7 +1819,7 @@ static void move_to_calibration_area(Genesys_Device* dev, const Genesys_Sensor&
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_SINGLE_LINE |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl124_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl124_init_scan_regs(dev, sensor, ®s, session);
|
||||
|
||||
|
@ -1909,7 +1895,7 @@ SensorExposure CommandSetGl124::led_calibration(Genesys_Device* dev, const Genes
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_SINGLE_LINE |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl124_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl124_init_scan_regs(dev, sensor, ®s, session);
|
||||
|
||||
|
@ -2077,7 +2063,7 @@ void CommandSetGl124::offset_calibration(Genesys_Device* dev, const Genesys_Sens
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_SINGLE_LINE |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl124_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl124_init_scan_regs(dev, sensor, ®s, session);
|
||||
|
||||
|
@ -2231,7 +2217,7 @@ void CommandSetGl124::coarse_gain_calibration(Genesys_Device* dev, const Genesys
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_SINGLE_LINE |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl124_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
try {
|
||||
gl124_init_scan_regs(dev, sensor, ®s, session);
|
||||
|
@ -2339,7 +2325,7 @@ void CommandSetGl124::init_regs_for_warmup(Genesys_Device* dev, const Genesys_Se
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_SINGLE_LINE |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl124_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl124_init_scan_regs(dev, sensor, reg, session);
|
||||
|
||||
|
|
|
@ -207,19 +207,6 @@ static int get_cksel(SensorId sensor_id, int required, unsigned channels)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static void gl646_compute_session(Genesys_Device* dev, ScanSession& s,
|
||||
const Genesys_Sensor& sensor)
|
||||
{
|
||||
DBG_HELPER(dbg);
|
||||
(void) dev;
|
||||
|
||||
compute_session(dev, s, sensor);
|
||||
s.computed = true;
|
||||
|
||||
DBG(DBG_info, "%s ", __func__);
|
||||
debug_dump(DBG_info, s);
|
||||
}
|
||||
|
||||
/**
|
||||
* Setup register and motor tables for a scan at the
|
||||
* given resolution and color mode. TODO try to not use any filed from
|
||||
|
@ -2008,7 +1995,7 @@ static void setup_for_scan(Genesys_Device* dev,
|
|||
if (xcorrection) {
|
||||
session.params.flags |= SCAN_FLAG_USE_XCORRECTION;
|
||||
}
|
||||
gl646_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
std::vector<uint16_t> slope_table0;
|
||||
std::vector<uint16_t> slope_table1;
|
||||
|
|
|
@ -1608,24 +1608,6 @@ int scan_step_type=0;
|
|||
return scan_step_type;
|
||||
}
|
||||
|
||||
static void gl841_compute_session(Genesys_Device* dev, ScanSession& s,
|
||||
const Genesys_Sensor& sensor)
|
||||
{
|
||||
DBG_HELPER(dbg);
|
||||
|
||||
// no 16 bit gamma for this ASIC
|
||||
if (s.params.depth == 16) {
|
||||
s.params.flags |= SCAN_FLAG_DISABLE_GAMMA;
|
||||
}
|
||||
|
||||
compute_session(dev, s, sensor);
|
||||
|
||||
s.computed = true;
|
||||
|
||||
DBG(DBG_info, "%s ", __func__);
|
||||
debug_dump(DBG_info, s);
|
||||
}
|
||||
|
||||
// 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,
|
||||
|
@ -1801,7 +1783,7 @@ void CommandSetGl841::calculate_current_setup(Genesys_Device * dev,
|
|||
session.params.color_filter = dev->settings.color_filter;
|
||||
session.params.flags = 0;
|
||||
|
||||
gl841_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
/* dummy lines: may not be usefull, for instance 250 dpi works with 0 or 1
|
||||
dummy line. Maybe the dummy line adds correctness since the motor runs
|
||||
|
@ -2530,7 +2512,7 @@ void CommandSetGl841::search_start_position(Genesys_Device* dev) const
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE |
|
||||
SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE;
|
||||
gl841_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl841_init_scan_regs(dev, sensor, &local_reg, session);
|
||||
|
||||
|
@ -2590,7 +2572,7 @@ void CommandSetGl841::init_regs_for_coarse_calibration(Genesys_Device* dev,
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_SINGLE_LINE |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl841_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl841_init_scan_regs(dev, sensor, ®s, session);
|
||||
|
||||
|
@ -2662,7 +2644,7 @@ void CommandSetGl841::init_regs_for_shading(Genesys_Device* dev, const Genesys_S
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
/*SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE |*/
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl841_compute_session(dev, session, calib_sensor);
|
||||
compute_session(dev, session, calib_sensor);
|
||||
|
||||
gl841_init_scan_regs(dev, calib_sensor, ®s, session);
|
||||
|
||||
|
@ -2754,7 +2736,7 @@ void CommandSetGl841::init_regs_for_scan(Genesys_Device* dev, const Genesys_Sens
|
|||
session.params.scan_mode = dev->settings.scan_mode;
|
||||
session.params.color_filter = dev->settings.color_filter;
|
||||
session.params.flags = flags;
|
||||
gl841_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl841_init_scan_regs(dev, sensor, &dev->reg, session);
|
||||
}
|
||||
|
@ -2839,7 +2821,7 @@ SensorExposure CommandSetGl841::led_calibration(Genesys_Device* dev, const Genes
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_SINGLE_LINE |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl841_compute_session(dev, session, calib_sensor_base);
|
||||
compute_session(dev, session, calib_sensor_base);
|
||||
|
||||
gl841_init_scan_regs(dev, calib_sensor_base, ®s, session);
|
||||
|
||||
|
@ -3043,7 +3025,7 @@ static void ad_fe_offset_calibration(Genesys_Device* dev, const Genesys_Sensor&
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_SINGLE_LINE |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl841_compute_session(dev, session, calib_sensor);
|
||||
compute_session(dev, session, calib_sensor);
|
||||
|
||||
gl841_init_scan_regs(dev, calib_sensor, ®s, session);
|
||||
|
||||
|
@ -3166,7 +3148,7 @@ void CommandSetGl841::offset_calibration(Genesys_Device* dev, const Genesys_Sens
|
|||
SCAN_FLAG_SINGLE_LINE |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE |
|
||||
SCAN_FLAG_DISABLE_LAMP;
|
||||
gl841_compute_session(dev, session, calib_sensor);
|
||||
compute_session(dev, session, calib_sensor);
|
||||
|
||||
gl841_init_scan_regs(dev, calib_sensor, ®s, session);
|
||||
|
||||
|
@ -3531,7 +3513,7 @@ void CommandSetGl841::coarse_gain_calibration(Genesys_Device* dev, const Genesys
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_SINGLE_LINE |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl841_compute_session(dev, session, calib_sensor);
|
||||
compute_session(dev, session, calib_sensor);
|
||||
|
||||
gl841_init_scan_regs(dev, calib_sensor, ®s, session);
|
||||
|
||||
|
@ -3676,7 +3658,7 @@ void CommandSetGl841::init_regs_for_warmup(Genesys_Device* dev, const Genesys_Se
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_SINGLE_LINE |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl841_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl841_init_scan_regs(dev, sensor, local_reg, session);
|
||||
|
||||
|
@ -3834,7 +3816,7 @@ void CommandSetGl841::init(Genesys_Device* dev) const
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_SINGLE_LINE |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl841_compute_session(dev, session, calib_sensor);
|
||||
compute_session(dev, session, calib_sensor);
|
||||
|
||||
gl841_init_scan_regs(dev, calib_sensor, ®s, session);
|
||||
|
||||
|
@ -3956,7 +3938,7 @@ void CommandSetGl841::search_strip(Genesys_Device* dev, const Genesys_Sensor& se
|
|||
session.params.scan_mode = ScanColorMode::GRAY;
|
||||
session.params.color_filter = ColorFilter::RED;
|
||||
session.params.flags = SCAN_FLAG_DISABLE_SHADING | SCAN_FLAG_DISABLE_GAMMA;
|
||||
gl841_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
size = pixels * channels * lines * (session.params.depth / 8);
|
||||
std::vector<uint8_t> data(size);
|
||||
|
|
|
@ -1192,23 +1192,6 @@ static void gl843_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
|
|||
r->value = sensor.dummy_pixel;
|
||||
}
|
||||
|
||||
// computes physical parameters for specific scan setup
|
||||
static void gl843_compute_session(Genesys_Device* dev, ScanSession& s,
|
||||
const Genesys_Sensor& sensor)
|
||||
{
|
||||
// no 16 bit gamma for this ASIC
|
||||
if (s.params.depth == 16) {
|
||||
s.params.flags |= SCAN_FLAG_DISABLE_GAMMA;
|
||||
}
|
||||
|
||||
compute_session(dev, s, sensor);
|
||||
|
||||
s.computed = true;
|
||||
|
||||
DBG(DBG_info, "%s ", __func__);
|
||||
debug_dump(DBG_info, s);
|
||||
}
|
||||
|
||||
// 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,
|
||||
|
@ -1353,7 +1336,7 @@ void CommandSetGl843::calculate_current_setup(Genesys_Device * dev,
|
|||
session.params.color_filter = dev->settings.color_filter;
|
||||
session.params.flags = 0;
|
||||
|
||||
gl843_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
/* compute scan parameters values */
|
||||
/* pixels are allways given at half or full CCD optical resolution */
|
||||
|
@ -1965,7 +1948,7 @@ void CommandSetGl843::slow_back_home(Genesys_Device* dev, bool wait_until_home)
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl843_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl843_init_scan_regs(dev, sensor, &local_reg, session);
|
||||
|
||||
|
@ -2058,7 +2041,7 @@ void CommandSetGl843::search_start_position(Genesys_Device* dev) const
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE |
|
||||
SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE;
|
||||
gl843_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl843_init_scan_regs(dev, sensor, &local_reg, session);
|
||||
|
||||
|
@ -2122,7 +2105,7 @@ void CommandSetGl843::init_regs_for_coarse_calibration(Genesys_Device* dev,
|
|||
session.params.scan_mode = dev->settings.scan_mode;
|
||||
session.params.color_filter = dev->settings.color_filter;
|
||||
session.params.flags = flags;
|
||||
gl843_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl843_init_scan_regs(dev, sensor, ®s, session);
|
||||
|
||||
|
@ -2169,7 +2152,7 @@ static void gl843_feed(Genesys_Device* dev, unsigned int steps)
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_FEEDING |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl843_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl843_init_scan_regs(dev, sensor, &local_reg, session);
|
||||
|
||||
|
@ -2287,7 +2270,7 @@ void CommandSetGl843::init_regs_for_shading(Genesys_Device* dev, const Genesys_S
|
|||
session.params.scan_mode = dev->settings.scan_mode;
|
||||
session.params.color_filter = dev->settings.color_filter;
|
||||
session.params.flags = flags;
|
||||
gl843_compute_session(dev, session, calib_sensor);
|
||||
compute_session(dev, session, calib_sensor);
|
||||
|
||||
gl843_init_scan_regs(dev, calib_sensor, ®s, session);
|
||||
|
||||
|
@ -2374,7 +2357,7 @@ void CommandSetGl843::init_regs_for_scan(Genesys_Device* dev, const Genesys_Sens
|
|||
session.params.scan_mode = dev->settings.scan_mode;
|
||||
session.params.color_filter = dev->settings.color_filter;
|
||||
session.params.flags = flags;
|
||||
gl843_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl843_init_scan_regs(dev, sensor, &dev->reg, session);
|
||||
}
|
||||
|
@ -2456,7 +2439,7 @@ SensorExposure CommandSetGl843::led_calibration(Genesys_Device* dev, const Genes
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_SINGLE_LINE |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl843_compute_session(dev, session, calib_sensor);
|
||||
compute_session(dev, session, calib_sensor);
|
||||
|
||||
gl843_init_scan_regs(dev, calib_sensor, ®s, session);
|
||||
|
||||
|
@ -2669,7 +2652,7 @@ void CommandSetGl843::offset_calibration(Genesys_Device* dev, const Genesys_Sens
|
|||
session.params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
|
||||
session.params.color_filter = ColorFilter::RED;
|
||||
session.params.flags = flags;
|
||||
gl843_compute_session(dev, session, calib_sensor);
|
||||
compute_session(dev, session, calib_sensor);
|
||||
pixels = session.output_pixels;
|
||||
|
||||
DBG(DBG_io, "%s: dpihw =%d\n", __func__, dpihw);
|
||||
|
@ -2885,7 +2868,7 @@ void CommandSetGl843::coarse_gain_calibration(Genesys_Device* dev, const Genesys
|
|||
session.params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
|
||||
session.params.color_filter = dev->settings.color_filter;
|
||||
session.params.flags = flags;
|
||||
gl843_compute_session(dev, session, calib_sensor);
|
||||
compute_session(dev, session, calib_sensor);
|
||||
std::size_t pixels = session.output_pixels;
|
||||
|
||||
try {
|
||||
|
@ -2996,7 +2979,7 @@ void CommandSetGl843::init_regs_for_warmup(Genesys_Device* dev, const Genesys_Se
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_SINGLE_LINE |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl843_compute_session(dev, session, calib_sensor);
|
||||
compute_session(dev, session, calib_sensor);
|
||||
|
||||
gl843_init_scan_regs(dev, calib_sensor, reg, session);
|
||||
|
||||
|
@ -3240,7 +3223,7 @@ void CommandSetGl843::search_strip(Genesys_Device* dev, const Genesys_Sensor& se
|
|||
session.params.scan_mode = ScanColorMode::GRAY;
|
||||
session.params.color_filter = ColorFilter::RED;
|
||||
session.params.flags = SCAN_FLAG_DISABLE_SHADING | SCAN_FLAG_DISABLE_SHADING;
|
||||
gl843_compute_session(dev, session, calib_sensor);
|
||||
compute_session(dev, session, calib_sensor);
|
||||
|
||||
gl843_init_scan_regs(dev, calib_sensor, &local_reg, session);
|
||||
|
||||
|
|
|
@ -741,21 +741,6 @@ static void gl846_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
|
|||
r->value = sensor.dummy_pixel;
|
||||
}
|
||||
|
||||
static void gl846_compute_session(Genesys_Device* dev, ScanSession& s,
|
||||
const Genesys_Sensor& sensor)
|
||||
{
|
||||
DBG_HELPER(dbg);
|
||||
|
||||
compute_session(dev, s, sensor);
|
||||
|
||||
s.enable_ledadd = (s.params.channels == 1 && dev->model->is_cis && dev->settings.true_gray);
|
||||
|
||||
s.computed = true;
|
||||
|
||||
DBG(DBG_info, "%s ", __func__);
|
||||
debug_dump(DBG_info, s);
|
||||
}
|
||||
|
||||
// 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,
|
||||
|
@ -873,7 +858,7 @@ void CommandSetGl846::calculate_current_setup(Genesys_Device* dev,
|
|||
session.params.color_filter = dev->settings.color_filter;
|
||||
session.params.flags = 0;
|
||||
|
||||
gl846_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
/* compute scan parameters values */
|
||||
/* pixels are allways given at half or full CCD optical resolution */
|
||||
|
@ -1087,7 +1072,7 @@ void CommandSetGl846::slow_back_home(Genesys_Device* dev, bool wait_until_home)
|
|||
session.params.flags = SCAN_FLAG_DISABLE_SHADING |
|
||||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl846_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl846_init_scan_regs(dev, sensor, &local_reg, session);
|
||||
|
||||
|
@ -1180,7 +1165,7 @@ void CommandSetGl846::search_start_position(Genesys_Device* dev) const
|
|||
session.params.flags = SCAN_FLAG_DISABLE_SHADING |
|
||||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl846_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl846_init_scan_regs(dev, sensor, &local_reg, session);
|
||||
|
||||
|
@ -1242,7 +1227,7 @@ void CommandSetGl846::init_regs_for_coarse_calibration(Genesys_Device* dev,
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_SINGLE_LINE |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl846_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl846_init_scan_regs(dev, sensor, ®s, session);
|
||||
|
||||
|
@ -1285,7 +1270,7 @@ static void gl846_feed(Genesys_Device* dev, unsigned int steps)
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_FEEDING |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl846_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl846_init_scan_regs(dev, sensor, &local_reg, session);
|
||||
|
||||
|
@ -1373,7 +1358,7 @@ void CommandSetGl846::init_regs_for_shading(Genesys_Device* dev, const Genesys_S
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl846_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl846_init_scan_regs(dev, sensor, ®s, session);
|
||||
|
||||
|
@ -1455,7 +1440,7 @@ void CommandSetGl846::init_regs_for_scan(Genesys_Device* dev, const Genesys_Sens
|
|||
session.params.color_filter = dev->settings.color_filter;
|
||||
// backtracking isn't handled well, so don't enable it
|
||||
session.params.flags = SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE;
|
||||
gl846_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl846_init_scan_regs(dev, sensor, &dev->reg, session);
|
||||
}
|
||||
|
@ -1586,7 +1571,7 @@ SensorExposure CommandSetGl846::led_calibration(Genesys_Device* dev, const Genes
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_SINGLE_LINE |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl846_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl846_init_scan_regs(dev, sensor, ®s, session);
|
||||
|
||||
|
@ -1909,7 +1894,7 @@ void CommandSetGl846::search_strip(Genesys_Device* dev, const Genesys_Sensor& se
|
|||
session.params.color_filter = ColorFilter::RED;
|
||||
session.params.flags = SCAN_FLAG_DISABLE_SHADING |
|
||||
SCAN_FLAG_DISABLE_GAMMA;
|
||||
gl846_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl846_init_scan_regs(dev, sensor, &local_reg, session);
|
||||
|
||||
|
@ -2132,7 +2117,7 @@ void CommandSetGl846::offset_calibration(Genesys_Device* dev, const Genesys_Sens
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_SINGLE_LINE |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl846_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl846_init_scan_regs(dev, sensor, ®s, session);
|
||||
|
||||
|
@ -2280,7 +2265,7 @@ void CommandSetGl846::coarse_gain_calibration(Genesys_Device* dev, const Genesys
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_SINGLE_LINE |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl846_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
try {
|
||||
gl846_init_scan_regs(dev, sensor, ®s, session);
|
||||
|
|
|
@ -752,19 +752,6 @@ static void gl847_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
|
|||
r->value = sensor.dummy_pixel;
|
||||
}
|
||||
|
||||
static void gl847_compute_session(Genesys_Device* dev, ScanSession& s,
|
||||
const Genesys_Sensor& sensor)
|
||||
{
|
||||
DBG_HELPER(dbg);
|
||||
|
||||
compute_session(dev, s, sensor);
|
||||
|
||||
s.computed = true;
|
||||
|
||||
DBG(DBG_info, "%s ", __func__);
|
||||
debug_dump(DBG_info, s);
|
||||
}
|
||||
|
||||
// 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,
|
||||
|
@ -876,7 +863,7 @@ void CommandSetGl847::calculate_current_setup(Genesys_Device * dev,
|
|||
session.params.color_filter = dev->settings.color_filter;
|
||||
session.params.flags = 0;
|
||||
|
||||
gl847_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
/* compute scan parameters values */
|
||||
/* pixels are allways given at half or full CCD optical resolution */
|
||||
|
@ -1131,7 +1118,7 @@ void CommandSetGl847::slow_back_home(Genesys_Device* dev, bool wait_until_home)
|
|||
session.params.flags = SCAN_FLAG_DISABLE_SHADING |
|
||||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl847_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl847_init_scan_regs(dev, sensor, &local_reg, session);
|
||||
|
||||
|
@ -1222,7 +1209,7 @@ void CommandSetGl847::search_start_position(Genesys_Device* dev) const
|
|||
session.params.flags = SCAN_FLAG_DISABLE_SHADING |
|
||||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl847_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl847_init_scan_regs(dev, sensor, &local_reg, session);
|
||||
|
||||
|
@ -1284,7 +1271,7 @@ void CommandSetGl847::init_regs_for_coarse_calibration(Genesys_Device* dev,
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_SINGLE_LINE |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl847_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl847_init_scan_regs(dev, sensor, ®s, session);
|
||||
|
||||
|
@ -1326,7 +1313,7 @@ static void gl847_feed(Genesys_Device* dev, unsigned int steps)
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_FEEDING |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl847_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl847_init_scan_regs(dev, sensor, &local_reg, session);
|
||||
|
||||
|
@ -1405,7 +1392,7 @@ void CommandSetGl847::init_regs_for_shading(Genesys_Device* dev, const Genesys_S
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl847_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl847_init_scan_regs(dev, sensor, ®s, session);
|
||||
|
||||
|
@ -1486,7 +1473,7 @@ void CommandSetGl847::init_regs_for_scan(Genesys_Device* dev, const Genesys_Sens
|
|||
session.params.color_filter = dev->settings.color_filter;
|
||||
// backtracking isn't handled well, so don't enable it
|
||||
session.params.flags = SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE;
|
||||
gl847_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl847_init_scan_regs(dev, sensor, &dev->reg, session);
|
||||
}
|
||||
|
@ -1618,7 +1605,7 @@ SensorExposure CommandSetGl847::led_calibration(Genesys_Device* dev, const Genes
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_SINGLE_LINE |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl847_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl847_init_scan_regs(dev, sensor, ®s, session);
|
||||
|
||||
|
@ -1972,7 +1959,7 @@ void CommandSetGl847::search_strip(Genesys_Device* dev, const Genesys_Sensor& se
|
|||
session.params.color_filter = ColorFilter::RED;
|
||||
session.params.flags = SCAN_FLAG_DISABLE_SHADING |
|
||||
SCAN_FLAG_DISABLE_GAMMA;
|
||||
gl847_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
size = pixels * channels * lines * (session.params.depth / 8);
|
||||
std::vector<uint8_t> data(size);
|
||||
|
@ -2196,7 +2183,7 @@ void CommandSetGl847::offset_calibration(Genesys_Device* dev, const Genesys_Sens
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_SINGLE_LINE |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl847_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
gl847_init_scan_regs(dev, sensor, ®s, session);
|
||||
|
||||
|
@ -2343,7 +2330,7 @@ void CommandSetGl847::coarse_gain_calibration(Genesys_Device* dev, const Genesys
|
|||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_SINGLE_LINE |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE;
|
||||
gl847_compute_session(dev, session, sensor);
|
||||
compute_session(dev, session, sensor);
|
||||
|
||||
try {
|
||||
gl847_init_scan_regs(dev, sensor, ®s, session);
|
||||
|
|
|
@ -1653,6 +1653,27 @@ void compute_session(Genesys_Device* dev, ScanSession& s, const Genesys_Sensor&
|
|||
compute_session_buffer_sizes(dev->model->asic_type, s);
|
||||
compute_session_pipeline(dev, s);
|
||||
compute_session_pixel_offsets(dev, s, sensor, sensor_profile);
|
||||
|
||||
if (dev->model->asic_type == AsicType::GL124 ||
|
||||
dev->model->asic_type == AsicType::GL845 ||
|
||||
dev->model->asic_type == AsicType::GL846)
|
||||
{
|
||||
s.enable_ledadd = (s.params.channels == 1 && dev->model->is_cis && dev->settings.true_gray);
|
||||
}
|
||||
|
||||
if (dev->model->asic_type == AsicType::GL841 ||
|
||||
dev->model->asic_type == AsicType::GL843)
|
||||
{
|
||||
// no 16 bit gamma for this ASIC
|
||||
if (s.params.depth == 16) {
|
||||
s.params.flags |= SCAN_FLAG_DISABLE_GAMMA;
|
||||
}
|
||||
}
|
||||
|
||||
s.computed = true;
|
||||
|
||||
DBG(DBG_info, "%s ", __func__);
|
||||
debug_dump(DBG_info, s);
|
||||
}
|
||||
|
||||
static std::size_t get_usb_buffer_read_size(AsicType asic, const ScanSession& session)
|
||||
|
|
|
@ -203,8 +203,7 @@ void serialize(Stream& str, SetupParams& x)
|
|||
struct ScanSession {
|
||||
SetupParams params;
|
||||
|
||||
// whether the session setup has been computed via gl*_compute_session()
|
||||
// gl843-only
|
||||
// whether the session setup has been computed via compute_session()
|
||||
bool computed = false;
|
||||
|
||||
// specifies the reduction (if any) of hardware dpi on the Genesys chip side.
|
||||
|
|
Ładowanie…
Reference in New Issue