1 --- uhd-3.15.0.0/host/lib/rfnoc/dma_fifo_block_ctrl_impl.cpp.orig 2020-01-01 05:21:49.000000000 +0100
2 +++ uhd-3.15.0.0/host/lib/rfnoc/dma_fifo_block_ctrl_impl.cpp 2020-07-10 08:20:19.298928111 +0200
4 #include <uhdlib/rfnoc/wb_iface_adapter.hpp>
5 #include <uhdlib/usrp/cores/dma_fifo_core_3000.hpp>
6 #include <boost/format.hpp>
7 -#include <boost/make_shared.hpp>
8 #include <boost/thread/mutex.hpp>
12 using namespace uhd::rfnoc;
16 _tree->access<int>(get_arg_path("base_addr/value", i))
17 - .add_coerced_subscriber(boost::bind(&dma_fifo_block_ctrl_impl::resize,
18 + .add_coerced_subscriber(std::bind(&dma_fifo_block_ctrl_impl::resize,
21 - boost::ref(_perifs[i].depth),
22 + std::placeholders::_1,
23 + std::ref(_perifs[i].depth),
25 .set(_perifs[i].base_addr);
26 _tree->access<int>(get_arg_path("depth/value", i))
27 - .add_coerced_subscriber(boost::bind(&dma_fifo_block_ctrl_impl::resize,
28 + .add_coerced_subscriber(std::bind(&dma_fifo_block_ctrl_impl::resize,
30 - boost::ref(_perifs[i].base_addr),
32 + std::ref(_perifs[i].base_addr),
33 + std::placeholders::_1,
35 .set(_perifs[i].depth);
37 --- uhd-3.15.0.0/host/lib/usrp/multi_usrp.cpp.orig 2020-01-01 05:21:49.000000000 +0100
38 +++ uhd-3.15.0.0/host/lib/usrp/multi_usrp.cpp 2020-07-10 08:21:23.055249380 +0200
40 #include <boost/format.hpp>
41 #include <boost/algorithm/string.hpp>
43 +#include <functional>
49 static gain_fcns_t make_gain_fcns_from_subtree(property_tree::sptr subtree){
50 gain_fcns_t gain_fcns;
51 - gain_fcns.get_range = boost::bind(&get_gain_range, subtree);
52 - gain_fcns.get_value = boost::bind(&get_gain_value, subtree);
53 - gain_fcns.set_value = boost::bind(&set_gain_value, subtree, _1);
54 + gain_fcns.get_range = std::bind(&get_gain_range, subtree);
55 + gain_fcns.get_value = std::bind(&get_gain_value, subtree);
56 + gain_fcns.set_value = std::bind(&set_gain_value, subtree, std::placeholders::_1);
60 --- uhd-3.15.0.0/host/lib/usrp/cores/rx_dsp_core_3000.cpp.orig 2020-01-01 05:21:49.000000000 +0100
61 +++ uhd-3.15.0.0/host/lib/usrp/cores/rx_dsp_core_3000.cpp 2020-07-10 09:11:51.962173717 +0200
63 void populate_subtree(property_tree::sptr subtree)
65 subtree->create<meta_range_t>("rate/range")
66 - .set_publisher(boost::bind(&rx_dsp_core_3000::get_host_rates, this));
67 + .set_publisher(std::bind(&rx_dsp_core_3000::get_host_rates, this));
68 subtree->create<double>("rate/value")
70 - .set_coercer(boost::bind(&rx_dsp_core_3000::set_host_rate, this, _1));
71 + .set_coercer(std::bind(&rx_dsp_core_3000::set_host_rate, this, std::placeholders::_1));
72 subtree->create<double>("freq/value")
73 .set(DEFAULT_CORDIC_FREQ)
74 - .set_coercer(boost::bind(&rx_dsp_core_3000::set_freq, this, _1))
75 + .set_coercer(std::bind(&rx_dsp_core_3000::set_freq, this, std::placeholders::_1))
76 .set_publisher([this]() { return this->get_freq(); });
77 subtree->create<meta_range_t>("freq/range")
78 - .set_publisher(boost::bind(&rx_dsp_core_3000::get_freq_range, this));
79 + .set_publisher(std::bind(&rx_dsp_core_3000::get_freq_range, this));
83 --- uhd-3.15.0.0/host/lib/usrp/cores/tx_dsp_core_3000.cpp.orig 2020-01-01 05:21:49.000000000 +0100
84 +++ uhd-3.15.0.0/host/lib/usrp/cores/tx_dsp_core_3000.cpp 2020-07-10 11:18:11.977775916 +0200
86 #include <boost/thread/thread.hpp> //sleep
89 +#include <functional>
91 #define REG_DSP_TX_FREQ _dsp_base + 0
92 #define REG_DSP_TX_SCALE_IQ _dsp_base + 4
94 void populate_subtree(property_tree::sptr subtree)
96 subtree->create<meta_range_t>("rate/range")
97 - .set_publisher(boost::bind(&tx_dsp_core_3000::get_host_rates, this));
98 + .set_publisher(std::bind(&tx_dsp_core_3000::get_host_rates, this));
99 subtree->create<double>("rate/value")
101 - .set_coercer(boost::bind(&tx_dsp_core_3000::set_host_rate, this, _1));
102 + .set_coercer(std::bind(&tx_dsp_core_3000::set_host_rate, this, std::placeholders::_1));
103 subtree->create<double>("freq/value")
104 .set(DEFAULT_CORDIC_FREQ)
105 - .set_coercer(boost::bind(&tx_dsp_core_3000::set_freq, this, _1))
106 + .set_coercer(std::bind(&tx_dsp_core_3000::set_freq, this, std::placeholders::_1))
107 .set_publisher([this]() { return this->get_freq(); });
108 subtree->create<meta_range_t>("freq/range")
109 - .set_publisher(boost::bind(&tx_dsp_core_3000::get_freq_range, this));
110 + .set_publisher(std::bind(&tx_dsp_core_3000::get_freq_range, this));
114 --- uhd-3.15.0.0/host/lib/usrp/dboard/db_xcvr2450.cpp.orig 2020-01-01 05:21:49.000000000 +0100
115 +++ uhd-3.15.0.0/host/lib/usrp/dboard/db_xcvr2450.cpp 2020-07-10 11:37:10.671607082 +0200
116 @@ -222,23 +222,23 @@
117 this->get_rx_subtree()->create<std::string>("name")
119 this->get_rx_subtree()->create<sensor_value_t>("sensors/lo_locked")
120 - .set_publisher(boost::bind(&xcvr2450::get_locked, this));
121 + .set_publisher(std::bind(&xcvr2450::get_locked, this));
122 this->get_rx_subtree()->create<sensor_value_t>("sensors/rssi")
123 - .set_publisher(boost::bind(&xcvr2450::get_rssi, this));
124 + .set_publisher(std::bind(&xcvr2450::get_rssi, this));
125 for(const std::string &name: xcvr_rx_gain_ranges.keys()){
126 this->get_rx_subtree()->create<double>("gains/"+name+"/value")
127 - .set_coercer(boost::bind(&xcvr2450::set_rx_gain, this, _1, name))
128 + .set_coercer(std::bind(&xcvr2450::set_rx_gain, this, std::placeholders::_1, name))
129 .set(xcvr_rx_gain_ranges[name].start());
130 this->get_rx_subtree()->create<meta_range_t>("gains/"+name+"/range")
131 .set(xcvr_rx_gain_ranges[name]);
133 this->get_rx_subtree()->create<double>("freq/value")
134 - .set_coercer(boost::bind(&xcvr2450::set_lo_freq, this, _1))
135 + .set_coercer(std::bind(&xcvr2450::set_lo_freq, this, std::placeholders::_1))
136 .set(double(2.45e9));
137 this->get_rx_subtree()->create<meta_range_t>("freq/range")
138 .set(xcvr_freq_range);
139 this->get_rx_subtree()->create<std::string>("antenna/value")
140 - .add_coerced_subscriber(boost::bind(&xcvr2450::set_rx_ant, this, _1))
141 + .add_coerced_subscriber(std::bind(&xcvr2450::set_rx_ant, this, std::placeholders::_1))
142 .set(xcvr_antennas.at(0));
143 this->get_rx_subtree()->create<std::vector<std::string> >("antenna/options")
146 this->get_rx_subtree()->create<bool>("use_lo_offset")
148 this->get_rx_subtree()->create<double>("bandwidth/value")
149 - .set_coercer(boost::bind(&xcvr2450::set_rx_bandwidth, this, _1)) //complex bandpass bandwidth
150 + .set_coercer(std::bind(&xcvr2450::set_rx_bandwidth, this, std::placeholders::_1)) //complex bandpass bandwidth
151 .set(2.0*_rx_bandwidth); //_rx_bandwidth in lowpass, convert to complex bandpass
152 this->get_rx_subtree()->create<meta_range_t>("bandwidth/range")
153 .set(xcvr_rx_bandwidth_range);
154 @@ -260,21 +260,21 @@
155 this->get_tx_subtree()->create<std::string>("name")
157 this->get_tx_subtree()->create<sensor_value_t>("sensors/lo_locked")
158 - .set_publisher(boost::bind(&xcvr2450::get_locked, this));
159 + .set_publisher(std::bind(&xcvr2450::get_locked, this));
160 for(const std::string &name: xcvr_tx_gain_ranges.keys()){
161 this->get_tx_subtree()->create<double>("gains/"+name+"/value")
162 - .set_coercer(boost::bind(&xcvr2450::set_tx_gain, this, _1, name))
163 + .set_coercer(std::bind(&xcvr2450::set_tx_gain, this, std::placeholders::_1, name))
164 .set(xcvr_tx_gain_ranges[name].start());
165 this->get_tx_subtree()->create<meta_range_t>("gains/"+name+"/range")
166 .set(xcvr_tx_gain_ranges[name]);
168 this->get_tx_subtree()->create<double>("freq/value")
169 - .set_coercer(boost::bind(&xcvr2450::set_lo_freq, this, _1))
170 + .set_coercer(std::bind(&xcvr2450::set_lo_freq, this, std::placeholders::_1))
171 .set(double(2.45e9));
172 this->get_tx_subtree()->create<meta_range_t>("freq/range")
173 .set(xcvr_freq_range);
174 this->get_tx_subtree()->create<std::string>("antenna/value")
175 - .add_coerced_subscriber(boost::bind(&xcvr2450::set_tx_ant, this, _1))
176 + .add_coerced_subscriber(std::bind(&xcvr2450::set_tx_ant, this, std::placeholders::_1))
177 .set(xcvr_antennas.at(1));
178 this->get_tx_subtree()->create<std::vector<std::string> >("antenna/options")
181 this->get_tx_subtree()->create<bool>("use_lo_offset")
183 this->get_tx_subtree()->create<double>("bandwidth/value")
184 - .set_coercer(boost::bind(&xcvr2450::set_tx_bandwidth, this, _1)) //complex bandpass bandwidth
185 + .set_coercer(std::bind(&xcvr2450::set_tx_bandwidth, this, std::placeholders::_1)) //complex bandpass bandwidth
186 .set(2.0*_tx_bandwidth); //_tx_bandwidth in lowpass, convert to complex bandpass
187 this->get_tx_subtree()->create<meta_range_t>("bandwidth/range")
188 .set(xcvr_tx_bandwidth_range);
189 --- uhd-3.15.0.0/host/lib/usrp/dboard/db_sbx_common.cpp.orig 2020-01-01 05:21:49.000000000 +0100
190 +++ uhd-3.15.0.0/host/lib/usrp/dboard/db_sbx_common.cpp 2020-07-10 13:05:02.423047555 +0200
191 @@ -146,20 +146,20 @@
192 else this->get_rx_subtree()->create<std::string>("name").set("SBX/CBX RX");
194 this->get_rx_subtree()->create<sensor_value_t>("sensors/lo_locked")
195 - .set_publisher(boost::bind(&sbx_xcvr::get_locked, this, dboard_iface::UNIT_RX));
196 + .set_publisher(std::bind(&sbx_xcvr::get_locked, this, dboard_iface::UNIT_RX));
197 for(const std::string &name: sbx_rx_gain_ranges.keys()){
198 this->get_rx_subtree()->create<double>("gains/"+name+"/value")
199 - .set_coercer(boost::bind(&sbx_xcvr::set_rx_gain, this, _1, name))
200 + .set_coercer(std::bind(&sbx_xcvr::set_rx_gain, this, std::placeholders::_1, name))
201 .set(sbx_rx_gain_ranges[name].start());
202 this->get_rx_subtree()->create<meta_range_t>("gains/"+name+"/range")
203 .set(sbx_rx_gain_ranges[name]);
205 this->get_rx_subtree()->create<double>("freq/value")
206 - .set_coercer(boost::bind(&sbx_xcvr::set_lo_freq, this, dboard_iface::UNIT_RX, _1))
207 + .set_coercer(std::bind(&sbx_xcvr::set_lo_freq, this, dboard_iface::UNIT_RX, std::placeholders::_1))
208 .set((freq_range.start() + freq_range.stop())/2.0);
209 this->get_rx_subtree()->create<meta_range_t>("freq/range").set(freq_range);
210 this->get_rx_subtree()->create<std::string>("antenna/value")
211 - .add_coerced_subscriber(boost::bind(&sbx_xcvr::set_rx_ant, this, _1))
212 + .add_coerced_subscriber(std::bind(&sbx_xcvr::set_rx_ant, this, std::placeholders::_1))
214 this->get_rx_subtree()->create<std::vector<std::string> >("antenna/options")
215 .set(sbx_rx_antennas);
216 @@ -187,20 +187,20 @@
217 else this->get_tx_subtree()->create<std::string>("name").set("SBX/CBX TX");
219 this->get_tx_subtree()->create<sensor_value_t>("sensors/lo_locked")
220 - .set_publisher(boost::bind(&sbx_xcvr::get_locked, this, dboard_iface::UNIT_TX));
221 + .set_publisher(std::bind(&sbx_xcvr::get_locked, this, dboard_iface::UNIT_TX));
222 for(const std::string &name: sbx_tx_gain_ranges.keys()){
223 this->get_tx_subtree()->create<double>("gains/"+name+"/value")
224 - .set_coercer(boost::bind(&sbx_xcvr::set_tx_gain, this, _1, name))
225 + .set_coercer(std::bind(&sbx_xcvr::set_tx_gain, this, std::placeholders::_1, name))
226 .set(sbx_tx_gain_ranges[name].start());
227 this->get_tx_subtree()->create<meta_range_t>("gains/"+name+"/range")
228 .set(sbx_tx_gain_ranges[name]);
230 this->get_tx_subtree()->create<double>("freq/value")
231 - .set_coercer(boost::bind(&sbx_xcvr::set_lo_freq, this, dboard_iface::UNIT_TX, _1))
232 + .set_coercer(std::bind(&sbx_xcvr::set_lo_freq, this, dboard_iface::UNIT_TX, std::placeholders::_1))
233 .set((freq_range.start() + freq_range.stop())/2.0);
234 this->get_tx_subtree()->create<meta_range_t>("freq/range").set(freq_range);
235 this->get_tx_subtree()->create<std::string>("antenna/value")
236 - .add_coerced_subscriber(boost::bind(&sbx_xcvr::set_tx_ant, this, _1))
237 + .add_coerced_subscriber(std::bind(&sbx_xcvr::set_tx_ant, this, std::placeholders::_1))
238 .set(sbx_tx_antennas.at(0));
239 this->get_tx_subtree()->create<std::vector<std::string> >("antenna/options")
240 .set(sbx_tx_antennas);
241 --- uhd-3.15.0.0/host/lib/usrp/dboard/db_sbx_version3.cpp.orig 2020-01-01 05:21:49.000000000 +0100
242 +++ uhd-3.15.0.0/host/lib/usrp/dboard/db_sbx_version3.cpp 2020-07-10 13:05:49.216127388 +0200
244 sbx_xcvr::sbx_version3::sbx_version3(sbx_xcvr *_self_sbx_xcvr) {
245 //register the handle to our base SBX class
246 self_base = _self_sbx_xcvr;
247 - _txlo = adf435x_iface::make_adf4350(boost::bind(&sbx_xcvr::sbx_version3::write_lo_regs, this, dboard_iface::UNIT_TX, _1));
248 - _rxlo = adf435x_iface::make_adf4350(boost::bind(&sbx_xcvr::sbx_version3::write_lo_regs, this, dboard_iface::UNIT_RX, _1));
249 + _txlo = adf435x_iface::make_adf4350(std::bind(&sbx_xcvr::sbx_version3::write_lo_regs, this, dboard_iface::UNIT_TX, std::placeholders::_1));
250 + _rxlo = adf435x_iface::make_adf4350(std::bind(&sbx_xcvr::sbx_version3::write_lo_regs, this, dboard_iface::UNIT_RX, std::placeholders::_1));
253 sbx_xcvr::sbx_version3::~sbx_version3(void){
254 --- uhd-3.15.0.0/host/lib/usrp/dboard/db_sbx_version4.cpp.orig 2020-01-01 05:21:49.000000000 +0100
255 +++ uhd-3.15.0.0/host/lib/usrp/dboard/db_sbx_version4.cpp 2020-07-10 13:06:38.189195412 +0200
257 sbx_xcvr::sbx_version4::sbx_version4(sbx_xcvr *_self_sbx_xcvr) {
258 //register the handle to our base SBX class
259 self_base = _self_sbx_xcvr;
260 - _txlo = adf435x_iface::make_adf4351(boost::bind(&sbx_xcvr::sbx_version4::write_lo_regs, this, dboard_iface::UNIT_TX, _1));
261 - _rxlo = adf435x_iface::make_adf4351(boost::bind(&sbx_xcvr::sbx_version4::write_lo_regs, this, dboard_iface::UNIT_RX, _1));
262 + _txlo = adf435x_iface::make_adf4351(std::bind(&sbx_xcvr::sbx_version4::write_lo_regs, this, dboard_iface::UNIT_TX, std::placeholders::_1));
263 + _rxlo = adf435x_iface::make_adf4351(std::bind(&sbx_xcvr::sbx_version4::write_lo_regs, this, dboard_iface::UNIT_RX, std::placeholders::_1));
267 --- uhd-3.15.0.0/host/lib/usrp/dboard/db_cbx.cpp.orig 2020-01-01 05:21:49.000000000 +0100
268 +++ uhd-3.15.0.0/host/lib/usrp/dboard/db_cbx.cpp 2020-07-10 13:13:36.733594629 +0200
270 sbx_xcvr::cbx::cbx(sbx_xcvr *_self_sbx_xcvr) {
271 //register the handle to our base CBX class
272 self_base = _self_sbx_xcvr;
273 - _txlo = max287x_iface::make<max2870>(boost::bind(&sbx_xcvr::cbx::write_lo_regs, this, dboard_iface::UNIT_TX, _1));
274 - _rxlo = max287x_iface::make<max2870>(boost::bind(&sbx_xcvr::cbx::write_lo_regs, this, dboard_iface::UNIT_RX, _1));
275 + _txlo = max287x_iface::make<max2870>(std::bind(&sbx_xcvr::cbx::write_lo_regs, this, dboard_iface::UNIT_TX, std::placeholders::_1));
276 + _rxlo = max287x_iface::make<max2870>(std::bind(&sbx_xcvr::cbx::write_lo_regs, this, dboard_iface::UNIT_RX, std::placeholders::_1));
280 --- uhd-3.15.0.0/host/lib/usrp/dboard/db_ubx.cpp.orig 2020-01-01 05:21:49.000000000 +0100
281 +++ uhd-3.15.0.0/host/lib/usrp/dboard/db_ubx.cpp 2020-07-10 14:55:54.540343277 +0200
282 @@ -395,10 +395,10 @@
286 - _txlo1 = max287x_iface::make<max2870>(boost::bind(&ubx_xcvr::write_spi_regs, this, TXLO1, _1));
287 - _txlo2 = max287x_iface::make<max2870>(boost::bind(&ubx_xcvr::write_spi_regs, this, TXLO2, _1));
288 - _rxlo1 = max287x_iface::make<max2870>(boost::bind(&ubx_xcvr::write_spi_regs, this, RXLO1, _1));
289 - _rxlo2 = max287x_iface::make<max2870>(boost::bind(&ubx_xcvr::write_spi_regs, this, RXLO2, _1));
290 + _txlo1 = max287x_iface::make<max2870>(std::bind(&ubx_xcvr::write_spi_regs, this, TXLO1, std::placeholders::_1));
291 + _txlo2 = max287x_iface::make<max2870>(std::bind(&ubx_xcvr::write_spi_regs, this, TXLO2, std::placeholders::_1));
292 + _rxlo1 = max287x_iface::make<max2870>(std::bind(&ubx_xcvr::write_spi_regs, this, RXLO1, std::placeholders::_1));
293 + _rxlo2 = max287x_iface::make<max2870>(std::bind(&ubx_xcvr::write_spi_regs, this, RXLO2, std::placeholders::_1));
294 std::vector<max287x_iface::sptr> los{_txlo1, _txlo2, _rxlo1, _rxlo2};
295 for(max287x_iface::sptr lo: los)
297 @@ -409,10 +409,10 @@
299 else if (_rev == 1 or _rev == 2)
301 - _txlo1 = max287x_iface::make<max2871>(boost::bind(&ubx_xcvr::write_spi_regs, this, TXLO1, _1));
302 - _txlo2 = max287x_iface::make<max2871>(boost::bind(&ubx_xcvr::write_spi_regs, this, TXLO2, _1));
303 - _rxlo1 = max287x_iface::make<max2871>(boost::bind(&ubx_xcvr::write_spi_regs, this, RXLO1, _1));
304 - _rxlo2 = max287x_iface::make<max2871>(boost::bind(&ubx_xcvr::write_spi_regs, this, RXLO2, _1));
305 + _txlo1 = max287x_iface::make<max2871>(std::bind(&ubx_xcvr::write_spi_regs, this, TXLO1, std::placeholders::_1));
306 + _txlo2 = max287x_iface::make<max2871>(std::bind(&ubx_xcvr::write_spi_regs, this, TXLO2, std::placeholders::_1));
307 + _rxlo1 = max287x_iface::make<max2871>(std::bind(&ubx_xcvr::write_spi_regs, this, RXLO1, std::placeholders::_1));
308 + _rxlo2 = max287x_iface::make<max2871>(std::bind(&ubx_xcvr::write_spi_regs, this, RXLO2, std::placeholders::_1));
309 std::vector<max287x_iface::sptr> los{_txlo1, _txlo2, _rxlo1, _rxlo2};
310 for(max287x_iface::sptr lo: los)
312 @@ -439,12 +439,12 @@
313 get_rx_subtree()->create<std::vector<std::string> >("power_mode/options")
314 .set(ubx_power_modes);
315 get_rx_subtree()->create<std::string>("power_mode/value")
316 - .add_coerced_subscriber(boost::bind(&ubx_xcvr::set_power_mode, this, _1))
317 + .add_coerced_subscriber(std::bind(&ubx_xcvr::set_power_mode, this, std::placeholders::_1))
319 get_rx_subtree()->create<std::vector<std::string> >("xcvr_mode/options")
320 .set(ubx_xcvr_modes);
321 get_rx_subtree()->create<std::string>("xcvr_mode/value")
322 - .add_coerced_subscriber(boost::bind(&ubx_xcvr::set_xcvr_mode, this, _1))
323 + .add_coerced_subscriber(std::bind(&ubx_xcvr::set_xcvr_mode, this, std::placeholders::_1))
325 get_rx_subtree()->create<std::vector<std::string> >("temp_comp_mode/options")
326 .set(ubx_temp_comp_modes);
327 @@ -456,13 +456,13 @@
328 get_tx_subtree()->create<std::vector<std::string> >("power_mode/options")
329 .set(ubx_power_modes);
330 get_tx_subtree()->create<std::string>("power_mode/value")
331 - .add_coerced_subscriber(boost::bind(&uhd::property<std::string>::set, &get_rx_subtree()->access<std::string>("power_mode/value"), _1))
332 - .set_publisher(boost::bind(&uhd::property<std::string>::get, &get_rx_subtree()->access<std::string>("power_mode/value")));
333 + .add_coerced_subscriber(std::bind(&uhd::property<std::string>::set, &get_rx_subtree()->access<std::string>("power_mode/value"), std::placeholders::_1))
334 + .set_publisher(std::bind(&uhd::property<std::string>::get, &get_rx_subtree()->access<std::string>("power_mode/value")));
335 get_tx_subtree()->create<std::vector<std::string> >("xcvr_mode/options")
336 .set(ubx_xcvr_modes);
337 get_tx_subtree()->create<std::string>("xcvr_mode/value")
338 - .add_coerced_subscriber(boost::bind(&uhd::property<std::string>::set, &get_rx_subtree()->access<std::string>("xcvr_mode/value"), _1))
339 - .set_publisher(boost::bind(&uhd::property<std::string>::get, &get_rx_subtree()->access<std::string>("xcvr_mode/value")));
340 + .add_coerced_subscriber(std::bind(&uhd::property<std::string>::set, &get_rx_subtree()->access<std::string>("xcvr_mode/value"), std::placeholders::_1))
341 + .set_publisher(std::bind(&uhd::property<std::string>::get, &get_rx_subtree()->access<std::string>("xcvr_mode/value")));
342 get_tx_subtree()->create<std::vector<std::string> >("temp_comp_mode/options")
343 .set(ubx_temp_comp_modes);
345 @@ -486,20 +486,20 @@
346 get_tx_subtree()->create<device_addr_t>("tune_args")
347 .set(device_addr_t());
348 get_tx_subtree()->create<sensor_value_t>("sensors/lo_locked")
349 - .set_publisher(boost::bind(&ubx_xcvr::get_locked, this, "TXLO"));
350 + .set_publisher(std::bind(&ubx_xcvr::get_locked, this, "TXLO"));
351 get_tx_subtree()->create<double>("gains/PGA0/value")
352 - .set_coercer(boost::bind(&ubx_xcvr::set_tx_gain, this, _1)).set(0);
353 + .set_coercer(std::bind(&ubx_xcvr::set_tx_gain, this, std::placeholders::_1)).set(0);
354 get_tx_subtree()->create<meta_range_t>("gains/PGA0/range")
355 .set(ubx_tx_gain_range);
356 get_tx_subtree()->create<double>("freq/value")
357 - .set_coercer(boost::bind(&ubx_xcvr::set_tx_freq, this, _1))
358 + .set_coercer(std::bind(&ubx_xcvr::set_tx_freq, this, std::placeholders::_1))
359 .set(ubx_freq_range.start());
360 get_tx_subtree()->create<meta_range_t>("freq/range")
361 .set(ubx_freq_range);
362 get_tx_subtree()->create<std::vector<std::string> >("antenna/options")
363 .set(ubx_tx_antennas);
364 get_tx_subtree()->create<std::string>("antenna/value")
365 - .set_coercer(boost::bind(&ubx_xcvr::set_tx_ant, this, _1))
366 + .set_coercer(std::bind(&ubx_xcvr::set_tx_ant, this, std::placeholders::_1))
367 .set(ubx_tx_antennas.at(0));
368 get_tx_subtree()->create<std::string>("connection")
371 get_tx_subtree()->create<meta_range_t>("bandwidth/range")
372 .set(freq_range_t(bw, bw));
373 get_tx_subtree()->create<int64_t>("sync_delay")
374 - .add_coerced_subscriber(boost::bind(&ubx_xcvr::set_sync_delay, this, true, _1))
375 + .add_coerced_subscriber(std::bind(&ubx_xcvr::set_sync_delay, this, true, std::placeholders::_1))
378 ////////////////////////////////////////////////////////////////////
379 @@ -522,21 +522,21 @@
380 get_rx_subtree()->create<device_addr_t>("tune_args")
381 .set(device_addr_t());
382 get_rx_subtree()->create<sensor_value_t>("sensors/lo_locked")
383 - .set_publisher(boost::bind(&ubx_xcvr::get_locked, this, "RXLO"));
384 + .set_publisher(std::bind(&ubx_xcvr::get_locked, this, "RXLO"));
385 get_rx_subtree()->create<double>("gains/PGA0/value")
386 - .set_coercer(boost::bind(&ubx_xcvr::set_rx_gain, this, _1))
387 + .set_coercer(std::bind(&ubx_xcvr::set_rx_gain, this, std::placeholders::_1))
389 get_rx_subtree()->create<meta_range_t>("gains/PGA0/range")
390 .set(ubx_rx_gain_range);
391 get_rx_subtree()->create<double>("freq/value")
392 - .set_coercer(boost::bind(&ubx_xcvr::set_rx_freq, this, _1))
393 + .set_coercer(std::bind(&ubx_xcvr::set_rx_freq, this, std::placeholders::_1))
394 .set(ubx_freq_range.start());
395 get_rx_subtree()->create<meta_range_t>("freq/range")
396 .set(ubx_freq_range);
397 get_rx_subtree()->create<std::vector<std::string> >("antenna/options")
398 .set(ubx_rx_antennas);
399 get_rx_subtree()->create<std::string>("antenna/value")
400 - .set_coercer(boost::bind(&ubx_xcvr::set_rx_ant, this, _1)).set("RX2");
401 + .set_coercer(std::bind(&ubx_xcvr::set_rx_ant, this, std::placeholders::_1)).set("RX2");
402 get_rx_subtree()->create<std::string>("connection")
404 get_rx_subtree()->create<bool>("enabled")
406 get_rx_subtree()->create<meta_range_t>("bandwidth/range")
407 .set(freq_range_t(bw, bw));
408 get_rx_subtree()->create<int64_t>("sync_delay")
409 - .add_coerced_subscriber(boost::bind(&ubx_xcvr::set_sync_delay, this, false, _1))
410 + .add_coerced_subscriber(std::bind(&ubx_xcvr::set_sync_delay, this, false, std::placeholders::_1))
414 --- uhd-3.15.0.0/host/lib/usrp/dboard/db_dbsrx.cpp.orig 2020-01-01 05:21:49.000000000 +0100
415 +++ uhd-3.15.0.0/host/lib/usrp/dboard/db_dbsrx.cpp 2020-07-10 16:14:10.521569631 +0200
416 @@ -195,16 +195,16 @@
417 this->get_rx_subtree()->create<std::string>("name")
419 this->get_rx_subtree()->create<sensor_value_t>("sensors/lo_locked")
420 - .set_publisher(boost::bind(&dbsrx::get_locked, this));
421 + .set_publisher(std::bind(&dbsrx::get_locked, this));
422 for(const std::string &name: dbsrx_gain_ranges.keys()){
423 this->get_rx_subtree()->create<double>("gains/"+name+"/value")
424 - .set_coercer(boost::bind(&dbsrx::set_gain, this, _1, name))
425 + .set_coercer(std::bind(&dbsrx::set_gain, this, std::placeholders::_1, name))
426 .set(dbsrx_gain_ranges[name].start());
427 this->get_rx_subtree()->create<meta_range_t>("gains/"+name+"/range")
428 .set(dbsrx_gain_ranges[name]);
430 this->get_rx_subtree()->create<double>("freq/value")
431 - .set_coercer(boost::bind(&dbsrx::set_lo_freq, this, _1));
432 + .set_coercer(std::bind(&dbsrx::set_lo_freq, this, std::placeholders::_1));
433 this->get_rx_subtree()->create<meta_range_t>("freq/range")
434 .set(dbsrx_freq_range);
435 this->get_rx_subtree()->create<std::string>("antenna/value")
437 this->get_rx_subtree()->create<bool>("use_lo_offset")
439 this->get_rx_subtree()->create<double>("bandwidth/value")
440 - .set_coercer(boost::bind(&dbsrx::set_bandwidth, this, _1));
441 + .set_coercer(std::bind(&dbsrx::set_bandwidth, this, std::placeholders::_1));
442 this->get_rx_subtree()->create<meta_range_t>("bandwidth/range")
443 .set(dbsrx_bandwidth_range);
445 --- uhd-3.15.0.0/host/lib/usrp/dboard/db_tvrx.cpp.orig 2020-01-01 05:21:49.000000000 +0100
446 +++ uhd-3.15.0.0/host/lib/usrp/dboard/db_tvrx.cpp 2020-07-10 16:20:42.599445562 +0200
447 @@ -180,12 +180,12 @@
448 this->get_rx_subtree()->create<int>("sensors"); //phony property so this dir exists
449 for(const std::string &name: get_tvrx_gain_ranges().keys()){
450 this->get_rx_subtree()->create<double>("gains/"+name+"/value")
451 - .set_coercer(boost::bind(&tvrx::set_gain, this, _1, name));
452 + .set_coercer(std::bind(&tvrx::set_gain, this, std::placeholders::_1, name));
453 this->get_rx_subtree()->create<meta_range_t>("gains/"+name+"/range")
454 .set(get_tvrx_gain_ranges()[name]);
456 this->get_rx_subtree()->create<double>("freq/value")
457 - .set_coercer(boost::bind(&tvrx::set_freq, this, _1));
458 + .set_coercer(std::bind(&tvrx::set_freq, this, std::placeholders::_1));
459 this->get_rx_subtree()->create<meta_range_t>("freq/range")
460 .set(tvrx_freq_range);
461 this->get_rx_subtree()->create<std::string>("antenna/value")
462 --- uhd-3.15.0.0/host/lib/usrp/dboard/db_dbsrx2.cpp.orig 2020-01-01 05:21:49.000000000 +0100
463 +++ uhd-3.15.0.0/host/lib/usrp/dboard/db_dbsrx2.cpp 2020-07-10 16:21:28.555863262 +0200
464 @@ -176,16 +176,16 @@
465 this->get_rx_subtree()->create<std::string>("name")
467 this->get_rx_subtree()->create<sensor_value_t>("sensors/lo_locked")
468 - .set_publisher(boost::bind(&dbsrx2::get_locked, this));
469 + .set_publisher(std::bind(&dbsrx2::get_locked, this));
470 for(const std::string &name: dbsrx2_gain_ranges.keys()){
471 this->get_rx_subtree()->create<double>("gains/"+name+"/value")
472 - .set_coercer(boost::bind(&dbsrx2::set_gain, this, _1, name))
473 + .set_coercer(std::bind(&dbsrx2::set_gain, this, std::placeholders::_1, name))
474 .set(dbsrx2_gain_ranges[name].start());
475 this->get_rx_subtree()->create<meta_range_t>("gains/"+name+"/range")
476 .set(dbsrx2_gain_ranges[name]);
478 this->get_rx_subtree()->create<double>("freq/value")
479 - .set_coercer(boost::bind(&dbsrx2::set_lo_freq, this, _1))
480 + .set_coercer(std::bind(&dbsrx2::set_lo_freq, this, std::placeholders::_1))
481 .set(dbsrx2_freq_range.start());
482 this->get_rx_subtree()->create<meta_range_t>("freq/range")
483 .set(dbsrx2_freq_range);
485 double codec_rate = this->get_iface()->get_codec_rate(dboard_iface::UNIT_RX);
487 this->get_rx_subtree()->create<double>("bandwidth/value")
488 - .set_coercer(boost::bind(&dbsrx2::set_bandwidth, this, _1))
489 + .set_coercer(std::bind(&dbsrx2::set_bandwidth, this, std::placeholders::_1))
490 .set(2.0*(0.8*codec_rate/2.0)); //bandwidth in lowpass, convert to complex bandpass
491 //default to anti-alias at different codec_rate
492 this->get_rx_subtree()->create<meta_range_t>("bandwidth/range")
493 --- uhd-3.15.0.0/host/lib/usrp/dboard/db_tvrx2.cpp.orig 2020-01-01 05:21:49.000000000 +0100
494 +++ uhd-3.15.0.0/host/lib/usrp/dboard/db_tvrx2.cpp 2020-07-10 16:22:25.432221803 +0200
495 @@ -951,19 +951,19 @@
496 this->get_rx_subtree()->create<std::string>("name")
498 this->get_rx_subtree()->create<sensor_value_t>("sensors/lo_locked")
499 - .set_publisher(boost::bind(&tvrx2::get_locked, this));
500 + .set_publisher(std::bind(&tvrx2::get_locked, this));
501 this->get_rx_subtree()->create<sensor_value_t>("sensors/rssi")
502 - .set_publisher(boost::bind(&tvrx2::get_rssi, this));
503 + .set_publisher(std::bind(&tvrx2::get_rssi, this));
504 this->get_rx_subtree()->create<sensor_value_t>("sensors/temperature")
505 - .set_publisher(boost::bind(&tvrx2::get_temp, this));
506 + .set_publisher(std::bind(&tvrx2::get_temp, this));
507 for(const std::string &name: tvrx2_gain_ranges.keys()){
508 this->get_rx_subtree()->create<double>("gains/"+name+"/value")
509 - .set_coercer(boost::bind(&tvrx2::set_gain, this, _1, name));
510 + .set_coercer(std::bind(&tvrx2::set_gain, this, std::placeholders::_1, name));
511 this->get_rx_subtree()->create<meta_range_t>("gains/"+name+"/range")
512 .set(tvrx2_gain_ranges[name]);
514 this->get_rx_subtree()->create<double>("freq/value")
515 - .set_coercer(boost::bind(&tvrx2::set_lo_freq, this, _1));
516 + .set_coercer(std::bind(&tvrx2::set_lo_freq, this, std::placeholders::_1));
517 this->get_rx_subtree()->create<meta_range_t>("freq/range")
518 .set(tvrx2_freq_range);
519 this->get_rx_subtree()->create<std::string>("antenna/value")
520 @@ -973,12 +973,12 @@
521 this->get_rx_subtree()->create<std::string>("connection")
522 .set(tvrx2_sd_name_to_conn[get_subdev_name()]);
523 this->get_rx_subtree()->create<bool>("enabled")
524 - .set_coercer(boost::bind(&tvrx2::set_enabled, this, _1))
525 + .set_coercer(std::bind(&tvrx2::set_enabled, this, std::placeholders::_1))
527 this->get_rx_subtree()->create<bool>("use_lo_offset")
529 this->get_rx_subtree()->create<double>("bandwidth/value")
530 - .set_coercer(boost::bind(&tvrx2::set_bandwidth, this, _1))
531 + .set_coercer(std::bind(&tvrx2::set_bandwidth, this, std::placeholders::_1))
533 this->get_rx_subtree()->create<meta_range_t>("bandwidth/range")
534 .set(tvrx2_bandwidth_range);
535 --- uhd-3.15.0.0/host/lib/usrp/b100/b100_impl.cpp.orig 2020-01-01 05:21:49.000000000 +0100
536 +++ uhd-3.15.0.0/host/lib/usrp/b100/b100_impl.cpp 2020-07-10 16:59:19.426894232 +0200
538 _tree->create<std::string>(mb_path / "name").set("B100");
539 _tree->create<std::string>(mb_path / "codename").set("B-Hundo");
540 _tree->create<std::string>(mb_path / "load_eeprom")
541 - .add_coerced_subscriber(boost::bind(&fx2_ctrl::usrp_load_eeprom, _fx2_ctrl, _1));
542 + .add_coerced_subscriber(std::bind(&fx2_ctrl::usrp_load_eeprom, _fx2_ctrl, std::placeholders::_1));
544 ////////////////////////////////////////////////////////////////////
545 // setup the mboard eeprom
546 @@ -282,20 +282,20 @@
547 const mboard_eeprom_t mb_eeprom = this->get_mb_eeprom(_fx2_ctrl);
548 _tree->create<mboard_eeprom_t>(mb_path / "eeprom")
550 - .add_coerced_subscriber(boost::bind(&b100_impl::set_mb_eeprom, this, _1));
551 + .add_coerced_subscriber(std::bind(&b100_impl::set_mb_eeprom, this, std::placeholders::_1));
553 ////////////////////////////////////////////////////////////////////
554 // create clock control objects
555 ////////////////////////////////////////////////////////////////////
556 //^^^ clock created up top, just reg props here... ^^^
557 _tree->create<double>(mb_path / "tick_rate")
558 - .set_publisher(boost::bind(&b100_clock_ctrl::get_fpga_clock_rate, _clock_ctrl))
559 - .add_coerced_subscriber(boost::bind(&fifo_ctrl_excelsior::set_tick_rate, _fifo_ctrl, _1))
560 - .add_coerced_subscriber(boost::bind(&b100_impl::update_tick_rate, this, _1));
561 + .set_publisher(std::bind(&b100_clock_ctrl::get_fpga_clock_rate, _clock_ctrl))
562 + .add_coerced_subscriber(std::bind(&fifo_ctrl_excelsior::set_tick_rate, _fifo_ctrl, std::placeholders::_1))
563 + .add_coerced_subscriber(std::bind(&b100_impl::update_tick_rate, this, std::placeholders::_1));
565 //add_coerced_subscriber the command time while we are at it
566 _tree->create<time_spec_t>(mb_path / "time/cmd")
567 - .add_coerced_subscriber(boost::bind(&fifo_ctrl_excelsior::set_time, _fifo_ctrl, _1));
568 + .add_coerced_subscriber(std::bind(&fifo_ctrl_excelsior::set_time, _fifo_ctrl, std::placeholders::_1));
570 ////////////////////////////////////////////////////////////////////
571 // create codec control objects
572 @@ -306,20 +306,20 @@
573 _tree->create<std::string>(rx_codec_path / "name").set("ad9522");
574 _tree->create<meta_range_t>(rx_codec_path / "gains/pga/range").set(b100_codec_ctrl::rx_pga_gain_range);
575 _tree->create<double>(rx_codec_path / "gains/pga/value")
576 - .set_coercer(boost::bind(&b100_impl::update_rx_codec_gain, this, _1))
577 + .set_coercer(std::bind(&b100_impl::update_rx_codec_gain, this, std::placeholders::_1))
579 _tree->create<std::string>(tx_codec_path / "name").set("ad9522");
580 _tree->create<meta_range_t>(tx_codec_path / "gains/pga/range").set(b100_codec_ctrl::tx_pga_gain_range);
581 _tree->create<double>(tx_codec_path / "gains/pga/value")
582 - .add_coerced_subscriber(boost::bind(&b100_codec_ctrl::set_tx_pga_gain, _codec_ctrl, _1))
583 - .set_publisher(boost::bind(&b100_codec_ctrl::get_tx_pga_gain, _codec_ctrl))
584 + .add_coerced_subscriber(std::bind(&b100_codec_ctrl::set_tx_pga_gain, _codec_ctrl, std::placeholders::_1))
585 + .set_publisher(std::bind(&b100_codec_ctrl::get_tx_pga_gain, _codec_ctrl))
588 ////////////////////////////////////////////////////////////////////
589 // and do the misc mboard sensors
590 ////////////////////////////////////////////////////////////////////
591 _tree->create<sensor_value_t>(mb_path / "sensors/ref_locked")
592 - .set_publisher(boost::bind(&b100_impl::get_ref_locked, this));
593 + .set_publisher(std::bind(&b100_impl::get_ref_locked, this));
595 ////////////////////////////////////////////////////////////////////
596 // create frontend control objects
597 @@ -328,27 +328,27 @@
598 _tx_fe = tx_frontend_core_200::make(_fifo_ctrl, TOREG(SR_TX_FE));
600 _tree->create<subdev_spec_t>(mb_path / "rx_subdev_spec")
601 - .add_coerced_subscriber(boost::bind(&b100_impl::update_rx_subdev_spec, this, _1));
602 + .add_coerced_subscriber(std::bind(&b100_impl::update_rx_subdev_spec, this, std::placeholders::_1));
603 _tree->create<subdev_spec_t>(mb_path / "tx_subdev_spec")
604 - .add_coerced_subscriber(boost::bind(&b100_impl::update_tx_subdev_spec, this, _1));
605 + .add_coerced_subscriber(std::bind(&b100_impl::update_tx_subdev_spec, this, std::placeholders::_1));
607 const fs_path rx_fe_path = mb_path / "rx_frontends" / "A";
608 const fs_path tx_fe_path = mb_path / "tx_frontends" / "A";
610 _tree->create<std::complex<double> >(rx_fe_path / "dc_offset" / "value")
611 - .set_coercer(boost::bind(&rx_frontend_core_200::set_dc_offset, _rx_fe, _1))
612 + .set_coercer(std::bind(&rx_frontend_core_200::set_dc_offset, _rx_fe, std::placeholders::_1))
613 .set(std::complex<double>(0.0, 0.0));
614 _tree->create<bool>(rx_fe_path / "dc_offset" / "enable")
615 - .add_coerced_subscriber(boost::bind(&rx_frontend_core_200::set_dc_offset_auto, _rx_fe, _1))
616 + .add_coerced_subscriber(std::bind(&rx_frontend_core_200::set_dc_offset_auto, _rx_fe, std::placeholders::_1))
618 _tree->create<std::complex<double> >(rx_fe_path / "iq_balance" / "value")
619 - .add_coerced_subscriber(boost::bind(&rx_frontend_core_200::set_iq_balance, _rx_fe, _1))
620 + .add_coerced_subscriber(std::bind(&rx_frontend_core_200::set_iq_balance, _rx_fe, std::placeholders::_1))
621 .set(std::complex<double>(0.0, 0.0));
622 _tree->create<std::complex<double> >(tx_fe_path / "dc_offset" / "value")
623 - .set_coercer(boost::bind(&tx_frontend_core_200::set_dc_offset, _tx_fe, _1))
624 + .set_coercer(std::bind(&tx_frontend_core_200::set_dc_offset, _tx_fe, std::placeholders::_1))
625 .set(std::complex<double>(0.0, 0.0));
626 _tree->create<std::complex<double> >(tx_fe_path / "iq_balance" / "value")
627 - .add_coerced_subscriber(boost::bind(&tx_frontend_core_200::set_iq_balance, _tx_fe, _1))
628 + .add_coerced_subscriber(std::bind(&tx_frontend_core_200::set_iq_balance, _tx_fe, std::placeholders::_1))
629 .set(std::complex<double>(0.0, 0.0));
631 ////////////////////////////////////////////////////////////////////
632 @@ -367,20 +367,20 @@
634 _rx_dsps[dspno]->set_link_rate(B100_LINK_RATE_BPS);
635 _tree->access<double>(mb_path / "tick_rate")
636 - .add_coerced_subscriber(boost::bind(&rx_dsp_core_200::set_tick_rate, _rx_dsps[dspno], _1));
637 + .add_coerced_subscriber(std::bind(&rx_dsp_core_200::set_tick_rate, _rx_dsps[dspno], std::placeholders::_1));
638 fs_path rx_dsp_path = mb_path / str(boost::format("rx_dsps/%u") % dspno);
639 _tree->create<meta_range_t>(rx_dsp_path / "rate/range")
640 - .set_publisher(boost::bind(&rx_dsp_core_200::get_host_rates, _rx_dsps[dspno]));
641 + .set_publisher(std::bind(&rx_dsp_core_200::get_host_rates, _rx_dsps[dspno]));
642 _tree->create<double>(rx_dsp_path / "rate/value")
643 .set(1e6) //some default
644 - .set_coercer(boost::bind(&rx_dsp_core_200::set_host_rate, _rx_dsps[dspno], _1))
645 - .add_coerced_subscriber(boost::bind(&b100_impl::update_rx_samp_rate, this, dspno, _1));
646 + .set_coercer(std::bind(&rx_dsp_core_200::set_host_rate, _rx_dsps[dspno], std::placeholders::_1))
647 + .add_coerced_subscriber(std::bind(&b100_impl::update_rx_samp_rate, this, dspno, std::placeholders::_1));
648 _tree->create<double>(rx_dsp_path / "freq/value")
649 - .set_coercer(boost::bind(&rx_dsp_core_200::set_freq, _rx_dsps[dspno], _1));
650 + .set_coercer(std::bind(&rx_dsp_core_200::set_freq, _rx_dsps[dspno], std::placeholders::_1));
651 _tree->create<meta_range_t>(rx_dsp_path / "freq/range")
652 - .set_publisher(boost::bind(&rx_dsp_core_200::get_freq_range, _rx_dsps[dspno]));
653 + .set_publisher(std::bind(&rx_dsp_core_200::get_freq_range, _rx_dsps[dspno]));
654 _tree->create<stream_cmd_t>(rx_dsp_path / "stream_cmd")
655 - .add_coerced_subscriber(boost::bind(&rx_dsp_core_200::issue_stream_command, _rx_dsps[dspno], _1));
656 + .add_coerced_subscriber(std::bind(&rx_dsp_core_200::issue_stream_command, _rx_dsps[dspno], std::placeholders::_1));
659 ////////////////////////////////////////////////////////////////////
660 @@ -391,17 +391,17 @@
662 _tx_dsp->set_link_rate(B100_LINK_RATE_BPS);
663 _tree->access<double>(mb_path / "tick_rate")
664 - .add_coerced_subscriber(boost::bind(&tx_dsp_core_200::set_tick_rate, _tx_dsp, _1));
665 + .add_coerced_subscriber(std::bind(&tx_dsp_core_200::set_tick_rate, _tx_dsp, std::placeholders::_1));
666 _tree->create<meta_range_t>(mb_path / "tx_dsps/0/rate/range")
667 - .set_publisher(boost::bind(&tx_dsp_core_200::get_host_rates, _tx_dsp));
668 + .set_publisher(std::bind(&tx_dsp_core_200::get_host_rates, _tx_dsp));
669 _tree->create<double>(mb_path / "tx_dsps/0/rate/value")
670 .set(1e6) //some default
671 - .set_coercer(boost::bind(&tx_dsp_core_200::set_host_rate, _tx_dsp, _1))
672 - .add_coerced_subscriber(boost::bind(&b100_impl::update_tx_samp_rate, this, 0, _1));
673 + .set_coercer(std::bind(&tx_dsp_core_200::set_host_rate, _tx_dsp, std::placeholders::_1))
674 + .add_coerced_subscriber(std::bind(&b100_impl::update_tx_samp_rate, this, 0, std::placeholders::_1));
675 _tree->create<double>(mb_path / "tx_dsps/0/freq/value")
676 - .set_coercer(boost::bind(&tx_dsp_core_200::set_freq, _tx_dsp, _1));
677 + .set_coercer(std::bind(&tx_dsp_core_200::set_freq, _tx_dsp, std::placeholders::_1));
678 _tree->create<meta_range_t>(mb_path / "tx_dsps/0/freq/range")
679 - .set_publisher(boost::bind(&tx_dsp_core_200::get_freq_range, _tx_dsp));
680 + .set_publisher(std::bind(&tx_dsp_core_200::get_freq_range, _tx_dsp));
682 ////////////////////////////////////////////////////////////////////
683 // create time control objects
684 @@ -415,21 +415,21 @@
685 _fifo_ctrl, TOREG(SR_TIME64), time64_rb_bases
687 _tree->access<double>(mb_path / "tick_rate")
688 - .add_coerced_subscriber(boost::bind(&time64_core_200::set_tick_rate, _time64, _1));
689 + .add_coerced_subscriber(std::bind(&time64_core_200::set_tick_rate, _time64, std::placeholders::_1));
690 _tree->create<time_spec_t>(mb_path / "time/now")
691 - .set_publisher(boost::bind(&time64_core_200::get_time_now, _time64))
692 - .add_coerced_subscriber(boost::bind(&time64_core_200::set_time_now, _time64, _1));
693 + .set_publisher(std::bind(&time64_core_200::get_time_now, _time64))
694 + .add_coerced_subscriber(std::bind(&time64_core_200::set_time_now, _time64, std::placeholders::_1));
695 _tree->create<time_spec_t>(mb_path / "time/pps")
696 - .set_publisher(boost::bind(&time64_core_200::get_time_last_pps, _time64))
697 - .add_coerced_subscriber(boost::bind(&time64_core_200::set_time_next_pps, _time64, _1));
698 + .set_publisher(std::bind(&time64_core_200::get_time_last_pps, _time64))
699 + .add_coerced_subscriber(std::bind(&time64_core_200::set_time_next_pps, _time64, std::placeholders::_1));
700 //setup time source props
701 _tree->create<std::string>(mb_path / "time_source/value")
702 - .add_coerced_subscriber(boost::bind(&time64_core_200::set_time_source, _time64, _1));
703 + .add_coerced_subscriber(std::bind(&time64_core_200::set_time_source, _time64, std::placeholders::_1));
704 _tree->create<std::vector<std::string> >(mb_path / "time_source/options")
705 - .set_publisher(boost::bind(&time64_core_200::get_time_sources, _time64));
706 + .set_publisher(std::bind(&time64_core_200::get_time_sources, _time64));
707 //setup reference source props
708 _tree->create<std::string>(mb_path / "clock_source/value")
709 - .add_coerced_subscriber(boost::bind(&b100_impl::update_clock_source, this, _1));
710 + .add_coerced_subscriber(std::bind(&b100_impl::update_clock_source, this, std::placeholders::_1));
711 static const std::vector<std::string> clock_sources = {
712 "internal", "external", "auto"
715 ////////////////////////////////////////////////////////////////////
716 _user = user_settings_core_200::make(_fifo_ctrl, TOREG(SR_USER_REGS));
717 _tree->create<user_settings_core_200::user_reg_t>(mb_path / "user/regs")
718 - .add_coerced_subscriber(boost::bind(&user_settings_core_200::set_reg, _user, _1));
719 + .add_coerced_subscriber(std::bind(&user_settings_core_200::set_reg, _user, std::placeholders::_1));
721 ////////////////////////////////////////////////////////////////////
722 // create dboard control objects
723 @@ -458,13 +458,13 @@
724 //create the properties and register subscribers
725 _tree->create<dboard_eeprom_t>(mb_path / "dboards/A/rx_eeprom")
727 - .add_coerced_subscriber(boost::bind(&b100_impl::set_db_eeprom, this, "rx", _1));
728 + .add_coerced_subscriber(std::bind(&b100_impl::set_db_eeprom, this, "rx", std::placeholders::_1));
729 _tree->create<dboard_eeprom_t>(mb_path / "dboards/A/tx_eeprom")
731 - .add_coerced_subscriber(boost::bind(&b100_impl::set_db_eeprom, this, "tx", _1));
732 + .add_coerced_subscriber(std::bind(&b100_impl::set_db_eeprom, this, "tx", std::placeholders::_1));
733 _tree->create<dboard_eeprom_t>(mb_path / "dboards/A/gdb_eeprom")
735 - .add_coerced_subscriber(boost::bind(&b100_impl::set_db_eeprom, this, "gdb", _1));
736 + .add_coerced_subscriber(std::bind(&b100_impl::set_db_eeprom, this, "gdb", std::placeholders::_1));
738 //create a new dboard interface and manager
739 _dboard_manager = dboard_manager::make(
740 @@ -477,12 +477,12 @@
741 const fs_path db_tx_fe_path = mb_path / "dboards" / "A" / "tx_frontends";
742 for(const std::string &name: _tree->list(db_tx_fe_path)){
743 _tree->access<double>(db_tx_fe_path / name / "freq" / "value")
744 - .add_coerced_subscriber(boost::bind(&b100_impl::set_tx_fe_corrections, this, _1));
745 + .add_coerced_subscriber(std::bind(&b100_impl::set_tx_fe_corrections, this, std::placeholders::_1));
747 const fs_path db_rx_fe_path = mb_path / "dboards" / "A" / "rx_frontends";
748 for(const std::string &name: _tree->list(db_rx_fe_path)){
749 _tree->access<double>(db_rx_fe_path / name / "freq" / "value")
750 - .add_coerced_subscriber(boost::bind(&b100_impl::set_rx_fe_corrections, this, _1));
751 + .add_coerced_subscriber(std::bind(&b100_impl::set_rx_fe_corrections, this, std::placeholders::_1));
754 //initialize io handling
756 this->update_rates();
758 _tree->access<double>(mb_path / "tick_rate") //now add_coerced_subscriber the clock rate setter
759 - .add_coerced_subscriber(boost::bind(&b100_clock_ctrl::set_fpga_clock_rate, _clock_ctrl, _1));
760 + .add_coerced_subscriber(std::bind(&b100_clock_ctrl::set_fpga_clock_rate, _clock_ctrl, std::placeholders::_1));
762 //reset cordic rates and their properties to zero
763 for(const std::string &name: _tree->list(mb_path / "rx_dsps")){
764 --- uhd-3.15.0.0/host/lib/usrp/x300/x300_radio_ctrl_impl.cpp.orig 2020-01-01 05:21:49.000000000 +0100
765 +++ uhd-3.15.0.0/host/lib/usrp/x300/x300_radio_ctrl_impl.cpp 2020-07-10 17:00:26.443197840 +0200
767 _tree->create<meta_range_t>("rx_codecs" / _radio_slot / "gains" / "digital" / "range")
768 .set(meta_range_t(0, 6.0, 0.5));
769 _tree->create<double>("rx_codecs" / _radio_slot / "gains" / "digital" / "value")
770 - .add_coerced_subscriber(boost::bind(&x300_adc_ctrl::set_gain, _adc, _1))
771 + .add_coerced_subscriber(std::bind(&x300_adc_ctrl::set_gain, _adc, std::placeholders::_1))
774 ////////////////////////////////////////////////////////////////
776 if (_tree->exists(fs_path("time") / "cmd")) {
777 _tree->access<time_spec_t>(fs_path("time") / "cmd")
778 .add_coerced_subscriber(
779 - boost::bind(&x300_radio_ctrl_impl::set_fe_cmd_time, this, _1, i));
780 + std::bind(&x300_radio_ctrl_impl::set_fe_cmd_time, this, std::placeholders::_1, i));
784 @@ -816,11 +816,11 @@
786 _tree->create<dboard_eeprom_t>(db_path / EEPROM_PATHS[i])
787 .set(_db_eeproms[addr])
788 - .add_coerced_subscriber(boost::bind(&x300_radio_ctrl_impl::_set_db_eeprom,
789 + .add_coerced_subscriber(std::bind(&x300_radio_ctrl_impl::_set_db_eeprom,
794 + std::placeholders::_1));
797 // create a new dboard interface
799 ->access<std::string>(db_path / "rx_frontends"
800 / _rx_fe_map[i].db_fe_name / "antenna"
802 - .add_desired_subscriber(boost::bind(
803 - &x300_radio_ctrl_impl::_update_atr_leds, this, _1, i));
804 + .add_desired_subscriber(std::bind(
805 + &x300_radio_ctrl_impl::_update_atr_leds, this, std::placeholders::_1, i));
806 _update_atr_leds(_tree
807 ->access<std::string>(db_path / "rx_frontends"
808 / _rx_fe_map[i].db_fe_name
809 @@ -917,11 +917,11 @@
811 db_tx_fe_path / _tx_fe_map[i].db_fe_name / "freq" / "value")
812 .add_coerced_subscriber(
813 - boost::bind(&x300_radio_ctrl_impl::set_tx_fe_corrections,
814 + std::bind(&x300_radio_ctrl_impl::set_tx_fe_corrections,
817 _root_path / "tx_fe_corrections" / _tx_fe_map[i].db_fe_name,
819 + std::placeholders::_1));
823 @@ -934,11 +934,11 @@
825 db_rx_fe_path / _tx_fe_map[i].db_fe_name / "freq" / "value")
826 .add_coerced_subscriber(
827 - boost::bind(&x300_radio_ctrl_impl::set_rx_fe_corrections,
828 + std::bind(&x300_radio_ctrl_impl::set_rx_fe_corrections,
831 _root_path / "rx_fe_corrections" / _tx_fe_map[i].db_fe_name,
833 + std::placeholders::_1));
837 --- uhd-3.15.0.0/host/lib/usrp_clock/octoclock/octoclock_impl.cpp.orig 2020-01-01 05:21:49.000000000 +0100
838 +++ uhd-3.15.0.0/host/lib/usrp_clock/octoclock/octoclock_impl.cpp 2020-07-10 17:05:19.151612102 +0200
839 @@ -232,21 +232,21 @@
840 _oc_dict[oc].eeprom = octoclock_eeprom_t(_oc_dict[oc].ctrl_xport, _proto_ver);
841 _tree->create<octoclock_eeprom_t>(oc_path / "eeprom")
842 .set(_oc_dict[oc].eeprom)
843 - .add_coerced_subscriber(boost::bind(&octoclock_impl::_set_eeprom, this, oc, _1));
844 + .add_coerced_subscriber(std::bind(&octoclock_impl::_set_eeprom, this, oc, std::placeholders::_1));
846 ////////////////////////////////////////////////////////////////////
847 // Initialize non-GPSDO sensors
848 ////////////////////////////////////////////////////////////////////
849 _tree->create<uint32_t>(oc_path / "time")
850 - .set_publisher(boost::bind(&octoclock_impl::_get_time, this, oc));
851 + .set_publisher(std::bind(&octoclock_impl::_get_time, this, oc));
852 _tree->create<sensor_value_t>(oc_path / "sensors/ext_ref_detected")
853 - .set_publisher(boost::bind(&octoclock_impl::_ext_ref_detected, this, oc));
854 + .set_publisher(std::bind(&octoclock_impl::_ext_ref_detected, this, oc));
855 _tree->create<sensor_value_t>(oc_path / "sensors/gps_detected")
856 - .set_publisher(boost::bind(&octoclock_impl::_gps_detected, this, oc));
857 + .set_publisher(std::bind(&octoclock_impl::_gps_detected, this, oc));
858 _tree->create<sensor_value_t>(oc_path / "sensors/using_ref")
859 - .set_publisher(boost::bind(&octoclock_impl::_which_ref, this, oc));
860 + .set_publisher(std::bind(&octoclock_impl::_which_ref, this, oc));
861 _tree->create<sensor_value_t>(oc_path / "sensors/switch_pos")
862 - .set_publisher(boost::bind(&octoclock_impl::_switch_pos, this, oc));
863 + .set_publisher(std::bind(&octoclock_impl::_switch_pos, this, oc));
865 ////////////////////////////////////////////////////////////////////
866 // Check reference and GPSDO
868 if(_oc_dict[oc].gps and _oc_dict[oc].gps->gps_detected()){
869 for(const std::string &name: _oc_dict[oc].gps->get_sensors()){
870 _tree->create<sensor_value_t>(oc_path / "sensors" / name)
871 - .set_publisher(boost::bind(&gps_ctrl::get_sensor, _oc_dict[oc].gps, name));
872 + .set_publisher(std::bind(&gps_ctrl::get_sensor, _oc_dict[oc].gps, name));