X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Frigol-ds%2Fprotocol.c;h=1344c8b420542398286f09b34f4c7345e15cd5ee;hb=ce97fc3f6a15b71575b9ef46d161b829d48d2e0a;hp=39462c280ba1830ec208ac5390cebaa1b64e9621;hpb=176d785d33a28a1bb24f2ee483595ec54f7b52b6;p=libsigrok.git diff --git a/src/hardware/rigol-ds/protocol.c b/src/hardware/rigol-ds/protocol.c index 39462c28..1344c8b4 100644 --- a/src/hardware/rigol-ds/protocol.c +++ b/src/hardware/rigol-ds/protocol.c @@ -221,7 +221,7 @@ static int rigol_ds_check_stop(const struct sr_dev_inst *sdi) return SR_OK; if (ch->type == SR_CHANNEL_LOGIC) { - if (rigol_ds_config_set(sdi->conn, ":WAV:SOUR LA") != SR_OK) + if (rigol_ds_config_set(sdi, ":WAV:SOUR LA") != SR_OK) return SR_ERR; } else { if (rigol_ds_config_set(sdi, ":WAV:SOUR CHAN%d", @@ -440,7 +440,7 @@ SR_PRIV int rigol_ds_channel_start(const struct sr_dev_inst *sdi) break; case PROTOCOL_V3: if (ch->type == SR_CHANNEL_LOGIC) { - if (rigol_ds_config_set(sdi->conn, ":WAV:SOUR LA") != SR_OK) + if (rigol_ds_config_set(sdi, ":WAV:SOUR LA") != SR_OK) return SR_ERR; } else { if (rigol_ds_config_set(sdi, ":WAV:SOUR CHAN%d", @@ -631,10 +631,10 @@ SR_PRIV int rigol_ds_receive(int fd, int revents, void *cb_data) /* Still reading the header. */ return TRUE; if (len == -1) { - sr_err("Read error, aborting capture."); + sr_err("Error while reading block header, aborting capture."); packet.type = SR_DF_FRAME_END; sr_session_send(sdi, &packet); - sdi->driver->dev_acquisition_stop(sdi); + sr_dev_acquisition_stop(sdi); return TRUE; } /* At slow timebases in live capture the DS2072 @@ -664,10 +664,10 @@ SR_PRIV int rigol_ds_receive(int fd, int revents, void *cb_data) len = sr_scpi_read_data(scpi, (char *)devc->buffer, len); if (len == -1) { - sr_err("Read error, aborting capture."); + sr_err("Error while reading block data, aborting capture."); packet.type = SR_DF_FRAME_END; sr_session_send(sdi, &packet); - sdi->driver->dev_acquisition_stop(sdi); + sr_dev_acquisition_stop(sdi); return TRUE; } @@ -723,11 +723,12 @@ SR_PRIV int rigol_ds_receive(int fd, int revents, void *cb_data) if (devc->data_source != DATA_SOURCE_LIVE) rigol_ds_set_wait_event(devc, WAIT_BLOCK); } - if (!sr_scpi_read_complete(scpi)) { + /* End acquisition when data for all channels is acquired. */ + if (!sr_scpi_read_complete(scpi) && !devc->channel_entry->next) { sr_err("Read should have been completed"); packet.type = SR_DF_FRAME_END; sr_session_send(sdi, &packet); - sdi->driver->dev_acquisition_stop(sdi); + sr_dev_acquisition_stop(sdi); return TRUE; } devc->num_block_read = 0; @@ -765,7 +766,7 @@ SR_PRIV int rigol_ds_receive(int fd, int revents, void *cb_data) if (++devc->num_frames == devc->limit_frames) { /* Last frame, stop capture. */ - sdi->driver->dev_acquisition_stop(sdi); + sr_dev_acquisition_stop(sdi); } else { /* Get the next frame, starting with the first channel. */ devc->channel_entry = devc->enabled_channels;