void signal_handler_cb (GtkWidget *widget, gpointer data) { struct w_info *item = data; unsigned val; switch (item->type) { case CHECKBOX: val = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (widget)); break; case BUTTON: val = 1; break; case SPINBUTTON: val = (unsigned) gtk_spin_button_get_value(GTK_SPIN_BUTTON (widget)); break; case COMBOBOX: val = gtk_combo_box_get_active(GTK_COMBO_BOX(widget)); break; default: return; } iio_device_debug_attr_write_longlong(dev, item->name, val); if (dev_slave) iio_device_debug_attr_write_longlong(dev_slave, item->name, val); if (!strcmp(item->name, "initialize")) { reload_settings(); } }
static void signal_handler_cb (GtkWidget *widget, gpointer data) { struct w_info *item = data; unsigned val; char str[80]; int bit, ret; long long mask; switch (item->type) { case CHECKBOX: val = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (widget)); break; case BUTTON: val = 1; break; case SPINBUTTON: case SPINBUTTON_S8: val = (unsigned) gtk_spin_button_get_value(GTK_SPIN_BUTTON (widget)); break; case COMBOBOX: val = gtk_combo_box_get_active(GTK_COMBO_BOX(widget)); break; case CHECKBOX_MASK: /* Format is: adi,gpo-manual-mode-enable-mask#2 * # separates item name from bit number */ val = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (widget)); ret = sscanf(item->name, "%[^'#']#%d", str, &bit); if (ret != 2) return; iio_device_debug_attr_read_longlong(dev, str, &mask); if (val) { mask |= (1 << bit); } else { mask &= ~(1 << bit); } iio_device_debug_attr_write_longlong(dev, str, mask); if (dev_slave) iio_device_debug_attr_write_longlong(dev_slave, str, mask); return; default: return; } iio_device_debug_attr_write_longlong(dev, item->name, val); if (dev_slave) iio_device_debug_attr_write_longlong(dev_slave, item->name, val); if (!strcmp(item->name, "initialize")) { reload_settings(); } }
void signal_handler_cb (GtkWidget *widget, gpointer data) { struct w_info *item = data; unsigned val; switch (item->type) { case CHECKBOX: val = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (widget)); break; case BUTTON: val = 1; break; case SPINBUTTON: val = (unsigned) gtk_spin_button_get_value(GTK_SPIN_BUTTON (widget)); break; case COMBOBOX: val = gtk_combo_box_get_active(GTK_COMBO_BOX(widget)); break; default: return; } iio_device_debug_attr_write_longlong(dev, item->name, val); if (dev_slave) iio_device_debug_attr_write_longlong(dev_slave, item->name, val); if (!strcmp(item->name, "initialize")) { struct osc_plugin *plugin; GSList *node; for (node = plugin_list; node; node = g_slist_next(node)) { plugin = node->data; if (plugin && !strncmp(plugin->name, "FMComms2/3/4", 12)) { if (plugin->handle_external_request) { g_usleep(1 * G_USEC_PER_SEC); plugin->handle_external_request("Reload Settings"); } } } } }
int iio_device_reg_read(struct iio_device *dev, uint32_t address, uint32_t *value) { /* NOTE: There is a race condition here. But it is extremely unlikely to * happen, and as this is a debug function, it shouldn't be used for * something else than debug. */ long long val; int ret = iio_device_debug_attr_write_longlong(dev, "direct_reg_access", (long long) address); if (ret < 0) return ret; ret = iio_device_debug_attr_read_longlong(dev, "direct_reg_access", &val); if (!ret) *value = (uint32_t) val; return ret; }
static void __cal_switch_ports_enable_cb (unsigned val) { unsigned lp_slave, lp_master, sw; char *rx_port, *tx_port; /* * 0 DISABLE * 1 TX1B_B (HPC) -> RX1C_B (HPC) : BIST_LOOPBACK on A * 2 TX1B_A (LPC) -> RX1C_B (HPC) : BIST_LOOPBACK on A * 3 TX1B_B (HPC) -> RX1C_A (LPC) : BIST_LOOPBACK on B * 4 TX1B_A (LPC) -> RX1C_A (LPC) : BIST_LOOPBACK on B * */ switch (val) { default: case 0: lp_slave = 0; lp_master = 0; sw = 0; tx_port = "A"; rx_port = "A_BALANCED"; break; case 1: case 2: lp_slave = 0; lp_master = 1; sw = val - 1; tx_port = "B"; rx_port = "C_BALANCED"; break; case 3: case 4: lp_slave = 1; lp_master = 0; sw = val - 1; tx_port = "B"; rx_port = "C_BALANCED"; break; } #if 0 iio_device_debug_attr_write_bool(dev, "loopback", lp_master); iio_device_debug_attr_write_bool(dev_slave, "loopback", lp_slave); #else near_end_loopback_ctrl(0, lp_slave); /* HPC */ near_end_loopback_ctrl(1, lp_slave); /* HPC */ near_end_loopback_ctrl(4, lp_master); /* LPC */ near_end_loopback_ctrl(5, lp_master); /* LPC */ #endif iio_device_debug_attr_write_longlong(dev, "calibration_switch_control", sw); iio_device_attr_write(dev, "in_voltage0_rf_port_select", rx_port); iio_device_attr_write(dev, "out_voltage0_rf_port_select", tx_port); if (dev_slave) { iio_device_attr_write(dev_slave, "in_voltage0_rf_port_select", rx_port); iio_device_attr_write(dev_slave, "out_voltage0_rf_port_select", tx_port); } return; }