X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=device.c;h=eb2e2b4cb2c02b392c8f02f31095ca027128a9de;hb=7f6a3b43ad9e26a2928672927960bcc02a2c7510;hp=cd9668ec033a3c035784f316ee9ad801d2101ba6;hpb=bb7ef79377ae617e1275373e0b631beb7f909d73;p=libsigrok.git diff --git a/device.c b/device.c index cd9668ec..eb2e2b4c 100644 --- a/device.c +++ b/device.c @@ -59,10 +59,11 @@ static GSList *devs = NULL; */ SR_API int sr_dev_scan(void) { - GSList *plugins, *l; - struct sr_dev_plugin *plugin; + int i; + struct sr_dev_plugin **plugins; - if (!(plugins = sr_hw_list())) { + plugins = sr_hw_list(); + if (!plugins[0]) { sr_err("dev: %s: no supported devices/hwplugins", __func__); return SR_ERR; /* TODO: More specific error? */ } @@ -72,11 +73,8 @@ SR_API int sr_dev_scan(void) * a firmware upload and associated delay, we may as well get all * of these out of the way first. */ - for (l = plugins; l; l = l->next) { - plugin = l->data; - /* TODO: Handle 'plugin' being NULL. */ - sr_hw_init(plugin); - } + for (i = 0; plugins[i]; i++) + sr_hw_init(plugins[i]); return SR_OK; } @@ -374,7 +372,7 @@ SR_API int sr_dev_trigger_set(struct sr_dev *dev, int probenum, */ SR_API gboolean sr_dev_has_hwcap(const struct sr_dev *dev, int hwcap) { - int *capabilities, i; + int *hwcaps, i; if (!dev) { sr_err("dev: %s: dev was NULL", __func__); @@ -388,13 +386,13 @@ SR_API gboolean sr_dev_has_hwcap(const struct sr_dev *dev, int hwcap) /* TODO: Sanity check on 'hwcap'. */ - if (!(capabilities = dev->plugin->get_capabilities())) { + if (!(hwcaps = dev->plugin->hwcap_get_all())) { sr_err("dev: %s: dev has no capabilities", __func__); return FALSE; /* TODO: SR_ERR*. */ } - for (i = 0; capabilities[i]; i++) { - if (capabilities[i] != hwcap) + for (i = 0; hwcaps[i]; i++) { + if (hwcaps[i] != hwcap) continue; sr_spew("dev: %s: found hwcap %d", __func__, hwcap); return TRUE; @@ -424,7 +422,7 @@ SR_API int sr_dev_info_get(const struct sr_dev *dev, int id, const void **data) if (data == NULL) return SR_ERR_ARG; - *data = dev->plugin->get_dev_info(dev->plugin_index, id); + *data = dev->plugin->dev_info_get(dev->plugin_index, id); if (*data == NULL) return SR_ERR;