Esempio n. 1
0
bool UP3DCOMM_Open()
{
  int r;

  r = libusb_init( &_libusb_ctx );
  if( r < 0 ) 
  {
    printf( "[ERROR] USB Init: %d\n", r );
    return false;
  }

  libusb_set_debug( _libusb_ctx, 0 ); //set verbosity level to 0

  _libusb_dev_handle = libusb_open_device_with_vid_pid( _libusb_ctx, VID, PID_MINI_A );
  if( !_libusb_dev_handle )
    _libusb_dev_handle = libusb_open_device_with_vid_pid( _libusb_ctx, VID, PID_MINI_M );
  
  
  if( !_libusb_dev_handle )
  {
    fprintf(stderr, "[ERROR] USB Open Device (%04X:%04X/%04X) not found\n", VID, PID_MINI_A, PID_MINI_M );
    UP3DCOMM_Close();
    return false;
  }

  if( 1 == libusb_kernel_driver_active( _libusb_dev_handle, 0 ) )
    libusb_detach_kernel_driver( _libusb_dev_handle, 0 );

  if( libusb_claim_interface( _libusb_dev_handle, 0 ) < 0 ) 
  {
    fprintf(stderr,"[ERROR] USB Claim Interface\n");
    UP3DCOMM_Close();
    return false;
  }

  //clean all outstanding printer responses (left from previous sessions)
  for( ;; )
  {
    int read;
    uint8_t buf[2048];
    if( (0 != libusb_bulk_transfer( _libusb_dev_handle, (EP_IN | LIBUSB_ENDPOINT_IN), buf, sizeof(buf), &read, 10)) || (!read) )
      break;
  }

  return true;
}
Esempio n. 2
0
void UP3D_Close()
{
  UP3DCOMM_Close();
}