]> sigrok.org Git - libsigrok.git/blobdiff - src/hwdriver.c
Remove unnecessary std_serial_dev_acquisition_stop() wrappers
[libsigrok.git] / src / hwdriver.c
index 7e16b82a9cecd2aaca78ead54f4456bea77c56bc..6758f6a96fc07c1f905d0708a00710b2481787b8 100644 (file)
@@ -672,10 +672,11 @@ static int check_key(const struct sr_dev_driver *driver,
 /**
  * Query value of a configuration key at the given driver or device instance.
  *
- * @param[in] driver The sr_dev_driver struct to query.
+ * @param[in] driver The sr_dev_driver struct to query. Must not be NULL.
  * @param[in] sdi (optional) If the key is specific to a device, this must
  *            contain a pointer to the struct sr_dev_inst to be checked.
- *            Otherwise it must be NULL.
+ *            Otherwise it must be NULL. If sdi is != NULL, sdi->priv must
+ *            also be != NULL.
  * @param[in] cg The channel group on the device for which to list the
  *                    values, or NULL.
  * @param[in] key The configuration key (SR_CONF_*).
@@ -709,6 +710,11 @@ SR_API int sr_config_get(const struct sr_dev_driver *driver,
        if (check_key(driver, sdi, cg, key, SR_CONF_GET, NULL) != SR_OK)
                return SR_ERR_ARG;
 
+       if (sdi && !sdi->priv) {
+               sr_err("Can't get config (sdi != NULL, sdi->priv == NULL).");
+               return SR_ERR;
+       }
+
        if ((ret = driver->config_get(key, data, sdi, cg)) == SR_OK) {
                log_key(sdi, cg, key, SR_CONF_GET, *data);
                /* Got a floating reference from the driver. Sink it here,
@@ -789,9 +795,11 @@ SR_API int sr_config_commit(const struct sr_dev_inst *sdi)
 /**
  * List all possible values for a configuration key.
  *
- * @param[in] driver The sr_dev_driver struct to query.
+ * @param[in] driver The sr_dev_driver struct to query. Must not be NULL.
  * @param[in] sdi (optional) If the key is specific to a device, this must
  *            contain a pointer to the struct sr_dev_inst to be checked.
+ *            Otherwise it must be NULL. If sdi is != NULL, sdi->priv must
+ *            also be != NULL.
  * @param[in] cg The channel group on the device for which to list the
  *                    values, or NULL.
  * @param[in] key The configuration key (SR_CONF_*).
@@ -824,6 +832,10 @@ SR_API int sr_config_list(const struct sr_dev_driver *driver,
                if (check_key(driver, sdi, cg, key, SR_CONF_LIST, NULL) != SR_OK)
                        return SR_ERR_ARG;
        }
+       if (sdi && !sdi->priv) {
+               sr_err("Can't list config (sdi != NULL, sdi->priv == NULL).");
+               return SR_ERR;
+       }
        if ((ret = driver->config_list(key, data, sdi, cg)) == SR_OK) {
                log_key(sdi, cg, key, SR_CONF_LIST, *data);
                g_variant_ref_sink(*data);