예제 #1
0
int HostIO_CyUSB::GetDesc(std::string & pDesc) 
{ 
	unsigned char buff[256]; 
	int err; 
	struct libusb_device_descriptor desc;
	
	err = cyusb_get_device_descriptor(h, &desc); 
	if (err < 0) 
		return err; 
	
	err = libusb_get_string_descriptor_ascii(h, desc.iProduct, buff, sizeof(buff)); 
	if (err < 0) 
		return err; 

	pDesc = std::string((const char *)buff);
	return ALL_OK;
} 
예제 #2
0
unsigned short cyusb_getvendor(cyusb_handle *h)
{
	struct libusb_device_descriptor d;
	cyusb_get_device_descriptor(h, &d);
	return d.idVendor;
}
예제 #3
0
unsigned short cyusb_getproduct(cyusb_handle *h)
{
	struct libusb_device_descriptor d;
	cyusb_get_device_descriptor(h, &d);
	return d.idProduct;
} 
int main(int argc, char **argv)
{
	int r;
	struct libusb_device_descriptor desc;
	char user_input = 'n';

	program_name = argv[0];
	
	while ( (next_option = getopt_long(argc, argv, short_options, 
					   long_options, NULL) ) != -1 ) {
		switch ( next_option ) {
			case 'h': /* -h or --help  */
				  print_usage(stdout, 0);
			case 'v': /* -v or --version */
				  printf("%s (Ver 1.0)\n",program_name);
				  printf("Copyright (C) 2012 Cypress Semiconductors Inc. / ATR-LABS\n");
				  exit(0);
			case 'o': /* -o or --output */
				  out_filename = optarg;
				  fp = fopen(out_filename,"a");
				  if ( !fp ) 
				     print_usage(stdout, 1);
				  break;
			case 'V': /* -V or --vendor  */
				  vendor_provided = 1;
				  vid = strtoul(optarg,NULL,16);
				  break;
			case 'P': /* -P or --Product  */
				  product_provided = 1;
				  pid = strtoul(optarg,NULL,16);
				  break;
			case '?': /* Invalid option */
				  print_usage(stdout, 1);
			default : /* Something else, unexpected */
				  abort();
		}
	} 

	validate_inputs();

	if ( (vendor_provided) && (product_provided) )
	   user_input = 'y';
	else user_input = 'n';
	if ( user_input == 'y' ) {
	   r = cyusb_open(vid, pid);
	   if ( r < 0 ) {
	      printf("Error opening library\n");
	      return -1;
	   }
	   else if ( r == 0 ) {
		   printf("No device found\n");
		   return 0;
	   }
	}
	else {
	   r = cyusb_open();
	   if ( r < 0 ) {
	      printf("Error opening library\n");
	      return -1;
	   }
	   else if ( r == 0 ) {
		   printf("No device found\n");
		   return 0;
	   }
	}
	r = cyusb_get_device_descriptor(cyusb_gethandle(0), &desc);
	if ( r ) {
	   printf("error getting device descriptor\n");
	   return -2;
	}
	fprintf(fp,"bLength             = %d\n",       desc.bLength);
	fprintf(fp,"bDescriptorType     = %d\n",       desc.bDescriptorType);
	fprintf(fp,"bcdUSB              = 0x%04x\n",   desc.bcdUSB);
	fprintf(fp,"bDeviceClass        = 0x%02x\n",   desc.bDeviceClass);
	fprintf(fp,"bDeviceSubClass     = 0x%02x\n",   desc.bDeviceSubClass);
	fprintf(fp,"bDeviceProtocol     = 0x%02x\n",   desc.bDeviceProtocol);
	fprintf(fp,"bMaxPacketSize      = %d\n",       desc.bMaxPacketSize0);
	fprintf(fp,"idVendor            = 0x%04x\n",   desc.idVendor);
	fprintf(fp,"idProduct           = 0x%04x\n",   desc.idProduct);
	fprintf(fp,"bcdDevice           = 0x%04x\n",   desc.bcdDevice);
	fprintf(fp,"iManufacturer       = %d\n",       desc.iManufacturer);
	fprintf(fp,"iProduct            = %d\n",       desc.iProduct);
	fprintf(fp,"iSerialNumber       = %d\n",       desc.iSerialNumber);
	fprintf(fp,"bNumConfigurations  = %d\n",       desc.bNumConfigurations);

	cyusb_close();
	return 0;
}