kopia lustrzana https://gitlab.com/sane-project/backends
genesys: Reduce duplication of sensor setup functionality
rodzic
d0855e513b
commit
afa96a227d
|
@ -632,6 +632,30 @@ bool scanner_is_motor_stopped(Genesys_Device& dev)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void scanner_setup_sensor(Genesys_Device& dev, const Genesys_Sensor& sensor,
|
||||||
|
Genesys_Register_Set& regs)
|
||||||
|
{
|
||||||
|
DBG_HELPER(dbg);
|
||||||
|
|
||||||
|
if (dev.model->asic_type == AsicType::GL646) {
|
||||||
|
for (const auto& custom_reg : sensor.custom_base_regs) {
|
||||||
|
regs.set8(custom_reg.address, custom_reg.value);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (const auto& custom_reg : sensor.custom_regs) {
|
||||||
|
regs.set8(custom_reg.address, custom_reg.value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dev.model->asic_type != AsicType::GL841 &&
|
||||||
|
dev.model->asic_type != AsicType::GL843)
|
||||||
|
{
|
||||||
|
regs_set_exposure(dev.model->asic_type, regs, sensor.exposure);
|
||||||
|
}
|
||||||
|
|
||||||
|
dev.segment_order = sensor.segment_order;
|
||||||
|
}
|
||||||
|
|
||||||
void scanner_stop_action(Genesys_Device& dev)
|
void scanner_stop_action(Genesys_Device& dev)
|
||||||
{
|
{
|
||||||
DBG_HELPER(dbg);
|
DBG_HELPER(dbg);
|
||||||
|
|
|
@ -640,35 +640,6 @@ static void gl124_init_motor_regs_scan(Genesys_Device* dev,
|
||||||
reg->set16(REG_FMOVDEC, fast_table.steps_count);
|
reg->set16(REG_FMOVDEC, fast_table.steps_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** @brief copy sensor specific settings
|
|
||||||
* Set up register set for the given sensor resolution. Values are from the device table
|
|
||||||
* in genesys_devices.c for registers:
|
|
||||||
* [0x16 ... 0x1d]
|
|
||||||
* [0x52 ... 0x5e]
|
|
||||||
* Other come from the specific device sensor table in genesys_gl124.h:
|
|
||||||
* 0x18, 0x20, 0x61, 0x98 and
|
|
||||||
* @param dev device to set up
|
|
||||||
* @param regs register set to modify
|
|
||||||
* @param dpi resolution of the sensor during scan
|
|
||||||
* @param ccd_size_divisor flag for half ccd mode
|
|
||||||
* */
|
|
||||||
static void gl124_setup_sensor(Genesys_Device* dev, const Genesys_Sensor& sensor,
|
|
||||||
Genesys_Register_Set* regs)
|
|
||||||
{
|
|
||||||
DBG_HELPER(dbg);
|
|
||||||
|
|
||||||
for (const auto& reg : sensor.custom_regs) {
|
|
||||||
regs->set8(reg.address, reg.value);
|
|
||||||
}
|
|
||||||
|
|
||||||
regs->set24(REG_EXPR, sensor.exposure.red);
|
|
||||||
regs->set24(REG_EXPG, sensor.exposure.green);
|
|
||||||
regs->set24(REG_EXPB, sensor.exposure.blue);
|
|
||||||
|
|
||||||
dev->segment_order = sensor.segment_order;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @brief setup optical related registers
|
/** @brief setup optical related registers
|
||||||
* start and pixels are expressed in optical sensor resolution coordinate
|
* start and pixels are expressed in optical sensor resolution coordinate
|
||||||
* space.
|
* space.
|
||||||
|
@ -692,7 +663,7 @@ static void gl124_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
|
||||||
DBG_HELPER_ARGS(dbg, "exposure_time=%d", exposure_time);
|
DBG_HELPER_ARGS(dbg, "exposure_time=%d", exposure_time);
|
||||||
uint32_t expmax;
|
uint32_t expmax;
|
||||||
|
|
||||||
gl124_setup_sensor(dev, sensor, reg);
|
scanner_setup_sensor(*dev, sensor, *reg);
|
||||||
|
|
||||||
dev->cmd_set->set_fe(dev, sensor, AFE_SET);
|
dev->cmd_set->set_fe(dev, sensor, AFE_SET);
|
||||||
|
|
||||||
|
|
|
@ -546,30 +546,6 @@ void CommandSetGl646::init_regs_for_scan_session(Genesys_Device* dev, const Gene
|
||||||
gl646_send_slope_table(dev, 1, slope_table2.table, regs->get8(0x6b));
|
gl646_send_slope_table(dev, 1, slope_table2.table, regs->get8(0x6b));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** copy sensor specific settings */
|
|
||||||
/* *dev : device infos
|
|
||||||
*regs : regiters to be set
|
|
||||||
extended : do extended set up
|
|
||||||
ccd_size_divisor: set up for half ccd resolution
|
|
||||||
all registers 08-0B, 10-1D, 52-5E are set up. They shouldn't
|
|
||||||
appear anywhere else but in register init
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
gl646_setup_sensor (Genesys_Device * dev, const Genesys_Sensor& sensor, Genesys_Register_Set * regs)
|
|
||||||
{
|
|
||||||
(void) dev;
|
|
||||||
DBG(DBG_proc, "%s: start\n", __func__);
|
|
||||||
|
|
||||||
for (const auto& reg_setting : sensor.custom_base_regs) {
|
|
||||||
regs->set8(reg_setting.address, reg_setting.value);
|
|
||||||
}
|
|
||||||
// FIXME: all other drivers don't set exposure here
|
|
||||||
regs_set_exposure(AsicType::GL646, *regs, sensor.exposure);
|
|
||||||
|
|
||||||
DBG(DBG_proc, "%s: end\n", __func__);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set all registers to default values after init
|
* Set all registers to default values after init
|
||||||
* @param dev scannerr's device to set
|
* @param dev scannerr's device to set
|
||||||
|
@ -643,8 +619,7 @@ gl646_init_regs (Genesys_Device * dev)
|
||||||
dev->reg.find_reg(0x06).value = 0x18; // PWRBIT on, shading gain=8, normal AFE image capture
|
dev->reg.find_reg(0x06).value = 0x18; // PWRBIT on, shading gain=8, normal AFE image capture
|
||||||
}
|
}
|
||||||
|
|
||||||
|
scanner_setup_sensor(*dev, sensor, dev->reg);
|
||||||
gl646_setup_sensor(dev, sensor, &dev->reg);
|
|
||||||
|
|
||||||
dev->reg.find_reg(0x1e).value = 0xf0; /* watch-dog time */
|
dev->reg.find_reg(0x1e).value = 0xf0; /* watch-dog time */
|
||||||
|
|
||||||
|
|
|
@ -68,15 +68,6 @@ static int gl841_exposure_time(Genesys_Device *dev, const Genesys_Sensor& sensor
|
||||||
int start,
|
int start,
|
||||||
int used_pixels);
|
int used_pixels);
|
||||||
|
|
||||||
static void sanei_gl841_setup_sensor(const Genesys_Sensor& sensor, Genesys_Register_Set* regs)
|
|
||||||
{
|
|
||||||
DBG_HELPER(dbg);
|
|
||||||
|
|
||||||
for (const auto& custom_reg : sensor.custom_regs) {
|
|
||||||
regs->set8(custom_reg.address, custom_reg.value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set all registers to default values
|
* Set all registers to default values
|
||||||
* (function called only once at the beginning)
|
* (function called only once at the beginning)
|
||||||
|
@ -169,14 +160,14 @@ gl841_init_registers (Genesys_Device * dev)
|
||||||
dev->reg.init_reg(0x15, 0x00);
|
dev->reg.init_reg(0x15, 0x00);
|
||||||
}
|
}
|
||||||
|
|
||||||
dev->reg.init_reg(0x16, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below
|
dev->reg.init_reg(0x16, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below
|
||||||
dev->reg.init_reg(0x17, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below
|
dev->reg.init_reg(0x17, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below
|
||||||
dev->reg.init_reg(0x18, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below
|
dev->reg.init_reg(0x18, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below
|
||||||
dev->reg.init_reg(0x19, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below
|
dev->reg.init_reg(0x19, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below
|
||||||
dev->reg.init_reg(0x1a, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below
|
dev->reg.init_reg(0x1a, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below
|
||||||
dev->reg.init_reg(0x1b, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below
|
dev->reg.init_reg(0x1b, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below
|
||||||
dev->reg.init_reg(0x1c, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below
|
dev->reg.init_reg(0x1c, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below
|
||||||
dev->reg.init_reg(0x1d, 0x01); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below
|
dev->reg.init_reg(0x1d, 0x01); // SENSOR_DEF, overwritten in scanner_setup_sensor() below
|
||||||
dev->reg.init_reg(0x1e, 0xf0);
|
dev->reg.init_reg(0x1e, 0xf0);
|
||||||
if (dev->model->model_id == ModelId::CANON_LIDE_80) {
|
if (dev->model->model_id == ModelId::CANON_LIDE_80) {
|
||||||
dev->reg.init_reg(0x1e, 0x10);
|
dev->reg.init_reg(0x1e, 0x10);
|
||||||
|
@ -237,15 +228,15 @@ gl841_init_registers (Genesys_Device * dev)
|
||||||
dev->reg.init_reg(0x3e, 0x00);
|
dev->reg.init_reg(0x3e, 0x00);
|
||||||
dev->reg.init_reg(0x3f, 0x00);
|
dev->reg.init_reg(0x3f, 0x00);
|
||||||
|
|
||||||
dev->reg.init_reg(0x52, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below
|
dev->reg.init_reg(0x52, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below
|
||||||
dev->reg.init_reg(0x53, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below
|
dev->reg.init_reg(0x53, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below
|
||||||
dev->reg.init_reg(0x54, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below
|
dev->reg.init_reg(0x54, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below
|
||||||
dev->reg.init_reg(0x55, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below
|
dev->reg.init_reg(0x55, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below
|
||||||
dev->reg.init_reg(0x56, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below
|
dev->reg.init_reg(0x56, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below
|
||||||
dev->reg.init_reg(0x57, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below
|
dev->reg.init_reg(0x57, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below
|
||||||
dev->reg.init_reg(0x58, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below
|
dev->reg.init_reg(0x58, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below
|
||||||
dev->reg.init_reg(0x59, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below
|
dev->reg.init_reg(0x59, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below
|
||||||
dev->reg.init_reg(0x5a, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below
|
dev->reg.init_reg(0x5a, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below
|
||||||
|
|
||||||
if (dev->model->model_id == ModelId::CANON_LIDE_80) {
|
if (dev->model->model_id == ModelId::CANON_LIDE_80) {
|
||||||
dev->reg.init_reg(0x5d, 0x20);
|
dev->reg.init_reg(0x5d, 0x20);
|
||||||
|
@ -273,10 +264,10 @@ gl841_init_registers (Genesys_Device * dev)
|
||||||
dev->reg.init_reg(0x5e, 0x02);
|
dev->reg.init_reg(0x5e, 0x02);
|
||||||
}
|
}
|
||||||
|
|
||||||
dev->reg.init_reg(0x70, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below
|
dev->reg.init_reg(0x70, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below
|
||||||
dev->reg.init_reg(0x71, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below
|
dev->reg.init_reg(0x71, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below
|
||||||
dev->reg.init_reg(0x72, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below
|
dev->reg.init_reg(0x72, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below
|
||||||
dev->reg.init_reg(0x73, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below
|
dev->reg.init_reg(0x73, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below
|
||||||
|
|
||||||
if (dev->model->model_id == ModelId::CANON_LIDE_80) {
|
if (dev->model->model_id == ModelId::CANON_LIDE_80) {
|
||||||
dev->reg.init_reg(0x74, 0x00);
|
dev->reg.init_reg(0x74, 0x00);
|
||||||
|
@ -307,7 +298,7 @@ gl841_init_registers (Genesys_Device * dev)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sanei_gl841_setup_sensor(sensor, &dev->reg);
|
scanner_setup_sensor(*dev, sensor, dev->reg);
|
||||||
|
|
||||||
// set up GPIO
|
// set up GPIO
|
||||||
for (const auto& reg : dev->gpo.regs) {
|
for (const auto& reg : dev->gpo.regs) {
|
||||||
|
@ -1066,7 +1057,7 @@ static void gl841_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
|
||||||
}
|
}
|
||||||
|
|
||||||
/* sensor parameters */
|
/* sensor parameters */
|
||||||
sanei_gl841_setup_sensor(sensor, &dev->reg);
|
scanner_setup_sensor(*dev, sensor, dev->reg);
|
||||||
reg->set8(0x29, 255); /*<<<"magic" number, only suitable for cis*/
|
reg->set8(0x29, 255); /*<<<"magic" number, only suitable for cis*/
|
||||||
reg->set16(REG_DPISET, sensor.register_dpiset);
|
reg->set16(REG_DPISET, sensor.register_dpiset);
|
||||||
reg->set16(REG_STRPIXEL, session.pixel_startx);
|
reg->set16(REG_STRPIXEL, session.pixel_startx);
|
||||||
|
|
|
@ -66,26 +66,6 @@ static int gl843_get_step_multiplier(Genesys_Register_Set* regs)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** copy sensor specific settings */
|
|
||||||
static void gl843_setup_sensor(Genesys_Device* dev, const Genesys_Sensor& sensor,
|
|
||||||
Genesys_Register_Set* regs)
|
|
||||||
{
|
|
||||||
DBG_HELPER(dbg);
|
|
||||||
for (const auto& custom_reg : sensor.custom_regs) {
|
|
||||||
regs->set8(custom_reg.address, custom_reg.value);
|
|
||||||
}
|
|
||||||
if (dev->model->model_id == ModelId::PANASONIC_KV_SS080 ||
|
|
||||||
dev->model->model_id == ModelId::HP_SCANJET_4850C ||
|
|
||||||
dev->model->model_id == ModelId::HP_SCANJET_G4010 ||
|
|
||||||
dev->model->model_id == ModelId::HP_SCANJET_G4050)
|
|
||||||
{
|
|
||||||
regs->set8(0x7d, 0x90);
|
|
||||||
}
|
|
||||||
|
|
||||||
dev->segment_order = sensor.segment_order;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** @brief set all registers to default values .
|
/** @brief set all registers to default values .
|
||||||
* This function is called only once at the beginning and
|
* This function is called only once at the beginning and
|
||||||
* fills register startup values for registers reused across scans.
|
* fills register startup values for registers reused across scans.
|
||||||
|
@ -98,7 +78,7 @@ gl843_init_registers (Genesys_Device * dev)
|
||||||
{
|
{
|
||||||
// Within this function SENSOR_DEF marker documents that a register is part
|
// Within this function SENSOR_DEF marker documents that a register is part
|
||||||
// of the sensors definition and the actual value is set in
|
// of the sensors definition and the actual value is set in
|
||||||
// gl843_setup_sensor().
|
// scanner_setup_sensor().
|
||||||
|
|
||||||
// 0x6c, 0x6d, 0x6e, 0x6f, 0xa6, 0xa7, 0xa8, 0xa9 are defined in the Gpo sensor struct
|
// 0x6c, 0x6d, 0x6e, 0x6f, 0xa6, 0xa7, 0xa8, 0xa9 are defined in the Gpo sensor struct
|
||||||
|
|
||||||
|
@ -943,8 +923,8 @@ static void gl843_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
|
||||||
tgtime = exposure / 65536 + 1;
|
tgtime = exposure / 65536 + 1;
|
||||||
DBG(DBG_io2, "%s: tgtime=%d\n", __func__, tgtime);
|
DBG(DBG_io2, "%s: tgtime=%d\n", __func__, tgtime);
|
||||||
|
|
||||||
/* sensor parameters */
|
// sensor parameters
|
||||||
gl843_setup_sensor(dev, sensor, reg);
|
scanner_setup_sensor(*dev, sensor, *reg);
|
||||||
|
|
||||||
dev->cmd_set->set_fe(dev, sensor, AFE_SET);
|
dev->cmd_set->set_fe(dev, sensor, AFE_SET);
|
||||||
|
|
||||||
|
|
|
@ -67,25 +67,6 @@ static int gl846_get_step_multiplier (Genesys_Register_Set * regs)
|
||||||
return 1 << value;
|
return 1 << value;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @brief sensor specific settings
|
|
||||||
*/
|
|
||||||
static void gl846_setup_sensor(Genesys_Device * dev, const Genesys_Sensor& sensor,
|
|
||||||
Genesys_Register_Set* regs)
|
|
||||||
{
|
|
||||||
DBG_HELPER(dbg);
|
|
||||||
|
|
||||||
for (const auto& reg : sensor.custom_regs) {
|
|
||||||
regs->set8(reg.address, reg.value);
|
|
||||||
}
|
|
||||||
|
|
||||||
regs->set16(REG_EXPR, sensor.exposure.red);
|
|
||||||
regs->set16(REG_EXPG, sensor.exposure.green);
|
|
||||||
regs->set16(REG_EXPB, sensor.exposure.blue);
|
|
||||||
|
|
||||||
dev->segment_order = sensor.segment_order;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** @brief set all registers to default values .
|
/** @brief set all registers to default values .
|
||||||
* This function is called only once at the beginning and
|
* This function is called only once at the beginning and
|
||||||
* fills register startup values for registers reused across scans.
|
* fills register startup values for registers reused across scans.
|
||||||
|
@ -619,7 +600,7 @@ static void gl846_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
|
||||||
{
|
{
|
||||||
DBG_HELPER_ARGS(dbg, "exposure_time=%d", exposure_time);
|
DBG_HELPER_ARGS(dbg, "exposure_time=%d", exposure_time);
|
||||||
|
|
||||||
gl846_setup_sensor(dev, sensor, reg);
|
scanner_setup_sensor(*dev, sensor, *reg);
|
||||||
|
|
||||||
dev->cmd_set->set_fe(dev, sensor, AFE_SET);
|
dev->cmd_set->set_fe(dev, sensor, AFE_SET);
|
||||||
|
|
||||||
|
|
|
@ -62,25 +62,6 @@ static unsigned gl847_get_step_multiplier (Genesys_Register_Set * regs)
|
||||||
return 1 << value;
|
return 1 << value;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @brief sensor specific settings
|
|
||||||
*/
|
|
||||||
static void gl847_setup_sensor(Genesys_Device * dev, const Genesys_Sensor& sensor,
|
|
||||||
Genesys_Register_Set* regs)
|
|
||||||
{
|
|
||||||
DBG_HELPER(dbg);
|
|
||||||
|
|
||||||
for (const auto& reg : sensor.custom_regs) {
|
|
||||||
regs->set8(reg.address, reg.value);
|
|
||||||
}
|
|
||||||
|
|
||||||
regs->set16(REG_EXPR, sensor.exposure.red);
|
|
||||||
regs->set16(REG_EXPG, sensor.exposure.green);
|
|
||||||
regs->set16(REG_EXPB, sensor.exposure.blue);
|
|
||||||
|
|
||||||
dev->segment_order = sensor.segment_order;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** @brief set all registers to default values .
|
/** @brief set all registers to default values .
|
||||||
* This function is called only once at the beginning and
|
* This function is called only once at the beginning and
|
||||||
* fills register startup values for registers reused across scans.
|
* fills register startup values for registers reused across scans.
|
||||||
|
@ -519,7 +500,7 @@ static void gl847_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
|
||||||
{
|
{
|
||||||
DBG_HELPER_ARGS(dbg, "exposure_time=%d", exposure_time);
|
DBG_HELPER_ARGS(dbg, "exposure_time=%d", exposure_time);
|
||||||
|
|
||||||
gl847_setup_sensor(dev, sensor, reg);
|
scanner_setup_sensor(*dev, sensor, *reg);
|
||||||
|
|
||||||
dev->cmd_set->set_fe(dev, sensor, AFE_SET);
|
dev->cmd_set->set_fe(dev, sensor, AFE_SET);
|
||||||
|
|
||||||
|
|
|
@ -372,6 +372,9 @@ void scanner_stop_action_no_move(Genesys_Device& dev, Genesys_Register_Set& regs
|
||||||
|
|
||||||
bool scanner_is_motor_stopped(Genesys_Device& dev);
|
bool scanner_is_motor_stopped(Genesys_Device& dev);
|
||||||
|
|
||||||
|
void scanner_setup_sensor(Genesys_Device& dev, const Genesys_Sensor& sensor,
|
||||||
|
Genesys_Register_Set& regs);
|
||||||
|
|
||||||
const MotorProfile* get_motor_profile_ptr(const std::vector<MotorProfile>& profiles,
|
const MotorProfile* get_motor_profile_ptr(const std::vector<MotorProfile>& profiles,
|
||||||
unsigned exposure,
|
unsigned exposure,
|
||||||
const ScanSession& session);
|
const ScanSession& session);
|
||||||
|
|
|
@ -1489,6 +1489,7 @@ void genesys_init_sensor_tables()
|
||||||
{ 0x58, 0x6b },
|
{ 0x58, 0x6b },
|
||||||
{ 0x59, 0x00 },
|
{ 0x59, 0x00 },
|
||||||
{ 0x5a, 0xc0 },
|
{ 0x5a, 0xc0 },
|
||||||
|
{ 0x7d, 0x90 },
|
||||||
};
|
};
|
||||||
sensor.gamma = { 1.0f, 1.0f, 1.0f };
|
sensor.gamma = { 1.0f, 1.0f, 1.0f };
|
||||||
sensor.get_ccd_size_divisor_fun = default_get_ccd_size_divisor_for_dpi;
|
sensor.get_ccd_size_divisor_fun = default_get_ccd_size_divisor_for_dpi;
|
||||||
|
@ -1554,7 +1555,7 @@ void genesys_init_sensor_tables()
|
||||||
{ 0x70, 0x00 }, { 0x71, 0x02 },
|
{ 0x70, 0x00 }, { 0x71, 0x02 },
|
||||||
{ 0x74, 0x00 }, { 0x75, 0x01 }, { 0x76, 0xff },
|
{ 0x74, 0x00 }, { 0x75, 0x01 }, { 0x76, 0xff },
|
||||||
{ 0x77, 0x03 }, { 0x78, 0xff }, { 0x79, 0xff },
|
{ 0x77, 0x03 }, { 0x78, 0xff }, { 0x79, 0xff },
|
||||||
{ 0x7a, 0x03 }, { 0x7b, 0xff }, { 0x7c, 0xff },
|
{ 0x7a, 0x03 }, { 0x7b, 0xff }, { 0x7c, 0xff }, { 0x7d, 0x90 },
|
||||||
{ 0x9e, 0x00 },
|
{ 0x9e, 0x00 },
|
||||||
{ 0xaa, 0x00 },
|
{ 0xaa, 0x00 },
|
||||||
};
|
};
|
||||||
|
@ -1568,7 +1569,7 @@ void genesys_init_sensor_tables()
|
||||||
{ 0x70, 0x08 }, { 0x71, 0x0c },
|
{ 0x70, 0x08 }, { 0x71, 0x0c },
|
||||||
{ 0x74, 0x0f }, { 0x75, 0xff }, { 0x76, 0xff },
|
{ 0x74, 0x0f }, { 0x75, 0xff }, { 0x76, 0xff },
|
||||||
{ 0x77, 0x00 }, { 0x78, 0x01 }, { 0x79, 0xff },
|
{ 0x77, 0x00 }, { 0x78, 0x01 }, { 0x79, 0xff },
|
||||||
{ 0x7a, 0x00 }, { 0x7b, 0x01 }, { 0x7c, 0xff },
|
{ 0x7a, 0x00 }, { 0x7b, 0x01 }, { 0x7c, 0xff }, { 0x7d, 0x90 },
|
||||||
{ 0x9e, 0xc0 },
|
{ 0x9e, 0xc0 },
|
||||||
{ 0xaa, 0x05 },
|
{ 0xaa, 0x05 },
|
||||||
};
|
};
|
||||||
|
@ -1582,7 +1583,7 @@ void genesys_init_sensor_tables()
|
||||||
{ 0x70, 0x08 }, { 0x71, 0x0a },
|
{ 0x70, 0x08 }, { 0x71, 0x0a },
|
||||||
{ 0x74, 0x0f }, { 0x75, 0xff }, { 0x76, 0xff },
|
{ 0x74, 0x0f }, { 0x75, 0xff }, { 0x76, 0xff },
|
||||||
{ 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x00 },
|
{ 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x00 },
|
||||||
{ 0x7a, 0x00 }, { 0x7b, 0x00 }, { 0x7c, 0x00 },
|
{ 0x7a, 0x00 }, { 0x7b, 0x00 }, { 0x7c, 0x00 }, { 0x7d, 0x90 },
|
||||||
{ 0x9e, 0xc0 },
|
{ 0x9e, 0xc0 },
|
||||||
{ 0xaa, 0x05 },
|
{ 0xaa, 0x05 },
|
||||||
};
|
};
|
||||||
|
@ -1593,10 +1594,10 @@ void genesys_init_sensor_tables()
|
||||||
{ 0x1a, 0x38 }, { 0x1b, 0x10 }, { 0x1c, 0xc1 }, { 0x1d, 0x08 },
|
{ 0x1a, 0x38 }, { 0x1b, 0x10 }, { 0x1c, 0xc1 }, { 0x1d, 0x08 },
|
||||||
{ 0x52, 0x02 }, { 0x53, 0x05 }, { 0x54, 0x08 }, { 0x55, 0x0b }, { 0x56, 0x0e },
|
{ 0x52, 0x02 }, { 0x53, 0x05 }, { 0x54, 0x08 }, { 0x55, 0x0b }, { 0x56, 0x0e },
|
||||||
{ 0x57, 0x11 }, { 0x58, 0x1b }, { 0x59, 0x00 }, { 0x5a, 0x40 },
|
{ 0x57, 0x11 }, { 0x58, 0x1b }, { 0x59, 0x00 }, { 0x5a, 0x40 },
|
||||||
|
{ 0x70, 0x08 }, { 0x71, 0x0a },
|
||||||
{ 0x74, 0x0f }, { 0x75, 0xff }, { 0x76, 0xff },
|
{ 0x74, 0x0f }, { 0x75, 0xff }, { 0x76, 0xff },
|
||||||
{ 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x00 },
|
{ 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x00 },
|
||||||
{ 0x7a, 0x00 }, { 0x7b, 0x00 }, { 0x7c, 0x00 },
|
{ 0x7a, 0x00 }, { 0x7b, 0x00 }, { 0x7c, 0x00 }, { 0x7d, 0x90 },
|
||||||
{ 0x70, 0x08 }, { 0x71, 0x0a },
|
|
||||||
{ 0x9e, 0xc0 },
|
{ 0x9e, 0xc0 },
|
||||||
{ 0xaa, 0x07 },
|
{ 0xaa, 0x07 },
|
||||||
};
|
};
|
||||||
|
@ -1610,7 +1611,7 @@ void genesys_init_sensor_tables()
|
||||||
{ 0x70, 0x00 }, { 0x71, 0x02 },
|
{ 0x70, 0x00 }, { 0x71, 0x02 },
|
||||||
{ 0x74, 0x00 }, { 0x75, 0x1c }, { 0x76, 0x7f },
|
{ 0x74, 0x00 }, { 0x75, 0x1c }, { 0x76, 0x7f },
|
||||||
{ 0x77, 0x03 }, { 0x78, 0xff }, { 0x79, 0xff },
|
{ 0x77, 0x03 }, { 0x78, 0xff }, { 0x79, 0xff },
|
||||||
{ 0x7a, 0x03 }, { 0x7b, 0xff }, { 0x7c, 0xff },
|
{ 0x7a, 0x03 }, { 0x7b, 0xff }, { 0x7c, 0xff }, { 0x7d, 0x90 },
|
||||||
{ 0x9e, 0x00 },
|
{ 0x9e, 0x00 },
|
||||||
{ 0xaa, 0x00 },
|
{ 0xaa, 0x00 },
|
||||||
};
|
};
|
||||||
|
@ -1682,7 +1683,7 @@ void genesys_init_sensor_tables()
|
||||||
{ 0x70, 0x00 }, { 0x71, 0x02 },
|
{ 0x70, 0x00 }, { 0x71, 0x02 },
|
||||||
{ 0x74, 0x00 }, { 0x75, 0x01 }, { 0x76, 0xff },
|
{ 0x74, 0x00 }, { 0x75, 0x01 }, { 0x76, 0xff },
|
||||||
{ 0x77, 0x03 }, { 0x78, 0xff }, { 0x79, 0xff },
|
{ 0x77, 0x03 }, { 0x78, 0xff }, { 0x79, 0xff },
|
||||||
{ 0x7a, 0x03 }, { 0x7b, 0xff }, { 0x7c, 0xff },
|
{ 0x7a, 0x03 }, { 0x7b, 0xff }, { 0x7c, 0xff }, { 0x7d, 0x90 },
|
||||||
{ 0x9e, 0x00 },
|
{ 0x9e, 0x00 },
|
||||||
{ 0xaa, 0x00 },
|
{ 0xaa, 0x00 },
|
||||||
};
|
};
|
||||||
|
@ -1695,7 +1696,7 @@ void genesys_init_sensor_tables()
|
||||||
{ 0x70, 0x08 }, { 0x71, 0x0c },
|
{ 0x70, 0x08 }, { 0x71, 0x0c },
|
||||||
{ 0x74, 0x0f }, { 0x75, 0xff }, { 0x76, 0xff },
|
{ 0x74, 0x0f }, { 0x75, 0xff }, { 0x76, 0xff },
|
||||||
{ 0x77, 0x00 }, { 0x78, 0x01 }, { 0x79, 0xff },
|
{ 0x77, 0x00 }, { 0x78, 0x01 }, { 0x79, 0xff },
|
||||||
{ 0x7a, 0x00 }, { 0x7b, 0x01 }, { 0x7c, 0xff },
|
{ 0x7a, 0x00 }, { 0x7b, 0x01 }, { 0x7c, 0xff }, { 0x7d, 0x90 },
|
||||||
{ 0x9e, 0xc0 },
|
{ 0x9e, 0xc0 },
|
||||||
{ 0xaa, 0x05 },
|
{ 0xaa, 0x05 },
|
||||||
};
|
};
|
||||||
|
@ -1708,7 +1709,7 @@ void genesys_init_sensor_tables()
|
||||||
{ 0x70, 0x08 }, { 0x71, 0x0a },
|
{ 0x70, 0x08 }, { 0x71, 0x0a },
|
||||||
{ 0x74, 0x0f }, { 0x75, 0xff }, { 0x76, 0xff },
|
{ 0x74, 0x0f }, { 0x75, 0xff }, { 0x76, 0xff },
|
||||||
{ 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x00 },
|
{ 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x00 },
|
||||||
{ 0x7a, 0x00 }, { 0x7b, 0x00 }, { 0x7c, 0x00 },
|
{ 0x7a, 0x00 }, { 0x7b, 0x00 }, { 0x7c, 0x00 }, { 0x7d, 0x90 },
|
||||||
{ 0x9e, 0xc0 },
|
{ 0x9e, 0xc0 },
|
||||||
{ 0xaa, 0x05 },
|
{ 0xaa, 0x05 },
|
||||||
};
|
};
|
||||||
|
@ -1721,7 +1722,7 @@ void genesys_init_sensor_tables()
|
||||||
{ 0x70, 0x08 }, { 0x71, 0x0a },
|
{ 0x70, 0x08 }, { 0x71, 0x0a },
|
||||||
{ 0x74, 0x0f }, { 0x75, 0xff }, { 0x76, 0xff },
|
{ 0x74, 0x0f }, { 0x75, 0xff }, { 0x76, 0xff },
|
||||||
{ 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x00 },
|
{ 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x00 },
|
||||||
{ 0x7a, 0x00 }, { 0x7b, 0x00 }, { 0x7c, 0x00 },
|
{ 0x7a, 0x00 }, { 0x7b, 0x00 }, { 0x7c, 0x00 }, { 0x7d, 0x90 },
|
||||||
{ 0x9e, 0xc0 },
|
{ 0x9e, 0xc0 },
|
||||||
{ 0xaa, 0x07 },
|
{ 0xaa, 0x07 },
|
||||||
};
|
};
|
||||||
|
@ -1734,7 +1735,7 @@ void genesys_init_sensor_tables()
|
||||||
{ 0x70, 0x00 }, { 0x71, 0x02 },
|
{ 0x70, 0x00 }, { 0x71, 0x02 },
|
||||||
{ 0x74, 0x00 }, { 0x75, 0x1c }, { 0x76, 0x7f },
|
{ 0x74, 0x00 }, { 0x75, 0x1c }, { 0x76, 0x7f },
|
||||||
{ 0x77, 0x03 }, { 0x78, 0xff }, { 0x79, 0xff },
|
{ 0x77, 0x03 }, { 0x78, 0xff }, { 0x79, 0xff },
|
||||||
{ 0x7a, 0x03 }, { 0x7b, 0xff }, { 0x7c, 0xff },
|
{ 0x7a, 0x03 }, { 0x7b, 0xff }, { 0x7c, 0xff }, { 0x7d, 0x90 },
|
||||||
{ 0x9e, 0x00 },
|
{ 0x9e, 0x00 },
|
||||||
{ 0xaa, 0x00 },
|
{ 0xaa, 0x00 },
|
||||||
};
|
};
|
||||||
|
|
Ładowanie…
Reference in New Issue