kopia lustrzana https://gitlab.com/sane-project/backends
pixma: add support for imageRUNNER 1018/1022/1023
Add support for Canon imageRUNNER 1018/1022/1023 models, which all share the same USB PID. Add it as a copy of MF6500. Tested with an iR1022A model. Flatbed and ADF both work correctly. Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>merge-requests/759/head
rodzic
6b99447f5b
commit
6740b47bca
|
@ -77,6 +77,7 @@
|
|||
#define D420_PID 0x26ef
|
||||
#define MF3200_PID 0x2684
|
||||
#define MF6500_PID 0x2686
|
||||
#define IR1018_PID 0x269d
|
||||
/* generation 2 scanners (>=0x2707) */
|
||||
#define MF8300_PID 0x2708
|
||||
#define MF4500_PID 0x2736
|
||||
|
@ -241,6 +242,7 @@ activate (pixma_t * s, uint8_t x)
|
|||
case MF4360_PID:
|
||||
case MF4100_PID:
|
||||
case MF8300_PID:
|
||||
case IR1018_PID:
|
||||
return iclass_exec (s, &mf->cb, 1);
|
||||
break;
|
||||
default:
|
||||
|
@ -273,6 +275,7 @@ select_source (pixma_t * s)
|
|||
case MF4360_PID:
|
||||
case MF4100_PID:
|
||||
case MF8300_PID:
|
||||
case IR1018_PID:
|
||||
return iclass_exec (s, &mf->cb, 0);
|
||||
break;
|
||||
default:
|
||||
|
@ -308,6 +311,7 @@ send_scan_param (pixma_t * s)
|
|||
case MF4360_PID:
|
||||
case MF4100_PID:
|
||||
case MF8300_PID:
|
||||
case IR1018_PID:
|
||||
return iclass_exec (s, &mf->cb, 0);
|
||||
break;
|
||||
default:
|
||||
|
@ -334,7 +338,8 @@ request_image_block (pixma_t * s, unsigned flag, uint8_t * info,
|
|||
expected_len = (mf->generation >= 2 ||
|
||||
s->cfg->pid == MF4600_PID ||
|
||||
s->cfg->pid == MF6500_PID ||
|
||||
s->cfg->pid == MF8030_PID) ? 512 : hlen;
|
||||
s->cfg->pid == MF8030_PID ||
|
||||
s->cfg->pid == IR1018_PID) ? 512 : hlen;
|
||||
mf->cb.reslen = pixma_cmd_transaction (s, mf->cb.buf, 11, mf->cb.buf, expected_len);
|
||||
if (mf->cb.reslen >= hlen)
|
||||
{
|
||||
|
@ -345,7 +350,8 @@ request_image_block (pixma_t * s, unsigned flag, uint8_t * info,
|
|||
if (mf->generation >= 2 ||
|
||||
s->cfg->pid == MF4600_PID ||
|
||||
s->cfg->pid == MF6500_PID ||
|
||||
s->cfg->pid == MF8030_PID)
|
||||
s->cfg->pid == MF8030_PID ||
|
||||
s->cfg->pid == IR1018_PID)
|
||||
{ /* 32bit size */
|
||||
*datalen = mf->cb.reslen - hlen;
|
||||
*size = (*datalen + hlen == 512) ? pixma_get_be32 (mf->cb.buf + 4) - *datalen : *size;
|
||||
|
@ -370,7 +376,8 @@ read_image_block (pixma_t * s, uint8_t * data, unsigned size)
|
|||
maxchunksize = MAX_CHUNK_SIZE * ((mf->generation >= 2 ||
|
||||
s->cfg->pid == MF4600_PID ||
|
||||
s->cfg->pid == MF6500_PID ||
|
||||
s->cfg->pid == MF8030_PID) ? 4 : 1);
|
||||
s->cfg->pid == MF8030_PID ||
|
||||
s->cfg->pid == IR1018_PID) ? 4 : 1);
|
||||
while (size)
|
||||
{
|
||||
if (size >= maxchunksize)
|
||||
|
@ -408,6 +415,7 @@ read_error_info (pixma_t * s, void *buf, unsigned size)
|
|||
case MF4360_PID:
|
||||
case MF4100_PID:
|
||||
case MF8300_PID:
|
||||
case IR1018_PID:
|
||||
error = iclass_exec (s, &mf->cb, 0);
|
||||
break;
|
||||
default:
|
||||
|
@ -788,7 +796,8 @@ iclass_fill_buffer (pixma_t * s, pixma_imagebuf_t * ib)
|
|||
mf->generation == 1 &&
|
||||
s->cfg->pid != MF4600_PID &&
|
||||
s->cfg->pid != MF6500_PID &&
|
||||
s->cfg->pid != MF8030_PID)
|
||||
s->cfg->pid != MF8030_PID &&
|
||||
s->cfg->pid != IR1018_PID)
|
||||
{
|
||||
/* color and not MF46xx or MF65xx */
|
||||
pack_rgb (mf->blkptr, n, mf->raw_width, mf->lineptr);
|
||||
|
@ -946,6 +955,7 @@ const pixma_config_t pixma_iclass_devices[] = {
|
|||
DEV ("Canon i-SENSYS MF8200C Series", "MF8200C", MF8200_PID, 600, 300, 640, 1050, PIXMA_CAP_ADF),
|
||||
DEV ("Canon i-SENSYS MF8300 Series", "MF8300", MF8300_PID, 600, 0, 640, 1050, PIXMA_CAP_ADF),
|
||||
DEV ("Canon imageCLASS D530", "D530", D530_PID, 600, 0, 640, 877, 0),
|
||||
DEV ("Canon imageRUNNER 1018/1022/1023", "iR1018/1022/1023", IR1018_PID, 600, 0, 640, 877, PIXMA_CAP_ADFDUP),
|
||||
/* FIXME: the following capabilities all need updating/verifying */
|
||||
DEV ("Canon imageCLASS MF8170c", "MF8170c", MF8100_PID, 600, 0, 640, 877, PIXMA_CAP_ADF),
|
||||
DEV ("Canon imageClass MF8030", "MF8030", MF8030_PID, 600, 0, 640, 877, PIXMA_CAP_ADF),
|
||||
|
|
|
@ -1757,6 +1757,12 @@
|
|||
:status :complete
|
||||
:comment "All resolutions supported (up to 600DPI). Identical with SmartBase MPC200 and PIXUS MP10."
|
||||
|
||||
:model "imageRUNNER 1018/1022/1023"
|
||||
:interface "USB"
|
||||
:usbid "0x04a9" "0x269d"
|
||||
:status :complete
|
||||
:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI)"
|
||||
|
||||
:model "imageRUNNER 1020/1024/1025"
|
||||
:interface "USB"
|
||||
:usbid "0x04a9" "0x26e6"
|
||||
|
|
|
@ -434,27 +434,6 @@
|
|||
:status :unsupported
|
||||
:comment "Probably not supported. Scanner cardridge for Canon inkjet printers."
|
||||
|
||||
:model "ImageRunner iR1018"
|
||||
:url "unsupported/canon-imagerunner.html"
|
||||
:interface "USB"
|
||||
:usbid "0x04a9" "0x269d"
|
||||
:status :unsupported
|
||||
:comment "Probably not supported. See link for details."
|
||||
|
||||
:model "ImageRunner iR1022"
|
||||
:url "unsupported/canon-imagerunner.html"
|
||||
:interface "USB"
|
||||
:usbid "0x04a9" "0x269d"
|
||||
:status :unsupported
|
||||
:comment "Probably not supported. See link for details."
|
||||
|
||||
:model "ImageRunner iR1023"
|
||||
:url "unsupported/canon-imagerunner.html"
|
||||
:interface "USB"
|
||||
:usbid "0x04a9" "0x269d"
|
||||
:status :unsupported
|
||||
:comment "Probably not supported. See link for details."
|
||||
|
||||
:model "PIXMA MP110"
|
||||
:url "unsupported/canon-pixma-mp110.html"
|
||||
:interface "USB"
|
||||
|
|
|
@ -87,7 +87,7 @@ i-SENSYS MF3010, MF4320d, MF4330d, MF4500, MF4700, MF4800
|
|||
.br
|
||||
i-SENSYS MF6100, MF8030, MF8200C, MF8300
|
||||
.br
|
||||
imageRUNNER 1020/1024/1025, 1133
|
||||
imageRUNNER 1018/1022/1023, 1020/1024/1025, 1133
|
||||
.br
|
||||
CanoScan 8800F, 9000F, 9000F Mark II
|
||||
.br
|
||||
|
|
Ładowanie…
Reference in New Issue