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 }
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; }
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; }
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; }