--> here's the code by Robin
Robin
Wed Aug 18 03:02:32 CDT 2004
int main(int argc, char* argv[])
{
struct usb_bus *busses;
struct usb_bus *bus;
struct usb_device *dev;
int c, i, a, r;
usb_init();
usb_find_busses();
busses = usb_get_busses();
usb_find_devices();
for (bus = busses; bus; bus = bus->next)
{
for (dev = bus->devices; dev; dev = dev->next)
{
usb_dev_handle* udev = usb_open(dev);
if (udev && dev->descriptor.iManufacturer)
{
usb_reset(udev);
break;
}
} // for (dev = bus->devices; dev; dev = dev->next)
r = usb_find_devices();
for (dev = bus->devices; dev; dev = dev->next)
{
// Loop through all of the configurations
for (c = 0; c < dev->descriptor.bNumConfigurations; c++)
{
// Loop through all of the interfaces
for (i = 0; i < dev->config[c].bNumInterfaces; i++)
{
// Loop through all of the alternate settings
for (a = 0; a < dev->config[c].usbInterface[i].num_altsetting; a++)
{
// Check if this interface is vendor specific
if (dev->config[c].usbInterface[i].altsetting[a].bInterfaceClass
== 255)
{
usb_dev_handle* udev = usb_open(dev);
int r = usb_set_configuration(udev, c+1); // --> fails
r = usb_claim_interface(udev, i);
char bufWrite[] = "this is just a test string";
char bufRead[1024] = {0};
for (int l = 0; l < 100; l++)
{
r = usb_bulk_write(udev, 1, bufWrite, sizeof(bufWrite), 100);
printf("Written %d bytes\n", r);
r = usb_bulk_read(udev, 2, bufRead, sizeof(bufRead), 100);
}
r = usb_release_interface(udev, i);
r = usb_close(udev);
}
}
} // for (i = 0; i < dev->config[c].bNumInterfaces; i++)
} // for (c = 0; c < dev->descriptor.bNumConfigurations; c++)
} // for (dev = bus->devices; dev; dev = dev->next)
} // for (bus = busses; bus; bus = bus->next)
}