diff options
Diffstat (limited to 'host/lib/usrp')
-rw-r--r-- | host/lib/usrp/usrp2/usrp2_impl.cpp | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/host/lib/usrp/usrp2/usrp2_impl.cpp b/host/lib/usrp/usrp2/usrp2_impl.cpp index 4079357f9..2b974fb9b 100644 --- a/host/lib/usrp/usrp2/usrp2_impl.cpp +++ b/host/lib/usrp/usrp2/usrp2_impl.cpp @@ -24,6 +24,7 @@ #include <boost/assign/list_of.hpp> #include <boost/format.hpp> #include <boost/foreach.hpp> +#include <boost/lexical_cast.hpp> #include <boost/bind.hpp> #include <boost/asio.hpp> //htonl and ntohl #include <iostream> @@ -50,7 +51,7 @@ uhd::device_addrs_t usrp2::find(const device_addr_t &hint){ if (if_addrs.inet == asio::ip::address_v4::loopback().to_string()) continue; //create a new hint with this broadcast address - device_addr_t new_hint = hint; + device_addr_t new_hint; new_hint["addr"] = if_addrs.bcast; //call discover with the new hint and append results @@ -117,6 +118,26 @@ device::sptr usrp2::make(const device_addr_t &device_addr){ device_addr["addr"], num2str(USRP2_UDP_DATA_PORT) ); + //resize the recv data transport buffers + if (device_addr.has_key("recv_buff_size")){ + size_t num_byes = size_t(boost::lexical_cast<double>(device_addr["recv_buff_size"])); + size_t actual_bytes = data_transport->resize_recv_buff_size(num_byes); + if (num_byes != actual_bytes) std::cout << boost::format( + "Target recv buffer size: %d\n" + "Actual recv byffer size: %d" + ) % num_byes % actual_bytes << std::endl; + } + + //resize the send data transport buffers + if (device_addr.has_key("send_buff_size")){ + size_t num_byes = size_t(boost::lexical_cast<double>(device_addr["send_buff_size"])); + size_t actual_bytes = data_transport->resize_send_buff_size(num_byes); + if (num_byes != actual_bytes) std::cout << boost::format( + "Target send buffer size: %d\n" + "Actual send byffer size: %d" + ) % num_byes % actual_bytes << std::endl; + } + //create the usrp2 implementation guts return device::sptr( new usrp2_impl(ctrl_transport, data_transport) |