]> sigrok.org Git - libsigrok.git/blobdiff - hardware/openbench-logic-sniffer/protocol.c
demo: Code cleanup.
[libsigrok.git] / hardware / openbench-logic-sniffer / protocol.c
index d4e04e438458a92139e91e825f180907bf18b702..71e8c34f0d082814e8fe915910feb5fef8bbe579 100644 (file)
@@ -18,6 +18,7 @@
  */
 
 #include "protocol.h"
+#include <libserialport.h>
 
 extern SR_PRIV struct sr_dev_driver ols_driver_info;
 static struct sr_dev_driver *di = &ols_driver_info;
@@ -302,10 +303,13 @@ SR_PRIV int ols_set_samplerate(const struct sr_dev_inst *sdi,
                return SR_ERR_SAMPLERATE;
 
        if (samplerate > CLOCK_RATE) {
+               sr_info("Enabling demux mode.");
                devc->flag_reg |= FLAG_DEMUX;
+               devc->flag_reg &= ~FLAG_FILTER;
                devc->max_probes = NUM_PROBES / 2;
                devc->cur_samplerate_divider = (CLOCK_RATE * 2 / samplerate) - 1;
        } else {
+               sr_info("Disabling demux mode.");
                devc->flag_reg &= ~FLAG_DEMUX;
                devc->flag_reg |= FLAG_FILTER;
                devc->max_probes = NUM_PROBES;
@@ -331,7 +335,7 @@ SR_PRIV void abort_acquisition(const struct sr_dev_inst *sdi)
        struct sr_serial_dev_inst *serial;
 
        serial = sdi->conn;
-       sr_source_remove(serial->fd);
+       serial_source_remove(serial);
 
        /* Terminate session */
        packet.type = SR_DF_END;
@@ -351,6 +355,7 @@ SR_PRIV int ols_receive_data(int fd, int revents, void *cb_data)
        int num_channels, offset, j;
        unsigned int i;
        unsigned char byte;
+       int serial_fd;
 
        drvc = di->priv;
 
@@ -360,7 +365,8 @@ SR_PRIV int ols_receive_data(int fd, int revents, void *cb_data)
                sdi = l->data;
                devc = sdi->priv;
                serial = sdi->conn;
-               if (serial->fd == fd)
+               sp_get_port_handle(serial->data, &serial_fd);
+               if (serial_fd == fd)
                        break;
                devc = NULL;
        }