kopia lustrzana https://gitlab.com/sane-project/backends
last minute fix for hang after feeding to scan position
rodzic
3ad7a8cf09
commit
b2a0344885
|
@ -1,5 +1,6 @@
|
|||
2010-06-03 Stéphane Voltz <stef.dev@free.fr>
|
||||
* backend/genesys.c backend/genesys_devices.c backend/genesys_gl847.c:
|
||||
* backend/genesys.c backend/genesys_devices.c backend/genesys_gl847.c
|
||||
doc/descriptions/genesys.desc:
|
||||
final bits for full LiDE 100 support
|
||||
|
||||
2010-05-31 Stéphane Voltz <stef.dev@free.fr>
|
||||
|
|
|
@ -4731,27 +4731,30 @@ genesys_start_scan (Genesys_Device * dev)
|
|||
|
||||
/*do we really need this? the valid data check should be sufficent -- pierre*/
|
||||
/* waits for head to reach scanning position */
|
||||
expected =
|
||||
sanei_genesys_read_reg_from_set (dev->reg,
|
||||
0x3d) * 65536 +
|
||||
sanei_genesys_read_reg_from_set (dev->reg,
|
||||
0x3e) * 256 +
|
||||
sanei_genesys_read_reg_from_set (dev->reg, 0x3f);
|
||||
do
|
||||
if (!(dev->model->flags & GENESYS_FLAG_ODD_EVEN_CIS))
|
||||
{
|
||||
/* wait 1/10th of second between each test to avoid
|
||||
overloading USB and CPU */
|
||||
usleep (100 * 1000);
|
||||
status = sanei_genesys_read_feed_steps (dev, &steps);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG (DBG_error,
|
||||
"genesys_start_scan: Failed to read feed steps: %s\n",
|
||||
sane_strstatus (status));
|
||||
return status;
|
||||
}
|
||||
expected =
|
||||
sanei_genesys_read_reg_from_set (dev->reg,
|
||||
0x3d) * 65536 +
|
||||
sanei_genesys_read_reg_from_set (dev->reg,
|
||||
0x3e) * 256 +
|
||||
sanei_genesys_read_reg_from_set (dev->reg, 0x3f);
|
||||
do
|
||||
{
|
||||
/* wait 1/10th of second between each test to avoid
|
||||
overloading USB and CPU */
|
||||
usleep (100 * 1000);
|
||||
status = sanei_genesys_read_feed_steps (dev, &steps);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG (DBG_error,
|
||||
"genesys_start_scan: Failed to read feed steps: %s\n",
|
||||
sane_strstatus (status));
|
||||
return status;
|
||||
}
|
||||
}
|
||||
while (steps < expected);
|
||||
}
|
||||
while (steps < expected);
|
||||
|
||||
/* wait for buffers to be filled */
|
||||
do
|
||||
|
|
|
@ -786,7 +786,7 @@ static Genesys_Motor Motor[] = {
|
|||
1, /* maximum power modes count */
|
||||
{ /* motor slopes */
|
||||
{ /* power mode 0 */
|
||||
{ 2343, 1017, 64, 0.80}, /* full step */
|
||||
{ 2034, 1017, 64, 0.10}, /* full step */
|
||||
{ 4678, 2034, 64, 0.80}, /* half step */
|
||||
{ 3*2712, 3*2712, 64, 0.80}, /* quarter step 0.75*2712 */
|
||||
/*{ 4*2034, 4*2034, 32, 0.80}, quarter step */
|
||||
|
|
|
@ -770,7 +770,6 @@ HOME_FREE: 3
|
|||
* Z1
|
||||
* Z2
|
||||
*/
|
||||
|
||||
r = sanei_genesys_get_address (reg, 0x3d);
|
||||
r->value = (feedl >> 16) & 0xf;
|
||||
r = sanei_genesys_get_address (reg, 0x3e);
|
||||
|
@ -1122,9 +1121,6 @@ gl847_init_motor_regs_scan (Genesys_Device * dev,
|
|||
fast_slope_steps = (feed_steps - (slow_slope_steps >> scan_step_type)) / 2;
|
||||
}
|
||||
|
||||
if(fast_slope_steps<64)
|
||||
fast_slope_steps=64;
|
||||
|
||||
DBG (DBG_info,
|
||||
"gl847_init_motor_regs_scan: Maximum allowed slope steps for fast slope: %d\n",
|
||||
fast_slope_steps);
|
||||
|
@ -3436,11 +3432,6 @@ gl847_init_regs_for_scan (Genesys_Device * dev)
|
|||
return status;
|
||||
}
|
||||
|
||||
/* XXX STEF XXX */
|
||||
RIE (sanei_genesys_read_register (dev, REG6C, &val));
|
||||
val = val & ~REG6C_GPIO13;
|
||||
RIE (sanei_genesys_write_register (dev, REG6C, val));
|
||||
|
||||
/* clear scancnt and fedcnt */
|
||||
val = REG0D_CLRLNCNT;
|
||||
RIE (sanei_genesys_write_register (dev, REG0D, val));
|
||||
|
@ -4107,73 +4098,6 @@ gl847_init_memory_layout (Genesys_Device * dev)
|
|||
return status;
|
||||
}
|
||||
|
||||
#if 0
|
||||
/** @brief dummy scan to reset scanner
|
||||
*
|
||||
* */
|
||||
static SANE_Status
|
||||
gl847_dummy_scan (Genesys_Device * dev)
|
||||
{
|
||||
SANE_Status status;
|
||||
size_t size;
|
||||
uint8_t *line;
|
||||
float pixels;
|
||||
int dpi = 300;
|
||||
|
||||
DBGSTART;
|
||||
|
||||
/* initial calibration reg values */
|
||||
memcpy (dev->calib_reg, dev->reg,
|
||||
GENESYS_GL847_MAX_REGS * sizeof (Genesys_Register_Set));
|
||||
|
||||
pixels = (16 * 300) / dev->sensor.optical_res;
|
||||
status = gl847_init_scan_regs (dev,
|
||||
dev->calib_reg,
|
||||
dpi,
|
||||
dpi,
|
||||
0,
|
||||
0,
|
||||
pixels,
|
||||
1,
|
||||
16,
|
||||
3,
|
||||
0,
|
||||
SCAN_FLAG_DISABLE_SHADING |
|
||||
SCAN_FLAG_DISABLE_GAMMA |
|
||||
SCAN_FLAG_SINGLE_LINE |
|
||||
SCAN_FLAG_IGNORE_LINE_DISTANCE |
|
||||
SCAN_FLAG_USE_OPTICAL_RES);
|
||||
|
||||
RIE (gl847_bulk_write_register
|
||||
(dev, dev->calib_reg, GENESYS_GL847_MAX_REGS));
|
||||
|
||||
/* colors * bytes_per_color * scan lines */
|
||||
size = ((int) pixels) * 3 * 2 * 1;
|
||||
|
||||
line = malloc (size);
|
||||
if (!line)
|
||||
return SANE_STATUS_NO_MEM;
|
||||
|
||||
DBG (DBG_info, "%s: starting dummy data reading\n", __FUNCTION__);
|
||||
|
||||
RIE (gl847_begin_scan (dev, dev->calib_reg, SANE_TRUE));
|
||||
|
||||
sanei_usb_set_timeout (1000); /* 1 second */
|
||||
|
||||
/*ignore errors. next read will succeed */
|
||||
sanei_genesys_read_data_from_scanner (dev, line, size);
|
||||
|
||||
sanei_usb_set_timeout (30 * 1000); /* 30 seconds */
|
||||
|
||||
RIE (gl847_end_scan (dev, dev->calib_reg, SANE_TRUE));
|
||||
|
||||
free (line);
|
||||
|
||||
DBGCOMPLETED;
|
||||
return SANE_STATUS_GOOD;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
/**
|
||||
* reads a register from device and set up corresponding shadow register
|
||||
|
|
Ładowanie…
Reference in New Issue