void filter_fir_update(void) { bool rx = false, tx = false, rxtx = false; struct iio_channel *chn; iio_device_attr_read_bool(dev, "in_out_voltage_filter_fir_en", &rxtx); chn = iio_device_find_channel(dev, "voltage0", false); if (chn) iio_channel_attr_read_bool(chn, "filter_fir_en", &rx); chn = iio_device_find_channel(dev, "voltage0", true); if (chn) iio_channel_attr_read_bool(chn, "filter_fir_en", &tx); if (rxtx) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (enable_fir_filter_rx_tx), rxtx); } else if (!rx && !tx) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (disable_all_fir_filters), true); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (enable_fir_filter_rx), rx); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (fir_filter_en_tx), tx); } }
int ad9361_get_trx_fir_enable(struct iio_device *dev, int *enable) { bool value; int ret = iio_device_attr_read_bool(dev, "in_out_voltage_filter_fir_en", &value); if (ret < 0) ret = iio_channel_attr_read_bool(iio_device_find_channel(dev, "out", false), "voltage_filter_fir_en", &value); if (!ret) *enable = value; return ret; }