| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
- Add peek64() and poke64() convenience calls
|
|
|
|
|
|
|
|
|
|
|
| |
All noc_block_base derivatives are now plugged into the tick rate
system. Connected nodes can only have one tick rate among them. This
implies there is also only ever one tick rate per block.
set_tick_rate() is a protected API call which can be called by blocks
such as radio blocks to actually set a tick rate. Other blocks would
only ever read the tick rate, which is handled by the get_tick_rate()
API call.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
New interface aimed to replace zero_copy_if for new code, including new
RFNoC development and redesign of streamer objects.
Generic implementation of send and receive transport interfaces to allow
reuse by various transport types. Derived classes implement
transport-specific functions that are invoked by the base classes
through CRTP.
|
|
|
|
|
| |
The default block controller should get instantiated when no other
suitable block controller can be found.
|
| |
|
|
|
|
|
| |
The inteface provides a mechanism for users of clocks to query
information such as the running status or rate
|
|
|
|
|
|
|
|
| |
A small modification to rfnoc::action_info makes it polymorphic, and
instead of serializing data structures into a string, this allows
creating custom action objects and identifying them via RTTI. The stream
command action object is a good example for how to use this, so all the
usages of stream command action objects were converted to this scheme.
|
| |
|
|
|
|
| |
This replaces device3() for RFNoC applications.
|
|
|
|
|
|
|
|
| |
This structure represents information about a graph edge. Required by
detail::graph and rfnoc_graph.
graph_edge_t::to_string() will now provide a textual representation of
the edge.
|
|
|
|
|
|
|
| |
Previously, it was 0/FFT_1. The counter was separated by an underscore.
Now, we separate by a # symbol to allow for underscores in block names.
This means 'FIR_Filter' is now a valid blockname.
|
|
|
|
|
|
| |
- noc_block_base now has a ctor defined
- The registry stores factory functions to the individual Noc-Block
implementations
|
|
|
|
|
| |
The async message callback now has a vector of data words instead
of a single one
|
|
|
|
|
|
|
|
|
| |
Adding mixin class that manages holding onto a register_iface.
Deriving from this new class in noc_block_base, as it needs access to
a register_iface.
Co-authored-by: Brent Stapleton <brent.stapleton@ettus.com>
|
|
|
|
|
|
|
|
| |
- Added new register_iface class that translates high-level
peek/poke calls into CHDR control payloads
- Added new chdr_ctrl_endpoint class that emulates a control
stream endpoint in SW. It can create and handle multiple
register interfaces
|
| |
|
|
|
|
|
|
|
|
| |
- Added action_info class
- Allow to send actions from node to node
- Allow to post actions into nodes
- Allow to set default forwarding policies
- Added unit tests
|
|
|
|
|
|
|
| |
- Moved packet interface code from public to private include
- Split packet interface into two files: payload paring and packet iface
- Added support for all CHDR packet types
- Added more test cases to unit test
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Adds a detail::graph_t class, which handles the propagation
- Adds methods to node_t to aid with propagation
- Adds unit tests
- Adds dynamic property forwarding:
Nodes are now able to forward properties they don't know about by
providing a forwarding policy. A good example is the FIFO block which
simply forwards most properties verbatim.
- node: Temporarily disabling consistency check at init
|
|
|
|
| |
This is a parent class for all block controllers.
|
|
|
|
| |
This is a generic CHDR interface that abstracts out the bus width.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adds the following classes:
- uhd::rfnoc::node_t, the base class for RFNoC nodes
- uhd::rfnoc::node_accessor_t, a class to access private properties
- uhd::rfnoc::res_source_info, a struct that identifies where properties
come from
- uhd::rfnoc::property_t, and property_base_t (its parent)
- uhd::rfnoc::prop_accessor_t, a class to access properties
Add always dirty property (dirtifier).
Also adds unit tests for properties.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Applying formatting in anticipation of upcoming changes.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add convenience factory for making a gain group that has a single
zero-valued element. This factory requires a name, which should
probably be ALL_GAINS, or something similar (these constants are
device-specific).
Using this new make_zero factory in the X300 radio control when we
don't find any gain elements so that our gain groups aren't empty. This
simplifies our later setters/getters because we know that we'll always
have _something_ cached.
Note that we only register this zero value gain group for TX, as our
ADC is registered as a gain element, so our RX gain groups are never
empty.
|
| |
|
|
|
|
|
| |
This is the inverse to std::to_string(), and we can overload it with
UHD-internal types.
|
|
|
|
| |
This is the only occurrence of boost::unordered_map in UHD.
|
|
|
|
|
| |
This mode is never used, and makes it more cumbersome to maintain this
code.
|
|
|
|
|
|
|
| |
The custom copy ctor for dirty_tracked was using the = operator, which
wouldn't necessarily copy the dirty flag. By removing it (and thus using
the default copy ctor), the copied dirty_tracked object now has the same
value *and* dirty flag as the original.
|
| |
|
|
|
|
| |
This is the only occurrence of boost::atomic in UHD.
|
|
|
|
| |
Newer devices may be able to provide more then 32 bits worth of samples.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add the following exception types:
- rfnoc_error
- op_failed
- op_seqerr
- op_timeout
- op_timeerr
- access_error
- It is meant to be used when access violations have taken place,
i.e., when a resource is being accessed without appropriate
permissions.
- resolve_error
- This is a derivative of rfnoc_error, and will be used when a
property resolution fails unexpectedly.
- routing_error
- For use when the framework has path setup issues or general
routing-related errors
|
|
|
|
|
|
|
|
|
| |
This removes the following symbols:
- otw_type_t
- clock_config_t
- Any functions that use those symbols
- Non-standard args from examples (e.g., --total-time is deprecated in
favour of --duration)
|
|
|
|
| |
Note: N230 is still supported on the 3.15 LTS branch
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Boost >= 1.58
- CMake >= 3.5.1
- gcc >= 5.4.0
- Clang >= 3.8, AppleClang >= 600
- Python >= 3.5 (Py2k no longer supported)
- Numpy >= 1.11
- C++14 for lib, include may now use C++11 constructs.
- Because there is no more code requiring C++03 syntax, we remove the
include-specific clang-format file
|
|
|
|
|
|
|
| |
This will now allow calls like this:
uhd::dict<k, v> d = /* ... */;
auto m = static_cast<std::map<k, v>>(d);
|
|
|
|
|
|
|
|
| |
Added cmake variable to set the component (currently UHD or MPM).
so the banner printed by the log_resource would reference the correct
component. Added accessor function and appropriate calls in log.cpp.
Signed-off-by: michael-west <michael.west@ettus.com>
|
|
|
|
|
|
|
| |
This reverts commit 94592641f0647563bc4d2163805d5284a6796273.
The commit itself was OK, but it changed the requirements such that UHD
could only be compiled with C++11.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This requires noc_shell compat number 6.0. It will allow sending as many
command packets, but no more, than there is space.
Updated FPGA images for devices:
- X310/X300
- N300/N310/N320
- E310/E320
|
| |
|
| |
|
|
|
|
| |
Boost moved this around in version 1.58.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This provides a platform-independent attribute to allow fallthroughs in
switch statements. Example:
switch (foo) {
case BAR:
do_something();
UHD_FALLTHROUGH
case BAZ:
do_another_thing();
}
The usage of UHD_FALLTHROUGH will avoid a compiler warning if indeed the
fallthrough was intentional. The associated warning
(-Wimplicit-fallthrough) is only available on gcc and Clang.
|