Hi, On Sun, Jun 30, 2002 at 03:36:35PM +0200, Bertrik Sikken wrote: > I'm working on a backend for scanners based on the 'niash' chipset, > found in scanners like > the HP3300, HP3400, HP4300, (HP5400?) and the Agfa Snapscan Touch. > > Until now I've used libusb to provide platform independent USB access > which works > mostly fine. I know there's also the sanei_usb functions, but I have > some issues using them.
I'm currently working on making sanei_usb more generic. That means, sanei_usb should also be able to use libusb, not only the "Linux-kernel-method" (which works with the BSDs, also). It's not yet finished and there may be problems but I think I will add a first version to CVS during the next few days. The idea is that no changes in the backends are necessary. > When I do a control transfer I need to pass some parameters involving > (for example) > USB_TYPE_VENDOR, USB_RECIP_DEVICE and USB_DIR_IN which > are defined in linux/usb.h, obviously not platform independent. Yes, usually it's better to copy the needed constants. > I see that the canon630u backend solved this by defining those symbols > locally. > > I suspect that the symbols mentioned above are really part of the USB > specification, I thinks o, but I will have a closer look when implementing sanei_usb_control_msg for libusb. > so they are not platform specific. Maybe it's a good idea to add them to > sanei_usb.h? Yes. Proposals for what to include are welcome :-) > What is actually the preferred USB access method for SANE? Depends on who you ask. My personal opinion is: kernel access via scanner module. Most sane backends currently use sanei_usb or direct access to /dev/usb/scanner*. > And for what reasons? libusb: + is portable for different platforms (OS X?) + automatic detection of scanners is easier - need to be root to access devices - no way to scan for scanners in sane-find-scanner kernel module: the other way round :-) That's why I try to include libusb access in sanei_usb to get best of both worlds. Maybe other (proprietary) access methods (e.g. for Solaris?) can be added too, once the file is more generic. Bye, Henning