aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG26
m---------fpga-src0
-rw-r--r--host/CMakeLists.txt4
-rw-r--r--host/include/uhd/rfnoc/node_ctrl_base.hpp28
-rw-r--r--host/include/uhd/rfnoc/node_ctrl_base.ipp7
-rw-r--r--host/include/uhd/rfnoc/sink_node_ctrl.hpp9
-rw-r--r--host/include/uhd/rfnoc/source_node_ctrl.hpp9
-rw-r--r--host/lib/rfnoc/tick_node_ctrl.cpp4
-rw-r--r--host/lib/usrp/b200/b200_impl.cpp5
-rw-r--r--host/lib/usrp/e300/e300_remote_codec_ctrl.cpp4
10 files changed, 65 insertions, 31 deletions
diff --git a/CHANGELOG b/CHANGELOG
index a791ce365..1e1469f3f 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,32 @@
Change Log for Releases
==============================
+## 003.010.001.000
+
+- Fixed multiple compiler warnings
+- Multiple documentation fixes
+- X300: RX strobe lines are always in sync on device initialization. DB EEPROM
+ now properly written. ignore-cal-file no longer ignored. Fixed case where too
+ large recv_frame_size settings could break things. Reduced ZPU clock speed
+ (helps FPGA timing). Added area constraints for AXI interconnect. Improved
+ halfband scaling in rx_frontend.
+- B2xx: Clear sequence numbers in idle state.
+- RFNoC: Nodes disconnect on destruction. Fixed setting of correct bits on
+ sr_error_policy. DDC does no longer clear timed commands on EOB. DUC fixed
+ timed CORDIC tuning. Enable Noc-Shell response FIFOs (fixes simultaneous
+ commands on multiple channels).
+- UBX: Changed default performance parameters
+- TwinRX: LEDs properly light up depending on channels. Fixed issue of multiple
+ (redundant) writes.
+- XCVR: Query dboard clock instead of DAC clock. Helps in X3x0s.
+- GPS: Fixed message for case when no GPS is present. Fixed multiple GPS-related
+ issues.
+- Converters: Fixed floating point rounding error in tests.
+- Utils: uhd_usrp_probe can now query vectors
+- Fixed issue that prevented soft_regs working on 32-bit systems
+- Tools: Merged dissectors into common directory.
+- CMake: -Og is the default now for gcc-based Debug builds.
+
## 003.010.000.000
- Changed version string to quadruplets (Major.API.ABI.Patch)
- Minimum dependencies bumped for gcc, Boost, CMake, clang and Python.
diff --git a/fpga-src b/fpga-src
-Subproject 3cf54867b7acb73d0fd885f3ede13739cbc231a
+Subproject 93808e8d5b182c0eb00aabd4ca1030cf46777ac
diff --git a/host/CMakeLists.txt b/host/CMakeLists.txt
index 0c1c44844..1d3a6f5fc 100644
--- a/host/CMakeLists.txt
+++ b/host/CMakeLists.txt
@@ -338,8 +338,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 "326cad67a75e60f365c3249f9fb3626a")
-SET(UHD_IMAGES_DOWNLOAD_SRC "uhd-images_003.010.000.000-84-g006c321c.zip")
+SET(UHD_IMAGES_MD5SUM "586c6f48f65ecfaeec3403a8b2780d72")
+SET(UHD_IMAGES_DOWNLOAD_SRC "uhd-images_003.010.001.000-rc1.zip")
#}}}
########################################################################
diff --git a/host/include/uhd/rfnoc/node_ctrl_base.hpp b/host/include/uhd/rfnoc/node_ctrl_base.hpp
index 071de803c..bf799d2c2 100644
--- a/host/include/uhd/rfnoc/node_ctrl_base.hpp
+++ b/host/include/uhd/rfnoc/node_ctrl_base.hpp
@@ -119,17 +119,17 @@ public:
* Search only goes downstream.
*/
template <typename T>
- UHD_INLINE std::vector< boost::shared_ptr<T> > find_downstream_node()
+ UHD_INLINE std::vector< boost::shared_ptr<T> > find_downstream_node(bool active_only = false)
{
- return _find_child_node<T, true>();
+ return _find_child_node<T, true>(active_only);
}
/*! Same as find_downstream_node(), but only search upstream.
*/
template <typename T>
- UHD_INLINE std::vector< boost::shared_ptr<T> > find_upstream_node()
+ UHD_INLINE std::vector< boost::shared_ptr<T> > find_upstream_node(bool active_only = false)
{
- return _find_child_node<T, false>();
+ return _find_child_node<T, false>(active_only);
}
/*! Checks if downstream nodes share a common, unique property.
@@ -186,6 +186,24 @@ protected:
//! List of downstream nodes
node_map_t _downstream_nodes;
+ /*! For every output port, store rx streamer activity.
+ *
+ * If _rx_streamer_active[0] == true, this means that an active rx
+ * streamer is operating on port 0. If it is false, or if the entry
+ * does not exist, there is no streamer.
+ * Values are toggled by set_rx_streamer().
+ */
+ std::map<size_t, bool> _rx_streamer_active;
+
+ /*! For every input port, store tx streamer activity.
+ *
+ * If _tx_streamer_active[0] == true, this means that an active tx
+ * streamer is operating on port 0. If it is false, or if the entry
+ * does not exist, there is no streamer.
+ * Values are toggled by set_tx_streamer().
+ */
+ std::map<size_t, bool> _tx_streamer_active;
+
/***********************************************************************
* Connections
**********************************************************************/
@@ -221,7 +239,7 @@ private:
* \param downstream Set to true if search goes downstream, false for upstream.
*/
template <typename T, bool downstream>
- std::vector< boost::shared_ptr<T> > _find_child_node();
+ std::vector< boost::shared_ptr<T> > _find_child_node(bool active_only = false);
/*! Implements the search algorithm for find_downstream_unique_property() and
* find_upstream_unique_property().
diff --git a/host/include/uhd/rfnoc/node_ctrl_base.ipp b/host/include/uhd/rfnoc/node_ctrl_base.ipp
index 136354cd2..4ab25c597 100644
--- a/host/include/uhd/rfnoc/node_ctrl_base.ipp
+++ b/host/include/uhd/rfnoc/node_ctrl_base.ipp
@@ -29,7 +29,7 @@ namespace uhd {
namespace rfnoc {
template <typename T, bool downstream>
- std::vector< boost::shared_ptr<T> > node_ctrl_base::_find_child_node()
+ std::vector< boost::shared_ptr<T> > node_ctrl_base::_find_child_node(bool active_only)
{
typedef boost::shared_ptr<T> T_sptr;
static const size_t MAX_ITER = 20;
@@ -57,6 +57,11 @@ namespace uhd {
it != all_next_nodes.end();
++it
) {
+ size_t our_port = it->first;
+ if (active_only
+ and not (downstream ? _tx_streamer_active[our_port] : _tx_streamer_active[our_port] )) {
+ continue;
+ }
sptr one_next_node = it->second.lock();
if (not one_next_node or explored.count(one_next_node)) {
continue;
diff --git a/host/include/uhd/rfnoc/sink_node_ctrl.hpp b/host/include/uhd/rfnoc/sink_node_ctrl.hpp
index 5142a269e..90d617bb7 100644
--- a/host/include/uhd/rfnoc/sink_node_ctrl.hpp
+++ b/host/include/uhd/rfnoc/sink_node_ctrl.hpp
@@ -75,15 +75,6 @@ public:
protected:
- /*! For every input port, store tx streamer activity.
- *
- * If _tx_streamer_active[0] == true, this means that an active tx
- * streamer is operating on port 0. If it is false, or if the entry
- * does not exist, there is no streamer.
- * Values are toggled by set_tx_streamer().
- */
- std::map<size_t, bool> _tx_streamer_active;
-
/*! Ask for a port number to connect an upstream block to.
*
* Typically, this will be overridden for custom behaviour.
diff --git a/host/include/uhd/rfnoc/source_node_ctrl.hpp b/host/include/uhd/rfnoc/source_node_ctrl.hpp
index a351f6c8e..cacbcbb47 100644
--- a/host/include/uhd/rfnoc/source_node_ctrl.hpp
+++ b/host/include/uhd/rfnoc/source_node_ctrl.hpp
@@ -83,15 +83,6 @@ public:
protected:
- /*! For every output port, store rx streamer activity.
- *
- * If _rx_streamer_active[0] == true, this means that an active rx
- * streamer is operating on port 0. If it is false, or if the entry
- * does not exist, there is no streamer.
- * Values are toggled by set_rx_streamer().
- */
- std::map<size_t, bool> _rx_streamer_active;
-
/*! Ask for a port number to connect a downstream block to.
*
* See sink_node_ctrl::_request_input_port(). This is the same
diff --git a/host/lib/rfnoc/tick_node_ctrl.cpp b/host/lib/rfnoc/tick_node_ctrl.cpp
index fa5c7b6a1..5548194ae 100644
--- a/host/lib/rfnoc/tick_node_ctrl.cpp
+++ b/host/lib/rfnoc/tick_node_ctrl.cpp
@@ -37,9 +37,9 @@ double tick_node_ctrl::get_tick_rate(
std::set< node_ctrl_base::sptr > explored_nodes(_explored_nodes);
explored_nodes.insert(shared_from_this());
// Here, we need all up- and downstream nodes
- std::vector< sptr > neighbouring_tick_nodes = find_downstream_node<tick_node_ctrl>();
+ std::vector< sptr > neighbouring_tick_nodes = find_downstream_node<tick_node_ctrl>(true);
{
- std::vector< sptr > upstream_neighbouring_tick_nodes = find_upstream_node<tick_node_ctrl>();
+ std::vector< sptr > upstream_neighbouring_tick_nodes = find_upstream_node<tick_node_ctrl>(true);
neighbouring_tick_nodes.insert(
neighbouring_tick_nodes.end(),
upstream_neighbouring_tick_nodes.begin(),
diff --git a/host/lib/usrp/b200/b200_impl.cpp b/host/lib/usrp/b200/b200_impl.cpp
index 33f0850eb..9bd2799c2 100644
--- a/host/lib/usrp/b200/b200_impl.cpp
+++ b/host/lib/usrp/b200/b200_impl.cpp
@@ -1041,8 +1041,11 @@ void b200_impl::update_clock_source(const std::string &source)
}
_adf4001_iface->set_lock_to_ext_ref(true);
}
- else if (_gps and source == "gpsdo")
+ else if (source == "gpsdo")
{
+ if (not _gps or not _gps->gps_detected()) {
+ throw uhd::key_error("update_clock_source: gpsdo selected, but no gpsdo detected!");
+ }
if (_gpio_state.ref_sel != 1)
{
_gpio_state.ref_sel = 1;
diff --git a/host/lib/usrp/e300/e300_remote_codec_ctrl.cpp b/host/lib/usrp/e300/e300_remote_codec_ctrl.cpp
index cb2583b1b..6ec39131d 100644
--- a/host/lib/usrp/e300/e300_remote_codec_ctrl.cpp
+++ b/host/lib/usrp/e300/e300_remote_codec_ctrl.cpp
@@ -36,8 +36,8 @@ public:
{
}
- void set_timed_spi(uhd::spi_iface::sptr spi_iface, boost::uint32_t slave_num) {};
- void set_safe_spi(uhd::spi_iface::sptr spi_iface, boost::uint32_t slave_num) {};
+ void set_timed_spi(uhd::spi_iface::sptr, boost::uint32_t ) {};
+ void set_safe_spi(uhd::spi_iface::sptr, boost::uint32_t ) {};
double set_gain(const std::string &which, const double value)
{