Hi and sorry for the delay, On Sun, Jan 16, 2005 at 05:21:42PM -0800, Earle F. Philhower, III wrote: > I've reverse-engineered the Microtek ScanMaker 3840 Windows driver and written > a SANE driver to control it from Linux. I've done pretty extensive testing > locally (XSane/tstbackend -l3) and remotely (saned on my Devil-Linux server > and > SANETwain under Windows) and not found any problems.
Cool! I've added your .desc file and set links to your page as external backend for now. > Calibrated 8- and 16-bit color and grayscale are supported, with all dpi > settings from 150 to 1200. I've only got an INTC Fedora Core 3 machine to run > it on, but I believe that I've put in hooks to handle Motorola byte ordering > and 64-bittedness. It may work with other SCAN08 based Microteks (38xx?) but > I > don't have their USB IDs and have no way of testing. I've also added links to the pages for these scanners pointing to yout backend's page. > I've put patches (against sane-backends-1.0.15) and the new source files > online > at > http://www.ziplabel.com/sm3840/ > > Any feedback appreciated, if it works well I'd like to see about adding it > into > the standard SANE distribution... I've had a quick look at your code and haven't found anything I don't like. I'd like to have a man page, however. Also I get the following warnings when compiling: In file included from sm3840.c:70: sm3840_scan.c: In function `setup_scan': sm3840_scan.c:254: warning: pointer targets in passing arg 3 of `my_usb_bulk_write' differ in signedness sm3840_scan.c:259: warning: pointer targets in passing arg 3 of `my_usb_bulk_read' differ in signedness sm3840_scan.c:319: warning: pointer targets in passing arg 3 of `my_usb_bulk_write' differ in signedness sm3840_scan.c:331: warning: pointer targets in passing arg 3 of `my_usb_bulk_write' differ in signedness sm3840_scan.c:343: warning: pointer targets in passing arg 3 of `my_usb_bulk_write' differ in signedness sm3840_scan.c:390: warning: pointer targets in passing arg 3 of `my_usb_bulk_read' differ in signedness sm3840_scan.c:394: warning: pointer targets in passing arg 3 of `my_usb_bulk_read' differ in signedness sm3840_scan.c:418: warning: pointer targets in passing arg 3 of `my_usb_bulk_read' differ in signedness sm3840_scan.c:422: warning: pointer targets in passing arg 3 of `my_usb_bulk_read' differ in signedness sm3840_scan.c:483: warning: pointer targets in passing arg 3 of `my_usb_bulk_read' differ in signedness sm3840_scan.c:487: warning: pointer targets in passing arg 3 of `my_usb_bulk_read' differ in signedness sm3840_scan.c:598: warning: pointer targets in passing arg 3 of `my_usb_bulk_read' differ in signedness sm3840_scan.c:600: warning: dereferencing type-punned pointer will break strict-aliasing rules sm3840_scan.c:754: warning: pointer targets in passing arg 3 of `my_usb_bulk_write' differ in signedness sm3840_scan.c:769: warning: pointer targets in passing arg 3 of `my_usb_bulk_write' differ in signedness sm3840_scan.c:781: warning: pointer targets in passing arg 3 of `my_usb_bulk_write' differ in signedness sm3840_scan.c:917: warning: pointer targets in passing arg 3 of `my_usb_bulk_read' differ in signedness In file included from sm3840.c:71: sm3840_lib.c: In function `idle_ab': sm3840_lib.c:191: warning: pointer targets in passing arg 6 of `my_usb_control_msg' differ in signedness sm3840_lib.c: In function `write_regs': sm3840_lib.c:216: warning: pointer targets in passing arg 6 of `my_usb_control_msg' differ in signedness sm3840_lib.c: In function `write_vctl': sm3840_lib.c:224: warning: pointer targets in passing arg 6 of `my_usb_control_msg' differ in signedness sm3840_lib.c: In function `read_vctl': sm3840_lib.c:232: warning: pointer targets in passing arg 6 of `my_usb_control_msg' differ in signedness sm3840_lib.c: In function `record_line': sm3840_lib.c:367: warning: pointer targets in passing arg 3 of `my_usb_bulk_read' differ in signedness sm3840_lib.c: In function `download_lut8': sm3840_lib.c:896: warning: pointer targets in passing arg 3 of `my_usb_bulk_write' differ in signedness sm3840_lib.c:904: warning: pointer targets in passing arg 3 of `my_usb_bulk_write' differ in signedness sm3840_lib.c:908: warning: pointer targets in passing arg 3 of `my_usb_bulk_write' differ in signedness sm3840_lib.c:912: warning: pointer targets in passing arg 3 of `my_usb_bulk_write' differ in signedness sm3840_lib.c:928: warning: pointer targets in passing arg 3 of `my_usb_bulk_write' differ in signedness sm3840_lib.c:936: warning: pointer targets in passing arg 3 of `my_usb_bulk_write' differ in signedness sm3840_lib.c:940: warning: pointer targets in passing arg 3 of `my_usb_bulk_write' differ in signedness sm3840_lib.c:944: warning: pointer targets in passing arg 3 of `my_usb_bulk_write' differ in signedness sm3840_lib.c: In function `fix_endian_short': sm3840_lib.c:984: warning: initialization from incompatible pointer type sm3840.c: In function `sane_sm3840_read': sm3840.c:138: warning: void format, SM3840_Scan arg (arg 3) sm3840.c:138: warning: void format, different type arg (arg 6) sm3840.c: At top level: sm3840.c:267: warning: no previous prototype for `sm3840_unit_convert' sm3840.c: In function `sane_sm3840_open': sm3840.c:702: warning: void format, SM3840_Device arg (arg 4) sm3840.c: At top level: sm3840_lib.c:268: warning: `record' defined but not used sm3840_lib.c:495: warning: `record_image' defined but not used sm3840_lib.c:625: warning: `check_buttons' defined but not used Could you check if at least some of these can be fixed? Also make libcheck says: *** backend/.libs/libsane-sm3840.a: 00008ab0 T sm3840_unit_convert Looks like this function should be static. Otherwise I don't see a reason not to include your backend into SANE CVS. Bye, Henning