X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fyokogawa-dlm%2Fprotocol_wrappers.c;h=e2a05be9e2ba27726093c33201f0d128b8761b8a;hb=aad0c777088b7a4571272fa168a81ff9a2df05dc;hp=419420d14b83a508ca0dce5d505ad3f1b1ed91e6;hpb=8ab929d614262dc446ee2e948ca583d31110b14b;p=libsigrok.git diff --git a/src/hardware/yokogawa-dlm/protocol_wrappers.c b/src/hardware/yokogawa-dlm/protocol_wrappers.c index 419420d1..e2a05be9 100644 --- a/src/hardware/yokogawa-dlm/protocol_wrappers.c +++ b/src/hardware/yokogawa-dlm/protocol_wrappers.c @@ -17,6 +17,7 @@ * along with this program. If not, see . */ +#include #include "protocol_wrappers.h" #define MAX_COMMAND_SIZE 64 @@ -92,6 +93,7 @@ int dlm_trigger_slope_get(struct sr_scpi_dev_inst *scpi, } g_free(resp); + return result; } @@ -191,7 +193,7 @@ int dlm_analog_chan_wrange_get(struct sr_scpi_dev_inst *scpi, int channel, int result; g_snprintf(cmd, sizeof(cmd), ":WAVEFORM:TRACE %d", channel); - result = sr_scpi_send(scpi, cmd); + result = sr_scpi_send(scpi, cmd); result &= sr_scpi_get_float(scpi, ":WAVEFORM:RANGE?", response); return result; } @@ -203,7 +205,7 @@ int dlm_analog_chan_woffs_get(struct sr_scpi_dev_inst *scpi, int channel, int result; g_snprintf(cmd, sizeof(cmd), ":WAVEFORM:TRACE %d", channel); - result = sr_scpi_send(scpi, cmd); + result = sr_scpi_send(scpi, cmd); result &= sr_scpi_get_float(scpi, ":WAVEFORM:OFFSET?", response); return result; } @@ -253,7 +255,6 @@ int dlm_digital_pod_state_set(struct sr_scpi_dev_inst *scpi, int pod, return sr_scpi_send(scpi, ":LOGIC:MODE OFF"); } - int dlm_response_headers_set(struct sr_scpi_dev_inst *scpi, const gboolean value) { @@ -268,18 +269,34 @@ int dlm_acquisition_stop(struct sr_scpi_dev_inst *scpi) return sr_scpi_send(scpi, ":STOP"); } - int dlm_acq_length_get(struct sr_scpi_dev_inst *scpi, - int *response) + uint32_t *response) { - return sr_scpi_get_int(scpi, ":WAVEFORM:LENGTH?", response); + int ret; + char *s; + long tmp; + + if (sr_scpi_get_string(scpi, ":WAVEFORM:LENGTH?", &s) != SR_OK) + if (!s) + return SR_ERR; + + if (sr_atol(s, &tmp) == SR_OK) + ret = SR_OK; + else + ret = SR_ERR; + + g_free(s); + *response = tmp; + + return ret; } int dlm_chunks_per_acq_get(struct sr_scpi_dev_inst *scpi, int *response) { int result, acq_len; - /* Data retrieval queries such as :WAVEFORM:SEND? will only return + /* + * Data retrieval queries such as :WAVEFORM:SEND? will only return * up to 12500 samples at a time. If the oscilloscope operates in a * mode where more than 12500 samples fit on screen (i.e. in one * acquisition), data needs to be retrieved multiple times.