backend/umax: bugfix for sense_handler and do_calibration

merge-requests/1/head
Oliver Rauch 2004-03-15 20:42:19 +00:00
rodzic e2b72e6b57
commit 75018e1ad0
3 zmienionych plików z 12 dodań i 4 usunięć

Wyświetl plik

@ -1,3 +1,6 @@
2004-03-15 Oliver Rauch <oliver.rauch@rauch-domain.de>
* backend/umax: bugfix for sense_handler and do_calibration
2004-03-15 Stéphane Voltz <svoltz@wanadoo.fr>
* backend/umax_pp_low.c backend/umax_pp_low.h backend/umax_pp_mid.c

Wyświetl plik

@ -933,7 +933,7 @@ static scsiblk request_sense = { request_senseC, sizeof(request_senseC) };
#define get_RS_scanner_error_code(b) b[0x15]
#define get_RS_SCC_condition_code(b) b[0x17]
#define get_RS_SCC_calibration_width(b) getnbyte(b+0x18, 4)
#define get_RS_SCC_calibration_bytesperline(b) getnbyte(b+0x18, 4)
#define get_RS_SCC_calibration_lines(b) getnbyte(b+0x1c, 2)
#define get_RS_SCC_calibration_bytespp(b) b[0x1e]

Wyświetl plik

@ -49,7 +49,7 @@
/* --------------------------------------------------------------------------------------------------------- */
#define BUILD 43
#define BUILD 44
/* --------------------------------------------------------------------------------------------------------- */
@ -888,6 +888,11 @@ static SANE_Status sense_handler(int scsi_fd, unsigned char *result, void *arg)
DBG(DBG_sense, "check condition sense: %s\n", sense_str[sensekey]);
/* when we reach here then we have no valid data in buffer[0] */
/* but it may be helpful to have the result data in buffer[0] */
memset(dev->buffer[0], 0, rs_return_block_size); /* clear sense data buffer */
memcpy(dev->buffer[0], result, len+1); /* copy sense data to buffer */
if (len > 0x15)
{
int scanner_error = get_RS_scanner_error_code(result);
@ -2455,11 +2460,11 @@ static SANE_Status umax_do_calibration(Umax_Device *dev)
DBG(DBG_info,"driver is doing calibration\n");
memset(dev->buffer[0], 0, rs_return_block_size); /* clear sense data buffer */
if (umax_execute_request_sense)
{
DBG(DBG_info,"request sense call is enabled\n");
memset(dev->buffer[0], 0, rs_return_block_size); /* clear sense data buffer */
umax_do_request_sense(dev); /* new request-sense call to get all data */
}
else
@ -2543,9 +2548,9 @@ static SANE_Status umax_do_calibration(Umax_Device *dev)
}
else
{
width = get_RS_SCC_calibration_width(dev->buffer[0]);
lines = get_RS_SCC_calibration_lines(dev->buffer[0]);
bytespp = get_RS_SCC_calibration_bytespp(dev->buffer[0]);
width = get_RS_SCC_calibration_bytesperline(dev->buffer[0]) / bytespp;
}
if (dev->calibration_bytespp > 0) /* correct bytespp if necessary and driver knows about it or user did select it */