int ausb_init(void) { #ifdef USE_USB1 return ausb_libusb1_init(); #else return ausb_libusb0_init(); #endif }
struct usb_device *ausb_libusb0_get_usbdev(const rsct_usbdev_t *d) { struct usb_bus *busses, *bus; struct usb_device *dev; char tname[PATH_MAX+1]; char filename[PATH_MAX+1]; int nlen; ausb_libusb0_init(); snprintf(tname, PATH_MAX, "%03d/%03d", d->busId, d->busPos); nlen=strlen(tname); busses = usb_get_busses(); for (bus = busses; bus; bus = bus->next) { for (dev = bus->devices; dev; dev = dev->next) { int flen; strncpy(filename, bus->dirname, PATH_MAX ); strncat(filename, "/", PATH_MAX ); strncat(filename, dev->filename, PATH_MAX ); flen=strlen(filename); if (flen>=nlen) { if (strncmp(filename+(flen-nlen), tname, nlen)==0) { if (dev->descriptor.idVendor == AUSB_CYBERJACK_VENDOR_ID) return dev; else { fprintf(stderr, "RSCT: Device at %s is not a cyberjack\n", filename); return NULL; } } } } } return NULL; }