drivers: Factor out std_gvar_min_max_step_thresholds().

This commit is contained in:
Uwe Hermann 2017-07-20 23:09:15 +02:00
parent bcee129962
commit 7bc3cfe6ff
4 changed files with 25 additions and 21 deletions

View File

@ -555,7 +555,6 @@ static int config_list(uint32_t key, GVariant **data,
GVariant *gvar, *range[2];
GVariantBuilder gvb;
unsigned int i;
double v;
devc = (sdi) ? sdi->priv : NULL;
@ -564,23 +563,18 @@ static int config_list(uint32_t key, GVariant **data,
case SR_CONF_DEVICE_OPTIONS:
return STD_CONFIG_LIST(key, data, sdi, cg, scanopts, drvopts, devopts);
case SR_CONF_VOLTAGE_THRESHOLD:
g_variant_builder_init(&gvb, G_VARIANT_TYPE_ARRAY);
if (!strcmp(devc->profile->model, "DSLogic")) {
g_variant_builder_init(&gvb, G_VARIANT_TYPE_ARRAY);
for (i = 0; i < ARRAY_SIZE(voltage_thresholds); i++) {
range[0] = g_variant_new_double(voltage_thresholds[i].low);
range[1] = g_variant_new_double(voltage_thresholds[i].high);
gvar = g_variant_new_tuple(range, 2);
g_variant_builder_add_value(&gvb, gvar);
}
} else {
for (v = 0.0; v <= 5.0; v += 0.1) {
range[0] = g_variant_new_double(v);
range[1] = g_variant_new_double(v);
gvar = g_variant_new_tuple(range, 2);
g_variant_builder_add_value(&gvb, gvar);
}
}
*data = g_variant_builder_end(&gvb);
} else {
*data = std_gvar_min_max_step_thresholds(0.0, 5.0, 0.1);
}
break;
case SR_CONF_SAMPLERATE:
*data = std_gvar_samplerates(devc->samplerates, devc->num_samplerates);

View File

@ -391,10 +391,7 @@ static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst *
const struct sr_channel_group *cg)
{
struct dev_context *devc;
GVariant *gvar, *grange[2];
GVariantBuilder gvb;
double v;
GVariant *range[2];
GVariant *grange[2];
switch (key) {
case SR_CONF_DEVICE_OPTIONS:
@ -417,14 +414,7 @@ static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst *
sizeof(int32_t));
break;
case SR_CONF_VOLTAGE_THRESHOLD:
g_variant_builder_init(&gvb, G_VARIANT_TYPE_ARRAY);
for (v = -6.0; v <= 6.0; v += 0.1) {
range[0] = g_variant_new_double(v);
range[1] = g_variant_new_double(v);
gvar = g_variant_new_tuple(range, 2);
g_variant_builder_add_value(&gvb, gvar);
}
*data = g_variant_builder_end(&gvb);
*data = std_gvar_min_max_step_thresholds(-6.0, 6.0, 0.1);
break;
case SR_CONF_LIMIT_SAMPLES:
if (!sdi)

View File

@ -962,6 +962,7 @@ SR_PRIV GVariant *std_gvar_samplerates(const uint64_t samplerates[], unsigned in
SR_PRIV GVariant *std_gvar_samplerates_steps(const uint64_t samplerates[], unsigned int n);
SR_PRIV GVariant *std_gvar_min_max_step(double min, double max, double step);
SR_PRIV GVariant *std_gvar_min_max_step_array(const double a[3]);
SR_PRIV GVariant *std_gvar_min_max_step_thresholds(const double dmin, const double dmax, const double dstep);
/*--- resource.c ------------------------------------------------------------*/

View File

@ -627,3 +627,22 @@ SR_PRIV GVariant *std_gvar_min_max_step_array(const double a[3])
return g_variant_builder_end(&gvb);
}
SR_PRIV GVariant *std_gvar_min_max_step_thresholds(const double min, const double max, const double step)
{
double d;
GVariant *gvar, *range[2];
GVariantBuilder gvb;
g_variant_builder_init(&gvb, G_VARIANT_TYPE_ARRAY);
for (d = min; d <= max; d += step) {
range[0] = g_variant_new_double(d);
range[1] = g_variant_new_double(d);
gvar = g_variant_new_tuple(range, 2);
g_variant_builder_add_value(&gvb, gvar);
}
return g_variant_builder_end(&gvb);
}