diff --git a/lib/bladerf/bladerf_common.cc b/lib/bladerf/bladerf_common.cc index 42c2c220ea435a22c8627c770d9a04a88cf6b2f5..d32f71cafe23900268357fbdea8ca51dc708485e 100644 --- a/lib/bladerf/bladerf_common.cc +++ b/lib/bladerf/bladerf_common.cc @@ -315,13 +315,6 @@ void bladerf_common::init(dict_t const &dict, bladerf_direction direction) } } - if (dict.count("in_clk")) { - init_input_clock(_get(dict, "in_clk")); - } - - if (dict.count("out_clk")) { - init_output_clock(_get(dict, "out_clk") == "True"); - } size_t numchan = boost::lexical_cast<size_t>(_get(dict, "numchan")); for(size_t i = 0; i < numchan; ++ i) @@ -333,17 +326,6 @@ void bladerf_common::init(dict_t const &dict, bladerf_direction direction) return label + std::to_string(i); }; - if(dict.count(ch_label("bias_tee"))) - { - auto status = bladerf_set_bias_tee(_dev.get(), ch, - _get(dict, ch_label("bias_tee")) == "True"); - if (BLADERF_ERR_UNSUPPORTED == status) { - // unsupported, but not worth crashing out - BLADERF_WARNING("Bias-tee not supported by device"); - } else if (status != 0) { - BLADERF_THROW_STATUS(status, "Failed to set bias-tee"); - } - } auto ch_trigger = ch_label("trigger"); if(dict.count(ch_trigger) && _get(dict, ch_trigger) == "True") { @@ -352,18 +334,10 @@ void bladerf_common::init(dict_t const &dict, bladerf_direction direction) auto signal = get_signal(_get(dict, ch_label("trigger_signal"))); setup_trigger(ch,signal,role); } - } /* Show some info about the device we've opened */ print_device_info(); - - - - - - - /* Initialize buffer and sample configuration */ if (dict.count("buffers")) { _num_buffers = boost::lexical_cast<size_t>(_get(dict, "buffers")); @@ -471,6 +445,36 @@ void bladerf_common::init_bladerf1(const dict_t &dict, bladerf_direction directi void bladerf_common::init_bladerf2(const dict_t &dict, bladerf_direction direction) { + if (dict.count("in_clk")) { + init_input_clock(_get(dict, "in_clk")); + } + + if (dict.count("out_clk")) { + init_output_clock(_get(dict, "out_clk") == "True"); + } + + size_t numchan = boost::lexical_cast<size_t>(_get(dict, "numchan")); + for(size_t i = 0; i < numchan; ++ i) + { + bladerf_channel ch = (direction == BLADERF_RX) ? BLADERF_CHANNEL_RX(i) + : BLADERF_CHANNEL_TX(i); + auto ch_label = [i](const std::string &label) + { + return label + std::to_string(i); + + }; + if(dict.count(ch_label("bias_tee"))) + { + auto status = bladerf_set_bias_tee(_dev.get(), ch, + _get(dict, ch_label("bias_tee")) == "True"); + if (BLADERF_ERR_UNSUPPORTED == status) { + // unsupported, but not worth crashing out + BLADERF_WARNING("Bias-tee not supported by device"); + } else if (status != 0) { + BLADERF_THROW_STATUS(status, "Failed to set bias-tee"); + } + } + } }