hantek-4032l: Simplify some config_get/_set parts.
Also, drop some unneeded checks.
This commit is contained in:
parent
583fc126d0
commit
cbc656e45f
|
@ -56,6 +56,10 @@ static const uint32_t devopts_cg[] = {
|
||||||
SR_CONF_VOLTAGE_THRESHOLD | SR_CONF_GET | SR_CONF_SET | SR_CONF_LIST,
|
SR_CONF_VOLTAGE_THRESHOLD | SR_CONF_GET | SR_CONF_SET | SR_CONF_LIST,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const char *cg_names[] = {
|
||||||
|
"A", "B",
|
||||||
|
};
|
||||||
|
|
||||||
static const char *signal_edges[] = {
|
static const char *signal_edges[] = {
|
||||||
[H4032L_CLOCK_EDGE_TYPE_RISE] = "rising",
|
[H4032L_CLOCK_EDGE_TYPE_RISE] = "rising",
|
||||||
[H4032L_CLOCK_EDGE_TYPE_FALL] = "falling",
|
[H4032L_CLOCK_EDGE_TYPE_FALL] = "falling",
|
||||||
|
@ -336,20 +340,16 @@ static int config_get(uint32_t key, GVariant **data,
|
||||||
{
|
{
|
||||||
struct dev_context *devc = sdi->priv;
|
struct dev_context *devc = sdi->priv;
|
||||||
struct sr_usb_dev_inst *usb;
|
struct sr_usb_dev_inst *usb;
|
||||||
unsigned int idx;
|
int idx;
|
||||||
|
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case SR_CONF_VOLTAGE_THRESHOLD:
|
case SR_CONF_VOLTAGE_THRESHOLD:
|
||||||
if (!cg)
|
if (!cg)
|
||||||
return SR_ERR_CHANNEL_GROUP;
|
return SR_ERR_CHANNEL_GROUP;
|
||||||
if (!strcmp(cg->name, "A"))
|
if ((idx = std_str_idx_s(cg->name, ARRAY_AND_SIZE(cg_names))) < 0)
|
||||||
*data = std_gvar_tuple_double(
|
|
||||||
devc->cur_threshold[0], devc->cur_threshold[0]);
|
|
||||||
else if (!strcmp(cg->name, "B"))
|
|
||||||
*data = std_gvar_tuple_double(
|
|
||||||
devc->cur_threshold[1], devc->cur_threshold[1]);
|
|
||||||
else
|
|
||||||
return SR_ERR_CHANNEL_GROUP;
|
return SR_ERR_CHANNEL_GROUP;
|
||||||
|
*data = std_gvar_tuple_double(
|
||||||
|
devc->cur_threshold[idx], devc->cur_threshold[idx]);
|
||||||
break;
|
break;
|
||||||
case SR_CONF_SAMPLERATE:
|
case SR_CONF_SAMPLERATE:
|
||||||
*data = g_variant_new_uint64(samplerates_hw[devc->sample_rate]);
|
*data = g_variant_new_uint64(samplerates_hw[devc->sample_rate]);
|
||||||
|
@ -364,10 +364,7 @@ static int config_get(uint32_t key, GVariant **data,
|
||||||
*data = g_variant_new_boolean(devc->external_clock);
|
*data = g_variant_new_boolean(devc->external_clock);
|
||||||
break;
|
break;
|
||||||
case SR_CONF_EXTERNAL_CLOCK_SOURCE:
|
case SR_CONF_EXTERNAL_CLOCK_SOURCE:
|
||||||
idx = devc->external_clock_source;
|
*data = g_variant_new_string(ext_clock_sources[devc->external_clock_source]);
|
||||||
if (idx >= ARRAY_SIZE(ext_clock_sources))
|
|
||||||
return SR_ERR_BUG;
|
|
||||||
*data = g_variant_new_string(ext_clock_sources[idx]);
|
|
||||||
break;
|
break;
|
||||||
case SR_CONF_CONN:
|
case SR_CONF_CONN:
|
||||||
if (!sdi || !(usb = sdi->conn))
|
if (!sdi || !(usb = sdi->conn))
|
||||||
|
@ -375,10 +372,7 @@ static int config_get(uint32_t key, GVariant **data,
|
||||||
*data = g_variant_new_printf("%d.%d", usb->bus, usb->address);
|
*data = g_variant_new_printf("%d.%d", usb->bus, usb->address);
|
||||||
break;
|
break;
|
||||||
case SR_CONF_CLOCK_EDGE:
|
case SR_CONF_CLOCK_EDGE:
|
||||||
idx = devc->clock_edge;
|
*data = g_variant_new_string(signal_edges[devc->clock_edge]);
|
||||||
if (idx >= ARRAY_SIZE(signal_edges))
|
|
||||||
return SR_ERR_BUG;
|
|
||||||
*data = g_variant_new_string(signal_edges[idx]);
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return SR_ERR_NA;
|
return SR_ERR_NA;
|
||||||
|
@ -394,13 +388,13 @@ static int config_set(uint32_t key, GVariant *data,
|
||||||
struct dev_context *devc = sdi->priv;
|
struct dev_context *devc = sdi->priv;
|
||||||
struct h4032l_cmd_pkt *cmd_pkt = &devc->cmd_pkt;
|
struct h4032l_cmd_pkt *cmd_pkt = &devc->cmd_pkt;
|
||||||
uint64_t sample_rate, number_samples;
|
uint64_t sample_rate, number_samples;
|
||||||
double low, high, threshold;
|
double low, high;
|
||||||
|
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case SR_CONF_SAMPLERATE:
|
case SR_CONF_SAMPLERATE:
|
||||||
idx = 0;
|
idx = 0;
|
||||||
sample_rate = g_variant_get_uint64(data);
|
sample_rate = g_variant_get_uint64(data);
|
||||||
while (idx < ARRAY_SIZE(samplerates_hw) && samplerates_hw[idx] != sample_rate)
|
while (idx < (int)ARRAY_SIZE(samplerates_hw) && samplerates_hw[idx] != sample_rate)
|
||||||
idx++;
|
idx++;
|
||||||
if (idx == ARRAY_SIZE(samplerates_hw) || sample_rate == 0) {
|
if (idx == ARRAY_SIZE(samplerates_hw) || sample_rate == 0) {
|
||||||
sr_err("Invalid sample rate.");
|
sr_err("Invalid sample rate.");
|
||||||
|
@ -426,14 +420,10 @@ static int config_set(uint32_t key, GVariant *data,
|
||||||
case SR_CONF_VOLTAGE_THRESHOLD:
|
case SR_CONF_VOLTAGE_THRESHOLD:
|
||||||
if (!cg)
|
if (!cg)
|
||||||
return SR_ERR_CHANNEL_GROUP;
|
return SR_ERR_CHANNEL_GROUP;
|
||||||
g_variant_get(data, "(dd)", &low, &high);
|
if ((idx = std_str_idx_s(cg->name, ARRAY_AND_SIZE(cg_names))) < 0)
|
||||||
threshold = (low + high) / 2.0;
|
|
||||||
if (!strcmp(cg->name, "A"))
|
|
||||||
devc->cur_threshold[0] = threshold;
|
|
||||||
else if (!strcmp(cg->name, "B"))
|
|
||||||
devc->cur_threshold[1] = threshold;
|
|
||||||
else
|
|
||||||
return SR_ERR_CHANNEL_GROUP;
|
return SR_ERR_CHANNEL_GROUP;
|
||||||
|
g_variant_get(data, "(dd)", &low, &high);
|
||||||
|
devc->cur_threshold[idx] = (low + high) / 2.0;
|
||||||
break;
|
break;
|
||||||
case SR_CONF_EXTERNAL_CLOCK:
|
case SR_CONF_EXTERNAL_CLOCK:
|
||||||
devc->external_clock = g_variant_get_boolean(data);
|
devc->external_clock = g_variant_get_boolean(data);
|
||||||
|
|
Loading…
Reference in New Issue