]> sigrok.org Git - libsigrok.git/blobdiff - hwdriver.c
uni-t-dmm: Add support for the Voltcraft VC-840.
[libsigrok.git] / hwdriver.c
index 4635f3c4b7ace23bd64b39b295197e3d3d1becbf..e9a15c1a6f6a5cf9c270c67e2f7c4f9ffb3c795b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * This file is part of the sigrok project.
+ * This file is part of the libsigrok project.
  *
  * Copyright (C) 2013 Bert Vermeulen <bert@biot.com>
  *
@@ -61,6 +61,8 @@ static struct sr_config_info sr_config_info_data[] = {
                "Pre-trigger capture ratio", NULL},
        {SR_CONF_PATTERN_MODE, SR_T_CHAR, "pattern",
                "Pattern generator mode", NULL},
+       {SR_CONF_TRIGGER_TYPE, SR_T_CHAR, "triggertype",
+               "Trigger types", NULL},
        {SR_CONF_RLE, SR_T_BOOL, "rle",
                "Run Length Encoding", NULL},
        {SR_CONF_TRIGGER_SLOPE, SR_T_UINT64, "triggerslope",
@@ -158,11 +160,14 @@ extern SR_PRIV struct sr_dev_driver radioshack_22_805_driver_info;
 extern SR_PRIV struct sr_dev_driver radioshack_22_812_driver_info;
 extern SR_PRIV struct sr_dev_driver voltcraft_vc820_ser_driver_info;
 extern SR_PRIV struct sr_dev_driver voltcraft_vc840_ser_driver_info;
+extern SR_PRIV struct sr_dev_driver uni_t_ut61d_ser_driver_info;
 extern SR_PRIV struct sr_dev_driver uni_t_ut61e_ser_driver_info;
 #endif
 #ifdef HAVE_HW_UNI_T_DMM
 extern SR_PRIV struct sr_dev_driver uni_t_ut61d_driver_info;
+extern SR_PRIV struct sr_dev_driver uni_t_ut61e_driver_info;
 extern SR_PRIV struct sr_dev_driver voltcraft_vc820_driver_info;
+extern SR_PRIV struct sr_dev_driver voltcraft_vc840_driver_info;
 #endif
 /** @endcond */
 
@@ -240,11 +245,14 @@ static struct sr_dev_driver *drivers_list[] = {
        &radioshack_22_812_driver_info,
        &voltcraft_vc820_ser_driver_info,
        &voltcraft_vc840_ser_driver_info,
+       &uni_t_ut61d_ser_driver_info,
        &uni_t_ut61e_ser_driver_info,
 #endif
 #ifdef HAVE_HW_UNI_T_DMM
        &uni_t_ut61d_driver_info,
+       &uni_t_ut61e_driver_info,
        &voltcraft_vc820_driver_info,
+       &voltcraft_vc840_driver_info,
 #endif
        NULL,
 };
@@ -368,6 +376,19 @@ SR_PRIV struct sr_config *sr_config_new(int key, GVariant *data)
        return src;
 }
 
+SR_PRIV void sr_config_free(struct sr_config *src)
+{
+
+       if (!src || !src->data) {
+               sr_err("%s: invalid data!", __func__);
+               return;
+       }
+
+       g_variant_unref(src->data);
+       g_free(src);
+
+}
+
 /**
  * Returns information about the given driver or device instance.
  *
@@ -395,6 +416,9 @@ SR_API int sr_config_get(const struct sr_dev_driver *driver, int key,
        if (!driver || !data)
                return SR_ERR;
 
+       if (!driver->config_get)
+               return SR_ERR_ARG;
+
        if ((ret = driver->config_get(key, data, sdi)) == SR_OK) {
                /* Got a floating reference from the driver. Sink it here,
                 * caller will need to unref when done with it. */
@@ -459,8 +483,10 @@ SR_API int sr_config_list(const struct sr_dev_driver *driver, int key,
 {
        int ret;
 
-       if (!driver || !data || !driver->config_list)
+       if (!driver || !data)
                ret = SR_ERR;
+       else if (!driver->config_list)
+               ret = SR_ERR_ARG;
        else if ((ret = driver->config_list(key, data, sdi)) == SR_OK)
                g_variant_ref_sink(*data);