const struct sr_dev_inst *sdi, const struct sr_channel_group *cg)
{
struct dev_context *devc;
- uint64_t p, q;
+ uint64_t p;
double t_dbl;
- unsigned int i;
+ int i;
int ret, idx;
const char *tmp_str;
char buffer[16];
- char *cmd;
+ char *cmd = NULL;
char cmd4[4];
devc = sdi->priv;
case 1000000:
cmd = g_strdup_printf("%" PRIu64 "US", p);
break;
- case 100000000:
+ case 1000000000:
cmd = g_strdup_printf("%" PRIu64 "NS", p);
break;
}
- sr_dbg("Setting device timebase: TDIV %s.", cmd);
- return siglent_sds_config_set(sdi, "TDIV %s", cmd);
+ ret = siglent_sds_config_set(sdi, "TDIV %s", cmd);
+ g_free(cmd);
+ return ret;
case SR_CONF_TRIGGER_SOURCE:
if ((idx = std_str_idx(data, ARRAY_AND_SIZE(trigger_sources))) < 0)
return SR_ERR_ARG;
cmd = g_strdup_printf("%" PRIu64 "UV", p);
break;
}
- return siglent_sds_config_set(sdi, "C%d:VDIV %s", i + 1, cmd);
+ ret = siglent_sds_config_set(sdi, "C%d:VDIV %s", i + 1, cmd);
+ g_free(cmd);
+ return ret;
case SR_CONF_COUPLING:
if (!cg)
return SR_ERR_CHANNEL_GROUP;
siglent_sds_get_dev_cfg_horizontal(sdi);
data = g_variant_new_uint64(devc->samplerate);
break;
+ case SR_CONF_AVERAGING:
+ devc->average_enabled = g_variant_get_boolean(data);
+ sr_dbg("%s averaging", devc->average_enabled ? "Enabling" : "Disabling");
+ break;
+ case SR_CONF_AVG_SAMPLES:
+ devc->average_samples = g_variant_get_uint64(data);
+ sr_dbg("Setting averaging rate to %" PRIu64, devc->average_samples);
+ break;
default:
return SR_ERR_NA;
}
*data = g_variant_new_int32(devc->model->series->num_horizontal_divs);
break;
case SR_CONF_AVERAGING:
- /* TODO: Implement averaging. */
+ *data = g_variant_new_boolean(devc->average_enabled);
break;
default:
return SR_ERR_NA;
case SPO_MODEL:
if (siglent_sds_config_set(sdi, "WFSU SP,0,TYPE,1") != SR_OK)
return SR_ERR;
- if (siglent_sds_config_set(sdi, "ACQW SAMPLING") != SR_OK)
- return SR_ERR;
+ if (devc->average_enabled) {
+ if (siglent_sds_config_set(sdi, "ACQW AVERAGE,%i", devc->average_samples) != SR_OK)
+ return SR_ERR;
+ } else {
+ if (siglent_sds_config_set(sdi, "ACQW SAMPLING") != SR_OK)
+ return SR_ERR;
+ }
break;
case NON_SPO_MODEL:
/* TODO: Implement CML/CNL/DL models. */