aboutsummaryrefslogtreecommitdiffstats
path: root/host
diff options
context:
space:
mode:
authorMartin Braun <martin.braun@ettus.com>2018-01-22 10:05:39 -0800
committerMartin Braun <martin.braun@ettus.com>2018-02-19 14:51:47 -0800
commitcee579077f2fbcc671e92d3c56b0e6caf20a52c6 (patch)
treeb7cad1e2219f197bbbb720344f16980f20bdb039 /host
parent74f45ae2a723107adce1038a708d2958aca97487 (diff)
downloaduhd-cee579077f2fbcc671e92d3c56b0e6caf20a52c6.tar.gz
uhd-cee579077f2fbcc671e92d3c56b0e6caf20a52c6.tar.bz2
uhd-cee579077f2fbcc671e92d3c56b0e6caf20a52c6.zip
ddc: duc: Factor out usage of boost::bind()
Replace with lambdas.
Diffstat (limited to 'host')
-rw-r--r--host/lib/rfnoc/ddc_block_ctrl_impl.cpp8
-rw-r--r--host/lib/rfnoc/duc_block_ctrl_impl.cpp78
2 files changed, 54 insertions, 32 deletions
diff --git a/host/lib/rfnoc/ddc_block_ctrl_impl.cpp b/host/lib/rfnoc/ddc_block_ctrl_impl.cpp
index 8697c84cf..4fb3d567e 100644
--- a/host/lib/rfnoc/ddc_block_ctrl_impl.cpp
+++ b/host/lib/rfnoc/ddc_block_ctrl_impl.cpp
@@ -1,5 +1,5 @@
//
-// Copyright 2016 Ettus Research
+// Copyright 2016-2018 Ettus Research, a National Instruments Company
//
// SPDX-License-Identifier: GPL-3.0
//
@@ -20,7 +20,6 @@ using namespace uhd::rfnoc;
class ddc_block_ctrl_impl : public ddc_block_ctrl
{
public:
-
UHD_RFNOC_BLOCK_CONSTRUCTOR(ddc_block_ctrl)
, _fpga_compat(user_reg_read64(RB_REG_COMPAT_NUM))
, _num_halfbands(uhd::narrow_cast<size_t>(
@@ -41,14 +40,15 @@ public:
// Argument/prop tree hooks
for (size_t chan = 0; chan < get_input_ports().size(); chan++) {
- double default_freq = get_arg<double>("freq", chan);
+ const double default_freq = get_arg<double>("freq", chan);
_tree->access<double>(get_arg_path("freq/value", chan))
.set_coercer([this, chan](const double value){
return this->set_freq(value, chan);
})
.set(default_freq);
;
- double default_output_rate = get_arg<double>("output_rate", chan);
+ const double default_output_rate =
+ get_arg<double>("output_rate", chan);
_tree->access<double>(get_arg_path("output_rate/value", chan))
.set_coercer([this, chan](const double value){
return this->set_output_rate(value, chan);
diff --git a/host/lib/rfnoc/duc_block_ctrl_impl.cpp b/host/lib/rfnoc/duc_block_ctrl_impl.cpp
index c8989d65c..fd6354419 100644
--- a/host/lib/rfnoc/duc_block_ctrl_impl.cpp
+++ b/host/lib/rfnoc/duc_block_ctrl_impl.cpp
@@ -1,5 +1,5 @@
//
-// Copyright 2016 Ettus Research
+// Copyright 2016-2018 Ettus Research, a National Instruments Company
//
// SPDX-License-Identifier: GPL-3.0
//
@@ -17,21 +17,9 @@
using namespace uhd::rfnoc;
-// TODO remove this once we have actual lambdas
-static double lambda_forward_prop(uhd::property_tree::sptr tree, uhd::fs_path prop, double value)
-{
- return tree->access<double>(prop).set(value).get();
-}
-
-static double lambda_forward_prop(uhd::property_tree::sptr tree, uhd::fs_path prop)
-{
- return tree->access<double>(prop).get();
-}
-
class duc_block_ctrl_impl : public duc_block_ctrl
{
public:
-
UHD_RFNOC_BLOCK_CONSTRUCTOR(duc_block_ctrl)
, _fpga_compat(user_reg_read64(RB_REG_COMPAT_NUM))
, _num_halfbands(uhd::narrow_cast<size_t>(
@@ -52,45 +40,78 @@ public:
// Argument/prop tree hooks
for (size_t chan = 0; chan < get_input_ports().size(); chan++) {
- double default_freq = get_arg<double>("freq", chan);
+ const double default_freq = get_arg<double>("freq", chan);
_tree->access<double>(get_arg_path("freq/value", chan))
- .set_coercer(boost::bind(&duc_block_ctrl_impl::set_freq, this, _1, chan))
+ .set_coercer([this, chan](const double value){
+ return this->set_freq(value, chan);
+ })
.set(default_freq);
;
- double default_input_rate = get_arg<double>("input_rate", chan);
+
+ const double default_input_rate =
+ get_arg<double>("input_rate", chan);
_tree->access<double>(get_arg_path("input_rate/value", chan))
- .set_coercer(boost::bind(&duc_block_ctrl_impl::set_input_rate, this, _1, chan))
+ .set_coercer([this, chan](const double value){
+ return this->set_input_rate(value, chan);
+ })
.set(default_input_rate)
;
_tree->access<double>(get_arg_path("output_rate/value", chan))
- .add_coerced_subscriber(boost::bind(&duc_block_ctrl_impl::set_output_rate, this, _1, chan))
+ .add_coerced_subscriber([this, chan](const double rate){
+ this->set_output_rate(rate, chan);
+ })
;
// Legacy properties (for backward compat w/ multi_usrp)
const uhd::fs_path dsp_base_path = _root_path / "legacy_api" / chan;
// Legacy properties
_tree->create<double>(dsp_base_path / "rate/value")
- .set_coercer(boost::bind(&lambda_forward_prop, _tree, get_arg_path("input_rate/value", chan), _1))
- .set_publisher(boost::bind(&lambda_forward_prop, _tree, get_arg_path("input_rate/value", chan)))
+ .set_coercer([this, chan](const double value){
+ return this->_tree->access<double>(
+ this->get_arg_path("input_rate/value", chan)
+ ).set(value).get();
+ })
+ .set_publisher([this, chan](){
+ return this->_tree->access<double>(
+ this->get_arg_path("input_rate/value", chan)
+ ).get();
+ })
;
_tree->create<uhd::meta_range_t>(dsp_base_path / "rate/range")
- .set_publisher(boost::bind(&duc_block_ctrl_impl::get_input_rates, this))
+ .set_publisher([this](){
+ return get_input_rates();
+ })
;
_tree->create<double>(dsp_base_path / "freq/value")
- .set_coercer(boost::bind(&lambda_forward_prop, _tree, get_arg_path("freq/value", chan), _1))
- .set_publisher(boost::bind(&lambda_forward_prop, _tree, get_arg_path("freq/value", chan)))
+ .set_coercer([this, chan](const double value){
+ return this->_tree->access<double>(
+ this->get_arg_path("freq/value", chan)
+ ).set(value).get();
+ })
+ .set_publisher([this, chan](){
+ return this->_tree->access<double>(
+ this->get_arg_path("freq/value", chan)
+ ).get();
+ })
;
_tree->create<uhd::meta_range_t>(dsp_base_path / "freq/range")
- .set_publisher(boost::bind(&duc_block_ctrl_impl::get_freq_range, this))
+ .set_publisher([this](){
+ return get_freq_range();
+ })
;
_tree->access<uhd::time_spec_t>("time/cmd")
- .add_coerced_subscriber(boost::bind(&block_ctrl_base::set_command_time, this, _1, chan))
+ .add_coerced_subscriber([this, chan](const uhd::time_spec_t time_spec){
+ this->set_command_time(time_spec, chan);
+ })
;
if (_tree->exists("tick_rate")) {
- const double tick_rate = _tree->access<double>("tick_rate").get();
+ const double tick_rate =
+ _tree->access<double>("tick_rate").get();
set_command_tick_rate(tick_rate, chan);
_tree->access<double>("tick_rate")
- .add_coerced_subscriber(boost::bind(&block_ctrl_base::set_command_tick_rate, this, _1, chan))
+ .add_coerced_subscriber([this, chan](const double rate){
+ this->set_command_tick_rate(rate, chan);
+ })
;
}
@@ -100,7 +121,8 @@ public:
sr_write("CONFIG", 1, chan); // Enable clear EOB
}
} // end ctor
- virtual ~duc_block_ctrl_impl() {};
+
+ virtual ~duc_block_ctrl_impl() {}
double get_input_scale_factor(size_t port=ANY_PORT)
{