From 591c2c16355eb065ff3f51f23d9d6026be188132 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marcus=20M=C3=BCller?= <mmueller@gnuradio.org>
Date: Sat, 22 Aug 2020 14:06:22 +0200
Subject: [PATCH] msg_handler: Use lambdas in gr-uhd

---
 gr-uhd/lib/amsg_source_impl.cc |  3 +--
 gr-uhd/lib/usrp_block_impl.cc  | 10 ++++++----
 gr-uhd/lib/usrp_block_impl.h   |  1 -
 gr-uhd/lib/usrp_source_impl.cc |  6 ++++--
 4 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/gr-uhd/lib/amsg_source_impl.cc b/gr-uhd/lib/amsg_source_impl.cc
index 46d47a5826..e1de62e028 100644
--- a/gr-uhd/lib/amsg_source_impl.cc
+++ b/gr-uhd/lib/amsg_source_impl.cc
@@ -22,7 +22,6 @@
 
 #include "amsg_source_impl.h"
 #include "gr_uhd_common.h"
-#include <boost/bind.hpp>
 
 namespace gr {
 namespace uhd {
@@ -44,7 +43,7 @@ amsg_source_impl::amsg_source_impl(const ::uhd::device_addr_t& device_addr,
     : _msgq(msgq), _running(true)
 {
     _dev = ::uhd::usrp::multi_usrp::make(device_addr);
-    _amsg_thread = gr::thread::thread(boost::bind(&amsg_source_impl::recv_loop, this));
+    _amsg_thread = gr::thread::thread([this]() { this->recv_loop(); });
 }
 
 amsg_source_impl::~amsg_source_impl()
diff --git a/gr-uhd/lib/usrp_block_impl.cc b/gr-uhd/lib/usrp_block_impl.cc
index e5e1dd9161..8344809837 100644
--- a/gr-uhd/lib/usrp_block_impl.cc
+++ b/gr-uhd/lib/usrp_block_impl.cc
@@ -21,7 +21,7 @@
  */
 
 #include "usrp_block_impl.h"
-#include <boost/make_shared.hpp>
+#include <functional>
 
 using namespace gr::uhd;
 
@@ -139,10 +139,11 @@ usrp_block_impl::usrp_block_impl(const ::uhd::device_addr_t& device_addr,
     set_msg_handler(pmt::mp("command"),
                     [this](pmt::pmt_t msg) { this->msg_handler_command(msg); });
 
-// cuz we lazy:
+    // because we're highly efficient and adverse to work
+    namespace ph = std::placeholders;
 #define REGISTER_CMD_HANDLER(key, _handler) \
-    register_msg_cmd_handler(key,           \
-                             boost::bind(&usrp_block_impl::_handler, this, _1, _2, _3))
+    register_msg_cmd_handler(               \
+        key, std::bind(&usrp_block_impl::_handler, this, ph::_1, ph::_2, ph::_3))
     // Register default command handlers:
     REGISTER_CMD_HANDLER(cmd_freq_key(), _cmd_handler_freq);
     REGISTER_CMD_HANDLER(cmd_gain_key(), _cmd_handler_gain);
@@ -153,6 +154,7 @@ usrp_block_impl::usrp_block_impl(const ::uhd::device_addr_t& device_addr,
     REGISTER_CMD_HANDLER(cmd_rate_key(), _cmd_handler_rate);
     REGISTER_CMD_HANDLER(cmd_bandwidth_key(), _cmd_handler_bw);
     REGISTER_CMD_HANDLER(cmd_antenna_key(), _cmd_handler_antenna);
+#undef REGISTER_CMD_HANDLER
 }
 
 usrp_block_impl::~usrp_block_impl()
diff --git a/gr-uhd/lib/usrp_block_impl.h b/gr-uhd/lib/usrp_block_impl.h
index 1dbc3813bd..479b7dcd65 100644
--- a/gr-uhd/lib/usrp_block_impl.h
+++ b/gr-uhd/lib/usrp_block_impl.h
@@ -26,7 +26,6 @@
 #include <gnuradio/uhd/usrp_block.h>
 #include <pmt/pmt.h>
 #include <uhd/usrp/multi_usrp.hpp>
-#include <boost/bind.hpp>
 #include <boost/dynamic_bitset.hpp>
 
 
diff --git a/gr-uhd/lib/usrp_source_impl.cc b/gr-uhd/lib/usrp_source_impl.cc
index a2ff0821bd..1e8ef020ab 100644
--- a/gr-uhd/lib/usrp_source_impl.cc
+++ b/gr-uhd/lib/usrp_source_impl.cc
@@ -57,8 +57,10 @@ usrp_source_impl::usrp_source_impl(const ::uhd::device_addr_t& device_addr,
 
     _samp_rate = this->get_samp_rate();
     _samps_per_packet = 1;
-    register_msg_cmd_handler(cmd_tag_key(),
-                             boost::bind(&usrp_source_impl::_cmd_handler_tag, this, _1));
+    register_msg_cmd_handler(
+        cmd_tag_key(), [this](const pmt::pmt_t& val, int chan, const pmt::pmt_t& msg) {
+            this->_cmd_handler_tag(val);
+        });
 }
 
 usrp_source_impl::~usrp_source_impl() {}
