- /* TODO: Fix this in libsigrok first. */
- /*sr_dev_scan();*/
- devs = sr_dev_list();
- for (l = devs; l; l = l->next) {
- dev = l->data;
- sdi = GET_DEV_INST(dev);
- gchar *name = sdi->model ? sdi->model : sdi->vendor;
+#if 0
+ if (devices) {
+ /* TODO: tell drivers to clean up all instances */
+ g_free(devices);
+ }
+#endif
+ devices = NULL;
+
+ /* Scan all drivers for all devices. */
+ drivers = sr_driver_list();
+ for (i = 0; drivers[i]; i++) {
+ tmpdevs = sr_driver_scan(drivers[i], NULL);
+ for (l = tmpdevs; l; l = l->next)
+ devices = g_slist_append(devices, l->data);
+ g_slist_free(tmpdevs);
+ }
+ num_devs = g_slist_length(devices);
+
+ for (i = 0; i < num_devs; ++i) {
+ sdi = (struct sr_dev_inst *)g_slist_nth_data(devices, i);
+
+ gchar *name = sdi->driver->name;