aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/usrp/usrp2
diff options
context:
space:
mode:
Diffstat (limited to 'host/lib/usrp/usrp2')
-rw-r--r--host/lib/usrp/usrp2/clock_ctrl.cpp1
-rw-r--r--host/lib/usrp/usrp2/codec_ctrl.cpp3
-rw-r--r--host/lib/usrp/usrp2/dboard_iface.cpp2
-rw-r--r--host/lib/usrp/usrp2/io_impl.cpp51
-rw-r--r--host/lib/usrp/usrp2/n200_image_loader.cpp4
-rw-r--r--host/lib/usrp/usrp2/usrp2_fifo_ctrl.cpp2
-rw-r--r--host/lib/usrp/usrp2/usrp2_iface.cpp7
-rw-r--r--host/lib/usrp/usrp2/usrp2_impl.cpp64
-rw-r--r--host/lib/usrp/usrp2/usrp2_impl.hpp2
9 files changed, 68 insertions, 68 deletions
diff --git a/host/lib/usrp/usrp2/clock_ctrl.cpp b/host/lib/usrp/usrp2/clock_ctrl.cpp
index c05453c40..4a15c641a 100644
--- a/host/lib/usrp/usrp2/clock_ctrl.cpp
+++ b/host/lib/usrp/usrp2/clock_ctrl.cpp
@@ -22,7 +22,6 @@
#include <uhd/utils/safe_call.hpp>
#include <uhd/utils/assert_has.hpp>
#include <stdint.h>
-#include <boost/lexical_cast.hpp>
#include <boost/math/special_functions/round.hpp>
#include <iostream>
diff --git a/host/lib/usrp/usrp2/codec_ctrl.cpp b/host/lib/usrp/usrp2/codec_ctrl.cpp
index a0e456708..ec8bcf919 100644
--- a/host/lib/usrp/usrp2/codec_ctrl.cpp
+++ b/host/lib/usrp/usrp2/codec_ctrl.cpp
@@ -23,7 +23,6 @@
#include <uhd/utils/safe_call.hpp>
#include <uhd/exception.hpp>
#include <stdint.h>
-#include <boost/foreach.hpp>
using namespace uhd;
@@ -198,7 +197,7 @@ private:
void send_ad9777_reg(uint8_t addr){
uint16_t reg = _ad9777_regs.get_write_reg(addr);
- UHD_LOGV(always) << "send_ad9777_reg: " << std::hex << reg << std::endl;
+ UHD_LOGGER_TRACE("USRP2") << "send_ad9777_reg: " << std::hex << reg;
_spiface->write_spi(
SPI_SS_AD9777, spi_config_t::EDGE_RISE,
reg, 16
diff --git a/host/lib/usrp/usrp2/dboard_iface.cpp b/host/lib/usrp/usrp2/dboard_iface.cpp
index 1dafe5721..49ad38eaf 100644
--- a/host/lib/usrp/usrp2/dboard_iface.cpp
+++ b/host/lib/usrp/usrp2/dboard_iface.cpp
@@ -134,7 +134,7 @@ usrp2_dboard_iface::usrp2_dboard_iface(
//reset the aux dacs
_dac_regs[UNIT_RX] = ad5623_regs_t();
_dac_regs[UNIT_TX] = ad5623_regs_t();
- BOOST_FOREACH(unit_t unit, _dac_regs.keys()){
+ for(unit_t unit: _dac_regs.keys()){
_dac_regs[unit].data = 1;
_dac_regs[unit].addr = ad5623_regs_t::ADDR_ALL;
_dac_regs[unit].cmd = ad5623_regs_t::CMD_RESET;
diff --git a/host/lib/usrp/usrp2/io_impl.cpp b/host/lib/usrp/usrp2/io_impl.cpp
index 224519944..967b53c88 100644
--- a/host/lib/usrp/usrp2/io_impl.cpp
+++ b/host/lib/usrp/usrp2/io_impl.cpp
@@ -23,11 +23,11 @@
#include "usrp2_regs.hpp"
#include "fw_common.h"
#include <uhd/utils/log.hpp>
-#include <uhd/utils/msg.hpp>
+
#include <uhd/utils/tasks.hpp>
#include <uhd/exception.hpp>
#include <uhd/utils/byteswap.hpp>
-#include <uhd/utils/thread_priority.hpp>
+#include <uhd/utils/thread.hpp>
#include <uhd/transport/bounded_buffer.hpp>
#include <boost/thread/thread.hpp>
#include <boost/format.hpp>
@@ -165,7 +165,7 @@ struct usrp2_impl::io_impl{
std::vector<flow_control_monitor::sptr> fc_mons;
//methods and variables for the pirate crew
- void recv_pirate_loop(zero_copy_if::sptr, size_t);
+ void recv_pirate_loop(zero_copy_if::sptr, size_t, const std::atomic<bool> &);
std::list<task::sptr> pirate_tasks;
bounded_buffer<async_metadata_t> async_msg_fifo;
double tick_rate;
@@ -178,14 +178,14 @@ struct usrp2_impl::io_impl{
* - put async message packets into queue
**********************************************************************/
void usrp2_impl::io_impl::recv_pirate_loop(
- zero_copy_if::sptr err_xport, size_t index
+ zero_copy_if::sptr err_xport, size_t index, const std::atomic<bool> &exit_loop
){
set_thread_priority_safe();
//store a reference to the flow control monitor (offset by max dsps)
flow_control_monitor &fc_mon = *(this->fc_mons[index]);
- while (not boost::this_thread::interruption_requested()){
+ while (not exit_loop){
managed_recv_buffer::sptr buff = err_xport->get_recv_buff();
if (not buff.get()) continue; //ignore timeout/error buffers
@@ -209,7 +209,7 @@ void usrp2_impl::io_impl::recv_pirate_loop(
fc_mon.update_fc_condition(uhd::ntohx(fc_word32));
continue;
}
- //else UHD_MSG(often) << "metadata.event_code " << metadata.event_code << std::endl;
+ //else UHD_LOGGER_DEBUG("USRP2") << "metadata.event_code " << metadata.event_code;
async_msg_fifo.push_with_pop_on_full(metadata);
standard_async_msg_prints(metadata);
@@ -218,7 +218,7 @@ void usrp2_impl::io_impl::recv_pirate_loop(
//TODO unknown received packet, may want to print error...
}
}catch(const std::exception &e){
- UHD_MSG(error) << "Error in recv pirate loop: " << e.what() << std::endl;
+ UHD_LOGGER_ERROR("USRP2") << "Error in recv pirate loop: " << e.what() ;
}
}
}
@@ -231,7 +231,7 @@ void usrp2_impl::io_init(void){
_io_impl = UHD_PIMPL_MAKE(io_impl, ());
//init first so we dont have an access race
- BOOST_FOREACH(const std::string &mb, _mbc.keys()){
+ for(const std::string &mb: _mbc.keys()){
//init the tx xport and flow control monitor
_io_impl->tx_xports.push_back(_mbc[mb].tx_dsp_xport);
_io_impl->fc_mons.push_back(flow_control_monitor::sptr(new flow_control_monitor(
@@ -241,18 +241,19 @@ void usrp2_impl::io_init(void){
}
//allocate streamer weak ptrs containers
- BOOST_FOREACH(const std::string &mb, _mbc.keys()){
+ for(const std::string &mb: _mbc.keys()){
_mbc[mb].rx_streamers.resize(_mbc[mb].rx_dsps.size());
_mbc[mb].tx_streamers.resize(1/*known to be 1 dsp*/);
}
//create a new pirate thread for each zc if (yarr!!)
size_t index = 0;
- BOOST_FOREACH(const std::string &mb, _mbc.keys()){
+ for(const std::string &mb: _mbc.keys()){
//spawn a new pirate to plunder the recv booty
_io_impl->pirate_tasks.push_back(task::make(boost::bind(
&usrp2_impl::io_impl::recv_pirate_loop, _io_impl.get(),
- _mbc[mb].tx_dsp_xport, index++
+ _mbc[mb].tx_dsp_xport, index++,
+ boost::ref(_pirate_task_exit)
)));
}
}
@@ -261,7 +262,7 @@ void usrp2_impl::update_tick_rate(const double rate){
_io_impl->tick_rate = rate; //shadow for async msg
//update the tick rate on all existing streamers -> thread safe
- BOOST_FOREACH(const std::string &mb, _mbc.keys()){
+ for(const std::string &mb: _mbc.keys()){
for (size_t i = 0; i < _mbc[mb].rx_streamers.size(); i++){
boost::shared_ptr<sph::recv_packet_streamer> my_streamer =
boost::dynamic_pointer_cast<sph::recv_packet_streamer>(_mbc[mb].rx_streamers[i].lock());
@@ -298,15 +299,15 @@ void usrp2_impl::update_tx_samp_rate(const std::string &mb, const size_t dsp, co
}
void usrp2_impl::update_rates(void){
- BOOST_FOREACH(const std::string &mb, _mbc.keys()){
+ for(const std::string &mb: _mbc.keys()){
fs_path root = "/mboards/" + mb;
_tree->access<double>(root / "tick_rate").update();
//and now that the tick rate is set, init the host rates to something
- BOOST_FOREACH(const std::string &name, _tree->list(root / "rx_dsps")){
+ for(const std::string &name: _tree->list(root / "rx_dsps")){
_tree->access<double>(root / "rx_dsps" / name / "rate" / "value").update();
}
- BOOST_FOREACH(const std::string &name, _tree->list(root / "tx_dsps")){
+ for(const std::string &name: _tree->list(root / "tx_dsps")){
_tree->access<double>(root / "tx_dsps" / name / "rate" / "value").update();
}
}
@@ -330,7 +331,7 @@ void usrp2_impl::update_rx_subdev_spec(const std::string &which_mb, const subdev
//compute the new occupancy and resize
_mbc[which_mb].rx_chan_occ = spec.size();
size_t nchan = 0;
- BOOST_FOREACH(const std::string &mb, _mbc.keys()) nchan += _mbc[mb].rx_chan_occ;
+ for(const std::string &mb: _mbc.keys()) nchan += _mbc[mb].rx_chan_occ;
}
void usrp2_impl::update_tx_subdev_spec(const std::string &which_mb, const subdev_spec_t &spec){
@@ -346,7 +347,7 @@ void usrp2_impl::update_tx_subdev_spec(const std::string &which_mb, const subdev
//compute the new occupancy and resize
_mbc[which_mb].tx_chan_occ = spec.size();
size_t nchan = 0;
- BOOST_FOREACH(const std::string &mb, _mbc.keys()) nchan += _mbc[mb].tx_chan_occ;
+ for(const std::string &mb: _mbc.keys()) nchan += _mbc[mb].tx_chan_occ;
}
/***********************************************************************
@@ -375,10 +376,10 @@ void usrp2_impl::program_stream_dest(
//user has provided an alternative address and port for destination
if (args.args.has_key("addr") and args.args.has_key("port")){
- UHD_MSG(status) << boost::format(
- "Programming streaming destination for custom address.\n"
- "IPv4 Address: %s, UDP Port: %s\n"
- ) % args.args["addr"] % args.args["port"] << std::endl;
+ UHD_LOGGER_INFO("USRP2") << boost::format(
+ "Programming streaming destination for custom address. "
+ "IPv4 Address: %s, UDP Port: %s"
+ ) % args.args["addr"] % args.args["port"];
asio::io_service io_service;
asio::ip::udp::resolver resolver(io_service);
@@ -388,7 +389,7 @@ void usrp2_impl::program_stream_dest(
stream_ctrl.udp_port = uhd::htonx(uint32_t(endpoint.port()));
for (size_t i = 0; i < 3; i++){
- UHD_MSG(status) << "ARP attempt " << i << std::endl;
+ UHD_LOGGER_INFO("USRP2") << "ARP attempt " << i;
managed_send_buffer::sptr send_buff = xport->get_send_buff();
std::memcpy(send_buff->cast<void *>(), &stream_ctrl, sizeof(stream_ctrl));
send_buff->commit(sizeof(stream_ctrl));
@@ -398,7 +399,7 @@ void usrp2_impl::program_stream_dest(
if (recv_buff and recv_buff->size() >= sizeof(uint32_t)){
const uint32_t result = uhd::ntohx(recv_buff->cast<const uint32_t *>()[0]);
if (result == 0){
- UHD_MSG(status) << "Success! " << std::endl;
+ UHD_LOGGER_INFO("USRP2") << "Success! ";
return;
}
}
@@ -454,7 +455,7 @@ rx_streamer::sptr usrp2_impl::get_rx_stream(const uhd::stream_args_t &args_){
for (size_t chan_i = 0; chan_i < args.channels.size(); chan_i++){
const size_t chan = args.channels[chan_i];
size_t num_chan_so_far = 0;
- BOOST_FOREACH(const std::string &mb, _mbc.keys()){
+ for(const std::string &mb: _mbc.keys()){
num_chan_so_far += _mbc[mb].rx_chan_occ;
if (chan < num_chan_so_far){
const size_t dsp = chan + _mbc[mb].rx_chan_occ - num_chan_so_far;
@@ -524,7 +525,7 @@ tx_streamer::sptr usrp2_impl::get_tx_stream(const uhd::stream_args_t &args_){
const size_t chan = args.channels[chan_i];
size_t num_chan_so_far = 0;
size_t abs = 0;
- BOOST_FOREACH(const std::string &mb, _mbc.keys()){
+ for(const std::string &mb: _mbc.keys()){
num_chan_so_far += _mbc[mb].tx_chan_occ;
if (chan < num_chan_so_far){
const size_t dsp = chan + _mbc[mb].tx_chan_occ - num_chan_so_far;
diff --git a/host/lib/usrp/usrp2/n200_image_loader.cpp b/host/lib/usrp/usrp2/n200_image_loader.cpp
index c68484600..01a8faa5e 100644
--- a/host/lib/usrp/usrp2/n200_image_loader.cpp
+++ b/host/lib/usrp/usrp2/n200_image_loader.cpp
@@ -225,7 +225,7 @@ static uhd::device_addr_t n200_find(const image_loader::image_loader_args_t &ima
* this query. If the user supplied specific arguments that
* led to a USRP2, throw an error.
*/
- BOOST_FOREACH(const uhd::device_addr_t &dev, found){
+ for(const uhd::device_addr_t &dev: found){
rev_xport = udp_simple::make_connected(
dev.get("addr"),
BOOST_STRINGIZE(N200_UDP_FW_UPDATE_PORT)
@@ -257,7 +257,7 @@ static uhd::device_addr_t n200_find(const image_loader::image_loader_args_t &ima
std::string err_msg = "Could not resolve given args to a single N-Series device.\n"
"Applicable devices:\n";
- BOOST_FOREACH(const uhd::device_addr_t &dev, n200_found){
+ for(const uhd::device_addr_t &dev: n200_found){
err_msg += str(boost::format("* %s (addr=%s)\n")
% dev.get("hw_rev")
% dev.get("addr"));
diff --git a/host/lib/usrp/usrp2/usrp2_fifo_ctrl.cpp b/host/lib/usrp/usrp2/usrp2_fifo_ctrl.cpp
index 9cd3afc6c..cdd26bbc4 100644
--- a/host/lib/usrp/usrp2/usrp2_fifo_ctrl.cpp
+++ b/host/lib/usrp/usrp2/usrp2_fifo_ctrl.cpp
@@ -17,7 +17,7 @@
#include "usrp2_regs.hpp"
#include <uhd/exception.hpp>
-#include <uhd/utils/msg.hpp>
+#include <uhd/utils/log.hpp>
#include <uhd/utils/safe_call.hpp>
#include <uhd/transport/vrt_if_packet.hpp>
#include "usrp2_fifo_ctrl.hpp"
diff --git a/host/lib/usrp/usrp2/usrp2_iface.cpp b/host/lib/usrp/usrp2/usrp2_iface.cpp
index 021f0e3e5..ce547bad0 100644
--- a/host/lib/usrp/usrp2/usrp2_iface.cpp
+++ b/host/lib/usrp/usrp2/usrp2_iface.cpp
@@ -20,14 +20,13 @@
#include "fw_common.h"
#include "usrp2_iface.hpp"
#include <uhd/exception.hpp>
-#include <uhd/utils/msg.hpp>
+#include <uhd/utils/log.hpp>
#include <uhd/utils/paths.hpp>
#include <uhd/utils/tasks.hpp>
#include <uhd/utils/paths.hpp>
#include <uhd/utils/safe_call.hpp>
#include <uhd/types/dict.hpp>
#include <boost/thread.hpp>
-#include <boost/foreach.hpp>
#include <boost/asio.hpp> //used for htonl and ntohl
#include <boost/assign/list_of.hpp>
#include <boost/format.hpp>
@@ -269,10 +268,10 @@ public:
return ctrl_send_and_recv_internal(out_data, lo, hi, CTRL_RECV_TIMEOUT/CTRL_RECV_RETRIES);
}
catch(const timeout_error &e){
- UHD_MSG(error)
+ UHD_LOGGER_ERROR("USRP2")
<< "Control packet attempt " << i
<< ", sequence number " << _ctrl_seq_num
- << ":\n" << e.what() << std::endl;
+ << ":\n" << e.what() ;
}
}
throw uhd::runtime_error("link dead: timeout waiting for control packet ACK");
diff --git a/host/lib/usrp/usrp2/usrp2_impl.cpp b/host/lib/usrp/usrp2/usrp2_impl.cpp
index ee2434fab..573314339 100644
--- a/host/lib/usrp/usrp2/usrp2_impl.cpp
+++ b/host/lib/usrp/usrp2/usrp2_impl.cpp
@@ -19,7 +19,7 @@
#include "fw_common.h"
#include "apply_corrections.hpp"
#include <uhd/utils/log.hpp>
-#include <uhd/utils/msg.hpp>
+
#include <uhd/exception.hpp>
#include <uhd/transport/if_addrs.hpp>
#include <uhd/transport/udp_zero_copy.hpp>
@@ -29,8 +29,6 @@
#include <uhd/utils/byteswap.hpp>
#include <uhd/utils/safe_call.hpp>
#include <boost/format.hpp>
-#include <boost/foreach.hpp>
-#include <boost/lexical_cast.hpp>
#include <boost/bind.hpp>
#include <boost/assign/list_of.hpp>
#include <boost/asio/ip/address_v4.hpp>
@@ -54,7 +52,7 @@ device_addrs_t usrp2_find(const device_addr_t &hint_){
if (hints.size() > 1){
device_addrs_t found_devices;
std::string error_msg;
- BOOST_FOREACH(const device_addr_t &hint_i, hints){
+ for(const device_addr_t &hint_i: hints){
device_addrs_t found_devices_i = usrp2_find(hint_i);
if (found_devices_i.size() != 1) error_msg += str(boost::format(
"Could not resolve device hint \"%s\" to a single device."
@@ -81,7 +79,7 @@ device_addrs_t usrp2_find(const device_addr_t &hint_){
//if no address was specified, send a broadcast on each interface
if (not hint.has_key("addr")){
- BOOST_FOREACH(const if_addrs_t &if_addrs, get_if_addrs()){
+ for(const if_addrs_t &if_addrs: get_if_addrs()){
//avoid the loopback device
if (if_addrs.inet == asio::ip::address_v4::loopback().to_string()) continue;
@@ -106,7 +104,7 @@ device_addrs_t usrp2_find(const device_addr_t &hint_){
udp_transport = udp_simple::make_broadcast(hint["addr"], BOOST_STRINGIZE(USRP2_UDP_CTRL_PORT));
}
catch(const std::exception &e){
- UHD_MSG(error) << boost::format("Cannot open UDP transport on %s\n%s") % hint["addr"] % e.what() << std::endl;
+ UHD_LOGGER_ERROR("USRP2") << boost::format("Cannot open UDP transport on %s\n%s") % hint["addr"] % e.what() ;
return usrp2_addrs; //dont throw, but return empty address so caller can insert
}
@@ -120,11 +118,11 @@ device_addrs_t usrp2_find(const device_addr_t &hint_){
}
catch(const std::exception &ex)
{
- UHD_MSG(error) << "USRP2 Network discovery error " << ex.what() << std::endl;
+ UHD_LOGGER_ERROR("USRP2") << "USRP2 Network discovery error " << ex.what() ;
}
catch(...)
{
- UHD_MSG(error) << "USRP2 Network discovery unknown error " << std::endl;
+ UHD_LOGGER_ERROR("USRP2") << "USRP2 Network discovery unknown error " ;
}
//loop and recieve until the timeout
@@ -284,7 +282,7 @@ static zero_copy_if::sptr make_xport(
//only copy hints that contain the filter word
device_addr_t filtered_hints;
- BOOST_FOREACH(const std::string &key, hints.keys()){
+ for(const std::string &key: hints.keys()){
if (key.find(filter) == std::string::npos) continue;
filtered_hints[key] = hints[key];
}
@@ -317,9 +315,10 @@ static zero_copy_if::sptr make_xport(
* Structors
**********************************************************************/
usrp2_impl::usrp2_impl(const device_addr_t &_device_addr) :
- device_addr(_device_addr)
+ device_addr(_device_addr),
+ _pirate_task_exit(false)
{
- UHD_MSG(status) << "Opening a USRP2/N-Series device..." << std::endl;
+ UHD_LOGGER_INFO("USRP2") << "Opening a USRP2/N-Series device...";
//setup the dsp transport hints (default to a large recv buff)
if (not device_addr.has_key("recv_buff_size")){
@@ -334,7 +333,7 @@ usrp2_impl::usrp2_impl(const device_addr_t &_device_addr) :
if (not device_addr.has_key("send_buff_size")){
//The buffer should be the size of the SRAM on the device,
//because we will never commit more than the SRAM can hold.
- device_addr["send_buff_size"] = boost::lexical_cast<std::string>(USRP2_SRAM_BYTES);
+ device_addr["send_buff_size"] = std::to_string(USRP2_SRAM_BYTES);
}
device_addrs_t device_args = separate_device_addr(device_addr);
@@ -353,11 +352,11 @@ usrp2_impl::usrp2_impl(const device_addr_t &_device_addr) :
mtu.send_mtu = std::min(mtu.send_mtu, mtu_i.send_mtu);
}
- device_addr["recv_frame_size"] = boost::lexical_cast<std::string>(mtu.recv_mtu);
- device_addr["send_frame_size"] = boost::lexical_cast<std::string>(mtu.send_mtu);
+ device_addr["recv_frame_size"] = std::to_string(mtu.recv_mtu);
+ device_addr["send_frame_size"] = std::to_string(mtu.send_mtu);
- UHD_MSG(status) << boost::format("Current recv frame size: %d bytes") % mtu.recv_mtu << std::endl;
- UHD_MSG(status) << boost::format("Current send frame size: %d bytes") % mtu.send_mtu << std::endl;
+ UHD_LOGGER_INFO("USRP2") << boost::format("Current recv frame size: %d bytes") % mtu.recv_mtu;
+ UHD_LOGGER_INFO("USRP2") << boost::format("Current send frame size: %d bytes") % mtu.send_mtu;
}
catch(const uhd::not_implemented_error &){
//just ignore this error, makes older fw work...
@@ -375,7 +374,7 @@ usrp2_impl::usrp2_impl(const device_addr_t &_device_addr) :
for (size_t mbi = 0; mbi < device_args.size(); mbi++){
const device_addr_t device_args_i = device_args[mbi];
- const std::string mb = boost::lexical_cast<std::string>(mbi);
+ const std::string mb = std::to_string(mbi);
const std::string addr = device_args_i["addr"];
const fs_path mb_path = "/mboards/" + mb;
@@ -412,7 +411,7 @@ usrp2_impl::usrp2_impl(const device_addr_t &_device_addr) :
// handle case where the MB EEPROM is not programmed
if (fpga_major == USRP2_FPGA_COMPAT_NUM or fpga_major == N200_FPGA_COMPAT_NUM)
{
- UHD_MSG(warning) << "Unable to identify device - assuming USRP2/N-Series device" << std::endl;
+ UHD_LOGGER_WARNING("USRP2") << "Unable to identify device - assuming USRP2/N-Series device" ;
expected_fpga_compat_num = fpga_major;
}
}
@@ -433,19 +432,19 @@ usrp2_impl::usrp2_impl(const device_addr_t &_device_addr) :
////////////////////////////////////////////////////////////////
// construct transports for RX and TX DSPs
////////////////////////////////////////////////////////////////
- UHD_LOG << "Making transport for RX DSP0..." << std::endl;
+ UHD_LOGGER_TRACE("USRP2") << "Making transport for RX DSP0..." ;
_mbc[mb].rx_dsp_xports.push_back(make_xport(
addr, BOOST_STRINGIZE(USRP2_UDP_RX_DSP0_PORT), device_args_i, "recv"
));
- UHD_LOG << "Making transport for RX DSP1..." << std::endl;
+ UHD_LOGGER_TRACE("USRP2") << "Making transport for RX DSP1..." ;
_mbc[mb].rx_dsp_xports.push_back(make_xport(
addr, BOOST_STRINGIZE(USRP2_UDP_RX_DSP1_PORT), device_args_i, "recv"
));
- UHD_LOG << "Making transport for TX DSP0..." << std::endl;
+ UHD_LOGGER_TRACE("USRP2") << "Making transport for TX DSP0..." ;
_mbc[mb].tx_dsp_xport = make_xport(
addr, BOOST_STRINGIZE(USRP2_UDP_TX_DSP0_PORT), device_args_i, "send"
);
- UHD_LOG << "Making transport for Control..." << std::endl;
+ UHD_LOGGER_TRACE("USRP2") << "Making transport for Control..." ;
_mbc[mb].fifo_ctrl_xport = make_xport(
addr, BOOST_STRINGIZE(USRP2_UDP_FIFO_CRTL_PORT), device_addr_t(), ""
);
@@ -536,18 +535,18 @@ usrp2_impl::usrp2_impl(const device_addr_t &_device_addr) :
//otherwise if not disabled, look for the internal GPSDO
if (_mbc[mb].iface->peekfw(U2_FW_REG_HAS_GPSDO) != dont_look_for_gpsdo)
{
- UHD_MSG(status) << "Detecting internal GPSDO.... " << std::flush;
+ UHD_LOGGER_INFO("USRP2") << "Detecting internal GPSDO.... ";
try{
_mbc[mb].gps = gps_ctrl::make(udp_simple::make_uart(udp_simple::make_connected(
addr, BOOST_STRINGIZE(USRP2_UDP_UART_GPS_PORT)
)));
}
catch(std::exception &e){
- UHD_MSG(error) << "An error occurred making GPSDO control: " << e.what() << std::endl;
+ UHD_LOGGER_ERROR("USRP2") << "An error occurred making GPSDO control: " << e.what() ;
}
if (_mbc[mb].gps and _mbc[mb].gps->gps_detected())
{
- BOOST_FOREACH(const std::string &name, _mbc[mb].gps->get_sensors())
+ for(const std::string &name: _mbc[mb].gps->get_sensors())
{
_tree->create<sensor_value_t>(mb_path / "sensors" / name)
.set_publisher(boost::bind(&gps_ctrl::get_sensor, _mbc[mb].gps, name));
@@ -743,12 +742,12 @@ usrp2_impl::usrp2_impl(const device_addr_t &_device_addr) :
//bind frontend corrections to the dboard freq props
const fs_path db_tx_fe_path = mb_path / "dboards" / "A" / "tx_frontends";
- BOOST_FOREACH(const std::string &name, _tree->list(db_tx_fe_path)){
+ for(const std::string &name: _tree->list(db_tx_fe_path)){
_tree->access<double>(db_tx_fe_path / name / "freq" / "value")
.add_coerced_subscriber(boost::bind(&usrp2_impl::set_tx_fe_corrections, this, mb, _1));
}
const fs_path db_rx_fe_path = mb_path / "dboards" / "A" / "rx_frontends";
- BOOST_FOREACH(const std::string &name, _tree->list(db_rx_fe_path)){
+ for(const std::string &name: _tree->list(db_rx_fe_path)){
_tree->access<double>(db_rx_fe_path / name / "freq" / "value")
.add_coerced_subscriber(boost::bind(&usrp2_impl::set_rx_fe_corrections, this, mb, _1));
}
@@ -759,14 +758,14 @@ usrp2_impl::usrp2_impl(const device_addr_t &_device_addr) :
//do some post-init tasks
this->update_rates();
- BOOST_FOREACH(const std::string &mb, _mbc.keys()){
+ for(const std::string &mb: _mbc.keys()){
fs_path root = "/mboards/" + mb;
//reset cordic rates and their properties to zero
- BOOST_FOREACH(const std::string &name, _tree->list(root / "rx_dsps")){
+ for(const std::string &name: _tree->list(root / "rx_dsps")){
_tree->access<double>(root / "rx_dsps" / name / "freq" / "value").set(0.0);
}
- BOOST_FOREACH(const std::string &name, _tree->list(root / "tx_dsps")){
+ for(const std::string &name: _tree->list(root / "tx_dsps")){
_tree->access<double>(root / "tx_dsps" / name / "freq" / "value").set(0.0);
}
@@ -778,7 +777,7 @@ usrp2_impl::usrp2_impl(const device_addr_t &_device_addr) :
//GPS installed: use external ref, time, and init time spec
if (_mbc[mb].gps and _mbc[mb].gps->gps_detected()){
_mbc[mb].time64->enable_gpsdo();
- UHD_MSG(status) << "Setting references to the internal GPSDO" << std::endl;
+ UHD_LOGGER_INFO("USRP2") << "Setting references to the internal GPSDO" ;
_tree->access<std::string>(root / "time_source/value").set("gpsdo");
_tree->access<std::string>(root / "clock_source/value").set("gpsdo");
}
@@ -787,7 +786,8 @@ usrp2_impl::usrp2_impl(const device_addr_t &_device_addr) :
}
usrp2_impl::~usrp2_impl(void){UHD_SAFE_CALL(
- BOOST_FOREACH(const std::string &mb, _mbc.keys()){
+ _pirate_task_exit = true;
+ for(const std::string &mb: _mbc.keys()){
_mbc[mb].tx_dsp->set_updates(0, 0);
}
)}
diff --git a/host/lib/usrp/usrp2/usrp2_impl.hpp b/host/lib/usrp/usrp2/usrp2_impl.hpp
index 790daa749..087a4f8e9 100644
--- a/host/lib/usrp/usrp2/usrp2_impl.hpp
+++ b/host/lib/usrp/usrp2/usrp2_impl.hpp
@@ -46,6 +46,7 @@
#include <uhd/usrp/dboard_manager.hpp>
#include <uhd/usrp/subdev_spec.hpp>
#include <boost/weak_ptr.hpp>
+#include <atomic>
static const double USRP2_LINK_RATE_BPS = 1000e6/8;
static const double mimo_clock_delay_usrp2_rev4 = 4.18e-9;
@@ -120,6 +121,7 @@ private:
//io impl methods and members
uhd::device_addr_t device_addr;
UHD_PIMPL_DECL(io_impl) _io_impl;
+ std::atomic<bool> _pirate_task_exit;
void io_init(void);
void update_tick_rate(const double rate);
void update_rx_samp_rate(const std::string &, const size_t, const double rate);