uhum2004

usb_get_string_simple

Jun 1st, 2013
323
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.10 KB | None | 0 0
  1. /* main.c */
  2.  
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include <usb.h>
  6. #include "myusbfunctions.h"
  7.  
  8. #define BREAK_HERE raise(SIGINT)
  9.  
  10. char version[] = "This is my string";
  11. struct usb_device *curr_dev;
  12. struct usb_dev_handle *curr_udev;
  13. int timeout = 2200;
  14.  
  15. #define buflen 64
  16. char buffer[buflen];
  17.  
  18. int main(void)
  19. {
  20. int i;
  21.  
  22. i=explore(); /* nr of matches */
  23. if (0==i)
  24. {
  25. printf("No chip was found\n");
  26. exit(0);
  27. }
  28. else
  29. {
  30. if (i>1)
  31. {
  32. printf("Confict: more than one chip was found\n");
  33. exit(0);
  34. }
  35. }
  36. printf("%s\n", version);
  37. //BREAK_HERE;
  38. //i = usb_interrupt_read(curr_udev, curr_dev->config->interface->altsetting->endpoint->bEndpointAddress, buffer, curr_dev->config->interface->altsetting->endpoint->wMaxPacketSize, timeout);
  39.  
  40. i=usb_interrupt_read(curr_udev, 0x81, buffer, 64, 2200);
  41. printf("i=%d\n",i);
  42.  
  43. usb_close (curr_udev);
  44. return 0;
  45. }
  46. /* eof main.c */
  47.  
  48. -------------------------------------------------------------------------
  49.  
  50. /* myusbfunctions.h */
  51. extern struct usb_device *curr_dev;
  52. extern struct usb_dev_handle *curr_udev;
  53. extern int usb_interrupt_read(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout);
  54.  
  55. int explore (void)
  56. {
  57. struct usb_bus *bus;
  58. struct usb_device *dev;
  59. extern char version[];
  60. int nr=0 ;
  61.  
  62. usb_init();
  63. usb_find_busses();
  64. usb_find_devices();
  65.  
  66. for (bus = usb_busses; bus; bus = bus->next)
  67. {
  68. for (dev = bus->devices; dev; dev = dev->next)
  69. {
  70. int ret;
  71. char string[256];
  72. usb_dev_handle *udev;
  73.  
  74. udev = usb_open(dev);
  75. if (udev)
  76. {
  77. if (dev->descriptor.iManufacturer)
  78. {
  79. ret = usb_get_string_simple(udev, dev->descriptor.iManufacturer, string, sizeof(string));
  80. }
  81.  
  82. if (dev->descriptor.iProduct)
  83. {
  84. ret = usb_get_string_simple(udev, dev->descriptor.iProduct, string, sizeof(string));
  85. if (ret > 0)
  86. {
  87. if (0==strcmp(version,string)) /* match */
  88. {
  89. curr_dev = dev; /* copy device */
  90. nr++;
  91. }
  92. }
  93. }
  94. usb_close (udev);
  95. }
  96. }
  97. }
  98. if (nr == 1)
  99. {
  100. curr_udev = usb_open(curr_dev);
  101. }
  102. return nr;
  103. }
  104.  
  105. /* eof myusbfunctions.h */
Advertisement
Add Comment
Please, Sign In to add comment