kopia lustrzana https://gitlab.com/sane-project/backends
genesys: Return errors as exceptions from *read_hregister()
rodzic
a79f1404f3
commit
f856a3dacf
|
@ -413,8 +413,7 @@ sanei_genesys_write_hregister (Genesys_Device * dev, uint16_t reg, uint8_t val)
|
||||||
* @param reg LSB of register address
|
* @param reg LSB of register address
|
||||||
* @param val value to write
|
* @param val value to write
|
||||||
*/
|
*/
|
||||||
SANE_Status
|
void sanei_genesys_read_hregister(Genesys_Device* dev, uint16_t reg, uint8_t* val)
|
||||||
sanei_genesys_read_hregister (Genesys_Device * dev, uint16_t reg, uint8_t * val)
|
|
||||||
{
|
{
|
||||||
DBG_HELPER(dbg);
|
DBG_HELPER(dbg);
|
||||||
|
|
||||||
|
@ -427,12 +426,9 @@ sanei_genesys_read_hregister (Genesys_Device * dev, uint16_t reg, uint8_t * val)
|
||||||
DBG(DBG_io2, "%s(0x%02x)=0x%02x\n", __func__, reg, *val);
|
DBG(DBG_io2, "%s(0x%02x)=0x%02x\n", __func__, reg, *val);
|
||||||
|
|
||||||
/* check usb link status */
|
/* check usb link status */
|
||||||
if((value[1] & 0xff) != 0x55)
|
if ((value[1] & 0xff) != 0x55) {
|
||||||
{
|
throw SaneException(SANE_STATUS_IO_ERROR, "invalid read, scanner unplugged");
|
||||||
DBG(DBG_error,"%s: invalid read, scanner unplugged ?\n", __func__);
|
|
||||||
return SANE_STATUS_IO_ERROR;
|
|
||||||
}
|
}
|
||||||
return SANE_STATUS_GOOD;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -548,7 +544,8 @@ sanei_genesys_read_register (Genesys_Device * dev, uint16_t reg, uint8_t * val)
|
||||||
/* 16 bit register address space */
|
/* 16 bit register address space */
|
||||||
if(reg>255)
|
if(reg>255)
|
||||||
{
|
{
|
||||||
return sanei_genesys_read_hregister(dev, reg, val);
|
sanei_genesys_read_hregister(dev, reg, val);
|
||||||
|
return SANE_STATUS_GOOD;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* route to gl847 function if needed */
|
/* route to gl847 function if needed */
|
||||||
|
@ -700,8 +697,11 @@ sanei_genesys_fe_write_data (Genesys_Device * dev, uint8_t addr,
|
||||||
SANE_Status
|
SANE_Status
|
||||||
sanei_genesys_get_status (Genesys_Device * dev, uint8_t * status)
|
sanei_genesys_get_status (Genesys_Device * dev, uint8_t * status)
|
||||||
{
|
{
|
||||||
if(dev->model->asic_type==GENESYS_GL124)
|
DBG_HELPER(dbg);
|
||||||
return sanei_genesys_read_hregister(dev, 0x101, status);
|
if (dev->model->asic_type == GENESYS_GL124) {
|
||||||
|
sanei_genesys_read_hregister(dev, 0x101, status);
|
||||||
|
return SANE_STATUS_GOOD;
|
||||||
|
}
|
||||||
return sanei_genesys_read_register (dev, 0x41, status);
|
return sanei_genesys_read_register (dev, 0x41, status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -767,20 +767,20 @@ genesys_dpiset (Genesys_Register_Set * reg)
|
||||||
SANE_Status
|
SANE_Status
|
||||||
sanei_genesys_read_valid_words (Genesys_Device * dev, unsigned int *words)
|
sanei_genesys_read_valid_words (Genesys_Device * dev, unsigned int *words)
|
||||||
{
|
{
|
||||||
|
DBG_HELPER(dbg);
|
||||||
SANE_Status status = SANE_STATUS_GOOD;
|
SANE_Status status = SANE_STATUS_GOOD;
|
||||||
uint8_t value;
|
uint8_t value;
|
||||||
|
|
||||||
DBGSTART;
|
|
||||||
switch (dev->model->asic_type)
|
switch (dev->model->asic_type)
|
||||||
{
|
{
|
||||||
case GENESYS_GL124:
|
case GENESYS_GL124:
|
||||||
RIE (sanei_genesys_read_hregister (dev, 0x102, &value));
|
sanei_genesys_read_hregister(dev, 0x102, &value);
|
||||||
*words = (value & 0x03);
|
*words = (value & 0x03);
|
||||||
RIE (sanei_genesys_read_hregister (dev, 0x103, &value));
|
sanei_genesys_read_hregister(dev, 0x103, &value);
|
||||||
*words = *words * 256 + value;
|
*words = *words * 256 + value;
|
||||||
RIE (sanei_genesys_read_hregister (dev, 0x104, &value));
|
sanei_genesys_read_hregister(dev, 0x104, &value);
|
||||||
*words = *words * 256 + value;
|
*words = *words * 256 + value;
|
||||||
RIE (sanei_genesys_read_hregister (dev, 0x105, &value));
|
sanei_genesys_read_hregister(dev, 0x105, &value);
|
||||||
*words = *words * 256 + value;
|
*words = *words * 256 + value;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -820,7 +820,6 @@ sanei_genesys_read_valid_words (Genesys_Device * dev, unsigned int *words)
|
||||||
}
|
}
|
||||||
|
|
||||||
DBG(DBG_proc, "%s: %d words\n", __func__, *words);
|
DBG(DBG_proc, "%s: %d words\n", __func__, *words);
|
||||||
DBGCOMPLETED;
|
|
||||||
return SANE_STATUS_GOOD;
|
return SANE_STATUS_GOOD;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -830,18 +829,17 @@ sanei_genesys_read_valid_words (Genesys_Device * dev, unsigned int *words)
|
||||||
SANE_Status
|
SANE_Status
|
||||||
sanei_genesys_read_scancnt (Genesys_Device * dev, unsigned int *words)
|
sanei_genesys_read_scancnt (Genesys_Device * dev, unsigned int *words)
|
||||||
{
|
{
|
||||||
|
DBG_HELPER(dbg);
|
||||||
SANE_Status status = SANE_STATUS_GOOD;
|
SANE_Status status = SANE_STATUS_GOOD;
|
||||||
uint8_t value;
|
uint8_t value;
|
||||||
|
|
||||||
DBG(DBG_proc, "%s: start\n", __func__);
|
|
||||||
|
|
||||||
if (dev->model->asic_type == GENESYS_GL124)
|
if (dev->model->asic_type == GENESYS_GL124)
|
||||||
{
|
{
|
||||||
RIE (sanei_genesys_read_hregister (dev, 0x10b, &value));
|
sanei_genesys_read_hregister(dev, 0x10b, &value);
|
||||||
*words = (value & 0x0f) << 16;
|
*words = (value & 0x0f) << 16;
|
||||||
RIE (sanei_genesys_read_hregister (dev, 0x10c, &value));
|
sanei_genesys_read_hregister(dev, 0x10c, &value);
|
||||||
*words += (value << 8);
|
*words += (value << 8);
|
||||||
RIE (sanei_genesys_read_hregister (dev, 0x10d, &value));
|
sanei_genesys_read_hregister(dev, 0x10d, &value);
|
||||||
*words += value;
|
*words += value;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -942,18 +940,17 @@ sanei_genesys_read_data_from_scanner (Genesys_Device * dev, uint8_t * data,
|
||||||
SANE_Status
|
SANE_Status
|
||||||
sanei_genesys_read_feed_steps (Genesys_Device * dev, unsigned int *steps)
|
sanei_genesys_read_feed_steps (Genesys_Device * dev, unsigned int *steps)
|
||||||
{
|
{
|
||||||
|
DBG_HELPER(dbg);
|
||||||
SANE_Status status = SANE_STATUS_GOOD;
|
SANE_Status status = SANE_STATUS_GOOD;
|
||||||
uint8_t value;
|
uint8_t value;
|
||||||
|
|
||||||
DBG(DBG_proc, "%s\n", __func__);
|
|
||||||
|
|
||||||
if (dev->model->asic_type == GENESYS_GL124)
|
if (dev->model->asic_type == GENESYS_GL124)
|
||||||
{
|
{
|
||||||
RIE (sanei_genesys_read_hregister (dev, 0x108, &value));
|
sanei_genesys_read_hregister(dev, 0x108, &value);
|
||||||
*steps = (value & 0x1f) << 16;
|
*steps = (value & 0x1f) << 16;
|
||||||
RIE (sanei_genesys_read_hregister (dev, 0x109, &value));
|
sanei_genesys_read_hregister(dev, 0x109, &value);
|
||||||
*steps += (value << 8);
|
*steps += (value << 8);
|
||||||
RIE (sanei_genesys_read_hregister (dev, 0x10a, &value));
|
sanei_genesys_read_hregister(dev, 0x10a, &value);
|
||||||
*steps += value;
|
*steps += value;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -1722,8 +1722,7 @@ sanei_genesys_read_register (Genesys_Device * dev, uint16_t reg, uint8_t * val);
|
||||||
extern SANE_Status
|
extern SANE_Status
|
||||||
sanei_genesys_write_register (Genesys_Device * dev, uint16_t reg, uint8_t val);
|
sanei_genesys_write_register (Genesys_Device * dev, uint16_t reg, uint8_t val);
|
||||||
|
|
||||||
extern SANE_Status
|
extern void sanei_genesys_read_hregister(Genesys_Device* dev, uint16_t reg, uint8_t* val);
|
||||||
sanei_genesys_read_hregister (Genesys_Device * dev, uint16_t reg, uint8_t * val);
|
|
||||||
|
|
||||||
extern SANE_Status
|
extern SANE_Status
|
||||||
sanei_genesys_write_hregister (Genesys_Device * dev, uint16_t reg, uint8_t val);
|
sanei_genesys_write_hregister (Genesys_Device * dev, uint16_t reg, uint8_t val);
|
||||||
|
|
Ładowanie…
Reference in New Issue