From 462b9ebde7a33cafa025d626e5bd638f99dc4846 Mon Sep 17 00:00:00 2001 From: Sergey Musikhin <musihin_sergei@mail.ru> Date: Thu, 10 Jun 2021 06:58:59 +0000 Subject: [PATCH] init_xb200 --- grc/gen_bladerf_blocks.py | 6 ++-- lib/bladerf/bladerf_common.cc | 64 +++++++++++++++++++---------------- lib/bladerf/bladerf_common.h | 2 ++ 3 files changed, 39 insertions(+), 33 deletions(-) diff --git a/grc/gen_bladerf_blocks.py b/grc/gen_bladerf_blocks.py index db317c8..9df9098 100644 --- a/grc/gen_bladerf_blocks.py +++ b/grc/gen_bladerf_blocks.py @@ -110,9 +110,9 @@ parameters: category: Advanced label: 'XB-200' dtype: enum - default: auto - options: ['auto', 'auto3db', '50M', '144M', '222M', 'custom'] - option_labels: ['auto', 'auto3db', '50M', '144M', '222M', 'custom'] + default: 'none' + options: ['none','auto', 'auto3db', '50M', '144M', '222M', 'custom'] + option_labels: ['none','auto', 'auto3db', '50M', '144M', '222M', 'custom'] diff --git a/lib/bladerf/bladerf_common.cc b/lib/bladerf/bladerf_common.cc index 244d83d..9dd91c3 100644 --- a/lib/bladerf/bladerf_common.cc +++ b/lib/bladerf/bladerf_common.cc @@ -242,43 +242,15 @@ void bladerf_common::init(dict_t const &dict, bladerf_direction direction) } } - - if (bladerf_is_fpga_configured(_dev.get()) != 1) { BLADERF_THROW("The FPGA is not configured! Provide device argument " "fpga=/path/to/the/bitstream.rbf to load it."); } /* XB-200 Transverter Board */ - if (dict.count("xb200")) { - status = bladerf_expansion_attach(_dev.get(), BLADERF_XB_200); - if (status != 0) { - BLADERF_WARNING("Could not attach XB-200: " << bladerf_strerror(status)); - } else { - bladerf_xb200_filter filter = BLADERF_XB200_AUTO_1DB; - - if (_get(dict, "xb200") == "custom") { - filter = BLADERF_XB200_CUSTOM; - } else if (_get(dict, "xb200") == "50M") { - filter = BLADERF_XB200_50M; - } else if (_get(dict, "xb200") == "144M") { - filter = BLADERF_XB200_144M; - } else if (_get(dict, "xb200") == "222M") { - filter = BLADERF_XB200_222M; - } else if (_get(dict, "xb200") == "auto3db") { - filter = BLADERF_XB200_AUTO_3DB; - } else if (_get(dict, "xb200") == "auto") { - filter = BLADERF_XB200_AUTO_1DB; - } else { - filter = BLADERF_XB200_AUTO_1DB; - } + if (dict.count("xb200") && _get(dict, "xb200") != "none") { + init_xb200(_get(dict, "xb200"), direction); - status = bladerf_xb200_set_filterbank(_dev.get(), direction, filter); - if (status != 0) { - BLADERF_WARNING("Could not set XB-200 filter: " - << bladerf_strerror(status)); - } - } } if(dict.count("ref_clk")) @@ -430,6 +402,38 @@ size_t bladerf_common::get_max_channels(bladerf_direction direction) #endif } +void bladerf_common::init_xb200(const std::string &filter_name, bladerf_direction direction) +{ + auto status = bladerf_expansion_attach(_dev.get(), BLADERF_XB_200); + if (status != 0) { + BLADERF_WARNING("Could not attach XB-200: " << bladerf_strerror(status)); + } else { + bladerf_xb200_filter filter = BLADERF_XB200_AUTO_1DB; + + if (filter_name == "custom") { + filter = BLADERF_XB200_CUSTOM; + } else if (filter_name == "50M") { + filter = BLADERF_XB200_50M; + } else if (filter_name == "144M") { + filter = BLADERF_XB200_144M; + } else if (filter_name== "222M") { + filter = BLADERF_XB200_222M; + } else if (filter_name == "auto3db") { + filter = BLADERF_XB200_AUTO_3DB; + } else if (filter_name == "auto") { + filter = BLADERF_XB200_AUTO_1DB; + } else { + filter = BLADERF_XB200_AUTO_1DB; + } + + status = bladerf_xb200_set_filterbank(_dev.get(), direction, filter); + if (status != 0) { + BLADERF_WARNING("Could not set XB-200 filter: " + << bladerf_strerror(status)); + } + } +} + void bladerf_common::init_refclk(int freq) { const bladerf_range * range = nullptr; diff --git a/lib/bladerf/bladerf_common.h b/lib/bladerf/bladerf_common.h index eca363c..51fa262 100644 --- a/lib/bladerf/bladerf_common.h +++ b/lib/bladerf/bladerf_common.h @@ -163,8 +163,10 @@ protected: /* Get the maximum number of channels supported in a given direction */ size_t get_max_channels(bladerf_direction direction); + void init_xb200(const std::string & filter, bladerf_direction direction); void init_refclk(int freq); + void set_channel_enable(bladerf_channel ch, bool enable); bool get_channel_enable(bladerf_channel ch); -- GitLab