예제 #1
0
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;
}
예제 #2
0
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;
}