diff options
| -rw-r--r-- | CHANGELOG | 26 | ||||
| m--------- | fpga-src | 0 | ||||
| -rw-r--r-- | host/CMakeLists.txt | 4 | ||||
| -rw-r--r-- | host/include/uhd/rfnoc/node_ctrl_base.hpp | 28 | ||||
| -rw-r--r-- | host/include/uhd/rfnoc/node_ctrl_base.ipp | 7 | ||||
| -rw-r--r-- | host/include/uhd/rfnoc/sink_node_ctrl.hpp | 9 | ||||
| -rw-r--r-- | host/include/uhd/rfnoc/source_node_ctrl.hpp | 9 | ||||
| -rw-r--r-- | host/lib/rfnoc/tick_node_ctrl.cpp | 4 | ||||
| -rw-r--r-- | host/lib/usrp/b200/b200_impl.cpp | 5 | ||||
| -rw-r--r-- | host/lib/usrp/e300/e300_remote_codec_ctrl.cpp | 4 | 
10 files changed, 65 insertions, 31 deletions
@@ -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)      {  | 
