]> sigrok.org Git - libsigrok.git/blobdiff - hardware/rigol-ds/protocol.c
appa-55ii: driver implementation with Live and Memory data source support
[libsigrok.git] / hardware / rigol-ds / protocol.c
index a900872507521fecfe1070a6d6263065988ce1d6..af369e9cf5881234d316c15faa1237b9e9999b3b 100644 (file)
@@ -469,7 +469,10 @@ SR_PRIV int rigol_ds_receive(int fd, int revents, void *cb_data)
                                        len < ACQ_BUFFER_SIZE ? len : ACQ_BUFFER_SIZE);
                } else {
                        waveform_size = probe->type == SR_PROBE_ANALOG ?
-                                       DS1000_ANALOG_LIVE_WAVEFORM_SIZE : DIGITAL_WAVEFORM_SIZE;
+                                       (devc->model->series == RIGOL_VS5000 ?
+                                               VS5000_ANALOG_LIVE_WAVEFORM_SIZE :
+                                               DS1000_ANALOG_LIVE_WAVEFORM_SIZE) :
+                                       DIGITAL_WAVEFORM_SIZE;
                        len = sr_scpi_read(scpi, (char *)devc->buffer,
                                        waveform_size - devc->num_frame_bytes);
                }
@@ -517,19 +520,15 @@ SR_PRIV int rigol_ds_receive(int fd, int revents, void *cb_data)
                                                rigol_ds_set_wait_event(devc, WAIT_BLOCK);
                                } else
                                        sr_dbg("%d of %d block bytes read", devc->num_block_read, devc->num_block_bytes);
+                       }
 
-                               devc->num_frame_bytes += len;
+                       devc->num_frame_bytes += len;
 
-                               if (devc->num_frame_bytes < devc->analog_frame_size)
-                                       /* Don't have the whole frame yet. */
-                                       return TRUE;
+                       if (devc->num_frame_bytes < devc->analog_frame_size)
+                               /* Don't have the whole frame yet. */
+                               return TRUE;
 
-                               sr_dbg("Frame completed, %d samples", devc->num_frame_bytes);
-                       } else {
-                               if (len != DS1000_ANALOG_LIVE_WAVEFORM_SIZE)
-                                       /* Don't have the whole frame yet. */
-                                       return TRUE;
-                       }
+                       sr_dbg("Frame completed, %d samples", devc->num_frame_bytes);
                } else {
                        logic.length = len - 10;
                        logic.unitsize = 2;