Skip to content

Commit

Permalink
hosted/bmp_libusb: Refactor usage of libusb_init.
Browse files Browse the repository at this point in the history
  • Loading branch information
sidprice authored and dragonmux committed Jul 18, 2023
1 parent daf98c8 commit 0b85348
Showing 1 changed file with 19 additions and 17 deletions.
36 changes: 19 additions & 17 deletions src/platforms/hosted/bmp_libusb.c
Original file line number Diff line number Diff line change
Expand Up @@ -389,25 +389,23 @@ static const probe_info_s *scan_for_devices(bmp_info_s *info)
#else
const bool skip_ftdi = false;
#endif
int result = libusb_init(&info->libusb_ctx);
if (result == 0) {
const ssize_t cnt = libusb_get_device_list(info->libusb_ctx, &device_list);
if (cnt > 0) {
// Parse the list of USB devices found
for (size_t device_index = 0; device_list[device_index]; ++device_index) {
libusb_device *const device = device_list[device_index];
result = libusb_get_device_descriptor(device, &device_descriptor);
if (result < 0) {
result = fprintf(stderr, "failed to get device descriptor");
return (probe_info_s *)NULL;
}
if (device_descriptor.idVendor != VENDOR_ID_FTDI || !skip_ftdi) {
if (!process_vid_pid_table_probe(&device_descriptor, device, &probe_list))
process_cmsis_interface_probe(&device_descriptor, device, &probe_list, info);
}

const ssize_t cnt = libusb_get_device_list(info->libusb_ctx, &device_list);
if (cnt > 0) {
// Parse the list of USB devices found
for (size_t deviceIndex = 0; device_list[deviceIndex]; ++deviceIndex) {
libusb_device *const device = device_list[deviceIndex];
const int result = libusb_get_device_descriptor(device, &device_descriptor);
if (result < 0) {
DEBUG_ERROR("Failed to get device descriptor");
return (probe_info_s *)NULL;
}
if (device_descriptor.idVendor != VENDOR_ID_FTDI || !skip_ftdi) {
if (!process_vid_pid_table_probe(&device_descriptor, device, &probe_list))
process_cmsis_interface_probe(&device_descriptor, device, &probe_list, info);
}
libusb_free_device_list(device_list, (int)cnt);
}
libusb_free_device_list(device_list, (int)cnt);
}
return probe_info_correct_order(probe_list);
}
Expand All @@ -416,6 +414,10 @@ int find_debuggers(bmda_cli_options_s *cl_opts, bmp_info_s *info)
{
if (cl_opts->opt_device)
return 1;

if (libusb_init(&info->libusb_ctx) != 0)
return 1;

/* Scan for all possible probes on the system */
const probe_info_s *probe_list = scan_for_devices(info);
if (!probe_list) {
Expand Down

0 comments on commit 0b85348

Please sign in to comment.