From 4000496abc384e941b1aa0ca781962aac2503a7f Mon Sep 17 00:00:00 2001 From: Gwenhael Goavec-Merou Date: Thu, 14 May 2026 17:38:02 +0200 Subject: [PATCH] main: ftdi-serial is deprecated. Added --usb-serial-num argument --- src/main.cpp | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 9ca2940..bb48463 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -79,7 +79,7 @@ struct arguments { std::string secondary_bit_file; std::string device; std::string cable; - std::string ftdi_serial; + std::string usb_serial_num; int ftdi_channel; int status_pin; uint32_t freq; @@ -264,13 +264,6 @@ int main(int argc, char **argv) cable.config.interface = mapping[args.ftdi_channel]; } - if (!args.ftdi_serial.empty()) { - if (cable.type != MODE_FTDI_SERIAL && cable.type != MODE_FTDI_BITBANG){ - printError("Error: FTDI serial param is for FTDI cables."); - return EXIT_FAILURE; - } - } - if (args.status_pin != -1) { if (cable.type != MODE_FTDI_SERIAL){ printError("Error: FTDI status pin is for FTDI MPSSE cables."); @@ -389,7 +382,7 @@ int main(int argc, char **argv) Jtag *jtag; try { - jtag = new Jtag(cable, &pins_config, args.device, args.ftdi_serial, + jtag = new Jtag(cable, &pins_config, args.device, args.usb_serial_num, args.freq, args.verbose, args.ip_adr, args.port, args.invert_read_edge, args.probe_firmware, args.user_misc_devs); @@ -667,7 +660,7 @@ int run_xvc_server(const struct arguments &args, const cable_t &cable, try { XVC_server *xvc = NULL; xvc = new XVC_server(args.port, cable, pins_config, args.device, - args.ftdi_serial, args.freq, args.verbose, args.ip_adr, + args.usb_serial_num, args.freq, args.verbose, args.ip_adr, args.invert_read_edge, args.probe_firmware); /* create connection */ xvc->open_connection(); @@ -889,6 +882,7 @@ int parse_opt(int argc, char **argv, struct arguments *args, jtag_pins_conf_t *pins_config) { std::string freqo; + std::string ftdi_serial; std::vector pins, bus_dev_num; bool verbose = false, quiet = false; int8_t verbose_level = -2; @@ -927,8 +921,10 @@ int parse_opt(int argc, char **argv, struct arguments *args, ("busdev-num", "select a probe by it bus and device number (bus_num:device_addr)", cxxopts::value>(bus_dev_num)) - ("ftdi-serial", "FTDI chip serial number", - cxxopts::value(args->ftdi_serial)) + ("usb-serial-num", "USB iSerial (FTDI chip serial number)", + cxxopts::value(args->usb_serial_num)) + ("ftdi-serial", "FTDI chip serial number (Deprecated)", + cxxopts::value(ftdi_serial)) ("ftdi-channel", "FTDI chip channel number (channels 0-3 map to A-D)", cxxopts::value(args->ftdi_channel)) @@ -1134,6 +1130,14 @@ int parse_opt(int argc, char **argv, struct arguments *args, } } + if (result.count("ftdi-serial")) { + if (result.count("usb_serial_num")) { + printError("Error: ftdi_serial and usb_serial_num can't be used at the same time."); + return -1; + } + args->usb_serial_num = ftdi_serial; + } + if (result.count("busdev-num")) { if (bus_dev_num.size() != 2) { printError("Error: busdev-num must be xx:yy");