Commit 6bd47a159f2f6c2ce43a3ec572013393c5d013d1
1 parent
4d621b43
Ajout du principe d'énumération des devices
Showing
1 changed file
with
41 additions
and
35 deletions
Show diff stats
src/libusb_wrapper.c
@@ -34,6 +34,22 @@ ssize_t getListDevices(libusb_context *context, libusb_device ***list_ptr) { | @@ -34,6 +34,22 @@ ssize_t getListDevices(libusb_context *context, libusb_device ***list_ptr) { | ||
34 | return count; | 34 | return count; |
35 | } | 35 | } |
36 | 36 | ||
37 | +void* _enumerateDevices(libusb_context *context, void (*func)(libusb_device *device)){ | ||
38 | + libusb_device **list; | ||
39 | + ssize_t count = getListDevices(context, &list); | ||
40 | + | ||
41 | + ssize_t i = 0; | ||
42 | + for (i = 0; i < count; i++) { | ||
43 | + libusb_device *device = list[i]; | ||
44 | + | ||
45 | + func(device); | ||
46 | + } | ||
47 | + | ||
48 | + libusb_free_device_list(list, 1); | ||
49 | + | ||
50 | + return NULL; //DBGONLY TEMP | ||
51 | +} | ||
52 | + | ||
37 | //print readable string, not asked for tutoring | 53 | //print readable string, not asked for tutoring |
38 | void _printConfig(libusb_device *device) {//private method | 54 | void _printConfig(libusb_device *device) {//private method |
39 | // Ouverture du périphérique | 55 | // Ouverture du périphérique |
@@ -62,51 +78,41 @@ void _printConfig(libusb_device *device) {//private method | @@ -62,51 +78,41 @@ void _printConfig(libusb_device *device) {//private method | ||
62 | } | 78 | } |
63 | 79 | ||
64 | 80 | ||
65 | -void displayDevices(libusb_context *context) { | ||
66 | - libusb_device **list; | ||
67 | - ssize_t count = getListDevices(context, &list); | 81 | +void _displayOneDevice(libusb_device *device){ |
82 | + struct libusb_device_descriptor desc; | ||
68 | 83 | ||
69 | - ssize_t i = 0; | ||
70 | - for (i = 0; i < count; i++) { | ||
71 | - libusb_device *device = list[i]; | ||
72 | - struct libusb_device_descriptor desc; | ||
73 | - | ||
74 | - int status = libusb_get_device_descriptor(device, &desc); | ||
75 | - if (status != LIBUSB_SUCCESS){ | ||
76 | - printf("Cannot get device desc : %s\n", libusb_error_name(status)); //DBGONLY | ||
77 | - perror("libusb_open"); | ||
78 | - continue; | ||
79 | - } | 84 | + int status = libusb_get_device_descriptor(device, &desc); |
85 | + if (status != LIBUSB_SUCCESS){ | ||
86 | + printf("Cannot get device desc : %s\n", libusb_error_name(status)); //DBGONLY | ||
87 | + perror("libusb_open"); | ||
88 | + return; | ||
89 | + } | ||
80 | 90 | ||
81 | - uint8_t bus = libusb_get_bus_number(device); | ||
82 | - uint8_t address = libusb_get_device_address(device); | 91 | + uint8_t bus = libusb_get_bus_number(device); |
92 | + uint8_t address = libusb_get_device_address(device); | ||
83 | 93 | ||
84 | - printf("Device Found @ (Bus:Address) %d:%d\n", bus, address); | ||
85 | - printf("Vendor ID 0x0%x\n", desc.idVendor); | ||
86 | - printf("Product ID 0x0%x\n", desc.idProduct); | 94 | + printf("Device Found @ (Bus:Address) %d:%d\n", bus, address); |
95 | + printf("Vendor ID 0x0%x\n", desc.idVendor); | ||
96 | + printf("Product ID 0x0%x\n", desc.idProduct); | ||
87 | 97 | ||
98 | + //_printConfig(device); //Does it work ? | ||
99 | + //displayDeviceEndpoints(device); //Not really work on Axel@Alptop | ||
100 | +} | ||
88 | 101 | ||
89 | - //_printConfig(device); //Does it work ? | ||
90 | - //displayDeviceEndpoints(device); //Not really work on Axel@Alptop | ||
91 | - } | 102 | +void displayDevices(libusb_context *context) { |
103 | + _enumerateDevices(context, _displayOneDevice); | ||
104 | +} | ||
92 | 105 | ||
93 | - libusb_free_device_list(list, 1); | 106 | +//void getFirstDeviceFromID(vid, pid) |
94 | 107 | ||
95 | -} | ||
96 | 108 | ||
109 | +//void getDevicesFromID(vid, pid) | ||
97 | 110 | ||
98 | -void displayDeviceEndpoints(libusb_device *device) { | ||
99 | - printf("Yes you're in\n"); | ||
100 | 111 | ||
101 | - // Ouverture du périphérique | ||
102 | - libusb_device_handle *handle; | ||
103 | - int statusDevice = libusb_open(device, &handle); | ||
104 | - if (statusDevice != LIBUSB_SUCCESS) { | ||
105 | - printf("This error is : %d\n", statusDevice); //DBGONLY | ||
106 | - printf("Printable error : %s\n", libusb_error_name(statusDevice)); //DBGONLY | ||
107 | - perror("libusb_open"); | ||
108 | - return; | ||
109 | - } | 112 | +void displayDeviceEndpoints(libusb_device_handle* handle) { |
113 | + //recover pointer from handle | ||
114 | + libusb_device *device; | ||
115 | + device = libusb_get_device(handle); | ||
110 | 116 | ||
111 | 117 | ||
112 | // lectures des configs? | 118 | // lectures des configs? |