From: Uwe Hermann Date: Thu, 20 Jul 2017 21:09:15 +0000 (+0200) Subject: drivers: Factor out std_gvar_min_max_step_thresholds(). X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=7bc3cfe6ffefb8d4768a247df6a0c4dccc21ee53;p=libsigrok.git drivers: Factor out std_gvar_min_max_step_thresholds(). --- diff --git a/src/hardware/dreamsourcelab-dslogic/api.c b/src/hardware/dreamsourcelab-dslogic/api.c index c8bdb6d1..41f8a737 100644 --- a/src/hardware/dreamsourcelab-dslogic/api.c +++ b/src/hardware/dreamsourcelab-dslogic/api.c @@ -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); } + *data = g_variant_builder_end(&gvb); } 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 = std_gvar_min_max_step_thresholds(0.0, 5.0, 0.1); } - *data = g_variant_builder_end(&gvb); break; case SR_CONF_SAMPLERATE: *data = std_gvar_samplerates(devc->samplerates, devc->num_samplerates); diff --git a/src/hardware/zeroplus-logic-cube/api.c b/src/hardware/zeroplus-logic-cube/api.c index e8cdefdb..dd0e66d5 100644 --- a/src/hardware/zeroplus-logic-cube/api.c +++ b/src/hardware/zeroplus-logic-cube/api.c @@ -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) diff --git a/src/libsigrok-internal.h b/src/libsigrok-internal.h index 61858ebb..112ee460 100644 --- a/src/libsigrok-internal.h +++ b/src/libsigrok-internal.h @@ -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 ------------------------------------------------------------*/ diff --git a/src/std.c b/src/std.c index 5748ba02..45cc3a49 100644 --- a/src/std.c +++ b/src/std.c @@ -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); +}