]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/beaglelogic/protocol.c
scpi-pps: Add support for Owon P4000 series.
[libsigrok.git] / src / hardware / beaglelogic / protocol.c
index 2787b9bac9ef56f7c043ab2974a085d45fc63819..053daad9176e7b4390faf522a285bec4c5f949aa 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the libsigrok project.
  *
- * Copyright (C) 2014 Kumar Abhishek <abhishek@theembeddedkitchen.net>
+ * Copyright (C) 2014-2017 Kumar Abhishek <abhishek@theembeddedkitchen.net>
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -99,7 +99,7 @@ SR_PRIV int beaglelogic_native_receive_data(int fd, int revents, void *cb_data)
                if ((devc->offset += packetsize) >= devc->buffersize) {
                        /* One shot capture, we abort and settle with less than
                         * the required number of samples */
-                       if (devc->triggerflags)
+                       if (devc->triggerflags == BL_TRIGGERFLAGS_CONTINUOUS)
                                devc->offset = 0;
                        else
                                packetsize = 0;
@@ -181,7 +181,7 @@ SR_PRIV int beaglelogic_tcp_receive_data(int fd, int revents, void *cb_data)
                if ((devc->offset += packetsize) >= devc->buffersize) {
                        /* One shot capture, we abort and settle with less than
                         * the required number of samples */
-                       if (devc->triggerflags)
+                       if (devc->triggerflags == BL_TRIGGERFLAGS_CONTINUOUS)
                                devc->offset = 0;
                        else
                                packetsize = 0;
@@ -194,6 +194,10 @@ SR_PRIV int beaglelogic_tcp_receive_data(int fd, int revents, void *cb_data)
                /* Send EOA Packet, stop polling */
                std_session_send_df_end(sdi);
                devc->beaglelogic->stop(devc);
+
+               /* Drain the receive buffer */
+               beaglelogic_tcp_drain(devc);
+
                sr_session_source_remove_pollfd(sdi->session, &devc->pollfd);
        }