kopia lustrzana https://gitlab.com/sane-project/backends
genesys: Remove duplication of motor startup
rodzic
9cd373fe6c
commit
05e3091d5f
|
@ -1016,12 +1016,6 @@ void CommandSetGl124::set_powersaving(Genesys_Device* dev, int delay /* in minut
|
|||
}
|
||||
}
|
||||
|
||||
static void gl124_start_action(Genesys_Device* dev)
|
||||
{
|
||||
DBG_HELPER(dbg);
|
||||
dev->interface->write_register(0x0f, 0x01);
|
||||
}
|
||||
|
||||
static void gl124_stop_action(Genesys_Device* dev)
|
||||
{
|
||||
DBG_HELPER(dbg);
|
||||
|
@ -1152,11 +1146,7 @@ void CommandSetGl124::begin_scan(Genesys_Device* dev, const Genesys_Sensor& sens
|
|||
val |= REG_0x01_SCAN;
|
||||
dev->interface->write_register(REG_0x01, val);
|
||||
|
||||
if (start_motor) {
|
||||
dev->interface->write_register(REG_0x0F, 1);
|
||||
} else {
|
||||
dev->interface->write_register(REG_0x0F, 0);
|
||||
}
|
||||
scanner_start_action(*dev, start_motor);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1287,7 +1277,7 @@ void CommandSetGl124::slow_back_home(Genesys_Device* dev, bool wait_until_home)
|
|||
gl124_setup_scan_gpio(dev,resolution);
|
||||
|
||||
try {
|
||||
gl124_start_action(dev);
|
||||
scanner_start_action(*dev, true);
|
||||
} catch (...) {
|
||||
catch_all_exceptions(__func__, [&]() { gl124_stop_action(dev); });
|
||||
// restore original registers
|
||||
|
@ -1393,7 +1383,7 @@ static void gl124_feed(Genesys_Device* dev, unsigned int steps, int reverse)
|
|||
dev->interface->write_registers(local_reg);
|
||||
|
||||
try {
|
||||
gl124_start_action(dev);
|
||||
scanner_start_action(*dev, true);
|
||||
} catch (...) {
|
||||
catch_all_exceptions(__func__, [&]() { gl124_stop_action (dev); });
|
||||
|
||||
|
|
|
@ -109,8 +109,6 @@ static Memory_layout layouts[]={
|
|||
}
|
||||
};
|
||||
|
||||
static void gl124_start_action(Genesys_Device* dev);
|
||||
|
||||
static void gl124_feed(Genesys_Device* dev, unsigned int steps, int reverse);
|
||||
|
||||
static void gl124_stop_action(Genesys_Device* dev);
|
||||
|
|
|
@ -122,17 +122,6 @@ print_status (uint8_t val)
|
|||
DBG(DBG_info, "status=%s\n", msg);
|
||||
}
|
||||
|
||||
/**
|
||||
* start scanner's motor
|
||||
* @param dev scanner's device
|
||||
*/
|
||||
static void gl646_start_motor(Genesys_Device* dev)
|
||||
{
|
||||
DBG_HELPER(dbg);
|
||||
dev->interface->write_register(0x0f, 0x01);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* stop scanner's motor
|
||||
* @param dev scanner's device
|
||||
|
@ -1212,8 +1201,7 @@ void CommandSetGl646::load_document(Genesys_Device* dev) const
|
|||
|
||||
dev->interface->write_registers(regs);
|
||||
|
||||
gl646_start_motor(dev);
|
||||
|
||||
scanner_start_action(*dev, true);
|
||||
|
||||
count = 0;
|
||||
do
|
||||
|
@ -1383,7 +1371,7 @@ void CommandSetGl646::eject_document(Genesys_Device* dev) const
|
|||
|
||||
dev->interface->write_registers(regs);
|
||||
|
||||
gl646_start_motor(dev);
|
||||
scanner_start_action(*dev, true);
|
||||
|
||||
/* loop until paper sensor tells paper is out, and till motor is running */
|
||||
/* use a 30 timeout */
|
||||
|
|
|
@ -1865,12 +1865,6 @@ void CommandSetGl841::set_powersaving(Genesys_Device* dev, int delay /* in minut
|
|||
dev->interface->write_registers(local_reg);
|
||||
}
|
||||
|
||||
static void gl841_start_action(Genesys_Device* dev)
|
||||
{
|
||||
DBG_HELPER(dbg);
|
||||
dev->interface->write_register(0x0f, 0x01);
|
||||
}
|
||||
|
||||
static void gl841_stop_action(Genesys_Device* dev)
|
||||
{
|
||||
DBG_HELPER(dbg);
|
||||
|
@ -1967,7 +1961,7 @@ void CommandSetGl841::eject_document(Genesys_Device* dev) const
|
|||
dev->interface->write_registers(local_reg);
|
||||
|
||||
try {
|
||||
gl841_start_action(dev);
|
||||
scanner_start_action(*dev, true);
|
||||
} catch (...) {
|
||||
catch_all_exceptions(__func__, [&]() { gl841_stop_action(dev); });
|
||||
// restore original registers
|
||||
|
@ -2161,6 +2155,7 @@ void CommandSetGl841::begin_scan(Genesys_Device* dev, const Genesys_Sensor& sens
|
|||
local_reg.init_reg(0x01, reg->get8(0x01) | REG_0x01_SCAN);
|
||||
local_reg.init_reg(0x0d, 0x01);
|
||||
|
||||
// scanner_start_action(dev, start_motor)
|
||||
if (start_motor) {
|
||||
local_reg.init_reg(0x0f, 0x01);
|
||||
} else {
|
||||
|
@ -2205,7 +2200,7 @@ static void gl841_feed(Genesys_Device* dev, int steps)
|
|||
dev->interface->write_registers(local_reg);
|
||||
|
||||
try {
|
||||
gl841_start_action(dev);
|
||||
scanner_start_action(*dev, true);
|
||||
} catch (...) {
|
||||
catch_all_exceptions(__func__, [&]() { gl841_stop_action (dev); });
|
||||
// restore original registers
|
||||
|
@ -2321,7 +2316,7 @@ void CommandSetGl841::slow_back_home(Genesys_Device* dev, bool wait_until_home)
|
|||
dev->interface->write_registers(local_reg);
|
||||
|
||||
try {
|
||||
gl841_start_action(dev);
|
||||
scanner_start_action(*dev, true);
|
||||
} catch (...) {
|
||||
catch_all_exceptions(__func__, [&]() { gl841_stop_action(dev); });
|
||||
// restore original registers
|
||||
|
|
|
@ -1318,12 +1318,6 @@ void CommandSetGl843::set_powersaving(Genesys_Device* dev, int delay /* in minut
|
|||
DBG_HELPER_ARGS(dbg, "delay = %d", delay);
|
||||
}
|
||||
|
||||
static void gl843_start_action(Genesys_Device* dev)
|
||||
{
|
||||
DBG_HELPER(dbg);
|
||||
dev->interface->write_register(0x0f, 0x01);
|
||||
}
|
||||
|
||||
static void gl843_stop_action_no_move(Genesys_Device* dev, Genesys_Register_Set* reg)
|
||||
{
|
||||
DBG_HELPER(dbg);
|
||||
|
@ -1719,11 +1713,7 @@ void CommandSetGl843::begin_scan(Genesys_Device* dev, const Genesys_Sensor& sens
|
|||
val |= REG_0x01_SCAN;
|
||||
dev->interface->write_register(REG_0x01, val);
|
||||
|
||||
if (start_motor) {
|
||||
dev->interface->write_register(REG_0x0F, 1);
|
||||
} else {
|
||||
dev->interface->write_register(REG_0x0F, 0);
|
||||
}
|
||||
scanner_start_action(*dev, start_motor);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1777,7 +1767,7 @@ static void gl843_park_xpa_lamp(Genesys_Device* dev)
|
|||
dev->interface->write_registers(local_reg);
|
||||
gl843_set_xpa_motor_power(dev, true);
|
||||
try {
|
||||
gl843_start_action(dev);
|
||||
scanner_start_action(*dev, true);
|
||||
} catch (...) {
|
||||
catch_all_exceptions(__func__, [&]() { gl843_stop_action(dev); });
|
||||
// restore original registers
|
||||
|
@ -1886,7 +1876,7 @@ void CommandSetGl843::slow_back_home(Genesys_Device* dev, bool wait_until_home)
|
|||
dev->interface->write_registers(local_reg);
|
||||
|
||||
try {
|
||||
gl843_start_action(dev);
|
||||
scanner_start_action(*dev, true);
|
||||
} catch (...) {
|
||||
catch_all_exceptions(__func__, [&]() { gl843_stop_action(dev); });
|
||||
// restore original registers
|
||||
|
@ -2102,7 +2092,7 @@ static void gl843_feed(Genesys_Device* dev, unsigned int steps)
|
|||
dev->interface->write_registers(local_reg);
|
||||
|
||||
try {
|
||||
gl843_start_action(dev);
|
||||
scanner_start_action(*dev, true);
|
||||
} catch (...) {
|
||||
catch_all_exceptions(__func__, [&]() { gl843_stop_action(dev); });
|
||||
// restore original registers
|
||||
|
|
|
@ -857,12 +857,6 @@ void CommandSetGl846::set_powersaving(Genesys_Device* dev, int delay /* in minut
|
|||
DBG_HELPER_ARGS(dbg, "delay = %d", delay);
|
||||
}
|
||||
|
||||
static void gl846_start_action(Genesys_Device* dev)
|
||||
{
|
||||
DBG_HELPER(dbg);
|
||||
dev->interface->write_register(0x0f, 0x01);
|
||||
}
|
||||
|
||||
static void gl846_stop_action(Genesys_Device* dev)
|
||||
{
|
||||
DBG_HELPER(dbg);
|
||||
|
@ -946,11 +940,7 @@ void CommandSetGl846::begin_scan(Genesys_Device* dev, const Genesys_Sensor& sens
|
|||
r = sanei_genesys_get_address (reg, REG_0x01);
|
||||
r->value = val;
|
||||
|
||||
if (start_motor) {
|
||||
dev->interface->write_register(REG_0x0F, 1);
|
||||
} else {
|
||||
dev->interface->write_register(REG_0x0F, 0);
|
||||
}
|
||||
scanner_start_action(*dev, start_motor);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1045,7 +1035,7 @@ void CommandSetGl846::slow_back_home(Genesys_Device* dev, bool wait_until_home)
|
|||
dev->interface->write_registers(local_reg);
|
||||
|
||||
try {
|
||||
gl846_start_action(dev);
|
||||
scanner_start_action(*dev, true);
|
||||
} catch (...) {
|
||||
try {
|
||||
gl846_stop_action(dev);
|
||||
|
@ -1259,7 +1249,7 @@ static void gl846_feed(Genesys_Device* dev, unsigned int steps)
|
|||
dev->interface->write_registers(local_reg);
|
||||
|
||||
try {
|
||||
gl846_start_action(dev);
|
||||
scanner_start_action(*dev, true);
|
||||
} catch (...) {
|
||||
try {
|
||||
gl846_stop_action(dev);
|
||||
|
|
|
@ -862,12 +862,6 @@ void CommandSetGl847::set_powersaving(Genesys_Device* dev, int delay /* in minut
|
|||
DBG_HELPER_ARGS(dbg, "delay = %d", delay);
|
||||
}
|
||||
|
||||
static void gl847_start_action(Genesys_Device* dev)
|
||||
{
|
||||
DBG_HELPER(dbg);
|
||||
dev->interface->write_register(0x0f, 0x01);
|
||||
}
|
||||
|
||||
static void gl847_stop_action(Genesys_Device* dev)
|
||||
{
|
||||
DBG_HELPER(dbg);
|
||||
|
@ -953,11 +947,7 @@ void CommandSetGl847::begin_scan(Genesys_Device* dev, const Genesys_Sensor& sens
|
|||
r = sanei_genesys_get_address (reg, REG_0x01);
|
||||
r->value = val;
|
||||
|
||||
if (start_motor) {
|
||||
dev->interface->write_register(REG_0x0F, 1);
|
||||
} else {
|
||||
dev->interface->write_register(REG_0x0F, 0);
|
||||
}
|
||||
scanner_start_action(*dev, start_motor);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1090,7 +1080,7 @@ void CommandSetGl847::slow_back_home(Genesys_Device* dev, bool wait_until_home)
|
|||
dev->interface->write_registers(local_reg);
|
||||
|
||||
try {
|
||||
gl847_start_action(dev);
|
||||
scanner_start_action(*dev, true);
|
||||
} catch (...) {
|
||||
catch_all_exceptions(__func__, [&]() { gl847_stop_action(dev); });
|
||||
// restore original registers
|
||||
|
@ -1302,7 +1292,7 @@ static void gl847_feed(Genesys_Device* dev, unsigned int steps)
|
|||
dev->interface->write_registers(local_reg);
|
||||
|
||||
try {
|
||||
gl847_start_action(dev);
|
||||
scanner_start_action(*dev, true);
|
||||
} catch (...) {
|
||||
catch_all_exceptions(__func__, [&]() { gl847_stop_action(dev); });
|
||||
// restore original registers
|
||||
|
|
|
@ -1543,6 +1543,28 @@ void sanei_genesys_asic_init(Genesys_Device* dev, bool /*max_regs*/)
|
|||
dev->cmd_set->set_powersaving(dev, 15);
|
||||
}
|
||||
|
||||
void scanner_start_action(Genesys_Device& dev, bool start_motor)
|
||||
{
|
||||
DBG_HELPER(dbg);
|
||||
switch (dev.model->asic_type) {
|
||||
case AsicType::GL646:
|
||||
case AsicType::GL841:
|
||||
case AsicType::GL843:
|
||||
case AsicType::GL845:
|
||||
case AsicType::GL846:
|
||||
case AsicType::GL847:
|
||||
case AsicType::GL124:
|
||||
break;
|
||||
default:
|
||||
throw SaneException("Unsupported chip");
|
||||
}
|
||||
|
||||
if (start_motor) {
|
||||
dev.interface->write_register(0x0f, 0x01);
|
||||
} else {
|
||||
dev.interface->write_register(0x0f, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void sanei_genesys_set_dpihw(Genesys_Register_Set& regs, const Genesys_Sensor& sensor,
|
||||
unsigned dpihw)
|
||||
|
|
|
@ -422,6 +422,8 @@ extern void sanei_genesys_wait_for_home(Genesys_Device* dev);
|
|||
|
||||
extern void sanei_genesys_asic_init(Genesys_Device* dev, bool cold);
|
||||
|
||||
void scanner_start_action(Genesys_Device& dev, bool start_motor);
|
||||
|
||||
const Motor_Profile& sanei_genesys_get_motor_profile(const std::vector<Motor_Profile>& motors,
|
||||
MotorId motor_id, int exposure);
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue