X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhwdriver.c;h=fafd93fc45e9ece33271722a400ddfa6f0b60ecd;hb=709468baf7626b162b5559c101516289d9bbb258;hp=db3f615afecec7d1dbe470fd10ce0282f402c0e4;hpb=2c4600191b8442a64717f048c6a77ef77d6169ff;p=libsigrok.git diff --git a/src/hwdriver.c b/src/hwdriver.c index db3f615a..fafd93fc 100644 --- a/src/hwdriver.c +++ b/src/hwdriver.c @@ -199,7 +199,7 @@ static struct sr_key_info sr_key_info_config[] = { "Sample limit", NULL}, {SR_CONF_LIMIT_FRAMES, SR_T_UINT64, "limit_frames", "Frame limit", NULL}, - {SR_CONF_CONTINUOUS, SR_T_UINT64, "continuous", + {SR_CONF_CONTINUOUS, SR_T_BOOL, "continuous", "Continuous sampling", NULL}, {SR_CONF_DATALOG, SR_T_BOOL, "datalog", "Datalog", NULL}, @@ -278,6 +278,7 @@ static struct sr_key_info sr_key_info_mqflag[] = { {SR_MQFLAG_AVG, 0, "average", "Average", NULL}, {SR_MQFLAG_REFERENCE, 0, "reference", "Reference", NULL}, {SR_MQFLAG_UNSTABLE, 0, "unstable", "Unstable", NULL}, + {SR_MQFLAG_FOUR_WIRE, 0, "four_wire", "4-Wire", NULL}, ALL_ZERO }; @@ -671,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_*). @@ -708,6 +710,9 @@ 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) + 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, @@ -721,7 +726,8 @@ SR_API int sr_config_get(const struct sr_dev_driver *driver, /** * Set value of a configuration key in a device instance. * - * @param[in] sdi The device instance. + * @param[in] sdi The device instance. Must not be NULL. sdi->driver and + * sdi->priv must not be NULL either. * @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_*). @@ -745,7 +751,7 @@ SR_API int sr_config_set(const struct sr_dev_inst *sdi, g_variant_ref_sink(data); - if (!sdi || !sdi->driver || !data) + if (!sdi || !sdi->driver || !sdi->priv || !data) ret = SR_ERR; else if (!sdi->driver->config_set) ret = SR_ERR_ARG;