X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fopenbench-logic-sniffer%2Fprotocol.c;h=7f274258ddafe8b1245ff887fc663d55394db9db;hb=3be42bc22f8b36599a448273c12a76d3e0f7a940;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..7f274258 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: @@ -315,15 +315,12 @@ SR_PRIV int ols_set_samplerate(const struct sr_dev_inst *sdi, SR_PRIV void abort_acquisition(const struct sr_dev_inst *sdi) { - struct sr_datafeed_packet packet; struct sr_serial_dev_inst *serial; serial = sdi->conn; serial_source_remove(sdi->session, serial); - /* Terminate session */ - packet.type = SR_DF_END; - sr_session_send(sdi, &packet); + std_session_send_df_end(sdi, LOG_PREFIX); } SR_PRIV int ols_receive_data(int fd, int revents, void *cb_data) @@ -344,16 +341,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.");