Commit graph

1286 commits

Author SHA1 Message Date
Sam James
3acf784e98 Fix build with GCC 13 (add missing <cstdint> include)
GCC 13 (as usual for new compiler releases) shuffles around some
internal includes and so <cstdint> is no longer transitively included.

Explicitly include <cstdint> for uint8_t.

```
/var/tmp/portage/net-wireless/uhd-4.3.0.0/work/uhd-4.3.0.0/host/include/uhd/rfnoc/defaults.hpp:43:14: error: 'uint32_t' does not name a type
   43 | static const uint32_t DEFAULT_NOC_ID  = 0xFFFFFFFF;
      |              ^~~~~~~~
/var/tmp/portage/net-wireless/uhd-4.3.0.0/work/uhd-4.3.0.0/host/include/uhd/rfnoc/defaults.hpp:1:1: note: 'uint32_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
  +++ |+#include <cstdint>
    1 | //
```

Signed-off-by: Sam James <sam@gentoo.org>
2023-01-12 17:52:12 -08:00
Martin Braun
e82d56b2a5 docs: rfnoc: Fix Doxygen warnings on chdr_packet::set_metadata()
The doxygen lines for chdr_packet::set_metadata() were incorrect and
caused Doxygen warnings. This fixes the documentation.
2022-12-20 15:37:51 -06:00
Lars Amsel
f82a19af97 C API: Fix double-free issue with sensor values
Change type of internal sensor value to unique_ptr (from raw ptr)

This avoids double-free issues after querying a non-existant
sensor value.

Co-authored-by: Martin Anderseck <martin.anderseck@ni.com>
Co-authored-by: Martin Braun <martin.braun@ettus.com>
Co-authored-by: Michael Dickens <michael.dickens@ni.com>
2022-11-11 15:31:50 -06:00
Martin Anderseck
4789c32f40 extension: Add extension framework
This change adds the extension framwork that enables external libraries
to extend the UHD functionality in MultiUSRP and RFNoC. Its main purpose
is to be able to use external frontend modules, signal conditioning
modules etc. and to control them together with the USRP device. To make
it easier to install into the correct directory the UHD_MODULE_PATH gets
exported in CMake.
2022-08-30 08:49:26 -05:00
Steven Koo
b8fca02972 rfnoc: Mutex graph on set_property
In multithreaded situations, property propagation can break
when a property is marked dirty during another thread's propagation.
This prevents that by acquiring a global mutex on the graph when
setting properties and property propagation.

Signed-off-by: Steven Koo <steven.koo@ni.com>
2022-08-16 13:08:15 -04:00
Martin Anderseck
2ad30980fb tune_map: Publish and simplify zbx_tune_map
The tune map for ZBX included some mixer values which were redundant and
which didn't have a self-explaining name. This commit improves the
naming and makes the zbx_tune_map_item_t a public type so it can be
accessed from non-UHD applications because it is in the property tree
already anyway. While removing the redundancy some calculations in the
ZBX expert have been rewritten to be more readable.
2022-07-22 17:01:40 -05:00
Martin Anderseck
48d5af331e features: Make all feature headers install
Although these header files are in the include directory in the repo, we
didn't install them yet. Added them to the CMakeList to fix this.
2022-07-20 17:07:09 -05:00
Martin Anderseck
78be317599 experts: Move expert framework into public API
To enable third party components (e.g. frontend modules) to use the
experts framework the headers need to be placed in the public API.
This change does this and fixes all dependencies. The experts
framework has been kept as internal API to enable changes more
easily, however it has been there without major changes for quite
a while already and therefore it should be safe to publish it.
2022-07-20 15:56:32 -05:00
Martin Anderseck
49a6d06b72 ifaces: Publish antenna_iface and nameless_gain_mixin
Make the antenna_iface and nameless_gain_mixin public so they can be
used for external applications.
2022-07-15 17:13:54 -05:00
Martin Anderseck
dd561fa124 spi: Replace old signal names with up to date ones
It's no use talking about racism and then continue using
terms like master and slave. The X400 SPI interface is still
pretty new, so without interfering with too much legacy we
should still be able to jump onto a new, better naming scheme
for the SPI signals. Following the Open Source Hardware
Association's Resolution to Redefine SPI Signal Names
<https://www.oshwa.org/a-resolution-to-redefine-spi-signal-names/>
we will use Controller and Peripheral, Serial Data Out
(SDO) and Serial Data In (SDI) and Chip Select (CS).
Leftovers like MISO and MOSI are legacy from long existing
APIs which cannot be changed easily without breaking user
applications.
2022-07-14 16:24:35 -05:00
Martin Braun
ccb8eae36d uhd: log: Add UHD_LOG_THROW() macro
This is a shorthand for UHD_LOG_ERROR() plus throw, which is very common
in UHD.
2022-07-08 05:42:11 -07:00
Martin Braun
854665ef74 rfnoc: Rename property_propagation_active to is_forward_edge
The old name is highly inaccurate, and always was. It is even worse now
that back-edges are actually used for property propagation.
2022-06-29 12:07:21 -07:00
Martin Braun
720b3115e3 rfnoc: Fix block of block_initializer friend statement
This fixes compiler warnings regarding MSVC C++ ABI issues.
2022-06-17 06:45:04 -07:00
Martin Braun
9dc252a6b4 uhd: Make image_loader::image_loader_args_t regular struct
This avoids compiler warnings regarding C-compatibility.
2022-06-17 06:45:04 -07:00
Martin Braun
84c56eae1f rfnoc: Rename skip_property_propagation to is_back_edge
`skip_property_propagation` was always a bad choice for a name, but
since 3930a615, it is completely wrong.

