lecroy-xstream: Perform acquisition if no data is available

This commit is contained in:
Soeren Apel 2017-10-07 22:36:06 +02:00
parent 6e9606dbae
commit 86f76e6cae
1 changed files with 18 additions and 10 deletions

View File

@ -620,6 +620,7 @@ static int lecroy_waveform_to_analog(GByteArray *data,
SR_PRIV int lecroy_xstream_receive_data(int fd, int revents, void *cb_data)
{
char command[MAX_COMMAND_SIZE];
struct sr_channel *ch;
struct sr_dev_inst *sdi;
struct dev_context *devc;
@ -644,21 +645,12 @@ SR_PRIV int lecroy_xstream_receive_data(int fd, int revents, void *cb_data)
ch = devc->current_channel->data;
/*
* Send "frame begin" packet upon reception of data for the
* first enabled channel.
*/
if (devc->current_channel == devc->enabled_channels) {
packet.type = SR_DF_FRAME_BEGIN;
sr_session_send(sdi, &packet);
}
if (ch->type != SR_CHANNEL_ANALOG)
return SR_ERR;
/* Pass on the received data of the channel(s). */
if (sr_scpi_read_data(sdi->conn, buf, 4) != 4) {
sr_err("Reading header failed.");
sr_err("Reading header failed, scope probably didn't send any data.");
return TRUE;
}
@ -675,6 +667,22 @@ SR_PRIV int lecroy_xstream_receive_data(int fd, int revents, void *cb_data)
if (lecroy_waveform_to_analog(data, &analog) != SR_OK)
return SR_ERR;
if (analog.num_samples == 0) {
/* No data available, we have to acquire data first. */
g_snprintf(command, sizeof(command), "ARM;WAIT;*OPC;C%d:WAVEFORM?", ch->index + 1);
sr_scpi_send(sdi->conn, command);
return TRUE;
}
/*
* Send "frame begin" packet upon reception of data for the
* first enabled channel.
*/
if (devc->current_channel == devc->enabled_channels) {
packet.type = SR_DF_FRAME_BEGIN;
sr_session_send(sdi, &packet);
}
meaning.channels = g_slist_append(NULL, ch);
packet.payload = &analog;
packet.type = SR_DF_ANALOG;