diff --git a/src/libusb_wrapper.c b/src/libusb_wrapper.c index c277b3b..d4572c7 100644 --- a/src/libusb_wrapper.c +++ b/src/libusb_wrapper.c @@ -34,6 +34,22 @@ ssize_t getListDevices(libusb_context *context, libusb_device ***list_ptr) { return count; } +void* _enumerateDevices(libusb_context *context, void (*func)(libusb_device *device)){ + libusb_device **list; + ssize_t count = getListDevices(context, &list); + + ssize_t i = 0; + for (i = 0; i < count; i++) { + libusb_device *device = list[i]; + + func(device); + } + + libusb_free_device_list(list, 1); + + return NULL; //DBGONLY TEMP +} + //print readable string, not asked for tutoring void _printConfig(libusb_device *device) {//private method // Ouverture du périphérique @@ -62,51 +78,41 @@ void _printConfig(libusb_device *device) {//private method } -void displayDevices(libusb_context *context) { - libusb_device **list; - ssize_t count = getListDevices(context, &list); +void _displayOneDevice(libusb_device *device){ + struct libusb_device_descriptor desc; - ssize_t i = 0; - for (i = 0; i < count; i++) { - libusb_device *device = list[i]; - struct libusb_device_descriptor desc; - - int status = libusb_get_device_descriptor(device, &desc); - if (status != LIBUSB_SUCCESS){ - printf("Cannot get device desc : %s\n", libusb_error_name(status)); //DBGONLY - perror("libusb_open"); - continue; - } + int status = libusb_get_device_descriptor(device, &desc); + if (status != LIBUSB_SUCCESS){ + printf("Cannot get device desc : %s\n", libusb_error_name(status)); //DBGONLY + perror("libusb_open"); + return; + } - uint8_t bus = libusb_get_bus_number(device); - uint8_t address = libusb_get_device_address(device); + uint8_t bus = libusb_get_bus_number(device); + uint8_t address = libusb_get_device_address(device); - printf("Device Found @ (Bus:Address) %d:%d\n", bus, address); - printf("Vendor ID 0x0%x\n", desc.idVendor); - printf("Product ID 0x0%x\n", desc.idProduct); + printf("Device Found @ (Bus:Address) %d:%d\n", bus, address); + printf("Vendor ID 0x0%x\n", desc.idVendor); + printf("Product ID 0x0%x\n", desc.idProduct); + //_printConfig(device); //Does it work ? + //displayDeviceEndpoints(device); //Not really work on Axel@Alptop +} - //_printConfig(device); //Does it work ? - //displayDeviceEndpoints(device); //Not really work on Axel@Alptop - } +void displayDevices(libusb_context *context) { + _enumerateDevices(context, _displayOneDevice); +} - libusb_free_device_list(list, 1); +//void getFirstDeviceFromID(vid, pid) -} +//void getDevicesFromID(vid, pid) -void displayDeviceEndpoints(libusb_device *device) { - printf("Yes you're in\n"); - // Ouverture du périphérique - libusb_device_handle *handle; - int statusDevice = libusb_open(device, &handle); - if (statusDevice != LIBUSB_SUCCESS) { - printf("This error is : %d\n", statusDevice); //DBGONLY - printf("Printable error : %s\n", libusb_error_name(statusDevice)); //DBGONLY - perror("libusb_open"); - return; - } +void displayDeviceEndpoints(libusb_device_handle* handle) { + //recover pointer from handle + libusb_device *device; + device = libusb_get_device(handle); // lectures des configs? -- libgit2 0.21.2