X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhwdriver.c;h=c81a87a169d0f9e8ef52a1abba87b51c4cb5d63a;hb=a7e48f3c0665c18d901f7491823bbefda2c8555e;hp=96b6cfac0d48b4d24c67c61e88cc8074599f5fe9;hpb=e66d1892d0dd16ed166fc8f13493f95de0607362;p=libsigrok.git diff --git a/src/hwdriver.c b/src/hwdriver.c index 96b6cfac..c81a87a1 100644 --- a/src/hwdriver.c +++ b/src/hwdriver.c @@ -62,6 +62,7 @@ static struct sr_key_info sr_key_info_config[] = { {SR_CONF_ELECTRONIC_LOAD, SR_T_STRING, NULL, "Electronic load", NULL}, {SR_CONF_SCALE, SR_T_STRING, NULL, "Scale", NULL}, {SR_CONF_SIGNAL_GENERATOR, SR_T_STRING, NULL, "Signal generator", NULL}, + {SR_CONF_POWERMETER, SR_T_STRING, NULL, "Power meter", NULL}, /* Driver scan options */ {SR_CONF_CONN, SR_T_STRING, "conn", @@ -665,9 +666,9 @@ static int check_key(const struct sr_dev_driver *driver, const char *opstr; if (sdi && cg) - suffix = " for this device and channel group"; + suffix = " for this device instance and channel group"; else if (sdi) - suffix = " for this device"; + suffix = " for this device instance"; else suffix = ""; @@ -689,6 +690,15 @@ static int check_key(const struct sr_dev_driver *driver, return SR_ERR_ARG; } break; + case SR_CONF_CAPTURE_RATIO: + /* Capture ratio must always be between 0 and 100. */ + if (op != SR_CONF_SET || !data) + break; + if (g_variant_get_uint64(data) > 100) { + sr_err("Capture ratio must be 0..100."); + return SR_ERR_ARG; + } + break; } if (sr_config_list(driver, sdi, cg, SR_CONF_DEVICE_OPTIONS, &gvar_opts) != SR_OK) { @@ -771,6 +781,10 @@ SR_API int sr_config_get(const struct sr_dev_driver *driver, g_variant_ref_sink(*data); } + if (ret == SR_ERR_CHANNEL_GROUP) + sr_err("%s: No channel group specified.", + (sdi) ? sdi->driver->name : "unknown"); + return ret; } @@ -819,6 +833,10 @@ SR_API int sr_config_set(const struct sr_dev_inst *sdi, g_variant_unref(data); + if (ret == SR_ERR_CHANNEL_GROUP) + sr_err("%s: No channel group specified.", + (sdi) ? sdi->driver->name : "unknown"); + return ret; } @@ -860,6 +878,9 @@ SR_API int sr_config_commit(const struct sr_dev_inst *sdi) * @param[in] cg The channel group on the device instance for which to list * the values, or NULL. If this device instance doesn't * have channel groups, this must not be != NULL. + * If cg is NULL, this function will return the "common" device + * instance options that are channel-group independent. Otherwise + * it will return the channel-group specific options. * @param[in] key The configuration key (SR_CONF_*). * @param[in,out] data A pointer to a GVariant where the list will be stored. * The caller is given ownership of the GVariant and must thus