Пример #1
0
int process_device(libusb_device_handle* devh)
{
  int i;
  int res;
  for (i=0; i<transfers_nb && res >= 0; ++i)
  {
    res = process_transfer(transfers+i);
  }
  return res;
}
Пример #2
0
int main(int argc, char *argv[])
{
  libusb_context* ctx = NULL;
  int ret = -1;
  int status;
  int i;

  if(read_file() < 0)
  {
    return -1;
  }

  if(libusb_init(&ctx))
  {
    fprintf(stderr, "Can't initialize libusb.\n");
    return -1;
  }

  //libusb_set_debug(ctx, 128);

  devh = libusb_open_device_with_vid_pid(ctx, VENDOR, PRODUCT);
  if(!devh)
  {
    fprintf(stderr, "No device found on USB busses.\n");
#ifdef WIN32
    Sleep(2000);
#else
    sleep(2);
#endif
    libusb_exit(ctx);
    return -1;
  }

#if defined(LIBUSB_API_VERSION) || defined(LIBUSBX_API_VERSION)
  libusb_set_auto_detach_kernel_driver(devh, 1);
#else
#ifndef WIN32
  ret = libusb_kernel_driver_active(devh, 0);
  if(ret > 0)
  {
    ret = libusb_detach_kernel_driver(devh, 0);
    if(ret < 0)
    {
      fprintf(stderr, "Can't detach kernel driver: %s.\n", libusb_strerror(ret));
      libusb_close(devh);
      libusb_exit(ctx);
      return -1;
    }
  }
#endif
#endif
  ret = libusb_claim_interface(devh, 0);
  if(ret < 0)
  {
    fprintf(stderr, "Can't claim interface: %s.\n", libusb_strerror(ret));
    libusb_close(devh);
    libusb_exit(ctx);
    return -1;
  }

  status = process_device(devh);

  process_transfer(&cleanup);

  ret = libusb_release_interface(devh, 0);
  if(ret < 0)
  {
    fprintf(stderr, "Can't release interface: %s.\n", libusb_strerror(ret));
  }

#if !defined(LIBUSB_API_VERSION) && !defined(LIBUSBX_API_VERSION)
#ifndef WIN32
  ret = libusb_attach_kernel_driver(devh, 0);
  if(ret < 0)
  {
    fprintf(stderr, "Can't attach kernel driver: %s.\n", libusb_strerror(ret));
  }
#endif
#endif

  free(transfers);

  libusb_close(devh);
  libusb_exit(ctx);

  return ret;

}
Пример #3
0
void* transfer_thread(void* parameters) {
    struct transfer_thread_parameter_t* real_parameters = (struct transfer_thread_parameter_t*)parameters;
    process_transfer(real_parameters->from_account, real_parameters->to_account, real_parameters->amount);

    return NULL;
}