summaryrefslogtreecommitdiff
path: root/gr-uhd/lib/usrp_block_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gr-uhd/lib/usrp_block_impl.cc')
-rw-r--r--gr-uhd/lib/usrp_block_impl.cc124
1 files changed, 103 insertions, 21 deletions
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;
}