kopia lustrzana https://gitlab.com/sane-project/backends
Merge branch 'xerox_mfp-4521f-fixes' into 'master'
xerox_mfp: Add support for Samsung SCX-4521F. #707 See merge request sane-project/backends!797merge-requests/813/head
commit
b510c87d85
|
@ -247,7 +247,7 @@ static void dbg_dump(struct device *dev)
|
|||
for (i = 0; i < dlen; i++, dptr += 3)
|
||||
sprintf(dptr, " %02x", dev->res[i]);
|
||||
|
||||
DBG(5, "[%lu]%s%s\n", (u_long)dev->reslen, dbuf,
|
||||
DBG(5, "[%zu]%s%s\n", dev->reslen, dbuf,
|
||||
(dlen < (int)dev->reslen)? "..." : "");
|
||||
}
|
||||
|
||||
|
@ -274,8 +274,8 @@ static int dev_command(struct device *dev, SANE_Byte *cmd, size_t reqlen)
|
|||
}
|
||||
|
||||
dev->state = 0;
|
||||
DBG(4, ":: dev_command(%s[%#x], %lu)\n", str_cmd(cmd[2]), cmd[2],
|
||||
(u_long)reqlen);
|
||||
DBG(4, ":: dev_command(%s[%#x], %zu)\n", str_cmd(cmd[2]), cmd[2],
|
||||
reqlen);
|
||||
status = dev->io->dev_request(dev, cmd, sendlen, res, &dev->reslen);
|
||||
if (status != SANE_STATUS_GOOD) {
|
||||
DBG(1, "%s: dev_request: %s\n", __func__, sane_strstatus(status));
|
||||
|
@ -290,8 +290,8 @@ static int dev_command(struct device *dev, SANE_Byte *cmd, size_t reqlen)
|
|||
|
||||
/* normal command reply, some sanity checking */
|
||||
if (dev->reslen < reqlen) {
|
||||
DBG(1, "%s: illegal response len %lu, need %lu\n",
|
||||
__func__, (u_long)dev->reslen, (u_long)reqlen);
|
||||
DBG(1, "%s: illegal response len %zu, need %zu\n",
|
||||
__func__, dev->reslen, reqlen);
|
||||
dev->state = SANE_STATUS_IO_ERROR;
|
||||
return 0;
|
||||
} else {
|
||||
|
@ -307,14 +307,14 @@ static int dev_command(struct device *dev, SANE_Byte *cmd, size_t reqlen)
|
|||
}
|
||||
pktlen = dev->res[2] + 3;
|
||||
if (dev->reslen != pktlen) {
|
||||
DBG(2, "%s: illegal response len %lu, should be %lu\n",
|
||||
__func__, (u_long)pktlen, (u_long)dev->reslen);
|
||||
DBG(2, "%s: illegal response len %zu, should be %zu\n",
|
||||
__func__, pktlen, dev->reslen);
|
||||
dev->state = SANE_STATUS_IO_ERROR;
|
||||
return 0;
|
||||
}
|
||||
if (dev->reslen > reqlen)
|
||||
DBG(2, "%s: too big packet len %lu, need %lu\n",
|
||||
__func__, (u_long)dev->reslen, (u_long)reqlen);
|
||||
DBG(2, "%s: too big packet len %zu, need %zu\n",
|
||||
__func__, dev->reslen, reqlen);
|
||||
}
|
||||
|
||||
dev->state = 0;
|
||||
|
@ -1318,7 +1318,7 @@ sane_read(SANE_Handle h, SANE_Byte *buf, SANE_Int maxlen, SANE_Int *lenp)
|
|||
return SANE_STATUS_EOF;
|
||||
|
||||
/* if there is no data to read or output from buffer */
|
||||
if (!dev->blocklen && dev->datalen <= PADDING_SIZE) {
|
||||
if (!dev->blocklen && (dev->datalen <= PADDING_SIZE || dev->final_block)) {
|
||||
|
||||
/* copying uncompressed data */
|
||||
if (dev->composition == MODE_RGB24 &&
|
||||
|
@ -1332,6 +1332,13 @@ sane_read(SANE_Handle h, SANE_Byte *buf, SANE_Int maxlen, SANE_Int *lenp)
|
|||
dev->total_out_size += *lenp;
|
||||
return SANE_STATUS_GOOD;
|
||||
}
|
||||
} else if (dev->composition != MODE_RGB24) {
|
||||
int diff = dev->total_img_size - dev->total_out_size;
|
||||
int bufLen = (diff < maxlen) ? diff : maxlen;
|
||||
if (diff > 0 && copy_plain_trim(dev, buf, bufLen, lenp) > 0) {
|
||||
dev->total_out_size += *lenp;
|
||||
return SANE_STATUS_GOOD;
|
||||
}
|
||||
}
|
||||
|
||||
/* and we don't need to acquire next block */
|
||||
|
@ -1382,23 +1389,27 @@ sane_read(SANE_Handle h, SANE_Byte *buf, SANE_Int maxlen, SANE_Int *lenp)
|
|||
int olen; /* output len */
|
||||
|
||||
/* read as much data into the buffer */
|
||||
datalen = DATAROOM(dev) & USB_BLOCK_MASK;
|
||||
datalen = MIN(dev->blocklen, DATAROOM(dev) & USB_BLOCK_MASK);
|
||||
while (datalen && dev->blocklen) {
|
||||
SANE_Byte *rbuf = dev->data + DATATAIL(dev);
|
||||
|
||||
DBG(9, "<> request len: %lu, [%d, %d; %d]\n",
|
||||
(u_long)datalen, dev->dataoff, DATATAIL(dev), dev->datalen);
|
||||
DBG(9, "<> request len: %zu, [%d, %d; %d]\n",
|
||||
datalen, dev->dataoff, DATATAIL(dev), dev->datalen);
|
||||
|
||||
if ((status = dev->io->dev_request(dev, NULL, 0, rbuf, &datalen)) !=
|
||||
SANE_STATUS_GOOD)
|
||||
return status;
|
||||
|
||||
dev->datalen += datalen;
|
||||
dev->blocklen -= datalen;
|
||||
DBG(9, "<> got %lu, [%d, %d; %d]\n",
|
||||
(u_long)datalen, dev->dataoff, DATATAIL(dev), dev->datalen);
|
||||
|
||||
DBG(9, "<> got %zu, [%d, %d; %d]\n",
|
||||
datalen, dev->dataoff, DATATAIL(dev), dev->datalen);
|
||||
|
||||
if (dev->blocklen < 0)
|
||||
return ret_cancel(dev, SANE_STATUS_IO_ERROR);
|
||||
|
||||
datalen = DATAROOM(dev) & USB_BLOCK_MASK;
|
||||
datalen = MIN(dev->blocklen, DATAROOM(dev) & USB_BLOCK_MASK);
|
||||
}
|
||||
|
||||
if (buf && lenp) { /* read mode */
|
||||
|
|
Ładowanie…
Reference in New Issue