summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnuradio-runtime/include/gnuradio/block.h8
-rw-r--r--gnuradio-runtime/lib/block.cc7
-rw-r--r--gr-blocks/include/gnuradio/blocks/pdu.h2
-rw-r--r--gr-blocks/lib/pdu.cc6
-rw-r--r--gr-blocks/lib/pdu_filter_impl.cc8
-rw-r--r--gr-blocks/lib/pdu_remove_impl.cc8
-rw-r--r--gr-blocks/lib/pdu_set_impl.cc8
-rw-r--r--gr-blocks/lib/pdu_to_tagged_stream_impl.cc4
-rw-r--r--gr-blocks/lib/random_pdu_impl.cc4
-rw-r--r--gr-blocks/lib/socket_pdu_impl.cc16
-rw-r--r--gr-blocks/lib/tagged_stream_to_pdu_impl.cc4
-rw-r--r--gr-blocks/lib/tcp_connection.cc2
-rw-r--r--gr-blocks/lib/tuntap_pdu_impl.cc8
-rw-r--r--gr-digital/lib/header_payload_demux_impl.cc10
-rw-r--r--gr-digital/lib/header_payload_demux_impl.h2
-rw-r--r--gr-uhd/include/gnuradio/uhd/usrp_block.h19
-rw-r--r--gr-uhd/lib/usrp_block_impl.cc124
-rw-r--r--gr-uhd/lib/usrp_block_impl.h17
-rw-r--r--gr-uhd/lib/usrp_sink_impl.cc6
-rw-r--r--gr-uhd/lib/usrp_source_impl.cc5
20 files changed, 181 insertions, 87 deletions
diff --git a/gnuradio-runtime/include/gnuradio/block.h b/gnuradio-runtime/include/gnuradio/block.h
index eac8845448..c3de303c3b 100644
--- a/gnuradio-runtime/include/gnuradio/block.h
+++ b/gnuradio-runtime/include/gnuradio/block.h
@@ -684,8 +684,6 @@ namespace gr {
bool d_update_rate; // should sched update rel rate?
bool d_finished; // true if msg ports think we are finished
- static const pmt::pmt_t d_pmt_done;
-
protected:
block(void) {} // allows pure virtual interface sub-classes
block(const std::string &name,
@@ -863,9 +861,13 @@ namespace gr {
// These are really only for internal use, but leaving them public avoids
// having to work up an ever-varying list of friend GR_RUNTIME_APIs
+ /*! PMT Symbol for "hey, we're done here"
+ */
+ const pmt::pmt_t d_pmt_done;
+
/*! PMT Symbol of the system port, `pmt::mp("system")`
*/
- static const pmt::pmt_t d_system_port;
+ const pmt::pmt_t d_system_port;
public:
block_detail_sptr detail() const { return d_detail; }
diff --git a/gnuradio-runtime/lib/block.cc b/gnuradio-runtime/lib/block.cc
index c7eafb0fc7..86c4aa701f 100644
--- a/gnuradio-runtime/lib/block.cc
+++ b/gnuradio-runtime/lib/block.cc
@@ -34,9 +34,6 @@
namespace gr {
- const pmt::pmt_t block::d_system_port = pmt::intern("system");
- const pmt::pmt_t block::d_pmt_done = pmt::intern("done");
-
block::block(const std::string &name,
io_signature::sptr input_signature,
io_signature::sptr output_signature)
@@ -57,7 +54,9 @@ namespace gr {
d_pc_rpc_set(false),
d_update_rate(false),
d_max_output_buffer(std::max(output_signature->max_streams(),1), -1),
- d_min_output_buffer(std::max(output_signature->max_streams(),1), -1)
+ d_min_output_buffer(std::max(output_signature->max_streams(),1), -1),
+ d_pmt_done(pmt::intern("done")),
+ d_system_port(pmt::intern("system"))
{
global_block_registry.register_primitive(alias(), this);
message_port_register_in(d_system_port);
diff --git a/gr-blocks/include/gnuradio/blocks/pdu.h b/gr-blocks/include/gnuradio/blocks/pdu.h
index 78250b1b82..f33575fcf9 100644
--- a/gr-blocks/include/gnuradio/blocks/pdu.h
+++ b/gr-blocks/include/gnuradio/blocks/pdu.h
@@ -31,9 +31,9 @@
namespace gr {
namespace blocks {
namespace pdu {
- static const pmt::pmt_t s_pdu_port_id = pmt::mp("pdus");
enum vector_type { byte_t, float_t, complex_t };
+ BLOCKS_API const pmt::pmt_t pdu_port_id();
BLOCKS_API size_t itemsize(vector_type type);
BLOCKS_API bool type_matches(vector_type type, pmt::pmt_t v);
BLOCKS_API pmt::pmt_t make_pdu_vector(vector_type type, const uint8_t* buf, size_t items);
diff --git a/gr-blocks/lib/pdu.cc b/gr-blocks/lib/pdu.cc
index 54e0bad5d0..f0e610209f 100644
--- a/gr-blocks/lib/pdu.cc
+++ b/gr-blocks/lib/pdu.cc
@@ -30,6 +30,12 @@ namespace gr {
namespace blocks {
namespace pdu {
+ const
+ pmt::pmt_t pdu_port_id(){
+ static const pmt::pmt_t pdu_port_id = pmt::mp("pdus");
+ return pdu_port_id;
+ }
+
size_t
itemsize(vector_type type)
{
diff --git a/gr-blocks/lib/pdu_filter_impl.cc b/gr-blocks/lib/pdu_filter_impl.cc
index 17879d4b5a..31c737af53 100644
--- a/gr-blocks/lib/pdu_filter_impl.cc
+++ b/gr-blocks/lib/pdu_filter_impl.cc
@@ -43,9 +43,9 @@ namespace gr {
io_signature::make (0, 0, 0)),
d_k(k), d_v(v), d_invert(invert)
{
- message_port_register_out(pdu::s_pdu_port_id);
- message_port_register_in(pdu::s_pdu_port_id);
- set_msg_handler(pdu::s_pdu_port_id, boost::bind(&pdu_filter_impl::handle_msg, this, _1));
+ message_port_register_out(pdu::pdu_port_id());
+ message_port_register_in(pdu::pdu_port_id());
+ set_msg_handler(pdu::pdu_port_id(), boost::bind(&pdu_filter_impl::handle_msg, this, _1));
}
void
@@ -63,7 +63,7 @@ namespace gr {
// if all tests pass, propagate the pdu
if(output){
- message_port_pub(pdu::s_pdu_port_id, pdu);
+ message_port_pub(pdu::pdu_port_id(), pdu);
}
}
diff --git a/gr-blocks/lib/pdu_remove_impl.cc b/gr-blocks/lib/pdu_remove_impl.cc
index afa853c06b..ab6dd4a4e7 100644
--- a/gr-blocks/lib/pdu_remove_impl.cc
+++ b/gr-blocks/lib/pdu_remove_impl.cc
@@ -43,9 +43,9 @@ namespace gr {
io_signature::make (0, 0, 0)),
d_k(k)
{
- message_port_register_out(pdu::s_pdu_port_id);
- message_port_register_in(pdu::s_pdu_port_id);
- set_msg_handler(pdu::s_pdu_port_id, boost::bind(&pdu_remove_impl::handle_msg, this, _1));
+ message_port_register_out(pdu::pdu_port_id());
+ message_port_register_in(pdu::pdu_port_id());
+ set_msg_handler(pdu::pdu_port_id(), boost::bind(&pdu_remove_impl::handle_msg, this, _1));
}
void
@@ -59,7 +59,7 @@ namespace gr {
throw std::runtime_error("pdu_remove received non PDU input");
}
meta = pmt::dict_delete(meta, d_k);
- message_port_pub(pdu::s_pdu_port_id, pmt::cons(meta, pmt::cdr(pdu)));
+ message_port_pub(pdu::pdu_port_id(), pmt::cons(meta, pmt::cdr(pdu)));
}
} /* namespace blocks */
diff --git a/gr-blocks/lib/pdu_set_impl.cc b/gr-blocks/lib/pdu_set_impl.cc
index cbac65a766..df09e2e9f9 100644
--- a/gr-blocks/lib/pdu_set_impl.cc
+++ b/gr-blocks/lib/pdu_set_impl.cc
@@ -43,9 +43,9 @@ namespace gr {
io_signature::make (0, 0, 0)),
d_k(k), d_v(v)
{
- message_port_register_out(pdu::s_pdu_port_id);
- message_port_register_in(pdu::s_pdu_port_id);
- set_msg_handler(pdu::s_pdu_port_id, boost::bind(&pdu_set_impl::handle_msg, this, _1));
+ message_port_register_out(pdu::pdu_port_id());
+ message_port_register_in(pdu::pdu_port_id());
+ set_msg_handler(pdu::pdu_port_id(), boost::bind(&pdu_set_impl::handle_msg, this, _1));
}
void
@@ -59,7 +59,7 @@ namespace gr {
throw std::runtime_error("pdu_set received non PDU input");
}
meta = pmt::dict_add(meta, d_k, d_v);
- message_port_pub(pdu::s_pdu_port_id, pmt::cons(meta, pmt::cdr(pdu)));
+ message_port_pub(pdu::pdu_port_id(), pmt::cons(meta, pmt::cdr(pdu)));
}
} /* namespace blocks */
diff --git a/gr-blocks/lib/pdu_to_tagged_stream_impl.cc b/gr-blocks/lib/pdu_to_tagged_stream_impl.cc
index 594a1591d1..a58f73c991 100644
--- a/gr-blocks/lib/pdu_to_tagged_stream_impl.cc
+++ b/gr-blocks/lib/pdu_to_tagged_stream_impl.cc
@@ -46,7 +46,7 @@ namespace gr {
d_type(type),
d_curr_len(0)
{
- message_port_register_in(pdu::s_pdu_port_id);
+ message_port_register_in(pdu::pdu_port_id());
}
int pdu_to_tagged_stream_impl::calculate_output_stream_length(const gr_vector_int &)
@@ -55,7 +55,7 @@ namespace gr {
/* FIXME: This blocking call is far from ideal but is the best we
* can do at the moment
*/
- pmt::pmt_t msg(delete_head_blocking(pdu::s_pdu_port_id, 100));
+ pmt::pmt_t msg(delete_head_blocking(pdu::pdu_port_id(), 100));
if (msg.get() == NULL) {
return 0;
}
diff --git a/gr-blocks/lib/random_pdu_impl.cc b/gr-blocks/lib/random_pdu_impl.cc
index ea2d470d2b..9dfc761a2b 100644
--- a/gr-blocks/lib/random_pdu_impl.cc
+++ b/gr-blocks/lib/random_pdu_impl.cc
@@ -48,7 +48,7 @@ namespace gr {
d_mask(byte_mask),
d_length_modulo(length_modulo)
{
- message_port_register_out(pdu::s_pdu_port_id);
+ message_port_register_out(pdu::pdu_port_id());
message_port_register_in(pmt::mp("generate"));
set_msg_handler(pmt::mp("generate"), boost::bind(&random_pdu_impl::generate_pdu, this, _1));
if(length_modulo < 1)
@@ -80,7 +80,7 @@ namespace gr {
pmt::pmt_t vecpmt(pmt::make_blob(&vec[0], len));
pmt::pmt_t pdu(pmt::cons(pmt::PMT_NIL, vecpmt));
- message_port_pub(pdu::s_pdu_port_id, pdu);
+ message_port_pub(pdu::pdu_port_id(), pdu);
}
} /* namespace blocks */
diff --git a/gr-blocks/lib/socket_pdu_impl.cc b/gr-blocks/lib/socket_pdu_impl.cc
index 2e154d2c1f..e20f1478f0 100644
--- a/gr-blocks/lib/socket_pdu_impl.cc
+++ b/gr-blocks/lib/socket_pdu_impl.cc
@@ -46,8 +46,8 @@ namespace gr {
{
d_rxbuf.resize(MTU);
- message_port_register_in(pdu::s_pdu_port_id);
- message_port_register_out(pdu::s_pdu_port_id);
+ message_port_register_in(pdu::pdu_port_id());
+ message_port_register_out(pdu::pdu_port_id());
if ((type == "TCP_SERVER") && ((addr.empty()) || (addr == "0.0.0.0"))) { // Bind on all interfaces
int port_num = atoi(port.c_str());
@@ -86,7 +86,7 @@ namespace gr {
start_tcp_accept();
- set_msg_handler(pdu::s_pdu_port_id, boost::bind(&socket_pdu_impl::tcp_server_send, this, _1));
+ set_msg_handler(pdu::pdu_port_id(), boost::bind(&socket_pdu_impl::tcp_server_send, this, _1));
}
else if (type =="TCP_CLIENT") {
boost::system::error_code error = boost::asio::error::host_not_found;
@@ -96,7 +96,7 @@ namespace gr {
throw boost::system::system_error(error);
d_tcp_socket->set_option(boost::asio::ip::tcp::no_delay(d_tcp_no_delay));
- set_msg_handler(pdu::s_pdu_port_id, boost::bind(&socket_pdu_impl::tcp_client_send, this, _1));
+ set_msg_handler(pdu::pdu_port_id(), boost::bind(&socket_pdu_impl::tcp_client_send, this, _1));
d_tcp_socket->async_read_some(boost::asio::buffer(d_rxbuf),
boost::bind(&socket_pdu_impl::handle_tcp_read, this,
@@ -110,7 +110,7 @@ namespace gr {
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred));
- set_msg_handler(pdu::s_pdu_port_id, boost::bind(&socket_pdu_impl::udp_send, this, _1));
+ set_msg_handler(pdu::pdu_port_id(), boost::bind(&socket_pdu_impl::udp_send, this, _1));
}
else if (type =="UDP_CLIENT") {
d_udp_socket.reset(new boost::asio::ip::udp::socket(d_io_service, d_udp_endpoint));
@@ -119,7 +119,7 @@ namespace gr {
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred));
- set_msg_handler(pdu::s_pdu_port_id, boost::bind(&socket_pdu_impl::udp_send, this, _1));
+ set_msg_handler(pdu::pdu_port_id(), boost::bind(&socket_pdu_impl::udp_send, this, _1));
}
else
throw std::runtime_error("gr::blocks:socket_pdu: unknown socket type");
@@ -151,7 +151,7 @@ namespace gr {
if (!error) {
pmt::pmt_t vector = pmt::init_u8vector(bytes_transferred, (const uint8_t *)&d_rxbuf[0]);
pmt::pmt_t pdu = pmt::cons(pmt::PMT_NIL, vector);
- message_port_pub(pdu::s_pdu_port_id, pdu);
+ message_port_pub(pdu::pdu_port_id(), pdu);
d_tcp_socket->async_read_some(boost::asio::buffer(d_rxbuf),
boost::bind(&socket_pdu_impl::handle_tcp_read, this,
@@ -241,7 +241,7 @@ namespace gr {
pmt::pmt_t vector = pmt::init_u8vector(bytes_transferred, (const uint8_t*)&d_rxbuf[0]);
pmt::pmt_t pdu = pmt::cons(pmt::PMT_NIL, vector);
- message_port_pub(pdu::s_pdu_port_id, pdu);
+ message_port_pub(pdu::pdu_port_id(), pdu);
d_udp_socket->async_receive_from(boost::asio::buffer(d_rxbuf), d_udp_endpoint_other,
boost::bind(&socket_pdu_impl::handle_udp_read, this,
diff --git a/gr-blocks/lib/tagged_stream_to_pdu_impl.cc b/gr-blocks/lib/tagged_stream_to_pdu_impl.cc
index 7e1f54f1a9..feada488c7 100644
--- a/gr-blocks/lib/tagged_stream_to_pdu_impl.cc
+++ b/gr-blocks/lib/tagged_stream_to_pdu_impl.cc
@@ -45,7 +45,7 @@ namespace gr {
d_pdu_meta(pmt::PMT_NIL),
d_pdu_vector(pmt::PMT_NIL)
{
- message_port_register_out(pdu::s_pdu_port_id);
+ message_port_register_out(pdu::pdu_port_id());
}
int
@@ -71,7 +71,7 @@ namespace gr {
// Send msg
pmt::pmt_t msg = pmt::cons(d_pdu_meta, d_pdu_vector);
- message_port_pub(pdu::s_pdu_port_id, msg);
+ message_port_pub(pdu::pdu_port_id(), msg);
return ninput_items[0];
}
diff --git a/gr-blocks/lib/tcp_connection.cc b/gr-blocks/lib/tcp_connection.cc
index 4dba1e9edc..4c0dfc27ac 100644
--- a/gr-blocks/lib/tcp_connection.cc
+++ b/gr-blocks/lib/tcp_connection.cc
@@ -94,7 +94,7 @@ namespace gr {
pmt::pmt_t vector = pmt::init_u8vector(bytes_transferred, (const uint8_t*)&d_buf[0]);
pmt::pmt_t pdu = pmt::cons(pmt::PMT_NIL, vector);
- d_block->message_port_pub(pdu::s_pdu_port_id, pdu);
+ d_block->message_port_pub(pdu::pdu_port_id(), pdu);
}
d_socket.async_read_some(boost::asio::buffer(d_buf),
diff --git a/gr-blocks/lib/tuntap_pdu_impl.cc b/gr-blocks/lib/tuntap_pdu_impl.cc
index dba76d1ba4..dd4ce90982 100644
--- a/gr-blocks/lib/tuntap_pdu_impl.cc
+++ b/gr-blocks/lib/tuntap_pdu_impl.cc
@@ -92,12 +92,12 @@ namespace gr {
) % dev % dev << std::endl;
// set up output message port
- message_port_register_out(pdu::s_pdu_port_id);
- start_rxthread(this, pdu::s_pdu_port_id);
+ message_port_register_out(pdu::pdu_port_id());
+ start_rxthread(this, pdu::pdu_port_id());
// set up input message port
- message_port_register_in(pdu::s_pdu_port_id);
- set_msg_handler(pdu::s_pdu_port_id, boost::bind(&tuntap_pdu_impl::send, this, _1));
+ message_port_register_in(pdu::pdu_port_id());
+ set_msg_handler(pdu::pdu_port_id(), boost::bind(&tuntap_pdu_impl::send, this, _1));
}
int
diff --git a/gr-digital/lib/header_payload_demux_impl.cc b/gr-digital/lib/header_payload_demux_impl.cc
index 646902d506..c6ec53ba35 100644
--- a/gr-digital/lib/header_payload_demux_impl.cc
+++ b/gr-digital/lib/header_payload_demux_impl.cc
@@ -31,7 +31,11 @@
namespace gr {
namespace digital {
- const pmt::pmt_t header_payload_demux_impl::s_msg_port_id = pmt::mp("header_data");
+ const pmt::pmt_t header_payload_demux_impl::msg_port_id()
+ {
+ static const pmt::pmt_t msg_port_id = pmt::mp("header_data");
+ return msg_port_id;
+ }
//! Returns a PMT time tuple (uint seconds, double fraction) as the sum of
// another PMT time tuple and a time diff in seconds.
@@ -149,8 +153,8 @@ namespace gr {
);
}
set_tag_propagation_policy(TPP_DONT);
- message_port_register_in(s_msg_port_id);
- set_msg_handler(s_msg_port_id, boost::bind(&header_payload_demux_impl::parse_header_data_msg, this, _1));
+ message_port_register_in(msg_port_id());
+ set_msg_handler(msg_port_id(), boost::bind(&header_payload_demux_impl::parse_header_data_msg, this, _1));
for (size_t i = 0; i < special_tags.size(); i++) {
d_special_tags.push_back(pmt::string_to_symbol(special_tags[i]));
d_special_tags_last_value.push_back(pmt::PMT_NIL);
diff --git a/gr-digital/lib/header_payload_demux_impl.h b/gr-digital/lib/header_payload_demux_impl.h
index dfadfd58e6..8f1acd4fb4 100644
--- a/gr-digital/lib/header_payload_demux_impl.h
+++ b/gr-digital/lib/header_payload_demux_impl.h
@@ -55,7 +55,7 @@ namespace gr {
std::vector<pmt::pmt_t> d_special_tags; //!< List of special tags
std::vector<pmt::pmt_t> d_special_tags_last_value; //!< The current value of the special tags
- static const pmt::pmt_t s_msg_port_id; //!< Message Port Id
+ static const pmt::pmt_t msg_port_id(); //!< Message Port Id
// Helper functions to make the state machine more readable
diff --git a/gr-uhd/include/gnuradio/uhd/usrp_block.h b/gr-uhd/include/gnuradio/uhd/usrp_block.h
index 6e4245e862..998908b67b 100644
--- a/gr-uhd/include/gnuradio/uhd/usrp_block.h
+++ b/gr-uhd/include/gnuradio/uhd/usrp_block.h
@@ -30,6 +30,24 @@
namespace gr {
namespace uhd {
+ GR_UHD_API const pmt::pmt_t cmd_chan_key();
+ GR_UHD_API const pmt::pmt_t cmd_gain_key();
+ GR_UHD_API const pmt::pmt_t cmd_freq_key();
+ GR_UHD_API const pmt::pmt_t cmd_lo_offset_key();
+ GR_UHD_API const pmt::pmt_t cmd_tune_key();
+ GR_UHD_API const pmt::pmt_t cmd_lo_freq_key();
+ GR_UHD_API const pmt::pmt_t cmd_dsp_freq_key();
+ GR_UHD_API const pmt::pmt_t cmd_rate_key();
+ GR_UHD_API const pmt::pmt_t cmd_bandwidth_key();
+ GR_UHD_API const pmt::pmt_t cmd_time_key();
+ GR_UHD_API const pmt::pmt_t cmd_mboard_key();
+ GR_UHD_API const pmt::pmt_t cmd_antenna_key();
+ GR_UHD_API const pmt::pmt_t cmd_direction_key();
+ GR_UHD_API const pmt::pmt_t cmd_tag_key();
+
+ GR_UHD_API const pmt::pmt_t ant_direction_rx();
+ GR_UHD_API const pmt::pmt_t ant_direction_tx();
+
/*! Base class for USRP blocks.
* \ingroup uhd_blk
*
@@ -45,6 +63,7 @@ namespace gr {
usrp_block(const std::string &name,
gr::io_signature::sptr input_signature,
gr::io_signature::sptr output_signature);
+
public:
/*!
diff --git a/gr-uhd/lib/usrp_block_impl.cc b/gr-uhd/lib/usrp_block_impl.cc
index 0b94e36a68..70256d3071 100644
--- a/gr-uhd/lib/usrp_block_impl.cc
+++ b/gr-uhd/lib/usrp_block_impl.cc
@@ -39,6 +39,88 @@ usrp_block::usrp_block(
// nop
}
+const pmt::pmt_t gr::uhd::cmd_chan_key()
+{
+ static const pmt::pmt_t val = pmt::mp("chan");
+ return val;
+}
+const pmt::pmt_t gr::uhd::cmd_gain_key()
+{
+ static const pmt::pmt_t val = pmt::mp("gain");
+ return val;
+}
+const pmt::pmt_t gr::uhd::cmd_freq_key()
+{
+ static const pmt::pmt_t val = pmt::mp("freq");
+ return val;
+}
+const pmt::pmt_t gr::uhd::cmd_lo_offset_key()
+{
+ static const pmt::pmt_t val = pmt::mp("lo_offset");
+ return val;
+}
+const pmt::pmt_t gr::uhd::cmd_tune_key()
+{
+ static const pmt::pmt_t val = pmt::mp("tune");
+ return val;
+}
+const pmt::pmt_t gr::uhd::cmd_lo_freq_key()
+{
+ static const pmt::pmt_t val = pmt::mp("lo_freq");
+ return val;
+}
+const pmt::pmt_t gr::uhd::cmd_dsp_freq_key()
+{
+ static const pmt::pmt_t val = pmt::mp("dsp_freq");
+ return val;
+}
+const pmt::pmt_t gr::uhd::cmd_rate_key()
+{
+ static const pmt::pmt_t val = pmt::mp("rate");
+ return val;
+}
+const pmt::pmt_t gr::uhd::cmd_bandwidth_key()
+{
+ static const pmt::pmt_t val = pmt::mp("bandwidth");
+ return val;
+}
+const pmt::pmt_t gr::uhd::cmd_time_key()
+{
+ static const pmt::pmt_t val = pmt::mp("time");
+ return val;
+}
+const pmt::pmt_t gr::uhd::cmd_mboard_key()
+{
+ static const pmt::pmt_t val = pmt::mp("mboard");
+ return val;
+}
+const pmt::pmt_t gr::uhd::cmd_antenna_key()
+{
+ static const pmt::pmt_t val = pmt::mp("antenna");
+ return val;
+}
+const pmt::pmt_t gr::uhd::cmd_direction_key()
+{
+ static const pmt::pmt_t val = pmt::mp("direction");
+ return val;
+}
+const pmt::pmt_t gr::uhd::cmd_tag_key()
+{
+ static const pmt::pmt_t val = pmt::mp("tag");
+ return val;
+}
+
+const pmt::pmt_t gr::uhd::ant_direction_rx()
+{
+ static const pmt::pmt_t val = pmt::mp("RX");
+ return val;
+}
+const pmt::pmt_t gr::uhd::ant_direction_tx()
+{
+ static const pmt::pmt_t val = pmt::mp("TX");
+ return val;
+}
+
usrp_block_impl::usrp_block_impl(
const ::uhd::device_addr_t &device_addr,
const ::uhd::stream_args_t &stream_args,
@@ -69,15 +151,15 @@ usrp_block_impl::usrp_block_impl(
// cuz we lazy:
#define REGISTER_CMD_HANDLER(key, _handler) register_msg_cmd_handler(key, boost::bind(&usrp_block_impl::_handler, this, _1, _2, _3))
// Register default command handlers:
- REGISTER_CMD_HANDLER(CMD_FREQ_KEY, _cmd_handler_freq);
- REGISTER_CMD_HANDLER(CMD_GAIN_KEY, _cmd_handler_gain);
- REGISTER_CMD_HANDLER(CMD_LO_OFFSET_KEY, _cmd_handler_looffset);
- REGISTER_CMD_HANDLER(CMD_TUNE_KEY, _cmd_handler_tune);
- REGISTER_CMD_HANDLER(CMD_LO_FREQ_KEY, _cmd_handler_lofreq);
- REGISTER_CMD_HANDLER(CMD_DSP_FREQ_KEY, _cmd_handler_dspfreq);
- 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);
+ REGISTER_CMD_HANDLER(cmd_freq_key(), _cmd_handler_freq);
+ REGISTER_CMD_HANDLER(cmd_gain_key(), _cmd_handler_gain);
+ REGISTER_CMD_HANDLER(cmd_lo_offset_key(), _cmd_handler_looffset);
+ REGISTER_CMD_HANDLER(cmd_tune_key(), _cmd_handler_tune);
+ REGISTER_CMD_HANDLER(cmd_lo_freq_key(), _cmd_handler_lofreq);
+ REGISTER_CMD_HANDLER(cmd_dsp_freq_key(), _cmd_handler_dspfreq);
+ 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);
}
usrp_block_impl::~usrp_block_impl()
@@ -456,7 +538,7 @@ void usrp_block_impl::msg_handler_command(pmt::pmt_t msg)
pmt::pmt_t new_msg = pmt::make_dict();
new_msg = pmt::dict_add(new_msg, pmt::tuple_ref(msg, 0), pmt::tuple_ref(msg, 1));
if (pmt::length(msg) == 3) {
- new_msg = pmt::dict_add(new_msg, CMD_CHAN_KEY, pmt::tuple_ref(msg, 2));
+ new_msg = pmt::dict_add(new_msg, cmd_chan_key(), pmt::tuple_ref(msg, 2));
}
GR_LOG_WARN(d_debug_logger, boost::format("Using legacy message format (tuples): %s") % msg);
return msg_handler_command(new_msg);
@@ -481,14 +563,14 @@ void usrp_block_impl::msg_handler_command(pmt::pmt_t msg)
/*** Start the actual message processing *************************/
/// 1) Check if there's a time stamp
- if (pmt::dict_has_key(msg, CMD_TIME_KEY)) {
+ if (pmt::dict_has_key(msg, cmd_time_key())) {
size_t mboard_index = pmt::to_long(
pmt::dict_ref(
- msg, CMD_MBOARD_KEY,
+ msg, cmd_mboard_key(),
pmt::from_long( ::uhd::usrp::multi_usrp::ALL_MBOARDS ) // Default to all mboards
)
);
- pmt::pmt_t timespec_p = pmt::dict_ref(msg, CMD_TIME_KEY, pmt::PMT_NIL);
+ pmt::pmt_t timespec_p = pmt::dict_ref(msg, cmd_time_key(), pmt::PMT_NIL);
if (timespec_p == pmt::PMT_NIL) {
clear_command_time(mboard_index);
} else {
@@ -504,7 +586,7 @@ void usrp_block_impl::msg_handler_command(pmt::pmt_t msg)
/// 2) Read chan value
int chan = int(pmt::to_long(
pmt::dict_ref(
- msg, CMD_CHAN_KEY,
+ msg, cmd_chan_key(),
pmt::from_long(-1) // Default to all chans
)
));
@@ -527,7 +609,7 @@ void usrp_block_impl::msg_handler_command(pmt::pmt_t msg)
/// 4) See if a direction was specified
pmt::pmt_t direction = pmt::dict_ref(
- msg, CMD_DIRECTION_KEY,
+ msg, cmd_direction_key(),
pmt::PMT_NIL // Anything except "TX" or "RX will default to the messaged block direction"
);
@@ -573,8 +655,8 @@ void usrp_block_impl::_cmd_handler_freq(const pmt::pmt_t &freq_, int chan, const
{
double freq = pmt::to_double(freq_);
::uhd::tune_request_t new_tune_reqest(freq);
- if (pmt::dict_has_key(msg, CMD_LO_OFFSET_KEY)) {
- double lo_offset = pmt::to_double(pmt::dict_ref(msg, CMD_LO_OFFSET_KEY, pmt::PMT_NIL));
+ if (pmt::dict_has_key(msg, cmd_lo_offset_key())) {
+ double lo_offset = pmt::to_double(pmt::dict_ref(msg, cmd_lo_offset_key(), pmt::PMT_NIL));
new_tune_reqest = ::uhd::tune_request_t(freq, lo_offset);
}
@@ -583,7 +665,7 @@ void usrp_block_impl::_cmd_handler_freq(const pmt::pmt_t &freq_, int chan, const
void usrp_block_impl::_cmd_handler_looffset(const pmt::pmt_t &lo_offset, int chan, const pmt::pmt_t &msg)
{
- if (pmt::dict_has_key(msg, CMD_FREQ_KEY)) {
+ if (pmt::dict_has_key(msg, cmd_freq_key())) {
// Then it's already taken care of
return;
}
@@ -661,8 +743,8 @@ void usrp_block_impl::_cmd_handler_lofreq(const pmt::pmt_t &lofreq, int chan, co
::uhd::tune_request_t new_tune_request = _curr_tune_req[chan];
new_tune_request.rf_freq = pmt::to_double(lofreq);
- if (pmt::dict_has_key(msg, CMD_DSP_FREQ_KEY)) {
- new_tune_request.dsp_freq = pmt::to_double(pmt::dict_ref(msg, CMD_DSP_FREQ_KEY, pmt::PMT_NIL));
+ if (pmt::dict_has_key(msg, cmd_dsp_freq_key())) {
+ new_tune_request.dsp_freq = pmt::to_double(pmt::dict_ref(msg, cmd_dsp_freq_key(), pmt::PMT_NIL));
}
new_tune_request.rf_freq_policy = ::uhd::tune_request_t::POLICY_MANUAL;
new_tune_request.dsp_freq_policy = ::uhd::tune_request_t::POLICY_MANUAL;
@@ -672,7 +754,7 @@ void usrp_block_impl::_cmd_handler_lofreq(const pmt::pmt_t &lofreq, int chan, co
void usrp_block_impl::_cmd_handler_dspfreq(const pmt::pmt_t &dspfreq, int chan, const pmt::pmt_t &msg)
{
- if (pmt::dict_has_key(msg, CMD_LO_FREQ_KEY)) {
+ if (pmt::dict_has_key(msg, cmd_lo_freq_key())) {
// Then it's already dealt with
return;
}
diff --git a/gr-uhd/lib/usrp_block_impl.h b/gr-uhd/lib/usrp_block_impl.h
index ab7194393b..f5d89fdc52 100644
--- a/gr-uhd/lib/usrp_block_impl.h
+++ b/gr-uhd/lib/usrp_block_impl.h
@@ -37,23 +37,6 @@ namespace gr {
static const size_t ALL_CHANS = ::uhd::usrp::multi_usrp::ALL_CHANS;
static const std::string ALL_GAINS = ::uhd::usrp::multi_usrp::ALL_GAINS;
- static const pmt::pmt_t CMD_CHAN_KEY = pmt::mp("chan");
- static const pmt::pmt_t CMD_GAIN_KEY = pmt::mp("gain");
- static const pmt::pmt_t CMD_FREQ_KEY = pmt::mp("freq");
- static const pmt::pmt_t CMD_LO_OFFSET_KEY = pmt::mp("lo_offset");
- static const pmt::pmt_t CMD_TUNE_KEY = pmt::mp("tune");
- static const pmt::pmt_t CMD_LO_FREQ_KEY = pmt::mp("lo_freq");
- static const pmt::pmt_t CMD_DSP_FREQ_KEY = pmt::mp("dsp_freq");
- static const pmt::pmt_t CMD_RATE_KEY = pmt::mp("rate");
- static const pmt::pmt_t CMD_BANDWIDTH_KEY = pmt::mp("bandwidth");
- static const pmt::pmt_t CMD_TIME_KEY = pmt::mp("time");
- static const pmt::pmt_t CMD_MBOARD_KEY = pmt::mp("mboard");
- static const pmt::pmt_t CMD_ANTENNA_KEY = pmt::mp("antenna");
- static const pmt::pmt_t CMD_DIRECTION_KEY = pmt::mp("direction");
-
- static const pmt::pmt_t ANT_DIRECTION_RX = pmt::mp("RX");
- static const pmt::pmt_t ANT_DIRECTION_TX = pmt::mp("TX");
-
#ifdef UHD_USRP_MULTI_USRP_LO_CONFIG_API
static const std::string ALL_LOS = ::uhd::usrp::multi_usrp::ALL_LOS;
#else
diff --git a/gr-uhd/lib/usrp_sink_impl.cc b/gr-uhd/lib/usrp_sink_impl.cc
index a9eb264eb8..9914d46e57 100644
--- a/gr-uhd/lib/usrp_sink_impl.cc
+++ b/gr-uhd/lib/usrp_sink_impl.cc
@@ -139,7 +139,7 @@ namespace gr {
usrp_sink_impl::_set_center_freq_from_internals(size_t chan, pmt::pmt_t direction)
{
_chans_to_tune.reset(chan);
- if (pmt::eqv(direction, ANT_DIRECTION_RX)) {
+ if (pmt::eqv(direction, ant_direction_rx())) {
// TODO: what happens if the RX device is not instantiated? Catch error?
return _dev->set_rx_freq(_curr_tune_req[chan], _stream_args.channels[chan]);
} else {
@@ -518,14 +518,14 @@ namespace gr {
// If it's on the first sample, immediately do the tune:
GR_LOG_DEBUG(d_debug_logger, boost::format("Received tx_freq on start of burst."));
pmt::pmt_t freq_cmd = pmt::make_dict();
- freq_cmd = pmt::dict_add(freq_cmd, CMD_FREQ_KEY, value);
+ freq_cmd = pmt::dict_add(freq_cmd, cmd_freq_key(), value);
msg_handler_command(freq_cmd);
}
else if(pmt::equal(key, FREQ_KEY)) {
// If it's not on the first sample, queue this command and only tx until here:
GR_LOG_DEBUG(d_debug_logger, boost::format("Received tx_freq mid-burst."));
pmt::pmt_t freq_cmd = pmt::make_dict();
- freq_cmd = pmt::dict_add(freq_cmd, CMD_FREQ_KEY, value);
+ freq_cmd = pmt::dict_add(freq_cmd, cmd_freq_key(), value);
commands_in_burst.push_back(freq_cmd);
max_count = my_tag_count + 1;
in_burst_cmd_offset = my_tag_count;
diff --git a/gr-uhd/lib/usrp_source_impl.cc b/gr-uhd/lib/usrp_source_impl.cc
index 84e7934e85..acf67b82ee 100644
--- a/gr-uhd/lib/usrp_source_impl.cc
+++ b/gr-uhd/lib/usrp_source_impl.cc
@@ -31,7 +31,6 @@
namespace gr {
namespace uhd {
- const pmt::pmt_t CMD_TAG_KEY = pmt::mp("tag");
usrp_source::sptr
usrp_source::make(const ::uhd::device_addr_t &device_addr,
@@ -83,7 +82,7 @@ namespace gr {
#ifdef GR_UHD_USE_STREAM_API
_samps_per_packet = 1;
#endif
- register_msg_cmd_handler(CMD_TAG_KEY, boost::bind(&usrp_source_impl::_cmd_handler_tag, this, _1));
+ register_msg_cmd_handler(cmd_tag_key(), boost::bind(&usrp_source_impl::_cmd_handler_tag, this, _1));
}
usrp_source_impl::~usrp_source_impl()
@@ -154,7 +153,7 @@ namespace gr {
usrp_source_impl::_set_center_freq_from_internals(size_t chan, pmt::pmt_t direction)
{
_chans_to_tune.reset(chan);
- if (pmt::eqv(direction, ANT_DIRECTION_TX)) {
+ if (pmt::eqv(direction, ant_direction_tx())) {
// TODO: what happens if the TX device is not instantiated? Catch error?
return _dev->set_tx_freq(_curr_tune_req[chan], _stream_args.channels[chan]);
} else {