aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/include/uhdlib/rfnoc
Commit message (Collapse)AuthorAgeFilesLines
* rfnoc: Add chdr_ctrl_xportAlex Williams2019-11-261-0/+128
| | | | | | | | | | | | | | chdr_ctrl_xport is a dumb-pipe transport for RFNoC control transactions and management frames. Also remove the I/O service's check on num_recv_frames and num_send_frames. The transports may request additional virtual channels, so the send_io_if and recv_io_if may not reserve additional frames, as they are shared with a previously-allocated instance. Note: this uses a mutex to force sequentual access to the chdr_ctrl_xport. This is supposed to go away when the multi threaded xport is done.
* rfnoc: Add mb_controller base class and X300/MPMD implementationsMartin Braun2019-11-261-0/+13
|
* rfnoc: Add device_id allocatorMartin Braun2019-11-261-0/+22
| | | | | | This is a single atomic allocator in the global uhd::rfnoc namespace, so that devices can allocate themselves device IDs without having to confer with the rest of the RFNoC infrastructure.
* rfnoc: add reg_iface_adapterMartin Braun2019-11-261-0/+121
| | | | | This converts from register_iface& to wb_iface::sptr. Useful for connecting new block controllers with older interfaces.
* rfnoc: Add check_topology() API to nodesMartin Braun2019-11-262-0/+18
| | | | | This API lets blocks decide if their current topology is OK for them, and make decisions based on their topology.
* rfnoc: graph: Add commit/release APIMartin Braun2019-11-261-2/+13
|
* rfnoc: Add mb_controller APIMartin Braun2019-11-261-1/+4
| | | | | | | | | The mb_controller is an interface to hardware-specific functions of the motherboard. The API works in two ways: - The user can request access to it, and thus interact directly with the motherboard - RFNoC blocks can request access to it, if they need to interact with the motherboard themselves.
* rfnoc: SW support for FPGA byte swapperAshish Chaudhari2019-11-261-0/+6
| | | | | The management looks at the transport endianness from the packet factory to determine if the byte_swapper in the FPGA needs to be enabled
* rfnoc: Add radio block controllerMartin Braun2019-11-261-0/+289
|
* rfnoc: Graph and link stream manager API cleanupAshish Chaudhari2019-11-265-36/+161
|
* rfnoc: Added link/graph specific stream managersAshish Chaudhari2019-11-265-27/+260
| | | | | - Fleshed out mb_iface - Managers currently only export ctrl APIs. Data APIs TBD
* rfnoc: API cleanup for ctrl/mgmt codeAshish Chaudhari2019-11-264-13/+44
| | | | | | - chdr_ctrl_endpoint can manage multiple dest EPIDs - Moved from both_xports_t to a special defs in rfnoc_common - Changed data-structures where appropriate
* rfnoc: Moved chdr types/packet class out of chdr dirAshish Chaudhari2019-11-267-43/+80
| | | | | | - Moved chdr_packet and chdr_types from rfnoc/chdr to rfnoc and updated all references - Moved non-CHDR definitions to rfnoc_common.hpp
* rfnoc: Added clock_iface to convey info about clocksAshish Chaudhari2019-11-263-4/+69
| | | | | The inteface provides a mechanism for users of clocks to query information such as the running status or rate
* rfnoc: Support for new backend iface plus fixesAshish Chaudhari2019-11-262-2/+6
| | | | | | - 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: Move graph_edge data structure to its own header, add to_string()Martin Braun2019-11-261-59/+3
| | | | | | | | 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: Add block registry/factory and make_argsMartin Braun2019-11-261-0/+32
| | | | | | - noc_block_base now has a ctor defined - The registry stores factory functions to the individual Noc-Block implementations
* rfnoc: adding client_zeroBrent Stapleton2019-11-261-0/+199
| | | | | | | | | | - 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: Added impl for reg_iface and ctrl_endpointAshish Chaudhari2019-11-263-0/+131
| | | | | | | | - 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: Add action APIMartin Braun2019-11-262-1/+68
| | | | | | | | - 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-261-0/+191
| | | | | | | - 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-262-0/+1127
| | | | | | | - 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-262-2/+274
| | | | | | | | | | | | - 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-261-0/+57
| | | | | This is a storage for the noc_block_base derivatives. It supports finding blocks.
* 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 properties, nodes, and accessorsMartin Braun2019-11-262-0/+180
| | | | | | | | | | | | | | 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: Read cmd FIFO size from blocks & configure ctrl_ifaceMartin Braun2019-09-041-0/+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
* lib: rfnoc: Apply clang-format to graph_impl.hppMartin Braun2019-05-221-35/+26
|
* uhd: Replace all usage of boost::noncopyable with uhd::noncopyableMartin Braun2019-02-151-2/+2
| | | | | | This fixes the build errors that occur due to switching locations of noncopyable.hpp within Boost, and also allows us to remove boost::noncopyable in one fell swoop.
* RFNoC: Prevent unnecessary FC ACK packetsmichael-west2019-01-311-2/+3
| | | | | | | | Avoid sending flow control ACK packets for lossless transports. Add 'send_no_fc_acks' device argument to explicitly prevent flow control ACK packets from being sent. Signed-off-by: michael-west <michael.west@ettus.com>
* formatting: remove vim hints in headersBrent Stapleton2019-01-166-6/+0
| | | | | Remove trailing vim hints in header files. This functionality will be replaced by clang-format.
* radio_ctrl_impl: move continuous_streaming to protected.Ryan Marlow2018-12-191-1/+1
|
* uhd: rfnoc: add async message handlerTrung Tran2018-09-143-3/+191
|
* radio_ctrl: add disable time stampTrung Tran2018-09-141-0/+2
|
* Device3: Change packet-based flow control to byte-based flow controlMartin Braun2018-07-251-1/+1
|
* Removed unecessary == operation.Vidush2018-04-301-3/+3
|
* Changed method to check for channel in _tx_streamer_active & rx_streamer_active.Vidush2018-04-301-4/+4
|
* lib: Change check_radio_config() to iterate over channels, not radios.Vidush2018-04-301-5/+8
|
* fixup! rfnoc: ctrl_iface cleanupmichael-west2018-04-301-1/+1
|
* rfnoc: ctrl_iface cleanupMartin Braun2018-03-162-44/+61
| | | | | | | | | | - ctrl_iface is now longer a wb_iface. All it can do now is send command packets, and receive responses to those. - ctrl_iface does not store command time or tick rate - wb_iface_adapter is no longer a set of functors, but a wrapper around ctrl_iface. Command times are stored once, in the block. - DMA FIFO and radio block controllers have an easier time getting access to a timed_wb_iface
* rfnoc/x300: Make sure peek32() and peek64() are called with actual addressesMartin Braun2018-03-161-4/+2
| | | | Before, we were calling peeks with the number of the readback register.
* lib: Add include guards for xports.hppMartin Braun2018-03-141-0/+5
|
* uhd: Move internal headers to uhdlib/Martin Braun2018-03-1410-0/+778
To avoid the proliferation of additional include directories and multiple ways of including project-local headers, we now default to moving all headers that are used across UHD into the uhdlib/ subdirectory. Some #include statements were also reordered as they were modified for closer compliance with the coding guidelines. Internal cpp source files should now include files like this: #include <uhdlib/rfnoc/ctrl_iface.hpp> Reviewed-by: Ashish Chaudhari <ashish.chaudhari@ettus.com>