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