diff --git a/ChangeLog b/ChangeLog index 236450548..2c4e2ab42 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-07-20 Wittawat Yamwong + + * backend/pixma.c backend/pixma.h backend/pixma_mp150.c + doc/sane-pixma.man doc/descriptions/pixma.desc: + upgraded to version 0.13.1 + added PIXMA MP960 + 2007-07-15 m. allan noah * doc/descriptions/fujitsu.desc, doc/sane-fujitsu.man: diff --git a/backend/pixma.c b/backend/pixma.c index bd5c219c4..a83433fe6 100644 --- a/backend/pixma.c +++ b/backend/pixma.c @@ -949,9 +949,17 @@ read_image (pixma_sane_t * ss, void *buf, unsigned size, int *readlen) ss->image_bytes_read, ss->sp.image_size)); close (ss->rpipe); ss->rpipe = -1; - count = terminate_reader_task (ss, &status); - return (count > 0 - && status != SANE_STATUS_GOOD) ? status : SANE_STATUS_IO_ERROR; + if (terminate_reader_task (ss, &status) > 0 + && status != SANE_STATUS_GOOD) + { + return status; + } + else + { + /* either terminate_reader_task failed or + rpipe was closed but we expect more data */ + return SANE_STATUS_IO_ERROR; + } } if (readlen) *readlen = count; diff --git a/backend/pixma.h b/backend/pixma.h index 5f3e29c4b..0d70d9380 100644 --- a/backend/pixma.h +++ b/backend/pixma.h @@ -108,7 +108,7 @@ typedef u_int32_t uint32_t; /**@{*/ #define PIXMA_VERSION_MAJOR 0 #define PIXMA_VERSION_MINOR 13 -#define PIXMA_VERSION_BUILD 0 +#define PIXMA_VERSION_BUILD 1 /**@}*/ /** \name Error codes */ @@ -138,6 +138,8 @@ typedef u_int32_t uint32_t; #define PIXMA_CAP_EVENTS (1 << 5) #define PIXMA_CAP_TPU (1 << 6) #define PIXMA_CAP_ADFDUP ((1 << 7) | PIXMA_CAP_ADF) +#define PIXMA_CAP_CIS (0) +#define PIXMA_CAP_CCD (1 << 8) #define PIXMA_CAP_EXPERIMENT (1 << 31) /**@}*/ diff --git a/backend/pixma_mp150.c b/backend/pixma_mp150.c index 356f36097..86a5b1743 100644 --- a/backend/pixma_mp150.c +++ b/backend/pixma_mp150.c @@ -87,12 +87,13 @@ /* Generation 2 */ #define MP160_PID 0x1714 -#define MP180_PID 0x1715 /* FIXME */ +#define MP180_PID 0x1715 #define MP460_PID 0x1716 #define MP510_PID 0x1717 #define MP600_PID 0x1718 -/* TODO: #define MP600R_PID 0x1719 */ -/* TODO: #define MP810_PID 0x171a */ +#define MP600R_PID 0x1719 +#define MP810_PID 0x171a +#define MP960_PID 0x171b enum mp150_state_t { @@ -557,9 +558,7 @@ wait_until_ready (pixma_t * s) static int has_ccd_sensor (pixma_t * s) { - /* TODO: add MP810 */ - return (s->cfg->pid == MP800_PID || s->cfg->pid == MP830_PID - || s->cfg->pid == MP800R_PID); + return ((s->cfg->cap & PIXMA_CAP_CCD) != 0); } static int @@ -855,33 +854,38 @@ static const pixma_scan_ops_t pixma_mp150_ops = { PIXMA_CAP_GAMMA_TABLE|PIXMA_CAP_EVENTS|cap \ } +#define END_OF_DEVICE_LIST DEVICE(NULL, 0, 0, 0) + const pixma_config_t pixma_mp150_devices[] = { - /* TODO: PIXMA_CAP_CCD & PIXMA_CAP_CIS */ /* Generation 1: CIS */ - DEVICE ("Canon PIXMA MP150", MP150_PID, 1200, 0), - DEVICE ("Canon PIXMA MP170", MP170_PID, 1200, 0), - DEVICE ("Canon PIXMA MP450", MP450_PID, 1200, 0), - DEVICE ("Canon PIXMA MP500", MP500_PID, 1200, 0), - DEVICE ("Canon PIXMA MP530", MP530_PID, 1200, PIXMA_CAP_ADF), + DEVICE ("Canon PIXMA MP150", MP150_PID, 1200, PIXMA_CAP_CIS), + DEVICE ("Canon PIXMA MP170", MP170_PID, 1200, PIXMA_CAP_CIS), + DEVICE ("Canon PIXMA MP450", MP450_PID, 1200, PIXMA_CAP_CIS), + DEVICE ("Canon PIXMA MP500", MP500_PID, 1200, PIXMA_CAP_CIS), + DEVICE ("Canon PIXMA MP530", MP530_PID, 1200, + PIXMA_CAP_CIS | PIXMA_CAP_ADF), /* Generation 1: CCD */ DEVICE ("Canon PIXMA MP800", MP800_PID, 2400, - PIXMA_CAP_TPU | PIXMA_CAP_48BIT), + PIXMA_CAP_CCD | PIXMA_CAP_TPU | PIXMA_CAP_48BIT), DEVICE ("Canon PIXMA MP800R", MP800R_PID, 2400, - PIXMA_CAP_TPU | PIXMA_CAP_48BIT), + PIXMA_CAP_CCD | PIXMA_CAP_TPU | PIXMA_CAP_48BIT), DEVICE ("Canon PIXMA MP830", MP830_PID, 2400, - PIXMA_CAP_ADFDUP | PIXMA_CAP_48BIT), + PIXMA_CAP_CCD | PIXMA_CAP_ADFDUP | PIXMA_CAP_48BIT), /* Generation 2: CIS */ - DEVICE ("Canon PIXMA MP160", MP160_PID, 600, 0), - DEVICE ("Canon PIXMA MP180", MP180_PID, 1200, 0), - DEVICE ("Canon PIXMA MP460", MP460_PID, 1200, 0), - DEVICE ("Canon PIXMA MP510", MP510_PID, 1200, 0), - DEVICE ("Canon PIXMA MP600", MP600_PID, 2400, 0), - DEVICE ("Canon PIXMA MP600R", UNKNOWN_PID, 2400, PIXMA_CAP_EXPERIMENT), + DEVICE ("Canon PIXMA MP160", MP160_PID, 600, PIXMA_CAP_CIS), + DEVICE ("Canon PIXMA MP180", MP180_PID, 1200, PIXMA_CAP_CIS), + DEVICE ("Canon PIXMA MP460", MP460_PID, 1200, PIXMA_CAP_CIS), + DEVICE ("Canon PIXMA MP510", MP510_PID, 1200, PIXMA_CAP_CIS), + DEVICE ("Canon PIXMA MP600", MP600_PID, 2400, PIXMA_CAP_CIS), + DEVICE ("Canon PIXMA MP600R", MP600R_PID, 2400, PIXMA_CAP_CIS), /* Generation 2: CCD */ - DEVICE ("Canon PIXMA MP810", UNKNOWN_PID, 4800, PIXMA_CAP_EXPERIMENT), /* TPU, 4800x4800DPI */ + DEVICE ("Canon PIXMA MP810", MP810_PID, 4800, + PIXMA_CAP_CCD | PIXMA_CAP_TPU), + DEVICE ("Canon PIXMA MP960", MP960_PID, 4800, + PIXMA_CAP_CCD | PIXMA_CAP_TPU), - DEVICE (NULL, 0, 0, 0) + END_OF_DEVICE_LIST }; diff --git a/doc/descriptions/pixma.desc b/doc/descriptions/pixma.desc index ab6021752..be2d8d518 100644 --- a/doc/descriptions/pixma.desc +++ b/doc/descriptions/pixma.desc @@ -11,7 +11,7 @@ ; See doc/descriptions.txt for details. :backend "pixma" ; name of backend -:version "0.13.0" ; version of backend (or "unmaintained") +:version "0.13.1" ; version of backend (or "unmaintained") ;:new :yes ; Is the backend new to this SANE release? ; :yes or :no :manpage "sane-pixma" ; name of manpage (if it exists) @@ -33,7 +33,7 @@ :model "PIXMA MP160" :interface "USB" :usbid "0x04a9" "0x1714" -:status :minimal +:status :basic :model "PIXMA MP170" :interface "USB" @@ -43,7 +43,7 @@ :model "PIXMA MP180" :interface "USB" :usbid "0x04a9" "0x1715" -:status :untested +:status :basic :model "PIXMA MP450" :interface "USB" @@ -54,7 +54,7 @@ :model "PIXMA MP460" :interface "USB" :usbid "0x04a9" "0x1716" -:status :untested +:status :basic :model "PIXMA MP500" :interface "USB" @@ -64,7 +64,7 @@ :model "PIXMA MP510" :interface "USB" :usbid "0x04a9" "0x1717" -:status :untested +:status :basic :model "PIXMA MP530" :interface "USB" @@ -74,12 +74,14 @@ :model "PIXMA MP600" :interface "USB" :usbid "0x04a9" "0x1718" -:status :minimal +:status :basic +:comment "2400DPI doesn't work." -;:model "PIXMA MP600R" -;:interface "USB" -;:usbid "0x04a9" "0x1719" -;:status :untested +:model "PIXMA MP600R" +:interface "USB" +:usbid "0x04a9" "0x1719" +:status :minimal +:comment "2400DPI doesn't work." :model "PIXMA MP750" :interface "USB" @@ -111,10 +113,10 @@ :status :basic :comment "No film scan." -;:model "PIXMA MP810" -;:interface "USB" -;:usbid "0x04a9" "0x171a" -;:status :untested +:model "PIXMA MP810" +:interface "USB" +:usbid "0x04a9" "0x171a" +:status :untested :model "PIXMA MP830" :interface "USB" @@ -122,6 +124,11 @@ :status :basic :comment "Sigle-side ADF works but duplex doesn't work yet." +:model "PIXMA MP960" +:interface "USB" +:usbid "0x04a9" "0x171b" +:status :minimal + :model "SmartBase MP360" :interface "USB" :usbid "0x04a9" "0x263c" diff --git a/doc/sane-pixma.man b/doc/sane-pixma.man index 41551794c..7f390eb48 100644 --- a/doc/sane-pixma.man +++ b/doc/sane-pixma.man @@ -1,4 +1,4 @@ -.TH "sane-pixma" "5" "09 April 2007" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy" +.TH "sane-pixma" "5" "19 July 2007" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy" .IX sane-pixma .SH NAME sane-pixma \- SANE backend for Canon PIXMA MP series @@ -10,9 +10,11 @@ access to Canon PIXMA multi-function devices (All-in-one printers). Currently, the following models work with this backend: .PP .RS -PIXMA MP150, PIXMA MP170, PIXMA MP450, PIXMA MP500 +PIXMA MP150, MP160, MP170, MP180, MP450, MP460 .br -PIXMA MP530, PIXMA MP800, PIXMA MP800R, PIXMA MP830, +PIXMA MP500, MP510, MP530, MP600, MP600R +.br +PIXMA MP800, MP800R, MP810, MP830, MP960 .br MultiPASS MP700, PIXMA MP750 (no grayscale) .RE @@ -21,20 +23,20 @@ The following models are not well tested and/or the scanner sometimes hangs and must be switched off and on. .PP .RS -PIXMA MP160, PIXMA MP180, PIXMA MP460, PIXMA MP510, PIXMA MP600 +SmartBase MP360, MP370, MP390 .br -SmartBase MP360, MultiPASS MP730, PIXMA MP760, PIXMA MP780 +MultiPASS MP730, PIXMA MP760, PIXMA MP780 .RE .PP The backend supports .br -* resolutions at 75,150,300,600,1200 and 2400 DPI, +* resolutions at 75,150,300,600,1200 and 2400 DPI (still buggy), .br * color and grayscale mode, .br -* a custom gamma table with 4096 entries and +* a custom gamma table and .br -* automatic document feeder. +* automatic document feeder (only single side). .PP The device name is in the form pixma:xxxxyyyy_zzzzz where x, y and z are vendor ID, product ID and serial number respectively.