drivers: Factor out std_gvar_thresholds().
This commit is contained in:
parent
43995cda36
commit
9fb9afb573
|
@ -72,10 +72,7 @@ static const char *const signal_edge_names[] = {
|
||||||
[DS_EDGE_FALLING] = "falling",
|
[DS_EDGE_FALLING] = "falling",
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct {
|
static const struct voltage_threshold voltage_thresholds[] = {
|
||||||
gdouble low;
|
|
||||||
gdouble high;
|
|
||||||
} voltage_thresholds[] = {
|
|
||||||
{ 0.7, 1.4 },
|
{ 0.7, 1.4 },
|
||||||
{ 1.4, 3.6 },
|
{ 1.4, 3.6 },
|
||||||
};
|
};
|
||||||
|
@ -545,9 +542,6 @@ static int config_list(uint32_t key, GVariant **data,
|
||||||
const struct sr_dev_inst *sdi, const struct sr_channel_group *cg)
|
const struct sr_dev_inst *sdi, const struct sr_channel_group *cg)
|
||||||
{
|
{
|
||||||
struct dev_context *devc;
|
struct dev_context *devc;
|
||||||
GVariant *gvar, *range[2];
|
|
||||||
GVariantBuilder gvb;
|
|
||||||
unsigned int i;
|
|
||||||
|
|
||||||
devc = (sdi) ? sdi->priv : NULL;
|
devc = (sdi) ? sdi->priv : NULL;
|
||||||
|
|
||||||
|
@ -556,18 +550,10 @@ 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:
|
||||||
if (!strcmp(devc->profile->model, "DSLogic")) {
|
if (!strcmp(devc->profile->model, "DSLogic"))
|
||||||
g_variant_builder_init(&gvb, G_VARIANT_TYPE_ARRAY);
|
*data = std_gvar_thresholds(ARRAY_AND_SIZE(voltage_thresholds));
|
||||||
for (i = 0; i < ARRAY_SIZE(voltage_thresholds); i++) {
|
else
|
||||||
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 {
|
|
||||||
*data = std_gvar_min_max_step_thresholds(0.0, 5.0, 0.1);
|
*data = std_gvar_min_max_step_thresholds(0.0, 5.0, 0.1);
|
||||||
}
|
|
||||||
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);
|
||||||
|
|
|
@ -72,11 +72,14 @@ static const char *channel_names[] = {
|
||||||
|
|
||||||
static const struct {
|
static const struct {
|
||||||
enum voltage_range range;
|
enum voltage_range range;
|
||||||
gdouble low;
|
} volt_thresholds_ranges[] = {
|
||||||
gdouble high;
|
{ VOLTAGE_RANGE_18_33_V, },
|
||||||
} volt_thresholds[] = {
|
{ VOLTAGE_RANGE_5_V, },
|
||||||
{ VOLTAGE_RANGE_18_33_V, 0.7, 1.4 },
|
};
|
||||||
{ VOLTAGE_RANGE_5_V, 1.4, 3.6 },
|
|
||||||
|
static const struct voltage_threshold volt_thresholds[] = {
|
||||||
|
{ 0.7, 1.4 },
|
||||||
|
{ 1.4, 3.6 },
|
||||||
};
|
};
|
||||||
|
|
||||||
static const uint64_t samplerates[] = {
|
static const uint64_t samplerates[] = {
|
||||||
|
@ -438,7 +441,7 @@ static int config_get(uint32_t key, GVariant **data,
|
||||||
ret = SR_ERR;
|
ret = SR_ERR;
|
||||||
for (i = 0; i < ARRAY_SIZE(volt_thresholds); i++) {
|
for (i = 0; i < ARRAY_SIZE(volt_thresholds); i++) {
|
||||||
if (devc->selected_voltage_range !=
|
if (devc->selected_voltage_range !=
|
||||||
volt_thresholds[i].range)
|
volt_thresholds_ranges[i].range)
|
||||||
continue;
|
continue;
|
||||||
*data = std_gvar_tuple_double(volt_thresholds[i].low, volt_thresholds[i].high);
|
*data = std_gvar_tuple_double(volt_thresholds[i].low, volt_thresholds[i].high);
|
||||||
ret = SR_OK;
|
ret = SR_OK;
|
||||||
|
@ -483,7 +486,7 @@ static int config_set(uint32_t key, GVariant *data,
|
||||||
if (fabs(volt_thresholds[i].low - low) < 0.1 &&
|
if (fabs(volt_thresholds[i].low - low) < 0.1 &&
|
||||||
fabs(volt_thresholds[i].high - high) < 0.1) {
|
fabs(volt_thresholds[i].high - high) < 0.1) {
|
||||||
devc->selected_voltage_range =
|
devc->selected_voltage_range =
|
||||||
volt_thresholds[i].range;
|
volt_thresholds_ranges[i].range;
|
||||||
ret = SR_OK;
|
ret = SR_OK;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -499,10 +502,6 @@ static int config_set(uint32_t key, GVariant *data,
|
||||||
static int config_list(uint32_t key, GVariant **data,
|
static int config_list(uint32_t key, GVariant **data,
|
||||||
const struct sr_dev_inst *sdi, const struct sr_channel_group *cg)
|
const struct sr_dev_inst *sdi, const struct sr_channel_group *cg)
|
||||||
{
|
{
|
||||||
GVariant *gvar, *range[2];
|
|
||||||
GVariantBuilder gvb;
|
|
||||||
unsigned int i;
|
|
||||||
|
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case SR_CONF_SCAN_OPTIONS:
|
case SR_CONF_SCAN_OPTIONS:
|
||||||
case SR_CONF_DEVICE_OPTIONS:
|
case SR_CONF_DEVICE_OPTIONS:
|
||||||
|
@ -511,14 +510,7 @@ static int config_list(uint32_t key, GVariant **data,
|
||||||
*data = std_gvar_samplerates(ARRAY_AND_SIZE(samplerates));
|
*data = std_gvar_samplerates(ARRAY_AND_SIZE(samplerates));
|
||||||
break;
|
break;
|
||||||
case SR_CONF_VOLTAGE_THRESHOLD:
|
case SR_CONF_VOLTAGE_THRESHOLD:
|
||||||
g_variant_builder_init(&gvb, G_VARIANT_TYPE_ARRAY);
|
*data = std_gvar_thresholds(ARRAY_AND_SIZE(volt_thresholds));
|
||||||
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);
|
|
||||||
break;
|
break;
|
||||||
case SR_CONF_TRIGGER_MATCH:
|
case SR_CONF_TRIGGER_MATCH:
|
||||||
*data = std_gvar_array_i32(ARRAY_AND_SIZE(trigger_matches));
|
*data = std_gvar_array_i32(ARRAY_AND_SIZE(trigger_matches));
|
||||||
|
|
|
@ -971,6 +971,13 @@ SR_PRIV GVariant *std_gvar_array_i32(const int32_t *a, unsigned int n);
|
||||||
SR_PRIV GVariant *std_gvar_array_u32(const uint32_t *a, unsigned int n);
|
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);
|
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 ------------------------------------------------------------*/
|
/*--- resource.c ------------------------------------------------------------*/
|
||||||
|
|
||||||
SR_PRIV int64_t sr_file_get_size(FILE *file);
|
SR_PRIV int64_t sr_file_get_size(FILE *file);
|
||||||
|
|
18
src/std.c
18
src/std.c
|
@ -684,3 +684,21 @@ SR_PRIV GVariant *std_gvar_array_u64(const uint64_t *a, unsigned int n)
|
||||||
return g_variant_new_fixed_array(G_VARIANT_TYPE_UINT64,
|
return g_variant_new_fixed_array(G_VARIANT_TYPE_UINT64,
|
||||||
a, n, sizeof(uint64_t));
|
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);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue