kopia lustrzana https://gitlab.com/sane-project/backends
Check all acceptable interfaces instead of using the first one.
rodzic
f4ccae6565
commit
5d4e2220a0
|
@ -4,6 +4,8 @@
|
||||||
ma1509 backend for Mustek BearPaw 1200F scanners.
|
ma1509 backend for Mustek BearPaw 1200F scanners.
|
||||||
* doc/descriptions/unsupported.desc: Added Avision, Brother, and Umax
|
* doc/descriptions/unsupported.desc: Added Avision, Brother, and Umax
|
||||||
scanners. Removed Mustek BearPaw 1200F.
|
scanners. Removed Mustek BearPaw 1200F.
|
||||||
|
* sanei/sanei_usb.c: Check all acceptable interfaces instead of using
|
||||||
|
the first one.
|
||||||
|
|
||||||
2003-02-18 Stéphane Voltz <svoltz@wanadoo.fr>
|
2003-02-18 Stéphane Voltz <svoltz@wanadoo.fr>
|
||||||
|
|
||||||
|
|
|
@ -255,6 +255,9 @@ sanei_usb_init (void)
|
||||||
{
|
{
|
||||||
for (dev = bus->devices; dev; dev = dev->next)
|
for (dev = bus->devices; dev; dev = dev->next)
|
||||||
{
|
{
|
||||||
|
int interface;
|
||||||
|
SANE_Bool found;
|
||||||
|
|
||||||
if (!dev->config)
|
if (!dev->config)
|
||||||
{
|
{
|
||||||
DBG (1, "sanei_usb_init: device 0x%04x/0x%04x is not configured\n",
|
DBG (1, "sanei_usb_init: device 0x%04x/0x%04x is not configured\n",
|
||||||
|
@ -267,29 +270,36 @@ sanei_usb_init (void)
|
||||||
dev->descriptor.idVendor, dev->descriptor.idProduct);
|
dev->descriptor.idVendor, dev->descriptor.idProduct);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
switch (dev->descriptor.bDeviceClass)
|
found = SANE_FALSE;
|
||||||
|
for (interface = 0; interface < dev->config[0].bNumInterfaces && !found; interface++)
|
||||||
{
|
{
|
||||||
case USB_CLASS_VENDOR_SPEC:
|
switch (dev->descriptor.bDeviceClass)
|
||||||
break;
|
|
||||||
case USB_CLASS_PER_INTERFACE:
|
|
||||||
switch (dev->config[0].interface[0].altsetting[0].bInterfaceClass)
|
|
||||||
{
|
{
|
||||||
case USB_CLASS_VENDOR_SPEC:
|
case USB_CLASS_VENDOR_SPEC:
|
||||||
case USB_CLASS_PER_INTERFACE:
|
found = SANE_TRUE;
|
||||||
case 16: /* data? */
|
break;
|
||||||
|
case USB_CLASS_PER_INTERFACE:
|
||||||
|
switch (dev->config[0].interface[interface].altsetting[0].bInterfaceClass)
|
||||||
|
{
|
||||||
|
case USB_CLASS_VENDOR_SPEC:
|
||||||
|
case USB_CLASS_PER_INTERFACE:
|
||||||
|
case 16: /* data? */
|
||||||
|
found = SANE_TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
|
||||||
DBG (5, "sanei_usb_init: device 0x%04x/0x%04x doesn't look like a "
|
|
||||||
"scanner (%d/%d)\n", dev->descriptor.idVendor,
|
|
||||||
dev->descriptor.idProduct, dev->descriptor.bDeviceClass,
|
|
||||||
dev->config[0].interface[0].altsetting[0].bInterfaceClass);
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
break;
|
if (!found)
|
||||||
default:
|
DBG (5, "sanei_usb_init: device 0x%04x/0x%04x, interface %d doesn't look like a "
|
||||||
DBG (5, "sanei_usb_init: device 0x%04x/0x%04x doesn't look like a scanner (%d)\n",
|
"scanner (%d/%d)\n", dev->descriptor.idVendor,
|
||||||
dev->descriptor.idVendor, dev->descriptor.idProduct,
|
dev->descriptor.idProduct, interface, dev->descriptor.bDeviceClass,
|
||||||
dev->descriptor.bDeviceClass);
|
dev->config[0].interface[interface].altsetting[0].bInterfaceClass);
|
||||||
|
}
|
||||||
|
interface--;
|
||||||
|
if (!found)
|
||||||
|
{
|
||||||
|
DBG (5, "sanei_usb_init: device 0x%04x/0x%04x: no suitable interfaces\n",
|
||||||
|
dev->descriptor.idVendor, dev->descriptor.idProduct);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -303,8 +313,9 @@ sanei_usb_init (void)
|
||||||
devices[dn].product = dev->descriptor.idProduct;
|
devices[dn].product = dev->descriptor.idProduct;
|
||||||
devices[dn].method = sanei_usb_method_libusb;
|
devices[dn].method = sanei_usb_method_libusb;
|
||||||
devices[dn].open = SANE_FALSE;
|
devices[dn].open = SANE_FALSE;
|
||||||
DBG (4, "sanei_usb_init: found libusb device (0x%04x/0x%04x) at %s\n",
|
devices[dn].interface_nr = interface;
|
||||||
dev->descriptor.idVendor, dev->descriptor.idProduct, devname);
|
DBG (4, "sanei_usb_init: found libusb device (0x%04x/0x%04x) interface %d at %s\n",
|
||||||
|
dev->descriptor.idVendor, dev->descriptor.idProduct, interface, devname);
|
||||||
dn++;
|
dn++;
|
||||||
if (dn >= MAX_DEVICES)
|
if (dn >= MAX_DEVICES)
|
||||||
return;
|
return;
|
||||||
|
@ -530,15 +541,6 @@ sanei_usb_open (SANE_String_Const devname, SANE_Int * dn)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Claim the interface */
|
/* Claim the interface */
|
||||||
devices[devcount].interface_nr =
|
|
||||||
dev->config[0].interface[0].altsetting[0].bInterfaceNumber;
|
|
||||||
if (dev->config[0].bNumInterfaces > 1)
|
|
||||||
{
|
|
||||||
DBG (3, "sanei_usb_open: more than one "
|
|
||||||
"interface (%d), choosing first interface (%d)\n",
|
|
||||||
dev->config[0].bNumInterfaces,
|
|
||||||
devices[devcount].interface_nr);
|
|
||||||
}
|
|
||||||
result = usb_claim_interface (devices[devcount].libusb_handle,
|
result = usb_claim_interface (devices[devcount].libusb_handle,
|
||||||
devices[devcount].interface_nr);
|
devices[devcount].interface_nr);
|
||||||
if (result < 0)
|
if (result < 0)
|
||||||
|
|
Ładowanie…
Reference in New Issue