X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fsiglent-sds%2Fapi.c;h=cd77590f493f466f67dc17d68a2666af48dc5bb6;hb=b4580cb9d069594e561d79b4fc3d53aaff246f90;hp=66f8b2a8fa23a22cb62afa58247720294e8092de;hpb=80eba3857a61931793054f95e6b8c7eac8e3a7fe;p=libsigrok.git diff --git a/src/hardware/siglent-sds/api.c b/src/hardware/siglent-sds/api.c index 66f8b2a8..cd77590f 100644 --- a/src/hardware/siglent-sds/api.c +++ b/src/hardware/siglent-sds/api.c @@ -531,7 +531,7 @@ static int config_set(uint32_t key, GVariant *data, int ret, idx; const char *tmp_str; char buffer[16]; - char *cmd = ""; + char *cmd = NULL; char cmd4[4]; devc = sdi->priv; @@ -592,7 +592,6 @@ static int config_set(uint32_t key, GVariant *data, cmd = g_strdup_printf("%" PRIu64 "NS", p); break; } - sr_dbg("Setting device timebase: TDIV %s.", cmd); ret = siglent_sds_config_set(sdi, "TDIV %s", cmd); g_free(cmd); return ret; @@ -682,6 +681,14 @@ static int config_set(uint32_t key, GVariant *data, 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; } @@ -767,7 +774,7 @@ static int config_list(uint32_t key, GVariant **data, *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; @@ -854,8 +861,13 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi) 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. */