void bist_tone_cb (GtkWidget *widget, gpointer data)
{
	GtkBuilder *builder = data;
	unsigned mode, level, freq, c2i, c2q, c1i, c1q;
	char temp[40];

	mode = gtk_combo_box_get_active(GTK_COMBO_BOX(
		GTK_WIDGET(gtk_builder_get_object(builder, "bist_tone"))));
	level = gtk_combo_box_get_active(GTK_COMBO_BOX(
		GTK_WIDGET(gtk_builder_get_object(builder, "tone_level"))));
	freq = gtk_combo_box_get_active(GTK_COMBO_BOX(
		GTK_WIDGET(gtk_builder_get_object(builder, "bist_tone_frequency"))));
	c2i = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
		GTK_WIDGET(gtk_builder_get_object(builder, "c2i"))));
	c2q = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
		GTK_WIDGET(gtk_builder_get_object(builder, "c2q"))));
	c1i = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
		GTK_WIDGET(gtk_builder_get_object(builder, "c1i"))));
	c1q = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
		GTK_WIDGET(gtk_builder_get_object(builder, "c1q"))));

	sprintf(temp, "%d %d %d %d", mode, freq, level * 6,
		(c2q << 3) | (c2i << 2) | (c1q << 1) | c1i);

	iio_device_debug_attr_write(dev, "bist_tone", temp);

	if (dev_slave)
		iio_device_debug_attr_write(dev_slave, "bist_tone", temp);

}
static void mcs_cb (GtkWidget *widget, gpointer data)
{
	unsigned step;
	char temp[40], ensm_mode[40];

	iio_device_attr_read(dev, "ensm_mode", ensm_mode, sizeof(ensm_mode));

	/* Move the parts int ALERT for MCS */
	iio_device_attr_write(dev, "ensm_mode", "alert");
	iio_device_attr_write(dev_slave, "ensm_mode", "alert");

	for (step = 1; step <= 5; step++) {
		sprintf(temp, "%d", step);
		/* Don't change the order here - the master controls the SYNC GPIO */
		iio_device_debug_attr_write(dev_slave, "multichip_sync", temp);
		iio_device_debug_attr_write(dev, "multichip_sync", temp);
		sleep(0.1);
	}

	iio_device_attr_write(dev, "ensm_mode", ensm_mode);
	iio_device_attr_write(dev_slave, "ensm_mode", ensm_mode);

	/* The two DDSs are synced by toggling the ENABLE bit */
	if (dev_dds_master)
		dds_sync();
}
static void mcs_cb (GtkWidget *widget, gpointer data)
{
	unsigned step;
	struct iio_channel *tx_sample_master, *tx_sample_slave;
	long long tx_sample_master_freq, tx_sample_slave_freq;
	char temp[40], ensm_mode[40];
	unsigned tmp;
	static int fix_slave_tune = 1;

	tx_sample_master = iio_device_find_channel(dev, "voltage0", true);
	tx_sample_slave = iio_device_find_channel(dev_slave, "voltage0", true);

	iio_channel_attr_read_longlong(tx_sample_master, "sampling_frequency", &tx_sample_master_freq);
	iio_channel_attr_read_longlong(tx_sample_slave, "sampling_frequency", &tx_sample_slave_freq);

	if (tx_sample_master_freq != tx_sample_slave_freq) {
		printf("tx_sample_master_freq != tx_sample_slave_freq\nUpdating...\n");
		iio_channel_attr_write_longlong(tx_sample_slave, "sampling_frequency", tx_sample_master_freq);
	}

	if (fix_slave_tune) {
		iio_device_reg_read(dev, 0x6, &tmp);
		iio_device_reg_write(dev_slave, 0x6, tmp);
		iio_device_reg_read(dev, 0x7, &tmp);
		iio_device_reg_write(dev_slave, 0x7, tmp);
		fix_slave_tune = 0;
	}

	iio_device_attr_read(dev, "ensm_mode", ensm_mode, sizeof(ensm_mode));

	/* Move the parts int ALERT for MCS */
	iio_device_attr_write(dev, "ensm_mode", "alert");
	iio_device_attr_write(dev_slave, "ensm_mode", "alert");

	for (step = 1; step <= 5; step++) {
		sprintf(temp, "%d", step);
		/* Don't change the order here - the master controls the SYNC GPIO */
		iio_device_debug_attr_write(dev_slave, "multichip_sync", temp);
		iio_device_debug_attr_write(dev, "multichip_sync", temp);
		sleep(0.1);
	}

	iio_device_attr_write(dev, "ensm_mode", ensm_mode);
	iio_device_attr_write(dev_slave, "ensm_mode", ensm_mode);

#if 0
	iio_device_debug_attr_write(dev, "multichip_sync", "6");
	iio_device_debug_attr_write(dev_slave, "multichip_sync", "6");
#endif

}
Example #4
0
int iio_device_reg_write(struct iio_device *dev,
		uint32_t address, uint32_t value)
{
	ssize_t ret;

	char buf[1024];
	snprintf(buf, sizeof(buf), "0x%x 0x%x", address, value);
	ret = iio_device_debug_attr_write(dev, "direct_reg_access", buf);

	return ret < 0 ? ret : 0;
}
Example #5
0
int iio_device_debug_attr_write_double(const struct iio_device *dev,
		const char *attr, double val)
{
	ssize_t ret;
	char buf[1024];

	ret = (ssize_t) write_double(buf, sizeof(buf), val);
	if (!ret)
		ret = iio_device_debug_attr_write(dev, attr, buf);
	return ret < 0 ? ret : 0;
}
Example #6
0
int iio_device_debug_attr_write_longlong(const struct iio_device *dev,
		const char *attr, long long val)
{
	ssize_t ret;
	char buf[1024];

	snprintf(buf, sizeof(buf), "%lld", val);
	ret = iio_device_debug_attr_write(dev, attr, buf);

	return ret < 0 ? ret : 0;
}