X-Git-Url: https://sigrok.org/gitweb/?p=libsigrok.git;a=blobdiff_plain;f=src%2Fhardware%2Frigol-ds%2Fapi.c;h=632c95963cb75e517e6d7abe3cbff783e6cbee70;hp=95de8f6a0d7b30339a7fd6756ba3d4bfe556d0f6;hb=713a3f352496f928b9911bfdc7e87a67134113df;hpb=64f26f744bf3185eddb07e8bfe9855e3c7bfac19 diff --git a/src/hardware/rigol-ds/api.c b/src/hardware/rigol-ds/api.c index 95de8f6a..632c9596 100644 --- a/src/hardware/rigol-ds/api.c +++ b/src/hardware/rigol-ds/api.c @@ -883,6 +883,7 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi) GSList *l; char *cmd; int protocol; + int ret; scpi = sdi->conn; devc = sdi->priv; @@ -1021,20 +1022,27 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi) devc->channel_entry = devc->enabled_channels; - if (devc->data_source == DATA_SOURCE_LIVE) - devc->sample_rate = analog_frame_size(sdi) / + if (devc->data_source == DATA_SOURCE_LIVE) { + devc->sample_rate = analog_frame_size(sdi) / (devc->timebase * devc->model->series->num_horizontal_divs); - else { + } else { float xinc; - if (devc->model->series->protocol >= PROTOCOL_V3 && - sr_scpi_get_float(sdi->conn, "WAV:XINC?", &xinc) != SR_OK) { - sr_err("Couldn't get sampling rate"); + if (devc->model->series->protocol < PROTOCOL_V3) { + sr_err("Cannot get samplerate (below V3)."); + return SR_ERR; + } + ret = sr_scpi_get_float(sdi->conn, "WAV:XINC?", &xinc); + if (ret != SR_OK) { + sr_err("Cannot get samplerate (WAV:XINC? failed)."); + return SR_ERR; + } + if (!xinc) { + sr_err("Cannot get samplerate (zero XINC value)."); return SR_ERR; } devc->sample_rate = 1. / xinc; } - if (rigol_ds_capture_start(sdi) != SR_OK) return SR_ERR;