X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Fcommon%2Fscpi_usbtmc.c;h=1ffc34ae9392c8826161e21e669eaef232daafeb;hb=831d7c70eb901788d6fa7551807644b1130cce32;hp=75fcf3aed2a789d39d8ddf2d2bcd175704f59635;hpb=a849c43a5070fce7b39d31383d4b370872e40a2b;p=libsigrok.git diff --git a/hardware/common/scpi_usbtmc.c b/hardware/common/scpi_usbtmc.c index 75fcf3ae..1ffc34ae 100644 --- a/hardware/common/scpi_usbtmc.c +++ b/hardware/common/scpi_usbtmc.c @@ -37,11 +37,35 @@ struct usbtmc_scpi { int response_bytes_read; }; -static int scpi_usbtmc_dev_inst_new(void *priv, const char *resource, - char **params, const char *serialcomm) +static GSList *scpi_usbtmc_scan(struct drv_context *drvc) +{ + GSList *resources = NULL; + GDir *dir; + const char *dev_name; + char *resource; + + (void)drvc; + + if (!(dir = g_dir_open("/sys/class/usbmisc/", 0, NULL))) + if (!(dir = g_dir_open("/sys/class/usb/", 0, NULL))) + return NULL; + while ((dev_name = g_dir_read_name(dir))) { + if (strncmp(dev_name, "usbtmc", 6)) + continue; + resource = g_strconcat("/dev/", dev_name, NULL); + resources = g_slist_append(resources, resource); + } + g_dir_close(dir); + + return resources; +} + +static int scpi_usbtmc_dev_inst_new(void *priv, struct drv_context *drvc, + const char *resource, char **params, const char *serialcomm) { struct usbtmc_scpi *uscpi = priv; + (void)drvc; (void)params; (void)serialcomm; @@ -189,6 +213,7 @@ SR_PRIV const struct sr_scpi_dev_inst scpi_usbtmc_dev = { .name = "USBTMC", .prefix = "/dev/usbtmc", .priv_size = sizeof(struct usbtmc_scpi), + .scan = scpi_usbtmc_scan, .dev_inst_new = scpi_usbtmc_dev_inst_new, .open = scpi_usbtmc_open, .source_add = scpi_usbtmc_source_add,