X-Git-Url: https://sigrok.org/gitweb/?p=libsigrok.git;a=blobdiff_plain;f=src%2Fhardware%2Flecroy-xstream%2Fprotocol.c;h=a05ff618d5e4c8eeaa1877f6fc46b6ada7ac7875;hp=8a2129a71bb28ecd3b5291cba8f1a3e8bcdd8897;hb=36165cf0f7a226f76d3e9832a70e06d9d0d634ec;hpb=d5db6ea7e17b5f8b8f13dd67fdb7e126931fdb05 diff --git a/src/hardware/lecroy-xstream/protocol.c b/src/hardware/lecroy-xstream/protocol.c index 8a2129a7..a05ff618 100644 --- a/src/hardware/lecroy-xstream/protocol.c +++ b/src/hardware/lecroy-xstream/protocol.c @@ -435,6 +435,7 @@ SR_PRIV int lecroy_xstream_state_get(struct sr_dev_inst *sdi) } i++; } + g_free(tmp_str); if (!trig_source || scope_state_get_array_option(trig_source, config->trigger_sources, config->num_trigger_sources, @@ -448,6 +449,7 @@ SR_PRIV int lecroy_xstream_state_get(struct sr_dev_inst *sdi) if (scope_state_get_array_option(tmp_str, config->trigger_slopes, config->num_trigger_slopes, &state->trigger_slope) != SR_OK) return SR_ERR; + g_free(tmp_str); if (sr_scpi_get_float(sdi->conn, "TRIG_DELAY?", &state->horiz_triggerpos) != SR_OK) return SR_ERR; @@ -626,13 +628,10 @@ SR_PRIV int lecroy_xstream_receive_data(int fd, int revents, void *cb_data) struct sr_analog_encoding encoding; struct sr_analog_meaning meaning; struct sr_analog_spec spec; - char buf[8]; (void)fd; (void)revents; - data = NULL; - if (!(sdi = cb_data)) return TRUE; @@ -645,12 +644,7 @@ SR_PRIV int lecroy_xstream_receive_data(int fd, int revents, void *cb_data) 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; - } - + data = NULL; if (sr_scpi_get_block(sdi->conn, NULL, &data) != SR_OK) { if (data) g_byte_array_free(data, TRUE); @@ -666,6 +660,7 @@ SR_PRIV int lecroy_xstream_receive_data(int fd, int revents, void *cb_data) if (analog.num_samples == 0) { g_free(analog.data); + g_byte_array_free(data, TRUE); /* No data available, we have to acquire data first. */ g_snprintf(command, sizeof(command), "ARM;WAIT;*OPC;C%d:WAVEFORM?", ch->index + 1); @@ -678,6 +673,7 @@ SR_PRIV int lecroy_xstream_receive_data(int fd, int revents, void *cb_data) if (state->sample_rate == 0) if (lecroy_xstream_update_sample_rate(sdi, analog.num_samples) != SR_OK) { g_free(analog.data); + g_byte_array_free(data, TRUE); return SR_ERR; } } @@ -686,10 +682,8 @@ SR_PRIV int lecroy_xstream_receive_data(int fd, int revents, void *cb_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 (devc->current_channel == devc->enabled_channels) + std_session_send_df_frame_begin(sdi); meaning.channels = g_slist_append(NULL, ch); packet.payload = &analog; @@ -713,8 +707,7 @@ SR_PRIV int lecroy_xstream_receive_data(int fd, int revents, void *cb_data) 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