aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib
diff options
context:
space:
mode:
Diffstat (limited to 'host/lib')
-rw-r--r--host/lib/usrp/b200/b200_impl.hpp5
-rw-r--r--host/lib/usrp/b200/b200_io_impl.cpp4
-rw-r--r--host/lib/usrp/x300/x300_impl.cpp15
3 files changed, 19 insertions, 5 deletions
diff --git a/host/lib/usrp/b200/b200_impl.hpp b/host/lib/usrp/b200/b200_impl.hpp
index 8e23ea6a0..22e962bd5 100644
--- a/host/lib/usrp/b200/b200_impl.hpp
+++ b/host/lib/usrp/b200/b200_impl.hpp
@@ -120,6 +120,11 @@ private:
uhd::transport::zero_copy_if::sptr _ctrl_transport;
uhd::usrp::recv_packet_demuxer_3000::sptr _demux;
+ boost::weak_ptr<uhd::rx_streamer> _rx_streamer;
+ boost::weak_ptr<uhd::tx_streamer> _tx_streamer;
+
+ boost::mutex _transport_setup_mutex;
+
//async ctrl + msgs
uhd::msg_task::sptr _async_task;
typedef uhd::transport::bounded_buffer<uhd::async_metadata_t> async_md_type;
diff --git a/host/lib/usrp/b200/b200_io_impl.cpp b/host/lib/usrp/b200/b200_io_impl.cpp
index cb32c610a..60b925517 100644
--- a/host/lib/usrp/b200/b200_io_impl.cpp
+++ b/host/lib/usrp/b200/b200_io_impl.cpp
@@ -364,6 +364,8 @@ boost::optional<uhd::msg_task::msg_type_t> b200_impl::handle_async_task(
**********************************************************************/
rx_streamer::sptr b200_impl::get_rx_stream(const uhd::stream_args_t &args_)
{
+ boost::mutex::scoped_lock lock(_transport_setup_mutex);
+
stream_args_t args = args_;
//setup defaults for unspecified values
@@ -472,6 +474,8 @@ void b200_impl::handle_overflow(const size_t radio_index)
**********************************************************************/
tx_streamer::sptr b200_impl::get_tx_stream(const uhd::stream_args_t &args_)
{
+ boost::mutex::scoped_lock lock(_transport_setup_mutex);
+
stream_args_t args = args_;
//setup defaults for unspecified values
diff --git a/host/lib/usrp/x300/x300_impl.cpp b/host/lib/usrp/x300/x300_impl.cpp
index 5520cc82e..a879ae02d 100644
--- a/host/lib/usrp/x300/x300_impl.cpp
+++ b/host/lib/usrp/x300/x300_impl.cpp
@@ -1689,11 +1689,16 @@ void x300_impl::check_fpga_compat(const fs_path &mb_path, wb_iface::sptr iface)
if (compat_major != X300_FPGA_COMPAT_MAJOR)
{
throw uhd::runtime_error(str(boost::format(
- "Expected FPGA compatibility number 0x%x, but got 0x%x.%x:\n"
- "The FPGA build is not compatible with the host code build.\n"
- "%s"
- ) % int(X300_FPGA_COMPAT_MAJOR) % compat_major % compat_minor
- % print_images_error()));
+ "Expected FPGA compatibility number %d, but got %d:\n"
+ "The FPGA image on your device is not compatible with this host code build.\n"
+ "Download the appropriate FPGA images for this version of UHD.\n"
+ "%s\n\n"
+ "Then burn a new image to the on-board flash storage of your\n"
+ "USRP X3xx device using the burner utility. \n\n"
+ "For more information, refer to the UHD manual:\n\n"
+ " http://files.ettus.com/manual/page_usrp_x3x0.html#x3x0_flash"
+ ) % int(X300_FPGA_COMPAT_MAJOR) % compat_major
+ % print_images_error()));
}
_tree->create<std::string>(mb_path / "fpga_version").set(str(boost::format("%u.%u")
% compat_major % compat_minor));