From 354b9a583f7037b6ba37fd35b5c4e645df585d3e Mon Sep 17 00:00:00 2001 From: Julien BLACHE Date: Tue, 5 May 2009 10:53:47 +0200 Subject: [PATCH 01/17] Update documentation to reflect the switch from CVS to git Basically s/CVS/git/ for now, more changes in the future? --- ChangeLog | 4 ++++ doc/backend-writing.txt | 22 +++++++++++----------- doc/releases.txt | 4 ++-- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 219980f8c..8500debcd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2009-05-05 Julien Blache + * doc/backend-writing.txt, doc/releases.txt: update for the switch + to git. + 2009-05-04 Chris Bagwell * acinclude.m4: Rename --enable-fork-process to --enable-pthreads to match internal usage. Stop linking in pthread when disabled. diff --git a/doc/backend-writing.txt b/doc/backend-writing.txt index 792bb7169..fb09c9217 100644 --- a/doc/backend-writing.txt +++ b/doc/backend-writing.txt @@ -50,7 +50,7 @@ of these files, "autoreconf" should be called. This will then call a chain of autotools, such as autoconf to generate configure, autoheader to generate include/sane/config.h.in, and automake to generate various Makefile.in's from Makefile.am's. All changes made by "autoreconf" must -be commited to CVS together. +be commited together. When running configure, the Makefiles in the main and sub-directories are created from their respective Makefile.in files. Also include/sane/config.h @@ -81,10 +81,10 @@ sane-backends/ mkinstalldirs: Part of the build system as explained above. * ChangeLog: The ChangeLog contains all the changes made since the last stable release. - If anything is changed in CVS, it must be also mentioned in ChangeLog. - It's not enough to write just a CVS commit message, as users won't have + If anything is changed in git, it must be also mentioned in ChangeLog. + It's not enough to write just a git commit message, as users won't have access to these messages. For more details on the format, see the SANE - CVS page on the website. + git page on the website. * ChangeLog-1.0.0, ChangeLog-1.0.1 (...): These files contain the ChangeLogs of older releases. Once a new release has been made, the current ChangeLog renamed to ChangeLog-1.something.something @@ -423,7 +423,7 @@ DOCUMENTATION your backend, you should include an update to the .desc file which reflects the new state of the backend. The .desc files are used to create the HTML lists of supported devices. These lists are updated automatically when you - change a .desc file in CVS. See e.g. + change a .desc file in git. See e.g. http://www.sane-project.org/lists/sane-mfgs-cvs.html for the results. * The .desc files are located in the directories "doc/descriptions" and @@ -483,14 +483,14 @@ In sane-backends/doc/ description file. -INCLUDING INTO CVS +INCLUDING INTO git ------------------ -* If you want to include your backend into CVS use the latest CVS to make - patches. Check the mailing list and the bug-tracking system for information - about bugs to avoid. +* If you want to include your backend into SANE's git tree use the latest git + to make patches. Check the mailing list and the bug-tracking system for + information about bugs to avoid. -* If your backend isn't included yet in the SANE CVS tree, write an email to +* If your backend isn't included yet in the SANE's git tree, write an email to the SANE mailing list (sane-devel) and ask for inclusion. Usually one of the developers will check the backend for common mistakes and test - compilation. If everything is ok the backend will be added to the CVS tree. + compilation. If everything is ok the backend will be added to the git tree. diff --git a/doc/releases.txt b/doc/releases.txt index ab3331851..c1d42a97c 100644 --- a/doc/releases.txt +++ b/doc/releases.txt @@ -1,4 +1,4 @@ -2008-01-10 +2009-05-05 This text summarizes some points to pay attention to when a new release of sane-backends is planned. @@ -27,7 +27,7 @@ Before the release: * sane-backends.lsm: update * ChangeLog: set release marker * cvs commit -* tag CVS with release tag; e.g.: 'cvs tag RELEASE_1_0_15' +* tag git with release tag; e.g.: 'git tag -a RELEASE_1_0_15' Making the release: From c16facfab6d40ce59e9f1f41bca9b7a8cd70ead4 Mon Sep 17 00:00:00 2001 From: "m. allan noah" Date: Tue, 5 May 2009 15:04:58 -0400 Subject: [PATCH 02/17] changelog from 1.0.20 in new file --- ChangeLog-1.0.20 | 2087 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 2087 insertions(+) create mode 100644 ChangeLog-1.0.20 diff --git a/ChangeLog-1.0.20 b/ChangeLog-1.0.20 new file mode 100644 index 000000000..fbaacaab0 --- /dev/null +++ b/ChangeLog-1.0.20 @@ -0,0 +1,2087 @@ +2009-05-03 Chris Bagwell + * Makefile.in, aclocal.m4, configure, */Makefile.in: Regenerated + with newer automake. + * backend/Makefile.am, tools/sane-config.in: Add missing + $GPHOTO2_LDFLAGS so library can be found. + * tools/Makefile.am: Add mising $SCSI_LIBS to sane-find-scanner. + +****** Release of sane-backends 1.0.20. End of code freeze ****** + +2009-05-03 m. allan noah + * config.guess, config.sub: updated to latest versions + * NEWS, configure.in, configure: updated for 1.0.20 + * sane-backends.lsm, doc/releases.txt: minor tweaks + * doc/descriptions/coolscan3.desc, doc/descriptions/rts8891.desc: + add :new marker, correct manpage link + +2009-05-01 m. allan noah + * backend/fujitsu.c: copy_buffer() needs to count lines, or M309[12] + cannot scan in duplex + +2009-04-30 m. allan noah + * backend/fujitsu.c: ignore errors in scanner_control(), + M3091 has not worked since sane 1.0.19, due to this. + +2009-04-30 m. allan noah + * acinclude.m4, backend/gphoto2.c, configure, include/sane/config.h.in: + deal with upcoming gphoto2 interface change (patch by Chris Bagwell) + * po/sane-backends.nl.po: updates from Martin Kho + +2009-04-29 m. allan noah + * po/sane-backends.nl.po: updates from Martin Kho + * po/sane-backends.de.po: updates from Burkhard Luck + * po/Makefile.am, po/Makefile.in, po/sane-backends.en_GB.po: new + translation from Andrew Coles + * po/*.po: rebuilt with new strings + +2009-04-29 Stéphane Voltz + * doc/sane-genesys.man doc/sane-rts8891.man: documentation updates and + cleanups + +2009-04-28 Julien Blache + * sanei/sanei_scsi.c: /proc/scsi is being deprecated in the Linux + kernel; use sysfs for SCSI device enumeration in + sanei_scsi_find_devices() by default, keep + sanei_proc_scsi_find_devices() as a fallback option. + +2009-04-27 Gerhard Jaeger + * backend/plustek-usbdevs.c: + Tweaked highspeed settings for Epson 1260 + +2009-04-27 Stéphane Voltz + * backend/rts8891.c backend/rts8891.h backend/rts8891_devices.c + backend/rts8891_low.c backend/rts8891_low.h backend/rts88xx_lib.c + backend/rts88xx_lib.h: turn off scanner sharing option to off by default + to keep on the safe side, copyright and internal version updates. + +2009-04-27 Stéphane Voltz + * backend/genesys.c backend/genesys_gl646.c backend/genesys_devices.c: + shading calibration fixes for HP2300 + +2009-04-25 Alessandro Zummo + * backend/epson2.c: fixed TPU warmup retry + +2009-04-23 Stéphane Voltz + * backend/genesys.c backend/genesys_gl646.c backend/genesys_devices.c: + y scan position and shading calibration fixes for MD5345/MD6471 + +2009-04-23 m. allan noah + * doc/descriptions/fujitsu.desc: update S1500 status to complete + +2009-04-22 m. allan noah + * include/sane/sane.h: convert new frame and status to #define + +2009-04-21 Nicolas Martin + * doc/sane-pixma.man, doc/descriptions/pixma.desc, + backand/pixma_mp150.c: + Updated documentation for Pixma MP240, reported to work fine by Nik. + +2009-04-21 Alex Belkin + * backend/xerox_mfp.c: update version number. + +2009-04-20 m. allan noah + * backend/fujitsu.c, backend/fujitsu.conf.in, + doc/descriptions/fujitsu.desc: add S1500 usb ids and status + * backend/canon_dr.c: update credits + * doc/sane-fujitsu.man, doc/sane-canon_dr.man: update version numbers, + dates, credits and known issues + * doc/saned.man: remove section about uncontrolled data port range + +2009-04-20 Alessandro Zummo + * backend/coolscan3.c: temporarily disable infrared. + +2009-04-17 Nicolas Martin + * doc/sane-pixma.man, doc/descriptions/pixma.desc: + Updated documentation for Pixma MP540, reported to work fine by Rogge. + +2009-04-17 Pierre Willenbrock + * backend/genesys.c, backend/genesys_gl646.c, + backend/genesys_gl841.c, backend/genesys_low.h: Always do shading + calibration in color mode on gl841. + * backend/genesys.c, backend/genesys_gl841.c: Fix bugs introduced above. + +2009-04-16 Stéphane Voltz + * backend/genesys.h backend/genesys.c backend/genesys_gl646.c + backend/genesys_devices.c: y scan position fixes + - added a 'clear calibration cache button' + +2009-04-15 Stéphane Voltz + * backend/genesys.c backend/genesys_gl646.c: calibration cache + activation for gl646 based scanners + +2009-04-15 m. allan noah + * backend/fujitsu.c, doc/descriptions/fujitsu.desc: backend v93 + - return cmd status for reads of sensor options + * backend/canon_dr.c, doc/descriptions/canon_dr.desc: backend v26 + - return cmd status for reads of sensor options + - allow rs to adjust read length for all bad status responses + +2009-04-14 Stéphane Voltz + * backend/genesys.c backend/genesys_devices.c backend/genesys_gl646.c: + shading calibration rework for GL646 based scanners + +2009-04-13 m. allan noah + * tools/sane-desc.c: fix double summing of untested column + +2009-04-13 Stéphane Voltz + * backend/rts8891.c: minor version change to test commit scripts + +2009-04-13 Stéphane Voltz + * backend/pnm.c: conditional handling of STATUS_HW_LOCKED + and STATUS_WARMING_UP + +2009-04-12 m. allan noah + * doc/doxygen-sanei.conf.in: update to recent version of doxygen + +2009-04-12 m. allan noah + * configure.in: change version to 1.0.20cvs + * configure: rebuild from configure.in + * include/sane/sane.h: hide API changes (minor, frame and status) + * backend/canon_dr.c, backend/fujitsu.c: SANE_FRAME_JPEG + * backend/coolscan3.c: SANE_FRAME_RGBI + * backend/genesys_gl646.c, backend/genesys_gl841.c: STATUS_HW_LOCKED + * backend/rts8891.c, frontend/scanimage.c: STATUS_WARMING_UP + * backend/pixma_io_sanei.c, backend/xerox_mfp.c, + backend/sane_strstatus.c: STATUS_HW_LOCKED & STATUS_WARMING_UP + * doc/releases.txt: minor updates for new build system + +2009-04-07 Nicolas Martin + * doc/sane-pixma.man, doc/descriptions/pixma.desc: + Updated documentation for i-SENSYS MF4018 support. + +2009-04-07 Julien Blache + * doc/descriptions-external/epkowa.desc: update for iScan 2.19.0, + from Olaf Meeuwissen. + +2009-04-05 Nicolas Martin + * backend/pixma_io.h, backend/pixma_io_sanei.c, doc/sane-pixma.man: + Increased timeouts for read bulk and write bulk operations to 10s + Changed minimum timeout for interrupt read to 100ms + For MAC OS X : added a wrapper to sanei_usb_read_int as darwin libusb + does not handle timeouts in interrupt reads. This disables button scan + for MAC OS X, updated man page with this info. + * backend/pixma_mp150.c: + Added 2 new Canon Pixma models but usb pid/vid yet unknown. + +2009-04-05 m. allan noah + * backend/canon_dr.[ch], backend/canon_dr.conf.in: backend v24 + - fix DR-2510C duplex deinterlacing code + - rewrite sane_read helpers to read until EOF + - update sane_start for scanners that dont use object_position + - dont call sanei_usb_clear_halt() if device is not open + - increase default buffer size to 4 megs + - set buffermode on by default + - hide modes and resolutions that DR-2510C lies about + - read_panel() logs front-end access to sensors instead of timing + - rewrite do_usb_cmd() to use remainder from RS info + * doc/desciptions/canon_dr.desc: backend v24, update DR-2510C comment + +2009-03-31 Louis Lagendijk + * backend/pixma_bjnp.c: + - silenced some debug statements during scanner detections + - increased timeouts to 20 seconds as 10 seconds is apparently + - not enough for the combination of a Mac and an MX850. + +2009-03-21 Alex Belkin + * backend/xerox_mfp.conf.in: add Xerox Phaser 6110MFP + * backend/xerox_mfp.c: compatibility with scanners w/o feeder. + +2009-03-28 Julien Blache + * backend/avision.c: fix typos in error messages in + sense_handler(). + +2009-03-27 m. allan noah + * backend/canon_dr.[ch], backend/canon_dr-cmd.h: backend v23 + - rewrite all image data processing code + - handle more image interlacing formats + - re-enable binary mode on some scanners + - limit some machines to full-width scanning + * doc/desciptions/canon_dr.desc: v23, improved comments + +2009-03-25 m. allan noah + * backend/canon_dr.[ch]: backend v22 + - add deinterlacing code for DR-2510C in duplex and color + +2009-03-25 Pierre Willenbrock + * backend/genesys.c, backend/genesys_gl646.c, + backend/genesys_gl841.c, backend/genesys_low.h: Add calibration cache + +2009-03-24 m. allan noah + * backend/canon_dr.[ch], backend/canon_dr-cmd.h: backend v21 + - correct rgb padding macro + - skip send_panel and ssm_df commands for DR-20xx scanners + * doc/desciptions/microtek2.desc: add ScanMaker 6400XL + +2009-03-24 Chris Bagwell + * doc/Makefile.am: Don't include any template.desc. into + generated HTML files. + +2009-03-23 m. allan noah + * backend/canon_dr.[ch], backend/canon_dr-cmd.h: backend v20 + - improved macros for inquiry and set window + - shorten inquiry vpd length to match windows driver + - remove status-length config option + - add padded-read config option + - rewrite do_usb_cmd to pad reads and calloc/copy buffers + * backend/canon_dr.conf.in: s/status-length/padded-read/g + +2009-03-22 m. allan noah + * backend/canon_dr.[ch]: backend v19 + - pad gray deinterlacing area for DR-2510C + - override tl_x and br_x for fixed width scanners + * doc/descriptions/canon_dr.desc: backend v19, update comments + +2009-03-21 m. allan noah + * backend/canon_dr.[ch], backend/canon_dr-cmd.h: backend v15 thru v18 + - add byte-oriented duplex interlace code + - add RRGGBB color interlace code + - add basic support for DR-2580C, DR-2050C, DR-2080C, DR-2510C + - add more unknown setwindow bits + - add support for 16 byte status packets + - clean do_usb_cmd error handling (call reset more often) + - set status packet size from config file + - rewrite config file parsing to reset options after each scanner + - add config options for vendor, model, version + - dont call inquiry if those 3 options are set + - remove default config file from code + - add initial gray deinterlacing code for DR-2510C + - rename do_usb_reset to do_usb_clear + * doc/descriptions/canon_dr.desc: backend v18, update model status + * backend/canon_dr.conf.in: added better comments and new options + +2009-03-21 Pierre Willenbrock + * backend/genesys_devices.c: Enable Motor again for combined + dark/bright calibration, fix calculation of pixel number used in + calibration + * backend/genesys_devices.c, backend/genesys_gl646.c, + backend/genesys_gl841.c, backend/genesys_low.h: Remove park_head + * backend/genesys_devices.c, backend/genesys_gl841.c: Calculate + shading coefficients using maximum input resolution available + +2009-03-21 m. allan noah + * backend/fujitsu.[ch]: backend v91 + - remove unused temp file code + +2009-03-20 m. allan noah + * backend/hpljm1005.c: use private function instead of round() + +2009-03-19 Pierre Willenbrock + * backend/genesys_devices.c, backend/genesys.conf.in: + Add basic support for Visioneer XP100 rev 3 and USB IDs for + Syscan DocketPort 465 + +2009-03-06 Louis Lagendijk + * backend/pixma_bjnp.c backend/pixma_bjnp.h + backend/pixma_bjnp_private.h backend/pixma_io_sanei.c: + Make bjnp protocol more resilient against packet loss and corruption + Changed timeout for all responses to be at least 10 seconds + Send all broadcasts for scanner detection 5 times + Made sure scanners are added to device list only once + Changed device-id for bjnp so it uses scanner hostname/ip-address + instead of mac address as this is more human friendly. + To make room, use scanner model instead of USB-id (which is bogus + for network scanners + +2009-03-17 m. allan noah + * doc/desc/gt68xx.desc, backend/gt68xx.conf.in: add NeatReceipts + Mobile Scanner (from Kelly Price) + +2009-03-13 m. allan noah + * frontend/scanimage.c, doc/scanimage.man: make -B (buffer-size) + selectable, and make long name consistent. (#309672 by Johannes Berg) + +2009-03-13 m. allan noah + * tools/sane-desc.c: remove 8859-1 chars from string cleaner, + enforce only printable ASCII on output + +2009-03-13 Ilia Sotnikov + * frontend/saned.c: + - Remove unnecessary 'res' variable assignment in check_host() + (AF-indep version) + +2009-03-13 Julien Blache + * doc/descriptions-external/epkowa.desc: update for iScan 2.18.0, + from Olaf Meeuwissen. + * frontend/saned.c: rework Ilia's changes in + check_host(). Explicitly bind IPv6 addresses first, introduce + do_bindings_family() split off of do_bindings(). + +2009-03-12 Ilia Sotnikov + * frontend/saned.c: + - Allow host checking to proceed if no local name was found + +2009-03-12 Ilia Sotnikov + * frontend/saned.c: + - Use hstrerror (h_errno) instead of strerror(errno) on gethostbyname() + errors + +2009-03-12 Nicolas Martin + * doc/sane-pixma.man, doc/descriptions/pixma.desc: + Added ImageClass MF4010 support in pixma backend docs. + * backend/pixma_imageclass.c: + Removed ADF capability to ImageClass models without ADF + * backend/pixma.h, backend/pixma_common.c, backend/pixma_io_sanei.c: + Added a PIXMA_EOF error return code + +2009-03-09 Stéphane Voltz + * backend/genesys.c backend/genesys.h backend/genesys_devices.c + backend/genesys_gl646.c doc/descriptions/lexmark.desc: cleanups + for genesys backend. Change in document detection for gl646 + sheetfed scanners. + - lexmark backend description update + +2009-03-09 Stéphane Voltz + * backend/genesys.c backend/genesys_devices.c backend/genesys_gl646.c: + 1200 dpi scan fix and head positionning fixes + + +2009-03-07 m. allan noah + * backend/canon_dr.c, backend/canon_dr.conf.in: backend version 14 + - remove HARD_SELECT from counter (Legitimate, but API violation) + - attach to CR-series scanners as well + +2009-03-06 Louis Lagendijk + * backend/pixma_bjnp_private.h: disabled experimental/incomplete + button handling for bjnp protocol as it seems to cause problems + with xsane preview + +2009-03-06 m. allan noah + * backend/canon_dr.c, backend/canon_dr.conf.in, + doc/descriptions/canon_dr.desc: backend version 13 + - new vendor ID for recent machines + - add usb ids for several new machines + - DR-4010C reported good + +2009-03-05 m. allan noah + * backend/umax1220u.c: set initial scan area dimensions to maximum + +2009-03-05 Chris Bagwell + * configure.in: Allow user to disable latex support; original + patch from Johnson Earls. + +2009-03-05 m. allan noah + * doc/descriptions-external/epkowa.desc: update all broken urls + +2009-03-04 m. allan noah + * doc/descriptions/coolscan3.desc, doc/sane-coolscan3.man, + doc/Makefile.in|am: add missing coolscan3 docs + * backend/dll.conf.in: # out epson and coolscan2, remove hpoj text + * doc/descriptions/epson2.desc: add Epson RX-620 + +2009-03-03 Pierre Willenbrock + * backend/genesys_gl841.c: Fix the generated generic gamma table. + +2009-02-28 Chris Bagwell + * tools/sane-config.in: Add space mistakenly removed during + last update. + +2009-03-03 Julien Blache + * doc/descriptions/epson.desc: add Epson RX-620 (0x04b8 0x0811), + reported by Heikki Kantola. + +2009-02-28 Chris Bagwell + * acinclude.m4, tools/sane-config.in: Add in missing libraries + to sane-config missed during fix to stop using LIBS to link everything. + Add back in code to move LDFLAGS out of $GPHOTO2_LIBS and into + GPHOTO2_LDFLAGS. + +2009-03-02 Stéphane Voltz + * backend/genesys_devices.c, backend/genesys_gl646.c: fix 400, 1200 + and 2400 dpi scan modes for MD5345/MD6471 + +2009-03-02 Julien Blache + * frontend/saned.c: work around backends that can't keep their + dirty fingers off stdin/stdout/stderr when run through inetd, + breaking the network dialog and crashing the remote net backend. + +2009-02-28 Chris Bagwell + * m4/byteorder.m4: Delete temporary file in all cases. + * backend/Makefile.am, japi/Makefile.am: Use BUILT_SOURCES + instead of dependency so that files are not compiled + during "dist" target. + +2009-02-28 Pierre Willenbrock + * backend/genesys.conf.in, backend/genesys_devices.c, + backend/genesys_gl841.c, backend/genesys_low.h: Add support for + Ambir/Syscan DocketPORT 665 + * backend/genesys.conf.in, backend/genesys_devices.c, + backend/genesys_low.h: Add support for Visioneer Roadwarrior + * backend/genesys_gl841.c: Adjust gl841 part to recent changes + +2009-02-27 Stéphane Voltz + * backend/genesys.c backend/genesys.conf.in backend/genesys.h + backend/genesys_devices.c backend/genesys_gl646.c backend/genesys_gl841.c + backend/genesys_low.h: rewrite of gl646 internals to enable easy + scanner addition and better calibration process. Untested support for + hp3670. Use of id in genesys_devices structures to have more robust + descriptions. + +2009-02-25 Chris Bagwell + * acinclude.m4, backend/*.[ch], tools/*.[ch], frontend/*.[ch]: + Global replace of u_int??_t with C9x standard based uintxx_t + in order to remove some tricky and overlapping portability logic + from acinclude.m4 and leave it in only m4/stdint.m4. + +2009-02-24 Chris Bagwell + * configure.in, m4/stdint.m4: Update to latest version to + get latest fixes and use logic to not recreate _stdint.h if + no changes (to prevent unneeded recompiles). + * m4/byteorder.m4: Added support to reuse existing byteorder.h if + no changes to prevent timestamp causing a recompile. + +2009-02-24 m. allan noah + * frontend/scanimage.c: improved comments, simplified x/y option code, + removed buggy -1/+1 x/y code (#311172), expose non-settable options, + check for invalid caps on options, handle option descs with \n + * doc/releases.txt: add note about cvs checkout on alioth. + +2009-02-24 m. allan noah + * backend/*.[ch]: more consistent #include "../include/sane/config.h" + +2009-02-24 m. allan noah + * backend/Makefile.am/in, backend/xerox_mfp.conf.in: should use conf.in + +2009-02-23 Chris Bagwell + * backend/Makefile.am: Add back in deletion of $(sanelibdir)/libsane.* + for buggy libtools. Add some minor documentation. + * doc/backend-writing.txt: Add minor document updates to reflect + conversions to automake. + +2009-02-23 m. allan noah + * backend/fujitsu.c, backend/fujitsu.conf.in, + doc/descriptions/fujitsu.desc, doc/sane-fujitsu.man: backend v90, + add S510M usb ID's, add fi-6010N to .desc + * backend/epjitsu.conf.in, doc/descriptions/epjitsu.desc, + doc/sane-epjitsu.man: add S300M usb ID's + +2009-02-23 Pierre Willenbrock + * backend/genesys_devices.c, backend/genesys_gl841.c, + backend/genesys_low.h: Add post_scan and eject_feed to struct + Genesys_Model + * backend/genesys.c, backend/genesys_gl646.c, + backend/genesys_gl841.c: Move sanei_genesys_{start,stop}_motor into + chip specific sources + backend/genesys_gl841.c: Make start/stop_(motor, now)action + actually work, various warning cleanups + +2009-02-23 Jonathan Bravo Lopez + backend/hp3900_config.c: Fix area of negative/slide scans for + HP ScanJet G3110. + +2009-02-22 Chris Bagwell + * japi/Makefile.am: Add back -version-number to java library but + also add V_REV. + * backend/Makefile.am: Use variables to add libraries to backends + instead of direct substitution. Easier to touch up variables on + problem platforms then substitution. Also, add back in creating + dll.d directory; missed during conversion. + * backend/genesys_gl841.c: Portablity fixes for strict + C compilers. + +2009-02-21 Chris Bagwell + * po/Makefile.am, configure.in: convert remaining directory, + po, to use automake. + * doc/Makefile.am: Get rid of unneeded gnu extensions to quieten + down autotools warnings. + * lib/getopt.c, lib/getopt1.c: Fix disabling getopt compile again. + +2009-02-20 m. allan noah + * backend/avision.c: backend v290, fix reader_pid and NVRAM option + issues, by Mattias Ellert. + * backend/fujitsu.c: backend v89, fi-4750 has no serial number support + * doc/descriptions/fujitsu.desc: backend v89, remove 'MAC/TWAIN' text + * doc/sane-fujitsu.man: backend v89 + * backend/.cvsignore: ignore *.loT + +2009-02-01 Mattias Ellert + * tools/Makefile.am: Add missing liblib dependencies + * frontend/scanimage.c: Restore alloca include order + +2009-02-19 Chris Bagwell + * configure.in, Makefile.am, backend/Makefile.am: Have + configure define configdir so all makefiles can use + it (fixes bug introduce with sanei converted to automake). + Enable running testsuite during distcheck. + * japa/Makefile.am: Convert japi to automake. + +2009-02-19 Julien Blache + * configure.in: add --enable-libusb_1_0 and check for libusb-1.0 + using pkg-config. + * sanei/sanei_usb.c: add support for libusb-1.0. + * tools/sane-find-scanner.c: add support for libusb-1.0. + * tools/check-usb-chip.c: compile as an empty file if libusb-1.0 + is used. + +2009-02-18 Chris Bagwell + * configure.in, tools/Makefile.am: convert tools to automake. + Add tools/openbsd to distribution package. + * include/Makefile.am: include files should have been installed + under sane/ directory when converted to automake. + * doc/Makefile.am: Cleanup. Use automake's built in support to + install docs within subdirectories. + * Makefile.am, testsuite: Convert testsuite to automake. Waiting + for test backend bugfix before enabling this to run during "distcheck". + +2009-02-18 Julien Blache + * configure.in, configure: raise avahi-client dependency to + 0.6.24, following a needed bugfix in this release. + * backend/net.c: do not lock the Avahi thread before stopping + it. It looks like it's no longer necessary to do so. + * frontend/saned.c: fix handling of Avahi server restart so it + actually works. + +2009-02-14 Chris Bagwell + * configure.in, doc/Makefile.am, frontend/Makefile.am, + include/Makefile.am, sanei/Makefile.am, tools/Makefile.am: + convert frontend, include, and sanei directories to use + automake. Only reference libsanei.la now. Use am_conditional + to compile sanei_jpeg.lo. distcheck now runs sanei/wire_test. + +2009-02-13 Chris Bagwell + * Makefile.am, configure.in, doc/Makefile.am: Convert + doc/Makefile to use automake. Main difference is that + no longer installs man pages for backends that are not + compiled. Moved install ownership of $top_srcdir docs + to $top_srcdir's Makefile. + +2009-02-06 Chris Bagwell + * configure.in, backend/Makefile.am: Add back change to + use -version-number even though its known not to work on + some platforms (OS/2). -version-info results in a variety of + version numbers in soname based on platform and would not + be easily mappable back to values currently return by + each backend's sane_init(). ltmain.sh will need to be + hand patched for any known issues. + +2009-02-08 Pierre Willenbrock + * backend/genesys_gl841.c: Remove "init device" usb request. + * backend/genesys_gl841.c, backend/genesys_devices.c, + backend/genesys_low.h: Add support for uncalibrated scans in all + modes for Visioneer Strobe XP300. Front- and backside are + side-by-side, backside mirrored horizontally. + * doc/descriptions/genesys.desc: Added XP300 to the genesys + desc file. + +2009-02-06 Chris Bagwell + * configure.in, backend/Makefile.am: Add back in support for + optionally linking in sanei_jpeg.lo under backend directory; + but using configure and not with GNU make extensions. + Move back to libtool's -version-info instead of -version-number + because the later has known bugs on platforms such as OS/2. + +2009-02-04 Chris Bagwell + * configure.in, acinclude.ac: Cleanup autoconf 2.63 warnings. + add cv_ prefix to cached variable. Remove AC_ARG_PROGRAM as + automake already invokes this. When prefered AC_USE_SYSTEM_EXTENSIONS + exists, use that instead of AC_GNU_SOURCE/AC_AIX/AC_MINUX. + Cleanup socket detection more by creating only a single + SOCKET_LIBS that contains list of all optional libraries + for any socket related funciton. Make sure that checks + for socket related functions use SOCKET_LIBS when searching. + Check for getopt_long() and getopt.h. Make OS/2 use + -no-undefined (same as windows). + * ltmain.sh, m4/libtool.m4: Upgrade to libtool 1.5.26. + * Makefile.am: Cleanups to match configure updates. + * frontend/scanimage.c, include/Makefile.in, lib/getopt.c + lib/getopt1.c, toosl/sane-desc.c, include/lgetopt.h: + Rename internal getopt.h to lgetopt.h to allow using + external getopt.h when it exists. This allows to go + back to optionally compiling getopt()/getopt_long() and its + prototypes and not have conflicts with external headers/symbols. + +2009-02-04 Nicolas Martin + * doc/sane-pixma.man doc/descriptions/pixma.desc: + Added ImageClass MF4120 support in pixma backend docs. + +2009-02-03 Julien Blache + * tools/sane-desc.c: filter out unsupported/unknown models from + output (udev/hal). + +2009-02-02 Nicolas Martin + * backend/pixma_common.c backend/pixma_common.h /backend/pixma_imageclass.c + backend/pixma_mp150.c backend/pixma_mp730.c backend/pixma_mp750.c: + Change ALIGN macro name to ALIGN_SUP for PPC compatibility. + Some cosmetic changes to source code alignment. + +2009-02-01 Alex Belkin + * backend/xerox_mfp.c backend/xerox_mfp.h: + Proper handling of parameters (to fix xsane crash). + * backend/xerox_mfp.conf doc/descriptions/xerox_mfp.desc: + Added Dell MFP 1815dn. + +2009-02-01 Chris Bagwell + * aclocalm4: fix prototype of internal strcasestr and usleep. + * configure.in: Group all USB logic together and all SCSI + logic together to aid understanding of whats no longer + valid. Allow sharing enable/disable options between all + USB drivers on multiple platforms. Combined CAM_LIBS and + SCSI_LIBS since they are mutually exclusive. + Skip some USB/SCSI checks when previous tests show it will always fail. + * backend/Makefile.am, tools/Makefile.in: Combine CAM_LIBS and + SCSI_LIBS. Add missing SOCKET_LIBS to epson2. Add USB_LIB. + * saned.c: Add limits.h for PATH_MAX. + +2009-02-01 Mattias Ellert + * acinclude.m4, backend/Makefile.am: Restore the removed + DYNAMIC_FLAG configuration. + * acinclude.m4, sanei/sanei_jpeg.c: Don't compile sanei_jpeg + if libjpeg is unavailable. + * backend/canon_dr.c, backend/hs2p-scsi.c, backend/xerox_mfp.c: + format fixes. + * backend/hs2p.c: fix missing return. + * backend/canon630u-common.c: avoid redefinition warning. + +2009-01-31 Chris Bagwell + * backend/Makefil.am: Add missing math library to coolscan2 + and coolscan3. + * acinclude.m4, configure.in: Define JPEG objects based on + existence of JPEG library and not on the dc* backends alone + since more backends then that use JPEG support. + +2009-01-30 Chris Bagwell + * frontend/saned.c: Replace usage of getgrouplist() with + getgrent() and friends. getgrouplist is not posix and not + on several platforms including cygwin. + * acinclude.m4, configure.in: Put all libraries into their + own *_LIB variables instead of $LIB so that we do not have to + link in the world to all executables. Modified SANE_CHECK_U_TYPES + to be a little more portable to platforms that use #define + for u_* types. Create SANE_CHECK_BACKENDS macro so that + PRELOADABLE_BACKENDS can also be valided. Auto-populated + PRELAODABLE_BACKENDS when detect dlopen() won't work. + Various protability cleanups. + * backend/dll.c: Make dll-preload.c a .h since its an include and + not compilable byitself. + * frontend/Makefile.in, frontend/scanimage.c, include/laaloca.h, + lib/Makefile.am, lib/alloca.c, strcasestr.c, tools/Makefile.in, + tools/sane-desc.c: Convert lib/ to automake. Create a liblib.la + for everyone to use and a libfelib.la for only frontend programs. + Make all internal programs be prefixed with sanei_ as not to conflict + with other programs libsane is linked in with that will also most + likely create similar internal utils on problem platforms. + * include/getopt.h, lib/getopt.c, lib/getopt1.c: Always compile + and link in getopt_long() but prefix it with sanei_. Its + easier to always use internal version then try to figure out what + platforms support getopt_long() and what header files to use. + * backend/Makefile.am: Convert backend makefile to automake. + Initial version that is feature parity with original but uses + specific rules instead of wildcards and only links in libraries/objs + really required. Room for more cleanup of whats linked in once + all makefiles have been converted to automake. + +2009-01-29 Chris Bagwell + * backend/epson2.c backend/pixma_bjnp.c, include/sane/sanei_backend.h, + sanei/sanei_tcp.c, sanie/sanei_udp.c: Improve portablity by + removing usage of MSG_WAITALL since not all platforms support + that (cygwin). Default is to be blocking anyways. Changed + usage of MSG_NOTWAIT to use fcntl() function as needed as well. + * configure.in, lib/Makefile.in, lib/strcasestr.c: Add internal + strcasestr() for platforms missing it (cygwin). + * pixma_common.c: Make source match header prototype for picky + compilers (cygwin). + * backend/umax_pp_mid.c: Allow BACKEND_NAME to be filename + yet debug to be SANE_DEBUG_UMAX_PP to match man page. + +2009-01-28 Julien Blache + * doc/descriptions/epson.desc: added :scsi data for the GT-7000 + and Perfection1200S. Patch from Dieter Jurzitza. + +2009-01-27 Louis Lagendijk + * backend/pixma_bjnp.c: fixed bug that caused scanner discovery to + fail when it encountered a point to point link (check data returned + by getifaddrs() + +2009-01-26 Chris Bagwell + * configure.in: Add AM_MAINTAINER_MODE to disable regenerating + configure files. This was behavior of Makefiles before automake + and works around various timestamp issues. + +2009-01-25 Pierre Willenbrock + * backend/genesys_gl841.c: Change status code for locked head to + SANE_STATUS_HW_LOCKED + +2009-01-21 m. allan noah + * doc/descriptions/canon_dr.desc: correct version, status = new + * doc/descriptions/epjitsu.desc, doc/descriptions/fujitsu.desc: version + * doc/descriptions/umax1220u.desc: correct status of 1600U + * doc/descriptions/xerox_mfp.desc: status = new + +2009-01-23 Julien Blache + * doc/descriptions-external/epkowa.desc: Update for iScan 2.16.0, + from Olaf Meeuwissen. + +2009-01-22 Chris Bagwell + * Makefile.in: Submit Makefile.in from Makefile.am submitted + previously. + * backend/epson.c, backend/epson_scsi.c, backend/epson2_net.c, + backend/epson2_scsi.c, backend/genesys_gl646.c, + backend/genesys_gl841.c, backend/lexmark_low.c, backend/rts88xx_lib.c, + backend/umax_pp.c, backend/umax_pp_low.c, backend/umax_pp_mid.c, + doc/Makefile.in, doc/sane-epson.man, doc/sane-epson2.man: + Updated backends with EXTRA_* files to allow Makefile's + to always pass in BACKEND_NAME to be fixed to backend name + instead of filename; while still making sure that + SANE_DEBUG_${BACKEND}* exist as documented in man pages. + Add references to epson and epson2 man pages about + SANE_DEBUG_EPSONx_SCSI and _NET options. + Created an epson2 man page; based mostly on epson page. + * backend/stubs.c: Currently, compiling stubs.c requires its + own compile rule simply to pass in -DSTUBS. Since its always + required, just define it in stubs.c + +2009-01-22 Stéphane Voltz + * doc/Makefile.in doc/descriptions/genesys.desc : added the rts8891 + man page to the generation and install . added XP200 to the genesys + desc file. + +2009-01-21 Chris Bagwell + * Makefile.am, lib/Makefile.in: Run all libcheck tests before + failure and look for both static and shared libraries. + Fixed $srcdir typo in lib/Makefile.in. + +2009-01-21 m. allan noah + * backend/canon_dr.[ch], backend/epjitsu.[ch], backend/fujitsu.[ch]: + - dont export private symbols + +2009-01-19 m. allan noah + * doc/descriptions-external/brother2.desc: add MFC-7840W + +2009-01-19 Nicolas Martin + * pixma_imageclass.c: + Fixed select_source message length, and typo bug in last update. + Set MP4600 series for inverted checksumming. + +2009-01-19 Stéphane Voltz + * backend/genesys.c backend/genesys.conf.in backend/genesys.h + backend/genesys_devices.c backend/genesys_gl646.c + backend/genesys_gl841.c backend/genesys_low.h: add support for + uncalibrated scans in all modes for Visioneer Strobe XP200. Add + support for buttons for MD5345/HP2300 and XP200 + +2009-01-18 m. allan noah + * doc/descriptions/unsupported.desc: everything reported from + 2008-07 to 2009-01 + +2009-01-18 Pierre Willenbrock + * backend/genesys_low.h: Fix prototype of update_hardware_sensors. + Make half-ccd mode optional. + * backend/genesys_gl841.c: Make dpihw depend on sensor pixel count + instead of sensor resolution. Make some Canon LiDE 35 specific + gpio handling conditional, add missing SCANMOD shift. Make + half-ccd mode optional. Reenable clock register setup from sensor + struct, set SCANMOD. + * backend/genesys_devices.c: Make half-ccd mode optional. + Reenable clock register setup from sensor struct, set SCANMOD. + +2009-01-17 Nicolas Martin + * pixma_mp150.c: + Fixed "Busy mode" exit processing. + +2009-01-17 Julien Blache + * doc/descriptions/hp.desc: add SCSI identifiers for the ScanJet + IIc, from Daniel Golle (sane-devel, 20061105). + * frontend/scanimage.c: make batch mode create output files + atomically. Patch by Simon Matter . + +2009-01-16 Chris Bagwell + * .cvsignore, Makefile.in, aclocal.m4, config.sub, configure, + configure.in, backend/cvsignore, include/Makefile.in, + include/sane/config.h.in, INSTALL, Makefile.am, missing: + Convert top-level Makefile to be generated by automake. + "dist" target now includes m4 directory. Updated "libcheck" + target to look at dynamic libraries instead of static. + +2009-01-16 Chris Bagwell + * doc/Makefile.in, frontend/Makefile.in, include/Makefile.in, + japi/Makefile.in, lib/Makefile.in, po/Makefile.in, + sanei/Makefile.in, testsuite/Makefile.in, tools/Makefile.in, + backend/Makefile.in: + Updates to Makefiles to prepare for transition to automake. + Fix a few bugs with "all" and "uninstall" targets to work when + $(builddir) != $(srcdir). Added $(DESTDIR) to uninstall target. + Made $(distdir) related to current directory to match automake. + +2009-01-16 Pierre Willenbrock + * backend/genesys.c, backend/genesys.h, backend/genesys_devices.c, + backend/genesys_gl646.c, backend/genesys_gl841.c, + backend/genesys_low.h: Add support for buttons on + Canon LiDE 35/40/50. + +2009-01-15 Nicolas Martin + * doc/sane-pixma.man, doc/descriptions/pixma.desc, + pixma_mp150.c, AUTHORS: + Updated docs and comments in pixma backend. + Added Dennis Lou to pixma backend authors + +2009-01-13 Louis Lagendijk + * AUTHORS: added myself as co-responsible for pixma backend + +2009-01-15 Alessandro Zummo + * backend/epson2.c: do not use request_identity2 with + networked scanners, fixed generation of resolution + list. + +2009-01-13 Louis Lagendijk + * backend/pixma_bjnp.c: send broadcasts from bjnp port to make + firewalling easier + +2009-01-13 Julien Blache + * tools/sane-desc.c: replace opencoded device permissions and + ownership by proper definitions. Group USB devices by vendor in + the HAL FDI output. Replace obsolete SYSFS{} key by the newer + ATTR{} key in the udev output. Add a new :scsi keyword for SCSI + devices, add support for SCSI devices in the udev and HAL FDI + outputs. + * doc/descriptions/hp.desc, doc/descriptions/epson.desc: add :scsi + keyword to a handful of SCSI scanners known to advertise + themselves as type "Processor". + + All of the above based on a patch contributed by Dieter Jurzitza. + +2009-01-10 m. allan noah + * sanei/sanei_usb.c: rescan usb every time sanei_usb_init() is called + - remove missing devices, add new devices to global lists + - based on code from stef.dev@free.fr + +2009-01-10 m. allan noah + * backend/canon_dr.[ch], backend/canon_dr-cmd.h: backend v11 + - send_panel() can disable too + - add cancel() to send d8 command + - call cancel() only after final read from scanner + - stop button reqests cancel + +2009-01-10 Jeremy Johnson + * backend/hs2p.c: replaced ulong with u_long, + added static keyword for SANE_Status update_hs2p_data() + +2009-01-06 Jonathan Bravo Lopez + * backend/hp3900_sane.c, backend/hp3900_config.c, + backend/hp3900_types.c, backend/hp3900.conf.in, doc/sane-hp3900.man, + doc/descriptions/hp3900.desc: + Added support for HP Scanjet G3110 scanner. + +2009-01-05 Jeremy Johnson + Added code to read_data() to pad image data to + requested length and to zero out any garbage using + information from sense data command. Added new + MAINTENANCE_DATA struct and options to display + scanner's maintenance/callibration statistics. + *backend/hs2p.h + - added enum CONNECTION_TYPES + - added HS2P_DATA struct + - added SENSE_DATA struct to struct HS2P_Device + - added SANE_String_Const orientation_list[] + - added macros isset_ILI() and isset_EOM() + *backend/hs2p-scsi.h + - replaced request_sense struct with SENSE_DATA struct + - added #define DATA_TYPE_EOL (va_list sentinel) + - added MAINTENANCE_DATA struct + *backend/hs2p-saneopts.h + - added OPT_ORIENTATION + - added MAINTENANCE_DATA options + *backend/hs2p.c + - added MAINTENANCE_DATA options + - added unused connType to attach() + - added update_hs2p_data() to fill in options + - added hs2p_open() and hs2p_close() + - added get_hs2p_data() to read scanner data + - added print_maintenance_data() + - modified sane_control_options() to + accomodate new maintenance options and to + handle Portrait/Landscape option + replaced adf_status macro with s->data.adf_status + - modified sane_read() to correctly zero out the + missing bytes on an incomplete read and to pad + to the requested length + *backend/hs2p-scsi.c + - replaced request_sense() with get_sense_data() + - added print_sense_data() + - added SENSE_DATA *sdp to sense_handler() + - modified read_data() to handler other data type codes/qualifiers + - read_adf_status() now is replaced with call to + read_data(fd,*buf,*bufsize,dtc,dtq) + +2009-01-04 Nicolas Martin + * doc/sane-pixma.man, doc/descriptions/pixma.desc: + Updated doc for pixma backend (ImageClass) + +2008-12-31 Stéphane Voltz + * backend/genesys.c: restored warming up broken by a previuos commit + +2008-12-28 Nicolas Martin + * backend/pixma_imageclass.c: + Change to include different checksumming for MF41xx and MF42xx series + +2008-12-26 Alessandro Zummo + * backend/epson2.c: changed version code, + added protection from wrong settings. + +2008-12-21 m. allan noah + * backend/fujitsu.[ch]: backend v87 + - accept null pointer as empty device name + - track frontend reading sensor/button values to reload + - deactivate double feed options if df-action == default + +2008-12-21 Nicolas Martin + * doc/descriptions/pixma.desc, doc/sane-pixma.man, + backend/pixma_mp150.c: + MP800/MP800R: Fixed bug and color planes shift issues, added TPU support + for 48 bits images depth up to 1200 dpi. + MP980: following a user feedback, declared as working. + Doc and man pages updated. + +2008-12-18 m. allan noah + * backend/fujitsu.[ch]: backend v86 + - get_pixelsize() sets back window ID for back side scans + * doc/sane-fujitsu.man, doc/descriptions/fujitsu.desc: backend v86 + +2008-12-17 Julien Blache + * backend/v4l.c: unmap mapped buffer in sane_cancel(). Use libv4l1 + for v4l device access, buys us some support for v4l2 devices for + free thanks to libv4l1, libv4l2 and libv4lconvert. + * configure.in, configure: check for libv4l1 availability. + +2008-12-15 Alex Belkin + * AUTHORS, configure, configure.in, backend/Makefile.in, + backend/xerox_mfp.c, backend/xerox_mfp.h, doc/Makefile.in, + doc/descriptions/xerox_mfp.desc, doc/sane-xerox_mfp.man: + Initial commit ot xerox_mfp backed. + +2008-12-12 Julien Blache + * frontend/saned.c: add a data_portrange config file option to + saned to specify a port range for the data connection. Based on a + patch contributed by Oren Held. + * backend/saned.conf.in: add the data_portrange option to the + config file and rework the comments. + * doc/saned.man: document the data_portrange option. + +2008-12-11 Stéphane Voltz + * backend/rts8891.c doc/sane-rts8891.man doc/descriptions/rts8891.desc: + scan register setting fix, documentation update + +2008-12-10 m. allan noah + * backend/fujitsu.[ch]: backend v85 + - round pixels_per_line down to arbitrary limits for fi-4990 & fi-4860 + - fi-4860 returns random garbage to serial number queries + - initialize *info to 0 in sane_control_option() + * doc/descriptions/fujitsu.desc: backend v85, improve status/comments + * frontend/scanimage.c: initialize *info, fix buffer overwalk + +2008-12-10 m. allan noah + * backend/canon_dr.c: backend v10 + - add all documented request sense codes to sense_handler() + - fix color jpeg (remove unneeded BGR to RGB swapping code) + - add macros for LUT data + * backend/canon_dr.conf.in: add DR-2080C usb ID + * doc/descriptions/canon_dr.desc: backend v10, add DR 3020 + +2008-12-08 m. allan noah + * backend/canon_dr.[ch], backend/canon_dr-cmd.h: backend v9 + - add rollerdeskew and stapledetect options + - add rollerdeskew and stapledetect bits to ssm_df() + * doc/descriptions/canon_dr.desc: backend v9 + +2008-12-08 m. allan noah + * backend/avision.c: backend v289 + - fix sending SIGTERM when reader_pid == 0 + +2008-12-07 m. allan noah + * backend/canon_dr.[ch], backend/canon_dr-cmd.h: backend v8 + - rename read/send_counter to read/send_panel + - enable control panel during init + - add options for all buttons + - call TUR twice in wait_scanner(), even if first succeeds + - disable rif + - enable brightness/contrast/threshold options + * doc/descriptions/canon_dr.desc, doc/sane-canon_dr.man: backend v8 + +2008-12-06 Louis Lagendijk + * backend/pixma_bjnp.c pixma_bjnp_private.h: + replaced getlogin/getenv by getpwuid(geteuid) + +2008-12-06 Louis Lagendijk + * backend/pixma_bjnp.c pixma_bjnp_private.h: + On Ubuntu getlogin() returns NULL. So we now first try getlogin() + and if that fails, we try getenv("USER") and if that fails we use + a default user string + +2008-12-03 Stéphane Voltz + * backend/rts8891.c backend/rts8891_low.c: possible fix for + failed scan at 300 and 1200 dpi for HP4400, sensor type 2. + +2008-12-01 Julien Blache + * sanei/sanei_usb.c: fix assignment in if clause, reported on + sane-devel. + +2008-11-30 Nicolas Martin + * doc/descriptions/pixma.desc, doc/sane-pixma.man: + MP620 supported by pixma backend confirmed, doc and man pages updated. + +2008-11-29 m. allan noah + * backend/canon_dr.[ch]: backend v7 + - jpeg support (size rounding and header overwrite) + - call object_position(load) between pages even if buffering is on + - use request sense info bytes on short scsi reads + - byte swap color BGR to RGB + - round image width down, not up + - round image height down to even # of lines + - always transfer even # of lines per block + - scsi and jpeg don't require reading extra lines to reach EOF + - rename buffer option to buffermode to avoid conflict with scanimage + - send ssm_do and ssm_df during sane_start + - improve sense_handler output + * doc/descriptions/canon_dr.desc: backend v7 + +2008-11-29 m. allan noah + * backend/canon_dr.[ch], backend/canon_dr-cmd.c: backend v6 + - fix adf simplex + - rename ssm_duplex to ssm_buffer + - add --buffer option + - reduce inter-page commands when buffering is enabled + - improve sense_handler output + - enable counter option + - drop unused code + * doc/descriptions/canon_dr.desc: backend v6 + +2008-11-26 m. allan noah + * backend/*.[ch]: nearly every backend used V_MAJOR + instead of SANE_CURRENT_MAJOR in sane_init() + * backend/snapscan.c: remove EXPECTED_VERSION check + since new SANE standard is forward compatible + +2008-11-25 m. allan noah + * backend/canon_dr.[ch], backend/canon_dr-cmd.c, + doc/descriptions/canon_dr.desc: backend v5 + - remove EOF ejection code + - add SSM and GSM commands + - add dropout, doublefeed, and jpeg compression options + - disable adf backside + - fix adf duplex + - read two extra lines (ignore errors) at end of image + - only send scan command at beginning of batch + - fix bug in hexdump with 0 length string + - DR-7580 support + +2008-11-25 Nicolas Martin + * backend/pixma.c: + Fixed regression bug at end of scan for all PIXMA, noticeable + in multipage ADF scan. + +2008-11-23 Nicolas Martin + * backend/pixma_mp150.c, sane-backends/po/sane-backends.fr.po, + doc/descriptions/pixma.desc, doc/sane-pixma.man: + Support for MP630 in pixma backend. + Updated docs for MP630, and network interface to various PIXMA models + in pixma.desc. + Fixed some typos in French translations. + +2008-11-20 Stéphane Voltz + * backend/rts8891.c: fixes 'commit scan value' for HP4400. + +2008-11-20 Stéphane Voltz + * backend/rts8891.c: calibration fixes for HP4400 sensor type 3. + +2008-11-18 Alessandro Zummo + * backend/epson2.c: fixed bug when an extended command + was used with D8 level scanners. bug reported + by Kare Sars + +2008-11-17 Gerhard Jaeger + * doc/descriptions-external/epkowa.desc: + iscan 2.14.0 updates on behalf of olaf.meeuwissen@avasys.jp + +2008-11-12 Stéphane Voltz + * backend/rts8891.c: sensor detection fix. Lamp setting + change for HP4400 sensor type 3. + +2008-11-11 m. allan noah + * backend/canon_dr.c: backend v4 + - eject document when sane_read() returns EOF + +2008-11-09 m. allan noah + * backend/canon_dr.[ch], backend/canon_dr-cmd.h, doc/sane-canon_dr.man, + backend/canon_dr.conf.in, doc/descriptions/canon_dr.desc: + - New Canon DR-series backend v3 + - support all modes and resolutions of DR-9080C + - advanced options (MF detection, compression) not yet supported + - other larger models believed similar, smaller ones unknown + * doc/descriptions/unsupported.desc: remove Canon DR-series machines + +2008-11-07 m. allan noah + * backend/fujitsu.c: backend v84 + - round lines down to even number to get even # of total bytes + - round binary bpl and Bpl down to byte boundary + +2008-11-06 m. allan noah + * backend/fujitsu.c: backend v83 + - round binary bpl and Bpl up to byte boundary + - use s->params instead of user data in set_window() + - read_from_scanner() only grabs an even number of lines + +2008-10-31 Louis Lagendijk + * Pixma backend (pixma.c/pixma_common.c/pixma_io_sanei.c/pixma_bjnp.c): + bjnp tcp connection is now de-activated after initialization and + re-activated at start of scanning. If we do not do this, the scanner + closes its side of the connection after 30 secods of inactivity. + Added a maximum to the retry of slect calls when signals are + received + Added blocksize detection for tcp read_bulk call + +2008-11-04 m. allan noah + * sanei/sanei_usb.c, include/sane/sanei_usb.h: + - shorten debug lines to fit in 80 chars + - add sanei_usb_clear_halt() required by upcoming canon_dr backend + +2008-10-31 m. allan noah + * backend/fujitsu.[ch], backend/fujitsu-scsi.h, + backend/fujitsu.conf.in, doc/descriptions/fujitsu.desc: backend v82 + - improved front-side endorser vpd detection + - send scanner_control_ric during sane_read of each side + - add fi-6770A and fi-6670A USB ID's + +2008-10-31 Louis Lagendijk + * backend/pixma_bjnp.c: corrected small typo + +2008-10-31 Louis Lagendijk + * backend/pixma_bjnp.c: + Added retry to select() calls when they get interrupted by a + signal. This solves problems in xsane after a first scan completed. + There is still an issue that scanner closes tcp connection after + 30 seconds of inactivity + backend/pixma_bjnp.c backend/bjnp_private.h + Marked local functions as static and removed them from ..private.h + +2008-10-31 Stéphane Voltz + * backend/rts8891.c backend/rts8891_low.c backend/rts8891_low.h: + added 600 and 1200 dpi scan for HP4400 and HP4470 with 'xpa' + sensor. + +2008-10-25 Nicolas Martin + * backend/pixma_mp150.c, doc/sane-pixma.man doc/descriptions/pixma.desc: + Tweaks for TPU scan at 4800 dpi, and MP810 at 2400 dpi (now works). + Updated docs around that. + +2008-10-25 Louis Lagendijk + * Added configuration file support for pixma backend + Currently used only for configuration of network scanners. + +2008-10-22 Nicolas Martin + * backend/pixma.c, backend/pixma_io_sanei.c, backend/pixma_mp150.c: + TPU scanning in 48 bits mode now works fine on MP970, with Xsane or + scanimage. + Changed also minimum to 300 dpi for TPU scan, so that preview now works + in Xsane. + Added Legal paper dimensions (14") to ADF scan for MX850 and MX7600. + The rest is cosmetic only. + +2008-10-21 Louis Lagendijk + * Added #ifdef around defintions of MIN and MAX in pixma_common.h + - Re-enable includes in pixma_bjnp.c as they are needed on Freebsd + - Replaced getaddrinfo by gethostbyname in pixma_bjnp.c as this is + supported on OS/2 as well + +2008-10-21 m. allan noah + * doc/descriptions/fujitsu.desc: backend v81, fix fi-6240 usb id + +2008-10-20 m. allan noah + * backend/fujitsu.[ch], backend/fujitsu-scsi.h: backend v81 + - increase USB timeouts + - enable get_pixelsize() to update scan params after set_window() + - remove even_scan_line hack + +2008-10-19 Nicolas Martin + * configure.in, configure, backend/pixma_bjnp.c, + backend/pixma_bjnp.h, backend/pixma_bjnp_private.h, + pixma.h, doc/descriptions/pixma.desc: + From Louis Lagendijk for bjnp protocol on pixma backend, add a header + check for ifaddrs.h (necessary on different platforms BeOS, OS/2, ...) + Increment pixma backend version number. + +2008-10-15 Stéphane Voltz + * backend/rts8891.c: added 300 dpi scan for HP4400 + +2008-10-15 Stéphane Voltz + * backend/rts8891.c: fixed HP4400 sensor detection, added 150 + dpi scan mode for HP4400 + +2008-10-14 Nicolas Martin + * backend/pixma*.c, backend/pixma*.h (all pixma backend files), + doc/sane-pixma.man, doc/description/pixma.desc, + backend/Makefile.in + Added 3 new files backend/pixma_bjnp.c, backend/pixma_bjnp.h, + backend/pixma_bjnp_private.h: + - Thanks to Louis Lagendijk, added an implementation of Canon's BJNP + network protocol to the pixma backend, for scanning with PIXMA devices + over a LAN network. + - Fix for ADF scan reset session when ADF is loaded with more pages + to scan than the frontend requests. + - Updated pixma backend documentation and file headers. + +2008-10-09 m. allan noah + * doc/descriptions/fujitsu.desc, doc/sane-fujitsu.man: backend v80 + +2008-10-08 m. allan noah + * backend/fujitsu.c: backend v80 + - front-side endorser uses data ID 0x80 + +2008-10-06 Stéphane Voltz + * backend/rts8891.c backend/rts8891.h: fixed configuration option + bug + +2008-10-04 Nicolas Martin + * backend/pixma.c, backend/pixma.h, backend/pixma_common.c, + backend/pixma_io_sanei.c, backend/pixma_mp150.c, + doc/sane-pixma.man, doc/description/pixma.desc: + MP970 scanning improvements, up to 4800 dpi. On the way soon, + network BJNP protocol designed by Louis Lagendijk to be added to CVS. + MX7600 reported to work fine with the backend. + ADF scanning: + - improved for latest PIXMAs like MX850, MX310. + - bug fix in Sane_start, when scanning several pages with ADF. + ADF DUPLEX scanning: + - new code for ADF Duplex, (to be tested) based on a MX850 Snoop. Changes + might fit also MP830 (To be confirmed). + TPU scanning: + - MP970 TPU scanning: Protocol works, get scanned TPU images with 48 bits + to 24 bits conversion, full 48 bit version yet to be debugged. + +2008-10-03 m. allan noah + * backend/epjitsu.[ch]: backend v17: + - increase scan height ~1/2 inch due to head offset + - change page length autodetection condition + +2008-10-03 Stéphane Voltz + * include/sane/sane.h: added a SANE_CURRENT_MINOR define + +2008-10-02 Stéphane Voltz + * backend/rts8891.c backend/rts8891.h backend/rts8891_low.h: + add a 'sensornumber' option to override detected sensor model + +2008-10-02 m. allan noah + * doc/descriptions-external/epkowa.desc: + - iscan 2.12.0 updates from olaf.meeuwissen@avasys.jp + +2008-10-01 m. allan noah + * doc/descriptions/fujitsu.desc, backend/fujitsu.conf.in, + backend/fujitsu.[ch], backend/fujitsu-scsi.h: backend v79 + - add usb ids for several models + - print additional hardware capability bits + - detect front-side endorser + - disable endorser-side controls if only one side installed + - add quirks for fi-6x70 + +2008-10-01 m. allan noah + * backend/epjitsu.[ch]: backend v16: + - split fill_frontback_buffers_S300 into 3 functions + - enable threshold-curve option + - add 1-D dynamic binary thresholding code + - remove y-resolution option + - pad 225x200 data to 225x225 + +2008-10-01 Gerhard Jaeger + * doc/descriptions/plustek.desc: Added entry for UT12 devid 0x0013 + * doc/descriptions/unsupported.desc: Removed entry for UT12 devid 0x0013 + * doc/descriptions/gt68xx.desc: Added entry for OpticSlim 2400plus + * backends/gt68xx.conf.in: Added entry for OpticSlim 2400plus + +2008-09-26 Stéphane Voltz + * backend/rts8891_low.c: fix HP4400 head parking + +2008-09-25 m. allan noah + * backend/epjitsu.[ch], backend/epjitsu-cmd.h: backend v 13, 14 and 15: + - add working page-height control + - add working brightness, contrast and threshold controls + - add disabled threshold curve and geometry controls + - move initialization code to sane_get_devices, for hotplugging + - support S300 on USB power + - support S300 225x200 and 600x600 scans + - support for automatic paper length detection (parm.lines = -1) + - expose hardware buttons/sensors as options for S300 + * doc/descriptions/epjitsu.desc: change S300 status to good + +2008-09-25 m. allan noah + * include/sane/saneopts.h: underscore not allowed in option names + * frontend/scanimage.c: fix broken unknown length (-1) binary scans, + fix invalid tiff height with unknown length scans, fix compiler warn + +2008-09-20 Stéphane Voltz + * backend/rts8891.c: fix typo in HP4400 variant detection + +2008-09-20 Stéphane Voltz + * backend/rts8891.c backend/rts8891_low.c backend/rts8891_low.h: more + fix for HP4400 head parking, 75 dpi support for another HP4400 sensor + variant, better variant detector and initial setting + +2008-09-13 Nicolas Martin + * backend/pixma_mp150.c, doc/sane-pixma.man, doc/description/pixma.desc: + Changes in pixma backend for PIXMA MP970 at 4800 dpi (to be continued). + Declare MX7600 but yet untested. + +2008-09-11 Stéphane Voltz + * backend/rts8891.c backend/rts8891_low.c backend/rts8891_low.h: fix + parking for HP4400, tune dark calibration for HP4400 + +2008-09-07 Nicolas Martin + * backend/pixma_mp150.c backend/pixma_imageclass.c backend/pixma_common.h + doc/sane-pixma.man doc/descriptions/pixma.desc: + - Updated doc for MF4140, MF4150 and MP810 + - Remove white lines previously padded to image bottom for CCD sensors + - Modified scan area adjustments to enhance frontend area selection fit + but to be confirmed that it does not bring backward compatibility issues. + +2008-09-03 Stéphane Voltz + * backend/rts8891.c backend/rts8891_low.c backend/rts8891_low.h + backend/rts88xx_lib.c: minor changes for hp4400 support + +2008-09-02 Nicolas Martin + * backend/pixma_mp150.c: + Some tweaks to have PIXMA MP810 supported by the pixma backend. + +2008-08-29 Stéphane Voltz + * backend/genesys.c backend/genesys_gl646.c backend/genesys_devices.c: + - move to configuration framework + - fix GL646 GPO value usage + - HP2400/G2410 tidbits + - don't reset ASIC anymore + +2008-08-27 m. allan noah + * doc/descriptions/fujitsu.desc: mark fi-6230 and fi-6240 complete + +2008-08-26 m. allan noah + * backend/fujitsu.c, doc/descriptions/fujitsu.desc: backend v78 + - recent model names (fi-6xxx) dont end in 'C' + - simplify flatbed area overrides + - call scanner_control to change source during sane_start + +2008-08-26 m. allan noah + * backend/fujitsu.c, backend/fujitsu-scsi.h: backend v77 + - override flatbed maximum area for fi-6230C and fi-6240C + - set PF bit in all mode_select(6) CDB's + - set SANE_CAP_INACTIVE on all disabled options + - fix bug in mode_select page for sleep timer + +2008-08-25 Gerhard Jaeger + * backend/plustek-usb.c backend/plustek-usbdevs.c: + Added preliminary support for Visioneer XP100 + Tweaked entry for LM9831 version of Plustek UT12 + * backend/plustek.c: Bumped build number + * doc/sane-plustek.man doc/plustek/Plustek-USB.changes: Update + * doc/descriptions/plustek.desc: Added entry for Strobe XP100 + * doc/descriptions/unsupported.desc: Removed entry for Strobe XP100 + +2008-08-21 Stéphane Voltz + * backend/rts8891.c: calibration updating and 75 dpi scan for hp400 + +2008-08-23 m. allan noah + * doc/descriptions/fujitsu.desc: set lots of scanners to complete :) + +2008-08-21 Stéphane Voltz + * backend/rts8891.c backend/rts8891_devices.c backend/rts8891_low.c + backend/rts88xx_lib.c: add sensor type field and use it in geometry + detection. + +2008-08-14 Stéphane Voltz + * backend/rts8891.c backend/rts88xx_lib.c: fix for hp4400 init + +2008-08-13 m. allan noah + * backend/fujitsu.[ch]: backend v76 + - add independent maximum area values for flatbed + - override said values for fi-4220C, fi-4220C2 and fi-5220C + * doc/descriptions/fujitsu.desc: bump version, add 2 untested scanners + +2008-08-07 Rene Rebe + * backend/fujitsu.c, backend/fujitsu.conf.in, + doc/descriptions/fujitsu.desc: backend v75 + - added fi-6230 ID, updated fi-6130, fi-6230 status + +2008-08-05 Julien Blache + * frontend/saned.c: initialize runas_{u,g}id to 0 instead of -1; + initialize ngroups to 0. + +2008-08-04 Julien Blache + * frontend/scanimage.c: fetch_options(), actually get option + descriptor 0 before attempting to get the value of option 0. + +2008-08-04 Stéphane Voltz + * backend/umax_pp.c backend/umaxp_pp.h backend/umax_pp.conf.in: + use configuration framework + +2008-08-02 m. allan noah + * backend/fujitsu.c, backend/fujitsu-scsi.h: backend v74 + - replace global scsi blocks with local ones in each function + +2008-07-31 Julien Blache + * frontend/saned.c: set supplemental group list in addition to + setting euid and egid. Reported by Cameron Hutchison. + +2008-07-28 Julien Blache + * frontend/saned.c: call setegid() before seteuid(), aka while + we're still root. Patch from Nick Andrew . + +2008-07-27 m. allan noah + * backend/fujitsu.c, backend/fujitsu.conf.in, + doc/descriptions/fujitsu.desc: backend v73 + - add fi-6130 usb ID + - correct overscan dimension calculation + - provide correct overscan size overrides for fi-5110C and fi-4x20C2 + - fi-5750C can't handle 10 bit LUT via USB + +2008-07-25 m. allan noah + * AUTHORS: Earle has commit perms + * doc/descriptions/unsupported.desc: add Lexmark X7170 + * include/sane/sanei_config.h: remove typedef so doxygen will shutup + +2008-07-25 m. allan noah + * include/sane/saneopts.h: separate x-resolution from resolution + * backend/abaton.c, backend/artec.c, backend/canon-sane.c, + backend/epjitsu.c, backend/fujitsu.c, backend/microtek2.c, + backend/sp15c.c, backend/umax.c: use SANE_NAME_SCAN_RESOLUTION + instead of SANE_NAME_SCAN_X_RESOLUTION, to avoid ui change + +2008-07-20 Julien Blache + * backend/net.c: sane_control_option: when the frontend doesn't + care (info == NULL) and the remote backend asks for a reload, + perform the reload. Hopefully this brings the behaviour back in + line with standard backends. + +2008-07-15 Nicolas Martin + * backend/pixma_mp150.c: + Changed page scan end condition to handle correctly PIXMA ADF. + +2008-07-14 Julien Blache + * doc/*.man: Fix hyphen vs. minus sign issues in the manpages, + breaking copy/paste of command-lines and options in UTF-8 + environments. + +2008-07-13 m. allan noah + * backend/fujitsu.[ch]: backend v72, + - use mode_sense to determine background color support + - remove fi-5900 background color override + +2008-07-13 m. allan noah + * backend/fujitsu.[ch]: backend v71, + - disable overscan option if vpd does not tell overscan size + - fi-5110EOX crops scan area based on absolute maximum, not paper + - fi-5330C and fi-5650C can't handle 10 bit LUT via USB + - fi-5900 has background color, though it reports otherwise + +2008-07-10 Stéphane Voltz + * sanei/sanei_config.c: handle cases where config or callback + function is NULL + * backend/rts8891.c: use new configuration parsing framework + +2008-07-10 Stéphane Voltz + * include/sane/sanei_config.h: doxygen fix for new function + +2008-07-10 Stéphane Voltz + * backend/sanei_constrain_value.c: add support for SANE_Bool + in sanei_check_value + * backend/Makefile.in: add sanei_constrain_value.lo to libsane +2008-07-10 Stéphane Voltz + * backend/sanei_constrain_value.c: add support for SANE_Bool + in sanei_check_value + * backend/Makefile.in: add sanei_constrain_value.lo to libsane + dependencies + * sanei/Makefile.in: add makedepend for .lo files + * include/sane/sanei_config.h sanei/sanei_config.c: add configuration + parsing framework + +2008-07-05 m. allan noah + * backend/fujitsu.[ch]: backend v70, + - fix bug in sane_get_parameters (failed to copy values) + - autodetect jpeg duplex interlacing mode by inspecting scan width + +2008-07-05 Nicolas Martin + * backend/pixma.c: + Fix in sane_control_option () for PIXMA ADF scan. + Change malformed test conditions for ADF/Duplex scan source. + Updated PIXMA MX850 description. + +2008-07-03 m. allan noah + * backend/fujitsu.[ch]: backend v69, support hot-unplugging scanners + +2008-07-02 m. allan noah + * backend/fujitsu.[ch], backend/fujitsu-scsi.h: backend v68, + - add halftone type and pattern options + - support M3097G with IPC and CMP options via modified VPD response + * doc/descriptions/fujitsu.desc, doc/sane-fujitsu.man: backend v68, + - manpage cleanup + +2008-07-01 m. allan noah + * backend/fujitsu.[ch], backend/fujitsu-scsi.h: backend v67, + - add IPC/DTC/SDTC options + - call check_for_cancel() in sane_cancel, unless reading flag is set + +2008-06-28 Nicolas Martin + * backend/pixma_mp150.c: + Removed "experimental" flag for PIXMA MX850. + +2008-06-26 m. allan noah + * backend/fujitsu.[ch], backend/fujitsu-scsi.h: backend v66, + - restructure double feed detection options for finer-grained control + - add endorser side option + - prevent init_interlace() from overriding init_model() + - simplify sane_start() and fix interlaced duplex jpeg support + - simplify sane_read() and add non-interlaced duplex jpeg support + - removed unused code + +2008-06-26 m. allan noah + * backend/test.[ch]: check for options being controlled before loading + +2008-06-25 Nicolas Martin + * backend/pixma_imageclass.c: + Patch from Sam Varshavchik to deal with libusb 64 read issue, + for ImageClass MFPs. + +2008-06-24 m. allan noah + * backend/fujitsu.[ch], backend/fujitsu-scsi.h, + doc/descriptions/fujitsu.desc, doc/sane-fujitsu.man: + backend version 65, add endorser support, add quirks for fi-4990 + +2008-06-24 Julien Blache + * backend/net.c: do not reload options behind the frontend's back + in sane_control_option; rather return SANE_STATUS_INVAL and warn + that the frontend is buggy. Fetch option descriptors in + sane_open() so a GET_VALUE on option 0 can still work without + having to get option descriptor 0 beforehand. + * frontend/saned.c: rework error/exit path in process_request() + to properly terminate the Avahi thread when in debug mode. + +2008-06-22 Julien Blache + * frontend/saned.c: terminate child processes before exiting in + debug mode. + +2008-06-19 Ilia Sotnikov + * backend/hp5590.c: + Fixed segmentation fault on invalid option passed to + sane_get_option_descriptor(), sane_control_option() + (thanks to Albert Cervera i Areny) + +2008-06-19 Ilia Sotnikov + * backend/hp5590.c, backend/hp5590_cmds.c, backend/hp5590_cmds.h + * backend/hp5590_low.c, backend/hp5590_low.h + * doc/descriptions/hp5590.desc, doc/sane-hp5590.man: + Added support for HP ScanJet 4570c (thanks to Markham Thomas) + +2008-06-15 Nicolas Martin + * doc/sane-pixma.man, + * backend/pixma.c, backend/pixma_mp150.c, backend/pixma_sane_options.c + * sane-backends/po/sane-backends.??.po: + Remove "experimental" in pixma buttons options and text. + Fix some French translation typos, and update man page. + +2008-06-10 Stéphane Voltz + * backend/sanei_constrain_value.c: add support for arrays of SANE_Word + in sanei_constrain_value + * backend/umax_pp.c: remove now unneede 'hand made' constrain on + gamma tables + +2008-06-09 Stéphane Voltz + * backend/rts8891.c: fix for model with 'XPA' sensor + +2008-06-06 Julien Blache + * backend/net.c: lock the Avahi thread before stopping it and + tearing down the Avahi objects. + +2008-06-03 Stéphane Voltz + * backend/genesys_gl646.c: fixed wrong offset for start + of scanarea for MD6471 scanner. + +2008-05-30 m. allan noah + * backend/fujitsu.[ch], backend/fujitsu-scsi.h, + doc/descriptions/fujitsu.desc: backend version 64, + use model and serial to build sane.name (idea from Ryan Duryea), + allow both serial_name and device_name to sane_open scanner, + simulate missing VPD data for M3097G, probe scanner for color + interlacing mode instead of hardcoding, other minor cleanups + +2008-05-29 Nicolas Martin + * doc/sane-pixma.man: man update. + * backend/pixma_io_sanei.c: update status types, and take into + account new ones. + +2008-05-15 Mattias Ellert + * backend/hp3900_sane.c: Correct typos. + * po/Makefile.in: add backend/rts8891.c to localization. + * po/sane-backends.sv.po: update Swedish localization. + +2008-05-27 m. allan noah + * frontend/scanimage.c: add %n for newline to -f option + +2008-05-26 Jonathan Bravo Lopez + * po/sane-backends.es.po: added spanish translation about status strings + * po/Makefile.in: added backend/sane_strstatus.c to SRC_FILES section. + +2008-05-26 Rene Rebe + * backend/avision.{c,h}: merged latest upstream SVN changes, bug fixes + and device ID updates, including fixing uninitialized variables due + former defect merge and exposure control for film / dia scanners + +2008-05-26 Stéphane Voltz + * backend/sane_strstatus.c: added new status and internationalization + support + * frontend/scanimage.c, frontend/tstbackend.c: added handling of status + SANE_STATUS_WARMING_UP + * backend/pnm.c: added 2 more virtual devices, one that is hardware + locked, and another that always do warming before scan. + +2008-05-26 Stéphane Voltz + * backend/rts8891.[ch], backend/rts8891_low.[ch], + backend/rts88xx_lib.[ch]: renamed per frontend struct, made use of + new well-known option groups. Added warming-up handling in + sane_start(). + +2008-05-22 Stéphane Voltz + * backend/genesys.c: + changed top of scan area detection for MD6228/MD6471 models + +2008-05-23 Jonathan Bravo Lopez + * backend/hp3900_sane.c: setting appropiate capabilities to some options. + +2008-05-22 Jonathan Bravo Lopez + * backend/hp3900_sane.c: use 1.1.0 well-known option group strings. + * backend/hp3900_config.c, backend/hp3900_debug.c, + backend/hp3900_rts8822.c, backend/hp3900_types.c, + backend/hp3900_usb.c: Fixed reference position detection for + HP3800/HPG2710 scanners. Code clean up. + +2008-05-22 Stéphane Voltz + * backend/rts8891.c: + minor tweak for scanjet 4470cx + +2008-05-21 m. allan noah + * include/sane/saneopts.h: add sane 1.1.0 well-known button options + * backend/fujitsu.c: v1.0.63, use sane 1.1.0 well-known option + names for some buttons, remove 'button-' from others + +2008-05-20 m. allan noah + * backend/fujitsu.[ch], backend/fujitsu-scsi.h: v1.0.62, + check for all supported scsi commands, use well-known option + group strings from saneopts.h, rename pagewidth to page-width + to meet sane 1.1.0 spec, same for height, add unused get_window() + * doc/descriptions/fujitsu.desc: increase version to 1.0.62. + +2008-05-20 m. allan noah + * include/sane/sane.h: add SANE_STATUS_WARMING_UP and + SANE_STATUS_HW_LOCKED, remove SANE_CAP_ALWAYS_SETTABLE, + add SANE_FRAME_XML, improve comments on other new frame types. + * include/sane/saneopts.h: add common option groups, add new + page-width and page-height well-known options + +2008-05-20 m. allan noah + * backend/qcam.c, backend/v4l.c, frontend/tstbackend.c: + remove undocumented and otherwise unused SANE_CAP_ALWAYS_SETTABLE + +2008-05-19 Stéphane Voltz + * backend/rts8891.c: + 150/300 dpi shading calibration fixes for 'XPA' sensor HP4470 models + +2008-05-16 m. allan noah + * backend/fujitsu.c: inspect correct bool to enable prepick mode + +2008-05-15 m. allan noah + * doc/descriptions/cardscan.desc, doc/descriptions/epjitsu.desc, + doc/descriptions/hp3900.desc, doc/descriptions/hp5590.desc, + doc/descriptions/hpljm1005.desc, doc/descriptions/hs2p.desc: + remove 'new' tag from sane 1.0.19 backends + * doc/descriptions/fujitsu.desc, backend/fujitsu.conf.in: + add fi-5530C2 usb ID + * backend/cardscan.c: correct version number + * backend/epjitsu.conf.in: improved firmware directions + * backend/fujitsu.[ch]: update to backend v 1.0.61 + +2008-05-15 Mattias Ellert + * doc/sane-genesys.man, doc/sane-lexmark.man, doc/sane-microtek2.man, + doc/sane-mustek_pp.man, doc/sane-pixma.man, doc/sane-rts8891.man, + doc/sane-umax_pp.man: Man page fixes + * doc/descriptions-external/hp_rts88xx.desc: removed since its + successor rts8891 is now included in the SANE distribution + +2008-05-15 Mattias Ellert + * backend/agfafocus.h, backend/artec_eplus48u.c, + backend/artec_eplus48u.h, backend/avision.h, backend/coolscan.h, + backend/hp-handle.c, backend/hp3500.c, backend/microtek2.h, + backend/mustek.c, backend/mustek.h, backend/pie.c, backend/pixma.c, + backend/plustek-pp.h, backend/plustek.c, backend/plustek.h, + backend/plustek_pp.c, backend/snapscan.c, backend/snapscan.h, + backend/sp15c.h, backend/tamarack.h, backend/test.c, backend/test.h, + backend/u12.c, backend/u12.h, backend/umax.c, backend/umax.h, + include/sane/sanei_thread.h, sanei/sanei_thread.c: + Fix for bug #306751: sanei-thread with pthreads on 64 bit + +2008-05-12 Stéphane Voltz + * backend/rts8891.c + 150/300 dpi mode fixes for 'XPA' sensor HP4470 models + +2008-05-08 Alessandro Zummo + * AUTHORS: added myself :) + +2008-05-07 Julien Blache + * doc/sane-config.man: Fix man warning. + * backend/dll.c: look for dll.conf snippets in + $configdir/dll.d; this is a facility for external backends + to automatically add their backends to the dll backend + configuration without mucking with dll.conf. + * backend/Makefile.in: create $configdir/dll.d. + +2008-05-07 Nicolas Martin + * backend/pixma_imageclass.c, doc/descriptions/pixma.desc: + USB IDs updates in imageClass backend (pixma), by Dennis Lou. + +2008-05-07 Jochen Eisinger + * doc/sane-mustek_pp.man: fix catman warning. Reported by + Raymond Chen. + +2008-05-05 Earle Philhower + * doc/sane-sm3840.man: Add lineart and halftone options to page + * backend/sm3840*: Remove 64-bit compile warnings + +2008-04-05 Stéphane Voltz + * backend/rts8891.c backend/rts8891_low.c + doc/descriptions/rts8891.desc: + 150 dpi mode fix for 'XPA' sensor HP4470 models, description + update + +2008-05-05 Nicolas Martin + * doc/sane-pixma.man, doc/descriptions/pixma.desc: + Description and man updates for PIXMA MX300. + +2008-05-04 Nicolas Martin + * backend/pixma_imageclass.c, doc/descriptions/pixma.desc: + Code cleanup patch to imageClass backend (pixma) by Dennis Lou. + +2008-05-03 Julien Blache + * backend/epson2.c: initialize s->fd to -1 once the struct + Epson_Scanner is allocated and zeroed out in attach(). Otherwise + the backend sends inquiry data to fd 0, which it obviously + shouldn't do; this breaks scanning over saned. + * doc/net.tex: replace occurrences of SANE_STATUS_SUCCESS with + SANE_STATUS_GOOD, as SANE_STATUS_SUCCESS doesn't exist. + +2008-04-28 m. allan noah + * backend/epjitsu.[ch]: backend v1.0.12, fix double free bug + +2008-04-27 m. allan noah + * sanei/sanei_usb.c: allow sanei_usb_init() to run once per second + * backend/fujitsu.c: backend v1.0.60, relocate call to sanei_usb_init(), + free sane_devArray before calloc'ing a new one + +2008-04-22 m. allan noah + * backend/fujitsu.c, backend/fujitsu.conf.in: backend v1.0.59, + add fi-6140 PID, and fi-6x40 color mode + * doc/descriptions/fujitsu.desc: add fi-6140 PID, mark as 'good' + * doc/descriptions/epjitsu.desc: add S300M, mark as 'untested' + +2008-04-22 Nicolas Martin + * backend/pixma_mp150.c: + Updated pixma backend to have MP970 (tested), and probably other + CCD sensor MPs, working for Grayscale scan. + +2008-04-21 Nicolas Martin + * backend/pixma.c, backend/pixma_common.c, backend/pixma_rename.h + doc/sane-pixma.man, doc/descriptions/pixma.desc + (new) backend/pixma_imageclass.c, backend/Makefile.in: + Thanks to Dennis Lou, who adapted the pixma backend to add support + for Canon ImageCLASS series, fully tested for MF4270, and includes + PIDs declarations for other ImageCLASS devices, yet to be tested. + Fixes also a bug for ADF and ADF Duplex scan source selection. + +2008-04-20 m. allan noah + * backend/fujitsu.h: remove #define SANE_FRAME_JPEG + +2008-04-19 m. allan noah + * backend/fujitsu.[ch], backend/fujitsu-scsi.h: backend v1.0.58, + rename page code 32 to 'unknown', compile if NDEBUG is set, + proper async sane_cancel support, re-enable JPEG support + various functions rewritten (shorter, more clear) + * doc/descriptions/fujitsu.desc: add new fi-6xxx machines + +2008-04-18 Alessandro Zummo + * backend/epson2.c: fixed attach() error path. + +2008-04-14 Nicolas Martin + * backend/pixma_mp150.c, backend/pixma.h, backend/pixma_mp150.c + doc/sane-pixma.man, doc/descriptions/pixma.desc: + With feedback from MP970 owner, updated pixma backend for MP970 + CCD sensor support (yet in color only), and more generally, + support for other CCD sensor PIXMA: MP800, MP810, MP830, MP960, + but yet untested, which produce shifted color planes + scanned images. Current trim based on sample images provided + in bug reports and other web pages, but might require some + few and simple final tweaks. + Also fixed a bug for MP220 at 1200 dpi, MP220 is now reported + to work fine. + +2008-04-13 Julien Blache + * frontend/saned.c: fix typo. + * backend/net.c: plug an information leak in the net backend. When + sending out a SANE_NET_CONTROL_OPTION RPC for the + SANE_ACTION_GET_VALUE action (and SANE_ACTION_SET_AUTO for the + network protocol versions < 3), the backend was not clearing the + memory area for the value argument before sending it over the + network, resulting in an information leak for the + SANE_ACTION_GET_VALUE case. + +2008-04-12 Mattias Ellert + * backend/rts8891.c, backend/rts88xx_lib.c: fix format warning + * doc/sane-rts8891.man: man page fixes + * AUTHORS: e-mail update + +2008-04-11 Julien Blache + * frontend/saned.c: announce the _sane-port._tcp service via mDNS + (Avahi) when running in standalone or debug mode. A separate + process is responsible for the announcement through Avahi. + * backend/net.c: look for _sane-port._tcp service announcements + via mDNS (Avahi). A separate thread listens to announcements + through Avahi. Start the thread as early as possible in + sane_init() so as to get as much data as possible until + sane_get_devices() is called. + * aclocal.m4, configure, configure.in, include/sane/config.h.in: + add autofoo stuff for Avahi support, disabled by default. + +2008-04-10 Julien Blache + * frontend/saned.c: do not use daemon(), as it's a 4.4BSD/glibc + function; OS/2 for instance does not have it. Use an open-coded + equivalent. Add a PID file. saned -a username now drops privileges +2008-04-22 Nicolas Martin + * backend/pixma.c, backend/pixma_common.c, backend/pixma_rename.h + doc/sane-pixma.man, doc/descriptions/pixma.desc + (new) backend/pixma_imageclass.c, backend/Makefile.in: + Thanks to Dennis Lou, who adapted the pixma backend to add support + for Canon ImageCLASS series, fully tested for MF4270, and includes + PIDs declarations for other ImageCLASS devices, yet to be tested. + Fixes also a bug for ADF and ADF Duplex scan source selection. + +2008-04-20 m. allan noah + * backend/fujitsu.h: remove #define SANE_FRAME_JPEG + +2008-04-19 m. allan noah + * backend/fujitsu.[ch], backend/fujitsu-scsi.h: backend v1.0.58, + rename page code 32 to 'unknown', compile if NDEBUG is set, + proper async sane_cancel support, re-enable JPEG support + various functions rewritten (shorter, more clear) + * doc/descriptions/fujitsu.desc: add new fi-6xxx machines + +2008-04-18 Alessandro Zummo + * backend/epson2.c: fixed attach() error path. + +2008-04-14 Nicolas Martin + * backend/pixma_mp150.c, backend/pixma.h, backend/pixma_mp150.c + doc/sane-pixma.man, doc/descriptions/pixma.desc: + With feedback from MP970 owner, updated pixma backend for MP970 + CCD sensor support (yet in color only), and more generally, + support for other CCD sensor PIXMA: MP800, MP810, MP830, MP960, + but yet untested, which produce shifted color planes + scanned images. Current trim based on sample images provided + in bug reports and other web pages, but might require some + few and simple final tweaks. + Also fixed a bug for MP220 at 1200 dpi, MP220 is now reported + to work fine. + +2008-04-13 Julien Blache + * frontend/saned.c: fix typo. + * backend/net.c: plug an information leak in the net backend. When + sending out a SANE_NET_CONTROL_OPTION RPC for the + SANE_ACTION_GET_VALUE action (and SANE_ACTION_SET_AUTO for the + network protocol versions < 3), the backend was not clearing the + memory area for the value argument before sending it over the + network, resulting in an information leak for the + SANE_ACTION_GET_VALUE case. + +2008-04-12 Mattias Ellert + * backend/rts8891.c, backend/rts88xx_lib.c: fix format warning + * doc/sane-rts8891.man: man page fixes + * AUTHORS: e-mail update + +2008-04-11 Julien Blache + * frontend/saned.c: announce the _sane-port._tcp service via mDNS + (Avahi) when running in standalone or debug mode. A separate + process is responsible for the announcement through Avahi. + * backend/net.c: look for _sane-port._tcp service announcements + via mDNS (Avahi). A separate thread listens to announcements + through Avahi. Start the thread as early as possible in + sane_init() so as to get as much data as possible until + sane_get_devices() is called. + * aclocal.m4, configure, configure.in, include/sane/config.h.in: + add autofoo stuff for Avahi support, disabled by default. + +2008-04-10 Julien Blache + * frontend/saned.c: do not use daemon(), as it's a 4.4BSD/glibc + function; OS/2 for instance does not have it. Use an open-coded + equivalent. Add a PID file. saned -a username now drops privileges + and runs as the given user (and group). + * doc/saned.man: document -a username. + +2008-04-06 Nicolas Martin + * backend/pixma_mp150.c: + Modifications for PIXMA MP970, to manage the CCD sensor + with PIXMA generation 3 protocol. To be tested. + +2008-04-06 Julien Blache + * frontend/saned.c: add standalone daemon mode, building upon the + AF-indep/IPv6 debug mode. Reorganize code by splitting the main() + function into a series of functions. Factorize common code between + the old network code and the AF-indep code. There's now only one + version of main(). + * doc/saned.man: document new -a flag, reorganize manpage + sections (separate inetd configuration under the INETD + CONFIGURATION section). + +2008-04-05 Stéphane Voltz + * backend/genesys.c backend/genesys.h backend/genesys_devices.c + backend/genesys_gl646.c backend/genesys_low.h: + Fixed double free problems, made OPT_COLOR_FILTER work for + GL646 scanners, added OPT_CUSTOM_GAMMA and OPT_GAMMA_VECTOR* + options, split sane_control_options to make it more readable, + fixed 'reset stream' problem for MD6471. + +2008-04-05 Stéphane Voltz + * backend/rts8891.c: + split sane_control_option() to make it more readable + +2008-04-02 Nicolas Martin + * backend/pixma_mp150.c, backend/pixma.c, doc/sane-pixma.man, + doc/descriptions/pixma.desc: + Added a 10s tempo before "NO PAPER" fail message appears in ADF scan, + declared PIXMA MX850, moved MP970 to Generation 3 protocol, but yet + untested. + +2008-03-28 Julien Blache + * sanei/sanei_usb.c, include/sane/sanei_usb.h: add + sanei_usb_get_vendor_product_byname(). + * backend/snapscan-mutex.c: do not use ftok() in + snapscani_mutex_open(); ftok() will fail with anything for which + the devicename is not a filename. Construct an IPC key based on + the product ID, bus number and device number for libusb devices, + otherwise fallback to ftok() and check its return value. + * tools/sane-desc.c: HAL 0.5.11-rc2 does not support the info.bus + property anymore; superseded by info.subsystem. Unfortunately, + this is not backward-compatible, so add a new "hal-new" mode to + sane-desc. + +2008-03-28 m. allan noah + * backend/hp-scl.c: add usleep to improve usb performance, from + jim a t meyering d o t net + +2008-03-28 m. allan noah + * sanei/sanei_usb.c: add usb class 6 (imaging) to detected devices + * sanei/sanei_scsi.c: fix bug in sanei_scsi_find_devices() which + caused early return if attach callback returned error. + +2008-03-22 Stéphane Voltz + * AUTHORS configure configure.in backend/dll.conf.in + backend/Makefile.in backend/rts8891.c backend/rts8891.conf.in + backend/rts8891_devices.c backend/rts8891.h backend/rts8891_low.c + backend/rts8891_low.h backend/rts88xx_lib.c backend/rts88xx_lib.h + doc/descriptions/rts8891.desc doc/descriptions/unsupported.desc + doc/sane-rts8891.man: + rts8891 backend inclusion + +2008-03-20 Julien Blache + * include/Makefile.in: remove _stdint.h and byteorder.h in + distclean target, autogenerated cruft. + * frontend/saned.c: fix debug messages around the getservbyname() + call in the IPv4 code as it still referred to the "sane" port + instead of "sane-port". + +2008-03-16 Nicolas Martin + * backend/pixma_mp150.c, backend/pixma.h, doc/sane-pixma.man, + doc/descriptions/pixma.desc: + Changes to have new Canon PIXMA MX700 working with pixma backend + Flatbed and ADF scan are supported. + +2008-03-15 Julien Blache + * include/sane/sanei_usb.h: typo fix. + +2008-03-02 Stéphane Voltz + * doc/descriptions/lexmark.desc: added X1195 + * doc/descriptions/unsupported.desc: removed X11xx, X12xx and + Dell A920 which are to be handled by the lexmark backend + * backend/umax_pp.h backend/umax_pp.c backend/umax_pp_mid.h + backend/umax_pp_mid.c backend/umax_pp_low.h backend/umax_pp_low.c: + copyright notice update + +2008-03-01 Gerard klaver + * doc/descriptions/as6e.desc added Dexxa 4800 + +2008-02-26 Jonathan Bravo Lopez + * backend/hp3900_sane.c: Fixed optional grayscale emulation + * backend/hp3900_debug.c: Silence gcc warnings when tiffio.h + is not used + +2008-02-25 m. allan noah + * backend/fujitsu.[ch], backend/fujitsu-scsi.h: + add mode sense for page code 32 (color interlacing?) + and more debug output in init_ms(), for fi-5900 + +2008-02-24 Nicolas Martin + * backend/pixma_mp150.c, doc/sane-pixma.man, + doc/descriptions/pixma.desc: + Changes to have Canon PIXMA MP140 now working with pixma backend + +2008-02-23 Pierre Willenbrock + * backend/genesys_gl841.c: Make LEDs go really dark when "lamp" is off + +2008-02-22 Nicolas Martin + * backend/pixma_mp150.c, backend/pixma_mp730.c, + doc/sane-pixma.man, doc/descriptions/pixma.desc: + Changed MP140 to experimental cause not working yet + Changed MP710 to non-ADF scanner + +2008-02-22 Pierre Willenbrock + * backend/genesys_gl841.c: Fix debugging output of + gl841_bulk_write_register + +2008-02-21 Pierre Willenbrock + * backend/genesys.c, backend/genesys_gl646.c, + backend/genesys_gl841.c, backend/genesys_low.h: Add LED exposure + control to gl841_set_lamp_power + +2008-02-20 Pierre Willenbrock + * backend/genesys_gl841.c: Send 32 registers at once instead of 1 + +2008-02-20 Mattias Ellert + * backend/Makefile.in, ltmain.sh: Library version definition fixes + * backend/coolscan3.c: Fix format warnings + +2008-02-18 Alessandro Zummo + * backend/coolscan3.c: added new coolscan3 backend + with improved stability and infrared support. + * configure.in, include/sanei.h: bumped version + number to 1.1.0 and enabled 1.1 frame types. + + doc/sane-pixma.man, doc/descriptions/pixma.desc, + doc/descriptions-external/canon_mfp.desc: + > New models changes: + - added: Pixma MP210, MP470, MP520, MP610, MP710 + - declared but untested: Pixma MP140, MP220, MP740 + - declared experimental and untested: MP970 + > Bugs and fixes + - multipage documents scan no more fails in non-ADF scan + - IO Fail bug when scanning large pages e.g. with Xsane + - implement send_time message form MP710, MP730 family + - run indent -gnu on all pixma_* source files. + +2008-02-14 m. allan noah + * backend/cardscan.c, backend/epjitsu.c, backend/fujitsu.c: + sanei_read_config has already cleaned string, fix bug #310597 + +2008-02-13 Pierre Willenbrock + Patch by Stefan Lucke + * backend/genesys_gl841.c: Fixes 3 possibilities for infinite + loops and adjusts loop threshold to given comments + +2008-02-13 Jonathan Bravo Lopez + * backend/hp3900.c, backend/hp3900_debug.c, backend/hp3900_rts8822.c, + backend/hp3900_usb.c, backend/hp3900_sane.c, backend/hp3900_types.c, + backend/hp3900_config.c, backend/hp3900.conf.in, /doc/sane-hp3900.man, + doc/descriptions/hp3900.desc: Minor changes and added support for + HP ScanJet G2710 scanner. + +2008-02-10 m. allan noah + + * configure, configure.in: Changed version to 1.0.19-cvs. Enabled + compilation warnings. + * Makefile.in: Added ChangeLog-1.0.19 to DISTFILES. + +Older entries can be found in ChangeLog-1.0.19. From 764aa7c6e103eddd856f65edfb7320af92355fe8 Mon Sep 17 00:00:00 2001 From: "m. allan noah" Date: Tue, 5 May 2009 15:56:54 -0400 Subject: [PATCH 03/17] add more generated files to .gitignore --- backend/.gitignore | 3 ++- frontend/.gitignore | 2 +- include/sane/.gitignore | 2 +- tools/.gitignore | 4 +++- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/backend/.gitignore b/backend/.gitignore index 0597c38be..930de93ba 100644 --- a/backend/.gitignore +++ b/backend/.gitignore @@ -1,4 +1,5 @@ *-s.c *.conf dll-preload.c - +dll-preload.h +.deps diff --git a/frontend/.gitignore b/frontend/.gitignore index 5629ce7fc..c87101897 100644 --- a/frontend/.gitignore +++ b/frontend/.gitignore @@ -1,3 +1,3 @@ saned scanimage - +.deps diff --git a/include/sane/.gitignore b/include/sane/.gitignore index ee1258409..f61154864 100644 --- a/include/sane/.gitignore +++ b/include/sane/.gitignore @@ -1,2 +1,2 @@ config.h - +stamp-h1 diff --git a/tools/.gitignore b/tools/.gitignore index d1228db28..d8ba73a0c 100644 --- a/tools/.gitignore +++ b/tools/.gitignore @@ -3,4 +3,6 @@ sane-config sane-desc sane-find-scanner umax_pp - +udev +hal +.deps From 1541ad928f6d167c3b4414bf55201cd52d20750c Mon Sep 17 00:00:00 2001 From: "m. allan noah" Date: Tue, 5 May 2009 16:06:38 -0400 Subject: [PATCH 04/17] new .gitignore files --- japi/.gitignore | 1 + lib/.gitignore | 1 + sanei/.gitignore | 1 + 3 files changed, 3 insertions(+) create mode 100644 japi/.gitignore create mode 100644 lib/.gitignore create mode 100644 sanei/.gitignore diff --git a/japi/.gitignore b/japi/.gitignore new file mode 100644 index 000000000..39a06683b --- /dev/null +++ b/japi/.gitignore @@ -0,0 +1 @@ +.deps diff --git a/lib/.gitignore b/lib/.gitignore new file mode 100644 index 000000000..39a06683b --- /dev/null +++ b/lib/.gitignore @@ -0,0 +1 @@ +.deps diff --git a/sanei/.gitignore b/sanei/.gitignore new file mode 100644 index 000000000..39a06683b --- /dev/null +++ b/sanei/.gitignore @@ -0,0 +1 @@ +.deps From 79e6e5c4203bec6b98d1d6af4d3741fedc73dcd0 Mon Sep 17 00:00:00 2001 From: Julien BLACHE Date: Wed, 6 May 2009 11:13:44 +0200 Subject: [PATCH 05/17] Unbreak udev rules We switched from SYSFS{} to ATTR{} and that should really be ATTRS{}. Slightly different behaviour and all hell breaks loose. --- ChangeLog | 4 ++++ tools/sane-desc.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 8500debcd..c07b3e964 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2009-05-06 Julien Blache + * tools/sane-desc.c: unbreak udev rules, use ATTRS instead of ATTR + for USB devices. + 2009-05-05 Julien Blache * doc/backend-writing.txt, doc/releases.txt: update for the switch to git. diff --git a/tools/sane-desc.c b/tools/sane-desc.c index 600ab03bd..340229de6 100644 --- a/tools/sane-desc.c +++ b/tools/sane-desc.c @@ -3475,7 +3475,7 @@ print_udev (void) } } printf ("\n"); - printf ("ATTR{idVendor}==\"%s\", ATTR{idProduct}==\"%s\", MODE=\"%s\", GROUP=\"%s\", ENV{libsane_matched}=\"yes\"\n", + printf ("ATTRS{idVendor}==\"%s\", ATTRS{idProduct}==\"%s\", MODE=\"%s\", GROUP=\"%s\", ENV{libsane_matched}=\"yes\"\n", usbid->usb_vendor_id + 2, usbid->usb_product_id + 2, DEVMODE, DEVGROUP); usbid = usbid->next; } From d92a20febb31603340f3f6ea4e171e77d0b2946a Mon Sep 17 00:00:00 2001 From: Julien BLACHE Date: Wed, 6 May 2009 11:38:16 +0200 Subject: [PATCH 06/17] Close network fds in the Avahi process Network fds are of no use to the Avahi process and can cause the net backend to hang when saned is run in debug mode. This only happens if the net backend tries to connect to saned a second time and manages to establish the connection before saned has completed its shutdown. There is some potential for this to also occur when saned is run in standalone mode but it's far less probable as the window is a lot smaller. --- ChangeLog | 3 +++ frontend/saned.c | 13 ++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index c07b3e964..bf53e5969 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,9 @@ 2009-05-06 Julien Blache * tools/sane-desc.c: unbreak udev rules, use ATTRS instead of ATTR for USB devices. + * frontend/saned.c: pass the network fds to saned_avahi() so the + Avahi process can close them. Fixes a hang possible hang of the + net backend when saned is run in debug mode. 2009-05-05 Julien Blache * doc/backend-writing.txt, doc/releases.txt: update for the switch diff --git a/frontend/saned.c b/frontend/saned.c index b16e24440..074bda27d 100644 --- a/frontend/saned.c +++ b/frontend/saned.c @@ -2338,7 +2338,7 @@ sig_int_term_handler (int signum) #ifdef WITH_AVAHI static void -saned_avahi (void); +saned_avahi (struct pollfd *fds, int nfds); static void saned_create_avahi_services (AvahiClient *c); @@ -2351,8 +2351,9 @@ saned_avahi_group_callback (AvahiEntryGroup *g, AvahiEntryGroupState state, void static void -saned_avahi (void) +saned_avahi (struct pollfd *fds, int nfds) { + struct pollfd *fdp = NULL; int error; avahi_pid = fork (); @@ -2371,6 +2372,12 @@ saned_avahi (void) signal (SIGINT, NULL); signal (SIGTERM, NULL); + /* Close network fds */ + for (fdp = fds; nfds > 0; nfds--, fdp++) + close (fdp->fd); + + free(fds); + avahi_svc_name = avahi_strdup(SANED_NAME); avahi_poll = avahi_simple_poll_new (); @@ -3055,7 +3062,7 @@ run_standalone (int argc, char **argv) #ifdef WITH_AVAHI DBG (DBG_INFO, "run_standalone: spawning Avahi process\n"); - saned_avahi (); + saned_avahi (fds, nfds); #endif /* WITH_AVAHI */ DBG (DBG_MSG, "run_standalone: waiting for control connection\n"); From 7facf41b6a08a47cf1d2d57298010231b2199ae6 Mon Sep 17 00:00:00 2001 From: Ilia Sotnikov Date: Wed, 6 May 2009 20:27:15 +0300 Subject: [PATCH 07/17] * HP ScanJet 4500C/4570C/5500C is supported by the 'hp5590' backend --- doc/descriptions/unsupported.desc | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/doc/descriptions/unsupported.desc b/doc/descriptions/unsupported.desc index 35f381987..54fd578bf 100644 --- a/doc/descriptions/unsupported.desc +++ b/doc/descriptions/unsupported.desc @@ -833,20 +833,6 @@ :usbid "0x03f0" "0x2505" :comment "While an external binary-only backend exists, it works only on Linux i386. Therefore the scanner is unsupported on other platforms." -:model "ScanJet 4500C" -:url "/unsupported/hp-scanjet-4500c.html" -:interface "USB" -:usbid "0x03f0" "0x1205" -:comment "Probably unsupported, see link for details." -:status :unsupported - -:model "ScanJet 4570C" -:url "/unsupported/hp-scanjet-4570c.html" -:interface "USB" -:usbid "0x03f0" "0x1305" -:comment "Maybe GL841_HP, but not confirmed, maybe can be added to genesys backend " -:status :unsupported - :model "ScanJet 4600" :url "/unsupported/hp-scanjet-4600.html" :interface "USB" @@ -875,13 +861,6 @@ :comment "GL843, maybe can be added to genesys backend " :status :unsupported -:model "ScanJet 5500C" -:url "/unsupported/hp-scanjet-5500c.html" -:interface "USB" -:usbid "0x03f0" "0x1305" -:comment "Maybe GL841_HP, but not confirmed, maybe can be added to genesys backend" -:status :unsupported - :model "ScanJet 5530C Photosmart" :url "/unsupported/hp-scanjet-5530.html" :interface "USB" From 0f25a1dbb5fee0d894c182c04756c5201ae598a6 Mon Sep 17 00:00:00 2001 From: Ilia Sotnikov Date: Wed, 6 May 2009 20:30:09 +0300 Subject: [PATCH 08/17] * HP5590: - Updated backend version - Added HP ScanJet 4500C as completely supported - Added HP ScanJet 5500C as untested - HP ScanJet 4570C/5550C/5590/7650 marked as completely supported --- doc/descriptions/hp5590.desc | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/doc/descriptions/hp5590.desc b/doc/descriptions/hp5590.desc index 1c2ef18c1..6bb9ff575 100644 --- a/doc/descriptions/hp5590.desc +++ b/doc/descriptions/hp5590.desc @@ -9,7 +9,7 @@ ; All other information is optional (but what good is the file without it?). :backend "hp5590" -:version "1.0" +:version "1.0.5" :manpage "sane-hp5590" :devicetype :scanner @@ -17,27 +17,39 @@ :mfg "Hewlett-Packard" :url "http://www.hp.com" +:model "ScanJet 4500C" +:interface "USB" +:usbid "0x03f0" "0x1205" +:status :complete +:comment "Lineart/grayscale/color (24 bit), 100/200/300/600/1200/2400 DPI, flatbed/ADF/ADF duplex/TMA slides/TMA negatives" + :model "ScanJet 4570C" :interface "USB" :usbid "0x03f0" "0x1305" -:status :basic +:status :complete +:comment "Lineart/grayscale/color (24 bit), 100/200/300/600/1200/2400 DPI, flatbed/TMA slides/TMA negatives" + +:model "ScanJet 5500C" +:interface "USB" +:usbid "0x03f0" "0x1305" +:status :untested :comment "Lineart/grayscale/color (24 bit), 100/200/300/600/1200/2400 DPI, flatbed/TMA slides/TMA negatives" :model "ScanJet 5550C" :interface "USB" :usbid "0x03f0" "0x1205" -:status :basic +:status :complete :comment "Lineart/grayscale/color (24 bit), 100/200/300/600/1200/2400 DPI, flatbed/ADF/ADF duplex/TMA slides/TMA negatives" :model "ScanJet 5590" :interface "USB" :usbid "0x03f0" "0x1705" -:status :basic +:status :complete :comment "Lineart/grayscale/color (24 bit), 100/200/300/600/1200/2400 DPI, flatbed/ADF/ADF duplex/TMA slides/TMA negatives" :model "ScanJet 7650" :interface "USB" :usbid "0x03f0" "0x1805" -:status :basic +:status :complete :comment "Lineart/grayscale/color (24 bit), 100/200/300/600/1200/2400 DPI, flatbed/ADF/ADF duplex/TMA slides/TMA negatives" From bee067e9308647d4d097191f7088f9a82a9de184 Mon Sep 17 00:00:00 2001 From: Ilia Sotnikov Date: Wed, 6 May 2009 20:33:05 +0300 Subject: [PATCH 09/17] * Updated HP ScanJet model names displayed during the check_hp5590() --- tools/check-usb-chip.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/tools/check-usb-chip.c b/tools/check-usb-chip.c index da82343d4..f9ae89794 100644 --- a/tools/check-usb-chip.c +++ b/tools/check-usb-chip.c @@ -3063,7 +3063,7 @@ check_rts8822 (struct usb_device *dev) return "RTS8822"; } /* end of RTS8822 detection */ -/* Check for Silitek chipset found in HP5550/5590/7650 scanners */ +/* Check for Silitek chipset found in HP ScanJet 4500C/4570C/5500C/5550C/5590/7650 scanners */ static char * check_hp5590 (struct usb_device *dev) { @@ -3076,36 +3076,37 @@ check_hp5590 (struct usb_device *dev) uint8_t *ptr; int next_packet_size; unsigned int len; +#define HP5590_NAMES "HP4500C/4570C/5500C/5550C/5590/7650" if (verbose > 2) - printf (" checking for HP5550/5590/7650 chipset ...\n"); + printf (" checking for " HP5590_NAMES " chipset ...\n"); /* Check device descriptor */ if (dev->descriptor.bDeviceClass != 0xff) { if (verbose > 2) - printf (" this is not a HP5550/5590/7650 chipset (bDeviceClass = %d)\n", + printf (" this is not a " HP5590_NAMES " chipset (bDeviceClass = %d)\n", dev->descriptor.bDeviceClass); return 0; } if (dev->descriptor.bcdUSB != 0x200) { if (verbose > 2) - printf (" this is not a HP5550/5590/7650 chipset (bcdUSB = 0x%x)\n", + printf (" this is not a " HP5590_NAMES " chipset (bcdUSB = 0x%x)\n", dev->descriptor.bcdUSB); return 0; } if (dev->descriptor.bDeviceSubClass != 0xff) { if (verbose > 2) - printf (" this is not a HP5550/5590/7650 chipset (bDeviceSubClass = 0x%x)\n", + printf (" this is not a " HP5590_NAMES " chipset (bDeviceSubClass = 0x%x)\n", dev->descriptor.bDeviceSubClass); return 0; } if (dev->descriptor.bDeviceProtocol != 0xff) { if (verbose > 2) - printf (" this is not a HP5550/5590/7650 chipset (bDeviceProtocol = 0x%x)\n", + printf (" this is not a " HP5590_NAMES " chipset (bDeviceProtocol = 0x%x)\n", dev->descriptor.bDeviceProtocol); return 0; } @@ -3114,7 +3115,7 @@ check_hp5590 (struct usb_device *dev) if (dev->config[0].interface[0].altsetting[0].bNumEndpoints != 3) { if (verbose > 2) - printf (" this is not a HP5550/5590/7650 chipset (bNumEndpoints = %d)\n", + printf (" this is not a " HP5590_NAMES " chipset (bNumEndpoints = %d)\n", dev->config[0].interface[0].altsetting[0].bNumEndpoints); return 0; } @@ -3129,7 +3130,7 @@ check_hp5590 (struct usb_device *dev) { if (verbose > 2) printf - (" this is not a HP5550/5590/7650 chipset (bEndpointAddress = 0x%x, bmAttributes = 0x%x, " + (" this is not a " HP5590_NAMES " chipset (bEndpointAddress = 0x%x, bmAttributes = 0x%x, " "wMaxPacketSize = 0x%x, bInterval = 0x%x)\n", dev->config[0].interface[0].altsetting[0].endpoint[0]. bEndpointAddress, @@ -3151,7 +3152,7 @@ check_hp5590 (struct usb_device *dev) { if (verbose > 2) printf - (" this is not a HP5550/5590/7650 chipset (bEndpointAddress = 0x%x, bmAttributes = 0x%x, " + (" this is not a " HP5590_NAMES " chipset (bEndpointAddress = 0x%x, bmAttributes = 0x%x, " "wMaxPacketSize = 0x%x, bInterval = 0x%x)\n", dev->config[0].interface[0].altsetting[0].endpoint[1]. bEndpointAddress, @@ -3173,7 +3174,7 @@ check_hp5590 (struct usb_device *dev) { if (verbose > 2) printf - (" this is not a HP5550/5590/7650 chipset (bEndpointAddress = 0x%x, bmAttributes = 0x%x, " + (" this is not a " HP5590_NAMES " chipset (bEndpointAddress = 0x%x, bmAttributes = 0x%x, " "wMaxPacketSize = 0x%x, bInterval = 0x%x)\n", dev->config[0].interface[0].altsetting[0].endpoint[2]. bEndpointAddress, @@ -3314,7 +3315,7 @@ check_hp5590 (struct usb_device *dev) } finish_interface (handle); - return "HP5550/5590/7650"; + return HP5590_NAMES; } char * From 92076edd36584ba6df9d0458ea6a4b9df2b3bd1a Mon Sep 17 00:00:00 2001 From: Ilia Sotnikov Date: Wed, 6 May 2009 20:37:48 +0300 Subject: [PATCH 10/17] * HP5590: - Updated the list of supported devices (HP 5500C which is similar to 4570C, 5500C which is similar to 4500C) - only strings/comments, no code was changed - Updated backend version - Updated man page --- backend/hp5590.c | 8 +++++--- backend/hp5590_cmds.c | 7 ++++--- backend/hp5590_cmds.h | 3 ++- backend/hp5590_low.c | 3 ++- backend/hp5590_low.h | 3 ++- doc/sane-hp5590.man | 11 ++++++++--- 6 files changed, 23 insertions(+), 12 deletions(-) diff --git a/backend/hp5590.c b/backend/hp5590.c index ab807475c..f9d58c2ed 100644 --- a/backend/hp5590.c +++ b/backend/hp5590.c @@ -39,7 +39,8 @@ whether to permit this exception to apply to your modifications. If you do not wish that, delete this exception notice. - This file is part of a SANE backend for HP 4570/5550/5590/7650 Scanners + This file is part of a SANE backend for + HP ScanJet 4500C/4570C/5500C/5550C/5590/7650 Scanners */ #include "sane/config.h" @@ -72,7 +73,7 @@ } /* #define HAS_WORKING_COLOR_48 */ -#define BUILD 4 +#define BUILD 5 #define USB_TIMEOUT 30 * 1000 static SANE_Word @@ -318,7 +319,8 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback __sane_unused__ authorize DBG_INIT(); - DBG (1, "SANE backed for HP 4570/5550/5590/7650 %u.%u.%u\n", SANE_CURRENT_MAJOR, V_MINOR, BUILD); + DBG (1, "SANE backed for HP ScanJet 4500C/4570C/5500C/5550C/5590/7650 %u.%u.%u\n", + SANE_CURRENT_MAJOR, V_MINOR, BUILD); DBG (1, "(c) Ilia Sotnikov \n"); if (version_code) diff --git a/backend/hp5590_cmds.c b/backend/hp5590_cmds.c index 2521e7e4a..ef8c4bafd 100644 --- a/backend/hp5590_cmds.c +++ b/backend/hp5590_cmds.c @@ -39,7 +39,8 @@ whether to permit this exception to apply to your modifications. If you do not wish that, delete this exception notice. - This file is part of a SANE backend for HP 4570/5550/5590/7650 Scanners + This file is part of a SANE backend for + HP ScanJet 4500C/4570C/5500C/5550C/5590/7650 Scanners */ #include "sane/config.h" @@ -72,12 +73,12 @@ hp5590_models[] = { { SCANNER_HP4570, 0x03f0, 0x1305, "SILITEKIElwood", - "4570", "Workgroup scanner" + "4570C/5500C", "Workgroup scanner" }, { SCANNER_HP5550, 0x03f0, 0x1205, "SILITEKIPenguin", - "5550", "Workgroup scanner" + "4500C/5550C", "Workgroup scanner" }, { SCANNER_HP5590, diff --git a/backend/hp5590_cmds.h b/backend/hp5590_cmds.h index 131f98e27..9dbede54e 100644 --- a/backend/hp5590_cmds.h +++ b/backend/hp5590_cmds.h @@ -39,7 +39,8 @@ whether to permit this exception to apply to your modifications. If you do not wish that, delete this exception notice. - This file is part of a SANE backend for HP 4570/5550/5590/7650 Scanners + This file is part of a SANE backend for + HP ScanJet 4500C/4570C/5500C/5550C/5590/7650 Scanners */ #ifndef HP5590_H diff --git a/backend/hp5590_low.c b/backend/hp5590_low.c index 9bea84e57..b785d67e1 100644 --- a/backend/hp5590_low.c +++ b/backend/hp5590_low.c @@ -38,7 +38,8 @@ whether to permit this exception to apply to your modifications. If you do not wish that, delete this exception notice. - This file is part of a SANE backend for HP 4570/5550/5590/7650 Scanners + This file is part of a SANE backend for + HP ScanJet 4500C/4570C/5500C/5550C/5590/7650 Scanners */ #include "sane/config.h" diff --git a/backend/hp5590_low.h b/backend/hp5590_low.h index a9dad4b7d..b243bd242 100644 --- a/backend/hp5590_low.h +++ b/backend/hp5590_low.h @@ -38,7 +38,8 @@ whether to permit this exception to apply to your modifications. If you do not wish that, delete this exception notice. - This file is part of a SANE backend for HP 4570/5550/5590/7650 Scanners + This file is part of a SANE backend for + HP ScanJet 4500C/4570C/5500C/5550C/5590/7650 Scanners */ #ifndef HP5590_LOW_H diff --git a/doc/sane-hp5590.man b/doc/sane-hp5590.man index 571dbf638..2ccfcc59a 100644 --- a/doc/sane-hp5590.man +++ b/doc/sane-hp5590.man @@ -1,7 +1,8 @@ .TH sane\-hp5590 5 "13 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy" .IX sane\-hp5590 .SH NAME -sane\-hp5590 \- SANE backend for Hewlett-Packard 5550/5590/7650 Workgroup/Document scanners +sane\-hp5590 \- SANE backend for +Hewlett-Packard 4500C/4570C/5500C/5550C/5590/7650 Workgroup/Document scanners .SH DESCRIPTION The .B sane\-hp5590 @@ -9,9 +10,13 @@ library implements a SANE (Scanner Access Now Easy) backend that provides access to the following Hewlett-Packard Workgroup/Document scanners: .PP .RS -ScanJet 4570 +ScanJet 4500C .br -ScanJet 5550 +ScanJet 4570C +.br +ScanJet 5500C +.br +ScanJet 5550C .br ScanJet 5590 .br From e232f547a4438bc59596011d0437c992c84218c0 Mon Sep 17 00:00:00 2001 From: Ilia Sotnikov Date: Wed, 6 May 2009 20:46:24 +0300 Subject: [PATCH 11/17] * doc/descriptions/unsupported.desc: HP ScanJet 4500C/4570C/5500C is supported by the 'hp5590' backend. * doc/descriptions/hp5590.desc: Updated backend version, added HP ScanJet 4500C as completely supported, added HP ScanJet 5500C as untested, HP ScanJet 4570C/5550C/5590/7650 marked as completely supported * tools/check-usb-chip.c: Updated HP ScanJet model names displayed during the check_hp5590(). * backend/hp5590.c, backend/hp5590_cmds.c, backend/hp5590_cmds.h, backend/hp5590_low.c, backend/hp5590_low.h, doc/sane-hp5590.man: Updated the list of supported devices (added HP 5500C which is similar to 4570C, 5500C which is similar to 4500C) - only strings/comments, no code was changed. Updated backend version. Updated man page. --- ChangeLog | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/ChangeLog b/ChangeLog index bf53e5969..3c68100a3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +2009-05-06 Ilia Sotnikov + + * doc/descriptions/unsupported.desc: + HP ScanJet 4500C/4570C/5500C is supported by the 'hp5590' backend. + * doc/descriptions/hp5590.desc: + Updated backend version, added HP ScanJet 4500C as completely supported, + added HP ScanJet 5500C as untested, HP ScanJet 4570C/5550C/5590/7650 + marked as completely supported + * tools/check-usb-chip.c: + Updated HP ScanJet model names displayed during the check_hp5590(). + * backend/hp5590.c, backend/hp5590_cmds.c, backend/hp5590_cmds.h, + backend/hp5590_low.c, backend/hp5590_low.h, doc/sane-hp5590.man: + Updated the list of supported devices (added HP 5500C which is similar + to 4570C, 5500C which is similar to 4500C) - only strings/comments, no + code was changed. Updated backend version. Updated man page. + 2009-05-06 Julien Blache * tools/sane-desc.c: unbreak udev rules, use ATTRS instead of ATTR for USB devices. From 54d4b69abb294851e71d3936f4cf83b85945948c Mon Sep 17 00:00:00 2001 From: Pilotfun Date: Wed, 6 May 2009 21:35:08 +0200 Subject: [PATCH 12/17] Updated pixma backend descriptions for ImageClass MF4010 and MF4018. --- ChangeLog | 4 ++++ doc/descriptions/pixma.desc | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3c68100a3..28efd4776 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2009-05-06 Nicolas Martin + * doc/descriptions/pixma.desc: + Updated descriptions in pixma backend for ImageClass MF4010 and MF4018. + 2009-05-06 Ilia Sotnikov * doc/descriptions/unsupported.desc: diff --git a/doc/descriptions/pixma.desc b/doc/descriptions/pixma.desc index f72153eb9..32df04c65 100644 --- a/doc/descriptions/pixma.desc +++ b/doc/descriptions/pixma.desc @@ -378,13 +378,13 @@ :model "imageCLASS MF4010" :interface "USB" :usbid "0x04a9" "0x26b4" -:status :untested +:status :good :comment "All resolutions supported (up to 600DPI)" :model "imageCLASS MF4018" :interface "USB" :usbid "0x04a9" "0x26b4" -:status :untested +:status :good :comment "All resolutions supported (up to 600DPI)" :model "imageCLASS MF6500 series" From 484478524ebe8f0f1cfee16bc8df78a5ac79354a Mon Sep 17 00:00:00 2001 From: "m. allan noah" Date: Thu, 7 May 2009 14:17:08 -0400 Subject: [PATCH 13/17] add $(ALL) to install-translations --- po/Makefile.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/po/Makefile.in b/po/Makefile.in index 748e8c98f..fc0701727 100644 --- a/po/Makefile.in +++ b/po/Makefile.in @@ -438,7 +438,7 @@ all-mos: $(MO_FILES) @echo "generating $@ from $^" @$(MSGFMT) -o $@ $^ -install-translations: +install-translations: $(ALL) @for lang in $(ALL_LINGUAS) ; do \ dir=$(localedir)/$${lang}/LC_MESSAGES ; \ echo "installing sane-backends.$${lang}.mo to $${dir}/sane-backends.mo..." ; \ From 024cd35c9cfcc0388b62619bb20779e31098d15e Mon Sep 17 00:00:00 2001 From: "m. allan noah" Date: Fri, 8 May 2009 16:05:54 -0400 Subject: [PATCH 14/17] canon_dr backend v27, bugfixes and new calibration code - bug fix in read_panel() - initialize vars in do_usb_cmd() - set buffermode off by default - clear page counter during init and sane_start() - eject previous page during init and sane_start() - improved SSM_BUFF macros - moved set_window() to after ssm-*() - add coarse calibration (AFE offset/gain & per-channel exposure) - add fine calibration (per-cell offset/gain) - free image and fine cal buffers in sane_close() - compare page counter of small scanners only in non-buffered mode - add back-side gray mirroring code for DR-2580C --- ChangeLog | 15 + backend/canon_dr-cmd.h | 34 +- backend/canon_dr.c | 864 ++++++++++++++++++++++++++++++++++++----- backend/canon_dr.h | 39 +- 4 files changed, 854 insertions(+), 98 deletions(-) diff --git a/ChangeLog b/ChangeLog index 28efd4776..c146a17ea 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2009-05-08 m. allan noah + * backend/canon_dr*: backend v27 + - bug fix in read_panel() + - initialize vars in do_usb_cmd() + - set buffermode off by default + - clear page counter during init and sane_start() + - eject previous page during init and sane_start() + - improved SSM_BUFF macros + - moved set_window() to after ssm-*() + - add coarse calibration (AFE offset/gain & per-channel exposure) + - add fine calibration (per-cell offset/gain) + - free image and fine cal buffers in sane_close() + - compare page counter of small scanners only in non-buffered mode + - add back-side gray mirroring code for DR-2580C + 2009-05-06 Nicolas Martin * doc/descriptions/pixma.desc: Updated descriptions in pixma backend for ImageClass MF4010 and MF4018. diff --git a/backend/canon_dr-cmd.h b/backend/canon_dr-cmd.h index cc36f7434..b5e78286c 100644 --- a/backend/canon_dr-cmd.h +++ b/backend/canon_dr-cmd.h @@ -307,18 +307,20 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes) #define SSM_PAGE_len 0x0e #define set_SSM_page_len(sb, val) sb[0x05] = val -/* for DF page */ +/* for DF (0x30) page */ #define set_SSM_DF_deskew_roll(sb, val) setbitfield(sb+7, 1, 5, val) #define set_SSM_DF_staple(sb, val) setbitfield(sb+7, 1, 4, val) #define set_SSM_DF_thick(sb, val) setbitfield(sb+7, 1, 2, val) #define set_SSM_DF_len(sb, val) setbitfield(sb+7, 1, 0, val) #define set_SSM_DF_textdir(sb, val) setbitfield(sb+9, 0xf, 0, val) -/* for BUFFER page */ -#define set_SSM_BUFF_duplex(sb, val) sb[0x06] = val -#define set_SSM_BUFF_async(sb, val) sb[0x0a] = val +/* for BUFFER (0x32) page */ +#define set_SSM_BUFF_duplex(sb, val) setbitfield(sb+6, 1, 1, val) +#define set_SSM_BUFF_unk(sb, val) sb[0x07] = val +#define set_SSM_BUFF_async(sb, val) setbitfield(sb+0x0a, 1, 6, val) +#define set_SSM_BUFF_ald(sb, val) setbitfield(sb+0x0a, 1, 5, val) -/* for DO page */ +/* for DO (0x36) page */ #define SSM_DO_none 0 #define SSM_DO_red 1 #define SSM_DO_green 2 @@ -345,6 +347,28 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes) /* the payload */ #define CC_pay_len 0x20 +#define set_CC_f_gain(sb, val) sb[0] = val +#define set_CC_unk1(sb, val) sb[1] = val +#define set_CC_f_offset(sb, val) sb[2] = val +#define set_CC_unk2(sb, val) sb[3] = val + +#define set_CC_exp_f_r1(sb, val) putnbyte(sb + 0x04, val, 2) +#define set_CC_exp_f_g1(sb, val) putnbyte(sb + 0x06, val, 2) +#define set_CC_exp_f_b1(sb, val) putnbyte(sb + 0x08, val, 2) +#define set_CC_exp_f_r2(sb, val) putnbyte(sb + 0x0a, val, 2) +#define set_CC_exp_f_g2(sb, val) putnbyte(sb + 0x0c, val, 2) +#define set_CC_exp_f_b2(sb, val) putnbyte(sb + 0x0e, val, 2) + +#define set_CC_b_gain(sb, val) sb[0x10] = val +#define set_CC_b_offset(sb, val) sb[0x12] = val + +#define set_CC_exp_b_r1(sb, val) putnbyte(sb + 0x14, val, 2) +#define set_CC_exp_b_g1(sb, val) putnbyte(sb + 0x16, val, 2) +#define set_CC_exp_b_b1(sb, val) putnbyte(sb + 0x18, val, 2) +#define set_CC_exp_b_r2(sb, val) putnbyte(sb + 0x1a, val, 2) +#define set_CC_exp_b_g2(sb, val) putnbyte(sb + 0x1c, val, 2) +#define set_CC_exp_b_b2(sb, val) putnbyte(sb + 0x1e, val, 2) + /* ==================================================================== */ /* window descriptor macros for SET_WINDOW and GET_WINDOW */ diff --git a/backend/canon_dr.c b/backend/canon_dr.c index 5edb6f8af..b5d5ab3a7 100644 --- a/backend/canon_dr.c +++ b/backend/canon_dr.c @@ -56,8 +56,9 @@ Section 2 - sane_init, _get_devices, _open & friends Section 3 - sane_*_option functions Section 4 - sane_start, _get_param, _read & friends - Section 5 - sane_close functions - Section 6 - misc functions + Section 5 - calibration functions + Section 6 - sane_close functions + Section 7 - misc functions Changes: v1 2008-10-29, MAN @@ -182,6 +183,19 @@ v26 2009-04-14, MAN (SANE 1.0.20) - return cmd status for reads on sensors - allow rs to adjust read length for all bad status responses + v27 2009-05-08, MAN + - bug fix in read_panel() + - initialize vars in do_usb_cmd() + - set buffermode off by default + - clear page counter during init and sane_start() + - eject previous page during init and sane_start() + - improved SSM_BUFF macros + - moved set_window() to after ssm-*() + - add coarse calibration (AFE offset/gain & per-channel exposure) + - add fine calibration (per-cell offset/gain) + - free image and fine cal buffers in sane_close() + - compare page counter of small scanners only in non-buffered mode + - add back-side gray mirroring code for DR-2580C SANE FLOW DIAGRAM @@ -242,7 +256,7 @@ #include "canon_dr.h" #define DEBUG 1 -#define BUILD 26 +#define BUILD 27 /* values for SANE_DEBUG_CANON_DR env var: - errors 5 @@ -687,6 +701,11 @@ attach_one (const char *device_name, int connType) return ret; } + /* eject paper leftover*/ + if(object_position (s, SANE_FALSE)){ + DBG (5, "attach_one: ERROR: cannot eject page\n"); + } + /* enable/read the buttons */ ret = init_panel (s); if (ret != SANE_STATUS_GOOD) { @@ -1078,7 +1097,9 @@ init_model (struct scanner *s) s->rgb_format = 1; s->color_interlace[SIDE_FRONT] = COLOR_INTERLACE_RRGGBB; s->color_interlace[SIDE_BACK] = COLOR_INTERLACE_rRgGbB; + s->gray_interlace[SIDE_BACK] = GRAY_INTERLACE_gG; s->duplex_interlace = DUPLEX_INTERLACE_FBFB; + s->need_cal = 1; } else if (strstr (s->model_name,"DR-2510")){ @@ -1091,6 +1112,8 @@ init_model (struct scanner *s) s->color_interlace[SIDE_FRONT] = COLOR_INTERLACE_2510; s->color_interlace[SIDE_BACK] = COLOR_INTERLACE_2510; s->duplex_interlace = DUPLEX_INTERLACE_2510; + s->need_cal = 1; + s->invert_tly = 1; /*only in Y direction, so we trash them*/ s->std_res_100=0; @@ -1113,6 +1136,7 @@ init_model (struct scanner *s) s->color_interlace[SIDE_FRONT] = COLOR_INTERLACE_RRGGBB; s->color_interlace[SIDE_BACK] = COLOR_INTERLACE_RRGGBB; s->duplex_interlace = DUPLEX_INTERLACE_FBFB; + s->need_cal = 1; } DBG (10, "init_model: finish\n"); @@ -1132,6 +1156,7 @@ init_panel (struct scanner *s) ret = read_panel(s,OPT_COUNTER); s->panel_enable_led = 1; + s->panel_counter = 0; ret = send_panel(s); DBG (10, "init_panel: finish\n"); @@ -1194,7 +1219,6 @@ init_user (struct scanner *s) s->threshold = 0x80; s->compress_arg = 50; - s->buffermode = 1; DBG (10, "init_user: finish\n"); @@ -2564,10 +2588,16 @@ ssm_buffer (struct scanner *s) set_SSM_page_len(out, SSM_PAGE_len); if(s->source == SOURCE_ADF_DUPLEX){ - set_SSM_BUFF_duplex(out, 0x02); + set_SSM_BUFF_duplex(out, 1); } if(s->buffermode){ - set_SSM_BUFF_async(out, 0x40); + set_SSM_BUFF_async(out, 1); + } + if(0){ + set_SSM_BUFF_ald(out, 1); + } + if(0){ + set_SSM_BUFF_unk(out,1); } ret = do_cmd ( @@ -2745,7 +2775,7 @@ read_panel(struct scanner *s,SANE_Int option) DBG (10, "read_panel: start\n"); /* only run this if frontend has read previous value */ - if (!s->hw_read[option-OPT_START]) { + if (s->hw_read[option-OPT_START]) { DBG (15, "read_panel: running\n"); @@ -2778,7 +2808,7 @@ read_panel(struct scanner *s,SANE_Int option) s->hw_read[option-OPT_START] = 1; - DBG (10, "read_panel: finish\n"); + DBG (10, "read_panel: finish %d\n",s->panel_counter); return ret; } @@ -2977,6 +3007,27 @@ sane_start (SANE_Handle handle) s->side = SIDE_FRONT; } + /* eject paper leftover*/ + if(object_position (s, SANE_FALSE)){ + DBG (5, "sane_start: ERROR: cannot eject page\n"); + } + + /* AFE cal */ + if(calibrate_AFE(s)){ + DBG (5, "sane_start: ERROR: cannot cal afe\n"); + } + + /* fine cal */ + if(calibrate_fine(s)){ + DBG (5, "sane_start: ERROR: cannot cal fine\n"); + } + + /* reset the page counter after calibration */ + s->panel_counter = 0; + if(send_panel(s)){ + DBG (5, "sane_start: ERROR: cannot send panel\n"); + } + /* load our own private copy of scan params */ ret = sane_get_parameters ((SANE_Handle) s, &s->params); if (ret != SANE_STATUS_GOOD) { @@ -3001,18 +3052,6 @@ sane_start (SANE_Handle handle) } * */ - /* eject paper leftover*/ - if(object_position (s, SANE_FALSE)){ - DBG (5, "sane_start: ERROR: cannot eject page\n"); - } - - /* set window command */ - ret = set_window(s); - if (ret != SANE_STATUS_GOOD) { - DBG (5, "sane_start: ERROR: cannot set window\n"); - return ret; - } - /* buffer command */ ret = ssm_buffer(s); if (ret != SANE_STATUS_GOOD) { @@ -3031,6 +3070,13 @@ sane_start (SANE_Handle handle) DBG (5, "sane_start: ERROR: cannot ssm df\n"); return ret; } + + /* set window command */ + ret = set_window(s); + if (ret != SANE_STATUS_GOOD) { + DBG (5, "sane_start: ERROR: cannot set window\n"); + return ret; + } } /* if already running, duplex needs to switch sides */ else if(s->source == SOURCE_ADF_DUPLEX){ @@ -3074,16 +3120,34 @@ sane_start (SANE_Handle handle) if(!s->started){ /* make large buffers to hold the images */ - ret = setup_buffers(s); + ret = image_buffers(s,1); if (ret != SANE_STATUS_GOOD) { DBG (5, "sane_start: ERROR: cannot load buffers\n"); return ret; } +#if 0 + /* put cal buffers in the image */ + memcpy( + s->buffers[s->side], + s->f_offset[s->side], + s->params.bytes_per_line + ); + s->bytes_rx[s->side] += s->params.bytes_per_line; + + memcpy( + s->buffers[s->side]+s->bytes_rx[s->side], + s->f_gain[s->side], + s->params.bytes_per_line + ); + s->bytes_rx[s->side] += s->params.bytes_per_line; +#endif + /* grab page count before first page */ ret = read_panel (s, OPT_COUNTER); + ret = read_panel (s, OPT_COUNTER); if (ret != SANE_STATUS_GOOD) { - DBG (5, "sane_start: ERROR: cannot load page\n"); + DBG (5, "sane_start: ERROR: cannot read panel\n"); return ret; } s->prev_page = s->panel_counter; @@ -3096,7 +3160,7 @@ sane_start (SANE_Handle handle) } /* start scanning */ - ret = start_scan (s); + ret = start_scan (s,0); if (ret != SANE_STATUS_GOOD) { DBG (5, "sane_start: ERROR: cannot start_scan\n"); return ret; @@ -3109,27 +3173,27 @@ sane_start (SANE_Handle handle) /* stuff done between subsequent pages */ else { - /* big scanners use OP to detect paper */ - if(s->always_op){ + /* big scanners and small ones in non-buff mode: OP to detect paper */ + if(s->always_op || !s->buffermode){ ret = object_position (s, SANE_TRUE); if (ret != SANE_STATUS_GOOD) { DBG (5, "sane_start: ERROR: cannot load page\n"); return ret; } - } - - /* user wants unbuffered scans */ - /* send scan command */ - if(!s->buffermode){ - ret = start_scan (s); - if (ret != SANE_STATUS_GOOD) { - DBG (5, "sane_start: ERROR: cannot start_scan\n"); - return ret; + + /* user wants unbuffered scans */ + /* send scan command */ + if(!s->buffermode){ + ret = start_scan (s,0); + if (ret != SANE_STATUS_GOOD) { + DBG (5, "sane_start: ERROR: cannot start_scan\n"); + return ret; + } } } - /* small scanners check for more pages by reading counter */ - if(!s->always_op){ + /* small, buffering scanners check for more pages by reading counter */ + else{ ret = read_panel (s, OPT_COUNTER); if (ret != SANE_STATUS_GOOD) { DBG (5, "sane_start: ERROR: cannot load page\n"); @@ -3138,10 +3202,11 @@ sane_start (SANE_Handle handle) if(s->prev_page == s->panel_counter){ DBG (5, "sane_start: same counter (%d) no paper?\n",s->prev_page); - /* eject paper leftover*/ + /* eject paper leftover if(object_position (s, SANE_FALSE)){ DBG (5, "sane_start: ERROR: cannot eject page\n"); } + * */ return SANE_STATUS_NO_DOCS; } @@ -3149,7 +3214,6 @@ sane_start (SANE_Handle handle) s->prev_page,s->panel_counter); } } - } /* reset jpeg params on each page */ @@ -3164,35 +3228,36 @@ sane_start (SANE_Handle handle) } /* - * callocs a buffer to hold the scan data + * frees/callocs buffers to hold the scan data */ static SANE_Status -setup_buffers (struct scanner *s) +image_buffers (struct scanner *s, int setup) { SANE_Status ret = SANE_STATUS_GOOD; int side; - DBG (10, "setup_buffers: start\n"); + DBG (10, "image_buffers: start\n"); for(side=0;side<2;side++){ - /* free old mem */ + /* free current buffer */ if (s->buffers[side]) { - DBG (15, "setup_buffers: free buffer %d.\n",side); + DBG (15, "image_buffers: free buffer %d.\n",side); free(s->buffers[side]); s->buffers[side] = NULL; } - if(s->bytes_tot[side]){ + /* build new buffer if asked */ + if(s->bytes_tot[side] && setup){ s->buffers[side] = calloc (1,s->bytes_tot[side]); if (!s->buffers[side]) { - DBG (5, "setup_buffers: Error, no buffer %d.\n",side); + DBG (5, "image_buffers: Error, no buffer %d.\n",side); return SANE_STATUS_NO_MEM; } } } - DBG (10, "setup_buffers: finish\n"); + DBG (10, "image_buffers: finish\n"); return ret; } @@ -3368,7 +3433,7 @@ object_position (struct scanner *s, int i_load) * to start scanning.) */ static SANE_Status -start_scan (struct scanner *s) +start_scan (struct scanner *s, int type) { SANE_Status ret = SANE_STATUS_GOOD; @@ -3380,6 +3445,12 @@ start_scan (struct scanner *s) DBG (10, "start_scan: start\n"); + /* calibration scans use 0xff or 0xfe */ + if(type){ + out[0] = type; + out[1] = type; + } + if (s->source != SOURCE_ADF_DUPLEX) { outLen--; if(s->source == SOURCE_ADF_BACK) { @@ -3480,22 +3551,32 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len, SANE_Int * len /* buffer both sides */ if(!s->eof_rx[SIDE_FRONT] || !s->eof_rx[SIDE_BACK]){ - ret = read_from_scanner_duplex(s); + ret = read_from_scanner_duplex(s, 0); if(ret){ DBG(5,"sane_read: front returning %d\n",ret); return ret; } + /*read last block, update counter*/ + if(s->eof_rx[SIDE_FRONT] && s->eof_rx[SIDE_BACK]){ + s->prev_page++; + DBG(15,"sane_read: duplex counter %d\n",s->prev_page); + } } } /* simplex or non-alternating duplex */ else{ if(!s->eof_rx[s->side]){ - ret = read_from_scanner(s, s->side); + ret = read_from_scanner(s, s->side, 0); if(ret){ DBG(5,"sane_read: side %d returning %d\n",s->side,ret); return ret; } + /*read last block, update counter*/ + if(s->eof_rx[s->side]){ + s->prev_page++; + DBG(15,"sane_read: side %d counter %d\n",s->side,s->prev_page); + } } } @@ -3505,7 +3586,7 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len, SANE_Int * len /* we've read everything, and user cancelled */ /* tell scanner to stop */ if(s->eof_rx[s->side] && - (s->cancelled || (!read_panel(s,OPT_STOP) && s->panel_stop)) + (s->cancelled /*|| (!read_panel(s,OPT_STOP) && s->panel_stop)*/) ){ DBG(5,"sane_read: user cancelled\n"); return cancel(s); @@ -3516,7 +3597,7 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len, SANE_Int * len } static SANE_Status -read_from_scanner(struct scanner *s, int side) +read_from_scanner(struct scanner *s, int side, int exact) { SANE_Status ret=SANE_STATUS_GOOD; @@ -3526,7 +3607,7 @@ read_from_scanner(struct scanner *s, int side) unsigned char * in; size_t inLen = 0; - int bytes = s->buffer_size; + size_t bytes = s->buffer_size; size_t remain = s->bytes_tot[side] - s->bytes_rx[side]; DBG (10, "read_from_scanner: start\n"); @@ -3539,8 +3620,15 @@ read_from_scanner(struct scanner *s, int side) bytes -= s->params.bytes_per_line; } - DBG(15, "read_from_scanner: si:%d to:%d rx:%d re:%d bu:%d pa:%d\n", side, - s->bytes_tot[side], s->bytes_rx[side], remain, s->buffer_size, bytes); + /* usually (image) we want to read too much data, and get RS */ + /* sometimes (calib) we want to do an exact read */ + if(exact && bytes > remain){ + bytes = remain; + } + + DBG(15, "read_from_scanner: si:%d to:%d rx:%d re:%d bu:%d pa:%d ex:%d\n", + side, s->bytes_tot[side], s->bytes_rx[side], + remain, s->buffer_size, bytes, exact); inLen = bytes; in = malloc(inLen); @@ -3563,10 +3651,10 @@ read_from_scanner(struct scanner *s, int side) ); if (ret == SANE_STATUS_GOOD) { - DBG(15, "read_from_scanner: got GOOD, returning GOOD\n"); + DBG(15, "read_from_scanner: got GOOD, returning GOOD %d\n",inLen); } else if (ret == SANE_STATUS_EOF) { - DBG(15, "read_from_scanner: got EOF, finishing\n"); + DBG(15, "read_from_scanner: got EOF, finishing %d\n",inLen); } else if (ret == SANE_STATUS_DEVICE_BUSY) { DBG(5, "read_from_scanner: got BUSY, returning GOOD\n"); @@ -3642,10 +3730,19 @@ read_from_scanner(struct scanner *s, int side) free(in); + /* we've read all data, but not eof. clear and pretend */ + if(exact && inLen == remain){ + DBG (10, "read_from_scanner: exact read, clearing\n"); + ret = object_position (s,SANE_FALSE); + if(ret){ + return ret; + } + ret = SANE_STATUS_EOF; + } + if(ret == SANE_STATUS_EOF){ s->bytes_tot[side] = s->bytes_rx[side]; s->eof_rx[side] = 1; - s->prev_page++; ret = SANE_STATUS_GOOD; } @@ -3657,7 +3754,7 @@ read_from_scanner(struct scanner *s, int side) /* cheaper scanners interlace duplex scans on a byte basis * this code requests double width lines from scanner */ static SANE_Status -read_from_scanner_duplex(struct scanner *s) +read_from_scanner_duplex(struct scanner *s,int exact) { SANE_Status ret=SANE_STATUS_GOOD; @@ -3667,7 +3764,7 @@ read_from_scanner_duplex(struct scanner *s) unsigned char * in; size_t inLen = 0; - int bytes = s->buffer_size; + size_t bytes = s->buffer_size; size_t remain = s->bytes_tot[SIDE_FRONT] + s->bytes_tot[SIDE_BACK] - s->bytes_rx[SIDE_FRONT] - s->bytes_rx[SIDE_BACK]; @@ -3676,8 +3773,14 @@ read_from_scanner_duplex(struct scanner *s) /* all requests must end on WIDE line boundary */ bytes -= (bytes % (s->params.bytes_per_line*2)); - DBG(15, "read_from_scanner_duplex: re:%d bu:%d pa:%d\n", - remain, s->buffer_size, bytes); + /* usually (image) we want to read too much data, and get RS */ + /* sometimes (calib) we want to do an exact read */ + if(exact && bytes > remain){ + bytes = remain; + } + + DBG(15, "read_from_scanner_duplex: re:%d bu:%d pa:%d ex:%d\n", + remain, s->buffer_size, bytes, exact); inLen = bytes; in = malloc(inLen); @@ -3701,10 +3804,10 @@ read_from_scanner_duplex(struct scanner *s) ); if (ret == SANE_STATUS_GOOD) { - DBG(15, "read_from_scanner_duplex: got GOOD, returning GOOD\n"); + DBG(15, "read_from_scanner_duplex: got GOOD, returning GOOD %d\n",inLen); } else if (ret == SANE_STATUS_EOF) { - DBG(15, "read_from_scanner_duplex: got EOF, finishing\n"); + DBG(15, "read_from_scanner_duplex: got EOF, finishing %d\n",inLen); } else if (ret == SANE_STATUS_DEVICE_BUSY) { DBG(5, "read_from_scanner_duplex: got BUSY, returning GOOD\n"); @@ -3729,12 +3832,21 @@ read_from_scanner_duplex(struct scanner *s) free(in); + /* we've read all data, but not eof. clear and pretend */ + if(exact && inLen == remain){ + DBG (10, "read_from_scanner_duplex: exact read, clearing\n"); + ret = object_position (s,SANE_FALSE); + if(ret){ + return ret; + } + ret = SANE_STATUS_EOF; + } + if(ret == SANE_STATUS_EOF){ s->bytes_tot[SIDE_FRONT] = s->bytes_rx[SIDE_FRONT]; s->bytes_tot[SIDE_BACK] = s->bytes_rx[SIDE_BACK]; s->eof_rx[SIDE_FRONT] = 1; s->eof_rx[SIDE_BACK] = 1; - s->prev_page++; ret = SANE_STATUS_GOOD; } @@ -3756,6 +3868,8 @@ copy_simplex(struct scanner *s, unsigned char * buf, int len, int side) int t = bwidth/3; int f = bwidth/4; int tw = bwidth/12; + int start = s->bytes_rx[side]; + int valid = bwidth; /* invert image if scanner needs it for this mode */ /* jpeg data does not use inverting */ @@ -3768,10 +3882,24 @@ copy_simplex(struct scanner *s, unsigned char * buf, int len, int side) if(s->params.format == SANE_FRAME_GRAY){ switch (s->gray_interlace[side]) { + + /* one line has the following format: ggg...GGG + * where the 'capital' letters are the beginning of the line */ + case GRAY_INTERLACE_gG: + DBG (10, "copy_simplex: gray, gG\n"); + for(i=0; i=0; j--){ + s->buffers[side][s->bytes_rx[side]++] = buf[i+j]; + } + } + break; case GRAY_INTERLACE_2510: DBG (10, "copy_simplex: gray, 2510\n"); - + + /* the last 1/12 of 2510's data is black garbage */ + valid -= tw; + for(i=0; ibytes_rx[side] += len; } + /* non-jpeg data may need calibration applied*/ + if(s->params.format <= SANE_FRAME_RGB && s->f_offset[side]){ + DBG (15, "copy_simplex: apply offset\n"); + for(i=start;ibytes_rx[side];i+=bwidth){ + for(j=0;jbuffers[side][i+j] - s->f_offset[side][j]; + if(curr < 0) curr = 0; + s->buffers[side][i+j] = curr; + } + } + } + if(s->params.format <= SANE_FRAME_RGB && s->f_gain[side]){ + DBG (15, "copy_simplex: apply gain\n"); + for(i=start;ibytes_rx[side];i+=bwidth){ + for(j=0;jbuffers[side][i+j] * 224/s->f_gain[side][j]; + if(curr > 255) curr = 255; + s->buffers[side][i+j] = curr; + } + } + } + DBG (10, "copy_simplex: finished\n"); return ret; @@ -4014,9 +4167,542 @@ read_from_buffer(struct scanner *s, SANE_Byte * buf, SANE_Int max_len, return ret; } +/* + * @@ Section 5 - calibration functions + */ + +#if 0 +static SANE_Status +foo_AFE(struct scanner *s) +{ + SANE_Status ret = SANE_STATUS_GOOD; + + unsigned char cmd[] = { + 0x3b, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + }; + size_t cmdLen = 12; + + unsigned char in[4]; + size_t inLen = 4; + + DBG (10, "foo_AFE: start\n"); + + ret = do_cmd ( + s, 1, 0, + cmd, cmdLen, + NULL, 0, + in, &inLen + ); + if (ret != SANE_STATUS_GOOD) + return ret; + + DBG (10, "foo_AFE: finish\n"); + + return ret; +} +#endif /* - * @@ Section 4 - SANE cleanup functions + * makes several scans, adjusts coarse calibration + */ +static SANE_Status +calibrate_AFE (struct scanner *s) +{ + SANE_Status ret = SANE_STATUS_GOOD; + int i, j, k; + int min, max; + int lines = 8; + int valid = 0; + + /* save the old values */ + int mode = s->mode; + int source = s->source; + + DBG (10, "calibrate_AFE: start\n"); + + if(!s->need_cal){ + DBG (10, "calibrate_AFE: not required\n"); + return ret; + } + + if(s->c_res == s->resolution_x && s->c_mode == s->mode){ + DBG (10, "calibrate_AFE: already done\n"); + return ret; + } + + /* always cal in duplex color */ + s->mode = MODE_COLOR; + s->source = SOURCE_ADF_DUPLEX; + + /* load our own private copy of scan params */ + ret = sane_get_parameters ((SANE_Handle) s, &s->params); + if (ret != SANE_STATUS_GOOD) { + DBG (5, "calibrate_AFE: ERROR: cannot get params\n"); + return ret; + } + + /* only need a few lines of data */ + s->params.lines = lines; + + /* figure out how many valid bytes per line (2510 is padded) */ + if(s->color_interlace[SIDE_FRONT] == COLOR_INTERLACE_2510) + valid = s->params.bytes_per_line*11/12; + else + valid = s->params.bytes_per_line; + + /* store the number of front bytes */ + s->bytes_tot[SIDE_FRONT] = s->params.bytes_per_line * s->params.lines; + + /* store the number of back bytes */ + s->bytes_tot[SIDE_BACK] = s->params.bytes_per_line * s->params.lines; + + /* make buffers to hold the images */ + ret = image_buffers(s,1); + if (ret != SANE_STATUS_GOOD) { + DBG (5, "calibrate_AFE: ERROR: cannot load buffers\n"); + return ret; + } + + /*blast the existing fine cal data so reading code wont apply it*/ + ret = offset_buffers(s,0); + ret = gain_buffers(s,0); + + /* need to tell it we want duplex */ + ret = ssm_buffer(s); + if (ret != SANE_STATUS_GOOD) { + DBG (5, "calibrate_AFE: ERROR: cannot ssm buffer\n"); + return ret; + } + + /* set window command */ + ret = set_window(s); + if (ret != SANE_STATUS_GOOD) { + DBG (5, "calibrate_AFE: ERROR: cannot set window\n"); + return ret; + } + + /* first pass (black offset), lamp off, no offset/gain/exposure */ + DBG (15, "calibrate_AFE: offset\n"); + for(i=0;i<2;i++){ + s->c_gain[i] = 1; + s->c_offset[i] = 1; + for(j=0;j<3;j++){ + s->c_exposure[i][j] = 0; + } + } + + ret = calibration_scan(s,0xff); + if (ret != SANE_STATUS_GOOD) { + DBG (5, "calibrate_AFE: ERROR: cannot make offset cal scan\n"); + return ret; + } + + for(i=0;i<2;i++){ + min = 255; + for(j=0; jbuffers[i][j] < min) + min = s->buffers[i][j]; + } + s->c_offset[i] = min*3-2; + DBG (15, "calibrate_AFE: offset %d %d %02x\n", i, min, s->c_offset[i]); + } + + /*handle second pass (per channel exposure), lamp on, overexposed*/ + DBG (15, "calibrate_AFE: exposure\n"); + for(i=0;i<2;i++){ + for(j=0; j<3; j++){ + s->c_exposure[i][j] = 0x320; + } + } + + ret = calibration_scan(s,0xfe); + if (ret != SANE_STATUS_GOOD) { + DBG (5, "calibrate_AFE: ERROR: cannot make exposure cal scan\n"); + return ret; + } + + for(i=0;i<2;i++){ /*sides*/ + for(j=0;j<3;j++){ /*channels*/ + max = 0; + for(k=j; kbuffers[i][k] > max) + max = s->buffers[i][k]; + } + + /*generally we reduce the exposure (smaller number) */ + if(mode == MODE_COLOR) + s->c_exposure[i][j] = s->c_exposure[i][j] * 102/max; + else + s->c_exposure[i][j] = s->c_exposure[i][j] * 64/max; + + DBG (15, "calibrate_AFE: exp %d %d %d %02x\n", i, j, max, s->c_exposure[i][j]); + } + } + + /*handle third pass (gain), lamp on with current offset/exposure */ + DBG (15, "calibrate_AFE: gain\n"); + ret = calibration_scan(s,0xfe); + if (ret != SANE_STATUS_GOOD) { + DBG (5, "calibrate_AFE: ERROR: cannot make gain cal scan\n"); + return ret; + } + + for(i=0;i<2;i++){ + max = 0; + for(j=0; jbuffers[i][j] > max) + max = s->buffers[i][j]; + } + + if(mode == MODE_COLOR) + s->c_gain[i] = (250-max)*4/5; + else + s->c_gain[i] = (110-max)*4/5; + + if(s->c_gain[i] < 1) + s->c_gain[i] = 1; + + DBG (15, "calibrate_AFE: gain %d %d %02x\n", i, max, s->c_gain[i]); + } + + /*handle fourth pass (offset again), lamp off*/ +#if 0 + DBG (15, "calibrate_AFE: offset2\n"); + ret = calibration_scan(s,0xff); + if (ret != SANE_STATUS_GOOD) { + DBG (5, "calibrate_AFE: ERROR: cannot make offset2 cal scan\n"); + return ret; + } + + for(i=0;i<2;i++){ + min = 255; + for(j=0; jbuffers[i][j] < min) + min = s->buffers[i][j]; + } + /*s->c_offset[i] += min*3-2;*/ + DBG (15, "calibrate_AFE: offset2 %d %d %02x\n", i, min, s->c_offset[i]); + } +#endif + + /* revert to previous settings */ + s->mode = mode; + s->source = source; + + /* log current cal type */ + s->c_res = s->resolution_x; + s->c_mode = s->mode; + + DBG (10, "calibrate_AFE: finish\n"); + return ret; +} + +/* + * makes several scans, adjusts fine calibration + */ +static SANE_Status +calibrate_fine (struct scanner *s) +{ + SANE_Status ret = SANE_STATUS_GOOD; + int i, j, k; + int min, max; + int lines = 8; + int valid = 0; + + /* save the old values */ + int source = s->source; + + DBG (10, "calibrate_fine: start\n"); + + if(!s->need_cal){ + DBG (10, "calibrate_fine: not required\n"); + return ret; + } + + if(s->f_res == s->resolution_x && s->f_mode == s->mode){ + DBG (10, "calibrate_fine: already done\n"); + return ret; + } + + /* always cal in duplex */ + s->source = SOURCE_ADF_DUPLEX; + + /* load our own private copy of scan params */ + ret = sane_get_parameters ((SANE_Handle) s, &s->params); + if (ret != SANE_STATUS_GOOD) { + DBG (5, "calibrate_fine: ERROR: cannot get params\n"); + return ret; + } + + /* only need a few lines of data */ + s->params.lines = lines; + + /* figure out how many valid bytes per line (2510 is padded) */ + if(s->color_interlace[SIDE_FRONT] == COLOR_INTERLACE_2510) + valid = s->params.bytes_per_line*11/12; + else + valid = s->params.bytes_per_line; + + /* store the number of front bytes */ + s->bytes_tot[SIDE_FRONT] = s->params.bytes_per_line * s->params.lines; + + /* store the number of back bytes */ + s->bytes_tot[SIDE_BACK] = s->params.bytes_per_line * s->params.lines; + + /* make buffers to hold the images */ + ret = image_buffers(s,1); + if (ret != SANE_STATUS_GOOD) { + DBG (5, "calibrate_fine: ERROR: cannot load buffers\n"); + return ret; + } + + /*blast the existing fine cal data so reading code wont apply it*/ + ret = offset_buffers(s,0); + ret = gain_buffers(s,0); + + /* need to tell it we want duplex */ + ret = ssm_buffer(s); + if (ret != SANE_STATUS_GOOD) { + DBG (5, "calibrate_fine: ERROR: cannot ssm buffer\n"); + return ret; + } + + /* set window command */ + ret = set_window(s); + if (ret != SANE_STATUS_GOOD) { + DBG (5, "calibrate_fine: ERROR: cannot set window\n"); + return ret; + } + + /*handle fifth pass (fine offset), lamp off*/ + DBG (15, "calibrate_fine: offset\n"); + ret = calibration_scan(s,0xff); + if (ret != SANE_STATUS_GOOD) { + DBG (5, "calibrate_fine: ERROR: cannot make offset cal scan\n"); + return ret; + } + + ret = offset_buffers(s,1); + if (ret != SANE_STATUS_GOOD) { + DBG (5, "calibrate_fine: ERROR: cannot load offset buffers\n"); + return ret; + } + + for(i=0;i<2;i++){ + for(j=0; jparams.bytes_per_line;k+=s->params.bytes_per_line){ + if(s->buffers[i][k] < min) + min = s->buffers[i][k]; + } + s->f_offset[i][j] = min; + } + hexdump(15, "off:", s->f_offset[i], valid); + } + + /*handle sixth pass (fine gain), lamp off*/ + DBG (15, "calibrate_fine: gain\n"); + ret = calibration_scan(s,0xfe); + if (ret != SANE_STATUS_GOOD) { + DBG (5, "calibrate_fine: ERROR: cannot make gain cal scan\n"); + return ret; + } + + ret = gain_buffers(s,1); + if (ret != SANE_STATUS_GOOD) { + DBG (5, "calibrate_fine: ERROR: cannot load gain buffers\n"); + return ret; + } + + for(i=0;i<2;i++){ + for(j=0; jparams.bytes_per_line;k+=s->params.bytes_per_line){ + if(s->buffers[i][k] > max) + max = s->buffers[i][k]; + } + s->f_gain[i][j] = max; + } + hexdump(15, "gain:", s->f_gain[i], valid); + } + + /* revert to previous settings */ + s->source = source; + + /* log current cal type */ + s->f_res = s->resolution_x; + s->f_mode = s->mode; + + DBG (10, "calibrate_fine: finish\n"); + return ret; +} + +/* + * sends AFE params, and ingests entire duplex image into buffers + */ +static SANE_Status +calibration_scan (struct scanner *s, int scan) +{ + SANE_Status ret = SANE_STATUS_GOOD; + + DBG (10, "calibration_scan: start\n"); + + s->eof_rx[0]=0; + s->eof_rx[1]=0; + s->bytes_rx[0]=0; + s->bytes_rx[1]=0; + s->lines_rx[0]=0; + s->lines_rx[1]=0; + + s->bytes_tx[0]=0; + s->bytes_tx[1]=0; + + /* send calibration */ + ret = write_AFE(s); + if (ret != SANE_STATUS_GOOD) { + DBG (5, "calibration_scan: ERROR: cannot cal afe\n"); + return ret; + } + + /* start scanning */ + ret = start_scan (s,scan); + if (ret != SANE_STATUS_GOOD) { + DBG (5, "calibration_scan: ERROR: cannot start_scan\n"); + return ret; + } + + while(!s->eof_rx[SIDE_FRONT] && !s->eof_rx[SIDE_BACK]){ + ret = read_from_scanner_duplex(s,1); + } + + DBG (10, "calibration_scan: finished\n"); + + return ret; +} + +/* + * sends AFE and exposure params + */ +static SANE_Status +write_AFE(struct scanner *s) +{ + SANE_Status ret = SANE_STATUS_GOOD; + + unsigned char cmd[COR_CAL_len]; + size_t cmdLen = COR_CAL_len; + + unsigned char pay[CC_pay_len]; + size_t payLen = CC_pay_len; + + DBG (10, "write_AFE: start\n"); + + memset(cmd,0,cmdLen); + set_SCSI_opcode(cmd, COR_CAL_code); + set_CC_xferlen(cmd,payLen); + + memset(pay,0,payLen); + set_CC_f_gain(pay,s->c_gain[SIDE_FRONT]); + set_CC_unk1(pay,1); + set_CC_f_offset(pay,s->c_offset[SIDE_FRONT]); + set_CC_unk2(pay,1); + set_CC_exp_f_r1(pay,s->c_exposure[SIDE_FRONT][CHAN_RED]); + set_CC_exp_f_g1(pay,s->c_exposure[SIDE_FRONT][CHAN_GREEN]); + set_CC_exp_f_b1(pay,s->c_exposure[SIDE_FRONT][CHAN_BLUE]); + set_CC_exp_f_r2(pay,s->c_exposure[SIDE_FRONT][CHAN_RED]); + set_CC_exp_f_g2(pay,s->c_exposure[SIDE_FRONT][CHAN_GREEN]); + set_CC_exp_f_b2(pay,s->c_exposure[SIDE_FRONT][CHAN_BLUE]); + + set_CC_b_gain(pay,s->c_gain[SIDE_BACK]); + set_CC_b_offset(pay,s->c_offset[SIDE_BACK]); + set_CC_exp_b_r1(pay,s->c_exposure[SIDE_BACK][CHAN_RED]); + set_CC_exp_b_g1(pay,s->c_exposure[SIDE_BACK][CHAN_GREEN]); + set_CC_exp_b_b1(pay,s->c_exposure[SIDE_BACK][CHAN_BLUE]); + set_CC_exp_b_r2(pay,s->c_exposure[SIDE_BACK][CHAN_RED]); + set_CC_exp_b_g2(pay,s->c_exposure[SIDE_BACK][CHAN_GREEN]); + set_CC_exp_b_b2(pay,s->c_exposure[SIDE_BACK][CHAN_BLUE]); + + ret = do_cmd ( + s, 1, 0, + cmd, cmdLen, + pay, payLen, + NULL, NULL + ); + if (ret != SANE_STATUS_GOOD) + return ret; + + DBG (10, "write_AFE: finish\n"); + + return ret; +} + +/* + * frees/callocs buffers to hold the fine cal offset data + */ +static SANE_Status +offset_buffers (struct scanner *s, int setup) +{ + SANE_Status ret = SANE_STATUS_GOOD; + int side; + + DBG (10, "offset_buffers: start\n"); + + for(side=0;side<2;side++){ + + if (s->f_offset[side]) { + DBG (15, "offset_buffers: free f_offset %d.\n",side); + free(s->f_offset[side]); + s->f_offset[side] = NULL; + } + + if(setup){ + s->f_offset[side] = calloc (1,s->params.bytes_per_line); + if (!s->f_offset[side]) { + DBG (5, "offset_buffers: error, no f_offset %d.\n",side); + return SANE_STATUS_NO_MEM; + } + } + } + + DBG (10, "offset_buffers: finish\n"); + + return ret; +} + +/* + * frees/callocs buffers to hold the fine cal gain data + */ +static SANE_Status +gain_buffers (struct scanner *s, int setup) +{ + SANE_Status ret = SANE_STATUS_GOOD; + int side; + + DBG (10, "gain_buffers: start\n"); + + for(side=0;side<2;side++){ + + if (s->f_gain[side]) { + DBG (15, "gain_buffers: free f_gain %d.\n",side); + free(s->f_gain[side]); + s->f_gain[side] = NULL; + } + + if(setup){ + s->f_gain[side] = calloc (1,s->params.bytes_per_line); + if (!s->f_gain[side]) { + DBG (5, "gain_buffers: error, no f_gain %d.\n",side); + return SANE_STATUS_NO_MEM; + } + } + } + + DBG (10, "gain_buffers: finish\n"); + + return ret; +} + +/* + * @@ Section 6 - SANE cleanup functions */ /* * Cancels a scan. @@ -4080,8 +4766,10 @@ sane_close (SANE_Handle handle) struct scanner * s = (struct scanner *) handle; DBG (10, "sane_close: start\n"); - /*clears any held scans*/ disconnect_fd(s); + image_buffers(s,0); + offset_buffers(s,0); + gain_buffers(s,0); DBG (10, "sane_close: finish\n"); } @@ -4145,7 +4833,7 @@ sane_exit (void) /* - * @@ Section 5 - misc helper functions + * @@ Section 7 - misc helper functions */ static void default_globals(void) @@ -4485,29 +5173,29 @@ do_usb_cmd(struct scanner *s, int runRS, int shortTime, unsigned char * inBuff, size_t * inLen ) { - size_t cmdOffset; - size_t cmdLength; - size_t cmdActual; - unsigned char * cmdBuffer; - int cmdTimeout; + size_t cmdOffset = 0; + size_t cmdLength = 0; + size_t cmdActual = 0; + unsigned char * cmdBuffer = NULL; + int cmdTimeout = 0; - size_t outOffset; - size_t outLength; - size_t outActual; - unsigned char * outBuffer; - int outTimeout; + size_t outOffset = 0; + size_t outLength = 0; + size_t outActual = 0; + unsigned char * outBuffer = NULL; + int outTimeout = 0; - size_t inOffset; - size_t inLength; - size_t inActual; - unsigned char * inBuffer; - int inTimeout; + size_t inOffset = 0; + size_t inLength = 0; + size_t inActual = 0; + unsigned char * inBuffer = NULL; + int inTimeout = 0; - size_t statOffset; - size_t statLength; - size_t statActual; - unsigned char * statBuffer; - int statTimeout; + size_t statOffset = 0; + size_t statLength = 0; + size_t statActual = 0; + unsigned char * statBuffer = NULL; + int statTimeout = 0; int ret = 0; int ret2 = 0; diff --git a/backend/canon_dr.h b/backend/canon_dr.h index 138789fec..7e4c4936a 100644 --- a/backend/canon_dr.h +++ b/backend/canon_dr.h @@ -133,7 +133,8 @@ struct scanner int max_x_fb; int max_y_fb; - int can_color; /* actually might be in vpd, but which bit? */ + int can_color; /* actually might be in vpd, but which bit? */ + int need_cal; /* scanner needs software to help with calibration */ int has_counter; int has_rif; @@ -257,6 +258,21 @@ struct scanner */ SANE_Parameters params; + /* --------------------------------------------------------------------- */ + /* values which are set by calibration functions */ + int c_res; + int c_mode; + + int c_offset[2]; + int c_gain[2]; + int c_exposure[2][3]; + + int f_res; + int f_mode; + + unsigned char * f_offset[2]; + unsigned char * f_gain[2]; + /* --------------------------------------------------------------------- */ /* values which are set by scanning functions to keep track of pages, etc */ int started; @@ -308,6 +324,10 @@ struct scanner #define SIDE_FRONT 0 #define SIDE_BACK 1 +#define CHAN_RED 0 +#define CHAN_GREEN 1 +#define CHAN_BLUE 2 + #define SOURCE_FLATBED 0 #define SOURCE_ADF_FRONT 1 #define SOURCE_ADF_BACK 2 @@ -341,6 +361,7 @@ enum { #define GRAY_INTERLACE_NONE 0 #define GRAY_INTERLACE_2510 1 +#define GRAY_INTERLACE_gG 2 #define COLOR_INTERLACE_RGB 0 #define COLOR_INTERLACE_BGR 1 @@ -473,12 +494,12 @@ static SANE_Status set_window (struct scanner *s); static SANE_Status read_panel(struct scanner *s, SANE_Int option); static SANE_Status send_panel(struct scanner *s); -static SANE_Status start_scan (struct scanner *s); +static SANE_Status start_scan (struct scanner *s, int type); static SANE_Status cancel(struct scanner *s); -static SANE_Status read_from_scanner(struct scanner *s, int side); -static SANE_Status read_from_scanner_duplex(struct scanner *s); +static SANE_Status read_from_scanner(struct scanner *s, int side, int exact); +static SANE_Status read_from_scanner_duplex(struct scanner *s, int exact); static SANE_Status copy_simplex(struct scanner *s, unsigned char * buf, int len, int side); @@ -486,7 +507,15 @@ static SANE_Status copy_duplex(struct scanner *s, unsigned char * buf, int len); static SANE_Status read_from_buffer(struct scanner *s, SANE_Byte * buf, SANE_Int max_len, SANE_Int * len, int side); -static SANE_Status setup_buffers (struct scanner *s); +static SANE_Status image_buffers (struct scanner *s, int setup); +static SANE_Status offset_buffers (struct scanner *s, int setup); +static SANE_Status gain_buffers (struct scanner *s, int setup); + +static SANE_Status calibrate_AFE(struct scanner *s); +static SANE_Status calibrate_fine(struct scanner *s); + +static SANE_Status write_AFE (struct scanner *s); +static SANE_Status calibration_scan (struct scanner *s, int); static void hexdump (int level, char *comment, unsigned char *p, int l); static void default_globals (void); From 77b484bb0c0b09d82004b8570e729a6a44642b65 Mon Sep 17 00:00:00 2001 From: Nicolas Martin Date: Sat, 9 May 2009 15:18:05 +0200 Subject: [PATCH 15/17] Fixed Pixma MP600 and MP600R for 2400 dpi scan, updated their descriptions. --- ChangeLog | 3 +++ backend/pixma_mp150.c | 38 ++++--------------------------------- doc/descriptions/pixma.desc | 8 ++++---- 3 files changed, 11 insertions(+), 38 deletions(-) diff --git a/ChangeLog b/ChangeLog index c146a17ea..9fc808288 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,6 @@ +2009-05-09 Nicolas Martin + Fixed Pixma MP600 and MP600R for 2400 dpi scan, updated their descriptions. + 2009-05-08 m. allan noah * backend/canon_dr*: backend v27 - bug fix in read_panel() diff --git a/backend/pixma_mp150.c b/backend/pixma_mp150.c index 4b0fceefc..a6594249c 100644 --- a/backend/pixma_mp150.c +++ b/backend/pixma_mp150.c @@ -387,41 +387,7 @@ select_source (pixma_t * s) data[1] = 2; break; } -/* if (s->cfg->pid == MP830_PID) - { - switch (s->param->source) - { - case PIXMA_SOURCE_ADF: - data[0] = 2; - data[5] = 1; - data[6] = 1; - break; - case PIXMA_SOURCE_ADFDUP: - data[0] = 2; - data[5] = 3; - data[6] = 3; - break; - - case PIXMA_SOURCE_TPU: - PDBG (pixma_dbg (1, "BUG:select_source(): unsupported source %d\n", - s->param->source)); - - case PIXMA_SOURCE_FLATBED: - data[0] = 1; - data[1] = 1; - break; - } - } - else - { - data[0] = (s->param->source == PIXMA_SOURCE_ADF) ? 2 : 1; - data[1] = 1; - if (mp->generation == 2) - { - data[5] = 1; - } - } */ return pixma_exec (s, &mp->cb); } @@ -1001,8 +967,12 @@ post_process_image_data (pixma_t * s, pixma_imagebuf_t * ib) n = s->param->xdpi / 600; else /* FIXME: maybe need different values for CIS and CCD sensors */ n = s->param->xdpi / 2400; + + /* Some exceptions to global rules here */ if (s->cfg->pid == MP970_PID) n = MIN (n, 4); + if (s->cfg->pid == MP600_PID || s->cfg->pid == MP600R_PID) + n = s->param->xdpi / 1200; m = (n > 0) ? s->param->w / n : 1; sptr = dptr = gptr = mp->imgbuf; diff --git a/doc/descriptions/pixma.desc b/doc/descriptions/pixma.desc index 32df04c65..3279198d8 100644 --- a/doc/descriptions/pixma.desc +++ b/doc/descriptions/pixma.desc @@ -103,14 +103,14 @@ :model "PIXMA MP600" :interface "USB" :usbid "0x04a9" "0x1718" -:status :basic -:comment "2400DPI doesn't work." +:status :good +:comment "All resolutions supported (up to 2400DPI)" :model "PIXMA MP600R" :interface "USB Ethernet" :usbid "0x04a9" "0x1719" -:status :minimal -:comment "2400DPI doesn't work." +:status :good +:comment "All resolutions supported (up to 2400DPI)" :model "PIXMA MP610" :interface "USB" From a7f537ba7b7d14426999d050765091917c1db207 Mon Sep 17 00:00:00 2001 From: Nicolas Martin Date: Sat, 9 May 2009 15:18:05 +0200 Subject: [PATCH 16/17] Fixed Pixma MP600 and MP600R for 2400 dpi scan, updated their descriptions. --- ChangeLog | 3 +++ backend/pixma_mp150.c | 38 ++++--------------------------------- doc/descriptions/pixma.desc | 8 ++++---- 3 files changed, 11 insertions(+), 38 deletions(-) diff --git a/ChangeLog b/ChangeLog index c146a17ea..9fc808288 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,6 @@ +2009-05-09 Nicolas Martin + Fixed Pixma MP600 and MP600R for 2400 dpi scan, updated their descriptions. + 2009-05-08 m. allan noah * backend/canon_dr*: backend v27 - bug fix in read_panel() diff --git a/backend/pixma_mp150.c b/backend/pixma_mp150.c index 4b0fceefc..a6594249c 100644 --- a/backend/pixma_mp150.c +++ b/backend/pixma_mp150.c @@ -387,41 +387,7 @@ select_source (pixma_t * s) data[1] = 2; break; } -/* if (s->cfg->pid == MP830_PID) - { - switch (s->param->source) - { - case PIXMA_SOURCE_ADF: - data[0] = 2; - data[5] = 1; - data[6] = 1; - break; - case PIXMA_SOURCE_ADFDUP: - data[0] = 2; - data[5] = 3; - data[6] = 3; - break; - - case PIXMA_SOURCE_TPU: - PDBG (pixma_dbg (1, "BUG:select_source(): unsupported source %d\n", - s->param->source)); - - case PIXMA_SOURCE_FLATBED: - data[0] = 1; - data[1] = 1; - break; - } - } - else - { - data[0] = (s->param->source == PIXMA_SOURCE_ADF) ? 2 : 1; - data[1] = 1; - if (mp->generation == 2) - { - data[5] = 1; - } - } */ return pixma_exec (s, &mp->cb); } @@ -1001,8 +967,12 @@ post_process_image_data (pixma_t * s, pixma_imagebuf_t * ib) n = s->param->xdpi / 600; else /* FIXME: maybe need different values for CIS and CCD sensors */ n = s->param->xdpi / 2400; + + /* Some exceptions to global rules here */ if (s->cfg->pid == MP970_PID) n = MIN (n, 4); + if (s->cfg->pid == MP600_PID || s->cfg->pid == MP600R_PID) + n = s->param->xdpi / 1200; m = (n > 0) ? s->param->w / n : 1; sptr = dptr = gptr = mp->imgbuf; diff --git a/doc/descriptions/pixma.desc b/doc/descriptions/pixma.desc index 32df04c65..3279198d8 100644 --- a/doc/descriptions/pixma.desc +++ b/doc/descriptions/pixma.desc @@ -103,14 +103,14 @@ :model "PIXMA MP600" :interface "USB" :usbid "0x04a9" "0x1718" -:status :basic -:comment "2400DPI doesn't work." +:status :good +:comment "All resolutions supported (up to 2400DPI)" :model "PIXMA MP600R" :interface "USB Ethernet" :usbid "0x04a9" "0x1719" -:status :minimal -:comment "2400DPI doesn't work." +:status :good +:comment "All resolutions supported (up to 2400DPI)" :model "PIXMA MP610" :interface "USB" From 674c245c8afcdb0f75709942ef61ae772834031a Mon Sep 17 00:00:00 2001 From: Nicolas Martin Date: Sat, 9 May 2009 15:29:28 +0200 Subject: [PATCH 17/17] Amend changeLog for latest commit --- ChangeLog | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9fc808288..0146403ea 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,6 @@ -2009-05-09 Nicolas Martin - Fixed Pixma MP600 and MP600R for 2400 dpi scan, updated their descriptions. +2009-05-09 Nicolas Martin + * backend/pixma_mp150.c, doc/descriptions/pixma.desc: + Fixed Pixma MP600 and MP600R for 2400 dpi scan, updated their descriptions. 2009-05-08 m. allan noah * backend/canon_dr*: backend v27