In the C++ API, there is no change in API or ABI, because the argument
name is not part of API/ABI, although the documentation strings were
modified.

In the Python API, the argument name and default value are also modified
to match the C++ API. Scripts using named arguments may have to be
modified to track this change.
2022-06-16 06:03:56 -07:00
Wade Fife
ec74e70cd0 x300: Add protover and chdr_width regs to x300_mb_iface 2022-06-14 07:38:54 -05:00
Martin Braun
7ca952d914 rfnoc: Always retain order of properties
When resolving properties, it is important to retain the order of
properties. In this patch, this is achieved by changing prop_ptrs_t from
being an unordered_set into a vector.

The biggest effect is that node_t::filter_props() now returns filtered
properties in the order they were added.

Resolving properties in the order they were added, and not in any random
order, is very helpful when designing property resolvers. For the MTU
property, however, it is almost always a requirement. That's because the
the MTU property is added first (via noc_block_base), but also, its
resolution already assumes execution of resolvers in a certain order
(see the long comment towards the end of
noc_block_base::noc_block_base()). Execution of resolvers in a certain
order can only be guaranteed if properties are also in a certain order.

A particular issue this resolves is the ability to have properties that
both depend on atomic_item_size and the MTU. Because blocks have no way
of reading the current MTU other than calling
`noc_block_base::get_mtu()`, resolvers requiring access to the MTU
assume that the MTU properties are always resolved first.

The majority of this patch revolves around syntactical differences
between std::vector and std::unordered_set, like using `push_back()`
instead of `insert()` for adding to `prop_ptrs_t`.
2022-06-14 05:24:58 -07:00
Lars Amsel
81711625be uhd: Align numeric data types in digital filter classes
Modified accessors and constructors in digital filter classes
to align with the type declared in the corresponding fields.
2022-06-03 13:15:19 -07:00
Lars Amsel
f5d2daa0f6 uhd: pybind: Fix digital filter compile issue on Windows
0cf8a60 introduces Python binding for the digital filter
classes. This does not compile under Windows because the
digital filter classes are header only classes but are
declared as UHD_API. They must be declared as UHD_API_HEADER.
See also 1b3ed20.
2022-06-03 13:15:19 -07:00
Martin Braun
90239cfee4 lib: Remove references to uhd::sid_t
This data structure was used in UHD 3, but is no longer relevant.
2022-06-03 06:12:41 -07:00
Martin Braun
6419405e7c transport: Remove zero_copy_flow_ctrl
In the current streaming model, this is never used. Another UHD-3
remnant.
2022-06-03 06:12:41 -07:00
Martin Braun
840335390c lib: Remove vrt::chdr namespace
This is another remnant of UHD 3. This chdr:: namespace is not used
anywhere in the current streaming model.
2022-06-03 06:12:41 -07:00
Clayton Smith
244c9d2d90 host: Remove redundant template parameter list
C++20 no longer allows redundant template parameter lists. The
template parameter list must be removed from the property_impl
constructor to allow C++20 projects to include UHD.

Signed-off-by: Clayton Smith <argilo@gmail.com>
2022-05-24 07:52:00 -07:00
Martin Braun
3f900ba3d6 rfnoc: Improve comments regarding streaming and mgmt. code
This commit *only* touches comments in the code for RFNoC streaming,
link management and management portal.
2022-05-18 08:23:53 -07:00
Martin Braun
264db078dd dboard_iface: Change boost::chrono to std::chrono in sleep()
The underlying implementation was already using std::chrono. This
further removes boost::chrono from UHD.
2022-04-27 09:50:06 -07:00
Martin Braun
7d2b96c308 lib: Remove muxed_zero_copy_if
The usage of muxed_zero_copy_if was removed in 20baa41. We can thus
remove the muxed_zero_copy_if itself.
2022-04-27 09:49:04 -07:00
Martin Braun
2c8272079f docs: multi_usrp: Clarify GPIO source bank meaning 2022-04-19 07:30:49 -07:00
mattprost
4bd20a9e2a utils: string: Add split string utility function
Signed-off-by: mattprost <matt.prost@ni.com>
2022-04-07 13:28:02 -07:00
michael-west
ac5ddf9d0e uhd: Replay block version 1.1
- Add ability to get current record position.
- Add ability to get current play position.
- Track space in play command FIFO and throw uhd::op_failed error when
  command requested would overflow the command FIFO.

