FreeCalypso > hg > fc-usbser-tools
changeset 97:8d35346f1d46
cp2102 tools: accept "default" as device-selector
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 28 Sep 2023 03:26:11 +0000 |
parents | c6d04771bf6a |
children | 1cacc1ae56f0 |
files | cp2102/Makefile cp2102/find_dev.c cp2102/read_baudtab.c cp2102/read_eeprom_main.c cp2102/read_partno.c cp2102/write_eeprom_main.c |
diffstat | 6 files changed, 61 insertions(+), 25 deletions(-) [+] |
line wrap: on
line diff
--- a/cp2102/Makefile Thu Sep 28 02:38:59 2023 +0000 +++ b/cp2102/Makefile Thu Sep 28 03:26:11 2023 +0000 @@ -17,10 +17,13 @@ DECODE_EEDESC_OBJS= decode_usb_desc.o intel_hex_in.o PATCH_FILE_OBJS= apply_eeprom_patch.o intel_hex_in.o intel_hex_out.o \ patch_ee_file.o -READ_BAUDTAB_OBJS= decode_baudtab.o read_baudtab.o read_eeprom.o -READ_EEPROM_OBJS= intel_hex_out.o read_eeprom.o read_eeprom_main.o +READ_BAUDTAB_OBJS= decode_baudtab.o find_dev.o read_baudtab.o read_eeprom.o +READ_EEPROM_OBJS= find_dev.o intel_hex_out.o read_eeprom.o \ + read_eeprom_main.o +READ_PARTNO_OBJS= find_dev.o read_partno.o RW_TEST_OBJS= intel_hex_in.o intel_hex_out.o file_rw_test.o -WRITE_EEPROM_OBJS= intel_hex_in.o write_eeprom.o write_eeprom_main.o +WRITE_EEPROM_OBJS= find_dev.o intel_hex_in.o write_eeprom.o \ + write_eeprom_main.o all: ${PROGS} ${NOINST} @@ -39,8 +42,8 @@ cp2102-read-eeprom: ${READ_EEPROM_OBJS} ${LIBS} ${CC} ${CFLAGS} -o $@ ${READ_EEPROM_OBJS} ${LIBS} -lusb -cp2102-read-partno: read_partno.o ${LIBS} - ${CC} ${CFLAGS} -o $@ read_partno.o ${LIBS} -lusb +cp2102-read-partno: ${READ_PARTNO_OBJS} ${LIBS} + ${CC} ${CFLAGS} -o $@ ${READ_PARTNO_OBJS} ${LIBS} -lusb cp2102-write-eeprom: ${WRITE_EEPROM_OBJS} ${LIBS} ${CC} ${CFLAGS} -o $@ ${WRITE_EEPROM_OBJS} ${LIBS} -lusb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cp2102/find_dev.c Thu Sep 28 03:26:11 2023 +0000 @@ -0,0 +1,41 @@ +/* + * The function implemented in this module is common to all programs in + * FC CP2102 tools suite that operate on physical hardware: it asks libuwrap + * to locate either the default CP2102 VID:PID or a custom device selector + * string. + */ + +#include <sys/types.h> +#include <string.h> +#include <strings.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <usb.h> +#include "../libuwrap/find_dev.h" + +static const struct usbdev_matchspec default_id = {0x10C4, 0xEA60}; + +struct usb_device * +find_cp2102_device(devsel_arg) + char *devsel_arg; +{ + struct usb_device *dev; + + if (!strcmp(devsel_arg, "default")) { + dev = find_usbdev_by_matchspec(&default_id); + if (!dev) { + fprintf(stderr, + "error: no default-ID CP2102 device found\n"); + exit(1); + } + } else { + dev = find_usbdev_by_desc_string(devsel_arg); + if (!dev) { + fprintf(stderr, + "error: specified USB device not found\n"); + exit(1); + } + } + return dev; +}
--- a/cp2102/read_baudtab.c Thu Sep 28 02:38:59 2023 +0000 +++ b/cp2102/read_baudtab.c Thu Sep 28 03:26:11 2023 +0000 @@ -14,6 +14,8 @@ #include "../libuwrap/find_dev.h" #include "cp210x_defs.h" +extern struct usb_device *find_cp2102_device(); + u_char eeprom[SIZE_EEPROM]; main(argc, argv) @@ -26,11 +28,7 @@ fprintf(stderr, "usage: %s device-selector\n", argv[0]); exit(1); } - dev = find_usbdev_by_desc_string(argv[1]); - if (!dev) { - fprintf(stderr, "error: specified USB device not found\n"); - exit(1); - } + dev = find_cp2102_device(argv[1]); usbh = usb_open(dev); if (!usbh) { fprintf(stderr, "error: usb_open() failed\n");
--- a/cp2102/read_eeprom_main.c Thu Sep 28 02:38:59 2023 +0000 +++ b/cp2102/read_eeprom_main.c Thu Sep 28 03:26:11 2023 +0000 @@ -15,6 +15,8 @@ #include "../libuwrap/find_dev.h" #include "cp210x_defs.h" +extern struct usb_device *find_cp2102_device(); + u_char eeprom[SIZE_EEPROM]; main(argc, argv) @@ -29,11 +31,7 @@ argv[0]); exit(1); } - dev = find_usbdev_by_desc_string(argv[1]); - if (!dev) { - fprintf(stderr, "error: specified USB device not found\n"); - exit(1); - } + dev = find_cp2102_device(argv[1]); usbh = usb_open(dev); if (!usbh) { fprintf(stderr, "error: usb_open() failed\n");
--- a/cp2102/read_partno.c Thu Sep 28 02:38:59 2023 +0000 +++ b/cp2102/read_partno.c Thu Sep 28 03:26:11 2023 +0000 @@ -14,6 +14,8 @@ #include "../libuwrap/find_dev.h" #include "cp210x_defs.h" +extern struct usb_device *find_cp2102_device(); + main(argc, argv) char **argv; { @@ -26,11 +28,7 @@ fprintf(stderr, "usage: %s device-selector\n", argv[0]); exit(1); } - dev = find_usbdev_by_desc_string(argv[1]); - if (!dev) { - fprintf(stderr, "error: specified USB device not found\n"); - exit(1); - } + dev = find_cp2102_device(argv[1]); usbh = usb_open(dev); if (!usbh) { fprintf(stderr, "error: usb_open() failed\n");
--- a/cp2102/write_eeprom_main.c Thu Sep 28 02:38:59 2023 +0000 +++ b/cp2102/write_eeprom_main.c Thu Sep 28 03:26:11 2023 +0000 @@ -14,6 +14,8 @@ #include "../libuwrap/open_close.h" #include "cp210x_defs.h" +extern struct usb_device *find_cp2102_device(); + u_char eeprom[SIZE_EEPROM]; char *device_selector, *input_filename; int no_detach; @@ -53,11 +55,7 @@ process_cmdline(argc, argv); read_intel_hex(input_filename); - dev = find_usbdev_by_desc_string(device_selector); - if (!dev) { - fprintf(stderr, "error: specified USB device not found\n"); - exit(1); - } + dev = find_cp2102_device(device_selector); usbh = usb_open(dev); if (!usbh) { fprintf(stderr, "error: usb_open() failed\n");