+ return ret;
+}
+
+/**
+ * Determine whether the specified device instance has the specified
+ * capability.
+ *
+ * @param sdi 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).
+ * @param key The option that should be checked for support on the
+ * specified device.
+ *
+ * @return TRUE if the device has the specified option, FALSE otherwise.
+ * FALSE is also returned on invalid input parameters or other
+ * error conditions.
+ *
+ * @since 0.1.0 (but the API changed in 0.2.0)
+ */
+SR_API gboolean sr_dev_has_option(const struct sr_dev_inst *sdi, int key)
+{
+ GVariant *gvar;
+ const int *devopts;
+ gsize num_opts, i;
+ int ret;
+
+ if (!sdi || !sdi->driver || !sdi->driver->config_list)
+ return FALSE;
+
+ if (sdi->driver->config_list(SR_CONF_DEVICE_OPTIONS, &gvar, NULL) != SR_OK)
+ return FALSE;
+
+ ret = FALSE;
+ devopts = g_variant_get_fixed_array(gvar, &num_opts, sizeof(int32_t));
+ for (i = 0; i < num_opts; i++) {
+ if (devopts[i] == key) {
+ ret = TRUE;
+ break;
+ }