From: Martin Ling Date: Wed, 4 Dec 2013 13:08:49 +0000 (+0000) Subject: rigol-ds: Handle partial analog frame reads. X-Git-Tag: libsigrok-0.3.0~486 X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=56868b5d6b7401f3916df1468b537bd0d04087f5;p=libsigrok.git rigol-ds: Handle partial analog frame reads. Reading a frame over the DS1xx2 RS232 connection now sometimes works, but most of the time stalls part way through with g_poll showing the fd as not ready. --- diff --git a/hardware/rigol-ds/protocol.c b/hardware/rigol-ds/protocol.c index a9008725..cd460e9f 100644 --- a/hardware/rigol-ds/protocol.c +++ b/hardware/rigol-ds/protocol.c @@ -517,19 +517,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;