kopia lustrzana https://gitlab.com/sane-project/backends
genesys: Route sleep calls through low level scanner interface
rodzic
521c042889
commit
e2e3ea0947
|
@ -1532,11 +1532,11 @@ static void genesys_shading_calibration_impl(Genesys_Device* dev, const Genesys_
|
||||||
|
|
||||||
if (is_dark) {
|
if (is_dark) {
|
||||||
// wait some time to let lamp to get dark
|
// wait some time to let lamp to get dark
|
||||||
sanei_genesys_sleep_ms(200);
|
dev->interface->sleep_ms(200);
|
||||||
} else if (dev->model->flags & GENESYS_FLAG_DARK_CALIBRATION) {
|
} else if (dev->model->flags & GENESYS_FLAG_DARK_CALIBRATION) {
|
||||||
// make sure lamp is bright again
|
// make sure lamp is bright again
|
||||||
// FIXME: what about scanners that take a long time to warm the lamp?
|
// FIXME: what about scanners that take a long time to warm the lamp?
|
||||||
sanei_genesys_sleep_ms(500);
|
dev->interface->sleep_ms(500);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool start_motor = !is_dark;
|
bool start_motor = !is_dark;
|
||||||
|
@ -2986,7 +2986,7 @@ static void genesys_warmup_lamp(Genesys_Device* dev)
|
||||||
|
|
||||||
dev->cmd_set->end_scan(dev, &dev->reg, true);
|
dev->cmd_set->end_scan(dev, &dev->reg, true);
|
||||||
|
|
||||||
sanei_genesys_sleep_ms(1000);
|
dev->interface->sleep_ms(1000);
|
||||||
seconds++;
|
seconds++;
|
||||||
|
|
||||||
dev->cmd_set->begin_scan(dev, sensor, &dev->reg, false);
|
dev->cmd_set->begin_scan(dev, sensor, &dev->reg, false);
|
||||||
|
@ -3043,10 +3043,9 @@ static void genesys_warmup_lamp(Genesys_Device* dev)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* sleep another second before next loop */
|
/* sleep another second before next loop */
|
||||||
sanei_genesys_sleep_ms(1000);
|
dev->interface->sleep_ms(1000);
|
||||||
seconds++;
|
seconds++;
|
||||||
}
|
} while (seconds < WARMUP_TIME);
|
||||||
while (seconds < WARMUP_TIME);
|
|
||||||
|
|
||||||
if (seconds >= WARMUP_TIME)
|
if (seconds >= WARMUP_TIME)
|
||||||
{
|
{
|
||||||
|
@ -3188,8 +3187,8 @@ static void genesys_start_scan(Genesys_Device* dev, bool lamp_off)
|
||||||
+ dev->reg.get8(0x3f);
|
+ dev->reg.get8(0x3f);
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
// wait some time between each test to avoid overloading USB and CPU
|
// wait some time between each test to avoid overloading USB and CPU
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
sanei_genesys_read_feed_steps (dev, &steps);
|
sanei_genesys_read_feed_steps (dev, &steps);
|
||||||
}
|
}
|
||||||
while (steps < expected);
|
while (steps < expected);
|
||||||
|
@ -3199,11 +3198,10 @@ static void genesys_start_scan(Genesys_Device* dev, bool lamp_off)
|
||||||
// we wait for at least one word of valid scan data
|
// we wait for at least one word of valid scan data
|
||||||
// this is also done in sanei_genesys_read_data_from_scanner -- pierre
|
// this is also done in sanei_genesys_read_data_from_scanner -- pierre
|
||||||
if (!dev->model->is_sheetfed) {
|
if (!dev->model->is_sheetfed) {
|
||||||
do
|
do {
|
||||||
{
|
dev->interface->sleep_ms(100);
|
||||||
sanei_genesys_sleep_ms(100);
|
|
||||||
sanei_genesys_read_valid_words(dev, &steps);
|
sanei_genesys_read_valid_words(dev, &steps);
|
||||||
}
|
}
|
||||||
while (steps < 1);
|
while (steps < 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1062,7 +1062,7 @@ static void gl124_stop_action(Genesys_Device* dev)
|
||||||
dev->reg.set8(REG_0x01, val);
|
dev->reg.set8(REG_0x01, val);
|
||||||
dev->interface->write_register(REG_0x01, val);
|
dev->interface->write_register(REG_0x01, val);
|
||||||
|
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
|
|
||||||
loop = 10;
|
loop = 10;
|
||||||
while (loop > 0)
|
while (loop > 0)
|
||||||
|
@ -1079,7 +1079,7 @@ static void gl124_stop_action(Genesys_Device* dev)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
loop--;
|
loop--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1199,7 +1199,7 @@ void CommandSetGl124::rewind(Genesys_Device* dev) const
|
||||||
begin_scan(dev, sensor, &dev->reg, true);
|
begin_scan(dev, sensor, &dev->reg, true);
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
byte = dev->interface->read_register(REG_0x100);
|
byte = dev->interface->read_register(REG_0x100);
|
||||||
} while (byte & REG_0x100_MOTMFLG);
|
} while (byte & REG_0x100_MOTMFLG);
|
||||||
end_scan(dev, &dev->reg, true);
|
end_scan(dev, &dev->reg, true);
|
||||||
|
@ -1235,7 +1235,7 @@ void CommandSetGl124::slow_back_home(Genesys_Device* dev, bool wait_until_home)
|
||||||
{
|
{
|
||||||
sanei_genesys_print_status (val);
|
sanei_genesys_print_status (val);
|
||||||
}
|
}
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
|
|
||||||
// second is reliable
|
// second is reliable
|
||||||
val = sanei_genesys_get_status(dev);
|
val = sanei_genesys_get_status(dev);
|
||||||
|
@ -1321,7 +1321,7 @@ void CommandSetGl124::slow_back_home(Genesys_Device* dev, bool wait_until_home)
|
||||||
dev->scanhead_position_in_steps = 0;
|
dev->scanhead_position_in_steps = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
++loop;
|
++loop;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1605,11 +1605,11 @@ void CommandSetGl124::wait_for_motor_stop(Genesys_Device* dev) const
|
||||||
return;
|
return;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
sanei_genesys_sleep_ms(10);
|
dev->interface->sleep_ms(10);
|
||||||
val = sanei_genesys_get_status(dev);
|
val = sanei_genesys_get_status(dev);
|
||||||
val40 = dev->interface->read_register(REG_0x100);
|
val40 = dev->interface->read_register(REG_0x100);
|
||||||
} while ((val & MOTORENB) ||(val40 & REG_0x100_MOTMFLG));
|
} while ((val & MOTORENB) ||(val40 & REG_0x100_MOTMFLG));
|
||||||
sanei_genesys_sleep_ms(50);
|
dev->interface->sleep_ms(50);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @brief set up registers for the actual scan
|
/** @brief set up registers for the actual scan
|
||||||
|
|
|
@ -887,7 +887,7 @@ static void gl646_wm_hp3670(Genesys_Device* dev, const Genesys_Sensor& sensor, u
|
||||||
{
|
{
|
||||||
case AFE_INIT:
|
case AFE_INIT:
|
||||||
dev->interface->write_fe_register(0x04, 0x80);
|
dev->interface->write_fe_register(0x04, 0x80);
|
||||||
sanei_genesys_sleep_ms(200);
|
dev->interface->sleep_ms(200);
|
||||||
dev->interface->write_register(0x50, 0x00);
|
dev->interface->write_register(0x50, 0x00);
|
||||||
dev->frontend = dev->frontend_initial;
|
dev->frontend = dev->frontend_initial;
|
||||||
dev->interface->write_fe_register(0x01, dev->frontend.regs.get_value(0x01));
|
dev->interface->write_fe_register(0x01, dev->frontend.regs.get_value(0x01));
|
||||||
|
@ -1156,9 +1156,9 @@ void CommandSetGl646::load_document(Genesys_Device* dev) const
|
||||||
{
|
{
|
||||||
DBG(DBG_warn, "%s: no paper detected\n", __func__);
|
DBG(DBG_warn, "%s: no paper detected\n", __func__);
|
||||||
}
|
}
|
||||||
sanei_genesys_sleep_ms(200);
|
dev->interface->sleep_ms(200);
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
while (((val & 0x04) != 0x04) && (count < 300)); /* 1 min time out */
|
while (((val & 0x04) != 0x04) && (count < 300)); /* 1 min time out */
|
||||||
if (count == 300)
|
if (count == 300)
|
||||||
{
|
{
|
||||||
|
@ -1210,7 +1210,7 @@ void CommandSetGl646::load_document(Genesys_Device* dev) const
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
val = sanei_genesys_get_status(dev);
|
val = sanei_genesys_get_status(dev);
|
||||||
sanei_genesys_sleep_ms(200);
|
dev->interface->sleep_ms(200);
|
||||||
count++;
|
count++;
|
||||||
} while ((val & REG_0x41_MOTMFLG) && (count < 300));
|
} while ((val & REG_0x41_MOTMFLG) && (count < 300));
|
||||||
|
|
||||||
|
@ -1332,7 +1332,7 @@ void CommandSetGl646::eject_document(Genesys_Device* dev) const
|
||||||
/* wait for motor to stop */
|
/* wait for motor to stop */
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
sanei_genesys_sleep_ms(200);
|
dev->interface->sleep_ms(200);
|
||||||
state = sanei_genesys_get_status(dev);
|
state = sanei_genesys_get_status(dev);
|
||||||
}
|
}
|
||||||
while (state & REG_0x41_MOTMFLG);
|
while (state & REG_0x41_MOTMFLG);
|
||||||
|
@ -1384,7 +1384,7 @@ void CommandSetGl646::eject_document(Genesys_Device* dev) const
|
||||||
state = sanei_genesys_get_status(dev);
|
state = sanei_genesys_get_status(dev);
|
||||||
|
|
||||||
print_status (state);
|
print_status (state);
|
||||||
sanei_genesys_sleep_ms(200);
|
dev->interface->sleep_ms(200);
|
||||||
count++;
|
count++;
|
||||||
} while (((state & REG_0x41_HOMESNR) == 0) && (count < 150));
|
} while (((state & REG_0x41_HOMESNR) == 0) && (count < 150));
|
||||||
|
|
||||||
|
@ -1469,9 +1469,9 @@ static void end_scan_impl(Genesys_Device* dev, Genesys_Register_Set* reg, bool c
|
||||||
break; /* leave for loop */
|
break; /* leave for loop */
|
||||||
}
|
}
|
||||||
|
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else /* flat bed scanners */
|
else /* flat bed scanners */
|
||||||
{
|
{
|
||||||
|
@ -1500,9 +1500,9 @@ static void end_scan_impl(Genesys_Device* dev, Genesys_Register_Set* reg, bool c
|
||||||
break; /* leave while loop */
|
break; /* leave while loop */
|
||||||
}
|
}
|
||||||
|
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DBG(DBG_proc, "%s: end (i=%u)\n", __func__, i);
|
DBG(DBG_proc, "%s: end (i=%u)\n", __func__, i);
|
||||||
|
@ -1545,7 +1545,7 @@ void CommandSetGl646::slow_back_home(Genesys_Device* dev, bool wait_until_home)
|
||||||
/* stop motor if needed */
|
/* stop motor if needed */
|
||||||
if (val & REG_0x41_MOTMFLG) {
|
if (val & REG_0x41_MOTMFLG) {
|
||||||
gl646_stop_motor(dev);
|
gl646_stop_motor(dev);
|
||||||
sanei_genesys_sleep_ms(200);
|
dev->interface->sleep_ms(200);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* when scanhead is moving then wait until scanhead stops or timeout */
|
/* when scanhead is moving then wait until scanhead stops or timeout */
|
||||||
|
@ -1561,7 +1561,7 @@ void CommandSetGl646::slow_back_home(Genesys_Device* dev, bool wait_until_home)
|
||||||
DBG(DBG_info, "%s: already at home and not moving\n", __func__);
|
DBG(DBG_info, "%s: already at home and not moving\n", __func__);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!i) /* the loop counted down to 0, scanner still is busy */
|
if (!i) /* the loop counted down to 0, scanner still is busy */
|
||||||
|
@ -1625,12 +1625,12 @@ void CommandSetGl646::slow_back_home(Genesys_Device* dev, bool wait_until_home)
|
||||||
{
|
{
|
||||||
DBG(DBG_info, "%s: reached home position\n", __func__);
|
DBG(DBG_info, "%s: reached home position\n", __func__);
|
||||||
DBG(DBG_proc, "%s: end\n", __func__);
|
DBG(DBG_proc, "%s: end\n", __func__);
|
||||||
sanei_genesys_sleep_ms(500);
|
dev->interface->sleep_ms(500);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
++loop;
|
++loop;
|
||||||
}
|
}
|
||||||
|
|
||||||
// when we come here then the scanner needed too much time for this, so we better
|
// when we come here then the scanner needed too much time for this, so we better
|
||||||
// stop the motor
|
// stop the motor
|
||||||
|
@ -2750,7 +2750,7 @@ static void gl646_repark_head(Genesys_Device* dev)
|
||||||
expected = dev->reg.get24(REG_FEEDL);
|
expected = dev->reg.get24(REG_FEEDL);
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
sanei_genesys_read_feed_steps (dev, &steps);
|
sanei_genesys_read_feed_steps (dev, &steps);
|
||||||
}
|
}
|
||||||
while (steps < expected);
|
while (steps < expected);
|
||||||
|
@ -2817,7 +2817,7 @@ void CommandSetGl646::init(Genesys_Device* dev) const
|
||||||
|
|
||||||
// ASIC reset
|
// ASIC reset
|
||||||
dev->interface->write_register(0x0e, 0x00);
|
dev->interface->write_register(0x0e, 0x00);
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
|
|
||||||
// Write initial registers
|
// Write initial registers
|
||||||
dev->interface->write_registers(dev->reg);
|
dev->interface->write_registers(dev->reg);
|
||||||
|
|
|
@ -1702,7 +1702,7 @@ void CommandSetGl841::save_power(Genesys_Device* dev, bool enable) const
|
||||||
uint8_t val = dev->interface->read_register(REG_0x6D);
|
uint8_t val = dev->interface->read_register(REG_0x6D);
|
||||||
dev->interface->write_register(REG_0x6D, val | 0x80);
|
dev->interface->write_register(REG_0x6D, val | 0x80);
|
||||||
|
|
||||||
sanei_genesys_sleep_ms(1);
|
dev->interface->sleep_ms(1);
|
||||||
|
|
||||||
/*enable GPIO9*/
|
/*enable GPIO9*/
|
||||||
val = dev->interface->read_register(REG_0x6C);
|
val = dev->interface->read_register(REG_0x6C);
|
||||||
|
@ -1716,7 +1716,7 @@ void CommandSetGl841::save_power(Genesys_Device* dev, bool enable) const
|
||||||
val = dev->interface->read_register(REG_0x6B);
|
val = dev->interface->read_register(REG_0x6B);
|
||||||
dev->interface->write_register(REG_0x6B, val & ~REG_0x6B_GPO18);
|
dev->interface->write_register(REG_0x6B, val & ~REG_0x6B_GPO18);
|
||||||
|
|
||||||
sanei_genesys_sleep_ms(1);
|
dev->interface->sleep_ms(1);
|
||||||
|
|
||||||
val = dev->interface->read_register(REG_0x6D);
|
val = dev->interface->read_register(REG_0x6D);
|
||||||
dev->interface->write_register(REG_0x6D, val & ~0x80);
|
dev->interface->write_register(REG_0x6D, val & ~0x80);
|
||||||
|
@ -1745,7 +1745,7 @@ void CommandSetGl841::save_power(Genesys_Device* dev, bool enable) const
|
||||||
uint8_t val = dev->interface->read_register(REG_0x6D);
|
uint8_t val = dev->interface->read_register(REG_0x6D);
|
||||||
dev->interface->write_register(REG_0x6D, val | 0x80);
|
dev->interface->write_register(REG_0x6D, val | 0x80);
|
||||||
|
|
||||||
sanei_genesys_sleep_ms(10);
|
dev->interface->sleep_ms(10);
|
||||||
|
|
||||||
/*disable GPIO9*/
|
/*disable GPIO9*/
|
||||||
val = dev->interface->read_register(REG_0x6C);
|
val = dev->interface->read_register(REG_0x6C);
|
||||||
|
@ -1894,8 +1894,8 @@ static void gl841_stop_action(Genesys_Device* dev)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
loop--;
|
loop--;
|
||||||
}
|
}
|
||||||
|
|
||||||
throw SaneException(SANE_STATUS_IO_ERROR, "could not stop motor");
|
throw SaneException(SANE_STATUS_IO_ERROR, "could not stop motor");
|
||||||
|
@ -1968,7 +1968,7 @@ void CommandSetGl841::eject_document(Genesys_Device* dev) const
|
||||||
DBG(DBG_proc, "%s: finished\n", __func__);
|
DBG(DBG_proc, "%s: finished\n", __func__);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
--loop;
|
--loop;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2005,7 +2005,7 @@ void CommandSetGl841::eject_document(Genesys_Device* dev) const
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
++loop;
|
++loop;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2028,10 +2028,10 @@ void CommandSetGl841::load_document(Genesys_Device* dev) const
|
||||||
dev->document = true;
|
dev->document = true;
|
||||||
|
|
||||||
// give user some time to place document correctly
|
// give user some time to place document correctly
|
||||||
sanei_genesys_sleep_ms(1000);
|
dev->interface->sleep_ms(1000);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
--loop;
|
--loop;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2195,7 +2195,7 @@ static void gl841_feed(Genesys_Device* dev, int steps)
|
||||||
dev->scanhead_position_in_steps += steps;
|
dev->scanhead_position_in_steps += steps;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
++loop;
|
++loop;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2240,7 +2240,7 @@ void CommandSetGl841::slow_back_home(Genesys_Device* dev, bool wait_until_home)
|
||||||
{
|
{
|
||||||
sanei_genesys_print_status (val);
|
sanei_genesys_print_status (val);
|
||||||
}
|
}
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
|
|
||||||
// second is reliable
|
// second is reliable
|
||||||
val = sanei_genesys_get_status(dev);
|
val = sanei_genesys_get_status(dev);
|
||||||
|
@ -2307,7 +2307,7 @@ void CommandSetGl841::slow_back_home(Genesys_Device* dev, bool wait_until_home)
|
||||||
DBG(DBG_proc, "%s: finished\n", __func__);
|
DBG(DBG_proc, "%s: finished\n", __func__);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
++loop;
|
++loop;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1331,7 +1331,7 @@ static void gl843_stop_action_no_move(Genesys_Device* dev, Genesys_Register_Set*
|
||||||
val &= ~REG_0x01_SCAN;
|
val &= ~REG_0x01_SCAN;
|
||||||
reg->set8(REG_0x01, val);
|
reg->set8(REG_0x01, val);
|
||||||
dev->interface->write_register(REG_0x01, val);
|
dev->interface->write_register(REG_0x01, val);
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gl843_stop_action(Genesys_Device* dev)
|
static void gl843_stop_action(Genesys_Device* dev)
|
||||||
|
@ -1361,7 +1361,7 @@ static void gl843_stop_action(Genesys_Device* dev)
|
||||||
dev->reg.set8(REG_0x01, val);
|
dev->reg.set8(REG_0x01, val);
|
||||||
dev->interface->write_register(REG_0x01, val);
|
dev->interface->write_register(REG_0x01, val);
|
||||||
|
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
|
|
||||||
loop = 10;
|
loop = 10;
|
||||||
while (loop > 0)
|
while (loop > 0)
|
||||||
|
@ -1380,7 +1380,7 @@ static void gl843_stop_action(Genesys_Device* dev)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
loop--;
|
loop--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1803,7 +1803,7 @@ static void gl843_park_xpa_lamp(Genesys_Device* dev)
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
++loop;
|
++loop;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1831,7 +1831,7 @@ void CommandSetGl843::slow_back_home(Genesys_Device* dev, bool wait_until_home)
|
||||||
// first read gives HOME_SENSOR true
|
// first read gives HOME_SENSOR true
|
||||||
val = sanei_genesys_get_status(dev);
|
val = sanei_genesys_get_status(dev);
|
||||||
|
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
|
|
||||||
// second is reliable
|
// second is reliable
|
||||||
val = sanei_genesys_get_status(dev);
|
val = sanei_genesys_get_status(dev);
|
||||||
|
@ -1911,7 +1911,7 @@ void CommandSetGl843::slow_back_home(Genesys_Device* dev, bool wait_until_home)
|
||||||
DBG(DBG_proc, "%s: finished\n", __func__);
|
DBG(DBG_proc, "%s: finished\n", __func__);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
++loop;
|
++loop;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2103,7 +2103,7 @@ static void gl843_feed(Genesys_Device* dev, unsigned int steps)
|
||||||
} while (!(val & FEEDFSH));
|
} while (!(val & FEEDFSH));
|
||||||
|
|
||||||
// looks like the scanner locks up if we scan immediately after feeding
|
// looks like the scanner locks up if we scan immediately after feeding
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
// init registers for shading calibration shading calibration is done at dpihw
|
// init registers for shading calibration shading calibration is done at dpihw
|
||||||
|
@ -3024,7 +3024,7 @@ void CommandSetGl843::asic_boot(Genesys_Device* dev, bool cold) const
|
||||||
gl843_init_gpio(dev);
|
gl843_init_gpio(dev);
|
||||||
|
|
||||||
gl843_feed (dev, 300);
|
gl843_feed (dev, 300);
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* *
|
/* *
|
||||||
|
|
|
@ -308,9 +308,8 @@ static void gl846_set_adi_fe(Genesys_Device* dev, uint8_t set)
|
||||||
|
|
||||||
// wait for FE to be ready
|
// wait for FE to be ready
|
||||||
std::uint8_t val8 = sanei_genesys_get_status(dev);
|
std::uint8_t val8 = sanei_genesys_get_status(dev);
|
||||||
while (val8 & REG_0x41_FEBUSY)
|
while (val8 & REG_0x41_FEBUSY) {
|
||||||
{
|
dev->interface->sleep_ms(10);
|
||||||
sanei_genesys_sleep_ms(10);
|
|
||||||
val8 = sanei_genesys_get_status(dev);
|
val8 = sanei_genesys_get_status(dev);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -898,7 +897,7 @@ static void gl846_stop_action(Genesys_Device* dev)
|
||||||
val &= ~REG_0x01_SCAN;
|
val &= ~REG_0x01_SCAN;
|
||||||
dev->reg.set8(REG_0x01, val);
|
dev->reg.set8(REG_0x01, val);
|
||||||
dev->interface->write_register(REG_0x01, val);
|
dev->interface->write_register(REG_0x01, val);
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
|
|
||||||
loop = 10;
|
loop = 10;
|
||||||
while (loop > 0)
|
while (loop > 0)
|
||||||
|
@ -917,7 +916,7 @@ static void gl846_stop_action(Genesys_Device* dev)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
loop--;
|
loop--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -990,7 +989,7 @@ void CommandSetGl846::slow_back_home(Genesys_Device* dev, bool wait_until_home)
|
||||||
{
|
{
|
||||||
sanei_genesys_print_status (val);
|
sanei_genesys_print_status (val);
|
||||||
}
|
}
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
|
|
||||||
// second is reliable
|
// second is reliable
|
||||||
val = sanei_genesys_get_status(dev);
|
val = sanei_genesys_get_status(dev);
|
||||||
|
@ -1078,7 +1077,7 @@ void CommandSetGl846::slow_back_home(Genesys_Device* dev, bool wait_until_home)
|
||||||
dev->scanhead_position_in_steps = 0;
|
dev->scanhead_position_in_steps = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
++loop;
|
++loop;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -331,7 +331,7 @@ static void gl847_set_ad_fe(Genesys_Device* dev, uint8_t set)
|
||||||
// wait for FE to be ready
|
// wait for FE to be ready
|
||||||
std::uint8_t val8 = sanei_genesys_get_status(dev);
|
std::uint8_t val8 = sanei_genesys_get_status(dev);
|
||||||
while (val8 & REG_0x41_FEBUSY) {
|
while (val8 & REG_0x41_FEBUSY) {
|
||||||
sanei_genesys_sleep_ms(10);
|
dev->interface->sleep_ms(10);
|
||||||
val8 = sanei_genesys_get_status(dev);
|
val8 = sanei_genesys_get_status(dev);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -904,7 +904,7 @@ static void gl847_stop_action(Genesys_Device* dev)
|
||||||
dev->reg.set8(REG_0x01, val);
|
dev->reg.set8(REG_0x01, val);
|
||||||
dev->interface->write_register(REG_0x01, val);
|
dev->interface->write_register(REG_0x01, val);
|
||||||
|
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
|
|
||||||
loop = 10;
|
loop = 10;
|
||||||
while (loop > 0)
|
while (loop > 0)
|
||||||
|
@ -923,7 +923,7 @@ static void gl847_stop_action(Genesys_Device* dev)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
loop--;
|
loop--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -997,7 +997,7 @@ static void gl847_rewind(Genesys_Device* dev)
|
||||||
gl847_begin_scan(dev, dev->reg, true);
|
gl847_begin_scan(dev, dev->reg, true);
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
byte = dev->interface->read_register(REG_0x40);
|
byte = dev->interface->read_register(REG_0x40);
|
||||||
} while (byte & REG_0x40_MOTMFLG);
|
} while (byte & REG_0x40_MOTMFLG);
|
||||||
|
|
||||||
|
@ -1035,7 +1035,7 @@ void CommandSetGl847::slow_back_home(Genesys_Device* dev, bool wait_until_home)
|
||||||
{
|
{
|
||||||
sanei_genesys_print_status (val);
|
sanei_genesys_print_status (val);
|
||||||
}
|
}
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
|
|
||||||
// second is reliable
|
// second is reliable
|
||||||
val = sanei_genesys_get_status(dev);
|
val = sanei_genesys_get_status(dev);
|
||||||
|
@ -1121,7 +1121,7 @@ void CommandSetGl847::slow_back_home(Genesys_Device* dev, bool wait_until_home)
|
||||||
dev->scanhead_position_in_steps = 0;
|
dev->scanhead_position_in_steps = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
++loop;
|
++loop;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -394,14 +394,14 @@ bool sanei_genesys_is_buffer_empty(Genesys_Device* dev)
|
||||||
DBG_HELPER(dbg);
|
DBG_HELPER(dbg);
|
||||||
uint8_t val = 0;
|
uint8_t val = 0;
|
||||||
|
|
||||||
sanei_genesys_sleep_ms(1);
|
dev->interface->sleep_ms(1);
|
||||||
val = sanei_genesys_get_status(dev);
|
val = sanei_genesys_get_status(dev);
|
||||||
|
|
||||||
if (dev->cmd_set->test_buffer_empty_bit(val)) {
|
if (dev->cmd_set->test_buffer_empty_bit(val)) {
|
||||||
/* fix timing issue on USB3 (or just may be too fast) hardware
|
/* fix timing issue on USB3 (or just may be too fast) hardware
|
||||||
* spotted by John S. Weber <jweber53@gmail.com>
|
* spotted by John S. Weber <jweber53@gmail.com>
|
||||||
*/
|
*/
|
||||||
sanei_genesys_sleep_ms(1);
|
dev->interface->sleep_ms(1);
|
||||||
DBG(DBG_io2, "%s: buffer is empty\n", __func__);
|
DBG(DBG_io2, "%s: buffer is empty\n", __func__);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -423,7 +423,7 @@ void wait_until_buffer_non_empty(Genesys_Device* dev, bool check_status_twice)
|
||||||
}
|
}
|
||||||
|
|
||||||
bool empty = sanei_genesys_is_buffer_empty(dev);
|
bool empty = sanei_genesys_is_buffer_empty(dev);
|
||||||
sanei_genesys_sleep_ms(10);
|
dev->interface->sleep_ms(10);
|
||||||
if (!empty)
|
if (!empty)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -439,7 +439,7 @@ void wait_until_has_valid_words(Genesys_Device* dev)
|
||||||
sanei_genesys_read_valid_words(dev, &words);
|
sanei_genesys_read_valid_words(dev, &words);
|
||||||
if (words != 0)
|
if (words != 0)
|
||||||
break;
|
break;
|
||||||
sanei_genesys_sleep_ms(sleep_time_ms);
|
dev->interface->sleep_ms(sleep_time_ms);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (words == 0) {
|
if (words == 0) {
|
||||||
|
@ -1589,7 +1589,7 @@ void sanei_genesys_wait_for_home(Genesys_Device* dev)
|
||||||
// read initial status, if head isn't at home and motor is on we are parking, so we wait.
|
// read initial status, if head isn't at home and motor is on we are parking, so we wait.
|
||||||
// gl847/gl124 need 2 reads for reliable results
|
// gl847/gl124 need 2 reads for reliable results
|
||||||
val = sanei_genesys_get_status(dev);
|
val = sanei_genesys_get_status(dev);
|
||||||
sanei_genesys_sleep_ms(10);
|
dev->interface->sleep_ms(10);
|
||||||
val = sanei_genesys_get_status(dev);
|
val = sanei_genesys_get_status(dev);
|
||||||
|
|
||||||
/* if at home, return */
|
/* if at home, return */
|
||||||
|
@ -1604,7 +1604,7 @@ void sanei_genesys_wait_for_home(Genesys_Device* dev)
|
||||||
unsigned elapsed_ms = 0;
|
unsigned elapsed_ms = 0;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
sanei_genesys_sleep_ms(100);
|
dev->interface->sleep_ms(100);
|
||||||
elapsed_ms += 100;
|
elapsed_ms += 100;
|
||||||
|
|
||||||
val = sanei_genesys_get_status(dev);
|
val = sanei_genesys_get_status(dev);
|
||||||
|
@ -1995,19 +1995,6 @@ void sanei_genesys_load_lut(unsigned char* lut,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sanei_genesys_usleep(unsigned int useconds)
|
|
||||||
{
|
|
||||||
if (sanei_usb_is_replay_mode_enabled()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
usleep(useconds);
|
|
||||||
}
|
|
||||||
|
|
||||||
void sanei_genesys_sleep_ms(unsigned int milliseconds)
|
|
||||||
{
|
|
||||||
sanei_genesys_usleep(milliseconds * 1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
static std::unique_ptr<std::vector<std::function<void()>>> s_functions_run_at_backend_exit;
|
static std::unique_ptr<std::vector<std::function<void()>>> s_functions_run_at_backend_exit;
|
||||||
|
|
||||||
void add_function_to_run_at_backend_exit(std::function<void()> function)
|
void add_function_to_run_at_backend_exit(std::function<void()> function)
|
||||||
|
|
|
@ -528,12 +528,6 @@ inline T clamp(const T& value, const T& lo, const T& hi)
|
||||||
/* ASIC specific functions declarations */
|
/* ASIC specific functions declarations */
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
// same as usleep, except that it does nothing if testing mode is enabled
|
|
||||||
extern void sanei_genesys_usleep(unsigned int useconds);
|
|
||||||
|
|
||||||
// same as sanei_genesys_usleep just that the duration is in milliseconds
|
|
||||||
extern void sanei_genesys_sleep_ms(unsigned int milliseconds);
|
|
||||||
|
|
||||||
void add_function_to_run_at_backend_exit(std::function<void()> function);
|
void add_function_to_run_at_backend_exit(std::function<void()> function);
|
||||||
|
|
||||||
// calls functions added via add_function_to_run_at_backend_exit() in reverse order of being
|
// calls functions added via add_function_to_run_at_backend_exit() in reverse order of being
|
||||||
|
|
|
@ -88,6 +88,14 @@ public:
|
||||||
|
|
||||||
virtual IUsbDevice& get_usb_device() = 0;
|
virtual IUsbDevice& get_usb_device() = 0;
|
||||||
|
|
||||||
|
// sleeps the specified number of microseconds. Will not sleep if testing mode is enabled.
|
||||||
|
virtual void sleep_us(unsigned microseconds) = 0;
|
||||||
|
|
||||||
|
void sleep_ms(unsigned milliseconds)
|
||||||
|
{
|
||||||
|
sleep_us(milliseconds * 1000);
|
||||||
|
}
|
||||||
|
|
||||||
virtual void record_test_message(const char* msg) = 0;
|
virtual void record_test_message(const char* msg) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -45,6 +45,7 @@
|
||||||
|
|
||||||
#include "scanner_interface_usb.h"
|
#include "scanner_interface_usb.h"
|
||||||
#include "low.h"
|
#include "low.h"
|
||||||
|
#include <thread>
|
||||||
|
|
||||||
namespace genesys {
|
namespace genesys {
|
||||||
|
|
||||||
|
@ -480,6 +481,14 @@ IUsbDevice& ScannerInterfaceUsb::get_usb_device()
|
||||||
return usb_dev_;
|
return usb_dev_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ScannerInterfaceUsb::sleep_us(unsigned microseconds)
|
||||||
|
{
|
||||||
|
if (sanei_usb_is_replay_mode_enabled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
std::this_thread::sleep_for(std::chrono::microseconds{microseconds});
|
||||||
|
}
|
||||||
|
|
||||||
void ScannerInterfaceUsb::record_test_message(const char* msg)
|
void ScannerInterfaceUsb::record_test_message(const char* msg)
|
||||||
{
|
{
|
||||||
sanei_usb_testing_record_message(msg);
|
sanei_usb_testing_record_message(msg);
|
||||||
|
|
|
@ -76,9 +76,12 @@ public:
|
||||||
std::uint16_t read_fe_register(std::uint8_t address) override;
|
std::uint16_t read_fe_register(std::uint8_t address) override;
|
||||||
void write_fe_register(std::uint8_t address, std::uint16_t value) override;
|
void write_fe_register(std::uint8_t address, std::uint16_t value) override;
|
||||||
|
|
||||||
|
IUsbDevice& get_usb_device() override;
|
||||||
|
|
||||||
|
void sleep_us(unsigned microseconds) override;
|
||||||
|
|
||||||
void record_test_message(const char* msg) override;
|
void record_test_message(const char* msg) override;
|
||||||
|
|
||||||
virtual IUsbDevice& get_usb_device() override;
|
|
||||||
private:
|
private:
|
||||||
Genesys_Device* dev_;
|
Genesys_Device* dev_;
|
||||||
UsbDevice usb_dev_;
|
UsbDevice usb_dev_;
|
||||||
|
|
|
@ -132,6 +132,11 @@ IUsbDevice& TestScannerInterface::get_usb_device()
|
||||||
return usb_dev_;
|
return usb_dev_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TestScannerInterface::sleep_us(unsigned microseconds)
|
||||||
|
{
|
||||||
|
(void) microseconds;
|
||||||
|
}
|
||||||
|
|
||||||
void TestScannerInterface::record_test_message(const char* msg)
|
void TestScannerInterface::record_test_message(const char* msg)
|
||||||
{
|
{
|
||||||
last_test_message_ = msg;
|
last_test_message_ = msg;
|
||||||
|
|
|
@ -76,6 +76,8 @@ public:
|
||||||
|
|
||||||
IUsbDevice& get_usb_device() override;
|
IUsbDevice& get_usb_device() override;
|
||||||
|
|
||||||
|
void sleep_us(unsigned microseconds) override;
|
||||||
|
|
||||||
void record_test_message(const char* msg) override;
|
void record_test_message(const char* msg) override;
|
||||||
|
|
||||||
const std::string& last_test_message() const;
|
const std::string& last_test_message() const;
|
||||||
|
|
Ładowanie…
Reference in New Issue