static const uint64_t timebases[][2] = {
/* picoseconds */
- { 20, 1000000000000 },
- { 50, 1000000000000 },
- { 100, 1000000000000 },
- { 200, 1000000000000 },
- { 500, 1000000000000 },
+ { 20, UINT64_C(1000000000000) },
+ { 50, UINT64_C(1000000000000) },
+ { 100, UINT64_C(1000000000000) },
+ { 200, UINT64_C(1000000000000) },
+ { 500, UINT64_C(1000000000000) },
/* nanoseconds */
{ 1, 1000000000 },
{ 2, 1000000000 },
struct sr_analog_encoding encoding;
struct sr_analog_meaning meaning;
struct sr_analog_spec spec;
- char buf[8];
(void)fd;
(void)revents;
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, scope probably didn't send any data.");
- return TRUE;
- }
-
if (sr_scpi_get_block(sdi->conn, NULL, &data) != SR_OK) {
if (data)
g_byte_array_free(data, TRUE);
return SR_ERR;
if (analog.num_samples == 0) {
+ g_free(analog.data);
+
/* 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);
} else {
/* Update sample rate if needed. */
if (state->sample_rate == 0)
- if (lecroy_xstream_update_sample_rate(sdi, analog.num_samples) != SR_OK)
+ if (lecroy_xstream_update_sample_rate(sdi, analog.num_samples) != SR_OK) {
+ g_free(analog.data);
return SR_ERR;
+ }
}
/*
* 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 (devc->current_channel == devc->enabled_channels)
+ std_session_send_df_frame_begin(sdi);
meaning.channels = g_slist_append(NULL, ch);
packet.payload = &analog;
return TRUE;
}
- packet.type = SR_DF_FRAME_END;
- sr_session_send(sdi, &packet);
+ std_session_send_df_frame_end(sdi);
/*
* End of frame was reached. Stop acquisition after the specified
sr_dev_acquisition_stop(sdi);
} else {
devc->current_channel = devc->enabled_channels;
+
+ /* Wait for trigger, then begin fetching data. */
+ g_snprintf(command, sizeof(command), "ARM;WAIT;*OPC");
+ sr_scpi_send(sdi->conn, command);
+
lecroy_xstream_request_data(sdi);
}