[DS_EDGE_FALLING] = "falling",
};
-static const struct {
- gdouble low;
- gdouble high;
-} voltage_thresholds[] = {
+static const struct voltage_threshold voltage_thresholds[] = {
{ 0.7, 1.4 },
{ 1.4, 3.6 },
};
const struct sr_dev_inst *sdi, const struct sr_channel_group *cg)
{
struct dev_context *devc;
- GVariant *gvar, *range[2];
- GVariantBuilder gvb;
- unsigned int i;
devc = (sdi) ? sdi->priv : NULL;
case SR_CONF_DEVICE_OPTIONS:
return STD_CONFIG_LIST(key, data, sdi, cg, scanopts, drvopts, devopts);
case SR_CONF_VOLTAGE_THRESHOLD:
- 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 {
+ if (!strcmp(devc->profile->model, "DSLogic"))
+ *data = std_gvar_thresholds(ARRAY_AND_SIZE(voltage_thresholds));
+ 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);
static const struct {
enum voltage_range range;
- gdouble low;
- gdouble high;
-} volt_thresholds[] = {
- { VOLTAGE_RANGE_18_33_V, 0.7, 1.4 },
- { VOLTAGE_RANGE_5_V, 1.4, 3.6 },
+} volt_thresholds_ranges[] = {
+ { VOLTAGE_RANGE_18_33_V, },
+ { VOLTAGE_RANGE_5_V, },
+};
+
+static const struct voltage_threshold volt_thresholds[] = {
+ { 0.7, 1.4 },
+ { 1.4, 3.6 },
};
static const uint64_t samplerates[] = {
ret = SR_ERR;
for (i = 0; i < ARRAY_SIZE(volt_thresholds); i++) {
if (devc->selected_voltage_range !=
- volt_thresholds[i].range)
+ volt_thresholds_ranges[i].range)
continue;
*data = std_gvar_tuple_double(volt_thresholds[i].low, volt_thresholds[i].high);
ret = SR_OK;
if (fabs(volt_thresholds[i].low - low) < 0.1 &&
fabs(volt_thresholds[i].high - high) < 0.1) {
devc->selected_voltage_range =
- volt_thresholds[i].range;
+ volt_thresholds_ranges[i].range;
ret = SR_OK;
break;
}
static int config_list(uint32_t key, GVariant **data,
const struct sr_dev_inst *sdi, const struct sr_channel_group *cg)
{
- GVariant *gvar, *range[2];
- GVariantBuilder gvb;
- unsigned int i;
-
switch (key) {
case SR_CONF_SCAN_OPTIONS:
case SR_CONF_DEVICE_OPTIONS:
*data = std_gvar_samplerates(ARRAY_AND_SIZE(samplerates));
break;
case SR_CONF_VOLTAGE_THRESHOLD:
- g_variant_builder_init(&gvb, G_VARIANT_TYPE_ARRAY);
- for (i = 0; i < ARRAY_SIZE(volt_thresholds); i++) {
- range[0] = g_variant_new_double(volt_thresholds[i].low);
- range[1] = g_variant_new_double(volt_thresholds[i].high);
- gvar = g_variant_new_tuple(range, 2);
- g_variant_builder_add_value(&gvb, gvar);
- }
- *data = g_variant_builder_end(&gvb);
+ *data = std_gvar_thresholds(ARRAY_AND_SIZE(volt_thresholds));
break;
case SR_CONF_TRIGGER_MATCH:
*data = std_gvar_array_i32(ARRAY_AND_SIZE(trigger_matches));
SR_PRIV GVariant *std_gvar_array_u32(const uint32_t *a, unsigned int n);
SR_PRIV GVariant *std_gvar_array_u64(const uint64_t *a, unsigned int n);
+struct voltage_threshold {
+ double low;
+ double high;
+};
+
+SR_PRIV GVariant *std_gvar_thresholds(const struct voltage_threshold a[], unsigned int n);
+
/*--- resource.c ------------------------------------------------------------*/
SR_PRIV int64_t sr_file_get_size(FILE *file);
return g_variant_new_fixed_array(G_VARIANT_TYPE_UINT64,
a, n, sizeof(uint64_t));
}
+
+SR_PRIV GVariant *std_gvar_thresholds(const struct voltage_threshold a[], unsigned int n)
+{
+ unsigned int i;
+ GVariant *gvar, *range[2];
+ GVariantBuilder gvb;
+
+ g_variant_builder_init(&gvb, G_VARIANT_TYPE_ARRAY);
+
+ for (i = 0; i < n; i++) {
+ range[0] = g_variant_new_double(a[i].low);
+ range[1] = g_variant_new_double(a[i].high);
+ gvar = g_variant_new_tuple(range, 2);
+ g_variant_builder_add_value(&gvb, gvar);
+ }
+
+ return g_variant_builder_end(&gvb);
+}