[sane-devel] platform independent sanei_usb control messages

Henning Meier-Geinitz henning at meier-geinitz.de
Sun Jun 30 17:28:00 BST 2002


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





More information about the sane-devel mailing list