From 4161659ee0aecba352f459514b6f15fbca4f1f90 Mon Sep 17 00:00:00 2001
From: Huang Rui <vowstar@gmail.com>
Date: Mon, 26 Oct 2020 10:21:43 +0800
Subject: gr-uhd/lib/usrp_block_impl.cc: fix compile error using boost>=1.73
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

When using boost>=1.73 and compile with uhd, it always have errors.
Fix the compile error when using uhd and gcc10: error: ‘_1’ was not declared
Bug: https://bugs.gentoo.org/751259

usrp_source_impl.cc: use lambdas instead of boost::bind
usrp_block_impl.cc:use lambdas instead of boost::bind
usrp_block_impl.h: Switch from boost::function to std::function

https://github.com/gnuradio/gnuradio/pull/3441
https://github.com/gnuradio/gnuradio/pull/3887

usrp_source_impl: fix parameter bug of original code

The usrp_block_impl::register_msg_cmd_handler uses cmd_handler_t as
handler type, but it have 3 parameters.
Fix the parameter mismatch bug and change the signature as cmd_handler_t

Signed-off-by: Huang Rui <vowstar@gmail.com>
---
 gr-uhd/lib/usrp_block_impl.cc | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

(limited to 'gr-uhd/lib/usrp_block_impl.cc')

diff --git a/gr-uhd/lib/usrp_block_impl.cc b/gr-uhd/lib/usrp_block_impl.cc
index b44b7e2dcc..b060ed0334 100644
--- a/gr-uhd/lib/usrp_block_impl.cc
+++ b/gr-uhd/lib/usrp_block_impl.cc
@@ -133,9 +133,11 @@ usrp_block_impl::usrp_block_impl(const ::uhd::device_addr_t& device_addr,
                     [this](pmt::pmt_t msg) { this->msg_handler_command(msg); });
 
 // cuz we lazy:
-#define REGISTER_CMD_HANDLER(key, _handler) \
-    register_msg_cmd_handler(key,           \
-                             boost::bind(&usrp_block_impl::_handler, this, _1, _2, _3))
+#define REGISTER_CMD_HANDLER(key, _handler)                                   \
+    register_msg_cmd_handler(                                                 \
+        key, [this](const pmt::pmt_t& var, int chan, const pmt::pmt_t& msg) { \
+            this->_handler(var, chan, msg);                                   \
+        })
     // Register default command handlers:
     REGISTER_CMD_HANDLER(cmd_freq_key(), _cmd_handler_freq);
     REGISTER_CMD_HANDLER(cmd_gain_key(), _cmd_handler_gain);
@@ -251,11 +253,13 @@ bool usrp_block_impl::_check_mboard_sensors_locked()
         } else if (_dev->get_clock_source(mboard_index) == "mimo") {
             sensor_name = "mimo_locked";
         }
-        if (not _wait_for_locked_sensor(
-                get_mboard_sensor_names(mboard_index),
-                sensor_name,
-                boost::bind(
-                    &usrp_block_impl::get_mboard_sensor, this, _1, mboard_index))) {
+        if (not _wait_for_locked_sensor(get_mboard_sensor_names(mboard_index),
+                                        sensor_name,
+                                        [this, mboard_index](const std::string& name) {
+                                            return static_cast<::uhd::sensor_value_t>(
+                                                this->get_mboard_sensor(name,
+                                                                        mboard_index));
+                                        })) {
             GR_LOG_WARN(
                 d_logger,
                 boost::format(
-- 
cgit v1.2.3