From: Bert Vermeulen Date: Sun, 22 Jul 2012 12:33:28 +0000 (+0200) Subject: sr: convert sr_dev_has_hwcap() to use sdi X-Git-Tag: dsupstream~775 X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=a5b35a167a32ffbaee1ce9c0de8501f781f733d1;p=libsigrok.git sr: convert sr_dev_has_hwcap() to use sdi --- diff --git a/device.c b/device.c index be647fb2..98e9fdac 100644 --- a/device.c +++ b/device.c @@ -389,7 +389,7 @@ SR_API int sr_dev_trigger_set(const struct sr_dev_inst *sdi, int probenum, /** * Determine whether the specified device has the specified capability. * - * @param dev Pointer to the device to be checked. Must not be NULL. + * @param dev Pointer to the device instance to be checked. Must not be NULL. * If the device's 'driver' field is NULL (virtual device), this * function will always return FALSE (virtual devices don't have * a hardware capabilities list). @@ -400,45 +400,23 @@ SR_API int sr_dev_trigger_set(const struct sr_dev_inst *sdi, int probenum, * FALSE is also returned upon invalid input parameters or other * error conditions. */ -SR_API gboolean sr_dev_has_hwcap(const struct sr_dev *dev, int hwcap) +SR_API gboolean sr_dev_has_hwcap(const struct sr_dev_inst *sdi, int hwcap) { const int *hwcaps; int i; - sr_spew("dev: %s: requesting hwcap %d", __func__, hwcap); - - if (!dev) { - sr_err("dev: %s: dev was NULL", __func__); + if (!sdi || !sdi->driver) return FALSE; - } - /* - * Virtual devices (which have dev->driver set to NULL) always say that - * they don't have the capability (they can't call hwcap_get_all()). - */ - if (!dev->driver) { - sr_dbg("dev: %s: dev->driver was NULL, this seems to be " - "a virtual device without capabilities", __func__); + if (sdi->driver->info_get(SR_DI_HWCAPS, + (const void **)&hwcaps, NULL) != SR_OK) return FALSE; - } - - /* TODO: Sanity check on 'hwcap'. */ - - if (dev->driver->info_get(SR_DI_HWCAPS, - (const void **)&hwcaps, NULL) != SR_OK) { - sr_err("dev: %s: dev has no capabilities", __func__); - return FALSE; - } for (i = 0; hwcaps[i]; i++) { - if (hwcaps[i] != hwcap) - continue; - sr_spew("dev: %s: found hwcap %d", __func__, hwcap); - return TRUE; + if (hwcaps[i] == hwcap) + return TRUE; } - sr_spew("dev: %s: hwcap %d not found", __func__, hwcap); - return FALSE; } diff --git a/proto.h b/proto.h index 7aa876f9..bf98ce57 100644 --- a/proto.h +++ b/proto.h @@ -61,7 +61,7 @@ SR_API int sr_dev_probe_enable(const struct sr_dev_inst *sdi, int probenum, SR_API int sr_dev_trigger_remove_all(struct sr_dev *dev); SR_API int sr_dev_trigger_set(const struct sr_dev_inst *sdi, int probenum, const char *trigger); -SR_API gboolean sr_dev_has_hwcap(const struct sr_dev *dev, int hwcap); +SR_API gboolean sr_dev_has_hwcap(const struct sr_dev_inst *sdi, int hwcap); SR_API int sr_dev_info_get(const struct sr_dev *dev, int id, const void **data); /*--- filter.c --------------------------------------------------------------*/