X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fopenbench-logic-sniffer%2Fprotocol.c;h=6fb6b44fb087be9f3321f9d049c245d7854ae39d;hb=9cfc695ffe5f04622f61acb98ea4ac91c3f4ffc3;hp=9082ec1851fcd160bae1e6b4c2d5c434e8db9bba;hpb=515ab0889ebde4b373d620044a1a98da37153056;p=libsigrok.git diff --git a/src/hardware/openbench-logic-sniffer/protocol.c b/src/hardware/openbench-logic-sniffer/protocol.c index 9082ec18..6fb6b44f 100644 --- a/src/hardware/openbench-logic-sniffer/protocol.c +++ b/src/hardware/openbench-logic-sniffer/protocol.c @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -#include +#include #include "protocol.h" extern SR_PRIV struct sr_dev_driver ols_driver_info; @@ -344,16 +344,12 @@ SR_PRIV int ols_receive_data(int fd, int revents, void *cb_data) serial = sdi->conn; devc = sdi->priv; + if (devc->num_transfers == 0 && revents == 0) { + /* Ignore timeouts as long as we haven't received anything */ + return TRUE; + } + if (devc->num_transfers++ == 0) { - /* - * First time round, means the device started sending data, - * and will not stop until done. If it stops sending for - * longer than it takes to send a byte, that means it's - * finished. We'll double that to 30ms to be sure... - */ - serial_source_remove(sdi->session, serial); - serial_source_add(sdi->session, serial, G_IO_IN, 30, - ols_receive_data, cb_data); devc->raw_sample_buf = g_try_malloc(devc->limit_samples * 4); if (!devc->raw_sample_buf) { sr_err("Sample buffer malloc failed.");