genesys: Remove uses of sanei_genesys_get_address()

merge-requests/213/head^2
Povilas Kanapickas 2020-04-05 06:19:38 +03:00
rodzic db6b862d70
commit db50c91132
7 zmienionych plików z 223 dodań i 386 usunięć

Wyświetl plik

@ -690,7 +690,6 @@ static void gl124_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
const ScanSession& session)
{
DBG_HELPER_ARGS(dbg, "exposure_time=%d", exposure_time);
GenesysRegister *r;
uint32_t expmax;
gl124_setup_sensor(dev, sensor, reg);
@ -699,23 +698,21 @@ static void gl124_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
/* enable shading */
regs_set_optical_off(dev->model->asic_type, *reg);
r = sanei_genesys_get_address (reg, REG_0x01);
if (has_flag(session.params.flags, ScanFlag::DISABLE_SHADING) ||
has_flag(dev->model->flags, ModelFlag::NO_CALIBRATION))
{
r->value &= ~REG_0x01_DVDSET;
reg->find_reg(REG_0x01).value &= ~REG_0x01_DVDSET;
} else {
r->value |= REG_0x01_DVDSET;
reg->find_reg(REG_0x01).value |= REG_0x01_DVDSET;
}
r = sanei_genesys_get_address(reg, REG_0x03);
if ((dev->model->sensor_id != SensorId::CIS_CANON_LIDE_120) && (session.params.xres>=600)) {
r->value &= ~REG_0x03_AVEENB;
reg->find_reg(REG_0x03).value &= ~REG_0x03_AVEENB;
DBG (DBG_io, "%s: disabling AVEENB\n", __func__);
}
else
{
r->value |= ~REG_0x03_AVEENB;
reg->find_reg(REG_0x03).value |= ~REG_0x03_AVEENB;
DBG (DBG_io, "%s: enabling AVEENB\n", __func__);
}
@ -727,30 +724,29 @@ static void gl124_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
dev->interface->write_register(REG_0x115, dev->settings.threshold);
/* monochrome / color scan */
r = sanei_genesys_get_address (reg, REG_0x04);
switch (session.params.depth) {
case 8:
r->value &= ~(REG_0x04_LINEART | REG_0x04_BITSET);
reg->find_reg(REG_0x04).value &= ~(REG_0x04_LINEART | REG_0x04_BITSET);
break;
case 16:
r->value &= ~REG_0x04_LINEART;
r->value |= REG_0x04_BITSET;
reg->find_reg(REG_0x04).value &= ~REG_0x04_LINEART;
reg->find_reg(REG_0x04).value |= REG_0x04_BITSET;
break;
}
r->value &= ~REG_0x04_FILTER;
reg->find_reg(REG_0x04).value &= ~REG_0x04_FILTER;
if (session.params.channels == 1)
{
switch (session.params.color_filter)
{
case ColorFilter::RED:
r->value |= 0x10;
reg->find_reg(REG_0x04).value |= 0x10;
break;
case ColorFilter::BLUE:
r->value |= 0x30;
reg->find_reg(REG_0x04).value |= 0x30;
break;
case ColorFilter::GREEN:
r->value |= 0x20;
reg->find_reg(REG_0x04).value |= 0x20;
break;
default:
break; // should not happen
@ -770,16 +766,14 @@ static void gl124_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
reg->set16(REG_DPISET, sensor.register_dpiset);
r = sanei_genesys_get_address(reg, REG_0x06);
r->value |= REG_0x06_GAIN4;
reg->find_reg(REG_0x06).value |= REG_0x06_GAIN4;
/* CIS scanners can do true gray by setting LEDADD */
/* we set up LEDADD only when asked */
if (dev->model->is_cis) {
r = sanei_genesys_get_address (reg, REG_0x60);
r->value &= ~REG_0x60_LEDADD;
reg->find_reg(REG_0x60).value &= ~REG_0x60_LEDADD;
if (session.enable_ledadd) {
r->value |= REG_0x60_LEDADD;
reg->find_reg(REG_0x60).value |= REG_0x60_LEDADD;
expmax = reg->get24(REG_EXPR);
expmax = std::max(expmax, reg->get24(REG_EXPG));
expmax = std::max(expmax, reg->get24(REG_EXPB));
@ -789,10 +783,9 @@ static void gl124_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
dev->reg.set24(REG_EXPB, expmax);
}
/* RGB weighting, REG_TRUER,G and B are to be set */
r = sanei_genesys_get_address (reg, 0x01);
r->value &= ~REG_0x01_TRUEGRAY;
reg->find_reg(0x01).value &= ~REG_0x01_TRUEGRAY;
if (session.enable_ledadd) {
r->value |= REG_0x01_TRUEGRAY;
reg->find_reg(0x01).value |= REG_0x01_TRUEGRAY;
dev->interface->write_register(REG_TRUER, 0x80);
dev->interface->write_register(REG_TRUEG, 0x80);
dev->interface->write_register(REG_TRUEB, 0x80);
@ -939,17 +932,15 @@ void CommandSetGl124::save_power(Genesys_Device* dev, bool enable) const
void CommandSetGl124::set_powersaving(Genesys_Device* dev, int delay /* in minutes */) const
{
DBG_HELPER_ARGS(dbg, "delay = %d", delay);
GenesysRegister *r;
r = sanei_genesys_get_address(&dev->reg, REG_0x03);
r->value &= ~0xf0;
dev->reg.find_reg(REG_0x03).value &= ~0xf0;
if(delay<15)
{
r->value |= delay;
dev->reg.find_reg(REG_0x03).value |= delay;
}
else
{
r->value |= 0x0f;
dev->reg.find_reg(REG_0x03).value |= 0x0f;
}
}

Wyświetl plik

@ -596,8 +596,8 @@ gl646_init_regs (Genesys_Device * dev)
for (addr = 0x60; addr <= 0x6d; addr++)
dev->reg.init_reg(addr, 0);
dev->reg.find_reg(0x01).value = 0x20 /*0x22 */ ; /* enable shading, CCD, color, 1M */
dev->reg.find_reg(0x02).value = 0x30 /*0x38 */ ; /* auto home, one-table-move, full step */
dev->reg.find_reg(0x01).value = 0x20 /*0x22 */ ; /* enable shading, CCD, color, 1M */
dev->reg.find_reg(0x02).value = 0x30 /*0x38 */ ; /* auto home, one-table-move, full step */
if (dev->model->motor_id == MotorId::MD_5345) {
dev->reg.find_reg(0x02).value |= 0x01; // half-step
}
@ -612,8 +612,8 @@ gl646_init_regs (Genesys_Device * dev)
default:
break;
}
dev->reg.find_reg(0x03).value = 0x1f /*0x17 */ ; /* lamp on */
dev->reg.find_reg(0x04).value = 0x13 /*0x03 */ ; /* 8 bits data, 16 bits A/D, color, Wolfson fe *//* todo: according to spec, 0x0 is reserved? */
dev->reg.find_reg(0x03).value = 0x1f /*0x17 */ ; /* lamp on */
dev->reg.find_reg(0x04).value = 0x13 /*0x03 */ ; /* 8 bits data, 16 bits A/D, color, Wolfson fe *//* todo: according to spec, 0x0 is reserved? */
switch (dev->model->adc_id)
{
case AdcId::AD_XP200:

Wyświetl plik

@ -320,7 +320,7 @@ gl841_init_registers (Genesys_Device * dev)
const auto& sensor = sanei_genesys_find_sensor_any(dev);
dev->reg.find_reg(0x05).value = 0x00; /* disable gamma, 24 clocks/pixel */
dev->reg.find_reg(0x05).value = 0x00; /* disable gamma, 24 clocks/pixel */
sanei_genesys_set_dpihw(dev->reg, sensor.register_dpihw);
@ -339,37 +339,37 @@ gl841_init_registers (Genesys_Device * dev)
else
{
dev->reg.find_reg(0x06).value |= 0x05 << REG_0x06S_SCANMOD; /* 15 clocks/pixel */
dev->reg.find_reg(0x09).value = 0; /* 24 MHz CLKSET */
dev->reg.find_reg(0x09).value = 0; /* 24 MHz CLKSET */
}
dev->reg.find_reg(0x1e).value = 0xf0; /* watch-dog time */
dev->reg.find_reg(0x1e).value = 0xf0; /* watch-dog time */
dev->reg.find_reg(0x17).value |= 1 << REG_0x17S_TGW;
dev->reg.find_reg(0x19).value = 0x50;
dev->reg.find_reg(0x19).value = 0x50;
dev->reg.find_reg(0x1d).value |= 1 << REG_0x1DS_TGSHLD;
dev->reg.find_reg(0x1e).value |= 1 << REG_0x1ES_WDTIME;
/*SCANFED*/
dev->reg.find_reg(0x1f).value = 0x01;
dev->reg.find_reg(0x1f).value = 0x01;
/*BUFSEL*/
dev->reg.find_reg(0x20).value = 0x20;
dev->reg.find_reg(0x20).value = 0x20;
/*LAMPPWM*/
dev->reg.find_reg(0x29).value = 0xff;
dev->reg.find_reg(0x29).value = 0xff;
/*BWHI*/
dev->reg.find_reg(0x2e).value = 0x80;
dev->reg.find_reg(0x2e).value = 0x80;
/*BWLOW*/
dev->reg.find_reg(0x2f).value = 0x80;
dev->reg.find_reg(0x2f).value = 0x80;
/*LPERIOD*/
dev->reg.find_reg(0x38).value = 0x4f;
dev->reg.find_reg(0x39).value = 0xc1;
dev->reg.find_reg(0x38).value = 0x4f;
dev->reg.find_reg(0x39).value = 0xc1;
/*VSMPW*/
dev->reg.find_reg(0x58).value |= 3 << REG_0x58S_VSMPW;
@ -586,60 +586,44 @@ static void gl841_init_motor_regs_off(Genesys_Register_Set* reg, unsigned int sc
{
DBG_HELPER_ARGS(dbg, "scan_lines=%d", scan_lines);
unsigned int feedl;
GenesysRegister* r;
feedl = 2;
r = sanei_genesys_get_address (reg, 0x3d);
r->value = (feedl >> 16) & 0xf;
r = sanei_genesys_get_address (reg, 0x3e);
r->value = (feedl >> 8) & 0xff;
r = sanei_genesys_get_address (reg, 0x3f);
r->value = feedl & 0xff;
r = sanei_genesys_get_address (reg, 0x5e);
r->value &= ~0xe0;
reg->set8(0x3d, (feedl >> 16) & 0xf);
reg->set8(0x3e, (feedl >> 8) & 0xff);
reg->set8(0x3f, feedl & 0xff);
reg->find_reg(0x5e).value &= ~0xe0;
r = sanei_genesys_get_address (reg, 0x25);
r->value = (scan_lines >> 16) & 0xf;
r = sanei_genesys_get_address (reg, 0x26);
r->value = (scan_lines >> 8) & 0xff;
r = sanei_genesys_get_address (reg, 0x27);
r->value = scan_lines & 0xff;
reg->set8(0x25, (scan_lines >> 16) & 0xf);
reg->set8(0x26, (scan_lines >> 8) & 0xff);
reg->set8(0x27, scan_lines & 0xff);
r = sanei_genesys_get_address (reg, 0x02);
r->value &= ~0x01; /*LONGCURV OFF*/
r->value &= ~0x80; /*NOT_HOME OFF*/
reg->find_reg(0x02).value &= ~0x01; /*LONGCURV OFF*/
reg->find_reg(0x02).value &= ~0x80; /*NOT_HOME OFF*/
r->value &= ~0x10;
reg->find_reg(0x02).value &= ~0x10;
r->value &= ~0x06;
reg->find_reg(0x02).value &= ~0x06;
r->value &= ~0x08;
reg->find_reg(0x02).value &= ~0x08;
r->value &= ~0x20;
reg->find_reg(0x02).value &= ~0x20;
r->value &= ~0x40;
reg->find_reg(0x02).value &= ~0x40;
r = sanei_genesys_get_address (reg, 0x67);
r->value = 0x3f;
reg->set8(0x67, 0x3f);
r = sanei_genesys_get_address (reg, 0x68);
r->value = 0x3f;
reg->set8(0x68, 0x3f);
r = sanei_genesys_get_address(reg, REG_STEPNO);
r->value = 0;
reg->set8(REG_STEPNO, 0);
r = sanei_genesys_get_address(reg, REG_FASTNO);
r->value = 0;
reg->set8(REG_FASTNO, 0);
r = sanei_genesys_get_address (reg, 0x69);
r->value = 0;
reg->set8(0x69, 0);
r = sanei_genesys_get_address (reg, 0x6a);
r->value = 0;
reg->set8(0x6a, 0);
r = sanei_genesys_get_address (reg, 0x5f);
r->value = 0;
reg->set8(0x5f, 0);
}
/** @brief write motor table frequency
@ -694,7 +678,6 @@ static void gl841_init_motor_regs(Genesys_Device* dev, const Genesys_Sensor& sen
unsigned int fast_exposure = 0;
int use_fast_fed = 0;
unsigned int feedl;
GenesysRegister* r;
/*number of scan lines to add in a scan_lines line*/
{
@ -762,72 +745,51 @@ HOME_FREE: 3
* Z2
*/
r = sanei_genesys_get_address(reg, 0x3d);
r->value = (feedl >> 16) & 0xf;
r = sanei_genesys_get_address(reg, 0x3e);
r->value = (feedl >> 8) & 0xff;
r = sanei_genesys_get_address(reg, 0x3f);
r->value = feedl & 0xff;
r = sanei_genesys_get_address(reg, 0x5e);
r->value &= ~0xe0;
reg->set8(0x3d, (feedl >> 16) & 0xf);
reg->set8(0x3e, (feedl >> 8) & 0xff);
reg->set8(0x3f, feedl & 0xff);
reg->find_reg(0x5e).value &= ~0xe0;
r = sanei_genesys_get_address(reg, 0x25);
r->value = 0;
r = sanei_genesys_get_address(reg, 0x26);
r->value = 0;
r = sanei_genesys_get_address(reg, 0x27);
r->value = 0;
reg->set8(0x25, 0);
reg->set8(0x26, 0);
reg->set8(0x27, 0);
r = sanei_genesys_get_address(reg, 0x02);
r->value &= ~0x01; /*LONGCURV OFF*/
r->value &= ~0x80; /*NOT_HOME OFF*/
reg->find_reg(0x02).value &= ~0x01; /*LONGCURV OFF*/
reg->find_reg(0x02).value &= ~0x80; /*NOT_HOME OFF*/
r->value |= 0x10;
reg->find_reg(0x02).value |= 0x10;
if (action == MOTOR_ACTION_GO_HOME)
r->value |= 0x06;
reg->find_reg(0x02).value |= 0x06;
else
r->value &= ~0x06;
reg->find_reg(0x02).value &= ~0x06;
if (use_fast_fed)
r->value |= 0x08;
reg->find_reg(0x02).value |= 0x08;
else
r->value &= ~0x08;
reg->find_reg(0x02).value &= ~0x08;
if (has_flag(flags, MotorFlag::AUTO_GO_HOME)) {
r->value |= 0x20;
reg->find_reg(0x02).value |= 0x20;
} else {
r->value &= ~0x20;
reg->find_reg(0x02).value &= ~0x20;
}
r->value &= ~0x40;
reg->find_reg(0x02).value &= ~0x40;
if (has_flag(flags, MotorFlag::REVERSE)) {
r->value |= REG_0x02_MTRREV;
reg->find_reg(0x02).value |= REG_0x02_MTRREV;
}
gl841_send_slope_table(dev, sensor, 3, fast_table.table, 256);
r = sanei_genesys_get_address(reg, 0x67);
r->value = 0x3f;
r = sanei_genesys_get_address(reg, 0x68);
r->value = 0x3f;
r = sanei_genesys_get_address(reg, REG_STEPNO);
r->value = 0;
r = sanei_genesys_get_address(reg, REG_FASTNO);
r->value = 0;
r = sanei_genesys_get_address(reg, 0x69);
r->value = 0;
r = sanei_genesys_get_address(reg, 0x6a);
r->value = (fast_table.steps_count >> 1) + (fast_table.steps_count & 1);
r = sanei_genesys_get_address(reg, 0x5f);
r->value = (fast_table.steps_count >> 1) + (fast_table.steps_count & 1);
reg->set8(0x67, 0x3f);
reg->set8(0x68, 0x3f);
reg->set8(REG_STEPNO, 0);
reg->set8(REG_FASTNO, 0);
reg->set8(0x69, 0);
reg->set8(0x6a, (fast_table.steps_count >> 1) + (fast_table.steps_count & 1));
reg->set8(0x5f, (fast_table.steps_count >> 1) + (fast_table.steps_count & 1));
}
static void gl841_init_motor_regs_scan(Genesys_Device* dev, const Genesys_Sensor& sensor,
@ -851,7 +813,6 @@ static void gl841_init_motor_regs_scan(Genesys_Device* dev, const Genesys_Sensor
unsigned int fast_time;
unsigned int slow_time;
unsigned int feedl;
GenesysRegister* r;
unsigned int min_restep = 0x20;
uint32_t z1, z2;
@ -988,43 +949,32 @@ HOME_FREE: 3
* Z2
*/
r = sanei_genesys_get_address (reg, 0x3d);
r->value = (feedl >> 16) & 0xf;
r = sanei_genesys_get_address (reg, 0x3e);
r->value = (feedl >> 8) & 0xff;
r = sanei_genesys_get_address (reg, 0x3f);
r->value = feedl & 0xff;
r = sanei_genesys_get_address (reg, 0x5e);
r->value &= ~0xe0;
r = sanei_genesys_get_address (reg, 0x25);
r->value = (scan_lines >> 16) & 0xf;
r = sanei_genesys_get_address (reg, 0x26);
r->value = (scan_lines >> 8) & 0xff;
r = sanei_genesys_get_address (reg, 0x27);
r->value = scan_lines & 0xff;
r = sanei_genesys_get_address (reg, 0x02);
r->value &= ~0x01; /*LONGCURV OFF*/
r->value &= ~0x80; /*NOT_HOME OFF*/
r->value |= 0x10;
r->value &= ~0x06;
reg->set8(0x3d, (feedl >> 16) & 0xf);
reg->set8(0x3e, (feedl >> 8) & 0xff);
reg->set8(0x3f, feedl & 0xff);
reg->find_reg(0x5e).value &= ~0xe0;
reg->set8(0x25, (scan_lines >> 16) & 0xf);
reg->set8(0x26, (scan_lines >> 8) & 0xff);
reg->set8(0x27, scan_lines & 0xff);
reg->find_reg(0x02).value &= ~0x01; /*LONGCURV OFF*/
reg->find_reg(0x02).value &= ~0x80; /*NOT_HOME OFF*/
reg->find_reg(0x02).value |= 0x10;
reg->find_reg(0x02).value &= ~0x06;
if (use_fast_fed)
r->value |= 0x08;
reg->find_reg(0x02).value |= 0x08;
else
r->value &= ~0x08;
reg->find_reg(0x02).value &= ~0x08;
if (has_flag(flags, MotorFlag::AUTO_GO_HOME))
r->value |= 0x20;
reg->find_reg(0x02).value |= 0x20;
else
r->value &= ~0x20;
reg->find_reg(0x02).value &= ~0x20;
if (has_flag(flags, MotorFlag::DISABLE_BUFFER_FULL_MOVE)) {
r->value |= 0x40;
reg->find_reg(0x02).value |= 0x40;
} else {
r->value &= ~0x40;
reg->find_reg(0x02).value &= ~0x40;
}
gl841_send_slope_table(dev, sensor, 0, slow_table.table, 256);
@ -1053,11 +1003,10 @@ HOME_FREE: 3
min_restep = back_table.steps_count * 2 + 2;
}
/* steps of table 0*/
r = sanei_genesys_get_address(reg, REG_FWDSTEP);
r->value = min_restep - slow_table.steps_count*2;
reg->set8(REG_FWDSTEP, min_restep - slow_table.steps_count*2);
/* steps of table 1*/
r = sanei_genesys_get_address(reg, REG_BWDSTEP);
r->value = min_restep - back_table.steps_count*2;
reg->set8(REG_BWDSTEP, min_restep - back_table.steps_count*2);
/*
for z1/z2:
@ -1078,43 +1027,21 @@ HOME_FREE: 3
DBG(DBG_info, "%s: z1 = %d\n", __func__, z1);
DBG(DBG_info, "%s: z2 = %d\n", __func__, z2);
r = sanei_genesys_get_address (reg, 0x60);
r->value = ((z1 >> 16) & 0xff);
r = sanei_genesys_get_address (reg, 0x61);
r->value = ((z1 >> 8) & 0xff);
r = sanei_genesys_get_address (reg, 0x62);
r->value = (z1 & 0xff);
r = sanei_genesys_get_address (reg, 0x63);
r->value = ((z2 >> 16) & 0xff);
r = sanei_genesys_get_address (reg, 0x64);
r->value = ((z2 >> 8) & 0xff);
r = sanei_genesys_get_address (reg, 0x65);
r->value = (z2 & 0xff);
r = sanei_genesys_get_address(reg, REG_0x1E);
r->value &= REG_0x1E_WDTIME;
r->value |= scan_dummy;
r = sanei_genesys_get_address (reg, 0x67);
r->value = 0x3f | (static_cast<unsigned>(scan_step_type) << 6);
r = sanei_genesys_get_address (reg, 0x68);
r->value = 0x3f;
r = sanei_genesys_get_address(reg, REG_STEPNO);
r->value = (slow_table.steps_count >> 1) + (slow_table.steps_count & 1);
r = sanei_genesys_get_address(reg, REG_FASTNO);
r->value = (back_table.steps_count >> 1) + (back_table.steps_count & 1);
r = sanei_genesys_get_address (reg, 0x69);
r->value = (slow_table.steps_count >> 1) + (slow_table.steps_count & 1);
r = sanei_genesys_get_address (reg, 0x6a);
r->value = (fast_table.steps_count >> 1) + (fast_table.steps_count & 1);
r = sanei_genesys_get_address (reg, 0x5f);
r->value = (fast_table.steps_count >> 1) + (fast_table.steps_count & 1);
reg->set8(0x60, ((z1 >> 16) & 0xff));
reg->set8(0x61, ((z1 >> 8) & 0xff));
reg->set8(0x62, (z1 & 0xff));
reg->set8(0x63, ((z2 >> 16) & 0xff));
reg->set8(0x64, ((z2 >> 8) & 0xff));
reg->set8(0x65, (z2 & 0xff));
reg->find_reg(REG_0x1E).value &= REG_0x1E_WDTIME;
reg->find_reg(REG_0x1E).value |= scan_dummy;
reg->set8(0x67, 0x3f | (static_cast<unsigned>(scan_step_type) << 6));
reg->set8(0x68, 0x3f);
reg->set8(REG_STEPNO, (slow_table.steps_count >> 1) + (slow_table.steps_count & 1));
reg->set8(REG_FASTNO, (back_table.steps_count >> 1) + (back_table.steps_count & 1));
reg->set8(0x69, (slow_table.steps_count >> 1) + (slow_table.steps_count & 1));
reg->set8(0x6a, (fast_table.steps_count >> 1) + (fast_table.steps_count & 1));
reg->set8(0x5f, (fast_table.steps_count >> 1) + (fast_table.steps_count & 1));
}
static void gl841_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sensor& sensor,
@ -1122,108 +1049,100 @@ static void gl841_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
const ScanSession& session)
{
DBG_HELPER_ARGS(dbg, "exposure_time=%d", exposure_time);
GenesysRegister* r;
uint16_t expavg, expr, expb, expg;
dev->cmd_set->set_fe(dev, sensor, AFE_SET);
/* gpio part.*/
if (dev->model->gpio_id == GpioId::CANON_LIDE_35) {
r = sanei_genesys_get_address(reg, REG_0x6C);
if (session.ccd_size_divisor > 1) {
r->value &= ~0x80;
reg->find_reg(REG_0x6C).value &= ~0x80;
} else {
r->value |= 0x80;
reg->find_reg(REG_0x6C).value |= 0x80;
}
}
if (dev->model->gpio_id == GpioId::CANON_LIDE_80) {
r = sanei_genesys_get_address(reg, REG_0x6C);
if (session.ccd_size_divisor > 1) {
r->value &= ~0x40;
r->value |= 0x20;
reg->find_reg(REG_0x6C).value &= ~0x40;
reg->find_reg(REG_0x6C).value |= 0x20;
} else {
r->value &= ~0x20;
r->value |= 0x40;
reg->find_reg(REG_0x6C).value &= ~0x20;
reg->find_reg(REG_0x6C).value |= 0x40;
}
}
/* enable shading */
r = sanei_genesys_get_address (reg, 0x01);
r->value |= REG_0x01_SCAN;
reg->find_reg(0x01).value |= REG_0x01_SCAN;
if (has_flag(session.params.flags, ScanFlag::DISABLE_SHADING) ||
has_flag(dev->model->flags, ModelFlag::NO_CALIBRATION)) {
r->value &= ~REG_0x01_DVDSET;
reg->find_reg(0x01).value &= ~REG_0x01_DVDSET;
} else {
r->value |= REG_0x01_DVDSET;
reg->find_reg(0x01).value |= REG_0x01_DVDSET;
}
/* average looks better than deletion, and we are already set up to
use one of the average enabled resolutions
*/
r = sanei_genesys_get_address (reg, 0x03);
r->value |= REG_0x03_AVEENB;
reg->find_reg(0x03).value |= REG_0x03_AVEENB;
sanei_genesys_set_lamp_power(dev, sensor, *reg,
!has_flag(session.params.flags, ScanFlag::DISABLE_LAMP));
/* BW threshold */
r = sanei_genesys_get_address (reg, 0x2e);
r->value = dev->settings.threshold;
r = sanei_genesys_get_address (reg, 0x2f);
r->value = dev->settings.threshold;
reg->set8(0x2e, dev->settings.threshold);
reg->set8(0x2f, dev->settings.threshold);
/* monochrome / color scan */
r = sanei_genesys_get_address (reg, 0x04);
switch (session.params.depth) {
case 8:
r->value &= ~(REG_0x04_LINEART | REG_0x04_BITSET);
reg->find_reg(0x04).value &= ~(REG_0x04_LINEART | REG_0x04_BITSET);
break;
case 16:
r->value &= ~REG_0x04_LINEART;
r->value |= REG_0x04_BITSET;
reg->find_reg(0x04).value &= ~REG_0x04_LINEART;
reg->find_reg(0x04).value |= REG_0x04_BITSET;
break;
}
/* AFEMOD should depend on FESET, and we should set these
* bits separately */
r->value &= ~(REG_0x04_FILTER | REG_0x04_AFEMOD);
reg->find_reg(0x04).value &= ~(REG_0x04_FILTER | REG_0x04_AFEMOD);
if (has_flag(session.params.flags, ScanFlag::ENABLE_LEDADD)) {
r->value |= 0x10; /* no filter */
reg->find_reg(0x04).value |= 0x10; /* no filter */
}
else if (session.params.channels == 1)
{
switch (session.params.color_filter)
{
case ColorFilter::RED:
r->value |= 0x14;
reg->find_reg(0x04).value |= 0x14;
break;
case ColorFilter::GREEN:
r->value |= 0x18;
reg->find_reg(0x04).value |= 0x18;
break;
case ColorFilter::BLUE:
r->value |= 0x1c;
reg->find_reg(0x04).value |= 0x1c;
break;
default:
r->value |= 0x10;
reg->find_reg(0x04).value |= 0x10;
break;
}
}
else
{
if (dev->model->sensor_id == SensorId::CCD_PLUSTEK_OPTICPRO_3600) {
r->value |= 0x22; /* slow color pixel by pixel */
reg->find_reg(0x04).value |= 0x22; /* slow color pixel by pixel */
}
else
{
r->value |= 0x10; /* color pixel by pixel */
reg->find_reg(0x04).value |= 0x10; /* color pixel by pixel */
}
}
/* CIS scanners can do true gray by setting LEDADD */
r = sanei_genesys_get_address (reg, 0x87);
r->value &= ~REG_0x87_LEDADD;
reg->find_reg(0x87).value &= ~REG_0x87_LEDADD;
if (has_flag(session.params.flags, ScanFlag::ENABLE_LEDADD)) {
r->value |= REG_0x87_LEDADD;
reg->find_reg(0x87).value |= REG_0x87_LEDADD;
expr = reg->get16(REG_EXPR);
expg = reg->get16(REG_EXPG);
expb = reg->get16(REG_EXPB);
@ -1249,20 +1168,13 @@ static void gl841_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
/* sensor parameters */
sanei_gl841_setup_sensor(sensor, &dev->reg);
r = sanei_genesys_get_address (reg, 0x29);
r->value = 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_STRPIXEL, session.pixel_startx);
reg->set16(REG_ENDPIXEL, session.pixel_endx);
reg->set24(REG_MAXWD, session.output_line_bytes);
reg->set16(REG_LPERIOD, exposure_time);
r = sanei_genesys_get_address (reg, 0x34);
r->value = sensor.dummy_pixel;
reg->set8(0x34, sensor.dummy_pixel);
}
static int

Wyświetl plik

@ -59,24 +59,11 @@ namespace gl843 {
*/
static int gl843_get_step_multiplier(Genesys_Register_Set* regs)
{
GenesysRegister *r = sanei_genesys_get_address(regs, REG_0x9D);
int value = 1;
if (r != nullptr)
{
switch (r->value & 0x0c)
{
case 0x04:
value = 2;
break;
case 0x08:
value = 4;
break;
default:
value = 1;
}
switch (regs->get8(REG_0x9D) & 0x0c) {
case 0x04: return 2;
case 0x08: return 4;
default: return 1;
}
DBG(DBG_io, "%s: step multiplier is %d\n", __func__, value);
return value;
}
/** copy sensor specific settings */
@ -951,7 +938,6 @@ static void gl843_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
{
DBG_HELPER_ARGS(dbg, "exposure=%d", exposure);
unsigned int tgtime; /**> exposure time multiplier */
GenesysRegister *r;
/* tgtime */
tgtime = exposure / 65536 + 1;
@ -964,14 +950,14 @@ static void gl843_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
/* enable shading */
regs_set_optical_off(dev->model->asic_type, *reg);
r = sanei_genesys_get_address (reg, REG_0x01);
if (has_flag(session.params.flags, ScanFlag::DISABLE_SHADING) ||
has_flag(dev->model->flags, ModelFlag::NO_CALIBRATION) ||
session.use_host_side_calib)
{
r->value &= ~REG_0x01_DVDSET;
reg->find_reg(REG_0x01).value &= ~REG_0x01_DVDSET;
} else {
r->value |= REG_0x01_DVDSET;
reg->find_reg(REG_0x01).value |= REG_0x01_DVDSET;
}
bool use_shdarea = false;
@ -990,16 +976,15 @@ static void gl843_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
}
if (use_shdarea) {
r->value |= REG_0x01_SHDAREA;
reg->find_reg(REG_0x01).value |= REG_0x01_SHDAREA;
} else {
r->value &= ~REG_0x01_SHDAREA;
reg->find_reg(REG_0x01).value &= ~REG_0x01_SHDAREA;
}
r = sanei_genesys_get_address (reg, REG_0x03);
if (dev->model->model_id == ModelId::CANON_8600F) {
r->value |= REG_0x03_AVEENB;
reg->find_reg(REG_0x03).value |= REG_0x03_AVEENB;
} else {
r->value &= ~REG_0x03_AVEENB;
reg->find_reg(REG_0x03).value &= ~REG_0x03_AVEENB;
}
// FIXME: we probably don't need to set exposure to registers at this point. It was this way
@ -1008,43 +993,40 @@ static void gl843_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
!has_flag(session.params.flags, ScanFlag::DISABLE_LAMP));
/* select XPA */
r->value &= ~REG_0x03_XPASEL;
reg->find_reg(REG_0x03).value &= ~REG_0x03_XPASEL;
if (has_flag(session.params.flags, ScanFlag::USE_XPA)) {
r->value |= REG_0x03_XPASEL;
reg->find_reg(REG_0x03).value |= REG_0x03_XPASEL;
}
reg->state.is_xpa_on = has_flag(session.params.flags, ScanFlag::USE_XPA);
/* BW threshold */
r = sanei_genesys_get_address(reg, REG_0x2E);
r->value = dev->settings.threshold;
r = sanei_genesys_get_address(reg, REG_0x2F);
r->value = dev->settings.threshold;
// BW threshold
reg->set8(REG_0x2E, dev->settings.threshold);
reg->set8(REG_0x2F, dev->settings.threshold);
/* monochrome / color scan */
r = sanei_genesys_get_address(reg, REG_0x04);
switch (session.params.depth) {
case 8:
r->value &= ~(REG_0x04_LINEART | REG_0x04_BITSET);
reg->find_reg(REG_0x04).value &= ~(REG_0x04_LINEART | REG_0x04_BITSET);
break;
case 16:
r->value &= ~REG_0x04_LINEART;
r->value |= REG_0x04_BITSET;
reg->find_reg(REG_0x04).value &= ~REG_0x04_LINEART;
reg->find_reg(REG_0x04).value |= REG_0x04_BITSET;
break;
}
r->value &= ~(REG_0x04_FILTER | REG_0x04_AFEMOD);
reg->find_reg(REG_0x04).value &= ~(REG_0x04_FILTER | REG_0x04_AFEMOD);
if (session.params.channels == 1)
{
switch (session.params.color_filter)
{
case ColorFilter::RED:
r->value |= 0x14;
reg->find_reg(REG_0x04).value |= 0x14;
break;
case ColorFilter::BLUE:
r->value |= 0x1c;
reg->find_reg(REG_0x04).value |= 0x1c;
break;
case ColorFilter::GREEN:
r->value |= 0x18;
reg->find_reg(REG_0x04).value |= 0x18;
break;
default:
break; // should not happen
@ -1052,10 +1034,10 @@ static void gl843_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
} else {
switch (dev->frontend.layout.type) {
case FrontendType::WOLFSON:
r->value |= 0x10; // pixel by pixel
reg->find_reg(REG_0x04).value |= 0x10; // pixel by pixel
break;
case FrontendType::ANALOG_DEVICES:
r->value |= 0x20; // slow color pixel by pixel
reg->find_reg(REG_0x04).value |= 0x20; // slow color pixel by pixel
break;
default:
throw SaneException("Invalid frontend type %d",
@ -1087,8 +1069,7 @@ static void gl843_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
reg->set16(REG_LPERIOD, exposure / tgtime);
DBG(DBG_io2, "%s: exposure used=%d\n", __func__, exposure/tgtime);
r = sanei_genesys_get_address (reg, REG_DUMMY);
r->value = sensor.dummy_pixel;
reg->set8(REG_DUMMY, sensor.dummy_pixel);
}
void CommandSetGl843::init_regs_for_scan_session(Genesys_Device* dev, const Genesys_Sensor& sensor,
@ -1868,7 +1849,7 @@ void CommandSetGl843::asic_boot(Genesys_Device* dev, bool cold) const
val = dev->reg.find_reg(0x0b).value & REG_0x0B_DRAMSEL;
val = (val | REG_0x0B_ENBDRAM);
dev->interface->write_register(REG_0x0B, val);
dev->reg.find_reg(0x0b).value = val;
dev->reg.find_reg(0x0b).value = val;
if (dev->model->model_id == ModelId::CANON_8400F) {
dev->interface->write_0x8c(0x1e, 0x01);
@ -1905,7 +1886,7 @@ void CommandSetGl843::asic_boot(Genesys_Device* dev, bool cold) const
val = (dev->reg.find_reg(0x0b).value & ~REG_0x0B_CLKSET) | clock_freq;
dev->interface->write_register(REG_0x0B, val);
dev->reg.find_reg(0x0b).value = val;
dev->reg.find_reg(0x0b).value = val;
/* prevent further writings by bulk write register */
dev->reg.remove_reg(0x0b);
@ -1991,14 +1972,11 @@ void CommandSetGl843::send_shading_data(Genesys_Device* dev, const Genesys_Senso
uint32_t final_size, length, i;
uint8_t *buffer;
int count,offset;
GenesysRegister *r;
uint16_t strpixel, endpixel, startx;
offset=0;
length=size;
r = sanei_genesys_get_address(&dev->reg, REG_0x01);
if (r->value & REG_0x01_SHDAREA)
{
if (dev->reg.get8(REG_0x01) & REG_0x01_SHDAREA) {
/* recompute STRPIXEL used shading calibration so we can
* compute offset within data for SHDAREA case */

Wyświetl plik

@ -61,17 +61,10 @@ namespace gl846 {
/**
* compute the step multiplier used
*/
static int
gl846_get_step_multiplier (Genesys_Register_Set * regs)
static int gl846_get_step_multiplier (Genesys_Register_Set * regs)
{
GenesysRegister *r = sanei_genesys_get_address(regs, 0x9d);
int value = 1;
if (r != nullptr) {
value = (r->value & 0x0f)>>1;
value = 1 << value;
}
DBG (DBG_io, "%s: step multiplier is %d\n", __func__, value);
return value;
unsigned value = (regs->get8(0x9d) & 0x0f) >> 1;
return 1 << value;
}
/** @brief sensor specific settings
@ -625,7 +618,6 @@ static void gl846_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
const ScanSession& session)
{
DBG_HELPER_ARGS(dbg, "exposure_time=%d", exposure_time);
GenesysRegister *r;
gl846_setup_sensor(dev, sensor, reg);
@ -633,61 +625,56 @@ static void gl846_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
/* enable shading */
regs_set_optical_off(dev->model->asic_type, *reg);
r = sanei_genesys_get_address(reg, REG_0x01);
r->value |= REG_0x01_SHDAREA;
reg->find_reg(REG_0x01).value |= REG_0x01_SHDAREA;
if (has_flag(session.params.flags, ScanFlag::DISABLE_SHADING) ||
has_flag(dev->model->flags, ModelFlag::NO_CALIBRATION) ||
session.use_host_side_calib)
{
r->value &= ~REG_0x01_DVDSET;
reg->find_reg(REG_0x01).value &= ~REG_0x01_DVDSET;
} else {
r->value |= REG_0x01_DVDSET;
reg->find_reg(REG_0x01).value |= REG_0x01_DVDSET;
}
r = sanei_genesys_get_address(reg, REG_0x03);
r->value &= ~REG_0x03_AVEENB;
reg->find_reg(REG_0x03).value &= ~REG_0x03_AVEENB;
sanei_genesys_set_lamp_power(dev, sensor, *reg,
!has_flag(session.params.flags, ScanFlag::DISABLE_LAMP));
reg->state.is_xpa_on = has_flag(session.params.flags, ScanFlag::USE_XPA);
/* BW threshold */
r = sanei_genesys_get_address (reg, 0x2e);
r->value = dev->settings.threshold;
r = sanei_genesys_get_address (reg, 0x2f);
r->value = dev->settings.threshold;
// BW threshold
reg->set8(0x2e, dev->settings.threshold);
reg->set8(0x2f, dev->settings.threshold);
/* monochrome / color scan */
r = sanei_genesys_get_address(reg, REG_0x04);
switch (session.params.depth) {
case 8:
r->value &= ~(REG_0x04_LINEART | REG_0x04_BITSET);
reg->find_reg(REG_0x04).value &= ~(REG_0x04_LINEART | REG_0x04_BITSET);
break;
case 16:
r->value &= ~REG_0x04_LINEART;
r->value |= REG_0x04_BITSET;
reg->find_reg(REG_0x04).value &= ~REG_0x04_LINEART;
reg->find_reg(REG_0x04).value |= REG_0x04_BITSET;
break;
}
r->value &= ~(REG_0x04_FILTER | REG_0x04_AFEMOD);
reg->find_reg(REG_0x04).value &= ~(REG_0x04_FILTER | REG_0x04_AFEMOD);
if (session.params.channels == 1)
{
switch (session.params.color_filter)
{
case ColorFilter::RED:
r->value |= 0x24;
reg->find_reg(REG_0x04).value |= 0x24;
break;
case ColorFilter::BLUE:
r->value |= 0x2c;
reg->find_reg(REG_0x04).value |= 0x2c;
break;
case ColorFilter::GREEN:
r->value |= 0x28;
reg->find_reg(REG_0x04).value |= 0x28;
break;
default:
break; // should not happen
}
} else {
r->value |= 0x20; // mono
reg->find_reg(REG_0x04).value |= 0x20; // mono
}
const auto& dpihw_sensor = sanei_genesys_find_sensor(dev, session.output_resolution,
@ -704,17 +691,17 @@ static void gl846_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
/* CIS scanners can do true gray by setting LEDADD */
/* we set up LEDADD only when asked */
if (dev->model->is_cis) {
r = sanei_genesys_get_address (reg, 0x87);
r->value &= ~REG_0x87_LEDADD;
reg->find_reg(0x87).value &= ~REG_0x87_LEDADD;
if (session.enable_ledadd) {
r->value |= REG_0x87_LEDADD;
reg->find_reg(0x87).value |= REG_0x87_LEDADD;
}
/* RGB weighting
r = sanei_genesys_get_address (reg, 0x01);
r->value &= ~REG_0x01_TRUEGRAY;
reg->find_reg(0x01).value &= ~REG_0x01_TRUEGRAY;
if (session.enable_ledadd))
{
r->value |= REG_0x01_TRUEGRAY;
reg->find_reg(0x01).value |= REG_0x01_TRUEGRAY;
}*/
}
@ -731,8 +718,7 @@ static void gl846_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
reg->set16(REG_LPERIOD, exposure_time);
DBG (DBG_io2, "%s: exposure_time used=%d\n", __func__, exposure_time);
r = sanei_genesys_get_address (reg, 0x34);
r->value = sensor.dummy_pixel;
reg->set8(0x34, sensor.dummy_pixel);
}
void CommandSetGl846::init_regs_for_scan_session(Genesys_Device* dev, const Genesys_Sensor& sensor,
@ -885,7 +871,6 @@ void CommandSetGl846::begin_scan(Genesys_Device* dev, const Genesys_Sensor& sens
DBG_HELPER(dbg);
(void) sensor;
uint8_t val;
GenesysRegister *r;
if (reg->state.is_xpa_on && reg->state.is_lamp_on) {
dev->cmd_set->set_xpa_lamp_power(*dev, true);
@ -896,8 +881,7 @@ void CommandSetGl846::begin_scan(Genesys_Device* dev, const Genesys_Sensor& sens
val = dev->interface->read_register(REG_0x01);
val |= REG_0x01_SCAN;
dev->interface->write_register(REG_0x01, val);
r = sanei_genesys_get_address (reg, REG_0x01);
r->value = val;
reg->set8(REG_0x01, val);
scanner_start_action(*dev, start_motor);

Wyświetl plik

@ -56,18 +56,10 @@ namespace gl847 {
/**
* compute the step multiplier used
*/
static int
gl847_get_step_multiplier (Genesys_Register_Set * regs)
static unsigned gl847_get_step_multiplier (Genesys_Register_Set * regs)
{
GenesysRegister *r = sanei_genesys_get_address(regs, 0x9d);
int value = 1;
if (r != nullptr)
{
value = (r->value & 0x0f)>>1;
value = 1 << value;
}
DBG (DBG_io, "%s: step multiplier is %d\n", __func__, value);
return value;
unsigned value = (regs->get8(0x9d) & 0x0f) >> 1;
return 1 << value;
}
/** @brief sensor specific settings
@ -526,7 +518,6 @@ static void gl847_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
const ScanSession& session)
{
DBG_HELPER_ARGS(dbg, "exposure_time=%d", exposure_time);
GenesysRegister *r;
gl847_setup_sensor(dev, sensor, reg);
@ -534,63 +525,58 @@ static void gl847_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
/* enable shading */
regs_set_optical_off(dev->model->asic_type, *reg);
r = sanei_genesys_get_address(reg, REG_0x01);
r->value |= REG_0x01_SHDAREA;
reg->find_reg(REG_0x01).value |= REG_0x01_SHDAREA;
if (has_flag(session.params.flags, ScanFlag::DISABLE_SHADING) ||
has_flag(dev->model->flags, ModelFlag::NO_CALIBRATION))
{
r->value &= ~REG_0x01_DVDSET;
reg->find_reg(REG_0x01).value &= ~REG_0x01_DVDSET;
}
else
{
r->value |= REG_0x01_DVDSET;
reg->find_reg(REG_0x01).value |= REG_0x01_DVDSET;
}
r = sanei_genesys_get_address (reg, REG_0x03);
r->value &= ~REG_0x03_AVEENB;
reg->find_reg(REG_0x03).value &= ~REG_0x03_AVEENB;
sanei_genesys_set_lamp_power(dev, sensor, *reg,
!has_flag(session.params.flags, ScanFlag::DISABLE_LAMP));
/* BW threshold */
r = sanei_genesys_get_address (reg, 0x2e);
r->value = dev->settings.threshold;
r = sanei_genesys_get_address (reg, 0x2f);
r->value = dev->settings.threshold;
// BW threshold
reg->set8(0x2e, dev->settings.threshold);
reg->set8(0x2f, dev->settings.threshold);
/* monochrome / color scan */
r = sanei_genesys_get_address (reg, REG_0x04);
switch (session.params.depth) {
case 8:
r->value &= ~(REG_0x04_LINEART | REG_0x04_BITSET);
reg->find_reg(REG_0x04).value &= ~(REG_0x04_LINEART | REG_0x04_BITSET);
break;
case 16:
r->value &= ~REG_0x04_LINEART;
r->value |= REG_0x04_BITSET;
reg->find_reg(REG_0x04).value &= ~REG_0x04_LINEART;
reg->find_reg(REG_0x04).value |= REG_0x04_BITSET;
break;
}
r->value &= ~(REG_0x04_FILTER | REG_0x04_AFEMOD);
reg->find_reg(REG_0x04).value &= ~(REG_0x04_FILTER | REG_0x04_AFEMOD);
if (session.params.channels == 1)
{
switch (session.params.color_filter)
{
case ColorFilter::RED:
r->value |= 0x14;
reg->find_reg(REG_0x04).value |= 0x14;
break;
case ColorFilter::BLUE:
r->value |= 0x1c;
reg->find_reg(REG_0x04).value |= 0x1c;
break;
case ColorFilter::GREEN:
r->value |= 0x18;
reg->find_reg(REG_0x04).value |= 0x18;
break;
default:
break; // should not happen
}
} else {
r->value |= 0x10; // mono
reg->find_reg(REG_0x04).value |= 0x10; // mono
}
const auto& dpihw_sensor = sanei_genesys_find_sensor(dev, session.output_resolution,
@ -607,16 +593,15 @@ static void gl847_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
/* CIS scanners can do true gray by setting LEDADD */
/* we set up LEDADD only when asked */
if (dev->model->is_cis) {
r = sanei_genesys_get_address (reg, 0x87);
r->value &= ~REG_0x87_LEDADD;
reg->find_reg(0x87).value &= ~REG_0x87_LEDADD;
if (session.enable_ledadd) {
r->value |= REG_0x87_LEDADD;
reg->find_reg(0x87).value |= REG_0x87_LEDADD;
}
/* RGB weighting
r = sanei_genesys_get_address (reg, 0x01);
r->value &= ~REG_0x01_TRUEGRAY;
reg->find_reg(0x01).value &= ~REG_0x01_TRUEGRAY;
if (session.enable_ledadd) {
r->value |= REG_0x01_TRUEGRAY;
reg->find_reg(0x01).value |= REG_0x01_TRUEGRAY;
}
*/
}
@ -634,8 +619,7 @@ static void gl847_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
reg->set16(REG_LPERIOD, exposure_time);
DBG(DBG_io2, "%s: exposure_time used=%d\n", __func__, exposure_time);
r = sanei_genesys_get_address (reg, 0x34);
r->value = sensor.dummy_pixel;
reg->set8(0x34, sensor.dummy_pixel);
}
void CommandSetGl847::init_regs_for_scan_session(Genesys_Device* dev, const Genesys_Sensor& sensor,
@ -773,7 +757,6 @@ void CommandSetGl847::begin_scan(Genesys_Device* dev, const Genesys_Sensor& sens
DBG_HELPER(dbg);
(void) sensor;
uint8_t val;
GenesysRegister *r;
// clear GPIO 10
if (dev->model->gpio_id != GpioId::CANON_LIDE_700F) {
@ -790,8 +773,7 @@ void CommandSetGl847::begin_scan(Genesys_Device* dev, const Genesys_Sensor& sens
val = dev->interface->read_register(REG_0x01);
val |= REG_0x01_SCAN;
dev->interface->write_register(REG_0x01, val);
r = sanei_genesys_get_address (reg, REG_0x01);
r->value = val;
reg->set8(REG_0x01, val);
scanner_start_action(*dev, start_motor);

Wyświetl plik

@ -219,16 +219,6 @@ private:
/* common functions needed by low level specific functions */
/*--------------------------------------------------------------------------*/
inline GenesysRegister* sanei_genesys_get_address(Genesys_Register_Set* regs, uint16_t addr)
{
auto* ret = regs->find_reg_address(addr);
if (ret == nullptr) {
DBG(DBG_error, "%s: failed to find address for register 0x%02x, crash expected !\n",
__func__, addr);
}
return ret;
}
extern void sanei_genesys_init_cmd_set(Genesys_Device* dev);
// reads the status of the scanner