kopia lustrzana https://gitlab.com/sane-project/backends
genesys: Return errors as exceptions from *set_buffer_address()
rodzic
17a619a927
commit
3a47a9ed4d
|
@ -945,6 +945,7 @@ genesys_send_offset_and_shading (Genesys_Device * dev, const Genesys_Sensor& sen
|
|||
uint8_t * data,
|
||||
int size)
|
||||
{
|
||||
DBG_HELPER(dbg);
|
||||
int dpihw;
|
||||
int start_address;
|
||||
SANE_Status status = SANE_STATUS_GOOD;
|
||||
|
@ -957,7 +958,6 @@ genesys_send_offset_and_shading (Genesys_Device * dev, const Genesys_Sensor& sen
|
|||
if(dev->model->cmd_set->send_shading_data!=NULL)
|
||||
{
|
||||
status=dev->model->cmd_set->send_shading_data(dev, sensor, data, size);
|
||||
DBGCOMPLETED;
|
||||
return status;
|
||||
}
|
||||
|
||||
|
@ -995,16 +995,12 @@ genesys_send_offset_and_shading (Genesys_Device * dev, const Genesys_Sensor& sen
|
|||
else /* reserved */
|
||||
return SANE_STATUS_INVAL;
|
||||
}
|
||||
else /* color */
|
||||
start_address = 0x00;
|
||||
|
||||
status = sanei_genesys_set_buffer_address (dev, start_address);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG(DBG_error, "%s: failed to set buffer address: %s\n", __func__, sane_strstatus(status));
|
||||
return status;
|
||||
else { // color
|
||||
start_address = 0x00;
|
||||
}
|
||||
|
||||
sanei_genesys_set_buffer_address(dev, start_address);
|
||||
|
||||
status = dev->model->cmd_set->bulk_write_data (dev, 0x3c, data, size);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
|
@ -1012,8 +1008,6 @@ genesys_send_offset_and_shading (Genesys_Device * dev, const Genesys_Sensor& sen
|
|||
return status;
|
||||
}
|
||||
|
||||
DBGCOMPLETED;
|
||||
|
||||
return SANE_STATUS_GOOD;
|
||||
}
|
||||
|
||||
|
|
|
@ -1081,12 +1081,7 @@ gl646_asic_test (Genesys_Device * dev)
|
|||
data[i + 1] = (i / 2) % 256;
|
||||
}
|
||||
|
||||
status = sanei_genesys_set_buffer_address (dev, 0x0000);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG(DBG_error, "%s: failed to set buffer address: %s\n", __func__, sane_strstatus(status));
|
||||
return status;
|
||||
}
|
||||
sanei_genesys_set_buffer_address(dev, 0x0000);
|
||||
|
||||
status = sanei_genesys_bulk_write_data(dev, 0x3c, data.data(), size);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
|
@ -1095,12 +1090,7 @@ gl646_asic_test (Genesys_Device * dev)
|
|||
return status;
|
||||
}
|
||||
|
||||
status = sanei_genesys_set_buffer_address (dev, 0x0000);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG(DBG_error, "%s: failed to set buffer address: %s\n", __func__, sane_strstatus(status));
|
||||
return status;
|
||||
}
|
||||
sanei_genesys_set_buffer_address(dev, 0x0000);
|
||||
|
||||
gl646_bulk_read_data(dev, 0x45, verify_data.data(), verify_size);
|
||||
|
||||
|
@ -1317,6 +1307,7 @@ static SANE_Status
|
|||
gl646_send_slope_table (Genesys_Device * dev, int table_nr,
|
||||
uint16_t * slope_table, int steps)
|
||||
{
|
||||
DBG_HELPER(dbg);
|
||||
int dpihw;
|
||||
int start_address;
|
||||
SANE_Status status = SANE_STATUS_GOOD;
|
||||
|
@ -1342,13 +1333,7 @@ gl646_send_slope_table (Genesys_Device * dev, int table_nr,
|
|||
table[i * 2 + 1] = slope_table[i] >> 8;
|
||||
}
|
||||
|
||||
status =
|
||||
sanei_genesys_set_buffer_address (dev, start_address + table_nr * 0x100);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG(DBG_error, "%s: failed to set buffer address: %s\n", __func__, sane_strstatus(status));
|
||||
return status;
|
||||
}
|
||||
sanei_genesys_set_buffer_address(dev, start_address + table_nr * 0x100);
|
||||
|
||||
status = sanei_genesys_bulk_write_data(dev, 0x3c, table.data(), steps * 2);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
|
@ -1357,7 +1342,6 @@ gl646_send_slope_table (Genesys_Device * dev, int table_nr,
|
|||
return status;
|
||||
}
|
||||
|
||||
DBG(DBG_proc, "%s: end\n", __func__);
|
||||
return status;
|
||||
}
|
||||
|
||||
|
@ -2908,13 +2892,12 @@ setup_for_scan (Genesys_Device * dev,
|
|||
static SANE_Status
|
||||
gl646_send_gamma_table (Genesys_Device * dev, const Genesys_Sensor& sensor)
|
||||
{
|
||||
DBG_HELPER(dbg);
|
||||
int size;
|
||||
int address;
|
||||
SANE_Status status = SANE_STATUS_GOOD;
|
||||
int bits;
|
||||
|
||||
DBGSTART;
|
||||
|
||||
/* gamma table size */
|
||||
if (dev->model->flags & GENESYS_FLAG_14BIT_GAMMA)
|
||||
{
|
||||
|
@ -2948,13 +2931,8 @@ gl646_send_gamma_table (Genesys_Device * dev, const Genesys_Sensor& sensor)
|
|||
return SANE_STATUS_INVAL;
|
||||
}
|
||||
|
||||
/* send address */
|
||||
status = sanei_genesys_set_buffer_address (dev, address);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG(DBG_error, "%s: failed to set buffer address: %s\n", __func__, sane_strstatus(status));
|
||||
return status;
|
||||
}
|
||||
// send address
|
||||
sanei_genesys_set_buffer_address(dev, address);
|
||||
|
||||
/* send data */
|
||||
status = sanei_genesys_bulk_write_data(dev, 0x3c, gamma.data(), size * 2 * 3);
|
||||
|
@ -2963,8 +2941,6 @@ gl646_send_gamma_table (Genesys_Device * dev, const Genesys_Sensor& sensor)
|
|||
DBG(DBG_error, "%s: failed to send gamma table: %s\n", __func__, sane_strstatus(status));
|
||||
return status;
|
||||
}
|
||||
|
||||
DBGCOMPLETED;
|
||||
return SANE_STATUS_GOOD;
|
||||
}
|
||||
|
||||
|
@ -3997,12 +3973,8 @@ gl646_init (Genesys_Device * dev)
|
|||
addr = 0x1fa00;
|
||||
break;
|
||||
}
|
||||
status = sanei_genesys_set_buffer_address (dev, addr);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG(DBG_error, "%s: failed to set up control address\n", __func__);
|
||||
return SANE_STATUS_INVAL;
|
||||
}
|
||||
sanei_genesys_set_buffer_address(dev, addr);
|
||||
|
||||
sanei_usb_set_timeout (2 * 1000);
|
||||
len = 6;
|
||||
// for some reason, read fails here for MD6471, HP2300 and XP200 one time out of
|
||||
|
@ -4477,6 +4449,7 @@ gl646_update_hardware_sensors (Genesys_Scanner * session)
|
|||
static SANE_Status
|
||||
write_control (Genesys_Device * dev, const Genesys_Sensor& sensor, int resolution)
|
||||
{
|
||||
DBG_HELPER(dbg);
|
||||
SANE_Status status = SANE_STATUS_GOOD;
|
||||
uint8_t control[4];
|
||||
uint32_t addr = 0xdead;
|
||||
|
@ -4526,12 +4499,7 @@ write_control (Genesys_Device * dev, const Genesys_Sensor& sensor, int resolutio
|
|||
|
||||
DBG(DBG_info, "%s: control write=0x%02x 0x%02x 0x%02x 0x%02x\n", __func__, control[0], control[1],
|
||||
control[2], control[3]);
|
||||
status = sanei_genesys_set_buffer_address (dev, addr);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG(DBG_error, "%s: failed to set up control address\n", __func__);
|
||||
return SANE_STATUS_INVAL;
|
||||
}
|
||||
sanei_genesys_set_buffer_address(dev, addr);
|
||||
status = sanei_genesys_bulk_write_data(dev, 0x3c, control, 4);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
|
|
|
@ -298,7 +298,6 @@ sanei_gl841_asic_test (Genesys_Device * dev)
|
|||
{
|
||||
DBG_HELPER(dbg);
|
||||
|
||||
SANE_Status status = SANE_STATUS_GOOD;
|
||||
uint8_t val;
|
||||
size_t size, verify_size;
|
||||
unsigned int i;
|
||||
|
@ -342,12 +341,7 @@ sanei_gl841_asic_test (Genesys_Device * dev)
|
|||
data[i + 1] = (i / 2) % 256;
|
||||
}
|
||||
|
||||
status = sanei_genesys_set_buffer_address (dev, 0x0000);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG(DBG_error, "%s: failed to set buffer address: %s\n", __func__, sane_strstatus(status));
|
||||
return status;
|
||||
}
|
||||
sanei_genesys_set_buffer_address(dev, 0x0000);
|
||||
|
||||
/* status = sanei_genesys_bulk_write_data(dev, 0x3c, data, size);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
|
@ -358,12 +352,7 @@ sanei_gl841_asic_test (Genesys_Device * dev)
|
|||
return status;
|
||||
}*/
|
||||
|
||||
status = sanei_genesys_set_buffer_address (dev, 0x0000);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG(DBG_error, "%s: failed to set buffer address: %s\n", __func__, sane_strstatus(status));
|
||||
return status;
|
||||
}
|
||||
sanei_genesys_set_buffer_address(dev, 0x0000);
|
||||
|
||||
sanei_genesys_bulk_read_data(dev, 0x45, verify_data.data(), verify_size);
|
||||
|
||||
|
@ -722,6 +711,7 @@ static SANE_Status
|
|||
gl841_send_slope_table (Genesys_Device * dev, int table_nr,
|
||||
uint16_t * slope_table, int steps)
|
||||
{
|
||||
DBG_HELPER(dbg);
|
||||
int dpihw;
|
||||
int start_address;
|
||||
SANE_Status status = SANE_STATUS_GOOD;
|
||||
|
@ -759,13 +749,7 @@ gl841_send_slope_table (Genesys_Device * dev, int table_nr,
|
|||
DBG(DBG_io, "%s: %s\n", __func__, msg);
|
||||
}
|
||||
|
||||
status =
|
||||
sanei_genesys_set_buffer_address (dev, start_address + table_nr * 0x200);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG(DBG_error, "%s: failed to set buffer address: %s\n", __func__, sane_strstatus(status));
|
||||
return status;
|
||||
}
|
||||
sanei_genesys_set_buffer_address(dev, start_address + table_nr * 0x200);
|
||||
|
||||
status = sanei_genesys_bulk_write_data(dev, 0x3c, table.data(), steps * 2);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
|
@ -774,7 +758,6 @@ gl841_send_slope_table (Genesys_Device * dev, int table_nr,
|
|||
return status;
|
||||
}
|
||||
|
||||
DBG(DBG_proc, "%s: completed\n", __func__);
|
||||
return status;
|
||||
}
|
||||
|
||||
|
@ -5375,26 +5358,20 @@ SANE_Status
|
|||
gl841_send_shading_data (Genesys_Device * dev, const Genesys_Sensor& sensor,
|
||||
uint8_t * data, int size)
|
||||
{
|
||||
DBG_HELPER(dbg);
|
||||
SANE_Status status = SANE_STATUS_GOOD;
|
||||
uint32_t length, x, factor, pixels, i;
|
||||
uint32_t lines, channels;
|
||||
uint16_t dpiset, dpihw, strpixel ,endpixel, beginpixel;
|
||||
uint8_t *ptr,*src;
|
||||
|
||||
DBGSTART;
|
||||
DBG(DBG_io2, "%s: writing %d bytes of shading data\n", __func__, size);
|
||||
|
||||
/* old method if no SHDAREA */
|
||||
if((dev->reg.find_reg(0x01).value & REG01_SHDAREA) == 0)
|
||||
{
|
||||
/* start address */
|
||||
status = sanei_genesys_set_buffer_address (dev, 0x0000);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG(DBG_error, "%s: failed to set buffer address: %s\n", __func__,
|
||||
sane_strstatus(status));
|
||||
return status;
|
||||
}
|
||||
// start address
|
||||
sanei_genesys_set_buffer_address(dev, 0x0000);
|
||||
|
||||
/* shading data whole line */
|
||||
status = dev->model->cmd_set->bulk_write_data (dev, 0x3c, data, size);
|
||||
|
@ -5404,7 +5381,6 @@ gl841_send_shading_data (Genesys_Device * dev, const Genesys_Sensor& sensor,
|
|||
sane_strstatus(status));
|
||||
return status;
|
||||
}
|
||||
DBGCOMPLETED;
|
||||
return status;
|
||||
}
|
||||
|
||||
|
@ -5477,13 +5453,11 @@ gl841_send_shading_data (Genesys_Device * dev, const Genesys_Sensor& sensor,
|
|||
ptr+=4;
|
||||
}
|
||||
|
||||
/* 0x5400 alignment for LIDE80 internal memory */
|
||||
RIE(sanei_genesys_set_buffer_address(dev, 0x5400*i));
|
||||
// 0x5400 alignment for LIDE80 internal memory
|
||||
sanei_genesys_set_buffer_address(dev, 0x5400*i);
|
||||
RIE(dev->model->cmd_set->bulk_write_data(dev, 0x3c, buffer.data(), pixels));
|
||||
}
|
||||
|
||||
DBGCOMPLETED;
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
|
|
@ -4340,6 +4340,7 @@ static SANE_Status
|
|||
gl843_send_shading_data (Genesys_Device * dev, const Genesys_Sensor& sensor,
|
||||
uint8_t * data, int size)
|
||||
{
|
||||
DBG_HELPER(dbg);
|
||||
SANE_Status status = SANE_STATUS_GOOD;
|
||||
uint32_t final_size, length, i;
|
||||
uint8_t *buffer;
|
||||
|
@ -4347,8 +4348,6 @@ gl843_send_shading_data (Genesys_Device * dev, const Genesys_Sensor& sensor,
|
|||
GenesysRegister *r;
|
||||
uint16_t dpiset, strpixel, endpixel, startx, factor;
|
||||
|
||||
DBGSTART;
|
||||
|
||||
offset=0;
|
||||
length=size;
|
||||
r = sanei_genesys_get_address(&dev->reg, REG01);
|
||||
|
@ -4404,13 +4403,8 @@ gl843_send_shading_data (Genesys_Device * dev, const Genesys_Sensor& sensor,
|
|||
}
|
||||
}
|
||||
|
||||
/* send data */
|
||||
status = sanei_genesys_set_buffer_address (dev, 0);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG(DBG_error, "%s: failed to set buffer address: %s\n", __func__, sane_strstatus(status));
|
||||
return status;
|
||||
}
|
||||
// send data
|
||||
sanei_genesys_set_buffer_address(dev, 0);
|
||||
|
||||
status = dev->model->cmd_set->bulk_write_data (dev, 0x3c, final_data.data(), count);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
|
@ -4418,7 +4412,6 @@ gl843_send_shading_data (Genesys_Device * dev, const Genesys_Sensor& sensor,
|
|||
DBG(DBG_error, "%s: failed to send shading table: %s\n", __func__, sane_strstatus(status));
|
||||
}
|
||||
|
||||
DBGCOMPLETED;
|
||||
return status;
|
||||
}
|
||||
|
||||
|
|
|
@ -557,9 +557,8 @@ void sanei_genesys_read_register(Genesys_Device* dev, uint16_t reg, uint8_t* val
|
|||
DBG(DBG_io, "%s (0x%02x, 0x%02x) completed\n", __func__, reg, *val);
|
||||
}
|
||||
|
||||
/* Set address for writing data */
|
||||
SANE_Status
|
||||
sanei_genesys_set_buffer_address (Genesys_Device * dev, uint32_t addr)
|
||||
// Set address for writing data
|
||||
void sanei_genesys_set_buffer_address(Genesys_Device* dev, uint32_t addr)
|
||||
{
|
||||
DBG_HELPER(dbg);
|
||||
|
||||
|
@ -569,7 +568,7 @@ sanei_genesys_set_buffer_address (Genesys_Device * dev, uint32_t addr)
|
|||
|| dev->model->asic_type==GENESYS_GL124)
|
||||
{
|
||||
DBG(DBG_warn, "%s: shouldn't be used for GL846+ ASICs\n", __func__);
|
||||
return SANE_STATUS_GOOD;
|
||||
return;
|
||||
}
|
||||
|
||||
DBG(DBG_io, "%s: setting address to 0x%05x\n", __func__, addr & 0xfffffff0);
|
||||
|
@ -580,8 +579,6 @@ sanei_genesys_set_buffer_address (Genesys_Device * dev, uint32_t addr)
|
|||
|
||||
addr = addr >> 8;
|
||||
sanei_genesys_write_register(dev, 0x2a, (addr & 0xff));
|
||||
|
||||
return SANE_STATUS_GOOD;
|
||||
}
|
||||
|
||||
/**@brief read data from analog frontend (AFE)
|
||||
|
|
|
@ -1788,8 +1788,7 @@ sanei_genesys_calculate_zmode (uint32_t exposure_time,
|
|||
uint8_t fwdstep, uint8_t tgtime,
|
||||
uint32_t * z1, uint32_t * z2);
|
||||
|
||||
extern SANE_Status
|
||||
sanei_genesys_set_buffer_address (Genesys_Device * dev, uint32_t addr);
|
||||
extern void sanei_genesys_set_buffer_address(Genesys_Device* dev, uint32_t addr);
|
||||
|
||||
/** @brief Reads data from frontend register.
|
||||
* Reads data from the given frontend register. May be used to query
|
||||
|
|
Ładowanie…
Reference in New Issue