static bool fmcomms2adv_identify(void) { /* Use the OSC's IIO context just to detect the devices */ struct iio_context *osc_ctx = get_context_from_osc(); struct iio_device *osc_dev = iio_context_find_device( osc_ctx, "ad9361-phy"); if (!osc_dev || !iio_device_get_debug_attrs_count(osc_dev)) return false; ctx = osc_create_context(); dev = iio_context_find_device(ctx, "ad9361-phy"); dev_slave = iio_context_find_device(ctx, "ad9361-phy-hpc"); if (dev_slave) { cf_ad9361_lpc = iio_context_find_device(ctx, "cf-ad9361-lpc"); cf_ad9361_hpc = iio_context_find_device(ctx, "cf-ad9361-hpc"); dev_dds_master = iio_context_find_device(ctx, "cf-ad9361-dds-core-lpc"); dev_dds_slave = iio_context_find_device(ctx, "cf-ad9361-dds-core-hpc"); if (!(cf_ad9361_lpc && cf_ad9361_hpc && dev_dds_master && dev_dds_slave)) dev = NULL; else if (get_dds_channels()) dev = NULL; } if (dev && !iio_device_get_debug_attrs_count(dev)) dev = NULL; if (!dev) iio_context_destroy(ctx); return !!dev; }
static GtkWidget * fmcomms2adv_init(GtkWidget *notebook, const char *ini_fn) { GtkWidget *fmcomms2adv_panel; ctx = osc_create_context(); if (!ctx) return NULL; dev = iio_context_find_device(ctx, PHY_DEVICE); dev_slave = iio_context_find_device(ctx, PHY_SLAVE_DEVICE); if (dev_slave) { cf_ad9361_lpc = iio_context_find_device(ctx, CAP_DEVICE_ALT); cf_ad9361_hpc = iio_context_find_device(ctx, CAP_SLAVE_DEVICE); dev_dds_master = iio_context_find_device(ctx, DDS_DEVICE); dev_dds_slave = iio_context_find_device(ctx, DDS_SLAVE_DEVICE); if (get_dds_channels()) return NULL; } if (ini_fn) { load_profile(ini_fn); calibrate_from_ini(ini_fn); } builder = gtk_builder_new(); nbook = GTK_NOTEBOOK(notebook); if (!gtk_builder_add_from_file(builder, "fmcomms2_adv.glade", NULL)) gtk_builder_add_from_file(builder, OSC_GLADE_FILE_PATH "fmcomms2_adv.glade", NULL); fmcomms2adv_panel = GTK_WIDGET(gtk_builder_get_object(builder, "fmcomms2adv_panel")); connect_widgets(builder); gtk_combo_box_set_active(GTK_COMBO_BOX( GTK_WIDGET(gtk_builder_get_object(builder, "bist_tone"))), 0); gtk_combo_box_set_active(GTK_COMBO_BOX( GTK_WIDGET(gtk_builder_get_object(builder, "bist_tone_frequency"))), 0); gtk_combo_box_set_active(GTK_COMBO_BOX( GTK_WIDGET(gtk_builder_get_object(builder, "tone_level"))), 0); gtk_combo_box_set_active(GTK_COMBO_BOX( GTK_WIDGET(gtk_builder_get_object(builder, "bist_prbs"))), 0); gtk_combo_box_set_active(GTK_COMBO_BOX( GTK_WIDGET(gtk_builder_get_object(builder, "loopback"))), 0); g_builder_connect_signal(builder, "bist_tone", "changed", G_CALLBACK(bist_tone_cb), builder); g_builder_connect_signal(builder, "bist_tone_frequency", "changed", G_CALLBACK(bist_tone_cb), builder); g_builder_connect_signal(builder, "tone_level", "changed", G_CALLBACK(bist_tone_cb), builder); g_builder_connect_signal(builder, "c2q", "toggled", G_CALLBACK(bist_tone_cb), builder); g_builder_connect_signal(builder, "c1q", "toggled", G_CALLBACK(bist_tone_cb), builder); g_builder_connect_signal(builder, "c2i", "toggled", G_CALLBACK(bist_tone_cb), builder); g_builder_connect_signal(builder, "c1i", "toggled", G_CALLBACK(bist_tone_cb), builder); if (dev_slave) { g_builder_connect_signal(builder, "mcs_sync", "clicked", G_CALLBACK(mcs_cb), builder); gtk_combo_box_set_active( GTK_COMBO_BOX(gtk_builder_get_object(builder, "calibration_switch_control")), 0); __cal_switch_ports_enable_cb(0); g_builder_connect_signal(builder, "calibration_switch_control", "changed", G_CALLBACK(cal_switch_ports_enable_cb), builder); g_builder_connect_signal(builder, "tx_phase", "value-changed", G_CALLBACK(tx_phase_hscale_value_changed), 0); g_builder_connect_signal(builder, "do_fmcomms5_cal", "clicked", G_CALLBACK(do_calibration), gtk_builder_get_object(builder, "do_fmcomms5_cal")); g_builder_connect_signal(builder, "undo_fmcomms5_cal", "clicked", G_CALLBACK(undo_calibration), NULL); g_object_bind_property(gtk_builder_get_object(builder, "silent_calibration"), "active", gtk_builder_get_object(builder, "progress_calibration"), "visible", G_BINDING_DEFAULT); } else { gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(builder, "mcs_sync"))); gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(builder, "frame_fmcomms5"))); } g_builder_connect_signal(builder, "notebook1", "switch-page", G_CALLBACK(change_page_cb), GTK_WIDGET(gtk_builder_get_object(builder, "initialize"))); return fmcomms2adv_panel; }