diff options
Diffstat (limited to 'host')
-rw-r--r-- | host/CMakeLists.txt | 6 | ||||
-rw-r--r-- | host/lib/usrp/b200/b200_io_impl.cpp | 4 | ||||
-rw-r--r-- | host/lib/usrp/common/max287x.hpp | 1 | ||||
-rw-r--r-- | host/lib/usrp/usrp2/fw_common.h | 3 | ||||
-rw-r--r-- | host/lib/usrp/usrp2/usrp2_impl.cpp | 25 | ||||
-rw-r--r-- | host/utils/CMakeLists.txt | 2 | ||||
-rw-r--r-- | host/utils/uhd_usrp_probe.cpp | 21 | ||||
-rw-r--r-- | host/utils/usrp_x3xx_fpga_burner.cpp | 4 |
8 files changed, 51 insertions, 15 deletions
diff --git a/host/CMakeLists.txt b/host/CMakeLists.txt index 9358b1156..beb4d396f 100644 --- a/host/CMakeLists.txt +++ b/host/CMakeLists.txt @@ -24,7 +24,7 @@ # Project setup ######################################################################## CMAKE_MINIMUM_REQUIRED(VERSION 2.6) -PROJECT(UHD CXX) +PROJECT(UHD CXX C) ENABLE_TESTING() #make sure our local CMake Modules path comes first @@ -268,8 +268,8 @@ UHD_INSTALL(FILES #{{{IMG_SECTION # This section is written automatically by /images/create_imgs_package.py # Any manual changes in here will be overwritten. -SET(UHD_IMAGES_MD5SUM "8522b02386f5fe0bb51baa3ba0001ef0") -SET(UHD_IMAGES_DOWNLOAD_SRC "uhd-images_003.008.003-rc1.zip") +SET(UHD_IMAGES_MD5SUM "57c06338de0504f296a2431762725683") +SET(UHD_IMAGES_DOWNLOAD_SRC "uhd-images_003.008.003-release.zip") #}}} ######################################################################## diff --git a/host/lib/usrp/b200/b200_io_impl.cpp b/host/lib/usrp/b200/b200_io_impl.cpp index cf5ba7a11..3e156f9bb 100644 --- a/host/lib/usrp/b200/b200_io_impl.cpp +++ b/host/lib/usrp/b200/b200_io_impl.cpp @@ -194,7 +194,7 @@ boost::optional<uhd::msg_task::msg_type_t> b200_impl::handle_async_task( { managed_recv_buffer::sptr buff = xport->get_recv_buff(); if (not buff or buff->size() < 8) - return NULL; + return uhd::msg_task::msg_type_t(0, uhd::msg_task::msg_payload_t()); const boost::uint32_t sid = uhd::wtohx(buff->cast<const boost::uint32_t *>()[1]); switch (sid) { @@ -258,7 +258,7 @@ boost::optional<uhd::msg_task::msg_type_t> b200_impl::handle_async_task( default: UHD_MSG(error) << "Got a ctrl packet with unknown SID " << sid << std::endl; } - return NULL; + return uhd::msg_task::msg_type_t(0, uhd::msg_task::msg_payload_t()); } /*********************************************************************** diff --git a/host/lib/usrp/common/max287x.hpp b/host/lib/usrp/common/max287x.hpp index aa80600f7..d084dcfbe 100644 --- a/host/lib/usrp/common/max287x.hpp +++ b/host/lib/usrp/common/max287x.hpp @@ -25,6 +25,7 @@ #include <boost/assign.hpp> #include <boost/function.hpp> #include <boost/thread.hpp> +#include <boost/math/special_functions/round.hpp> #include <vector> #include "max2870_regs.hpp" #include "max2871_regs.hpp" diff --git a/host/lib/usrp/usrp2/fw_common.h b/host/lib/usrp/usrp2/fw_common.h index cfaee0ddc..81dd3523e 100644 --- a/host/lib/usrp/usrp2/fw_common.h +++ b/host/lib/usrp/usrp2/fw_common.h @@ -30,7 +30,8 @@ extern "C" { #endif //fpga and firmware compatibility numbers -#define USRP2_FPGA_COMPAT_NUM 11 +#define USRP2_FPGA_COMPAT_NUM 10 +#define N200_FPGA_COMPAT_NUM 11 #define USRP2_FW_COMPAT_NUM 12 #define USRP2_FW_VER_MINOR 4 diff --git a/host/lib/usrp/usrp2/usrp2_impl.cpp b/host/lib/usrp/usrp2/usrp2_impl.cpp index 50b8431a1..1acc1dad3 100644 --- a/host/lib/usrp/usrp2/usrp2_impl.cpp +++ b/host/lib/usrp/usrp2/usrp2_impl.cpp @@ -395,14 +395,35 @@ usrp2_impl::usrp2_impl(const device_addr_t &_device_addr) : fpga_major = fpga_minor; fpga_minor = 0; } - if (fpga_major != USRP2_FPGA_COMPAT_NUM){ + int expected_fpga_compat_num = std::min(USRP2_FPGA_COMPAT_NUM, N200_FPGA_COMPAT_NUM); + switch (_mbc[mb].iface->get_rev()) + { + case usrp2_iface::USRP2_REV3: + case usrp2_iface::USRP2_REV4: + expected_fpga_compat_num = USRP2_FPGA_COMPAT_NUM; + break; + case usrp2_iface::USRP_N200: + case usrp2_iface::USRP_N200_R4: + case usrp2_iface::USRP_N210: + case usrp2_iface::USRP_N210_R4: + expected_fpga_compat_num = N200_FPGA_COMPAT_NUM; + break; + default: + // 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; + expected_fpga_compat_num = fpga_major; + } + } + if (fpga_major != expected_fpga_compat_num){ throw uhd::runtime_error(str(boost::format( "\nPlease update the firmware and FPGA images for your device.\n" "See the application notes for USRP2/N-Series for instructions.\n" "Expected FPGA compatibility number %d, but got %d:\n" "The FPGA build is not compatible with the host code build.\n" "%s\n" - ) % int(USRP2_FPGA_COMPAT_NUM) % fpga_major % _mbc[mb].iface->images_warn_help_message())); + ) % expected_fpga_compat_num % fpga_major % _mbc[mb].iface->images_warn_help_message())); } _tree->create<std::string>(mb_path / "fpga_version").set(str(boost::format("%u.%u") % fpga_major % fpga_minor)); diff --git a/host/utils/CMakeLists.txt b/host/utils/CMakeLists.txt index ed8640187..e24b417c1 100644 --- a/host/utils/CMakeLists.txt +++ b/host/utils/CMakeLists.txt @@ -15,8 +15,6 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. # -SET(CMAKE_C_COMPILE_OBJECT ${CMAKE_CXX_COMPILE_OBJECT}) - ######################################################################## # Utilities that get installed into the runtime path ######################################################################## diff --git a/host/utils/uhd_usrp_probe.cpp b/host/utils/uhd_usrp_probe.cpp index a03646cc0..f8a8b5665 100644 --- a/host/utils/uhd_usrp_probe.cpp +++ b/host/utils/uhd_usrp_probe.cpp @@ -192,7 +192,10 @@ int UHD_SAFE_MAIN(int argc, char *argv[]){ ("version", "print the version string and exit") ("args", po::value<std::string>()->default_value(""), "device address args") ("tree", "specify to print a complete property tree") - ("string", po::value<std::string>(), "query a string value from the properties tree") + ("string", po::value<std::string>(), "query a string value from the property tree") + ("double", po::value<std::string>(), "query a double precision floating point value from the property tree") + ("int", po::value<std::string>(), "query a integer value from the property tree") + ("range", po::value<std::string>(), "query a range (gain, bandwidth, frequency, ...) from the property tree") ("init-only", "skip all queries, only initialize device") ; @@ -219,6 +222,22 @@ int UHD_SAFE_MAIN(int argc, char *argv[]){ return EXIT_SUCCESS; } + if (vm.count("double")){ + std::cout << tree->access<double>(vm["double"].as<std::string>()).get() << std::endl; + return EXIT_SUCCESS; + } + + if (vm.count("int")){ + std::cout << tree->access<int>(vm["int"].as<std::string>()).get() << std::endl; + return EXIT_SUCCESS; + } + + if (vm.count("range")){ + meta_range_t range = tree->access<meta_range_t>(vm["range"].as<std::string>()).get(); + std::cout << boost::format("%.1f:%.1f:%.1f") % range.start() % range.step() % range.stop() << std::endl; + return EXIT_SUCCESS; + } + if (vm.count("tree") != 0) print_tree("/", tree); else if (not vm.count("init-only")) std::cout << make_border(get_device_pp_string(tree)) << std::endl; diff --git a/host/utils/usrp_x3xx_fpga_burner.cpp b/host/utils/usrp_x3xx_fpga_burner.cpp index e32e4d636..3c6225531 100644 --- a/host/utils/usrp_x3xx_fpga_burner.cpp +++ b/host/utils/usrp_x3xx_fpga_burner.cpp @@ -49,13 +49,9 @@ #include <uhd/utils/safe_main.hpp> #include <uhd/utils/safe_call.hpp> -#ifdef _MSC_VER extern "C" { -#endif #include "cdecode.h" -#ifdef _MSC_VER } -#endif #define X300_FPGA_BIN_SIZE_BYTES 15877916 #define X300_FPGA_BIT_MAX_SIZE_BYTES 15878022 |