- if (devc->has_digital) {
- for (i = 0; i < 16; i++) {
- if (!(channel_name = g_strdup_printf("D%d", i)))
- return NULL;
- probe = sr_probe_new(i, SR_PROBE_LOGIC, TRUE, channel_name);
- g_free(channel_name);
- if (!probe)
- return NULL;
- sdi->probes = g_slist_append(sdi->probes, probe);
+ devices = NULL;
+ if (port) {
+ if (probe_port(port, &devices) == SR_ERR_MALLOC)
+ return NULL;
+ } else {
+ 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;
+ port = g_strconcat("/dev/", dev_name, NULL);
+ ret = probe_port(port, &devices);
+ g_free(port);
+ if (ret == SR_ERR_MALLOC) {
+ g_dir_close(dir);
+ return NULL;