]> sigrok.org Git - libsigrok.git/blobdiff - device.c
Add sr_device_get_info
[libsigrok.git] / device.c
index 9b68eb0b28a6db3cb34b76524ba151ac004f57a4..30649cd4f64b0ac8165b452a599f1544c867c6a9 100644 (file)
--- a/device.c
+++ b/device.c
@@ -481,3 +481,32 @@ gboolean sr_device_has_hwcap(const struct sr_device *device, int hwcap)
 
        return FALSE;
 }
+
+/**
+ * Returns information about the given device.
+ *
+ * @param device Pointer to the device to be checked. Must not be NULL.
+ *               The device's 'plugin' field must not be NULL either.
+ * @param id     The type of information.
+ * @param data   The return value. Must not be NULL.
+ *
+ * @return SR_OK upon success, SR_ERR_ARG upon invalid arguments, or SR_ERR
+ *         upon other errors.
+ */
+int sr_device_get_info(const struct sr_device *device, int id,
+                                          const void **data)
+{
+       if ((device == NULL) || (device->plugin == NULL))
+               return SR_ERR_ARG;
+
+       if (data == NULL)
+               return SR_ERR_ARG;
+
+       *data = device->plugin->get_device_info(device->plugin_index, id);
+
+       if (*data == NULL)
+               return SR_ERR;
+
+       return SR_OK;
+}
+