X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhwdriver.c;h=5f7e2371475c634910f81253f998dfddf67bcbcc;hb=755793e991c4d429f99254f23008bfddb89d8e00;hp=fe86fadbd27fb51c8736e9b57af3a14654a5b981;hpb=87dc5410273abf9307dc25a2528a6aa98a8ae44b;p=libsigrok.git diff --git a/src/hwdriver.c b/src/hwdriver.c index fe86fadb..5f7e2371 100644 --- a/src/hwdriver.c +++ b/src/hwdriver.c @@ -177,8 +177,12 @@ static struct sr_key_info sr_key_info_config[] = { "Under-voltage condition", NULL}, {SR_CONF_UNDER_VOLTAGE_CONDITION_ACTIVE, SR_T_BOOL, "uvc_active", "Under-voltage condition active", NULL}, + {SR_CONF_UNDER_VOLTAGE_CONDITION_THRESHOLD, SR_T_FLOAT, "uvc_threshold", + "Under-voltage condition threshold", NULL}, {SR_CONF_TRIGGER_LEVEL, SR_T_FLOAT, "triggerlevel", "Trigger level", NULL}, + {SR_CONF_EXTERNAL_CLOCK_SOURCE, SR_T_STRING, "external_clock_source", + "External clock source", NULL}, /* Special stuff */ {SR_CONF_SESSIONFILE, SR_T_STRING, "sessionfile", @@ -633,7 +637,8 @@ SR_PRIV int sr_dev_acquisition_stop(struct sr_dev_inst *sdi) } static void log_key(const struct sr_dev_inst *sdi, - const struct sr_channel_group *cg, uint32_t key, int op, GVariant *data) + const struct sr_channel_group *cg, uint32_t key, unsigned int op, + GVariant *data) { const char *opstr; const struct sr_key_info *srci; @@ -655,7 +660,7 @@ static void log_key(const struct sr_dev_inst *sdi, static int check_key(const struct sr_dev_driver *driver, const struct sr_dev_inst *sdi, const struct sr_channel_group *cg, - uint32_t key, int op, GVariant *data) + uint32_t key, unsigned int op, GVariant *data) { const struct sr_key_info *srci; gsize num_opts, i; @@ -666,9 +671,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 = ""; @@ -690,6 +695,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) {