From 9d698fff06943b348e736c26b68a024d4dda36c7 Mon Sep 17 00:00:00 2001 From: pifou Date: Tue, 11 Dec 2018 13:20:14 +0000 Subject: [PATCH] Listage des endpoints --- test_com.c | 87 --------------------------------------------------------------------------------------- test_list_all.c | 34 ---------------------------------- test_list_devices.c | 34 ++++++++++++++++++++++++++++++++++ test_list_endpoints.c | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 123 insertions(+), 121 deletions(-) delete mode 100644 test_com.c delete mode 100644 test_list_all.c create mode 100644 test_list_devices.c create mode 100644 test_list_endpoints.c diff --git a/test_com.c b/test_com.c deleted file mode 100644 index cd7552a..0000000 --- a/test_com.c +++ /dev/null @@ -1,87 +0,0 @@ -#include -#include -#include - -#define ID_VENDOR 0x0951 -#define ID_PRODUCT 0x01666 - -// gcc file.c -l usb-1.0 - -int main(){ - // init - libusb_context *context; - int status = libusb_init(&context); - if(status != 0){perror("libusb_init"); exit(-1);} - - // devices list - libusb_device **devices; - ssize_t devices_count = libusb_get_device_list(context, &devices); - if(devices_count < 0){perror("libusb_get_device_list"); exit(-1);} - for(int i=0; ibConfigurationValue; - - // detach kernel - for(int j=0; jbNumInterfaces; j++){ - int interface = config_desc->interface[j].altsetting[0].bInterfaceNumber; - if(libusb_kernel_driver_active(handle, interface)){ - status = libusb_detach_kernel_driver(handle, interface); - if(status != 0){ perror("libusb_detach_kernel_driver"); exit(-1); } - } - } - - // use config - status = libusb_set_configuration(handle, configuration); - if(status != 0){ perror("libusb_set_configuration"); exit(-1); } - - // claim interfaces - for(int j=0; jbNumInterfaces; j++){ - libusb_interface_descriptor *interface_desc = config_desc->interface[j].altsetting[0]; - - int interface = interface_desc->bInterfaceNumber; - status = libusb_claim_interface(handle, interface); - if(status != 0){ perror("libusb_claim_interface"); exit(-1); } - - // find endpoints - for(int k=0; kbNumEndpoints; k++){ - libusb_endpoint_descriptor *endpoint_desc = interface_desc->endpoints - - /* ... some code ... */ - // TODO what to do next ? - } - - // release interfaces - status = libusb_release_interface(handle, interface); - if(status != 0){ perror("libusb_release_interface"); exit(-1); } - } - - // free config - libusb_free_config_descriptor(config_desc); - - // close connection - libusb_close(handle); - } - libusb_free_device_list(devices, 1); - - libusb_exit(context); -} diff --git a/test_list_all.c b/test_list_all.c deleted file mode 100644 index adf19e1..0000000 --- a/test_list_all.c +++ /dev/null @@ -1,34 +0,0 @@ -#include -#include -#include - -// gcc file.c -l usb-1.0 - -int main(){ - // init - libusb_context *context; - int status = libusb_init(&context); - if(status != 0){perror("libusb_init"); exit(-1);} - - // devices list - libusb_device **devices; - ssize_t devices_count = libusb_get_device_list(context, &devices); - if(devices_count < 0){perror("libusb_get_device_list");exit(-1);} - for(int i=0; i +#include +#include + +// gcc file.c -l usb-1.0 + +int main(){ + // init + libusb_context *context; + int status = libusb_init(&context); + if(status != 0){perror("libusb_init"); exit(-1);} + + // devices list + libusb_device **devices; + ssize_t devices_count = libusb_get_device_list(context, &devices); + if(devices_count < 0){perror("libusb_get_device_list");exit(-1);} + for(int i=0; i +#include +#include + +#define ID_VENDOR 0x0951 +#define ID_PRODUCT 0x01666 + +// gcc file.c -l usb-1.0 + +int main(){ + // init + libusb_context *context; + int status = libusb_init(&context); + if(status != 0){perror("libusb_init"); exit(-1);} + + // devices list + libusb_device **devices; + ssize_t devices_count = libusb_get_device_list(context, &devices); + if(devices_count < 0){perror("libusb_get_device_list"); exit(-1);} + for(int i=0; ibConfigurationValue; + + // detach kernel + for(int j=0; jbNumInterfaces; j++){ + int interface = config_desc->interface[j].altsetting[0].bInterfaceNumber; + if(libusb_kernel_driver_active(handle, interface)){ + status = libusb_detach_kernel_driver(handle, interface); + if(status != 0){ perror("libusb_detach_kernel_driver"); exit(-1); } + } + } + + // use config + status = libusb_set_configuration(handle, configuration); + if(status != 0){ perror("libusb_set_configuration"); exit(-1); } + + // claim interfaces + for(int j=0; jbNumInterfaces; j++){ + libusb_interface_descriptor *interface_desc = config_desc->interface[j].altsetting[0]; + + int interface = interface_desc->bInterfaceNumber; + status = libusb_claim_interface(handle, interface); + if(status != 0){ perror("libusb_claim_interface"); exit(-1); } + + // find endpoints + for(int k=0; kbNumEndpoints; k++){ + libusb_endpoint_descriptor *endpoint_desc = interface_desc->endpoints[k]; + + // list endpoints bEndpointAddress and bmAttributes + printf("Endpoint inter. %d, num. %d\n", j, k); + printf("bEndpointAddress = 0x%x\n", endpoint_desc->bEndpointAddress); + printf("bmAttributes = 0x%x\n", endpoint_desc->bmAttributes); + } + + // release interfaces + status = libusb_release_interface(handle, interface); + if(status != 0){ perror("libusb_release_interface"); exit(-1); } + } + + // free config + libusb_free_config_descriptor(config_desc); + + // close connection + libusb_close(handle); + } + libusb_free_device_list(devices, 1); + + libusb_exit(context); +} -- libgit2 0.21.2