Add more information about permission errors

This commit is contained in:
Lorenzooone
2024-10-27 03:42:16 +01:00
parent 95ecc1cd08
commit d961247b9a
16 changed files with 123 additions and 18 deletions

View File

@@ -31,3 +31,37 @@ bool usb_is_initialized() {
libusb_context* get_usb_ctx() {
return usb_ctx;
}
int get_usb_total_filtered_devices(const uint16_t valid_vids[], size_t num_vids, const uint16_t valid_pids[], size_t num_pids) {
if(!usb_is_initialized())
return 0;
libusb_device **usb_devices;
int num_devices = libusb_get_device_list(get_usb_ctx(), &usb_devices);
libusb_device_descriptor usb_descriptor{};
int num_devices_found = 0;
for(int i = 0; i < num_devices; i++) {
int result = libusb_get_device_descriptor(usb_devices[i], &usb_descriptor);
if(result < 0)
continue;
bool found_vid = false;
for(int j = 0; j < num_vids; j++)
if(usb_descriptor.idVendor == valid_vids[j]) {
found_vid = true;
break;
}
if(!found_vid)
continue;
for(int j = 0; j < num_pids; j++) {
if(usb_descriptor.idProduct == valid_pids[j]) {
num_devices_found += 1;
break;
}
}
}
if(num_devices >= 0)
libusb_free_device_list(usb_devices, 1);
return num_devices_found;
}