kopia lustrzana https://gitlab.com/sane-project/backends
ImageCLASS MF5770 grayscale mode and D480 duplex ADF support.
- backend/pixma_imageclass.c: Added duplex ADF scan for Canon ImageCLASS D480 - backend/pixma_mp730.c: . Fixed ImageCLASS MF5770 grayscale scanning. . Declared ImageCLASS MF5730 and MF5750 (similarity with MF5770). - doc/descriptions/pixma.desc: Documentation updates.merge-requests/1/head
rodzic
aaa18be7e3
commit
a05e6e078b
|
@ -1,3 +1,10 @@
|
|||
2009-06-22 Nicolas Martin <nicols-guest at users.alioth.debian.org>
|
||||
* backend/pixma_imageclass.c, backend/pixma_mp730.c, doc/descriptions/pixma.desc:
|
||||
- Added duplex ADF scan for Canon ImageCLASS D480.
|
||||
- Fixed ImageCLASS MF5770 grayscale scanning.
|
||||
- Moved ImageCLASS MF5730 and MF5750 to pixma_mp730.c (similarity with MF5770).
|
||||
- Updated documentation.
|
||||
|
||||
2009-06-20 Mattias Ellert <mattias.ellert@fysast.uu.se>
|
||||
* po/sane-backends.sv.po: Updated Swedish translations.
|
||||
* backend/hp5400_internal.h, backend/hp5590_cmds.c,
|
||||
|
|
|
@ -178,6 +178,7 @@ activate (pixma_t * s, uint8_t x)
|
|||
{
|
||||
case MF4200_PID:
|
||||
case MF4600_PID:
|
||||
case D480_PID:
|
||||
return iclass_exec (s, &mf->cb, 1);
|
||||
break;
|
||||
case MF4100_PID:
|
||||
|
@ -198,11 +199,14 @@ select_source (pixma_t * s)
|
|||
{
|
||||
iclass_t *mf = (iclass_t *) s->subdriver;
|
||||
uint8_t *data = pixma_newcmd (&mf->cb, cmd_select_source, 10, 0);
|
||||
data[0] = (s->param->source == PIXMA_SOURCE_ADF) ? 2 : 1;
|
||||
data[0] = (s->param->source == PIXMA_SOURCE_ADF ||
|
||||
s->param->source == PIXMA_SOURCE_ADFDUP) ? 2 : 1;
|
||||
data[5] = (s->param->source == PIXMA_SOURCE_ADFDUP) ? 3 : 0;
|
||||
switch (s->cfg->pid)
|
||||
{
|
||||
case MF4200_PID:
|
||||
case MF4600_PID:
|
||||
case D480_PID:
|
||||
return iclass_exec (s, &mf->cb, 0);
|
||||
break;
|
||||
case MF4100_PID:
|
||||
|
@ -233,6 +237,7 @@ send_scan_param (pixma_t * s)
|
|||
{
|
||||
case MF4200_PID:
|
||||
case MF4600_PID:
|
||||
case D480_PID:
|
||||
return iclass_exec (s, &mf->cb, 0);
|
||||
break;
|
||||
case MF4100_PID:
|
||||
|
@ -308,6 +313,7 @@ read_error_info (pixma_t * s, void *buf, unsigned size)
|
|||
{
|
||||
case MF4200_PID:
|
||||
case MF4600_PID:
|
||||
case D480_PID:
|
||||
error = iclass_exec (s, &mf->cb, 0);
|
||||
break;
|
||||
case MF4100_PID:
|
||||
|
@ -668,7 +674,7 @@ const pixma_config_t pixma_iclass_devices[] = {
|
|||
DEV ("Canon imageCLASS MF4270", "MF4270", MF4200_PID, 600, 640, 877, PIXMA_CAP_ADF),
|
||||
DEV ("Canon imageCLASS MF4150", "MF4100", MF4100_PID, 600, 640, 877, PIXMA_CAP_ADF),
|
||||
DEV ("Canon imageCLASS MF4690", "MF4690", MF4600_PID, 600, 640, 877, PIXMA_CAP_ADF),
|
||||
DEV ("Canon imageCLASS D480", "D480", D480_PID, 600, 640, 877, PIXMA_CAP_ADF),
|
||||
DEV ("Canon imageCLASS D480", "D480", D480_PID, 600, 640, 877, PIXMA_CAP_ADFDUP),
|
||||
/* FIXME: the following capabilities all need updating/verifying */
|
||||
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),
|
||||
|
|
|
@ -62,18 +62,20 @@
|
|||
#define IMAGE_BLOCK_SIZE (0xc000)
|
||||
#define CMDBUF_SIZE 512
|
||||
|
||||
#define MP730_PID 0x262f
|
||||
#define MP700_PID 0x2630
|
||||
|
||||
#define MP360_PID 0x263c
|
||||
#define MP370_PID 0x263d
|
||||
#define MP390_PID 0x263e
|
||||
#define MP700_PID 0x2630
|
||||
|
||||
#define MP740_PID 0x264c /* Untested */
|
||||
#define MP710_PID 0x264d
|
||||
#define MP730_PID 0x262f
|
||||
|
||||
#define MF5730_PID 0x265d /* Untested */
|
||||
#define MF5750_PID 0x265e /* Untested */
|
||||
#define MF5770_PID 0x265f
|
||||
|
||||
|
||||
enum mp730_state_t
|
||||
{
|
||||
state_idle,
|
||||
|
@ -285,6 +287,8 @@ handle_interrupt (pixma_t * s, int timeout)
|
|||
case MP360_PID:
|
||||
case MP370_PID:
|
||||
case MP390_PID:
|
||||
case MF5730_PID:
|
||||
case MF5750_PID:
|
||||
case MF5770_PID:
|
||||
if (len != 16)
|
||||
{
|
||||
|
@ -332,6 +336,8 @@ has_ccd_sensor (pixma_t * s)
|
|||
return (s->cfg->pid == MP360_PID ||
|
||||
s->cfg->pid == MP370_PID ||
|
||||
s->cfg->pid == MP390_PID ||
|
||||
s->cfg->pid == MF5730_PID ||
|
||||
s->cfg->pid == MF5750_PID ||
|
||||
s->cfg->pid == MF5770_PID);
|
||||
}
|
||||
|
||||
|
@ -369,27 +375,47 @@ step1 (pixma_t * s)
|
|||
return PIXMA_ENO_PAPER;
|
||||
if (has_ccd_sensor (s))
|
||||
{
|
||||
/* MF5770: Wait 10 sec before starting for 1st page only */
|
||||
if (s->cfg->pid == MF5770_PID && s->param->adf_pageid == 0)
|
||||
switch (s->cfg->pid)
|
||||
{
|
||||
tmo = 10; /* like Windows driver, 10 sec CCD calibration ? */
|
||||
while (--tmo >= 0)
|
||||
{
|
||||
error = handle_interrupt (s, 1000); \
|
||||
if (s->cancel) \
|
||||
return PIXMA_ECANCELED; \
|
||||
if (error != PIXMA_ECANCELED && error < 0) \
|
||||
return error;
|
||||
PDBG (pixma_dbg (2, "CCD Calibration ends in %d sec.\n", tmo));
|
||||
}
|
||||
case MF5730_PID:
|
||||
case MF5750_PID:
|
||||
case MF5770_PID:
|
||||
/* MF57x0: Wait 10 sec before starting for 1st page only */
|
||||
if (s->param->adf_pageid == 0)
|
||||
{
|
||||
tmo = 10; /* like Windows driver, 10 sec CCD calibration ? */
|
||||
while (--tmo >= 0)
|
||||
{
|
||||
error = handle_interrupt (s, 1000); \
|
||||
if (s->cancel) \
|
||||
return PIXMA_ECANCELED; \
|
||||
if (error != PIXMA_ECANCELED && error < 0) \
|
||||
return error;
|
||||
PDBG (pixma_dbg (2, "CCD Calibration ends in %d sec.\n", tmo));
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
activate (s, 0);
|
||||
error = calibrate (s);
|
||||
|
||||
/* MF5770: calibration returns PIXMA_STATUS_FAILED */
|
||||
if (s->cfg->pid == MF5770_PID && error == PIXMA_ECANCELED)
|
||||
error = read_error_info (s, NULL, 0);
|
||||
switch (s->cfg->pid)
|
||||
{
|
||||
case MF5730_PID:
|
||||
case MF5750_PID:
|
||||
case MF5770_PID:
|
||||
/* MF57x0: calibration returns PIXMA_STATUS_FAILED */
|
||||
if (error == PIXMA_ECANCELED)
|
||||
error = read_error_info (s, NULL, 0);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (error >= 0)
|
||||
error = activate (s, 0);
|
||||
|
@ -582,14 +608,17 @@ mp730_fill_buffer (pixma_t * s, pixma_imagebuf_t * ib)
|
|||
/* n = number of full lines (rows) we have in the buffer. */
|
||||
if (n != 0)
|
||||
{
|
||||
if (s->param->channels != 1 && s->cfg->pid != MF5770_PID)
|
||||
if (s->param->channels != 1 &&
|
||||
s->cfg->pid != MF5730_PID &&
|
||||
s->cfg->pid != MF5750_PID &&
|
||||
s->cfg->pid != MF5770_PID)
|
||||
{
|
||||
/* color */
|
||||
/* color, and not an MF57x0 */
|
||||
pack_rgb (mp->imgbuf, n, mp->raw_width, mp->lbuf);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* grayscale */
|
||||
/* grayscale or MF57x0 */
|
||||
memcpy (mp->lbuf, mp->imgbuf, n * s->param->line_size);
|
||||
}
|
||||
block_size = n * s->param->line_size;
|
||||
|
@ -690,7 +719,9 @@ const pixma_config_t pixma_mp730_devices[] = {
|
|||
DEVICE ("Canon MultiPASS MP730", "MP730", MP730_PID, 1200, 637, 868, PIXMA_CAP_ADF),
|
||||
DEVICE ("Canon MultiPASS MP740", "MP740", MP740_PID, 1200, 637, 868, PIXMA_CAP_ADF),
|
||||
|
||||
DEVICE ("Canon imageCLASS MF5770", "MF5770", MF5770_PID, 600, 640, 877, PIXMA_CAP_ADF),
|
||||
DEVICE ("Canon imageCLASS MF5730", "MF5730", MF5730_PID, 1200, 636, 868, PIXMA_CAP_ADF),
|
||||
DEVICE ("Canon imageCLASS MF5750", "MF5750", MF5750_PID, 1200, 636, 868, PIXMA_CAP_ADF),
|
||||
DEVICE ("Canon imageCLASS MF5770", "MF5770", MF5770_PID, 1200, 636, 868, PIXMA_CAP_ADF),
|
||||
|
||||
DEVICE (NULL, NULL, 0, 0, 0, 0, 0)
|
||||
};
|
||||
|
|
|
@ -241,7 +241,7 @@
|
|||
:interface "USB Ethernet"
|
||||
:usbid "0x04a9" "0x172c"
|
||||
:status :good
|
||||
:comment "Works in flatbed and ADF simplex. ADF Duplex supported, but no report yet."
|
||||
:comment "All resolutions supported (up to 2400DPI). Flatbed, ADF simplex and Duplex supported."
|
||||
|
||||
:model "PIXMA MX7600"
|
||||
:interface "USB Ethernet"
|
||||
|
@ -301,7 +301,7 @@
|
|||
:interface "USB"
|
||||
:usbid "0x04a9" "0x26ed"
|
||||
:status :good
|
||||
:comment "All resolutions supported (up to 600DPI)"
|
||||
:comment "All resolutions supported (up to 600DPI). Flatbed, ADF simplex and Duplex supported."
|
||||
|
||||
:model "imageCLASS MF5630"
|
||||
:interface "USB"
|
||||
|
@ -337,7 +337,7 @@
|
|||
:interface "USB"
|
||||
:usbid "0x04a9" "0x265f"
|
||||
:status :good
|
||||
:comment "All resolutions supported (up to 600DPI) in color. Grayscale not working yet in preview (75 dpi capable ?)."
|
||||
:comment "All resolutions supported (up to 600DPI)."
|
||||
|
||||
:model "imageCLASS MF3110"
|
||||
:interface "USB"
|
||||
|
|
Ładowanie…
Reference in New Issue