diff cp2102/find_dev.c @ 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
children 1cacc1ae56f0
line wrap: on
line diff
--- /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;
+}