]> sigrok.org Git - libsigrok.git/commitdiff
Fix handling second channel on DS2000 series.
authorMartin Ling <redacted>
Thu, 7 Nov 2013 23:13:30 +0000 (23:13 +0000)
committerMartin Ling <redacted>
Fri, 29 Nov 2013 00:55:21 +0000 (00:55 +0000)
Patch from Mathias Grimmberger.

hardware/rigol-ds/api.c
hardware/rigol-ds/protocol.c

index cb9c2975c7be66f8e77edd935869eb06dac422a1..9db7870a356f1bd07a19c9f86a818e4eea8d1978 100644 (file)
@@ -750,6 +750,7 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi, void *cb_data)
                devc->num_frame_bytes = 0;
        } else {
                if (devc->enabled_analog_probes) {
+                       devc->channel_frame = devc->enabled_analog_probes->data;
                        /* Assume there already was a trigger event - don't wait */
                        if (rigol_ds2xx2_acquisition_start(sdi, FALSE) != SR_OK)
                                return SR_ERR;
index 51cf25fa7d30ba505b334e896c55f5894073c070..e8bfb93fc66ba895266154a1ff346d6ec5adf1ed 100644 (file)
@@ -169,8 +169,6 @@ SR_PRIV int rigol_ds2xx2_acquisition_start(const struct sr_dev_inst *sdi,
        if (!(devc = sdi->priv))
                return SR_ERR;
 
-       devc->channel_frame = devc->enabled_analog_probes->data;
-
        sr_dbg("Starting acquisition on channel %d",
                   devc->channel_frame->index + 1);
 
@@ -366,11 +364,11 @@ SR_PRIV int rigol_ds_receive(int fd, int revents, void *cb_data)
                                && devc->enabled_analog_probes->next != NULL) {
                        /* We got the frame for the first analog channel, but
                         * there's a second analog channel. */
+                       devc->channel_frame = devc->enabled_analog_probes->next->data;
                        if (devc->model->series == 2) {
                                /* Do not wait for trigger to try and keep channel data related. */
                                rigol_ds2xx2_acquisition_start(sdi, FALSE);
                        } else {
-                               devc->channel_frame = devc->enabled_analog_probes->next->data;
                                rigol_ds_send(sdi, ":WAV:DATA? CHAN%c",
                                                devc->channel_frame->name[2]);
                        }
@@ -390,6 +388,7 @@ SR_PRIV int rigol_ds_receive(int fd, int revents, void *cb_data)
                                /* Get the next frame, starting with the first analog channel. */
                                if (devc->model->series == 2) {
                                        if (devc->enabled_analog_probes) {
+                                               devc->channel_frame = devc->enabled_analog_probes->data;
                                                /* Must wait for trigger because at
                                                 * slow timebases the scope will
                                                 * return old data otherwise. */