From 06ef138d0b66d27fc73d069a882ac4c1bd819c15 Mon Sep 17 00:00:00 2001 From: Sid Price Date: Tue, 18 Jul 2023 04:36:34 +0100 Subject: [PATCH 01/25] hosted/bmp_libusb: Removed the old find_debuggers() implementation --- src/platforms/hosted/bmp_libusb.c | 285 +----------------------------- 1 file changed, 5 insertions(+), 280 deletions(-) diff --git a/src/platforms/hosted/bmp_libusb.c b/src/platforms/hosted/bmp_libusb.c index 6d67f2b0ee0..f387ea54d02 100644 --- a/src/platforms/hosted/bmp_libusb.c +++ b/src/platforms/hosted/bmp_libusb.c @@ -47,291 +47,16 @@ void libusb_exit_function(bmp_info_s *info) } } -static bmp_type_t find_cmsis_dap_interface(libusb_device *dev, bmp_info_s *info) +int scan_for_probes(void) { - bmp_type_t type = BMP_TYPE_NONE; - - libusb_config_descriptor_s *conf; - char interface_string[128]; - - int res = libusb_get_active_config_descriptor(dev, &conf); - if (res < 0) { - DEBUG_ERROR("libusb_get_active_config_descriptor() failed: %s", libusb_strerror(res)); - return type; - } - - libusb_device_handle *handle; - res = libusb_open(dev, &handle); - if (res != LIBUSB_SUCCESS) { - DEBUG_INFO("libusb_open() failed: %s\n", libusb_strerror(res)); - libusb_free_config_descriptor(conf); - return type; - } - - for (uint8_t i = 0; i < conf->bNumInterfaces; ++i) { - const libusb_interface_descriptor_s *interface = &conf->interface[i].altsetting[0]; - - if (!interface->iInterface) - continue; - - res = libusb_get_string_descriptor_ascii( - handle, interface->iInterface, (uint8_t *)interface_string, sizeof(interface_string)); - if (res < 0) { - DEBUG_ERROR("libusb_get_string_descriptor_ascii() failed: %s\n", libusb_strerror(res)); - continue; - } - - if (!strstr(interface_string, "CMSIS")) - continue; - type = BMP_TYPE_CMSIS_DAP; - - if (interface->bInterfaceClass == 0xffU && interface->bNumEndpoints == 2U) { - info->interface_num = interface->bInterfaceNumber; - - for (uint8_t j = 0; j < interface->bNumEndpoints; ++j) { - const uint8_t n = interface->endpoint[j].bEndpointAddress; - if (n & 0x80U) - info->in_ep = n; - else - info->out_ep = n; - } - - /* V2 is preferred, return early. */ - break; - } - } - libusb_free_config_descriptor(conf); - return type; + return -1; } int find_debuggers(bmda_cli_options_s *cl_opts, bmp_info_s *info) { - libusb_device **devs; - int res = libusb_init(&info->libusb_ctx); - if (res) { - DEBUG_ERROR("Failed to get USB context: %s\n", libusb_strerror(res)); - exit(-1); - } - if (cl_opts->opt_cable) { - if (!strcmp(cl_opts->opt_cable, "list") || !strcmp(cl_opts->opt_cable, "l")) { - const cable_desc_s *cable = cable_desc; - DEBUG_WARN("Available cables:\n"); - for (; cable->name; ++cable) - DEBUG_WARN("\t%s%c\n", cable->name, cable->description ? ' ' : '*'); - - DEBUG_WARN("*: No auto-detection possible! Give cable name as argument!\n"); - exit(0); - } - info->bmp_type = BMP_TYPE_FTDI; - } - ssize_t n_devs = libusb_get_device_list(info->libusb_ctx, &devs); - if (n_devs < 0) { - DEBUG_ERROR("libusb_get_device_list() failed"); - return -1; - } - bool report = false; - size_t found_debuggers; - struct libusb_device_descriptor desc; - char serial[64]; - char manufacturer[128]; - char product[128]; - bool access_problems = false; - char *active_cable = NULL; - bool ftdi_unknown = false; -rescan: - found_debuggers = 0; - serial[0] = 0; - manufacturer[0] = 0; - product[0] = 0; - access_problems = false; - active_cable = NULL; - ftdi_unknown = false; - for (size_t i = 0; devs[i]; ++i) { - libusb_device *dev = devs[i]; - int res = libusb_get_device_descriptor(dev, &desc); - if (res < 0) { - DEBUG_ERROR("libusb_get_device_descriptor() failed: %s", libusb_strerror(res)); - libusb_free_device_list(devs, 1); - continue; - } - /* Exclude hubs from testing. Probably more classes could be excluded here!*/ - switch (desc.bDeviceClass) { - case LIBUSB_CLASS_HUB: - case LIBUSB_CLASS_WIRELESS: - continue; - } - libusb_device_handle *handle = NULL; - res = libusb_open(dev, &handle); - if (res != LIBUSB_SUCCESS) { - if (!access_problems) { - DEBUG_INFO("Open USB %04x:%04x class %2x failed\n", desc.idVendor, desc.idProduct, desc.bDeviceClass); - access_problems = true; - } - continue; - } - /* If the device even has a serial number string, fetch it */ - if (desc.iSerialNumber) { - res = libusb_get_string_descriptor_ascii(handle, desc.iSerialNumber, (uint8_t *)serial, sizeof(serial)); - /* If the call fails and it's not because the device gave us STALL, continue to the next one */ - if (res < 0 && res != LIBUSB_ERROR_PIPE) { - libusb_close(handle); - continue; - } - /* Device has no serial and that's ok. */ - if (res <= 0) - serial[0] = '\0'; - } else - serial[0] = '\0'; - if (cl_opts->opt_serial && !strstr(serial, cl_opts->opt_serial)) { - libusb_close(handle); - continue; - } - /* Attempt to get the manufacturer string */ - if (desc.iManufacturer) { - res = libusb_get_string_descriptor_ascii( - handle, desc.iManufacturer, (uint8_t *)manufacturer, sizeof(manufacturer)); - /* If the call fails and it's not because the device gave us STALL, continue to the next one */ - if (res < 0 && res != LIBUSB_ERROR_PIPE) { - DEBUG_ERROR("libusb_get_string_descriptor_ascii() call to fetch manufacturer string failed: %s\n", - libusb_strerror(res)); - libusb_close(handle); - continue; - } - /* Device has no manufacturer string and that's ok. */ - if (res <= 0) - manufacturer[0] = '\0'; - } else - manufacturer[0] = '\0'; - /* Attempt to get the product string */ - if (desc.iProduct) { - res = libusb_get_string_descriptor_ascii(handle, desc.iProduct, (uint8_t *)product, sizeof(product)); - /* If the call fails and it's not because the device gave us STALL, continue to the next one */ - if (res < 0 && res != LIBUSB_ERROR_PIPE) { - DEBUG_ERROR("libusb_get_string_descriptor_ascii() call to fetch product string failed: %s\n", - libusb_strerror(res)); - libusb_close(handle); - continue; - } - /* Device has no product string and that's ok. */ - if (res <= 0) - product[0] = '\0'; - } else - product[0] = '\0'; - libusb_close(handle); - if (cl_opts->opt_ident_string) { - char *match_manu = NULL; - char *match_product = NULL; - match_manu = strstr(manufacturer, cl_opts->opt_ident_string); - match_product = strstr(product, cl_opts->opt_ident_string); - if (!match_manu && !match_product) - continue; - } - /* Either serial and/or ident_string match or are not given. - * Check type.*/ - bmp_type_t type = BMP_TYPE_NONE; - if (desc.idVendor == VENDOR_ID_BMP) { - if (desc.idProduct == PRODUCT_ID_BMP) - type = BMP_TYPE_BMP; - else { - if (desc.idProduct == PRODUCT_ID_BMP_BL) - DEBUG_WARN("BMP in bootloader mode found. Restart or reflash!\n"); - continue; - } - } else if (find_cmsis_dap_interface(dev, info) == BMP_TYPE_CMSIS_DAP || strstr(manufacturer, "CMSIS") || - strstr(product, "CMSIS")) - type = BMP_TYPE_CMSIS_DAP; - else if (desc.idVendor == VENDOR_ID_STLINK) { - switch (desc.idProduct) { - case PRODUCT_ID_STLINKV2: - case PRODUCT_ID_STLINKV21: - case PRODUCT_ID_STLINKV21_MSD: - case PRODUCT_ID_STLINKV3_NO_MSD: - case PRODUCT_ID_STLINKV3_BL: - case PRODUCT_ID_STLINKV3: - case PRODUCT_ID_STLINKV3E: - type = BMP_TYPE_STLINK_V2; - break; - case PRODUCT_ID_STLINKV1: - DEBUG_WARN("STLINKV1 not supported\n"); - default: - continue; - } - } else if (desc.idVendor == VENDOR_ID_SEGGER) - type = BMP_TYPE_JLINK; - else { - const cable_desc_s *cable = cable_desc; - for (; cable->name; ++cable) { - bool found = false; - if (cable->vendor != desc.idVendor || cable->product != desc.idProduct) - continue; /* VID/PID do not match*/ - if (cl_opts->opt_cable) { - if (strncmp(cable->name, cl_opts->opt_cable, strlen(cable->name)) != 0) - continue; /* cable names do not match*/ - found = true; - } - if (cable->description) { - if (strncmp(cable->description, product, strlen(cable->description)) != 0) - continue; /* descriptions do not match*/ - found = true; - } else { /* VID/PID fits, but no cl_opts->opt_cable and no description*/ - if (cable->vendor == 0x0403 && /* FTDI*/ - (cable->product == 0x6010 || /* FT2232C/D/H*/ - cable->product == 0x6011 || /* FT4232H Quad HS USB-UART/FIFO IC */ - cable->product == 0x6014)) { /* FT232H Single HS USB-UART/FIFO IC */ - ftdi_unknown = true; - continue; /* Cable name is needed */ - } - } - if (found) { - active_cable = cable->name; - type = BMP_TYPE_FTDI; - break; - } - } - if (!cable->name) - continue; - } - - if (report) - DEBUG_WARN("%2zu: %s, %s, %s\n", found_debuggers + 1U, serial[0] ? serial : NO_SERIAL_NUMBER, manufacturer, - product); - - info->libusb_dev = dev; - info->vid = desc.idVendor; - info->pid = desc.idProduct; - info->bmp_type = type; - strncpy(info->serial, serial, sizeof(info->serial)); - strncpy(info->product, product, sizeof(info->product)); - strncpy(info->manufacturer, manufacturer, sizeof(info->manufacturer)); - if (cl_opts->opt_position && cl_opts->opt_position == found_debuggers + 1U) { - found_debuggers = 1; - break; - } - ++found_debuggers; - } - if (found_debuggers == 0 && ftdi_unknown && !cl_opts->opt_cable) - DEBUG_WARN("Generic FTDI MPSSE VID/PID found. Please specify exact type with \"-c \" !\n"); - if (found_debuggers == 1U && !cl_opts->opt_cable && info->bmp_type == BMP_TYPE_FTDI) - cl_opts->opt_cable = active_cable; - if (!found_debuggers && cl_opts->opt_list_only) - DEBUG_ERROR("No usable debugger found\n"); - if (found_debuggers > 1U || (found_debuggers == 1U && cl_opts->opt_list_only)) { - if (!report) { - if (found_debuggers > 1U) - DEBUG_WARN("%zu debuggers found!\nSelect with -P or -s <(partial)serial no.>\n", found_debuggers); - report = true; - goto rescan; - } - if (found_debuggers > 0) - access_problems = false; - found_debuggers = 0; - } - if (!found_debuggers && access_problems) - DEBUG_ERROR("No debugger found. Please check access rights to USB devices!\n"); - if (info->libusb_dev) - libusb_ref_device(info->libusb_dev); - libusb_free_device_list(devs, 1); - return found_debuggers == 1U ? 0 : -1; + (void)cl_opts; + (void)info; + return scan_for_probes(); } /* From 4a01e309794a75214a183dbf333f517cabb5f656 Mon Sep 17 00:00:00 2001 From: SId Price Date: Sat, 22 Oct 2022 14:49:04 -0600 Subject: [PATCH 02/25] hosted/platform: Add all the new VIDs and PIDs required for the probes --- src/platforms/hosted/platform.h | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/platforms/hosted/platform.h b/src/platforms/hosted/platform.h index 58308b7e077..dde876bbbdb 100644 --- a/src/platforms/hosted/platform.h +++ b/src/platforms/hosted/platform.h @@ -65,7 +65,16 @@ void platform_buffer_flush(void); #define PRODUCT_ID_STLINKV3 0x374fU #define PRODUCT_ID_STLINKV3E 0x374eU -#define VENDOR_ID_SEGGER 0x1366U +#define VENDOR_ID_SEGGER 0x1366U +#define PRODUCT_ID_UNKNOWN 0xffffU + +#define VENDOR_ID_FTDI 0x0403U +#define PRODUCT_ID_FTDI_FT2232 0x6010U +#define PRODUCT_ID_FTDI_FT4232 0x6011U +#define PRODUCT_ID_FTDI_FT232 0x6014U + +#define VENDOR_ID_ORBCODE 0x1209U +#define PRODUCT_ID_ORBTRACE 0x3443U typedef enum bmp_type_e { BMP_TYPE_NONE = 0, From a53c37c476bd100952512c231eb37faaaebc0eeb Mon Sep 17 00:00:00 2001 From: SId Price Date: Wed, 5 Oct 2022 08:51:22 -0600 Subject: [PATCH 03/25] hosted/bmp_libusb: Initial reimplementation of probe scanning --- src/platforms/hosted/bmp_hosted.h | 1 + src/platforms/hosted/bmp_libusb.c | 100 +++++++++++++++++++++++++++++- src/platforms/hosted/platform.c | 4 ++ 3 files changed, 102 insertions(+), 3 deletions(-) diff --git a/src/platforms/hosted/bmp_hosted.h b/src/platforms/hosted/bmp_hosted.h index d2131f060c1..3075d650df4 100644 --- a/src/platforms/hosted/bmp_hosted.h +++ b/src/platforms/hosted/bmp_hosted.h @@ -49,6 +49,7 @@ typedef struct transfer_ctx { volatile size_t flags; } transfer_ctx_s; +typedef struct libusb_device_descriptor libusb_device_descriptor_s; typedef struct libusb_config_descriptor libusb_config_descriptor_s; typedef struct libusb_interface_descriptor libusb_interface_descriptor_s; typedef struct libusb_endpoint_descriptor libusb_endpoint_descriptor_s; diff --git a/src/platforms/hosted/bmp_libusb.c b/src/platforms/hosted/bmp_libusb.c index f387ea54d02..e8f5a6d3e4d 100644 --- a/src/platforms/hosted/bmp_libusb.c +++ b/src/platforms/hosted/bmp_libusb.c @@ -19,13 +19,47 @@ /* Find all known usb connected debuggers */ #include "general.h" +#if defined(_WIN32) || defined(__CYGWIN__) +#define NOMINMAX +#define WIN32_LEAN_AND_MEAN +#include +#include + +#include "ftd2xx.h" +#else #include +#include +#endif #include "cli.h" #include "ftdi_bmp.h" #include "version.h" +#include "probe_info.h" #define NO_SERIAL_NUMBER "" +typedef struct debugger_device { + uint16_t vendor; + uint16_t product; + bmp_type_t type; + char *type_string; +} debugger_device_s; + +/* Create the list of debuggers BMDA works with */ +debugger_device_s debugger_devices[] = { + {VENDOR_ID_BMP, PRODUCT_ID_BMP, BMP_TYPE_BMP, "Black Magic Probe"}, + {VENDOR_ID_STLINK, PRODUCT_ID_STLINKV2, BMP_TYPE_STLINK_V2, "ST-Link v2"}, + {VENDOR_ID_STLINK, PRODUCT_ID_STLINKV21, BMP_TYPE_STLINK_V2, "ST-Link v2.1"}, + {VENDOR_ID_STLINK, PRODUCT_ID_STLINKV21_MSD, BMP_TYPE_STLINK_V2, "ST-Link v2.1 MSD"}, + {VENDOR_ID_STLINK, PRODUCT_ID_STLINKV3_NO_MSD, BMP_TYPE_STLINK_V2, "ST-Link v2.1 No MSD"}, + {VENDOR_ID_STLINK, PRODUCT_ID_STLINKV3, BMP_TYPE_STLINK_V2, "ST-Link v3"}, + {VENDOR_ID_STLINK, PRODUCT_ID_STLINKV3E, BMP_TYPE_STLINK_V2, "ST-Link v3E"}, + {VENDOR_ID_SEGGER, PRODUCT_ID_UNKNOWN, BMP_TYPE_JLINK, "Segger JLink"}, + {VENDOR_ID_FTDI, PRODUCT_ID_FTDI_FT2232, BMP_TYPE_FTDI, "FTDI FT2232"}, + {VENDOR_ID_FTDI, PRODUCT_ID_FTDI_FT4232, BMP_TYPE_FTDI, "FTDI FT4232"}, + {VENDOR_ID_FTDI, PRODUCT_ID_FTDI_FT232, BMP_TYPE_FTDI, "FTDI FT232"}, + {0, 0, BMP_TYPE_NONE, ""}, +}; + void bmp_ident(bmp_info_s *info) { DEBUG_INFO("Black Magic Debug App %s\n for Black Magic Probe, ST-Link v2 and v3, CMSIS-DAP, " @@ -47,15 +81,75 @@ void libusb_exit_function(bmp_info_s *info) } } -int scan_for_probes(void) +#if defined(_WIN32) || defined(__CYGWIN__) +static size_t process_ftdi_probe(probe_info_s *probe_list) { - return -1; + DWORD ftdi_dev_count = 0; + if (FT_CreateDeviceInfoList(&ftdi_dev_count) != FT_OK) + return 0; + + FT_DEVICE_LIST_INFO_NODE *dev_info = + (FT_DEVICE_LIST_INFO_NODE *)malloc(sizeof(FT_DEVICE_LIST_INFO_NODE) * ftdi_dev_count); + if (dev_info == NULL) { + DEBUG_ERROR("%s: Memory allocation failed\n", __func__); + return 0; + } + + if (FT_GetDeviceInfoList(dev_info, &ftdi_dev_count) != FT_OK) { + free(dev_info); + return 0; + } + + size_t devices_found = 0; + // Device list is loaded, iterate over the found probes + for (size_t index = 0; index < ftdi_dev_count; ++index) { + probe_list->manufactuer = strdup(dev_info[index].Description); + const size_t serial_len = strlen(dev_info[index].SerialNumber) - 1U; + if (dev_info[index].SerialNumber[serial_len] == 'A') + dev_info[index].SerialNumber[serial_len] = '\0'; + + if (serial_len == 0) + probe_list->serial = strdup("Unknown"); + else + probe_list->serial = strdup(dev_info[index].SerialNumber); + ++devices_found; + ++probe_list; + } + return devices_found; +} +#endif + +static int scan_for_probes(void) +{ + size_t debugger_count = 0; + /* + * If we are running on Windows the proprietary FTD2XX library is used + * to collect debugger information. + */ +#if defined(_WIN32) || defined(__CYGWIN__) + debugger_count += process_ftdi_probe(probes); + const bool skip_ftdi = true; +#else + const bool skip_ftdi = false; +#endif + + libusb_device **device_list; + const ssize_t cnt = libusb_get_device_list(info.libusb_ctx, &device_list); + if (cnt > 0) + libusb_free_device_list(device_list, (int)cnt); + return debugger_count == 1 ? 0 : -1; } int find_debuggers(bmda_cli_options_s *cl_opts, bmp_info_s *info) { (void)cl_opts; - (void)info; + + const int result = libusb_init(&info->libusb_ctx); + if (result != LIBUSB_SUCCESS) { + DEBUG_ERROR("Failed to initialise libusb (%d): %s\n", result, libusb_error_name(result)); + return -1; + } + return scan_for_probes(); } diff --git a/src/platforms/hosted/platform.c b/src/platforms/hosted/platform.c index c446dfaa640..20e64299919 100644 --- a/src/platforms/hosted/platform.c +++ b/src/platforms/hosted/platform.c @@ -82,6 +82,10 @@ static void exit_function(void) #ifdef ENABLE_RTT rtt_if_exit(); +#endif +#if HOSTED_BMP_ONLY == 0 + if (info.libusb_ctx) + libusb_exit(info.libusb_ctx); #endif fflush(stdout); } From ca1104d6c4249d7d58244587ea9b5e75e5592b07 Mon Sep 17 00:00:00 2001 From: SId Price Date: Sun, 9 Oct 2022 13:33:04 -0600 Subject: [PATCH 04/25] hosted/bmp_libusb: Implemented FTDI adaptor scanning for Windows Also applied the new probe list structure --- src/platforms/hosted/bmp_libusb.c | 74 ++++++++++++++++++++----------- 1 file changed, 48 insertions(+), 26 deletions(-) diff --git a/src/platforms/hosted/bmp_libusb.c b/src/platforms/hosted/bmp_libusb.c index e8f5a6d3e4d..b6562439cb3 100644 --- a/src/platforms/hosted/bmp_libusb.c +++ b/src/platforms/hosted/bmp_libusb.c @@ -82,67 +82,83 @@ void libusb_exit_function(bmp_info_s *info) } #if defined(_WIN32) || defined(__CYGWIN__) -static size_t process_ftdi_probe(probe_info_s *probe_list) +static probe_info_s *process_ftdi_probe(void) { DWORD ftdi_dev_count = 0; if (FT_CreateDeviceInfoList(&ftdi_dev_count) != FT_OK) - return 0; + return NULL; FT_DEVICE_LIST_INFO_NODE *dev_info = (FT_DEVICE_LIST_INFO_NODE *)malloc(sizeof(FT_DEVICE_LIST_INFO_NODE) * ftdi_dev_count); if (dev_info == NULL) { DEBUG_ERROR("%s: Memory allocation failed\n", __func__); - return 0; + return NULL; } if (FT_GetDeviceInfoList(dev_info, &ftdi_dev_count) != FT_OK) { free(dev_info); - return 0; + return NULL; } - size_t devices_found = 0; - // Device list is loaded, iterate over the found probes + probe_info_s *probe_list = NULL; + /* Device list is loaded, iterate over the found probes */ for (size_t index = 0; index < ftdi_dev_count; ++index) { - probe_list->manufactuer = strdup(dev_info[index].Description); - const size_t serial_len = strlen(dev_info[index].SerialNumber) - 1U; - if (dev_info[index].SerialNumber[serial_len] == 'A') - dev_info[index].SerialNumber[serial_len] = '\0'; - - if (serial_len == 0) - probe_list->serial = strdup("Unknown"); - else - probe_list->serial = strdup(dev_info[index].SerialNumber); - ++devices_found; - ++probe_list; + const uint16_t vid = (dev_info[index].ID >> 16U) & 0xffffU; + const uint16_t pid = dev_info[index].ID & 0xffffU; + char *serial = strdup(dev_info[index].SerialNumber); + const char *const product = strdup(dev_info[index].Description); + size_t serial_len = strlen(serial); + if (serial_len <= 1) { + free(serial); + serial = strdup("Unknown serial"); + } else { + --serial_len; + if (serial[serial_len] == 'A') + serial[serial_len] = '\0'; + } + const char *const manufacturer = strdup("FTDI"); + probe_list = + probe_info_add_by_id(probe_list, BMP_TYPE_LIBFTDI, vid, pid, manufacturer, product, serial, strdup("---")); } - return devices_found; + free(dev_info); + return probe_list; } #endif -static int scan_for_probes(void) +static const probe_info_s *scan_for_devices(void) { - size_t debugger_count = 0; /* * If we are running on Windows the proprietary FTD2XX library is used * to collect debugger information. */ #if defined(_WIN32) || defined(__CYGWIN__) - debugger_count += process_ftdi_probe(probes); - const bool skip_ftdi = true; + probe_info_s *probe_list = process_ftdi_probe(); + if (probe_list == NULL) { + DEBUG_WARN("No probes found\n"); + } else { + size_t number = 1; + while (probe_list != NULL) { + DEBUG_WARN("%d. %s\n", number++, probe_list->manufacturer); + probe_list = probe_list->next; + } + } + while (true) + continue; #else - const bool skip_ftdi = false; + probe_info_s *probe_list = NULL; #endif libusb_device **device_list; const ssize_t cnt = libusb_get_device_list(info.libusb_ctx, &device_list); if (cnt > 0) libusb_free_device_list(device_list, (int)cnt); - return debugger_count == 1 ? 0 : -1; + return NULL; } int find_debuggers(bmda_cli_options_s *cl_opts, bmp_info_s *info) { - (void)cl_opts; + if (cl_opts->opt_device) + return 1; const int result = libusb_init(&info->libusb_ctx); if (result != LIBUSB_SUCCESS) { @@ -150,7 +166,13 @@ int find_debuggers(bmda_cli_options_s *cl_opts, bmp_info_s *info) return -1; } - return scan_for_probes(); + /* Scan for all possible probes on the system */ + const probe_info_s *const probe_list = scan_for_devices(); + if (!probe_list) { + DEBUG_WARN("No probes found\n"); + return -1; + } + return 1; } /* From be811d5a5b6e03a198b47be7c8039db9ee3ff0fa Mon Sep 17 00:00:00 2001 From: SId Price Date: Sun, 9 Oct 2022 14:57:04 -0600 Subject: [PATCH 05/25] hosted/bmp_libusb: Implemented VID/PID device entry processing Applied new probe list structure --- src/platforms/hosted/bmp_libusb.c | 68 ++++++++++++++++++++++++------- 1 file changed, 54 insertions(+), 14 deletions(-) diff --git a/src/platforms/hosted/bmp_libusb.c b/src/platforms/hosted/bmp_libusb.c index b6562439cb3..3afa8685c78 100644 --- a/src/platforms/hosted/bmp_libusb.c +++ b/src/platforms/hosted/bmp_libusb.c @@ -81,6 +81,14 @@ void libusb_exit_function(bmp_info_s *info) } } +static char *get_device_descriptor_string(libusb_device_handle *handle, uint16_t string_index) +{ + char read_string[128] = {0}; + if (string_index != 0) + libusb_get_string_descriptor_ascii(handle, string_index, (uint8_t *)read_string, sizeof(read_string)); + return strdup(read_string); +} + #if defined(_WIN32) || defined(__CYGWIN__) static probe_info_s *process_ftdi_probe(void) { @@ -125,6 +133,34 @@ static probe_info_s *process_ftdi_probe(void) } #endif +static bool process_vid_pid_table_probe( + libusb_device_descriptor_s *device_descriptor, libusb_device *device, probe_info_s **probe_list) +{ + bool probe_added = false; + for (size_t index = 0; debugger_devices[index].type != BMP_TYPE_NONE; ++index) { + /* Check for a match, skip the entry if we don't get one */ + if (device_descriptor->idVendor != debugger_devices[index].vendor || + (device_descriptor->idProduct != debugger_devices[index].product && + debugger_devices[index].product != PRODUCT_ID_UNKNOWN)) + continue; + + libusb_device_handle *handle = NULL; + /* Try to open the device */ + if (libusb_open(device, &handle) != LIBUSB_SUCCESS) + break; + char *product = get_device_descriptor_string(handle, device_descriptor->iProduct); + char *manufacturer = get_device_descriptor_string(handle, device_descriptor->iManufacturer); + char *serial = get_device_descriptor_string(handle, device_descriptor->iSerialNumber); + char *version = strdup("---"); + + *probe_list = probe_info_add_by_id(*probe_list, debugger_devices[index].type, device_descriptor->idVendor, + device_descriptor->idProduct, manufacturer, product, serial, version); + probe_added = true; + libusb_close(handle); + } + return probe_added; +} + static const probe_info_s *scan_for_devices(void) { /* @@ -133,26 +169,30 @@ static const probe_info_s *scan_for_devices(void) */ #if defined(_WIN32) || defined(__CYGWIN__) probe_info_s *probe_list = process_ftdi_probe(); - if (probe_list == NULL) { - DEBUG_WARN("No probes found\n"); - } else { - size_t number = 1; - while (probe_list != NULL) { - DEBUG_WARN("%d. %s\n", number++, probe_list->manufacturer); - probe_list = probe_list->next; - } - } - while (true) - continue; + const bool skip_ftdi = probe_list != NULL; #else probe_info_s *probe_list = NULL; + const bool skip_ftdi = false; #endif libusb_device **device_list; const ssize_t cnt = libusb_get_device_list(info.libusb_ctx, &device_list); - if (cnt > 0) - libusb_free_device_list(device_list, (int)cnt); - return NULL; + if (cnt <= 0) + return probe_info_correct_order(probe_list); + /* 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]; + libusb_device_descriptor_s device_descriptor; + const int result = libusb_get_device_descriptor(device, &device_descriptor); + if (result < 0) { + DEBUG_ERROR("Failed to get device descriptor (%d): %s\n", result, libusb_error_name(result)); + return NULL; + } + if (device_descriptor.idVendor != VENDOR_ID_FTDI || !skip_ftdi) + process_vid_pid_table_probe(&device_descriptor, device, &probe_list); + } + libusb_free_device_list(device_list, (int)cnt); + return probe_info_correct_order(probe_list); } int find_debuggers(bmda_cli_options_s *cl_opts, bmp_info_s *info) From 3aa561376479224b93b99268e3932e478801a568 Mon Sep 17 00:00:00 2001 From: Sid Price Date: Wed, 19 Jul 2023 06:07:17 +0100 Subject: [PATCH 06/25] hosted/bmp_libusb: Implemented display of the discovered probes --- src/platforms/hosted/bmp_libusb.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/platforms/hosted/bmp_libusb.c b/src/platforms/hosted/bmp_libusb.c index 3afa8685c78..bbdb7c553ad 100644 --- a/src/platforms/hosted/bmp_libusb.c +++ b/src/platforms/hosted/bmp_libusb.c @@ -207,11 +207,17 @@ int find_debuggers(bmda_cli_options_s *cl_opts, bmp_info_s *info) } /* Scan for all possible probes on the system */ - const probe_info_s *const probe_list = scan_for_devices(); + const probe_info_s *probe_list = scan_for_devices(); if (!probe_list) { DEBUG_WARN("No probes found\n"); return -1; } + DEBUG_WARN(" %-20s %-25s %-25s %s\n", "Name", "Serial #", "Manufacturer", "Version"); + for (size_t position = 1; probe_list != NULL; ++position) { + DEBUG_WARN(" %2zu. %-20s %-25s %-25s %s\n", position, probe_list->product, probe_list->serial, + probe_list->manufacturer, probe_list->version); + probe_list = probe_list->next; + } return 1; } From 41ebd82ad8cde4be20e81e21e7c429fe728997fd Mon Sep 17 00:00:00 2001 From: SId Price Date: Sat, 15 Oct 2022 17:29:33 -0600 Subject: [PATCH 07/25] hosted/bmp_libusb: Primitive scanner for CMSIS-DAP probes Information displayed after scanning needs some work, including version processing. --- src/platforms/hosted/bmp_libusb.c | 73 ++++++++++++++++++++++++++++++- 1 file changed, 71 insertions(+), 2 deletions(-) diff --git a/src/platforms/hosted/bmp_libusb.c b/src/platforms/hosted/bmp_libusb.c index bbdb7c553ad..e9883e8fc03 100644 --- a/src/platforms/hosted/bmp_libusb.c +++ b/src/platforms/hosted/bmp_libusb.c @@ -133,6 +133,73 @@ static probe_info_s *process_ftdi_probe(void) } #endif +static bool process_cmsis_interface_probe( + libusb_device_descriptor_s *device_descriptor, libusb_device *device, probe_info_s **probe_list) +{ + /* Try to get the active configuration descriptor for the device */ + libusb_config_descriptor_s *config; + if (libusb_get_active_config_descriptor(device, &config) != 0) + return false; + + /* Try to open the device */ + libusb_device_handle *handle; + if (libusb_open(device, &handle) != 0) { + libusb_free_config_descriptor(config); + return false; + } + char read_string[128]; + + bool cmsis_dap = false; + for (size_t iface = 0; iface < config->bNumInterfaces && !cmsis_dap; ++iface) { + const libusb_interface_s *interface = &config->interface[iface]; + for (int descriptorIndex = 0; descriptorIndex < interface->num_altsetting; ++descriptorIndex) { + const libusb_interface_descriptor_s *descriptor = &interface->altsetting[descriptorIndex]; + uint8_t string_index = descriptor->iInterface; + if (string_index == 0) + continue; + if (libusb_get_string_descriptor_ascii( + handle, string_index, (unsigned char *)read_string, sizeof(read_string)) < 0) + continue; /* We failed but that's a soft error at this point. */ + + if (strstr(read_string, "CMSIS") != NULL) { + char *serial; + if (device_descriptor->iSerialNumber == 0) + serial = strdup("Unknown serial number"); + else { + if (libusb_get_string_descriptor_ascii(handle, device_descriptor->iSerialNumber, + (unsigned char *)read_string, sizeof(read_string)) < 0) + continue; /* We failed but that's a soft error at this point. */ + serial = strdup(read_string); + } + char *manufacturer; + if (device_descriptor->iManufacturer == 0) + manufacturer = strdup("Unknown manufacturer"); + else { + if (libusb_get_string_descriptor_ascii(handle, device_descriptor->iManufacturer, + (unsigned char *)read_string, sizeof(read_string)) < 0) + continue; /* We failed but that's a soft error at this point. */ + manufacturer = strdup(read_string); + } + char *product; + if (device_descriptor->iProduct == 0) { + product = strdup("Unknown product"); + } else { + if (libusb_get_string_descriptor_ascii( + handle, device_descriptor->iProduct, (unsigned char *)read_string, sizeof(read_string)) < 0) + continue; /* We failed but that's a soft error at this point. */ + product = strdup(read_string); + } + *probe_list = probe_info_add_by_id(*probe_list, BMP_TYPE_CMSIS_DAP, device_descriptor->idVendor, + device_descriptor->idProduct, manufacturer, product, serial, strdup("---")); + cmsis_dap = true; + } + } + } + libusb_close(handle); + libusb_free_config_descriptor(config); + return cmsis_dap; +} + static bool process_vid_pid_table_probe( libusb_device_descriptor_s *device_descriptor, libusb_device *device, probe_info_s **probe_list) { @@ -188,8 +255,10 @@ static const probe_info_s *scan_for_devices(void) DEBUG_ERROR("Failed to get device descriptor (%d): %s\n", result, libusb_error_name(result)); return NULL; } - if (device_descriptor.idVendor != VENDOR_ID_FTDI || !skip_ftdi) - process_vid_pid_table_probe(&device_descriptor, device, &probe_list); + 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); + } } libusb_free_device_list(device_list, (int)cnt); return probe_info_correct_order(probe_list); From c82beffcfb244baa719e60c0e6f793de35b31a72 Mon Sep 17 00:00:00 2001 From: SId Price Date: Sun, 16 Oct 2022 15:25:49 -0600 Subject: [PATCH 08/25] hosted/bmp_libusb: Implemented probe type lookup --- src/platforms/hosted/bmp_libusb.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/platforms/hosted/bmp_libusb.c b/src/platforms/hosted/bmp_libusb.c index e9883e8fc03..b17dd8d7aaa 100644 --- a/src/platforms/hosted/bmp_libusb.c +++ b/src/platforms/hosted/bmp_libusb.c @@ -60,6 +60,20 @@ debugger_device_s debugger_devices[] = { {0, 0, BMP_TYPE_NONE, ""}, }; +bmp_type_t get_type_from_vid_pid(const uint16_t probe_vid, const uint16_t probe_pid) +{ + bmp_type_t probe_type = BMP_TYPE_NONE; + /* Segger probe PIDs are unknown, if we have a Segger probe force the type to JLink */ + if (probe_vid == VENDOR_ID_SEGGER) + return BMP_TYPE_JLINK; + + for (size_t index = 0; debugger_devices[index].type != BMP_TYPE_NONE; index++) { + if (debugger_devices[index].vendor == probe_vid && debugger_devices[index].product == probe_pid) + return debugger_devices[index].type; + } + return probe_type; +} + void bmp_ident(bmp_info_s *info) { DEBUG_INFO("Black Magic Debug App %s\n for Black Magic Probe, ST-Link v2 and v3, CMSIS-DAP, " @@ -215,12 +229,14 @@ static bool process_vid_pid_table_probe( /* Try to open the device */ if (libusb_open(device, &handle) != LIBUSB_SUCCESS) break; + + const bmp_type_t probe_type = get_type_from_vid_pid(device_descriptor->idVendor, device_descriptor->idProduct); char *product = get_device_descriptor_string(handle, device_descriptor->iProduct); char *manufacturer = get_device_descriptor_string(handle, device_descriptor->iManufacturer); char *serial = get_device_descriptor_string(handle, device_descriptor->iSerialNumber); char *version = strdup("---"); - *probe_list = probe_info_add_by_id(*probe_list, debugger_devices[index].type, device_descriptor->idVendor, + *probe_list = probe_info_add_by_id(*probe_list, probe_type, device_descriptor->idVendor, device_descriptor->idProduct, manufacturer, product, serial, version); probe_added = true; libusb_close(handle); From 759f4f2fce7e9d060c179c9d5f66ef141f640f80 Mon Sep 17 00:00:00 2001 From: SId Price Date: Sun, 23 Oct 2022 15:15:20 -0600 Subject: [PATCH 09/25] hosted/bmp_libusb: Implemented handling for custom string processing For BMP, extract version from product string. --- src/platforms/hosted/bmp_libusb.c | 84 +++++++++++++++++++++++++------ 1 file changed, 68 insertions(+), 16 deletions(-) diff --git a/src/platforms/hosted/bmp_libusb.c b/src/platforms/hosted/bmp_libusb.c index b17dd8d7aaa..3ae59b8badd 100644 --- a/src/platforms/hosted/bmp_libusb.c +++ b/src/platforms/hosted/bmp_libusb.c @@ -37,27 +37,32 @@ #define NO_SERIAL_NUMBER "" +void bmp_read_product_version(libusb_device_descriptor_s *device_descriptor, libusb_device *device, + libusb_device_handle *handle, char **product, char **manufacturer, char **serial, char **version); + typedef struct debugger_device { uint16_t vendor; uint16_t product; bmp_type_t type; + void (*function)( + libusb_device_descriptor_s *, libusb_device *, libusb_device_handle *, char **, char **, char **, char **); char *type_string; } debugger_device_s; /* Create the list of debuggers BMDA works with */ debugger_device_s debugger_devices[] = { - {VENDOR_ID_BMP, PRODUCT_ID_BMP, BMP_TYPE_BMP, "Black Magic Probe"}, - {VENDOR_ID_STLINK, PRODUCT_ID_STLINKV2, BMP_TYPE_STLINK_V2, "ST-Link v2"}, - {VENDOR_ID_STLINK, PRODUCT_ID_STLINKV21, BMP_TYPE_STLINK_V2, "ST-Link v2.1"}, - {VENDOR_ID_STLINK, PRODUCT_ID_STLINKV21_MSD, BMP_TYPE_STLINK_V2, "ST-Link v2.1 MSD"}, - {VENDOR_ID_STLINK, PRODUCT_ID_STLINKV3_NO_MSD, BMP_TYPE_STLINK_V2, "ST-Link v2.1 No MSD"}, - {VENDOR_ID_STLINK, PRODUCT_ID_STLINKV3, BMP_TYPE_STLINK_V2, "ST-Link v3"}, - {VENDOR_ID_STLINK, PRODUCT_ID_STLINKV3E, BMP_TYPE_STLINK_V2, "ST-Link v3E"}, - {VENDOR_ID_SEGGER, PRODUCT_ID_UNKNOWN, BMP_TYPE_JLINK, "Segger JLink"}, - {VENDOR_ID_FTDI, PRODUCT_ID_FTDI_FT2232, BMP_TYPE_FTDI, "FTDI FT2232"}, - {VENDOR_ID_FTDI, PRODUCT_ID_FTDI_FT4232, BMP_TYPE_FTDI, "FTDI FT4232"}, - {VENDOR_ID_FTDI, PRODUCT_ID_FTDI_FT232, BMP_TYPE_FTDI, "FTDI FT232"}, - {0, 0, BMP_TYPE_NONE, ""}, + {VENDOR_ID_BMP, PRODUCT_ID_BMP, BMP_TYPE_BMP, bmp_read_product_version, "Black Magic Probe"}, + {VENDOR_ID_STLINK, PRODUCT_ID_STLINKV2, BMP_TYPE_STLINK_V2, NULL, "ST-Link v2"}, + {VENDOR_ID_STLINK, PRODUCT_ID_STLINKV21, BMP_TYPE_STLINK_V2, NULL, "ST-Link v2.1"}, + {VENDOR_ID_STLINK, PRODUCT_ID_STLINKV21_MSD, BMP_TYPE_STLINK_V2, NULL, "ST-Link v2.1 MSD"}, + {VENDOR_ID_STLINK, PRODUCT_ID_STLINKV3_NO_MSD, BMP_TYPE_STLINK_V2, NULL, "ST-Link v2.1 No MSD"}, + {VENDOR_ID_STLINK, PRODUCT_ID_STLINKV3, BMP_TYPE_STLINK_V2, NULL, "ST-Link v3"}, + {VENDOR_ID_STLINK, PRODUCT_ID_STLINKV3E, BMP_TYPE_STLINK_V2, NULL, "ST-Link v3E"}, + {VENDOR_ID_SEGGER, PRODUCT_ID_UNKNOWN, BMP_TYPE_JLINK, NULL, "Segger JLink"}, + {VENDOR_ID_FTDI, PRODUCT_ID_FTDI_FT2232, BMP_TYPE_FTDI, NULL, "FTDI FT2232"}, + {VENDOR_ID_FTDI, PRODUCT_ID_FTDI_FT4232, BMP_TYPE_FTDI, NULL, "FTDI FT4232"}, + {VENDOR_ID_FTDI, PRODUCT_ID_FTDI_FT232, BMP_TYPE_FTDI, NULL, "FTDI FT232"}, + {0, 0, BMP_TYPE_NONE, NULL, ""}, }; bmp_type_t get_type_from_vid_pid(const uint16_t probe_vid, const uint16_t probe_pid) @@ -103,6 +108,33 @@ static char *get_device_descriptor_string(libusb_device_handle *handle, uint16_t return strdup(read_string); } +/* + * BMP Probes have their version information in the product string. + * + * Extract the product and version, skip the manufacturer string + */ +void bmp_read_product_version(libusb_device_descriptor_s *device_descriptor, libusb_device *device, + libusb_device_handle *handle, char **product, char **manufacturer, char **serial, char **version) +{ + (void)device; + (void)serial; + (void)manufacturer; + char *start_of_version; + *product = get_device_descriptor_string(handle, device_descriptor->iProduct); + start_of_version = strrchr(*product, ' '); + if (start_of_version == NULL) { + version = NULL; + } else { + while (start_of_version[0] == ' ' && start_of_version != *product) + --start_of_version; + start_of_version[1] = '\0'; + start_of_version += 2; + while (start_of_version[0] == ' ' && start_of_version[0] != '\0') + ++start_of_version; + *version = strdup(start_of_version); + } +} + #if defined(_WIN32) || defined(__CYGWIN__) static probe_info_s *process_ftdi_probe(void) { @@ -231,10 +263,30 @@ static bool process_vid_pid_table_probe( break; const bmp_type_t probe_type = get_type_from_vid_pid(device_descriptor->idVendor, device_descriptor->idProduct); - char *product = get_device_descriptor_string(handle, device_descriptor->iProduct); - char *manufacturer = get_device_descriptor_string(handle, device_descriptor->iManufacturer); - char *serial = get_device_descriptor_string(handle, device_descriptor->iSerialNumber); - char *version = strdup("---"); + char *product = NULL; + char *manufacturer = NULL; + char *serial = NULL; + char *version = NULL; + /* + * If the probe has a custom string reader available, use it first. + * + * This will read and process any strings that need special work, e.g., extracting + * a version string from a product string (BMP native) + */ + if (debugger_devices[index].function != NULL) + debugger_devices[index].function( + device_descriptor, device, handle, &product, &manufacturer, &serial, &version); + + /* Now read any strings that have not been set by a custom reader function */ + if (product == NULL) + product = get_device_descriptor_string(handle, device_descriptor->iProduct); + if (manufacturer == NULL) + manufacturer = get_device_descriptor_string(handle, device_descriptor->iManufacturer); + if (serial == NULL) + serial = get_device_descriptor_string(handle, device_descriptor->iSerialNumber); + + if (version == NULL) + version = strdup("---"); *probe_list = probe_info_add_by_id(*probe_list, probe_type, device_descriptor->idVendor, device_descriptor->idProduct, manufacturer, product, serial, version); From 8e74c9d2777a97c8ea411f3c6b89cf77b08b2b83 Mon Sep 17 00:00:00 2001 From: SId Price Date: Sun, 23 Oct 2022 16:08:59 -0600 Subject: [PATCH 10/25] hosted/bmp_libusb: Refined and expanded CMSIS-DAP scanning --- src/platforms/hosted/bmp_libusb.c | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/src/platforms/hosted/bmp_libusb.c b/src/platforms/hosted/bmp_libusb.c index 3ae59b8badd..ae6c1299b37 100644 --- a/src/platforms/hosted/bmp_libusb.c +++ b/src/platforms/hosted/bmp_libusb.c @@ -211,30 +211,19 @@ static bool process_cmsis_interface_probe( char *serial; if (device_descriptor->iSerialNumber == 0) serial = strdup("Unknown serial number"); - else { - if (libusb_get_string_descriptor_ascii(handle, device_descriptor->iSerialNumber, - (unsigned char *)read_string, sizeof(read_string)) < 0) - continue; /* We failed but that's a soft error at this point. */ - serial = strdup(read_string); - } + else + serial = get_device_descriptor_string(handle, device_descriptor->iSerialNumber); char *manufacturer; if (device_descriptor->iManufacturer == 0) manufacturer = strdup("Unknown manufacturer"); - else { - if (libusb_get_string_descriptor_ascii(handle, device_descriptor->iManufacturer, - (unsigned char *)read_string, sizeof(read_string)) < 0) - continue; /* We failed but that's a soft error at this point. */ - manufacturer = strdup(read_string); - } + else + manufacturer = get_device_descriptor_string(handle, device_descriptor->iManufacturer); char *product; - if (device_descriptor->iProduct == 0) { + if (device_descriptor->iProduct == 0) product = strdup("Unknown product"); - } else { - if (libusb_get_string_descriptor_ascii( - handle, device_descriptor->iProduct, (unsigned char *)read_string, sizeof(read_string)) < 0) - continue; /* We failed but that's a soft error at this point. */ - product = strdup(read_string); - } + else + product = get_device_descriptor_string(handle, device_descriptor->iProduct); + *probe_list = probe_info_add_by_id(*probe_list, BMP_TYPE_CMSIS_DAP, device_descriptor->idVendor, device_descriptor->idProduct, manufacturer, product, serial, strdup("---")); cmsis_dap = true; From a8212c508544794e5768387f04d17f917242a1c2 Mon Sep 17 00:00:00 2001 From: SId Price Date: Mon, 24 Oct 2022 18:05:26 -0600 Subject: [PATCH 11/25] hosted/bmp_libusb: Add post scan processing VID/PID are missing from probe_info, must be added. --- src/platforms/hosted/bmp_libusb.c | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/src/platforms/hosted/bmp_libusb.c b/src/platforms/hosted/bmp_libusb.c index ae6c1299b37..555136e233a 100644 --- a/src/platforms/hosted/bmp_libusb.c +++ b/src/platforms/hosted/bmp_libusb.c @@ -338,13 +338,31 @@ int find_debuggers(bmda_cli_options_s *cl_opts, bmp_info_s *info) DEBUG_WARN("No probes found\n"); return -1; } - DEBUG_WARN(" %-20s %-25s %-25s %s\n", "Name", "Serial #", "Manufacturer", "Version"); - for (size_t position = 1; probe_list != NULL; ++position) { - DEBUG_WARN(" %2zu. %-20s %-25s %-25s %s\n", position, probe_list->product, probe_list->serial, - probe_list->manufacturer, probe_list->version); - probe_list = probe_list->next; + /* Count up how many were found and filter the list for a match to the program options request */ + const size_t probes = probe_info_count(probe_list); + const probe_info_s *probe = NULL; + /* If there's just one probe and we didn't get match critera, pick it */ + if (probes == 1 && !cl_opts->opt_serial && !cl_opts->opt_position) + probe = probe_list; + else /* Otherwise filter the list */ + probe = probe_info_filter(probe_list, cl_opts->opt_serial, cl_opts->opt_position); + + /* If we found no matching probes, or we're in list-only mode */ + if (!probe || cl_opts->opt_list_only) { + DEBUG_WARN("Available Probes:\n"); + probe = probe_list; + DEBUG_WARN(" %-20s %-25s %-25s %s\n", "Name", "Serial #", "Manufacturer", "Version"); + for (size_t position = 1; probe; probe = probe->next, ++position) + DEBUG_WARN(" %2zu. %-20s %-25s %-25s %s\n", position, probe->product, probe->serial, probe->manufacturer, + probe->version); + probe_info_list_free(probe_list); + return 1; // false; } - return 1; + + /* We found a matching probe, populate bmp_info_s and signal success */ + probe_info_to_bmp_info(probe, info); + probe_info_list_free(probe_list); + return 0; // true; } /* From 12fcb310fff988c203fe7624967acabfc0728848 Mon Sep 17 00:00:00 2001 From: SId Price Date: Fri, 4 Nov 2022 14:04:24 -0600 Subject: [PATCH 12/25] hosted/ftdi_bmp: Add code to update cl_opts for FTDI probes --- src/platforms/hosted/bmp_libusb.c | 7 +++++++ src/platforms/hosted/ftdi_bmp.c | 21 +++++++++++++++++++++ src/platforms/hosted/ftdi_bmp.h | 3 +++ 3 files changed, 31 insertions(+) diff --git a/src/platforms/hosted/bmp_libusb.c b/src/platforms/hosted/bmp_libusb.c index 555136e233a..be4fc08308f 100644 --- a/src/platforms/hosted/bmp_libusb.c +++ b/src/platforms/hosted/bmp_libusb.c @@ -361,6 +361,13 @@ int find_debuggers(bmda_cli_options_s *cl_opts, bmp_info_s *info) /* We found a matching probe, populate bmp_info_s and signal success */ probe_info_to_bmp_info(probe, info); + /* If the selected probe is an FTDI adapter try to resolve the adaptor type */ + if (probe->vid == VENDOR_ID_FTDI && !ftdi_lookup_adapter_from_vid_pid(cl_opts, probe)) { + // Don't know the cable type, ask user to specify with "-c" + DEBUG_WARN("Multiple FTDI adapters match Vendor and Product ID.\n"); + DEBUG_WARN("Please specify adapter type on command line using \"-c\" option.\n"); + return -1; //false + } probe_info_list_free(probe_list); return 0; // true; } diff --git a/src/platforms/hosted/ftdi_bmp.c b/src/platforms/hosted/ftdi_bmp.c index 5ec70761fce..b3d2b9a6fbf 100644 --- a/src/platforms/hosted/ftdi_bmp.c +++ b/src/platforms/hosted/ftdi_bmp.c @@ -379,6 +379,27 @@ const cable_desc_s cable_desc[] = { {}, }; +/* + * Search the adapter descriptor table for probes matching the VID/PID for the given probe. + * If a single match is found, place the adapter descriptor pointer into the cl_opts structure + * and return true. Otherwise return false. + */ +bool ftdi_lookup_adapter_from_vid_pid(bmda_cli_options_s *const cl_opts, const probe_info_s *const probe) +{ + size_t adapter_count = 0; + const cable_desc_s *selection = NULL; + for (const cable_desc_s *cable = &cable_desc[0]; cable->vendor; ++cable) { + if (cable->vendor == probe->vid && cable->product == probe->pid) { + ++adapter_count; + selection = cable; + } + } + /* If we've found only one adaptor, place the adapter name into cl_opts */ + if (adapter_count == 1) + cl_opts->opt_cable = selection->name; + return adapter_count == 1; +} + bool ftdi_bmp_init(bmda_cli_options_s *const cl_opts) { int err; diff --git a/src/platforms/hosted/ftdi_bmp.h b/src/platforms/hosted/ftdi_bmp.h index 05bb976bc99..0842dc28319 100644 --- a/src/platforms/hosted/ftdi_bmp.h +++ b/src/platforms/hosted/ftdi_bmp.h @@ -31,6 +31,8 @@ #include "bmp_hosted.h" +#include "probe_info.h" + typedef struct data_desc { uint16_t data_low; uint16_t ddr_low; @@ -123,6 +125,7 @@ extern data_desc_s active_state; #define ftdi_buffer_read_val(value) ftdi_buffer_read(&(value), sizeof(value)) bool ftdi_bmp_init(bmda_cli_options_s *cl_opts); +bool ftdi_lookup_adapter_from_vid_pid(bmda_cli_options_s *cl_opts, const probe_info_s *probe); bool ftdi_swd_init(void); bool ftdi_jtag_init(void); void ftdi_buffer_flush(void); From f6f6d4e79437f582e8e840e0e42eb7585418618e Mon Sep 17 00:00:00 2001 From: SId Price Date: Fri, 4 Nov 2022 17:02:11 -0600 Subject: [PATCH 13/25] hosted/bmp_libusb: Improved the handling of CMSIS-DAP adaptors, and ORBTrace --- src/platforms/hosted/bmp_libusb.c | 50 ++++++++++++++++++++++++++----- 1 file changed, 43 insertions(+), 7 deletions(-) diff --git a/src/platforms/hosted/bmp_libusb.c b/src/platforms/hosted/bmp_libusb.c index be4fc08308f..e049da99706 100644 --- a/src/platforms/hosted/bmp_libusb.c +++ b/src/platforms/hosted/bmp_libusb.c @@ -34,6 +34,7 @@ #include "ftdi_bmp.h" #include "version.h" #include "probe_info.h" +#include "utils.h" #define NO_SERIAL_NUMBER "" @@ -179,9 +180,36 @@ static probe_info_s *process_ftdi_probe(void) } #endif +void orbtrace_read_version(libusb_device *device, libusb_device_handle *handle, char *version, size_t buffer_size) +{ + libusb_config_descriptor_s *config; + if (libusb_get_active_config_descriptor(device, &config) != 0) + return; + for (size_t iface = 0; iface < config->bNumInterfaces; ++iface) { + const libusb_interface_s *interface = &config->interface[iface]; + for (int altmode = 0; altmode < interface->num_altsetting; ++altmode) { + const libusb_interface_descriptor_s *descriptor = &interface->altsetting[altmode]; + uint8_t string_index = descriptor->iInterface; + if (string_index == 0) + continue; + if (libusb_get_string_descriptor_ascii(handle, string_index, (uint8_t *)version, (int)buffer_size) < 0) + continue; /* We failed but that's a soft error at this point. */ + + const size_t version_len = strlen(version); + if (begins_with(version, version_len, "Version")) { + /* Chop off the "Version: " prefix */ + memmove(version, version + 9, version_len - 8); + break; + } + } + } + libusb_free_config_descriptor(config); +} + static bool process_cmsis_interface_probe( - libusb_device_descriptor_s *device_descriptor, libusb_device *device, probe_info_s **probe_list) + libusb_device_descriptor_s *device_descriptor, libusb_device *device, probe_info_s **probe_list, bmp_info_s *info) { + (void)info; /* Try to get the active configuration descriptor for the device */ libusb_config_descriptor_s *config; if (libusb_get_active_config_descriptor(device, &config) != 0) @@ -199,7 +227,7 @@ static bool process_cmsis_interface_probe( for (size_t iface = 0; iface < config->bNumInterfaces && !cmsis_dap; ++iface) { const libusb_interface_s *interface = &config->interface[iface]; for (int descriptorIndex = 0; descriptorIndex < interface->num_altsetting; ++descriptorIndex) { - const libusb_interface_descriptor_s *descriptor = &interface->altsetting[descriptorIndex]; + const libusb_interface_descriptor_s *descriptor = &interface->altsetting[0]; uint8_t string_index = descriptor->iInterface; if (string_index == 0) continue; @@ -208,6 +236,13 @@ static bool process_cmsis_interface_probe( continue; /* We failed but that's a soft error at this point. */ if (strstr(read_string, "CMSIS") != NULL) { + char *version; + if (device_descriptor->idVendor == VENDOR_ID_ORBCODE && + device_descriptor->idProduct == PRODUCT_ID_ORBTRACE) { + orbtrace_read_version(device, handle, read_string, sizeof(read_string)); + version = strdup(read_string); + } else + version = strdup("---"); char *serial; if (device_descriptor->iSerialNumber == 0) serial = strdup("Unknown serial number"); @@ -225,7 +260,7 @@ static bool process_cmsis_interface_probe( product = get_device_descriptor_string(handle, device_descriptor->iProduct); *probe_list = probe_info_add_by_id(*probe_list, BMP_TYPE_CMSIS_DAP, device_descriptor->idVendor, - device_descriptor->idProduct, manufacturer, product, serial, strdup("---")); + device_descriptor->idProduct, manufacturer, product, serial, version); cmsis_dap = true; } } @@ -285,7 +320,7 @@ static bool process_vid_pid_table_probe( return probe_added; } -static const probe_info_s *scan_for_devices(void) +static const probe_info_s *scan_for_devices(bmp_info_s *info) { /* * If we are running on Windows the proprietary FTD2XX library is used @@ -300,7 +335,7 @@ static const probe_info_s *scan_for_devices(void) #endif libusb_device **device_list; - const ssize_t cnt = libusb_get_device_list(info.libusb_ctx, &device_list); + const ssize_t cnt = libusb_get_device_list(info->libusb_ctx, &device_list); if (cnt <= 0) return probe_info_correct_order(probe_list); /* Parse the list of USB devices found */ @@ -314,7 +349,7 @@ static const probe_info_s *scan_for_devices(void) } 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); + process_cmsis_interface_probe(&device_descriptor, device, &probe_list, info); } } libusb_free_device_list(device_list, (int)cnt); @@ -333,7 +368,7 @@ int find_debuggers(bmda_cli_options_s *cl_opts, bmp_info_s *info) } /* Scan for all possible probes on the system */ - const probe_info_s *probe_list = scan_for_devices(); + const probe_info_s *probe_list = scan_for_devices(info); if (!probe_list) { DEBUG_WARN("No probes found\n"); return -1; @@ -360,6 +395,7 @@ int find_debuggers(bmda_cli_options_s *cl_opts, bmp_info_s *info) } /* We found a matching probe, populate bmp_info_s and signal success */ + DEBUG_WARN("Using: %-20s %-20s %-25s %s\n", probe->product, probe->serial, probe->manufacturer, probe->version); probe_info_to_bmp_info(probe, info); /* If the selected probe is an FTDI adapter try to resolve the adaptor type */ if (probe->vid == VENDOR_ID_FTDI && !ftdi_lookup_adapter_from_vid_pid(cl_opts, probe)) { From 032526b97b576e19aab471e1652a1dbda6bd057b Mon Sep 17 00:00:00 2001 From: Sid Price Date: Mon, 7 Nov 2022 15:38:59 -0700 Subject: [PATCH 14/25] hosted/ftdi_bmp: Add processing of FTDI adapter name to adapter lookup. --- src/platforms/hosted/ftdi_bmp.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/platforms/hosted/ftdi_bmp.c b/src/platforms/hosted/ftdi_bmp.c index b3d2b9a6fbf..de9cfe2f227 100644 --- a/src/platforms/hosted/ftdi_bmp.c +++ b/src/platforms/hosted/ftdi_bmp.c @@ -386,8 +386,13 @@ const cable_desc_s cable_desc[] = { */ bool ftdi_lookup_adapter_from_vid_pid(bmda_cli_options_s *const cl_opts, const probe_info_s *const probe) { + /* If the user entered an adapter name use it */ + if (cl_opts->opt_cable) + return true; + size_t adapter_count = 0; const cable_desc_s *selection = NULL; + for (const cable_desc_s *cable = &cable_desc[0]; cable->vendor; ++cable) { if (cable->vendor == probe->vid && cable->product == probe->pid) { ++adapter_count; From 9a25ab788a9240c0a81120e9944ea24821a70dd1 Mon Sep 17 00:00:00 2001 From: Sid Price Date: Mon, 7 Nov 2022 15:44:20 -0700 Subject: [PATCH 15/25] hosted/cli: Remove leading whitesapce from 'c' option argument --- src/platforms/hosted/cli.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/platforms/hosted/cli.c b/src/platforms/hosted/cli.c index 78b1c63e703..dabb279f2c5 100644 --- a/src/platforms/hosted/cli.c +++ b/src/platforms/hosted/cli.c @@ -243,8 +243,12 @@ void cl_init(bmda_cli_options_s *opt, int argc, char **argv) switch (option) { case 'c': - if (optarg) - opt->opt_cable = optarg; + if (optarg) { + char *opt_pointer = optarg; + while (opt_pointer && *opt_pointer == ' ') + opt_pointer++; + opt->opt_cable = opt_pointer; + } break; case 'h': bmda_debug_flags |= BMD_DEBUG_INFO; From 40d4cf4591430c9c4998366210a1e831a7d2470e Mon Sep 17 00:00:00 2001 From: Sid Price Date: Mon, 20 Mar 2023 10:51:44 -0600 Subject: [PATCH 16/25] 3rdparty/ftdi: Add FTDI FTD2xx library and header files --- 3rdparty/ftdi/amd64/ftd2xx.dll | Bin 0 -> 647616 bytes 3rdparty/ftdi/amd64/ftd2xx.lib | Bin 0 -> 20260 bytes 3rdparty/ftdi/ftd2xx.h | 1295 ++++++++++++++++++++++++++++++++ 3rdparty/ftdi/i386/ftd2xx.dll | Bin 0 -> 392128 bytes 3rdparty/ftdi/i386/ftd2xx.lib | Bin 0 -> 22190 bytes 5 files changed, 1295 insertions(+) create mode 100644 3rdparty/ftdi/amd64/ftd2xx.dll create mode 100644 3rdparty/ftdi/amd64/ftd2xx.lib create mode 100644 3rdparty/ftdi/ftd2xx.h create mode 100644 3rdparty/ftdi/i386/ftd2xx.dll create mode 100644 3rdparty/ftdi/i386/ftd2xx.lib diff --git a/3rdparty/ftdi/amd64/ftd2xx.dll b/3rdparty/ftdi/amd64/ftd2xx.dll new file mode 100644 index 0000000000000000000000000000000000000000..bd6246a50c0ee99444210eb1580b5e27a828ac81 GIT binary patch literal 647616 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�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�haNX@8fd4vGhl#gXVr{ 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
W?7npcP3*ol?7S*= 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 J!^WxH)BCVt^KBs>PYu{+SB-EFnonF&G+ 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 literal 0 HcmV?d00001 diff --git a/3rdparty/ftdi/ftd2xx.h b/3rdparty/ftdi/ftd2xx.h new file mode 100644 index 00000000000..e7a0b652beb --- /dev/null +++ b/3rdparty/ftdi/ftd2xx.h @@ -0,0 +1,1295 @@ +/*++ + +Copyright © 2001-2021 Future Technology Devices International Limited + +THIS SOFTWARE IS PROVIDED BY FUTURE TECHNOLOGY DEVICES INTERNATIONAL LIMITED "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +FUTURE TECHNOLOGY DEVICES INTERNATIONAL LIMITED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +OF SUBSTITUTE GOODS OR SERVICES LOSS OF USE, DATA, OR PROFITS OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR +TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +FTDI DRIVERS MAY BE USED ONLY IN CONJUNCTION WITH PRODUCTS BASED ON FTDI PARTS. + +FTDI DRIVERS MAY BE DISTRIBUTED IN ANY FORM AS LONG AS LICENSE INFORMATION IS NOT MODIFIED. + +IF A CUSTOM VENDOR ID AND/OR PRODUCT ID OR DESCRIPTION STRING ARE USED, IT IS THE +RESPONSIBILITY OF THE PRODUCT MANUFACTURER TO MAINTAIN ANY CHANGES AND SUBSEQUENT WHQL +RE-CERTIFICATION AS A RESULT OF MAKING THESE CHANGES. + + +Module Name: + +ftd2xx.h + +Abstract: + +Native USB device driver for FTDI FT232x, FT245x, FT2232x, FT4232x, FT2233H and FT4233H devices +FTD2XX library definitions + +Environment: + +kernel & user mode + + +--*/ + +#ifndef FTD2XX_H +#define FTD2XX_H + +#ifdef _WIN32 +// Compiling on Windows +#include + +// The following ifdef block is the standard way of creating macros +// which make exporting from a DLL simpler. All files within this DLL +// are compiled with the FTD2XX_EXPORTS symbol defined on the command line. +// This symbol should not be defined on any project that uses this DLL. +// This way any other project whose source files include this file see +// FTD2XX_API functions as being imported from a DLL, whereas this DLL +// sees symbols defined with this macro as being exported. + +#ifdef FTD2XX_EXPORTS +#define FTD2XX_API __declspec(dllexport) +#elif defined(FTD2XX_STATIC) +// Avoid decorations when linking statically to D2XX. +#define FTD2XX_API +// Static D2XX depends on these Windows libs: +#pragma comment(lib, "setupapi.lib") +#pragma comment(lib, "advapi32.lib") +#pragma comment(lib, "user32.lib") +#else +#define FTD2XX_API __declspec(dllimport) +#endif + +#else // _WIN32 +// Compiling on non-Windows platform. +#include "WinTypes.h" +// No decorations needed. +#define FTD2XX_API + +#endif // _WIN32 + +typedef PVOID FT_HANDLE; +typedef ULONG FT_STATUS; + +// +// Device status +// +enum { + FT_OK, + FT_INVALID_HANDLE, + FT_DEVICE_NOT_FOUND, + FT_DEVICE_NOT_OPENED, + FT_IO_ERROR, + FT_INSUFFICIENT_RESOURCES, + FT_INVALID_PARAMETER, + FT_INVALID_BAUD_RATE, + + FT_DEVICE_NOT_OPENED_FOR_ERASE, + FT_DEVICE_NOT_OPENED_FOR_WRITE, + FT_FAILED_TO_WRITE_DEVICE, + FT_EEPROM_READ_FAILED, + FT_EEPROM_WRITE_FAILED, + FT_EEPROM_ERASE_FAILED, + FT_EEPROM_NOT_PRESENT, + FT_EEPROM_NOT_PROGRAMMED, + FT_INVALID_ARGS, + FT_NOT_SUPPORTED, + FT_OTHER_ERROR, + FT_DEVICE_LIST_NOT_READY, +}; + +#define FT_SUCCESS(status) ((status) == FT_OK) + +// +// FT_OpenEx Flags +// + +#define FT_OPEN_BY_SERIAL_NUMBER 1 +#define FT_OPEN_BY_DESCRIPTION 2 +#define FT_OPEN_BY_LOCATION 4 + +#define FT_OPEN_MASK (FT_OPEN_BY_SERIAL_NUMBER | FT_OPEN_BY_DESCRIPTION | FT_OPEN_BY_LOCATION) + +// +// FT_ListDevices Flags (used in conjunction with FT_OpenEx Flags +// + +#define FT_LIST_NUMBER_ONLY 0x80000000 +#define FT_LIST_BY_INDEX 0x40000000 +#define FT_LIST_ALL 0x20000000 + +#define FT_LIST_MASK (FT_LIST_NUMBER_ONLY | FT_LIST_BY_INDEX | FT_LIST_ALL) + +// +// Baud Rates +// + +#define FT_BAUD_300 300 +#define FT_BAUD_600 600 +#define FT_BAUD_1200 1200 +#define FT_BAUD_2400 2400 +#define FT_BAUD_4800 4800 +#define FT_BAUD_9600 9600 +#define FT_BAUD_14400 14400 +#define FT_BAUD_19200 19200 +#define FT_BAUD_38400 38400 +#define FT_BAUD_57600 57600 +#define FT_BAUD_115200 115200 +#define FT_BAUD_230400 230400 +#define FT_BAUD_460800 460800 +#define FT_BAUD_921600 921600 + +// +// Word Lengths +// + +#define FT_BITS_8 (UCHAR)8 +#define FT_BITS_7 (UCHAR)7 + +// +// Stop Bits +// + +#define FT_STOP_BITS_1 (UCHAR)0 +#define FT_STOP_BITS_2 (UCHAR)2 + +// +// Parity +// + +#define FT_PARITY_NONE (UCHAR)0 +#define FT_PARITY_ODD (UCHAR)1 +#define FT_PARITY_EVEN (UCHAR)2 +#define FT_PARITY_MARK (UCHAR)3 +#define FT_PARITY_SPACE (UCHAR)4 + +// +// Flow Control +// + +#define FT_FLOW_NONE 0x0000 +#define FT_FLOW_RTS_CTS 0x0100 +#define FT_FLOW_DTR_DSR 0x0200 +#define FT_FLOW_XON_XOFF 0x0400 + +// +// Purge rx and tx buffers +// +#define FT_PURGE_RX 1 +#define FT_PURGE_TX 2 + +// +// Events +// + +typedef void (*PFT_EVENT_HANDLER)(DWORD, DWORD); + +#define FT_EVENT_RXCHAR 1 +#define FT_EVENT_MODEM_STATUS 2 +#define FT_EVENT_LINE_STATUS 4 + +// +// Timeouts +// + +#define FT_DEFAULT_RX_TIMEOUT 300 +#define FT_DEFAULT_TX_TIMEOUT 300 + +// +// Device types +// + +typedef ULONG FT_DEVICE; + +enum { + FT_DEVICE_BM, + FT_DEVICE_AM, + FT_DEVICE_100AX, + FT_DEVICE_UNKNOWN, + FT_DEVICE_2232C, + FT_DEVICE_232R, + FT_DEVICE_2232H, + FT_DEVICE_4232H, + FT_DEVICE_232H, + FT_DEVICE_X_SERIES, + FT_DEVICE_4222H_0, + FT_DEVICE_4222H_1_2, + FT_DEVICE_4222H_3, + FT_DEVICE_4222_PROG, + FT_DEVICE_900, + FT_DEVICE_930, + FT_DEVICE_UMFTPD3A, + FT_DEVICE_2233HP, + FT_DEVICE_4233HP, + FT_DEVICE_2232HP, + FT_DEVICE_4232HP, + FT_DEVICE_233HP, + FT_DEVICE_232HP, + FT_DEVICE_2232HA, + FT_DEVICE_4232HA, + FT_DEVICE_232RN, +}; + +// +// Bit Modes +// + +#define FT_BITMODE_RESET 0x00 +#define FT_BITMODE_ASYNC_BITBANG 0x01 +#define FT_BITMODE_MPSSE 0x02 +#define FT_BITMODE_SYNC_BITBANG 0x04 +#define FT_BITMODE_MCU_HOST 0x08 +#define FT_BITMODE_FAST_SERIAL 0x10 +#define FT_BITMODE_CBUS_BITBANG 0x20 +#define FT_BITMODE_SYNC_FIFO 0x40 + +// +// FT232R CBUS Options EEPROM values +// + +#define FT_232R_CBUS_TXDEN 0x00 // Tx Data Enable +#define FT_232R_CBUS_PWRON 0x01 // Power On +#define FT_232R_CBUS_RXLED 0x02 // Rx LED +#define FT_232R_CBUS_TXLED 0x03 // Tx LED +#define FT_232R_CBUS_TXRXLED 0x04 // Tx and Rx LED +#define FT_232R_CBUS_SLEEP 0x05 // Sleep +#define FT_232R_CBUS_CLK48 0x06 // 48MHz clock +#define FT_232R_CBUS_CLK24 0x07 // 24MHz clock +#define FT_232R_CBUS_CLK12 0x08 // 12MHz clock +#define FT_232R_CBUS_CLK6 0x09 // 6MHz clock +#define FT_232R_CBUS_IOMODE 0x0a // IO Mode for CBUS bit-bang +#define FT_232R_CBUS_BITBANG_WR 0x0b // Bit-bang write strobe +#define FT_232R_CBUS_BITBANG_RD 0x0c // Bit-bang read strobe + +// +// FT232H CBUS Options EEPROM values +// + +#define FT_232H_CBUS_TRISTATE 0x00 // Tristate +#define FT_232H_CBUS_TXLED 0x01 // Tx LED +#define FT_232H_CBUS_RXLED 0x02 // Rx LED +#define FT_232H_CBUS_TXRXLED 0x03 // Tx and Rx LED +#define FT_232H_CBUS_PWREN 0x04 // Power Enable +#define FT_232H_CBUS_SLEEP 0x05 // Sleep +#define FT_232H_CBUS_DRIVE_0 0x06 // Drive pin to logic 0 +#define FT_232H_CBUS_DRIVE_1 0x07 // Drive pin to logic 1 +#define FT_232H_CBUS_IOMODE 0x08 // IO Mode for CBUS bit-bang +#define FT_232H_CBUS_TXDEN 0x09 // Tx Data Enable +#define FT_232H_CBUS_CLK30 0x0a // 30MHz clock +#define FT_232H_CBUS_CLK15 0x0b // 15MHz clock +#define FT_232H_CBUS_CLK7_5 0x0c // 7.5MHz clock + +// +// FT X Series CBUS Options EEPROM values +// + +#define FT_X_SERIES_CBUS_TRISTATE 0x00 // Tristate +#define FT_X_SERIES_CBUS_TXLED 0x01 // Tx LED +#define FT_X_SERIES_CBUS_RXLED 0x02 // Rx LED +#define FT_X_SERIES_CBUS_TXRXLED 0x03 // Tx and Rx LED +#define FT_X_SERIES_CBUS_PWREN 0x04 // Power Enable +#define FT_X_SERIES_CBUS_SLEEP 0x05 // Sleep +#define FT_X_SERIES_CBUS_DRIVE_0 0x06 // Drive pin to logic 0 +#define FT_X_SERIES_CBUS_DRIVE_1 0x07 // Drive pin to logic 1 +#define FT_X_SERIES_CBUS_IOMODE 0x08 // IO Mode for CBUS bit-bang +#define FT_X_SERIES_CBUS_TXDEN 0x09 // Tx Data Enable +#define FT_X_SERIES_CBUS_CLK24 0x0a // 24MHz clock +#define FT_X_SERIES_CBUS_CLK12 0x0b // 12MHz clock +#define FT_X_SERIES_CBUS_CLK6 0x0c // 6MHz clock +#define FT_X_SERIES_CBUS_BCD_CHARGER 0x0d // Battery charger detected +#define FT_X_SERIES_CBUS_BCD_CHARGER_N 0x0e // Battery charger detected inverted +#define FT_X_SERIES_CBUS_I2C_TXE 0x0f // I2C Tx empty +#define FT_X_SERIES_CBUS_I2C_RXF 0x10 // I2C Rx full +#define FT_X_SERIES_CBUS_VBUS_SENSE 0x11 // Detect VBUS +#define FT_X_SERIES_CBUS_BITBANG_WR 0x12 // Bit-bang write strobe +#define FT_X_SERIES_CBUS_BITBANG_RD 0x13 // Bit-bang read strobe +#define FT_X_SERIES_CBUS_TIMESTAMP 0x14 // Toggle output when a USB SOF token is received +#define FT_X_SERIES_CBUS_KEEP_AWAKE 0x15 // + +// Driver types +#define FT_DRIVER_TYPE_D2XX 0 +#define FT_DRIVER_TYPE_VCP 1 + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef FTD2XX_STATIC +FTD2XX_API +FT_STATUS WINAPI FT_Initialise(void); + +FTD2XX_API +void WINAPI FT_Finalise(void); +#endif // FTD2XX_STATIC + +FTD2XX_API +FT_STATUS WINAPI FT_Open(int deviceNumber, FT_HANDLE *pHandle); + +FTD2XX_API +FT_STATUS WINAPI FT_OpenEx(PVOID pArg1, DWORD Flags, FT_HANDLE *pHandle); + +FTD2XX_API +FT_STATUS WINAPI FT_ListDevices(PVOID pArg1, PVOID pArg2, DWORD Flags); + +FTD2XX_API +FT_STATUS WINAPI FT_Close(FT_HANDLE ftHandle); + +FTD2XX_API +FT_STATUS WINAPI FT_Read(FT_HANDLE ftHandle, LPVOID lpBuffer, DWORD dwBytesToRead, LPDWORD lpBytesReturned); + +FTD2XX_API +FT_STATUS WINAPI FT_Write(FT_HANDLE ftHandle, LPVOID lpBuffer, DWORD dwBytesToWrite, LPDWORD lpBytesWritten); + +FTD2XX_API +FT_STATUS WINAPI FT_IoCtl(FT_HANDLE ftHandle, DWORD dwIoControlCode, LPVOID lpInBuf, DWORD nInBufSize, LPVOID lpOutBuf, + DWORD nOutBufSize, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped); + +FTD2XX_API +FT_STATUS WINAPI FT_SetBaudRate(FT_HANDLE ftHandle, ULONG BaudRate); + +FTD2XX_API +FT_STATUS WINAPI FT_SetDivisor(FT_HANDLE ftHandle, USHORT Divisor); + +FTD2XX_API +FT_STATUS WINAPI FT_SetDataCharacteristics(FT_HANDLE ftHandle, UCHAR WordLength, UCHAR StopBits, UCHAR Parity); + +FTD2XX_API +FT_STATUS WINAPI FT_SetFlowControl(FT_HANDLE ftHandle, USHORT FlowControl, UCHAR XonChar, UCHAR XoffChar); + +FTD2XX_API +FT_STATUS WINAPI FT_ResetDevice(FT_HANDLE ftHandle); + +FTD2XX_API +FT_STATUS WINAPI FT_SetDtr(FT_HANDLE ftHandle); + +FTD2XX_API +FT_STATUS WINAPI FT_ClrDtr(FT_HANDLE ftHandle); + +FTD2XX_API +FT_STATUS WINAPI FT_SetRts(FT_HANDLE ftHandle); + +FTD2XX_API +FT_STATUS WINAPI FT_ClrRts(FT_HANDLE ftHandle); + +FTD2XX_API +FT_STATUS WINAPI FT_GetModemStatus(FT_HANDLE ftHandle, ULONG *pModemStatus); + +FTD2XX_API +FT_STATUS WINAPI FT_SetChars( + FT_HANDLE ftHandle, UCHAR EventChar, UCHAR EventCharEnabled, UCHAR ErrorChar, UCHAR ErrorCharEnabled); + +FTD2XX_API +FT_STATUS WINAPI FT_Purge(FT_HANDLE ftHandle, ULONG Mask); + +FTD2XX_API +FT_STATUS WINAPI FT_SetTimeouts(FT_HANDLE ftHandle, ULONG ReadTimeout, ULONG WriteTimeout); + +FTD2XX_API +FT_STATUS WINAPI FT_GetQueueStatus(FT_HANDLE ftHandle, DWORD *dwRxBytes); + +FTD2XX_API +FT_STATUS WINAPI FT_SetEventNotification(FT_HANDLE ftHandle, DWORD Mask, PVOID Param); + +FTD2XX_API +FT_STATUS WINAPI FT_GetStatus(FT_HANDLE ftHandle, DWORD *dwRxBytes, DWORD *dwTxBytes, DWORD *dwEventDWord); + +FTD2XX_API +FT_STATUS WINAPI FT_SetBreakOn(FT_HANDLE ftHandle); + +FTD2XX_API +FT_STATUS WINAPI FT_SetBreakOff(FT_HANDLE ftHandle); + +FTD2XX_API +FT_STATUS WINAPI FT_SetWaitMask(FT_HANDLE ftHandle, DWORD Mask); + +FTD2XX_API +FT_STATUS WINAPI FT_WaitOnMask(FT_HANDLE ftHandle, DWORD *Mask); + +FTD2XX_API +FT_STATUS WINAPI FT_GetEventStatus(FT_HANDLE ftHandle, DWORD *dwEventDWord); + +FTD2XX_API +FT_STATUS WINAPI FT_ReadEE(FT_HANDLE ftHandle, DWORD dwWordOffset, LPWORD lpwValue); + +FTD2XX_API +FT_STATUS WINAPI FT_WriteEE(FT_HANDLE ftHandle, DWORD dwWordOffset, WORD wValue); + +FTD2XX_API +FT_STATUS WINAPI FT_EraseEE(FT_HANDLE ftHandle); + +// +// structure to hold program data for FT_EE_Program, FT_EE_ProgramEx, FT_EE_Read +// and FT_EE_ReadEx functions +// +typedef struct ft_program_data { + DWORD Signature1; // Header - must be 0x00000000 + DWORD Signature2; // Header - must be 0xffffffff + DWORD Version; // Header - FT_PROGRAM_DATA version + // 0 = original + // 1 = FT2232 extensions + // 2 = FT232R extensions + // 3 = FT2232H extensions + // 4 = FT4232H extensions + // 5 = FT232H extensions + + WORD VendorId; // 0x0403 + WORD ProductId; // 0x6001 + char *Manufacturer; // "FTDI" + char *ManufacturerId; // "FT" + char *Description; // "USB HS Serial Converter" + char *SerialNumber; // "FT000001" if fixed, or NULL + WORD MaxPower; // 0 < MaxPower <= 500 + WORD PnP; // 0 = disabled, 1 = enabled + WORD SelfPowered; // 0 = bus powered, 1 = self powered + WORD RemoteWakeup; // 0 = not capable, 1 = capable + // + // Rev4 (FT232B) extensions + // + UCHAR Rev4; // non-zero if Rev4 chip, zero otherwise + UCHAR IsoIn; // non-zero if in endpoint is isochronous + UCHAR IsoOut; // non-zero if out endpoint is isochronous + UCHAR PullDownEnable; // non-zero if pull down enabled + UCHAR SerNumEnable; // non-zero if serial number to be used + UCHAR USBVersionEnable; // non-zero if chip uses USBVersion + WORD USBVersion; // BCD (0x0200 => USB2) + // + // Rev 5 (FT2232) extensions + // + UCHAR Rev5; // non-zero if Rev5 chip, zero otherwise + UCHAR IsoInA; // non-zero if in endpoint is isochronous + UCHAR IsoInB; // non-zero if in endpoint is isochronous + UCHAR IsoOutA; // non-zero if out endpoint is isochronous + UCHAR IsoOutB; // non-zero if out endpoint is isochronous + UCHAR PullDownEnable5; // non-zero if pull down enabled + UCHAR SerNumEnable5; // non-zero if serial number to be used + UCHAR USBVersionEnable5; // non-zero if chip uses USBVersion + WORD USBVersion5; // BCD (0x0200 => USB2) + UCHAR AIsHighCurrent; // non-zero if interface is high current + UCHAR BIsHighCurrent; // non-zero if interface is high current + UCHAR IFAIsFifo; // non-zero if interface is 245 FIFO + UCHAR IFAIsFifoTar; // non-zero if interface is 245 FIFO CPU target + UCHAR IFAIsFastSer; // non-zero if interface is Fast serial + UCHAR AIsVCP; // non-zero if interface is to use VCP drivers + UCHAR IFBIsFifo; // non-zero if interface is 245 FIFO + UCHAR IFBIsFifoTar; // non-zero if interface is 245 FIFO CPU target + UCHAR IFBIsFastSer; // non-zero if interface is Fast serial + UCHAR BIsVCP; // non-zero if interface is to use VCP drivers + // + // Rev 6 (FT232R) extensions + // + UCHAR UseExtOsc; // Use External Oscillator + UCHAR HighDriveIOs; // High Drive I/Os + UCHAR EndpointSize; // Endpoint size + UCHAR PullDownEnableR; // non-zero if pull down enabled + UCHAR SerNumEnableR; // non-zero if serial number to be used + UCHAR InvertTXD; // non-zero if invert TXD + UCHAR InvertRXD; // non-zero if invert RXD + UCHAR InvertRTS; // non-zero if invert RTS + UCHAR InvertCTS; // non-zero if invert CTS + UCHAR InvertDTR; // non-zero if invert DTR + UCHAR InvertDSR; // non-zero if invert DSR + UCHAR InvertDCD; // non-zero if invert DCD + UCHAR InvertRI; // non-zero if invert RI + UCHAR Cbus0; // Cbus Mux control + UCHAR Cbus1; // Cbus Mux control + UCHAR Cbus2; // Cbus Mux control + UCHAR Cbus3; // Cbus Mux control + UCHAR Cbus4; // Cbus Mux control + UCHAR RIsD2XX; // non-zero if using D2XX driver + // + // Rev 7 (FT2232H) Extensions + // + UCHAR PullDownEnable7; // non-zero if pull down enabled + UCHAR SerNumEnable7; // non-zero if serial number to be used + UCHAR ALSlowSlew; // non-zero if AL pins have slow slew + UCHAR ALSchmittInput; // non-zero if AL pins are Schmitt input + UCHAR ALDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR AHSlowSlew; // non-zero if AH pins have slow slew + UCHAR AHSchmittInput; // non-zero if AH pins are Schmitt input + UCHAR AHDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR BLSlowSlew; // non-zero if BL pins have slow slew + UCHAR BLSchmittInput; // non-zero if BL pins are Schmitt input + UCHAR BLDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR BHSlowSlew; // non-zero if BH pins have slow slew + UCHAR BHSchmittInput; // non-zero if BH pins are Schmitt input + UCHAR BHDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR IFAIsFifo7; // non-zero if interface is 245 FIFO + UCHAR IFAIsFifoTar7; // non-zero if interface is 245 FIFO CPU target + UCHAR IFAIsFastSer7; // non-zero if interface is Fast serial + UCHAR AIsVCP7; // non-zero if interface is to use VCP drivers + UCHAR IFBIsFifo7; // non-zero if interface is 245 FIFO + UCHAR IFBIsFifoTar7; // non-zero if interface is 245 FIFO CPU target + UCHAR IFBIsFastSer7; // non-zero if interface is Fast serial + UCHAR BIsVCP7; // non-zero if interface is to use VCP drivers + UCHAR PowerSaveEnable; // non-zero if using BCBUS7 to save power for self-powered designs + // + // Rev 8 (FT4232H) Extensions + // + UCHAR PullDownEnable8; // non-zero if pull down enabled + UCHAR SerNumEnable8; // non-zero if serial number to be used + UCHAR ASlowSlew; // non-zero if A pins have slow slew + UCHAR ASchmittInput; // non-zero if A pins are Schmitt input + UCHAR ADriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR BSlowSlew; // non-zero if B pins have slow slew + UCHAR BSchmittInput; // non-zero if B pins are Schmitt input + UCHAR BDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR CSlowSlew; // non-zero if C pins have slow slew + UCHAR CSchmittInput; // non-zero if C pins are Schmitt input + UCHAR CDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR DSlowSlew; // non-zero if D pins have slow slew + UCHAR DSchmittInput; // non-zero if D pins are Schmitt input + UCHAR DDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR ARIIsTXDEN; // non-zero if port A uses RI as RS485 TXDEN + UCHAR BRIIsTXDEN; // non-zero if port B uses RI as RS485 TXDEN + UCHAR CRIIsTXDEN; // non-zero if port C uses RI as RS485 TXDEN + UCHAR DRIIsTXDEN; // non-zero if port D uses RI as RS485 TXDEN + UCHAR AIsVCP8; // non-zero if interface is to use VCP drivers + UCHAR BIsVCP8; // non-zero if interface is to use VCP drivers + UCHAR CIsVCP8; // non-zero if interface is to use VCP drivers + UCHAR DIsVCP8; // non-zero if interface is to use VCP drivers + // + // Rev 9 (FT232H) Extensions + // + UCHAR PullDownEnableH; // non-zero if pull down enabled + UCHAR SerNumEnableH; // non-zero if serial number to be used + UCHAR ACSlowSlewH; // non-zero if AC pins have slow slew + UCHAR ACSchmittInputH; // non-zero if AC pins are Schmitt input + UCHAR ACDriveCurrentH; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR ADSlowSlewH; // non-zero if AD pins have slow slew + UCHAR ADSchmittInputH; // non-zero if AD pins are Schmitt input + UCHAR ADDriveCurrentH; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR Cbus0H; // Cbus Mux control + UCHAR Cbus1H; // Cbus Mux control + UCHAR Cbus2H; // Cbus Mux control + UCHAR Cbus3H; // Cbus Mux control + UCHAR Cbus4H; // Cbus Mux control + UCHAR Cbus5H; // Cbus Mux control + UCHAR Cbus6H; // Cbus Mux control + UCHAR Cbus7H; // Cbus Mux control + UCHAR Cbus8H; // Cbus Mux control + UCHAR Cbus9H; // Cbus Mux control + UCHAR IsFifoH; // non-zero if interface is 245 FIFO + UCHAR IsFifoTarH; // non-zero if interface is 245 FIFO CPU target + UCHAR IsFastSerH; // non-zero if interface is Fast serial + UCHAR IsFT1248H; // non-zero if interface is FT1248 + UCHAR FT1248CpolH; // FT1248 clock polarity - clock idle high (1) or clock idle low (0) + UCHAR FT1248LsbH; // FT1248 data is LSB (1) or MSB (0) + UCHAR FT1248FlowControlH; // FT1248 flow control enable + UCHAR IsVCPH; // non-zero if interface is to use VCP drivers + UCHAR PowerSaveEnableH; // non-zero if using ACBUS7 to save power for self-powered designs + +} FT_PROGRAM_DATA, *PFT_PROGRAM_DATA; + +FTD2XX_API +FT_STATUS WINAPI FT_EE_Program(FT_HANDLE ftHandle, PFT_PROGRAM_DATA pData); + +FTD2XX_API +FT_STATUS WINAPI FT_EE_ProgramEx(FT_HANDLE ftHandle, PFT_PROGRAM_DATA pData, char *Manufacturer, char *ManufacturerId, + char *Description, char *SerialNumber); + +FTD2XX_API +FT_STATUS WINAPI FT_EE_Read(FT_HANDLE ftHandle, PFT_PROGRAM_DATA pData); + +FTD2XX_API +FT_STATUS WINAPI FT_EE_ReadEx(FT_HANDLE ftHandle, PFT_PROGRAM_DATA pData, char *Manufacturer, char *ManufacturerId, + char *Description, char *SerialNumber); + +FTD2XX_API +FT_STATUS WINAPI FT_EE_UASize(FT_HANDLE ftHandle, LPDWORD lpdwSize); + +FTD2XX_API +FT_STATUS WINAPI FT_EE_UAWrite(FT_HANDLE ftHandle, PUCHAR pucData, DWORD dwDataLen); + +FTD2XX_API +FT_STATUS WINAPI FT_EE_UARead(FT_HANDLE ftHandle, PUCHAR pucData, DWORD dwDataLen, LPDWORD lpdwBytesRead); + +typedef struct ft_eeprom_header { + FT_DEVICE deviceType; // FTxxxx device type to be programmed + // Device descriptor options + WORD VendorId; // 0x0403 + WORD ProductId; // 0x6001 + UCHAR SerNumEnable; // non-zero if serial number to be used + // Config descriptor options + WORD MaxPower; // 0 < MaxPower <= 500 + UCHAR SelfPowered; // 0 = bus powered, 1 = self powered + UCHAR RemoteWakeup; // 0 = not capable, 1 = capable + // Hardware options + UCHAR PullDownEnable; // non-zero if pull down in suspend enabled +} FT_EEPROM_HEADER, *PFT_EEPROM_HEADER; + +// FT232B EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program +typedef struct ft_eeprom_232b { + // Common header + FT_EEPROM_HEADER common; // common elements for all device EEPROMs +} FT_EEPROM_232B, *PFT_EEPROM_232B; + +// FT2232 EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program +typedef struct ft_eeprom_2232 { + // Common header + FT_EEPROM_HEADER common; // common elements for all device EEPROMs + // Drive options + UCHAR AIsHighCurrent; // non-zero if interface is high current + UCHAR BIsHighCurrent; // non-zero if interface is high current + // Hardware options + UCHAR AIsFifo; // non-zero if interface is 245 FIFO + UCHAR AIsFifoTar; // non-zero if interface is 245 FIFO CPU target + UCHAR AIsFastSer; // non-zero if interface is Fast serial + UCHAR BIsFifo; // non-zero if interface is 245 FIFO + UCHAR BIsFifoTar; // non-zero if interface is 245 FIFO CPU target + UCHAR BIsFastSer; // non-zero if interface is Fast serial + // Driver option + UCHAR ADriverType; // non-zero if interface is to use VCP drivers + UCHAR BDriverType; // non-zero if interface is to use VCP drivers +} FT_EEPROM_2232, *PFT_EEPROM_2232; + +// FT232R EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program +typedef struct ft_eeprom_232r { + // Common header + FT_EEPROM_HEADER common; // common elements for all device EEPROMs + // Drive options + UCHAR IsHighCurrent; // non-zero if interface is high current + // Hardware options + UCHAR UseExtOsc; // Use External Oscillator + UCHAR InvertTXD; // non-zero if invert TXD + UCHAR InvertRXD; // non-zero if invert RXD + UCHAR InvertRTS; // non-zero if invert RTS + UCHAR InvertCTS; // non-zero if invert CTS + UCHAR InvertDTR; // non-zero if invert DTR + UCHAR InvertDSR; // non-zero if invert DSR + UCHAR InvertDCD; // non-zero if invert DCD + UCHAR InvertRI; // non-zero if invert RI + UCHAR Cbus0; // Cbus Mux control + UCHAR Cbus1; // Cbus Mux control + UCHAR Cbus2; // Cbus Mux control + UCHAR Cbus3; // Cbus Mux control + UCHAR Cbus4; // Cbus Mux control + // Driver option + UCHAR DriverType; // non-zero if using D2XX driver +} FT_EEPROM_232R, *PFT_EEPROM_232R; + +// FT2232H EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program +typedef struct ft_eeprom_2232h { + // Common header + FT_EEPROM_HEADER common; // common elements for all device EEPROMs + // Drive options + UCHAR ALSlowSlew; // non-zero if AL pins have slow slew + UCHAR ALSchmittInput; // non-zero if AL pins are Schmitt input + UCHAR ALDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR AHSlowSlew; // non-zero if AH pins have slow slew + UCHAR AHSchmittInput; // non-zero if AH pins are Schmitt input + UCHAR AHDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR BLSlowSlew; // non-zero if BL pins have slow slew + UCHAR BLSchmittInput; // non-zero if BL pins are Schmitt input + UCHAR BLDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR BHSlowSlew; // non-zero if BH pins have slow slew + UCHAR BHSchmittInput; // non-zero if BH pins are Schmitt input + UCHAR BHDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + // Hardware options + UCHAR AIsFifo; // non-zero if interface is 245 FIFO + UCHAR AIsFifoTar; // non-zero if interface is 245 FIFO CPU target + UCHAR AIsFastSer; // non-zero if interface is Fast serial + UCHAR BIsFifo; // non-zero if interface is 245 FIFO + UCHAR BIsFifoTar; // non-zero if interface is 245 FIFO CPU target + UCHAR BIsFastSer; // non-zero if interface is Fast serial + UCHAR PowerSaveEnable; // non-zero if using BCBUS7 to save power for self-powered designs + // Driver option + UCHAR ADriverType; // non-zero if interface is to use VCP drivers + UCHAR BDriverType; // non-zero if interface is to use VCP drivers +} FT_EEPROM_2232H, *PFT_EEPROM_2232H; + +// FT4232H EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program +typedef struct ft_eeprom_4232h { + // Common header + FT_EEPROM_HEADER common; // common elements for all device EEPROMs + // Drive options + UCHAR ASlowSlew; // non-zero if A pins have slow slew + UCHAR ASchmittInput; // non-zero if A pins are Schmitt input + UCHAR ADriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR BSlowSlew; // non-zero if B pins have slow slew + UCHAR BSchmittInput; // non-zero if B pins are Schmitt input + UCHAR BDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR CSlowSlew; // non-zero if C pins have slow slew + UCHAR CSchmittInput; // non-zero if C pins are Schmitt input + UCHAR CDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR DSlowSlew; // non-zero if D pins have slow slew + UCHAR DSchmittInput; // non-zero if D pins are Schmitt input + UCHAR DDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + // Hardware options + UCHAR ARIIsTXDEN; // non-zero if port A uses RI as RS485 TXDEN + UCHAR BRIIsTXDEN; // non-zero if port B uses RI as RS485 TXDEN + UCHAR CRIIsTXDEN; // non-zero if port C uses RI as RS485 TXDEN + UCHAR DRIIsTXDEN; // non-zero if port D uses RI as RS485 TXDEN + // Driver option + UCHAR ADriverType; // non-zero if interface is to use VCP drivers + UCHAR BDriverType; // non-zero if interface is to use VCP drivers + UCHAR CDriverType; // non-zero if interface is to use VCP drivers + UCHAR DDriverType; // non-zero if interface is to use VCP drivers +} FT_EEPROM_4232H, *PFT_EEPROM_4232H; + +// FT232H EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program +typedef struct ft_eeprom_232h { + // Common header + FT_EEPROM_HEADER common; // common elements for all device EEPROMs + // Drive options + UCHAR ACSlowSlew; // non-zero if AC bus pins have slow slew + UCHAR ACSchmittInput; // non-zero if AC bus pins are Schmitt input + UCHAR ACDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR ADSlowSlew; // non-zero if AD bus pins have slow slew + UCHAR ADSchmittInput; // non-zero if AD bus pins are Schmitt input + UCHAR ADDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + // CBUS options + UCHAR Cbus0; // Cbus Mux control + UCHAR Cbus1; // Cbus Mux control + UCHAR Cbus2; // Cbus Mux control + UCHAR Cbus3; // Cbus Mux control + UCHAR Cbus4; // Cbus Mux control + UCHAR Cbus5; // Cbus Mux control + UCHAR Cbus6; // Cbus Mux control + UCHAR Cbus7; // Cbus Mux control + UCHAR Cbus8; // Cbus Mux control + UCHAR Cbus9; // Cbus Mux control + // FT1248 options + UCHAR FT1248Cpol; // FT1248 clock polarity - clock idle high (1) or clock idle low (0) + UCHAR FT1248Lsb; // FT1248 data is LSB (1) or MSB (0) + UCHAR FT1248FlowControl; // FT1248 flow control enable + // Hardware options + UCHAR IsFifo; // non-zero if interface is 245 FIFO + UCHAR IsFifoTar; // non-zero if interface is 245 FIFO CPU target + UCHAR IsFastSer; // non-zero if interface is Fast serial + UCHAR IsFT1248; // non-zero if interface is FT1248 + UCHAR PowerSaveEnable; // + // Driver option + UCHAR DriverType; // non-zero if interface is to use VCP drivers +} FT_EEPROM_232H, *PFT_EEPROM_232H; + +// FT X Series EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program +typedef struct ft_eeprom_x_series { + // Common header + FT_EEPROM_HEADER common; // common elements for all device EEPROMs + // Drive options + UCHAR ACSlowSlew; // non-zero if AC bus pins have slow slew + UCHAR ACSchmittInput; // non-zero if AC bus pins are Schmitt input + UCHAR ACDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR ADSlowSlew; // non-zero if AD bus pins have slow slew + UCHAR ADSchmittInput; // non-zero if AD bus pins are Schmitt input + UCHAR ADDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + // CBUS options + UCHAR Cbus0; // Cbus Mux control + UCHAR Cbus1; // Cbus Mux control + UCHAR Cbus2; // Cbus Mux control + UCHAR Cbus3; // Cbus Mux control + UCHAR Cbus4; // Cbus Mux control + UCHAR Cbus5; // Cbus Mux control + UCHAR Cbus6; // Cbus Mux control + // UART signal options + UCHAR InvertTXD; // non-zero if invert TXD + UCHAR InvertRXD; // non-zero if invert RXD + UCHAR InvertRTS; // non-zero if invert RTS + UCHAR InvertCTS; // non-zero if invert CTS + UCHAR InvertDTR; // non-zero if invert DTR + UCHAR InvertDSR; // non-zero if invert DSR + UCHAR InvertDCD; // non-zero if invert DCD + UCHAR InvertRI; // non-zero if invert RI + // Battery Charge Detect options + UCHAR BCDEnable; // Enable Battery Charger Detection + UCHAR BCDForceCbusPWREN; // asserts the power enable signal on CBUS when charging port detected + UCHAR BCDDisableSleep; // forces the device never to go into sleep mode + // I2C options + WORD I2CSlaveAddress; // I2C slave device address + DWORD I2CDeviceId; // I2C device ID + UCHAR I2CDisableSchmitt; // Disable I2C Schmitt trigger + // FT1248 options + UCHAR FT1248Cpol; // FT1248 clock polarity - clock idle high (1) or clock idle low (0) + UCHAR FT1248Lsb; // FT1248 data is LSB (1) or MSB (0) + UCHAR FT1248FlowControl; // FT1248 flow control enable + // Hardware options + UCHAR RS485EchoSuppress; // + UCHAR PowerSaveEnable; // + // Driver option + UCHAR DriverType; // non-zero if interface is to use VCP drivers +} FT_EEPROM_X_SERIES, *PFT_EEPROM_X_SERIES; + +// FT4222H EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program +typedef struct ft_eeprom_4222h { + // Common header + FT_EEPROM_HEADER common; // common elements for all device EEPROMs + CHAR Revision; // 'A', 'B', 'C', or 'D'. + UCHAR I2C_Slave_Address; + // Suspend + UCHAR SPISuspend; // 0 for "Disable SPI, tristate pins", 2 for "Keep SPI pin status", 3 for "Enable SPI pin control" + UCHAR SuspendOutPol; // 0 for negative, 1 for positive (not implemented on Rev A) + UCHAR EnableSuspendOut; // non-zero to enable (not implemented on Rev A) + // QSPI + UCHAR Clock_SlowSlew; // non-zero if clock pin has slow slew + UCHAR Clock_Drive; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR IO0_SlowSlew; // non-zero if IO0 pin has slow slew + UCHAR IO1_SlowSlew; // non-zero if IO1 pin has slow slew + UCHAR IO2_SlowSlew; // non-zero if IO2 pin has slow slew + UCHAR IO3_SlowSlew; // non-zero if IO3 pin has slow slew + UCHAR IO_Drive; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR SlaveSelect_PullUp; // non-zero to enable pull up + UCHAR SlaveSelect_PullDown; // non-zero to enable pull down + UCHAR SlaveSelect_Drive; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR SlaveSelect_SlowSlew; // non-zero if slave select pin has slow slew + UCHAR MISO_Suspend; // 2 for push-low, 3 for push high, 0 and 1 reserved + UCHAR SIMO_Suspend; // 2 for push-low, 3 for push high, 0 and 1 reserved + UCHAR IO2_IO3_Suspend; // 2 for push-low, 3 for push high, 0 and 1 reserved + UCHAR SlaveSelect_Suspend; // 0 for no-change (not implemented on Rev A), 2 for push-low, 3 for push high, 1 reserved + // GPIO + UCHAR GPIO0_Drive; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR GPIO1_Drive; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR GPIO2_Drive; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR GPIO3_Drive; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR GPIO0_SlowSlew; // non-zero if IO0 pin has slow slew + UCHAR GPIO1_SlowSlew; // non-zero if IO0 pin has slow slew + UCHAR GPIO2_SlowSlew; // non-zero if IO0 pin has slow slew + UCHAR GPIO3_SlowSlew; // non-zero if IO0 pin has slow slew + UCHAR GPIO0_PullDown; // non-zero to enable pull down + UCHAR GPIO1_PullDown; // non-zero to enable pull down + UCHAR GPIO2_PullDown; // non-zero to enable pull down + UCHAR GPIO3_PullDown; // non-zero to enable pull down + UCHAR GPIO0_PullUp; // non-zero to enable pull up + UCHAR GPIO1_PullUp; // non-zero to enable pull up + UCHAR GPIO2_PullUp; // non-zero to enable pull up + UCHAR GPIO3_PullUp; // non-zero to enable pull up + UCHAR GPIO0_OpenDrain; // non-zero to enable open drain + UCHAR GPIO1_OpenDrain; // non-zero to enable open drain + UCHAR GPIO2_OpenDrain; // non-zero to enable open drain + UCHAR GPIO3_OpenDrain; // non-zero to enable open drain + UCHAR GPIO0_Suspend; // 0 for no-change, 1 for input (not implemented on Rev A), 2 for push-low, 3 for push high + UCHAR GPIO1_Suspend; // 0 for no-change, 1 for input (not implemented on Rev A), 2 for push-low, 3 for push high + UCHAR GPIO2_Suspend; // 0 for no-change, 1 for input (not implemented on Rev A), 2 for push-low, 3 for push high + UCHAR GPIO3_Suspend; // 0 for no-change, 1 for input (not implemented on Rev A), 2 for push-low, 3 for push high + UCHAR FallingEdge; // non-zero to change GPIO on falling edge + // BCD + UCHAR BCD_Disable; // non-zero to disable BCD + UCHAR BCD_OutputActiveLow; // non-zero to set BCD output active low + UCHAR BCD_Drive; // valid values are 4mA, 8mA, 12mA, 16mA +} FT_EEPROM_4222H, *PFT_EEPROM_4222H; + +// Power Delivery structures for use with FT_EEPROM_Read and FT_EEPROM_Program +// PDO Configuration structure, mA supported values 0 to 10230mA, mV supported values 0 to 51100mV +// This is part of the FT_EEPROM_PD structure. +typedef struct ft_eeprom_PD_PDO_mv_ma { + USHORT PDO1ma; // PDO1 mA + USHORT PDO1mv; // PDO1 mV + USHORT PDO2ma; // PDO2 mA + USHORT PDO2mv; // PDO2 mV + USHORT PDO3ma; // PDO3 mA + USHORT PDO3mv; // PDO3 mV + USHORT PDO4ma; // PDO4 mA + USHORT PDO4mv; // PDO4 mV + USHORT PDO5ma; // PDO5 mA (FTx233HP only) + USHORT PDO5mv; // PDO5 mV (FTx233HP only) + USHORT PDO6ma; // PDO6 mA (FTx233HP only) + USHORT PDO6mv; // PDO6 mV (FTx233HP only) + USHORT PDO7ma; // PDO7 mA (FTx233HP only) + USHORT PDO7mv; // PDO7 mV (FTx233HP only) +} FT_EEPROM_PD_PDO_mv_ma; + +// PD EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program +// This is appended to the end of the base device structure. e_g. +// struct { +// FT_EEPROM_xxx base; +// FT_EEPROM_PD pd; +// }; +// Device GPIO values are: +// FTx233HP - 0 to 7, 15 for N/A +// FTx232HP - 0 to 3, 15 for N/A +typedef struct ft_eeprom_pd { + // Configuration + UCHAR srprs; // non-zero to enable Sink Request Power Role Swap + UCHAR sraprs; // non-zero to enable Sink Accept PR Swap + UCHAR srrprs; // non-zero to enable Source Request PR SWAP + UCHAR saprs; // non-zero to enable Source Accept PR SWAP + UCHAR vconns; // non-zero to enable vConn Swap + UCHAR passthru; // non-zero to enable Pass Through (FTx233HP only) + UCHAR extmcu; // non-zero to enable External MCU + UCHAR pd2en; // non-zero to enable PD2 (FTx233HP only) + UCHAR pd1autoclk; // non-zero to enable PD1 Auto Clock + UCHAR pd2autoclk; // non-zero to enable PD2 Auto Clock (FTx233HP only) + UCHAR useefuse; // non-zero to Use EFUSE + UCHAR extvconn; // non-zero to enable External vConn + + // GPIO Configuration + UCHAR count; // GPIO Count, supported values are 0 to 7 + UCHAR gpio1; // GPIO Number 1, supports device GPIO values + UCHAR gpio2; // GPIO Number 2, supports device GPIO values + UCHAR gpio3; // GPIO Number 3, supports device GPIO values + UCHAR gpio4; // GPIO Number 4, supports device GPIO values + UCHAR gpio5; // GPIO Number 5, supports device GPIO values (FTx233HP only) + UCHAR gpio6; // GPIO Number 6, supports device GPIO values (FTx233HP only) + UCHAR gpio7; // GPIO Number 7, supports device GPIO values (FTx233HP only) + UCHAR pd1lden; // PD1 Load Enable, supports device GPIO values + UCHAR pd2lden; // PD2 Load Enable, supports device GPIO values (FTx233HP only) + UCHAR dispin; // Discharge Pin, supports device GPIO values + UCHAR disenbm; // Discharge Enable BM, 0 for "Drive Hi", 1 for "Drive Low", 2 for "Input Mode", 3 for "Don't Care" + UCHAR disdisbm; // Discharge Disable BM, 0 for "Drive Hi", 1 for "Drive Low", 2 for "Input Mode", 3 for "Don't Care" + UCHAR ccselect; // CC Select Indicator, supports device GPIO values + + // ISET Configuration + UCHAR iset1; // ISET1, supports device GPIO values + UCHAR iset2; // ISET2, supports device GPIO values + UCHAR iset3; // ISET3, supports device GPIO values + UCHAR extiset; // non-zero to enable EXTEND_ISET + UCHAR isetpd2; // non-zero to enable ISET_PD2 + UCHAR iseten; // non-zero to set ISET_ENABLED + + // BM Configuration, 0 for "Drive Hi", 1 for "Drive Low", 2 for "Input Mode", 3 for "Don't Care" + UCHAR PDO1_GPIO[7]; // PDO1 GPIO1 to GPIO7 + UCHAR PDO2_GPIO[7]; // PDO2 GPIO1 to GPIO7 + UCHAR PDO3_GPIO[7]; // PDO3 GPIO1 to GPIO7 + UCHAR PDO4_GPIO[7]; // PDO4 GPIO1 to GPIO7 + UCHAR PDO5_GPIO[7]; // PDO5 GPIO1 to GPIO7 (FTx233HP only) + UCHAR PDO6_GPIO[7]; // PDO6 GPIO1 to GPIO7 (FTx233HP only) + UCHAR PDO7_GPIO[7]; // PDO7 GPIO1 to GPIO7 (FTx233HP only) + UCHAR VSET0V_GPIO[7]; // PDO7 GPIO1 to GPIO7 + UCHAR VSAFE5V_GPIO[7]; // PDO7 GPIO1 to GPIO7 + + FT_EEPROM_PD_PDO_mv_ma BM_PDO_Sink; + FT_EEPROM_PD_PDO_mv_ma BM_PDO_Source; + FT_EEPROM_PD_PDO_mv_ma BM_PDO_Sink_2; // (FTx233HP only) + + // PD Timers + UCHAR srt; // Sender Response Timer + UCHAR hrt; // Hard Reset Timer + UCHAR sct; // Source Capability Timer + UCHAR dit; // Discover Identity Timer + USHORT srcrt; // Source Recover Timer + USHORT trt; // Transition Timer + USHORT sofft; // Source off timer + USHORT nrt; // No Response Timer + USHORT swct; // Sink Wait Capability Timer + USHORT snkrt; // Sink Request Timer + UCHAR dt; // Discharge Timer + UCHAR cnst; // Chunk not supported timer + USHORT it; // Idle Timer + + // PD Control + UCHAR i2caddr; // I2C Address (hex) + UINT prou; // Power Reserved for OWN use + UINT trim1; // TRIM1 + UINT trim2; // TRIM2 + UCHAR extdc; // non-zero to enable ETERNAL_DC_POWER +} FT_EEPROM_PD, *PFT_EEPROM_PD; + +// FT2233HP EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program +// FT2232H with power delivery +typedef struct _ft_eeprom_2233hp { + FT_EEPROM_2232H ft2232h; + FT_EEPROM_PD pd; +} FT_EEPROM_2233HP, *PFT_EEPROM_2233HP; + +// FT4233HP EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program +// FT4232H with power delivery +typedef struct _ft_eeprom_4233hp { + FT_EEPROM_4232H ft4232h; + FT_EEPROM_PD pd; +} FT_EEPROM_4233HP, *PFT_EEPROM_4233HP; + +// FT2232HP EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program +// FT2232H with power delivery +typedef struct _ft_eeprom_2232hp { + FT_EEPROM_2232H ft2232h; + FT_EEPROM_PD pd; +} FT_EEPROM_2232HP, *PFT_EEPROM_2232HP; + +// FT4232HP EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program +// FT4232H with power delivery +typedef struct _ft_eeprom_4232hp { + FT_EEPROM_4232H ft4232h; + FT_EEPROM_PD pd; +} FT_EEPROM_4232HP, *PFT_EEPROM_4232HP; + +// FT233HP EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program +// FT233H with power delivery +typedef struct _ft_eeprom_233hp { + FT_EEPROM_232H ft232h; + FT_EEPROM_PD pd; +} FT_EEPROM_233HP, *PFT_EEPROM_233HP; + +// FT232HP EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program +// FT232H with power delivery +typedef struct _ft_eeprom_232hp { + FT_EEPROM_232H ft232h; + FT_EEPROM_PD pd; +} FT_EEPROM_232HP, *PFT_EEPROM_232HP; + +FTD2XX_API +FT_STATUS WINAPI FT_EEPROM_Read(FT_HANDLE ftHandle, void *eepromData, DWORD eepromDataSize, char *Manufacturer, + char *ManufacturerId, char *Description, char *SerialNumber); + +FTD2XX_API +FT_STATUS WINAPI FT_EEPROM_Program(FT_HANDLE ftHandle, void *eepromData, DWORD eepromDataSize, char *Manufacturer, + char *ManufacturerId, char *Description, char *SerialNumber); + +FTD2XX_API +FT_STATUS WINAPI FT_SetLatencyTimer(FT_HANDLE ftHandle, UCHAR ucLatency); + +FTD2XX_API +FT_STATUS WINAPI FT_GetLatencyTimer(FT_HANDLE ftHandle, PUCHAR pucLatency); + +FTD2XX_API +FT_STATUS WINAPI FT_SetBitMode(FT_HANDLE ftHandle, UCHAR ucMask, UCHAR ucEnable); + +FTD2XX_API +FT_STATUS WINAPI FT_GetBitMode(FT_HANDLE ftHandle, PUCHAR pucMode); + +FTD2XX_API +FT_STATUS WINAPI FT_SetUSBParameters(FT_HANDLE ftHandle, ULONG ulInTransferSize, ULONG ulOutTransferSize); + +FTD2XX_API +FT_STATUS WINAPI FT_SetDeadmanTimeout(FT_HANDLE ftHandle, ULONG ulDeadmanTimeout); + +#ifndef _WIN32 +// Extra functions for non-Windows platforms to compensate +// for lack of .INF file to specify Vendor and Product IDs. + +FTD2XX_API +FT_STATUS FT_SetVIDPID(DWORD dwVID, DWORD dwPID); + +FTD2XX_API +FT_STATUS FT_GetVIDPID(DWORD *pdwVID, DWORD *pdwPID); + +FTD2XX_API +FT_STATUS WINAPI FT_GetDeviceLocId(FT_HANDLE ftHandle, LPDWORD lpdwLocId); +#endif // _WIN32 + +FTD2XX_API +FT_STATUS WINAPI FT_GetDeviceInfo( + FT_HANDLE ftHandle, FT_DEVICE *lpftDevice, LPDWORD lpdwID, PCHAR SerialNumber, PCHAR Description, LPVOID Dummy); + +FTD2XX_API +FT_STATUS WINAPI FT_StopInTask(FT_HANDLE ftHandle); + +FTD2XX_API +FT_STATUS WINAPI FT_RestartInTask(FT_HANDLE ftHandle); + +FTD2XX_API +FT_STATUS WINAPI FT_SetResetPipeRetryCount(FT_HANDLE ftHandle, DWORD dwCount); + +FTD2XX_API +FT_STATUS WINAPI FT_ResetPort(FT_HANDLE ftHandle); + +FTD2XX_API +FT_STATUS WINAPI FT_CyclePort(FT_HANDLE ftHandle); + +// +// Win32-type functions +// + +FTD2XX_API +FT_HANDLE WINAPI FT_W32_CreateFile(LPCTSTR lpszName, DWORD dwAccess, DWORD dwShareMode, + LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreate, DWORD dwAttrsAndFlags, HANDLE hTemplate); + +FTD2XX_API +BOOL WINAPI FT_W32_CloseHandle(FT_HANDLE ftHandle); + +FTD2XX_API +BOOL WINAPI FT_W32_ReadFile( + FT_HANDLE ftHandle, LPVOID lpBuffer, DWORD nBufferSize, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped); + +FTD2XX_API +BOOL WINAPI FT_W32_WriteFile( + FT_HANDLE ftHandle, LPVOID lpBuffer, DWORD nBufferSize, LPDWORD lpBytesWritten, LPOVERLAPPED lpOverlapped); + +FTD2XX_API +DWORD WINAPI FT_W32_GetLastError(FT_HANDLE ftHandle); + +FTD2XX_API +BOOL WINAPI FT_W32_GetOverlappedResult( + FT_HANDLE ftHandle, LPOVERLAPPED lpOverlapped, LPDWORD lpdwBytesTransferred, BOOL bWait); + +FTD2XX_API +BOOL WINAPI FT_W32_CancelIo(FT_HANDLE ftHandle); + +// +// Win32 COMM API type functions +// +typedef struct _FTCOMSTAT { + DWORD fCtsHold : 1; + DWORD fDsrHold : 1; + DWORD fRlsdHold : 1; + DWORD fXoffHold : 1; + DWORD fXoffSent : 1; + DWORD fEof : 1; + DWORD fTxim : 1; + DWORD fReserved : 25; + DWORD cbInQue; + DWORD cbOutQue; +} FTCOMSTAT, *LPFTCOMSTAT; + +typedef struct _FTDCB { + DWORD DCBlength; /* sizeof(FTDCB) */ + DWORD BaudRate; /* Baudrate at which running */ + DWORD fBinary : 1; /* Binary Mode (skip EOF check) */ + DWORD fParity : 1; /* Enable parity checking */ + DWORD fOutxCtsFlow : 1; /* CTS handshaking on output */ + DWORD fOutxDsrFlow : 1; /* DSR handshaking on output */ + DWORD fDtrControl : 2; /* DTR Flow control */ + DWORD fDsrSensitivity : 1; /* DSR Sensitivity */ + DWORD fTXContinueOnXoff : 1; /* Continue TX when Xoff sent */ + DWORD fOutX : 1; /* Enable output X-ON/X-OFF */ + DWORD fInX : 1; /* Enable input X-ON/X-OFF */ + DWORD fErrorChar : 1; /* Enable Err Replacement */ + DWORD fNull : 1; /* Enable Null stripping */ + DWORD fRtsControl : 2; /* Rts Flow control */ + DWORD fAbortOnError : 1; /* Abort all reads and writes on Error */ + DWORD fDummy2 : 17; /* Reserved */ + WORD wReserved; /* Not currently used */ + WORD XonLim; /* Transmit X-ON threshold */ + WORD XoffLim; /* Transmit X-OFF threshold */ + BYTE ByteSize; /* Number of bits/byte, 4-8 */ + BYTE Parity; /* 0-4=None,Odd,Even,Mark,Space */ + BYTE StopBits; /* FT_STOP_BITS_1 or FT_STOP_BITS_2 */ + char XonChar; /* Tx and Rx X-ON character */ + char XoffChar; /* Tx and Rx X-OFF character */ + char ErrorChar; /* Error replacement char */ + char EofChar; /* End of Input character */ + char EvtChar; /* Received Event character */ + WORD wReserved1; /* Fill for now. */ +} FTDCB, *LPFTDCB; + +typedef struct _FTTIMEOUTS { + DWORD ReadIntervalTimeout; /* Maximum time between read chars. */ + DWORD ReadTotalTimeoutMultiplier; /* Multiplier of characters. */ + DWORD ReadTotalTimeoutConstant; /* Constant in milliseconds. */ + DWORD WriteTotalTimeoutMultiplier; /* Multiplier of characters. */ + DWORD WriteTotalTimeoutConstant; /* Constant in milliseconds. */ +} FTTIMEOUTS, *LPFTTIMEOUTS; + +FTD2XX_API +BOOL WINAPI FT_W32_ClearCommBreak(FT_HANDLE ftHandle); + +FTD2XX_API +BOOL WINAPI FT_W32_ClearCommError(FT_HANDLE ftHandle, LPDWORD lpdwErrors, LPFTCOMSTAT lpftComstat); + +FTD2XX_API +BOOL WINAPI FT_W32_EscapeCommFunction(FT_HANDLE ftHandle, DWORD dwFunc); + +FTD2XX_API +BOOL WINAPI FT_W32_GetCommModemStatus(FT_HANDLE ftHandle, LPDWORD lpdwModemStatus); + +FTD2XX_API +BOOL WINAPI FT_W32_GetCommState(FT_HANDLE ftHandle, LPFTDCB lpftDcb); + +FTD2XX_API +BOOL WINAPI FT_W32_GetCommTimeouts(FT_HANDLE ftHandle, FTTIMEOUTS *pTimeouts); + +FTD2XX_API +BOOL WINAPI FT_W32_PurgeComm(FT_HANDLE ftHandle, DWORD dwMask); + +FTD2XX_API +BOOL WINAPI FT_W32_SetCommBreak(FT_HANDLE ftHandle); + +FTD2XX_API +BOOL WINAPI FT_W32_SetCommMask(FT_HANDLE ftHandle, ULONG ulEventMask); + +FTD2XX_API +BOOL WINAPI FT_W32_GetCommMask(FT_HANDLE ftHandle, LPDWORD lpdwEventMask); + +FTD2XX_API +BOOL WINAPI FT_W32_SetCommState(FT_HANDLE ftHandle, LPFTDCB lpftDcb); + +FTD2XX_API +BOOL WINAPI FT_W32_SetCommTimeouts(FT_HANDLE ftHandle, FTTIMEOUTS *pTimeouts); + +FTD2XX_API +BOOL WINAPI FT_W32_SetupComm(FT_HANDLE ftHandle, DWORD dwReadBufferSize, DWORD dwWriteBufferSize); + +FTD2XX_API +BOOL WINAPI FT_W32_WaitCommEvent(FT_HANDLE ftHandle, PULONG pulEvent, LPOVERLAPPED lpOverlapped); + +// +// Device information +// + +typedef struct _ft_device_list_info_node { + ULONG Flags; + ULONG Type; + ULONG ID; + DWORD LocId; + char SerialNumber[16]; + char Description[64]; + FT_HANDLE ftHandle; +} FT_DEVICE_LIST_INFO_NODE; + +// Device information flags +enum { + FT_FLAGS_OPENED = 1, + FT_FLAGS_HISPEED = 2 +}; + +FTD2XX_API +FT_STATUS WINAPI FT_CreateDeviceInfoList(LPDWORD lpdwNumDevs); + +FTD2XX_API +FT_STATUS WINAPI FT_GetDeviceInfoList(FT_DEVICE_LIST_INFO_NODE *pDest, LPDWORD lpdwNumDevs); + +FTD2XX_API +FT_STATUS WINAPI FT_GetDeviceInfoDetail(DWORD dwIndex, LPDWORD lpdwFlags, LPDWORD lpdwType, LPDWORD lpdwID, + LPDWORD lpdwLocId, LPVOID lpSerialNumber, LPVOID lpDescription, FT_HANDLE *pftHandle); + +// +// Version information +// + +FTD2XX_API +FT_STATUS WINAPI FT_GetDriverVersion(FT_HANDLE ftHandle, LPDWORD lpdwVersion); + +FTD2XX_API +FT_STATUS WINAPI FT_GetLibraryVersion(LPDWORD lpdwVersion); + +FTD2XX_API +FT_STATUS WINAPI FT_Rescan(void); + +FTD2XX_API +FT_STATUS WINAPI FT_Reload(WORD wVid, WORD wPid); + +FTD2XX_API +FT_STATUS WINAPI FT_GetComPortNumber(FT_HANDLE ftHandle, LPLONG lpdwComPortNumber); + +// +// FT232H additional EEPROM functions +// + +FTD2XX_API +FT_STATUS WINAPI FT_EE_ReadConfig(FT_HANDLE ftHandle, UCHAR ucAddress, PUCHAR pucValue); + +FTD2XX_API +FT_STATUS WINAPI FT_EE_WriteConfig(FT_HANDLE ftHandle, UCHAR ucAddress, UCHAR ucValue); + +FTD2XX_API +FT_STATUS WINAPI FT_EE_ReadECC(FT_HANDLE ftHandle, UCHAR ucOption, LPWORD lpwValue); + +FTD2XX_API +FT_STATUS WINAPI FT_GetQueueStatusEx(FT_HANDLE ftHandle, DWORD *dwRxBytes); + +FTD2XX_API +FT_STATUS WINAPI FT_ComPortIdle(FT_HANDLE ftHandle); + +FTD2XX_API +FT_STATUS WINAPI FT_ComPortCancelIdle(FT_HANDLE ftHandle); + +FTD2XX_API +FT_STATUS WINAPI FT_VendorCmdGet(FT_HANDLE ftHandle, UCHAR Request, UCHAR *Buf, USHORT Len); + +FTD2XX_API +FT_STATUS WINAPI FT_VendorCmdSet(FT_HANDLE ftHandle, UCHAR Request, UCHAR *Buf, USHORT Len); + +FTD2XX_API +FT_STATUS WINAPI FT_VendorCmdGetEx(FT_HANDLE ftHandle, USHORT wValue, UCHAR *Buf, USHORT Len); + +FTD2XX_API +FT_STATUS WINAPI FT_VendorCmdSetEx(FT_HANDLE ftHandle, USHORT wValue, UCHAR *Buf, USHORT Len); + +#ifdef __cplusplus +} +#endif + +#endif /* FTD2XX_H */ diff --git a/3rdparty/ftdi/i386/ftd2xx.dll b/3rdparty/ftdi/i386/ftd2xx.dll new file mode 100644 index 0000000000000000000000000000000000000000..1ae4df40f3b4931d553a6c540a60fbc3b8b12c48 GIT binary patch literal 392128 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 z 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

O66KZ2SvmCIL=`SgsG_dzrJW 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 literal 0 HcmV?d00001 diff --git a/3rdparty/ftdi/i386/ftd2xx.lib b/3rdparty/ftdi/i386/ftd2xx.lib new file mode 100644 index 0000000000000000000000000000000000000000..5dc71ee5b31368fc7d69ceb1156ee5d7611b4467 GIT binary patch literal 22190 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 jJ#GanWi0Z(gKr^*SkZmvR&Y|DEQ1ib4`A?}D literal 0 HcmV?d00001 From da8971a57b7b016f73d1bbd1e5806a98432132be Mon Sep 17 00:00:00 2001 From: Sid Price Date: Mon, 20 Mar 2023 10:55:46 -0600 Subject: [PATCH 17/25] hosted/makefile: Implement the build system logic required to pick up and use FTD2xx on Windows --- .gitignore | 1 + src/Makefile | 2 +- src/platforms/hosted/Makefile.inc | 23 +++++++++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 6d918f422f3..f84d7ae9a1e 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ blackmagic_upgrade .gdb_history src/artifacts/ +src/ftd2xx.dll diff --git a/src/Makefile b/src/Makefile index 983ebc74dcf..55e0107533f 100644 --- a/src/Makefile +++ b/src/Makefile @@ -154,7 +154,7 @@ GIT_VERSION := $(shell if [ -e "../.git" ]; then git describe --always --dirty - clean: host_clean $(Q)echo " CLEAN" -$(Q)$(RM) *.o *.d *.elf *~ $(TARGET) $(HOSTFILES) - -$(Q)$(RM) platforms/*/*.o platforms/*/*.d mapfile + -$(Q)$(RM) platforms/*/*.o platforms/*/*.d mapfile ftd2xx.dll ifeq ($(GIT_VERSION),) @echo Git not found, not deleting include/version.h else diff --git a/src/platforms/hosted/Makefile.inc b/src/platforms/hosted/Makefile.inc index 27488958e39..f20674dfd2b 100644 --- a/src/platforms/hosted/Makefile.inc +++ b/src/platforms/hosted/Makefile.inc @@ -69,6 +69,20 @@ else ifneq (filter, macosx darwin, $(SYS)) CFLAGS += -I /opt/homebrew/include -I /opt/homebrew/include/libusb-1.0 endif +# If we're on Windows, pick the correct FTD2xx implementation +ifeq ($(OS), Windows_NT) + ifneq ($(HOSTED_BMP_ONLY), 1) + CFLAGS += -I../3rdparty/ftdi + ifeq ($(PROCESSOR_ARCHITECTURE), AMD64) + LDFLAGS += ../3rdparty/ftdi/amd64/ftd2xx.lib + FTDI_DLL = ../3rdparty/ftdi/amd64/ftd2xx.dll + else + LDFLAGS += ../3rdparty/ftdi/i386/ftd2xx.lib + FTDI_DLL = ../3rdparty/ftdi/i386/ftd2xx.dll + endif + endif +endif + ifneq ($(HOSTED_BMP_ONLY), 1) ifneq ($(shell pkg-config --exists libusb-1.0; echo $$?), 0) $(error Please install libusb-1.0 dependency or set HOSTED_BMP_ONLY to 1) @@ -100,6 +114,9 @@ SRC += protocol_v1.c protocol_v1_adiv5.c protocol_v2.c SRC += protocol_v3.c protocol_v3_adiv5.c SRC += bmp_remote.c ifneq ($(HOSTED_BMP_ONLY), 1) + ifeq ($(OS), Windows_NT) + SRC += ftd2xx.dll + endif SRC += bmp_libusb.c stlinkv2.c stlinkv2_jtag.c stlinkv2_swd.c SRC += ftdi_bmp.c ftdi_jtag.c ftdi_swd.c SRC += jlink.c jlink_jtag.c jlink_swd.c @@ -110,5 +127,11 @@ PC_HOSTED = 1 all: blackmagic +ifeq ($(OS), Windows_NT) +.PHONY: ftd2xx.dll + +ftd2xx.dll: + cp $(FTDI_DLL) ../src +endif host_clean: -$(Q)$(RM) blackmagic From 06c46db13229b7f9f0748bcdecdfbe44db3f591a Mon Sep 17 00:00:00 2001 From: Sid Price Date: Tue, 4 Apr 2023 10:38:45 -0600 Subject: [PATCH 18/25] hosted/windows/ftdi: Implemented stubs for shimming FTD2xx in on Windows --- src/platforms/hosted/Makefile.inc | 17 ++- src/platforms/hosted/windows/ftdi.c | 112 +++++++++++++++ src/platforms/hosted/windows/ftdi.h | 205 ++++++++++++++++++++++++++++ 3 files changed, 328 insertions(+), 6 deletions(-) create mode 100644 src/platforms/hosted/windows/ftdi.c create mode 100644 src/platforms/hosted/windows/ftdi.h diff --git a/src/platforms/hosted/Makefile.inc b/src/platforms/hosted/Makefile.inc index f20674dfd2b..4042807fc9f 100644 --- a/src/platforms/hosted/Makefile.inc +++ b/src/platforms/hosted/Makefile.inc @@ -72,7 +72,8 @@ endif # If we're on Windows, pick the correct FTD2xx implementation ifeq ($(OS), Windows_NT) ifneq ($(HOSTED_BMP_ONLY), 1) - CFLAGS += -I../3rdparty/ftdi + VPATH += platforms/hosted/windows + CFLAGS += -I../3rdparty/ftdi -Iplatforms/hosted/windows ifeq ($(PROCESSOR_ARCHITECTURE), AMD64) LDFLAGS += ../3rdparty/ftdi/amd64/ftd2xx.lib FTDI_DLL = ../3rdparty/ftdi/amd64/ftd2xx.dll @@ -87,11 +88,15 @@ ifneq ($(HOSTED_BMP_ONLY), 1) ifneq ($(shell pkg-config --exists libusb-1.0; echo $$?), 0) $(error Please install libusb-1.0 dependency or set HOSTED_BMP_ONLY to 1) endif - ifneq ($(shell pkg-config --exists libftdi1; echo $$?), 0) - $(error Please install libftdi1 dependency or set HOSTED_BMP_ONLY to 1) + ifneq ($(OS), Windows_NT) + ifneq ($(shell pkg-config --exists libftdi1; echo $$?), 0) + $(error Please install libftdi1 dependency or set HOSTED_BMP_ONLY to 1) + endif + CFLAGS += $(shell pkg-config --cflags libftdi1) + LDFLAGS += $(shell pkg-config --libs libftdi1) endif - CFLAGS += $(shell pkg-config --cflags libusb-1.0) $(shell pkg-config --cflags libftdi1) - LDFLAGS += $(shell pkg-config --libs libusb-1.0) $(shell pkg-config --libs libftdi1) + CFLAGS += $(shell pkg-config --cflags libusb-1.0) + LDFLAGS += $(shell pkg-config --libs libusb-1.0) CFLAGS += -Wno-missing-field-initializers endif @@ -115,7 +120,7 @@ SRC += protocol_v3.c protocol_v3_adiv5.c SRC += bmp_remote.c ifneq ($(HOSTED_BMP_ONLY), 1) ifeq ($(OS), Windows_NT) - SRC += ftd2xx.dll + SRC += ftd2xx.dll ftdi.c endif SRC += bmp_libusb.c stlinkv2.c stlinkv2_jtag.c stlinkv2_swd.c SRC += ftdi_bmp.c ftdi_jtag.c ftdi_swd.c diff --git a/src/platforms/hosted/windows/ftdi.c b/src/platforms/hosted/windows/ftdi.c new file mode 100644 index 00000000000..64df2a53fd3 --- /dev/null +++ b/src/platforms/hosted/windows/ftdi.c @@ -0,0 +1,112 @@ +/* + * This file is part of the Black Magic Debug project. + * + * Copyright (C) 2022-2023 1BitSquared + * Copyright (C) 2023 Sid Price + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "general.h" +#include "ftdi.h" + +struct ftdi_context *ftdi_new(void) +{ + return NULL; +} + +int ftdi_set_interface(struct ftdi_context *ftdi, enum ftdi_interface interface) +{ + (void)ftdi; + (void)interface; + return 1; +} + +int ftdi_usb_open_desc(struct ftdi_context *ftdi, int vendor, int product, const char *description, const char *serial) +{ + (void)ftdi; + (void)vendor; + (void)product; + (void)description; + (void)serial; + return 1; +} + +int ftdi_usb_close(struct ftdi_context *ftdi) +{ + (void)ftdi; + return 1; +} + +void ftdi_free(struct ftdi_context *ftdi) +{ + (void)ftdi; +} + +int ftdi_set_baudrate(struct ftdi_context *ftdi, int baudrate) +{ + (void)ftdi; + (void)baudrate; + return 1; +} + +int ftdi_set_latency_timer(struct ftdi_context *ftdi, unsigned char latency) +{ + (void)ftdi; + (void)latency; + return 1; +} + +int ftdi_set_bitmode(struct ftdi_context *ftdi, unsigned char bitmask, unsigned char mode) +{ + (void)ftdi; + (void)bitmask; + (void)mode; + return 1; +} + +int ftdi_usb_purge_buffers(struct ftdi_context *ftdi) +{ + (void)ftdi; + return 1; +} + +int ftdi_read_data(struct ftdi_context *ftdi, unsigned char *buf, int size) +{ + (void)ftdi; + (void)buf; + (void)size; + return 1; +} + +int ftdi_write_data(struct ftdi_context *ftdi, const unsigned char *buf, int size) +{ + (void)ftdi; + (void)buf; + (void)size; + return 1; +} + +int ftdi_write_data_set_chunksize(struct ftdi_context *ftdi, unsigned int chunksize) +{ + (void)ftdi; + (void)chunksize; + return 1; +} + +const char *ftdi_get_error_string(struct ftdi_context *ftdi) +{ + (void)ftdi; + return "Oops"; +} diff --git a/src/platforms/hosted/windows/ftdi.h b/src/platforms/hosted/windows/ftdi.h new file mode 100644 index 00000000000..fa20f8fc1b8 --- /dev/null +++ b/src/platforms/hosted/windows/ftdi.h @@ -0,0 +1,205 @@ +/* + * This file is part of the Black Magic Debug project. + * + * Copyright (C) 2011 Black Sphere Technologies Ltd. + * Copyright (C) 2018 Uwe Bonnes(bon@elektron.ikp.physik.tu-darmstadt.de) + * Written by Gareth McMullin + * Copyright (C) 2022-2023 1BitSquared + * Originated by Sid Price + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef PLATFORMS_HOSTED_WINDOWS_FTDI +#define PLATFORMS_HOSTED_WINDOWS_FTDI + +/** Port interface for chips with multiple interfaces */ +enum ftdi_interface { + INTERFACE_ANY = 0, + INTERFACE_A = 1, + INTERFACE_B = 2, + INTERFACE_C = 3, + INTERFACE_D = 4 +}; + +/** Automatic loading / unloading of kernel modules */ +enum ftdi_module_detach_mode { + AUTO_DETACH_SIO_MODULE = 0, + DONT_DETACH_SIO_MODULE = 1, + AUTO_DETACH_REATACH_SIO_MODULE = 2 +}; + +/* FTDI MPSSE commands */ +#define SET_BITS_LOW 0x80U +/*BYTE DATA*/ +/*BYTE Direction*/ +#define SET_BITS_HIGH 0x82U +/*BYTE DATA*/ +/*BYTE Direction*/ +#define GET_BITS_LOW 0x81U +#define GET_BITS_HIGH 0x83U +#define LOOPBACK_START 0x84U +#define LOOPBACK_END 0x85U +#define TCK_DIVISOR 0x86U +/* H Type specific commands */ +#define DIS_DIV_5 0x8aU +#define EN_DIV_5 0x8bU +#define EN_3_PHASE 0x8cU +#define DIS_3_PHASE 0x8dU +#define CLK_BITS 0x8eU +#define CLK_BYTES 0x8fU +#define CLK_WAIT_HIGH 0x94U +#define CLK_WAIT_LOW 0x95U +#define EN_ADAPTIVE 0x96U +#define DIS_ADAPTIVE 0x97U +#define CLK_BYTES_OR_HIGH 0x9cU +#define CLK_BYTES_OR_LOW 0x9dU +/*FT232H specific commands */ +#define DRIVE_OPEN_COLLECTOR 0x9eU +/* Value Low */ +/* Value HIGH */ /*rate is 12000000/((1+value)*2) */ +#define DIV_VALUE(rate) ((rate) > 6000000U) ? 0U : ((6000000U / (rate)-1U) > 0xffffU) ? 0xffffU : (6000000U / (rate)-1U) + +/* Commands in MPSSE and Host Emulation Mode */ +#define SEND_IMMEDIATE 0x87U +#define WAIT_ON_HIGH 0x88U +#define WAIT_ON_LOW 0x89U + +/* Commands in Host Emulation Mode */ +#define READ_SHORT 0x90U +/* Address_Low */ +#define READ_EXTENDED 0x91U +/* Address High */ +/* Address Low */ +#define WRITE_SHORT 0x92U +/* Address_Low */ +#define WRITE_EXTENDED 0x93U + +/* Address High */ +/* Address Low */ + +/* Shifting commands IN MPSSE Mode*/ +#define MPSSE_WRITE_NEG 0x01U /* Write TDI/DO on negative TCK/SK edge*/ +#define MPSSE_BITMODE 0x02U /* Write bits, not bytes */ +#define MPSSE_READ_NEG 0x04U /* Sample TDO/DI on negative TCK/SK edge */ +#define MPSSE_LSB 0x08U /* LSB first */ +#define MPSSE_DO_WRITE 0x10U /* Write TDI/DO */ +#define MPSSE_DO_READ 0x20U /* Read TDO/DI */ +#define MPSSE_WRITE_TMS 0x40U /* Write TMS/CS */ + +/** MPSSE bitbang modes */ +enum ftdi_mpsse_mode { + BITMODE_RESET = 0x00, /**< switch off bitbang mode, back to regular serial/FIFO */ + BITMODE_BITBANG = 0x01, /**< classical asynchronous bitbang mode, introduced with B-type chips */ + BITMODE_MPSSE = 0x02, /**< MPSSE mode, available on 2232x chips */ + BITMODE_SYNCBB = 0x04, /**< synchronous bitbang mode, available on 2232x and R-type chips */ + BITMODE_MCU = 0x08, /**< MCU Host Bus Emulation mode, available on 2232x chips */ + /* CPU-style fifo mode gets set via EEPROM */ + BITMODE_OPTO = 0x10, /**< Fast Opto-Isolated Serial Interface Mode, available on 2232x chips */ + BITMODE_CBUS = 0x20, /**< Bitbang on CBUS pins of R-type chips, configure in EEPROM before */ + BITMODE_SYNCFF = 0x40, /**< Single Channel Synchronous FIFO mode, available on 2232H chips */ + BITMODE_FT1284 = 0x80, /**< FT1284 mode, available on 232H chips */ +}; + +/** FTDI chip type */ +enum ftdi_chip_type { + TYPE_AM = 0, + TYPE_BM = 1, + TYPE_2232C = 2, + TYPE_R = 3, + TYPE_2232H = 4, + TYPE_4232H = 5, + TYPE_232H = 6, + TYPE_230X = 7, +}; + +/* + * Main context structure for all FTD2xx functions. + * Do not access directly if possible. +*/ +struct ftdi_context { + /* USB specific */ + /** libusb's context */ + struct libusb_context *usb_ctx; + /** libusb's usb_dev_handle */ + struct libusb_device_handle *usb_dev; + /** usb read timeout */ + int usb_read_timeout; + /** usb write timeout */ + int usb_write_timeout; + + /* FTDI specific */ + /** FTDI chip type */ + enum ftdi_chip_type type; + /** baudrate */ + int baudrate; + /** bitbang mode state */ + unsigned char bitbang_enabled; + /** pointer to read buffer for ftdi_read_data */ + unsigned char *readbuffer; + /** read buffer offset */ + unsigned int readbuffer_offset; + /** number of remaining data in internal read buffer */ + unsigned int readbuffer_remaining; + /** read buffer chunk size */ + unsigned int readbuffer_chunksize; + /** write buffer chunk size */ + unsigned int writebuffer_chunksize; + /** maximum packet size. Needed for filtering modem status bytes every n packets. */ + unsigned int max_packet_size; + + /* FTDI FT2232C requirecments */ + /** FT2232C interface number: 0 or 1 */ + int interface; /* 0 or 1 */ + /** FT2232C index number: 1 or 2 */ + int index; /* 1 or 2 */ + /* Endpoints */ + /** FT2232C end points: 1 or 2 */ + int in_ep; + int out_ep; /* 1 or 2 */ + + /** Bitbang mode. 1: (default) Normal bitbang mode, 2: FT2232C SPI bitbang mode */ + unsigned char bitbang_mode; + + /** Decoded eeprom structure */ + struct ftdi_eeprom *eeprom; + + /** String representation of last error */ + const char *error_str; + + /** Defines behavior in case a kernel module is already attached to the device */ + enum ftdi_module_detach_mode module_detach_mode; +}; + +struct ftdi_context *ftdi_new(void); +int ftdi_set_interface(struct ftdi_context *ftdi, enum ftdi_interface interface); +int ftdi_set_baudrate(struct ftdi_context *ftdi, int baudrate); + +int ftdi_usb_open_desc(struct ftdi_context *ftdi, int vendor, int product, const char *description, const char *serial); +int ftdi_usb_close(struct ftdi_context *ftdi); +void ftdi_free(struct ftdi_context *ftdi); + +int ftdi_usb_purge_buffers(struct ftdi_context *ftdi); + +int ftdi_set_latency_timer(struct ftdi_context *ftdi, unsigned char latency); +int ftdi_set_bitmode(struct ftdi_context *ftdi, unsigned char bitmask, unsigned char mode); + +int ftdi_read_data(struct ftdi_context *ftdi, unsigned char *buf, int size); + +int ftdi_write_data(struct ftdi_context *ftdi, const unsigned char *buf, int size); +int ftdi_write_data_set_chunksize(struct ftdi_context *ftdi, unsigned int chunksize); + +const char *ftdi_get_error_string(struct ftdi_context *ftdi); + +#endif // PLATFORMS_HOSTED_WINDOWS_FTDI From c4341d6d480bf9cab3781a60de9901c2e81e3a0d Mon Sep 17 00:00:00 2001 From: Sid Price Date: Tue, 4 Apr 2023 17:47:24 -0600 Subject: [PATCH 19/25] hosted/windows/ftdi: Implement libftdi shims using ftd2xx --- src/platforms/hosted/bmp_libusb.c | 2 +- src/platforms/hosted/ftdi_bmp.c | 28 ++++++++ src/platforms/hosted/ftdi_bmp.h | 1 + src/platforms/hosted/windows/ftdi.c | 99 +++++++++++++++++++++++------ 4 files changed, 108 insertions(+), 22 deletions(-) diff --git a/src/platforms/hosted/bmp_libusb.c b/src/platforms/hosted/bmp_libusb.c index e049da99706..dd6099cccae 100644 --- a/src/platforms/hosted/bmp_libusb.c +++ b/src/platforms/hosted/bmp_libusb.c @@ -398,7 +398,7 @@ int find_debuggers(bmda_cli_options_s *cl_opts, bmp_info_s *info) DEBUG_WARN("Using: %-20s %-20s %-25s %s\n", probe->product, probe->serial, probe->manufacturer, probe->version); probe_info_to_bmp_info(probe, info); /* If the selected probe is an FTDI adapter try to resolve the adaptor type */ - if (probe->vid == VENDOR_ID_FTDI && !ftdi_lookup_adapter_from_vid_pid(cl_opts, probe)) { + if (probe->vid == VENDOR_ID_FTDI && !ftdi_lookup_adaptor_descriptor(cl_opts, probe)) { // Don't know the cable type, ask user to specify with "-c" DEBUG_WARN("Multiple FTDI adapters match Vendor and Product ID.\n"); DEBUG_WARN("Please specify adapter type on command line using \"-c\" option.\n"); diff --git a/src/platforms/hosted/ftdi_bmp.c b/src/platforms/hosted/ftdi_bmp.c index de9cfe2f227..c5a9ae0b9ba 100644 --- a/src/platforms/hosted/ftdi_bmp.c +++ b/src/platforms/hosted/ftdi_bmp.c @@ -386,6 +386,10 @@ const cable_desc_s cable_desc[] = { */ bool ftdi_lookup_adapter_from_vid_pid(bmda_cli_options_s *const cl_opts, const probe_info_s *const probe) { + /* If the user entered a serial number, check if the attached probe is the right one */ + if (cl_opts->opt_serial && strstr(cl_opts->opt_serial, probe->serial)) + return true; + /* If the user entered an adapter name use it */ if (cl_opts->opt_cable) return true; @@ -405,6 +409,30 @@ bool ftdi_lookup_adapter_from_vid_pid(bmda_cli_options_s *const cl_opts, const p return adapter_count == 1; } +bool ftdi_lookup_cable_by_product(bmda_cli_options_s *cl_opts, const char *product) +{ + if (cl_opts->opt_cable) + return false; + + for (const cable_desc_s *cable = &cable_desc[0]; cable->vendor; ++cable) { + if (cable->description && strstr(product, cable->description) != 0) { + cl_opts->opt_cable = cable->name; + return true; + } + } + return false; +} + +bool ftdi_lookup_adaptor_descriptor(bmda_cli_options_s *cl_opts, const probe_info_s *probe) +{ + /* Did the user specify a serial number for the probe? */ + if (cl_opts && cl_opts->opt_serial) { + const char *const product = probe->product; + return ftdi_lookup_cable_by_product(cl_opts, product); + } + return false; +} + bool ftdi_bmp_init(bmda_cli_options_s *const cl_opts) { int err; diff --git a/src/platforms/hosted/ftdi_bmp.h b/src/platforms/hosted/ftdi_bmp.h index 0842dc28319..693f37a04b3 100644 --- a/src/platforms/hosted/ftdi_bmp.h +++ b/src/platforms/hosted/ftdi_bmp.h @@ -126,6 +126,7 @@ extern data_desc_s active_state; bool ftdi_bmp_init(bmda_cli_options_s *cl_opts); bool ftdi_lookup_adapter_from_vid_pid(bmda_cli_options_s *cl_opts, const probe_info_s *probe); +bool ftdi_lookup_adaptor_descriptor(bmda_cli_options_s *cl_opts, const probe_info_s *probe); bool ftdi_swd_init(void); bool ftdi_jtag_init(void); void ftdi_buffer_flush(void); diff --git a/src/platforms/hosted/windows/ftdi.c b/src/platforms/hosted/windows/ftdi.c index 64df2a53fd3..be66c30abca 100644 --- a/src/platforms/hosted/windows/ftdi.c +++ b/src/platforms/hosted/windows/ftdi.c @@ -20,17 +20,74 @@ #include "general.h" #include "ftdi.h" +#include "ftd2xx.h" +#include "bmp_hosted.h" + +FT_HANDLE ftdi_handle; + +/* + * The following structure is mocked by this module. FTD2XX + * does not provide a similar structure. + * + * Values mocked: + * ftdi_ctx.type - The type of FTDI chip in the adapter + */ + +/* Used to fake the libusb context and pass required parameters back to the caller */ +static ftdi_context_s ftdi_ctx = {0}; + +/* + * This array is used to map FTD2XX device type identifiers + * to libftdi identifiers. The array is ordered by the FTD2XX + * values, with the array entries being the libftdi values + */ +static const int ftdi_chip_types[] = { + TYPE_AM, + TYPE_BM, + -1, // FT_DEVICE_100AX not supported + -2, // Unknown type + TYPE_2232C, + TYPE_R, + TYPE_2232H, + TYPE_4232H, + TYPE_232H, + TYPE_230X, +}; + +static const size_t number_of_ftdi_chip_types = ARRAY_LENGTH(ftdi_chip_types); + +#define READ_TIMEOUT 500 // Expressed in milliseconds +#define WRITE_TIMEOUT 500 struct ftdi_context *ftdi_new(void) { - return NULL; + /* + * The FTD2XX library needs the device serial number to open a handle to it. The device + * scanner places this into the BMP "info" structure. + */ + if (FT_OpenEx(info.serial, FT_OPEN_BY_SERIAL_NUMBER, &ftdi_handle) != FT_OK || + FT_SetTimeouts(ftdi_handle, READ_TIMEOUT, WRITE_TIMEOUT) != FT_OK) + return NULL; + + FT_DEVICE device; + DWORD device_id; + char serial_number[16]; + char description[64]; + if (FT_GetDeviceInfo(ftdi_handle, &device, &device_id, serial_number, description, NULL) != FT_OK) + return NULL; + + const size_t device_type_index = device; + if (device_type_index < number_of_ftdi_chip_types) + ftdi_ctx.type = ftdi_chip_types[device_type_index]; + return ctx; } int ftdi_set_interface(struct ftdi_context *ftdi, enum ftdi_interface interface) { (void)ftdi; (void)interface; - return 1; + // The interface is already selected by the serial number used + // return 0; } int ftdi_usb_open_desc(struct ftdi_context *ftdi, int vendor, int product, const char *description, const char *serial) @@ -40,13 +97,15 @@ int ftdi_usb_open_desc(struct ftdi_context *ftdi, int vendor, int product, const (void)product; (void)description; (void)serial; - return 1; + return 0; } int ftdi_usb_close(struct ftdi_context *ftdi) { (void)ftdi; - return 1; + if (FT_Close(ftdi_handle) != FT_OK) + return -1; + return 0; } void ftdi_free(struct ftdi_context *ftdi) @@ -57,56 +116,54 @@ void ftdi_free(struct ftdi_context *ftdi) int ftdi_set_baudrate(struct ftdi_context *ftdi, int baudrate) { (void)ftdi; - (void)baudrate; - return 1; + return FT_SetBaudRate(ftdi_handle, baudrate) != FT_OK; } int ftdi_set_latency_timer(struct ftdi_context *ftdi, unsigned char latency) { (void)ftdi; - (void)latency; - return 1; + return FT_SetLatencyTimer(ftdi_handle, latency) != FT_OK; } int ftdi_set_bitmode(struct ftdi_context *ftdi, unsigned char bitmask, unsigned char mode) { (void)ftdi; - (void)bitmask; - (void)mode; - return 1; + return FT_SetBitMode(ftdi_handle, bitmask, mode) != FT_OK; } int ftdi_usb_purge_buffers(struct ftdi_context *ftdi) { (void)ftdi; - return 1; + return FT_Purge(ftdi_handle, FT_PURGE_RX | FT_PURGE_TX) != FT_OK; } -int ftdi_read_data(struct ftdi_context *ftdi, unsigned char *buf, int size) +int ftdi_read_data(struct ftdi_context *ftdi, unsigned char *buf, const int size) { (void)ftdi; - (void)buf; - (void)size; - return 1; + DWORD bytes_read = 0; + if (FT_Read(ftdi_handle, buf, (DWORD)size, &bytes_read) == FT_OK && bytes_read != (DWORD)size) + return 0; // Signal read timeout + return bytes_read; } int ftdi_write_data(struct ftdi_context *ftdi, const unsigned char *buf, int size) { (void)ftdi; - (void)buf; - (void)size; - return 1; + DWORD bytes_written; + if (FT_Write(ftdi_handle, (unsigned char *)buf, size, &bytes_written) != FT_OK) + return 0; + return bytes_written; } int ftdi_write_data_set_chunksize(struct ftdi_context *ftdi, unsigned int chunksize) { (void)ftdi; (void)chunksize; - return 1; + return 0; } const char *ftdi_get_error_string(struct ftdi_context *ftdi) { (void)ftdi; - return "Oops"; + return "Error in ftdi.c (Windows)"; } From 0d72388e1ad3ff80b6ef386b69515c864dbf4cec Mon Sep 17 00:00:00 2001 From: Sid Price Date: Sun, 23 Apr 2023 10:47:10 -0600 Subject: [PATCH 20/25] hosted/bmp_libusb: Strip FTDI serial post-fix and skip multiple interfaces during scan --- src/platforms/hosted/bmp_libusb.c | 32 +++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/src/platforms/hosted/bmp_libusb.c b/src/platforms/hosted/bmp_libusb.c index dd6099cccae..05765840c88 100644 --- a/src/platforms/hosted/bmp_libusb.c +++ b/src/platforms/hosted/bmp_libusb.c @@ -156,25 +156,45 @@ static probe_info_s *process_ftdi_probe(void) } probe_info_s *probe_list = NULL; + const char *serial_skip = NULL; /* Device list is loaded, iterate over the found probes */ for (size_t index = 0; index < ftdi_dev_count; ++index) { const uint16_t vid = (dev_info[index].ID >> 16U) & 0xffffU; const uint16_t pid = dev_info[index].ID & 0xffffU; + bool add_probe = true; + char *serial = strdup(dev_info[index].SerialNumber); - const char *const product = strdup(dev_info[index].Description); + char *const product = strdup(dev_info[index].Description); size_t serial_len = strlen(serial); if (serial_len <= 1) { free(serial); serial = strdup("Unknown serial"); } else { --serial_len; - if (serial[serial_len] == 'A') - serial[serial_len] = '\0'; + if (serial[serial_len] == 'A') { + serial[serial_len] = '\0'; // Remove the trailing "A" + if (serial_skip) // Clean up any previous serial number to skip + free((void *)serial_skip); + serial_skip = strdup(serial); // Save the fixed serial number so we can skip over other interfaces + + size_t product_len = strlen(product); // Product has " A" appended + product_len -= 2; + product[product_len] = '\0'; // Remove it + } else + // Skip this interface if the serial matches + add_probe = serial_skip == NULL || strstr(serial, serial_skip) == NULL; + } + if (add_probe) { + const char *const manufacturer = strdup("FTDI"); + probe_list = + probe_info_add_by_id(probe_list, BMP_TYPE_FTDI, vid, pid, manufacturer, product, serial, strdup("---")); + } else { + free(serial); + free(product); } - const char *const manufacturer = strdup("FTDI"); - probe_list = - probe_info_add_by_id(probe_list, BMP_TYPE_LIBFTDI, vid, pid, manufacturer, product, serial, strdup("---")); } + if (serial_skip) + free((void *)serial_skip); free(dev_info); return probe_list; } From e8131f5d8268e8f8acf606ea2ea455f2f9ebb7db Mon Sep 17 00:00:00 2001 From: Sid Price Date: Sun, 23 Apr 2023 11:44:16 -0600 Subject: [PATCH 21/25] hosted/windows/ftdi: Refactor ftdi_new and set interface --- src/platforms/hosted/ftdi_bmp.c | 7 +----- src/platforms/hosted/windows/ftdi.c | 35 +++++++++++++++-------------- 2 files changed, 19 insertions(+), 23 deletions(-) diff --git a/src/platforms/hosted/ftdi_bmp.c b/src/platforms/hosted/ftdi_bmp.c index c5a9ae0b9ba..30f5f3d8714 100644 --- a/src/platforms/hosted/ftdi_bmp.c +++ b/src/platforms/hosted/ftdi_bmp.c @@ -425,12 +425,7 @@ bool ftdi_lookup_cable_by_product(bmda_cli_options_s *cl_opts, const char *produ bool ftdi_lookup_adaptor_descriptor(bmda_cli_options_s *cl_opts, const probe_info_s *probe) { - /* Did the user specify a serial number for the probe? */ - if (cl_opts && cl_opts->opt_serial) { - const char *const product = probe->product; - return ftdi_lookup_cable_by_product(cl_opts, product); - } - return false; + return ftdi_lookup_cable_by_product(cl_opts, probe->product); } bool ftdi_bmp_init(bmda_cli_options_s *const cl_opts) diff --git a/src/platforms/hosted/windows/ftdi.c b/src/platforms/hosted/windows/ftdi.c index be66c30abca..aa7f36b3cb5 100644 --- a/src/platforms/hosted/windows/ftdi.c +++ b/src/platforms/hosted/windows/ftdi.c @@ -61,33 +61,34 @@ static const size_t number_of_ftdi_chip_types = ARRAY_LENGTH(ftdi_chip_types); struct ftdi_context *ftdi_new(void) { + return &ftdi_ctx; // Just need to fake the structure being created +} + +int ftdi_set_interface(ftdi_context_s *ftdi, enum ftdi_interface interface) +{ + (void)ftdi; /* - * The FTD2XX library needs the device serial number to open a handle to it. The device - * scanner places this into the BMP "info" structure. + * FTD2XX needs a qualified serial number to open the correct device. Append + * an interface letter to the serial number by adding the number to 'A' */ - if (FT_OpenEx(info.serial, FT_OPEN_BY_SERIAL_NUMBER, &ftdi_handle) != FT_OK || + char serial_number[16] = {0}; + strcpy(serial_number, info.serial); + serial_number[strlen(serial_number)] = 'A' + (interface - 1); + + if (FT_OpenEx(serial_number, FT_OPEN_BY_SERIAL_NUMBER, &ftdi_handle) != FT_OK || FT_SetTimeouts(ftdi_handle, READ_TIMEOUT, WRITE_TIMEOUT) != FT_OK) - return NULL; + return 0; FT_DEVICE device; - DWORD device_id; - char serial_number[16]; - char description[64]; + DWORD device_id = 0; + char description[64] = {'\0'}; if (FT_GetDeviceInfo(ftdi_handle, &device, &device_id, serial_number, description, NULL) != FT_OK) - return NULL; + return 0; const size_t device_type_index = device; if (device_type_index < number_of_ftdi_chip_types) ftdi_ctx.type = ftdi_chip_types[device_type_index]; - return ctx; -} - -int ftdi_set_interface(struct ftdi_context *ftdi, enum ftdi_interface interface) -{ - (void)ftdi; - (void)interface; - // The interface is already selected by the serial number used - // return 0; + return 0; } int ftdi_usb_open_desc(struct ftdi_context *ftdi, int vendor, int product, const char *description, const char *serial) From 1a1cfe9f022bd1bb7edd3919afa9e2ec2a152224 Mon Sep 17 00:00:00 2001 From: Sid Price Date: Sun, 23 Apr 2023 14:59:04 -0600 Subject: [PATCH 22/25] hosted/bmp_libusb: Fix ST-Link v2 serial number reporting bmp_libusb: Additional commit for STLink V2 serial number fix --- src/platforms/hosted/bmp_libusb.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/platforms/hosted/bmp_libusb.c b/src/platforms/hosted/bmp_libusb.c index 05765840c88..7913141b79e 100644 --- a/src/platforms/hosted/bmp_libusb.c +++ b/src/platforms/hosted/bmp_libusb.c @@ -326,8 +326,16 @@ static bool process_vid_pid_table_probe( product = get_device_descriptor_string(handle, device_descriptor->iProduct); if (manufacturer == NULL) manufacturer = get_device_descriptor_string(handle, device_descriptor->iManufacturer); - if (serial == NULL) - serial = get_device_descriptor_string(handle, device_descriptor->iSerialNumber); + if (serial == NULL) { + /* + * If this is a ST-Link v2, it does not report its serial number correctly, + * bypass trying to read it. + */ + if (device_descriptor->idVendor == VENDOR_ID_STLINK && device_descriptor->idProduct == PRODUCT_ID_STLINKV2) + serial = strdup("---"); + else + serial = get_device_descriptor_string(handle, device_descriptor->iSerialNumber); + } if (version == NULL) version = strdup("---"); From 521463a2933ede4a294e705171805541666b31d6 Mon Sep 17 00:00:00 2001 From: Sid Price Date: Sun, 23 Apr 2023 16:40:08 -0600 Subject: [PATCH 23/25] hosted/ftdi_bmp: Guard nulling of Tigard description --- src/platforms/hosted/ftdi_bmp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/platforms/hosted/ftdi_bmp.c b/src/platforms/hosted/ftdi_bmp.c index 30f5f3d8714..e12c1375ce8 100644 --- a/src/platforms/hosted/ftdi_bmp.c +++ b/src/platforms/hosted/ftdi_bmp.c @@ -445,7 +445,7 @@ bool ftdi_bmp_init(bmda_cli_options_s *const cl_opts) active_cable = *cable; memcpy(&active_state, &active_cable.init, sizeof(data_desc_s)); /* If the adaptor being used is Tigard, NULL the description out as libftdi can't deal with the partial match. */ - if (memcmp(active_cable.description, "Tigard", 7) == 0) + if (active_cable.description && memcmp(active_cable.description, "Tigard", 7) == 0) active_cable.description = NULL; /* * If swd_(read|write) is not given for the selected cable and From 878279a3409feb77747aa2f498238500efc985b6 Mon Sep 17 00:00:00 2001 From: Sid Price Date: Sun, 23 Apr 2023 16:42:44 -0600 Subject: [PATCH 24/25] hosted/bmp_libusb: Implement multiple interface scan skipping bmp_libusb: More scan skipping additions --- src/platforms/hosted/bmp_libusb.c | 43 +++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/src/platforms/hosted/bmp_libusb.c b/src/platforms/hosted/bmp_libusb.c index 7913141b79e..d2717131c3a 100644 --- a/src/platforms/hosted/bmp_libusb.c +++ b/src/platforms/hosted/bmp_libusb.c @@ -156,7 +156,8 @@ static probe_info_s *process_ftdi_probe(void) } probe_info_s *probe_list = NULL; - const char *serial_skip = NULL; + const char *probe_skip = NULL; + bool use_serial = true; /* Device list is loaded, iterate over the found probes */ for (size_t index = 0; index < ftdi_dev_count; ++index) { const uint16_t vid = (dev_info[index].ID >> 16U) & 0xffffU; @@ -166,23 +167,43 @@ static probe_info_s *process_ftdi_probe(void) char *serial = strdup(dev_info[index].SerialNumber); char *const product = strdup(dev_info[index].Description); size_t serial_len = strlen(serial); - if (serial_len <= 1) { + if (!serial_len) { free(serial); - serial = strdup("Unknown serial"); + serial = strdup("---"); // Unknown serial number } else { --serial_len; if (serial[serial_len] == 'A') { serial[serial_len] = '\0'; // Remove the trailing "A" - if (serial_skip) // Clean up any previous serial number to skip - free((void *)serial_skip); - serial_skip = strdup(serial); // Save the fixed serial number so we can skip over other interfaces + + if (probe_skip) { // Clean up any previous serial number to skip + use_serial = true; + free((void *)probe_skip); + probe_skip = NULL; + } + + // If the serial number is valid, save it for later interface skip testing + if (serial_len) + probe_skip = strdup(serial); // Save the fixed serial number so we can skip over other interfaces size_t product_len = strlen(product); // Product has " A" appended product_len -= 2; product[product_len] = '\0'; // Remove it - } else - // Skip this interface if the serial matches - add_probe = serial_skip == NULL || strstr(serial, serial_skip) == NULL; + + // If we don't have a saved serial number, use the truncated product for the probe skip test + if (!probe_skip) { + use_serial = false; + probe_skip = strdup(product); + } + } else { + if (probe_skip) { + if (use_serial) + // Skip this interface if the serial matches + add_probe = strstr(serial, probe_skip) == NULL; + else + // Skip this interface if the product name matches + add_probe = strstr(product, probe_skip) == NULL; + } + } } if (add_probe) { const char *const manufacturer = strdup("FTDI"); @@ -193,8 +214,8 @@ static probe_info_s *process_ftdi_probe(void) free(product); } } - if (serial_skip) - free((void *)serial_skip); + if (probe_skip) + free((void *)probe_skip); free(dev_info); return probe_list; } From daecdef2a2e3e530a3a8366f4a6a8ed9d7f65bad Mon Sep 17 00:00:00 2001 From: Sid Price Date: Thu, 29 Jun 2023 11:36:08 -0600 Subject: [PATCH 25/25] hosted: Add libusb_device to probe info structure and implement usage --- src/platforms/hosted/bmp_libusb.c | 8 ++++---- src/platforms/hosted/probe_info.c | 23 ++++++++++++++++++++--- src/platforms/hosted/probe_info.h | 11 +++++++++-- 3 files changed, 33 insertions(+), 9 deletions(-) diff --git a/src/platforms/hosted/bmp_libusb.c b/src/platforms/hosted/bmp_libusb.c index d2717131c3a..f3a7ee89f69 100644 --- a/src/platforms/hosted/bmp_libusb.c +++ b/src/platforms/hosted/bmp_libusb.c @@ -207,8 +207,8 @@ static probe_info_s *process_ftdi_probe(void) } if (add_probe) { const char *const manufacturer = strdup("FTDI"); - probe_list = - probe_info_add_by_id(probe_list, BMP_TYPE_FTDI, vid, pid, manufacturer, product, serial, strdup("---")); + probe_list = probe_info_add_by_id( + probe_list, BMP_TYPE_FTDI, NULL, vid, pid, manufacturer, product, serial, strdup("---")); } else { free(serial); free(product); @@ -300,7 +300,7 @@ static bool process_cmsis_interface_probe( else product = get_device_descriptor_string(handle, device_descriptor->iProduct); - *probe_list = probe_info_add_by_id(*probe_list, BMP_TYPE_CMSIS_DAP, device_descriptor->idVendor, + *probe_list = probe_info_add_by_id(*probe_list, BMP_TYPE_CMSIS_DAP, device, device_descriptor->idVendor, device_descriptor->idProduct, manufacturer, product, serial, version); cmsis_dap = true; } @@ -361,7 +361,7 @@ static bool process_vid_pid_table_probe( if (version == NULL) version = strdup("---"); - *probe_list = probe_info_add_by_id(*probe_list, probe_type, device_descriptor->idVendor, + *probe_list = probe_info_add_by_id(*probe_list, probe_type, device, device_descriptor->idVendor, device_descriptor->idProduct, manufacturer, product, serial, version); probe_added = true; libusb_close(handle); diff --git a/src/platforms/hosted/probe_info.c b/src/platforms/hosted/probe_info.c index 8ab734d3cf5..ae18654ef5e 100644 --- a/src/platforms/hosted/probe_info.c +++ b/src/platforms/hosted/probe_info.c @@ -38,12 +38,15 @@ probe_info_s *probe_info_add_by_serial(probe_info_s *const list, const bmp_type_t type, const char *const mfr, const char *const product, const char *const serial, const char *const version) { - return probe_info_add_by_id(list, type, 0, 0, mfr, product, serial, version); + return probe_info_add_by_id(list, type, NULL, 0, 0, mfr, product, serial, version); } -probe_info_s *probe_info_add_by_id(probe_info_s *const list, const bmp_type_t type, uint16_t vid, uint16_t pid, - const char *const mfr, const char *const product, const char *const serial, const char *const version) +probe_info_s *probe_info_add_by_id(probe_info_s *const list, const bmp_type_t type, libusb_device *device, uint16_t vid, + uint16_t pid, const char *const mfr, const char *const product, const char *const serial, const char *const version) { +#if HOSTED_BMP_ONLY == 1 + (void)device; +#endif probe_info_s *probe_info = malloc(sizeof(*probe_info)); if (!probe_info) { DEBUG_INFO("Fatal: Failed to allocate memory for a probe info structure\n"); @@ -53,6 +56,12 @@ probe_info_s *probe_info_add_by_id(probe_info_s *const list, const bmp_type_t ty probe_info->type = type; probe_info->vid = vid; probe_info->pid = pid; +#if HOSTED_BMP_ONLY == 0 + if (device != NULL) + probe_info->device = libusb_ref_device(device); + else + probe_info->device = NULL; +#endif probe_info->manufacturer = mfr; probe_info->product = product; probe_info->serial = serial; @@ -72,6 +81,10 @@ size_t probe_info_count(const probe_info_s *const list) void probe_info_free(probe_info_s *const probe_info) { +#if HOSTED_BMP_ONLY == 0 + if (probe_info->device) + libusb_unref_device(probe_info->device); +#endif free((void *)probe_info->manufacturer); free((void *)probe_info->product); free((void *)probe_info->serial); @@ -135,4 +148,8 @@ void probe_info_to_bmp_info(const probe_info_s *const probe, bmp_info_s *info) DEBUG_ERROR("Probe descriptor string '%s (%s)' exceeds allowable manufacturer description length\n", probe->product, probe->manufacturer); } +#if HOSTED_BMP_ONLY == 0 + if (probe->device) + info->libusb_dev = libusb_ref_device(probe->device); +#endif } diff --git a/src/platforms/hosted/probe_info.h b/src/platforms/hosted/probe_info.h index 5a84376dfea..08aa4f312f3 100644 --- a/src/platforms/hosted/probe_info.h +++ b/src/platforms/hosted/probe_info.h @@ -38,10 +38,17 @@ #include "platform.h" #include "bmp_hosted.h" +#if HOSTED_BMP_ONLY == 1 +typedef struct usb_device libusb_device; +#endif + typedef struct probe_info { bmp_type_t type; uint16_t vid; uint16_t pid; +#if HOSTED_BMP_ONLY == 0 + libusb_device *device; +#endif const char *manufacturer; const char *product; const char *serial; @@ -52,8 +59,8 @@ typedef struct probe_info { probe_info_s *probe_info_add_by_serial( probe_info_s *list, bmp_type_t type, const char *mfr, const char *product, const char *serial, const char *version); -probe_info_s *probe_info_add_by_id(probe_info_s *const list, const bmp_type_t type, uint16_t vid, uint16_t pid, - const char *const mfr, const char *const product, const char *const serial, const char *const version); +probe_info_s *probe_info_add_by_id(probe_info_s *list, bmp_type_t type, libusb_device *device, uint16_t vid, + uint16_t pid, const char *mfr, const char *product, const char *serial, const char *version); size_t probe_info_count(const probe_info_s *list); void probe_info_list_free(const probe_info_s *list);