diff --git a/grc/gen_bladerf_blocks.py b/grc/gen_bladerf_blocks.py index e052f4daf560810c5a2d60a016852f3f24234dde..94de1d2ffea91f722d4d1907cd89414af925506e 100644 --- a/grc/gen_bladerf_blocks.py +++ b/grc/gen_bladerf_blocks.py @@ -120,6 +120,7 @@ parameters: default: 'none' options: ['none','auto', 'auto3db', '50M', '144M', '222M', 'custom'] option_labels: ['none','auto', 'auto3db', '50M', '144M', '222M', 'custom'] + hide: part - id: tamer category: x40/x115 @@ -128,6 +129,16 @@ parameters: default: 'internal' options: ['internal','external_1pps', 'external'] option_labels: ['Internal','External 1pps', 'External 10 MHz'] + hide: part + +- id: lpf_mode + label: 'LPF mode' + category: x40/x115 + dtype: enum + default: 'disabled' + options: ['disabled', 'bypassed'] + option_labels: ['Disabled', 'Bypassed'] + hide: part @@ -185,6 +196,7 @@ templates: + ",dac=" + str(${'$'}{dac}) + ",xb200=" + '${'$'}{xb200}' + ",tamer=" + '${'$'}{tamer}' + + ",lpf_mode="+'${'$'}{lpf_mode}' + ",trigger0="+'${'$'}{trigger0}' + ",trigger_role0="+'${'$'}{trigger_role0}' + ",trigger_signal0="+'${'$'}{trigger_signal0}' @@ -194,6 +206,7 @@ templates: + ",bias_tee0="+'${'$'}{bias_tee0}' + ",bias_tee1="+'${'$'}{bias_tee1}' + ) self.${'$'}{id}.set_sample_rate(${'$'}{sample_rate}) % for n in range(max_nchan): @@ -412,6 +425,8 @@ PARAMS_TMPL = """ option_labels: ['J71_4', 'J51_1', 'MINI_EXP_1', 'USER_0', 'USER_1', 'USER_2', 'USER_3', 'USER_4', 'USER_5', 'USER_6', 'USER_7'] hide: ${'$'}{ 'part' if (nchan > ${n}) else 'all'} + + """ diff --git a/lib/bladerf/bladerf_common.cc b/lib/bladerf/bladerf_common.cc index 48dda6849a27e7f497d6c602ece508fc5b95274c..bf7f027aa385bd81d035ad15b39f6c4b6190dbb4 100644 --- a/lib/bladerf/bladerf_common.cc +++ b/lib/bladerf/bladerf_common.cc @@ -418,6 +418,15 @@ void bladerf_common::init_bladerf1(const dict_t &dict, bladerf_direction directi if (dict.count("tamer")) { set_clock_source(_get(dict, "tamer")); } + bladerf_channel ch = (direction == BLADERF_RX) ? BLADERF_CHANNEL_RX(0) + : BLADERF_CHANNEL_TX(0); + if (dict.count("lpf_mode")) { + bladerf_lpf_mode mode = _get(dict, "lpf_mode") == "bypassed" + ? BLADERF_LPF_BYPASSED : BLADERF_LPF_DISABLED; + set_lpf_mode(ch, mode); + } + + } void bladerf_common::init_bladerf2(const dict_t &dict, bladerf_direction direction) @@ -1319,6 +1328,15 @@ double bladerf_common::get_smb_frequency() return static_cast<double>(actual_frequency); } +void bladerf_common::set_lpf_mode(bladerf_channel ch, bladerf_lpf_mode mode) +{ + auto status = bladerf_set_lpf_mode(_dev.get(), ch, mode); + if(status != 0) + { + BLADERF_THROW_STATUS(status, "Failed to set LPF mode"); + } +} + /****************************************************************************** * Private methods ******************************************************************************/ diff --git a/lib/bladerf/bladerf_common.h b/lib/bladerf/bladerf_common.h index c5d732244361e5522f8f10bd44e3a77a3ae62eb4..0ea6a01001bb5aff5f3248a4883dddf4c4505ed4 100644 --- a/lib/bladerf/bladerf_common.h +++ b/lib/bladerf/bladerf_common.h @@ -273,6 +273,9 @@ protected: /* Get the current SMB frequency */ double get_smb_frequency(); + void set_lpf_mode(bladerf_channel ch, bladerf_lpf_mode mode); + + /***************************************************************************** * Protected members ****************************************************************************/