]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/openbench-logic-sniffer/protocol.c
Factor out std_session_send_df_end() helper.
[libsigrok.git] / src / hardware / openbench-logic-sniffer / protocol.c
index 9037d19fd8e3a272631f2b9c93fcd493aa051c25..7f274258ddafe8b1245ff887fc663d55394db9db 100644 (file)
@@ -17,8 +17,8 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <config.h>
 #include "protocol.h"
-#include <libserialport.h>
 
 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.");