kopia lustrzana https://gitlab.com/sane-project/backends
new scanner Canon imageCLASS MF4410 from Vasiliy Olekhov
rodzic
9513986d96
commit
aaa97ac050
|
@ -1,3 +1,8 @@
|
||||||
|
2012-02-27 Rolf Bensch <rolf at bensch hyphen online dot de>
|
||||||
|
* backend/pixma_imageclass.c, doc/descriptions/pixma.desc,
|
||||||
|
doc/sane-pixma.man: New scanner Canon imageCLASS MF4410 from
|
||||||
|
Vasiliy Olekhov.
|
||||||
|
|
||||||
2012-02-16 Rolf Bensch <rolf at bensch hyphen online dot de>
|
2012-02-16 Rolf Bensch <rolf at bensch hyphen online dot de>
|
||||||
* backend/pixma.c, backend/pixma_sane_options.[ch]:
|
* backend/pixma.c, backend/pixma_sane_options.[ch]:
|
||||||
New device specific option 'gamma'.
|
New device specific option 'gamma'.
|
||||||
|
|
|
@ -77,6 +77,7 @@
|
||||||
#define MF4320_PID 0x26ee
|
#define MF4320_PID 0x26ee
|
||||||
#define MF3200_PID 0x2684
|
#define MF3200_PID 0x2684
|
||||||
#define MF6500_PID 0x2686
|
#define MF6500_PID 0x2686
|
||||||
|
#define MF4410_PID 0x2737
|
||||||
/* the following are all untested */
|
/* the following are all untested */
|
||||||
#define MF5630_PID 0x264e
|
#define MF5630_PID 0x264e
|
||||||
#define MF5650_PID 0x264f
|
#define MF5650_PID 0x264f
|
||||||
|
@ -99,7 +100,8 @@ enum iclass_cmd_t
|
||||||
cmd_scan_param = 0xde20,
|
cmd_scan_param = 0xde20,
|
||||||
cmd_status = 0xf320,
|
cmd_status = 0xf320,
|
||||||
cmd_abort_session = 0xef20,
|
cmd_abort_session = 0xef20,
|
||||||
cmd_read_image = 0xd420,
|
cmd_read_image = 0xd420,
|
||||||
|
cmd_read_image2 = 0xd460, /* New multifunctionals, such as MF4410 */
|
||||||
cmd_error_info = 0xff20,
|
cmd_error_info = 0xff20,
|
||||||
|
|
||||||
cmd_activate = 0xcf60
|
cmd_activate = 0xcf60
|
||||||
|
@ -264,10 +266,11 @@ request_image_block (pixma_t * s, unsigned flag, uint8_t * info,
|
||||||
const int hlen = 2 + 6;
|
const int hlen = 2 + 6;
|
||||||
|
|
||||||
memset (mf->cb.buf, 0, 11);
|
memset (mf->cb.buf, 0, 11);
|
||||||
pixma_set_be16 (cmd_read_image, mf->cb.buf);
|
pixma_set_be16 ((s->cfg->pid == MF4410_PID ? cmd_read_image2 : cmd_read_image), mf->cb.buf);
|
||||||
mf->cb.buf[8] = flag;
|
mf->cb.buf[8] = flag;
|
||||||
mf->cb.buf[10] = 0x06;
|
mf->cb.buf[10] = 0x06;
|
||||||
expected_len = (s->cfg->pid == MF4600_PID ||
|
expected_len = (s->cfg->pid == MF4410_PID ||
|
||||||
|
s->cfg->pid == MF4600_PID ||
|
||||||
s->cfg->pid == MF6500_PID ||
|
s->cfg->pid == MF6500_PID ||
|
||||||
s->cfg->pid == MF8030_PID) ? 512 : hlen;
|
s->cfg->pid == MF8030_PID) ? 512 : hlen;
|
||||||
mf->cb.reslen = pixma_cmd_transaction (s, mf->cb.buf, 11, mf->cb.buf, expected_len);
|
mf->cb.reslen = pixma_cmd_transaction (s, mf->cb.buf, 11, mf->cb.buf, expected_len);
|
||||||
|
@ -277,7 +280,8 @@ request_image_block (pixma_t * s, unsigned flag, uint8_t * info,
|
||||||
*size = pixma_get_be16 (mf->cb.buf + 6); /* 16bit size */
|
*size = pixma_get_be16 (mf->cb.buf + 6); /* 16bit size */
|
||||||
error = 0;
|
error = 0;
|
||||||
|
|
||||||
if (s->cfg->pid == MF4600_PID ||
|
if (s->cfg->pid == MF4410_PID ||
|
||||||
|
s->cfg->pid == MF4600_PID ||
|
||||||
s->cfg->pid == MF6500_PID ||
|
s->cfg->pid == MF6500_PID ||
|
||||||
s->cfg->pid == MF8030_PID)
|
s->cfg->pid == MF8030_PID)
|
||||||
{ /* 32bit size */
|
{ /* 32bit size */
|
||||||
|
@ -299,7 +303,8 @@ read_image_block (pixma_t * s, uint8_t * data, unsigned size)
|
||||||
int error;
|
int error;
|
||||||
unsigned maxchunksize, chunksize, count = 0;
|
unsigned maxchunksize, chunksize, count = 0;
|
||||||
|
|
||||||
maxchunksize = MAX_CHUNK_SIZE * ((s->cfg->pid == MF4600_PID ||
|
maxchunksize = MAX_CHUNK_SIZE * ((s->cfg->pid == MF4410_PID ||
|
||||||
|
s->cfg->pid == MF4600_PID ||
|
||||||
s->cfg->pid == MF6500_PID ||
|
s->cfg->pid == MF6500_PID ||
|
||||||
s->cfg->pid == MF8030_PID) ? 4 : 1);
|
s->cfg->pid == MF8030_PID) ? 4 : 1);
|
||||||
while (size)
|
while (size)
|
||||||
|
@ -595,6 +600,7 @@ iclass_fill_buffer (pixma_t * s, pixma_imagebuf_t * ib)
|
||||||
if (n != 0)
|
if (n != 0)
|
||||||
{
|
{
|
||||||
if (s->param->channels != 1 &&
|
if (s->param->channels != 1 &&
|
||||||
|
s->cfg->pid != MF4410_PID &&
|
||||||
s->cfg->pid != MF4600_PID &&
|
s->cfg->pid != MF4600_PID &&
|
||||||
s->cfg->pid != MF6500_PID &&
|
s->cfg->pid != MF6500_PID &&
|
||||||
s->cfg->pid != MF8030_PID)
|
s->cfg->pid != MF8030_PID)
|
||||||
|
@ -643,7 +649,7 @@ iclass_finish_scan (pixma_t * s)
|
||||||
query_status (s);
|
query_status (s);
|
||||||
activate (s, 0);
|
activate (s, 0);
|
||||||
query_status (s);
|
query_status (s);
|
||||||
if (mf->last_block == 0x28)
|
if (mf->last_block == 0x28 || (s->cfg->pid==MF4410_PID && mf->last_block==0x38))
|
||||||
{
|
{
|
||||||
abort_session (s);
|
abort_session (s);
|
||||||
}
|
}
|
||||||
|
@ -710,6 +716,7 @@ const pixma_config_t pixma_iclass_devices[] = {
|
||||||
DEV ("Canon imageCLASS MF4010", "MF4010", MF4010_PID, 600, 640, 877, 0),
|
DEV ("Canon imageCLASS MF4010", "MF4010", MF4010_PID, 600, 640, 877, 0),
|
||||||
DEV ("Canon imageCLASS MF3240", "MF3240", MF3200_PID, 600, 640, 877, 0),
|
DEV ("Canon imageCLASS MF3240", "MF3240", MF3200_PID, 600, 640, 877, 0),
|
||||||
DEV ("Canon imageClass MF6500", "MF6500", MF6500_PID, 600, 640, 877, PIXMA_CAP_ADF),
|
DEV ("Canon imageClass MF6500", "MF6500", MF6500_PID, 600, 640, 877, PIXMA_CAP_ADF),
|
||||||
|
DEV ("Canon imageCLASS MF4410", "MF4410", MF4410_PID, 600, 640, 877, 0),
|
||||||
/* FIXME: the following capabilities all need updating/verifying */
|
/* FIXME: the following capabilities all need updating/verifying */
|
||||||
DEV ("Canon imageCLASS MF5630", "MF5630", MF5630_PID, 600, 640, 877, PIXMA_CAP_ADF),
|
DEV ("Canon imageCLASS MF5630", "MF5630", MF5630_PID, 600, 640, 877, PIXMA_CAP_ADF),
|
||||||
DEV ("Canon laserBase MF5650", "MF5650", MF5650_PID, 600, 640, 877, PIXMA_CAP_ADF),
|
DEV ("Canon laserBase MF5650", "MF5650", MF5650_PID, 600, 640, 877, PIXMA_CAP_ADF),
|
||||||
|
|
|
@ -481,6 +481,12 @@
|
||||||
:status :complete
|
:status :complete
|
||||||
:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI)"
|
:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI)"
|
||||||
|
|
||||||
|
:model "imageCLASS MF4410"
|
||||||
|
:interface "USB"
|
||||||
|
:usbid "0x04a9" "0x2737"
|
||||||
|
:status :complete
|
||||||
|
:comment "All resolutions supported (up to 600DPI)"
|
||||||
|
|
||||||
:model "imageCLASS MF4270"
|
:model "imageCLASS MF4270"
|
||||||
:interface "USB"
|
:interface "USB"
|
||||||
:usbid "0x04a9" "0x26b5"
|
:usbid "0x04a9" "0x26b5"
|
||||||
|
|
|
@ -37,7 +37,7 @@ PIXMA MX880 Series, MX882, MX885
|
||||||
.br
|
.br
|
||||||
PIXMA MP700, MP730, PIXMA MP750 (no grayscale)
|
PIXMA MP700, MP730, PIXMA MP750 (no grayscale)
|
||||||
.br
|
.br
|
||||||
ImageCLASS MF3110, MF3240, MF4010, MF4018, MF4120, MF4122
|
ImageCLASS MF3110, MF3240, MF4010, MF4018, MF4120, MF4122, MF4410
|
||||||
.br
|
.br
|
||||||
ImageCLASS MF4140, MF4150, MF4270, MF4350d, MF4370dn, MF4380dn
|
ImageCLASS MF4140, MF4150, MF4270, MF4350d, MF4370dn, MF4380dn
|
||||||
.br
|
.br
|
||||||
|
|
Ładowanie…
Reference in New Issue