genesys: Remove duplication of motor startup

merge-requests/228/merge
Povilas Kanapickas 2019-11-23 12:38:50 +02:00
rodzic 9cd373fe6c
commit 05e3091d5f
9 zmienionych plików z 43 dodań i 78 usunięć

Wyświetl plik

@ -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); });

Wyświetl plik

@ -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);

Wyświetl plik

@ -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 */

Wyświetl plik

@ -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

Wyświetl plik

@ -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

Wyświetl plik

@ -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);

Wyświetl plik

@ -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

Wyświetl plik

@ -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)

Wyświetl plik

@ -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);