]> sigrok.org Git - sigrok-gtk.git/blobdiff - main.c
Update sigrok-gtk to latest APIs.
[sigrok-gtk.git] / main.c
diff --git a/main.c b/main.c
index 9546e1af6e74d674def022cba7a913bb4f2f5fb5..9bd2a0a5d1eefe3732d9a6b52a1b35dee816968d 100644 (file)
--- a/main.c
+++ b/main.c
@@ -33,14 +33,14 @@ static const char *colours[8] = {
        "gold", "darkgreen", "blue", "magenta",
 };
 
-static void
-datafeed_in(struct sr_dev *dev, struct sr_datafeed_packet *packet)
+static void datafeed_in(const struct sr_dev_inst *sdi,
+                       const struct sr_datafeed_packet *packet)
 {
-       static int logic_probelist[SR_MAX_NUM_PROBES + 1] = { 0 };
+       static int logic_probelist[SR_MAX_NUM_PROBES + 1] = { -1 };
        static int unitsize = 0;
-       struct sr_probe *probe;
-       struct sr_datafeed_logic *logic = NULL;
-       struct sr_datafeed_meta_logic *meta_logic;
+       const struct sr_probe *probe;
+       const struct sr_datafeed_logic *logic = NULL;
+       const struct sr_datafeed_meta_logic *meta_logic;
        int num_enabled_probes, sample_size, i;
        uint64_t filter_out_len;
        uint8_t *filter_out;
@@ -60,11 +60,11 @@ datafeed_in(struct sr_dev *dev, struct sr_datafeed_packet *packet)
                break;
        case SR_DF_META_LOGIC:
                g_message("fe: received SR_DF_META_LOGIC");
-               meta_logic = packet->payload;
+               meta_logic = (const struct sr_datafeed_meta_logic *)packet->payload;
                num_enabled_probes = 0;
                gtk_list_store_clear(siglist);
                for (i = 0; i < meta_logic->num_probes; i++) {
-                       probe = g_slist_nth_data(dev->probes, i);
+                       probe = (const struct sr_probe *)g_slist_nth_data(sdi->probes, i);
                        if (probe->enabled) {
                                GtkTreeIter iter;
                                logic_probelist[num_enabled_probes++] = probe->index;
@@ -76,13 +76,14 @@ datafeed_in(struct sr_dev *dev, struct sr_datafeed_packet *packet)
                                                -1);
                        }
                }
+               logic_probelist[num_enabled_probes] = -1;
                /* How many bytes we need to store num_enabled_probes bits */
                unitsize = (num_enabled_probes + 7) / 8;
                data = g_array_new(FALSE, FALSE, unitsize);
                g_object_set_data(G_OBJECT(siglist), "sampledata", data);
                break;
        case SR_DF_LOGIC:
-               logic = packet->payload;
+               logic = (const struct sr_datafeed_logic *)packet->payload;
                sample_size = logic->unitsize;
                g_message("fe: received SR_DF_LOGIC, %"PRIu64" bytes", logic->length);
 
@@ -130,9 +131,24 @@ int main(int argc, char **argv)
 {
        GtkWindow *window;
        GtkWidget *vbox, *vpaned, *log;
+       struct sr_context *sr_ctx;
+       struct sr_dev_driver **drivers, **driver;
+
        gtk_init(&argc, &argv);
        icons_register();
-       sr_init();
+
+       sr_init(&sr_ctx);
+
+       /* Initialize all libsigrok drivers. */
+       drivers = sr_driver_list();
+       for (driver = drivers; *driver; driver++) {
+               if (sr_driver_init(sr_ctx, *driver) != SR_OK) {
+                       g_error("Failed to initialize driver %s.",
+                               (*driver)->name);
+                       exit(1); // FIXME?
+               }
+       }
+
        sr_session_new();
        sr_session_datafeed_callback_add(datafeed_in);