X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=toolbar.c;h=37d2dc15ea647379105b7c54d4763d8dc6d91d1c;hb=HEAD;hp=e02d1b79727ab94c62359db129dddf885bde716d;hpb=5664c2e676a30c24d3a650a976a0cb162d7c1755;p=sigrok-gtk.git diff --git a/toolbar.c b/toolbar.c index e02d1b7..37d2dc1 100644 --- a/toolbar.c +++ b/toolbar.c @@ -1,5 +1,5 @@ /* - * This file is part of the sigrok project. + * This file is part of the sigrok-gtk project. * * Copyright (C) 2011 Gareth McMullin * @@ -19,7 +19,7 @@ #include -#include +#include #include @@ -43,7 +43,7 @@ static void prop_edited(GtkCellRendererText *cel, gchar *path, gchar *text, { (void)cel; - struct sr_dev *dev = g_object_get_data(G_OBJECT(props), "dev"); + struct sr_dev_inst *sdi = g_object_get_data(G_OBJECT(props), "sdi"); GtkTreeIter iter; int type, cap; guint64 tmp_u64; @@ -59,11 +59,10 @@ static void prop_edited(GtkCellRendererText *cel, gchar *path, gchar *text, if (sr_parse_sizestring(text, &tmp_u64) != SR_OK) return; - ret = dev->driver->dev_config_set(dev->driver_index, - cap, &tmp_u64); + ret = sr_dev_config_set(sdi, cap, &tmp_u64); break; case SR_T_CHAR: - ret = dev->driver->dev_config_set(dev->driver_index, cap, text); + ret = sr_dev_config_set(sdi, cap, text); break; /* SR_T_BOOL will be handled by prop_toggled */ } @@ -75,7 +74,7 @@ static void prop_edited(GtkCellRendererText *cel, gchar *path, gchar *text, static void prop_toggled(GtkCellRendererToggle *cel, gchar *path, GtkListStore *props) { - struct sr_dev *dev = g_object_get_data(G_OBJECT(props), "dev"); + struct sr_dev_inst *sdi = g_object_get_data(G_OBJECT(props), "sdi"); GtkTreeIter iter; int type, cap; int ret; @@ -86,8 +85,7 @@ static void prop_toggled(GtkCellRendererToggle *cel, gchar *path, DEV_PROP_TYPE, &type, -1); val = !gtk_cell_renderer_toggle_get_active(cel); - ret = dev->driver->dev_config_set(dev->driver_index, cap, - GINT_TO_POINTER(val)); + ret = sr_dev_config_set(sdi, cap, GINT_TO_POINTER(val)); if (!ret) gtk_list_store_set(props, &iter, DEV_PROP_BOOLVALUE, val, -1); @@ -113,8 +111,8 @@ static void dev_set_options(GtkAction *action, GtkWindow *parent) { (void)action; - struct sr_dev *dev = g_object_get_data(G_OBJECT(parent), "dev"); - if (!dev) + struct sr_dev_inst *sdi = g_object_get_data(G_OBJECT(parent), "sdi"); + if (!sdi) return; GtkWidget *dialog = gtk_dialog_new_with_buttons("Device Properties", @@ -137,12 +135,16 @@ static void dev_set_options(GtkAction *action, GtkWindow *parent) G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_BOOLEAN); gtk_tree_view_set_model(GTK_TREE_VIEW(tv), GTK_TREE_MODEL(props)); - const int *hwcaps = dev->driver->hwcap_get_all(); + const int *hwcaps; int cap; + + /* TODO: Error handling. */ + sr_info_get(sdi->driver, SR_DI_HWCAPS, (const void **)&hwcaps, sdi); + GtkTreeIter iter; for (cap = 0; hwcaps[cap]; cap++) { const struct sr_hwcap_option *hwo; - if (!(hwo = sr_hw_hwcap_get(hwcaps[cap]))) + if (!(hwo = sr_devopt_get(hwcaps[cap]))) continue; gtk_list_store_append(props, &iter); gtk_list_store_set(props, &iter, @@ -160,7 +162,7 @@ static void dev_set_options(GtkAction *action, GtkWindow *parent) /* Save device with list so that property can be set by edited * handler. */ - g_object_set_data(G_OBJECT(props), "dev", dev); + g_object_set_data(G_OBJECT(props), "sdi", sdi); /* Add columns to the tree view */ GtkTreeViewColumn *col; @@ -202,7 +204,7 @@ enum { static void probe_toggled(GtkCellRenderer *cel, gchar *path, GtkTreeModel *probes) { - struct sr_dev *dev = g_object_get_data(G_OBJECT(probes), "dev"); + struct sr_dev_inst *sdi = g_object_get_data(G_OBJECT(probes), "sdi"); GtkTreeIter iter; struct sr_probe *probe; gint i; @@ -213,8 +215,7 @@ static void probe_toggled(GtkCellRenderer *cel, gchar *path, gtk_tree_model_get_iter_from_string(probes, &iter, path); gtk_tree_model_get(probes, &iter, PROBE_NUMBER, &i, PROBE_ENABLED, &en, -1); - probe = sr_dev_probe_find(dev, i); - probe->enabled = !en; + sr_dev_probe_enable(sdi, i, FALSE); gtk_list_store_set(GTK_LIST_STORE(probes), &iter, PROBE_ENABLED, probe->enabled, -1); } @@ -222,7 +223,7 @@ static void probe_toggled(GtkCellRenderer *cel, gchar *path, static void probe_named(GtkCellRendererText *cel, gchar *path, gchar *text, GtkTreeModel *probes) { - struct sr_dev *dev = g_object_get_data(G_OBJECT(probes), "dev"); + struct sr_dev_inst *sdi = g_object_get_data(G_OBJECT(probes), "sdi"); GtkTreeIter iter; gint i; @@ -230,14 +231,14 @@ static void probe_named(GtkCellRendererText *cel, gchar *path, gchar *text, gtk_tree_model_get_iter_from_string(probes, &iter, path); gtk_tree_model_get(probes, &iter, PROBE_NUMBER, &i, -1); - sr_dev_probe_name_set(dev, i, text); + sr_dev_probe_name_set(sdi, i, text); gtk_list_store_set(GTK_LIST_STORE(probes), &iter, PROBE_NAME, text, -1); } static void probe_trigger_set(GtkCellRendererText *cel, gchar *path, gchar *text, GtkTreeModel *probes) { - struct sr_dev *dev = g_object_get_data(G_OBJECT(probes), "dev"); + struct sr_dev_inst *sdi = g_object_get_data(G_OBJECT(probes), "sdi"); GtkTreeIter iter; gint i; @@ -245,7 +246,7 @@ static void probe_trigger_set(GtkCellRendererText *cel, gchar *path, gtk_tree_model_get_iter_from_string(probes, &iter, path); gtk_tree_model_get(probes, &iter, PROBE_NUMBER, &i, -1); - sr_dev_trigger_set(dev, i, text); + sr_dev_trigger_set(sdi, i, text); gtk_list_store_set(GTK_LIST_STORE(probes), &iter, PROBE_TRIGGER, text, -1); } @@ -254,8 +255,8 @@ static void dev_set_probes(GtkAction *action, GtkWindow *parent) { (void)action; - struct sr_dev *dev = g_object_get_data(G_OBJECT(parent), "dev"); - if (!dev) + struct sr_dev_inst *sdi = g_object_get_data(G_OBJECT(parent), "sdi"); + if (!sdi) return; GtkWidget *dialog = gtk_dialog_new_with_buttons("Configure Probes", @@ -279,7 +280,7 @@ static void dev_set_probes(GtkAction *action, GtkWindow *parent) GtkTreeIter iter; GSList *p; int i; - for (p = dev->probes, i = 1; p; p = g_slist_next(p), i++) { + for (p = sdi->probes, i = 1; p; p = g_slist_next(p), i++) { struct sr_probe *probe = p->data; gtk_list_store_append(probes, &iter); gtk_list_store_set(probes, &iter, PROBE_NUMBER, i, @@ -291,7 +292,7 @@ static void dev_set_probes(GtkAction *action, GtkWindow *parent) /* Save device with list so that property can be set by edited * handler. */ - g_object_set_data(G_OBJECT(probes), "dev", dev); + g_object_set_data(G_OBJECT(probes), "sdi", sdi); /* Add columns to the tree view */ GtkTreeViewColumn *col; @@ -331,7 +332,7 @@ static void capture_run(GtkAction *action, GObject *parent) { (void)action; - struct sr_dev *dev = g_object_get_data(G_OBJECT(parent), "dev"); + struct sr_dev_inst *sdi = g_object_get_data(G_OBJECT(parent), "sdi"); GtkEntry *timesamples = g_object_get_data(parent, "timesamples"); GtkComboBox *timeunit = g_object_get_data(parent, "timeunit"); gint i = gtk_combo_box_get_active(timeunit); @@ -353,9 +354,8 @@ static void capture_run(GtkAction *action, GObject *parent) } if (time_msec) { - if (sr_driver_hwcap_exists(dev->driver, SR_HWCAP_LIMIT_MSEC)) { - if (dev->driver->dev_config_set(dev->driver_index, - SR_HWCAP_LIMIT_MSEC, + if (sr_driver_hwcap_exists(sdi->driver, SR_HWCAP_LIMIT_MSEC)) { + if (sr_dev_config_set(sdi, SR_HWCAP_LIMIT_MSEC, &time_msec) != SR_OK) { g_critical("Failed to configure time limit."); sr_session_destroy(); @@ -366,11 +366,10 @@ static void capture_run(GtkAction *action, GObject *parent) * convert to samples based on the samplerate. */ limit_samples = 0; - if (sr_dev_has_hwcap(dev, SR_HWCAP_SAMPLERATE)) { + if (sr_dev_has_hwcap(sdi, SR_HWCAP_SAMPLERATE)) { guint64 tmp_u64; - tmp_u64 = *((uint64_t *)dev->driver->dev_info_get( - dev->driver_index, - SR_DI_CUR_SAMPLERATE)); + sr_info_get(sdi->driver, SR_DI_CUR_SAMPLERATE, + (const void **)&tmp_u64, sdi); limit_samples = tmp_u64 * time_msec / (uint64_t) 1000; } if (limit_samples == 0) { @@ -378,8 +377,7 @@ static void capture_run(GtkAction *action, GObject *parent) return; } - if (dev->driver->dev_config_set(dev->driver_index, - SR_HWCAP_LIMIT_SAMPLES, + if (sr_dev_config_set(sdi, SR_HWCAP_LIMIT_SAMPLES, &limit_samples) != SR_OK) { g_critical("Failed to configure time-based sample limit."); return; @@ -387,20 +385,21 @@ static void capture_run(GtkAction *action, GObject *parent) } } if (limit_samples) { - if (dev->driver->dev_config_set(dev->driver_index, - SR_HWCAP_LIMIT_SAMPLES, - &limit_samples) != SR_OK) { + if (sr_dev_config_set(sdi, SR_HWCAP_LIMIT_SAMPLES, + &limit_samples) != SR_OK) { g_critical("Failed to configure sample limit."); return; } } - if (dev->driver->dev_config_set(dev->driver_index, - SR_HWCAP_PROBECONFIG, (char *)dev->probes) != SR_OK) { +#if 0 + if (sr_dev_config_set(sdi, + SR_HWCAP_PROBECONFIG, (char *)sdi->probes) != SR_OK) { printf("Failed to configure probes.\n"); sr_session_destroy(); return; } +#endif if (sr_session_start() != SR_OK) { g_critical("Failed to start session.");