]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/demo/demo.c
scpi/usbtmc: Add Agilent DSO1000 series to RL1 blacklist.
[libsigrok.git] / src / hardware / demo / demo.c
index 5128b9dc652094b75790d626fae7b2936bdc7f10..f1163ef8420d2673073e551b392629bda95340a6 100644 (file)
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
+#include <config.h>
 #include <stdlib.h>
-#include <unistd.h>
 #include <string.h>
 #include <math.h>
-#ifdef _WIN32
-#include <io.h>
-#include <fcntl.h>
-#define pipe(fds) _pipe(fds, 4096, _O_BINARY)
-#endif
-#include "libsigrok.h"
+#include <libsigrok/libsigrok.h>
 #include "libsigrok-internal.h"
 
 #define LOG_PREFIX "demo"
@@ -110,8 +105,6 @@ struct analog_gen {
 
 /* Private, per-device-instance driver context. */
 struct dev_context {
-       int pipe_fds[2];
-       GIOChannel *channel;
        uint64_t cur_samplerate;
        gboolean continuous;
        uint64_t limit_samples;
@@ -278,7 +271,7 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
        int num_logic_channels, num_analog_channels, pattern, i;
        char channel_name[16];
 
-       drvc = di->priv;
+       drvc = di->context;
 
        num_logic_channels = DEFAULT_NUM_LOGIC_CHANNELS;
        num_analog_channels = DEFAULT_NUM_ANALOG_CHANNELS;
@@ -370,7 +363,7 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
 
 static GSList *dev_list(const struct sr_dev_driver *di)
 {
-       return ((struct drv_context *)(di->priv))->instances;
+       return ((struct drv_context *)(di->context))->instances;
 }
 
 static int dev_open(struct sr_dev_inst *sdi)
@@ -850,33 +843,11 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi, void *cb_data)
        devc->continuous = !devc->limit_samples;
        devc->logic_counter = devc->analog_counter = 0;
 
-       /*
-        * Setting two channels connected by a pipe is a remnant from when the
-        * demo driver generated data in a thread, and collected and sent the
-        * data in the main program loop.
-        * They are kept here because it provides a convenient way of setting
-        * up a timeout-based polling mechanism.
-        */
-       if (pipe(devc->pipe_fds)) {
-               sr_err("%s: pipe() failed", __func__);
-               return SR_ERR;
-       }
-
        g_hash_table_iter_init(&iter, devc->ch_ag);
        while (g_hash_table_iter_next(&iter, NULL, &value))
                generate_analog_pattern(value, devc->cur_samplerate);
 
-       devc->channel = g_io_channel_unix_new(devc->pipe_fds[0]);
-       g_io_channel_set_flags(devc->channel, G_IO_FLAG_NONBLOCK, NULL);
-
-       /* Set channel encoding to binary (default is UTF-8). */
-       g_io_channel_set_encoding(devc->channel, NULL, NULL);
-
-       /* Make channels unbuffered. */
-       g_io_channel_set_buffered(devc->channel, FALSE);
-
-       sr_session_source_add_channel(sdi->session, devc->channel,
-                       G_IO_IN | G_IO_ERR, 40, prepare_data, (void *)sdi);
+       sr_session_source_add(sdi->session, -1, 0, 40, prepare_data, (void *)sdi);
 
        /* Send header packet to the session bus. */
        std_session_send_df_header(sdi, LOG_PREFIX);
@@ -889,18 +860,13 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi, void *cb_data)
 
 static int dev_acquisition_stop(struct sr_dev_inst *sdi, void *cb_data)
 {
-       struct dev_context *devc;
        struct sr_datafeed_packet packet;
 
        (void)cb_data;
 
-       devc = sdi->priv;
        sr_dbg("Stopping acquisition.");
 
-       sr_session_source_remove_channel(sdi->session, devc->channel);
-       g_io_channel_shutdown(devc->channel, FALSE, NULL);
-       g_io_channel_unref(devc->channel);
-       devc->channel = NULL;
+       sr_session_source_remove(sdi->session, -1);
 
        /* Send last packet. */
        packet.type = SR_DF_END;
@@ -925,5 +891,5 @@ SR_PRIV struct sr_dev_driver demo_driver_info = {
        .dev_close = dev_close,
        .dev_acquisition_start = dev_acquisition_start,
        .dev_acquisition_stop = dev_acquisition_stop,
-       .priv = NULL,
+       .context = NULL,
 };