コード例 #1
0
ファイル: ausb.c プロジェクト: SubOptimal/ctapi-cyberjack
int ausb_init(void) {
#ifdef USE_USB1
  return ausb_libusb1_init();
#else
  return ausb_libusb0_init();
#endif
}
コード例 #2
0
ファイル: ausb_libusb0.c プロジェクト: adelapie/open-ecard
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;
}