X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fopenbench-logic-sniffer%2Fprotocol.c;h=6fb6b44fb087be9f3321f9d049c245d7854ae39d;hb=9cfc695ffe5f04622f61acb98ea4ac91c3f4ffc3;hp=9037d19fd8e3a272631f2b9c93fcd493aa051c25;hpb=4f840ce965b1c30c5ab75afecc56193cbaf5c1b3;p=libsigrok.git diff --git a/src/hardware/openbench-logic-sniffer/protocol.c b/src/hardware/openbench-logic-sniffer/protocol.c index 9037d19f..6fb6b44f 100644 --- a/src/hardware/openbench-logic-sniffer/protocol.c +++ b/src/hardware/openbench-logic-sniffer/protocol.c @@ -17,8 +17,8 @@ * along with this program. If not, see . */ +#include #include "protocol.h" -#include extern SR_PRIV struct sr_dev_driver ols_driver_info; @@ -226,7 +226,7 @@ SR_PRIV struct sr_dev_inst *get_metadata(struct sr_serial_dev_inst *serial) /* what is this for? */ break; case 0x03: - /* Maximum sample rate (hz) */ + /* Maximum sample rate (Hz) */ devc->max_samplerate = tmp_int; break; case 0x04: @@ -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.");