Signed-off-by: michael-west <michael.west@ettus.com>
2022-04-01 13:33:08 -07:00
Michael Dickens
f8c39eb075 config: fix clang fallthrough syntax 2022-04-01 12:13:12 -07:00
Michael Dickens
8dd3ace5c3 uhd: fix compiler macro ordering
Clang provides the same macros as GCC, so if we're differentiating between these compilers then we need to get the compiler checking macros in the correct order
2022-04-01 12:13:12 -07:00
Wade Fife
07ee9ab751 rfnoc: Remove redundant RFNoC block descriptions
The block descriptions radio_1x64.yml and radio_2x64.yml are subsets
of radio.yml. Similarly, axi_ram_fifo_2x64.yml and
axi_ram_fifo_4x64.yml are subsets of axi_ram_fifo.yml. This commit
removes the redundant YAML descriptions in favor of the
parameterizable versions.
2022-03-31 13:51:23 -07:00
Wade Fife
5007d98328 rfnoc: Make RFNoC device port names consistent
Update all USRPs to use the same names for the same port types.
For example, instead of "ctrl_port" and "ctrlport" use "ctrlport".
Instead "timekeeper" and "time_keeper", use "timekeeper". Etc.
2022-03-31 13:51:23 -07:00
Martin Braun
1d2ec74317 rfnoc: replay: Add ability to capture and read async info
- Add action handlers to the replay block to store TX and RX events.
- Adds two new APIs: get_{record,play}_async_metadata() to read back
  async info.
- Add unit tests.
2022-03-30 10:28:07 -07:00
Martin Braun
6629823dcb docs: rfnoc: Add doxygen tag for missing parameter
This adds a doxygen tag for the `chan` parameter in
fir_filter_block_control::set_coefficients().
2022-03-25 08:19:15 -05:00
Jonathon Pendlum
5d20a5a401 rfnoc: fir filter: Add support for multiple channels to block controller 2022-03-23 16:21:24 -05:00
Lane Kolbly
93f7ffb73a host: Add power_reference_iface::sptr declaration 2022-03-17 13:57:27 -05:00
Lane Kolbly
74f371fcd3 host: Create meta_range_t::as_monotonic
In order to perform certain operations (start/stop/step), meta_range_t
objects must be "monotonic", meaning that the subranges composing it
are sorted and non-overlapping. This commit creates a method which
takes a non-monotonic meta_range_t containing no non-continuous
subranges and converts it into a monotonic meta_range_t.
2022-03-14 15:49:41 -05:00
Lane Kolbly
7484b4f095 host: test: Add UHD_UNITTEST_LOG_LEVEL override 2022-03-11 09:10:04 -06:00
Martin Braun
6d58b692e4 docs: stream_args: Clarify usage of stream_args_t::channels
This vector is no longer used with RFNoC devices. We remove references
to X300 from the example, and instead use B210 as an example.
2022-03-11 08:59:39 -06:00
Martin Braun
708f1c2b35 rfnoc: Remove UHD3-API usages
- rfnoc_replay_samples_from_file still had UHD3-vestiges for selecting
  block port and ID
- The documentation for stream_args_t also included block port and ID
  examples
2022-03-11 08:59:39 -06:00
Wade Fife
a6f666092a rfnoc: Fix block buffer sizes referring to MTU
In the HDL, the parameter named 'MTU' is clog2 of the size of the
desired MTU. For example, when the 'MTU' parameter is 10, that means
the actual MTU setting is 2**MTU or 1024. So we need to set our
buffers to 2**MTU if we want them to be one MTU in size.
2022-03-04 09:42:39 -06:00
Martin Braun
1f31a9d95d docs: Improve documentation for replay block
- Add notes on playback and record behaviour
- Improve docs for play()

Co-authored-by: Wade Fife <wade.fife@ettus.com>
2022-02-24 13:41:14 -06:00
Martin Braun
0f15704cb9 rfnoc: graph_utils: Add ability to declare back-edges
rfnoc::connect_through_blocks(), unlike rfnoc_graph::connect(), did not
have an argument to declare a back-edge. This patch remedies this
situation by adding a skip_property_propagation argument that works
exactly as with rfnoc_graph::connect().
2022-02-24 13:39:41 -06:00
Martin Braun
1c726f5667 rfnoc: Remove references to nocscript from YAML files
The sw_iface entry in the `control` section is yet underdefined, so we
can remove it from the block descriptors.
2022-02-23 08:57:48 -06:00
Wade Fife
4ea32ae32d rfnoc: Expose buffer parameters for DRAM FIFO block 2022-02-10 19:46:39 -07:00
Wade Fife
788fef11ef fpga: e31x: Add DRAM support
This adds DRAM support to E31x devices. Due to the size of the DDR3
memory controller, it is not enabled by default. You can include the
memory controller IP in the build by adding the DRAM environment
variable to your build. For example:

DRAM=1 make E310_SG3
2022-02-10 18:13:44 -07:00
Jonathon Pendlum
8444f84add fpga: rfnoc: Add BLANK_OUTPUT to FIR filter block's parameters 2022-02-10 18:11:41 -07:00
Lane Kolbly
ed18ed376b host: Throw exception when accessing properties with incorrect type 2022-02-07 14:43:46 -06:00
Lane Kolbly
a7c5d70fec host: Minor cleanups in property_tree code 2022-02-07 14:43:46 -06:00