X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fopenbench-logic-sniffer%2Fprotocol.c;h=6fb6b44fb087be9f3321f9d049c245d7854ae39d;hb=9cfc695ffe5f04622f61acb98ea4ac91c3f4ffc3;hp=eb848cf9b8c4f5fe0e17bba769611aa62eb6f15a;hpb=6ec6c43b4738dbc7091f4a49a4ec80ea6102cb52;p=libsigrok.git diff --git a/src/hardware/openbench-logic-sniffer/protocol.c b/src/hardware/openbench-logic-sniffer/protocol.c index eb848cf9..6fb6b44f 100644 --- a/src/hardware/openbench-logic-sniffer/protocol.c +++ b/src/hardware/openbench-logic-sniffer/protocol.c @@ -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.");