[sane-devel] Microtek ScanMaker 3840 driver available
Henning Meier-Geinitz
henning@meier-geinitz.de
Sun, 6 Feb 2005 18:14:59 +0100
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