aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* transport: Introduce I/O service layer between transport and linkAlex Williams2019-11-261-0/+337
| | | | | | | | | | | Split the transport into three layers to allow for greater flexibility in scheduling algorithms. The io_service will make queues on behalf of the transport and take responsibility for scheduling data transfers through the links. The transport layer is the explicit handler for flow control. This enables the possibility of a scheduling layer in between, so flow control may be offloaded on the same thread as the link.
* tests: add mock transport implementation and testCiro Nishiguchi2019-11-263-0/+419
| | | | Add test for transports using mock transports
* uhd: add new transport interface and base class implementationCiro Nishiguchi2019-11-264-0/+404
| | | | | | | | | | 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.
* rfnoc: Add default block controllerMartin Braun2019-11-268-8/+59
| | | | | The default block controller should get instantiated when no other suitable block controller can be found.
* rfnoc: Add DDC block controllerMartin Braun2019-11-266-0/+770
|
* rfnoc: Added clock_iface to convey info about clocksAshish Chaudhari2019-11-266-23/+98
| | | | | The inteface provides a mechanism for users of clocks to query information such as the running status or rate
* rfnoc: Use RTTI "serialization" for stream commandsMartin Braun2019-11-264-44/+82
| | | | | | | | 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.
* log: Add convenience macros for logging from RFNoC blocksMartin Braun2019-11-261-0/+7
|
* rfnoc: Support for new backend iface plus fixesAshish Chaudhari2019-11-264-33/+43
| | | | | | - Add support for new backend iface with max_async_msgs and mtu moved to after the noc ID - Fixed offsets for block info registers
* rfnoc: Add rfnoc_graph classMartin Braun2019-11-264-0/+395
| | | | This replaces device3() for RFNoC applications.
* rfnoc: Move graph_edge data structure to its own header, add to_string()Martin Braun2019-11-263-59/+90
| | | | | | | | 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.
* rfnoc: Add rfnoc_device base classMartin Braun2019-11-262-0/+83
| | | | | All USRP device impls that are RFNoC devices will need to derive from this (instead of device3).
* rfnoc: Change Block-ID format to 0/FFT#1Martin Braun2019-11-265-57/+60
| | | | | | | 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.
* rfnoc: Add block registry/factory and make_argsMartin Braun2019-11-268-2/+283
| | | | | | - noc_block_base now has a ctor defined - The registry stores factory functions to the individual Noc-Block implementations
* rfnoc: Add block_poke support to reg_iface async msgAshish Chaudhari2019-11-262-5/+6
| | | | | The async message callback now has a vector of data words instead of a single one
* rfnoc: adding client_zeroBrent Stapleton2019-11-266-0/+766
| | | | | | | | | | - Adding client_zero class, which gathers information about our device form the global registers on port 0 of the RFNoC backend registers. - adding unit tests to exercise client_zero - mock_reg_iface class: adding fake register_iface so we can run unit tests in software only Co-authored-by: Martin Braun <martin.braun@ettus.com>
* rfnoc: add register_iface holder classMartin Braun2019-11-262-2/+42
| | | | | | | | | 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>
* cmake: tests: Move RFNoC tests to UHD_ADD_NONAPI_TEST() macroMartin Braun2019-11-261-42/+19
| | | | This is a continuation of a76ce96c.
* rfnoc: Added impl for reg_iface and ctrl_endpointAshish Chaudhari2019-11-269-1/+1009
| | | | | | | | - 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
* rfnoc: node: Add default command time APIMartin Braun2019-11-262-0/+65
|
* rfnoc: Add action APIMartin Braun2019-11-2613-20/+656
| | | | | | | | - 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
* rfnoc: Added initial impl for mgmt_portalAshish Chaudhari2019-11-263-1/+1189
| | | | | | | - The management portal is the interface for the framework to allow discovering the data topology, setup routes between stream endpoints and configure streamers - Use a zero_copy_if and the mgmt_paylod to send/recv packets
* rfnoc: Refactored CHDR packet interfacesAshish Chaudhari2019-11-2612-660/+1992
| | | | | | | - 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
* rfnoc: Add property propagation, Boost.Graph storageMartin Braun2019-11-2612-49/+2171
| | | | | | | | | | | | - 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
* rfnoc: Add detail::block_container_t classMartin Braun2019-11-263-0/+132
| | | | | This is a storage for the noc_block_base derivatives. It supports finding blocks.
* rfnoc: add eRFNoC block builder to generate boiler plate VerilogLars Amsel2019-11-2618-0/+1069
| | | | | | | | | | | | | | | | | | | | | | | This is an initial generator for eRFNoC block. The script generates the top level block, the shell module, a testbench, and a Makefile as well as a Makefile.srcs. To build a block from a yml file one has to invoke python -c <config> -d <destination folder> destination folder should be an in tree module folder located in uhd-fpga/usrp3/lib/erfnoc/blocks The build tool supports all interface types for control as well as data. For each interface type there are three templates to generate the variable block in the top level block and the shell * declare the wires * connect the wires * instantiate the modules The first two are used in the shell module as well as in the top level block. The last is for the shell only.
* rfnoc: Add rfnoc::mb_iface interface classMartin Braun2019-11-261-0/+76
| | | | | Its purpose is to provide a device-agnostic back-channel interface into the device guts for all rfnoc_graph devices.
* rfnoc: Add noc_block_base classMartin Braun2019-11-263-0/+104
| | | | This is a parent class for all block controllers.
* rfnoc: add chdr packet interfaceTrung Tran2019-11-262-15/+196
| | | | This is a generic CHDR interface that abstracts out the bus width.
* rfnoc: Add properties, nodes, and accessorsMartin Braun2019-11-2614-0/+1274
| | | | | | | | | | | | | | 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.
* rfnoc: add new data_chdr packetization.Trung Tran2019-11-266-1/+507
|
* rfnoc: block_id: Add more info when ctor failsMartin Braun2019-11-261-1/+2
|
* twinrx: Make gpio_iface a wb_iface (was: timed_wb_iface)Martin Braun2019-11-261-11/+2
| | | | | This completely eliminates the need for cmd_time_ctrl in the TwinRX codebase, reducing the number of dependencies on the X300 codebase.
* lib: adf535x: Add trace logs for synth configurationMartin Braun2019-11-261-0/+18
|
* lib: Simplify implementation of uhd::get_system_time() to use <chrono>Martin Braun2019-11-264-109/+15
| | | | | | | uhd::get_system_time() is currently only used in USRP1 code, and it turns out that our "optimized", platform-dependent implementation still is a little slower than straight-up chrono. We therefore remove all the special cases, and replace them with a single, standard solution.
* lib: Replace uhd::get_system_time() with steady_clockMartin Braun2019-11-262-9/+14
| | | | | | Benchmarks show that using C++ chrono features beats uhd::get_system_time(), and the latter is simply not appropriate unless a uhd::time_spec_t is required.
* niusrprio: Add get_resource() API callMartin Braun2019-11-261-0/+5
|
* niusrpio: Apply formattingMartin Braun2019-11-262-99/+104
|
* types: time_spec: Add ASAP valueMartin Braun2019-11-261-0/+3
|
* gain groups: FormattingBrent Stapleton2019-11-262-65/+78
| | | | Applying formatting in anticipation of upcoming changes.
* gain_groups: Add zero-value gain groupsBrent Stapleton2019-11-262-0/+18
| | | | | | | | | | | | | | | 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.
* convert: Add chdr converters for sc16 -> fc32 and vice versaMartin Braun2019-11-265-0/+235
| | | | | These differ from the item32 converters in that they don't IQ swap, and also don't have a BE/LE version.
* convert: sse2: Apply clang-formatMartin Braun2019-11-269-679/+742
|
* convert: Add CHDR convertersMartin Braun2019-11-262-32/+174
| | | | | | | | The difference between the _chdr converters and the _item32_ converters is that the former do not require item32 boundaries, they do not require endianness swapping, and they don't use IQ swapping either. This is possible because the FPGA will do byte-swapping.
* uhd: Add thread affinity utility functionsAaron Rossetto2019-11-263-11/+123
|
* uhd: utils: Add compat check for 32-bit compat numbersMartin Braun2019-11-262-0/+31
|
* lib: utils: Add new signature to get_freq_and_freq_word()Martin Braun2019-11-262-1/+15
| | | | | The new signature uses tuple as the return value, instead of passing in output variables as references (C-style).
* utils: cast: Add from_str() typecastMartin Braun2019-11-264-1/+68
| | | | | This is the inverse to std::to_string(), and we can overload it with UHD-internal types.
* soft_register: Replace boost::unordered_map with std versionMartin Braun2019-11-261-2/+2
| | | | This is the only occurrence of boost::unordered_map in UHD.
* utils: soft_register: Remove 16-bit modeMartin Braun2019-11-262-28/+3
| | | | | This mode is never used, and makes it more cumbersome to maintain this code.