#include <uhd/rfnoc/sink_block_ctrl_base.hpp>
Public Types | |
typedef boost::shared_ptr< sink_block_ctrl_base > | sptr |
Public Types inherited from uhd::rfnoc::block_ctrl_base | |
typedef boost::shared_ptr< block_ctrl_base > | sptr |
typedef boost::function< sptr(const make_args_t &)> | make_t |
Public Types inherited from uhd::rfnoc::node_ctrl_base | |
typedef boost::shared_ptr< node_ctrl_base > | sptr |
typedef boost::weak_ptr< node_ctrl_base > | wptr |
typedef std::map< size_t, wptr > | node_map_t |
typedef std::pair< size_t, wptr > | node_map_pair_t |
Public Types inherited from uhd::rfnoc::sink_node_ctrl | |
typedef boost::shared_ptr< sink_node_ctrl > | sptr |
typedef std::map< size_t, boost::weak_ptr< sink_node_ctrl > > | node_map_t |
typedef std::pair< size_t, boost::weak_ptr< sink_node_ctrl > > | node_map_pair_t |
Public Member Functions | |
stream_sig_t | get_input_signature (size_t block_port=0) const |
std::vector< size_t > | get_input_ports () const |
size_t | get_fifo_size (size_t block_port=0) const |
size_t | get_mtu (size_t block_port=0) const |
virtual void | configure_flow_control_in (const size_t bytes, const size_t block_port=0) |
virtual void | set_error_policy (const std::string &policy) |
Public Member Functions inherited from uhd::rfnoc::block_ctrl_base | |
uint32_t | get_address (size_t block_port=0) |
block_id_t | get_block_id () const |
std::string | unique_id () const |
std::vector< size_t > | get_ctrl_ports () const |
void | sr_write (const uint32_t reg, const uint32_t data, const size_t port=0) |
void | sr_write (const std::string ®, const uint32_t data, const size_t port=0) |
uint64_t | sr_read64 (const settingsbus_reg_t reg, const size_t port=0) |
uint32_t | sr_read32 (const settingsbus_reg_t reg, const size_t port=0) |
uint64_t | user_reg_read64 (const uint32_t addr, const size_t port=0) |
uint64_t | user_reg_read64 (const std::string ®, const size_t port=0) |
uint32_t | user_reg_read32 (const uint32_t addr, const size_t port=0) |
uint32_t | user_reg_read32 (const std::string ®, const size_t port=0) |
void | set_command_time (const time_spec_t &time_spec, const size_t port=ANY_PORT) |
time_spec_t | get_command_time (const size_t port=0) |
void | set_command_tick_rate (const double tick_rate, const size_t port=ANY_PORT) |
void | clear_command_time (const size_t port) |
void | clear () |
void | set_args (const uhd::device_addr_t &args, const size_t port=0) |
void | set_arg (const std::string &key, const std::string &val, const size_t port=0) |
Set a specific block argument. val is converted to the corresponding. More... | |
template<typename T > | |
void | set_arg (const std::string &key, const T &val, const size_t port=0) |
Direct access to set a block argument. More... | |
uhd::device_addr_t | get_args (const size_t port=0) const |
Return all block arguments as a device_addr_t. More... | |
std::string | get_arg (const std::string &key, const size_t port=0) const |
Return a single block argument in string format. More... | |
template<typename T > | |
T | get_arg (const std::string &key, const size_t port=0) const |
Direct access to get a block argument. More... | |
std::string | get_arg_type (const std::string &key, const size_t port=0) const |
Public Member Functions inherited from uhd::rfnoc::node_ctrl_base | |
node_map_t | list_downstream_nodes () |
node_map_t | list_upstream_nodes () |
void | disconnect () |
void | disconnect_output_port (const size_t output_port) |
void | disconnect_input_port (const size_t input_port) |
void | set_downstream_port (const size_t this_port, const size_t remote_port) |
size_t | get_downstream_port (const size_t this_port) |
void | set_upstream_port (const size_t this_port, const size_t remote_port) |
size_t | get_upstream_port (const size_t this_port) |
template<typename T > | |
UHD_INLINE std::vector< boost::shared_ptr< T > > | find_downstream_node (bool active_only=false) |
template<typename T > | |
UHD_INLINE std::vector< boost::shared_ptr< T > > | find_upstream_node (bool active_only=false) |
template<typename T , typename value_type > | |
UHD_INLINE value_type | find_downstream_unique_property (boost::function< value_type(boost::shared_ptr< T > node, size_t port)> get_property, value_type null_value, const std::set< boost::shared_ptr< T > > &exclude_nodes=std::set< boost::shared_ptr< T > >()) |
template<typename T , typename value_type > | |
UHD_INLINE value_type | find_upstream_unique_property (boost::function< value_type(boost::shared_ptr< T > node, size_t port)> get_property, value_type null_value, const std::set< boost::shared_ptr< T > > &exclude_nodes=std::set< boost::shared_ptr< T > >()) |
Public Member Functions inherited from uhd::rfnoc::sink_node_ctrl | |
size_t | connect_upstream (node_ctrl_base::sptr upstream_node, size_t port=ANY_PORT, const uhd::device_addr_t &args=uhd::device_addr_t()) |
virtual void | set_tx_streamer (bool active, const size_t port) |
Protected Member Functions | |
virtual size_t | _request_input_port (const size_t suggested_port, const uhd::device_addr_t &args) const |
Protected Member Functions inherited from uhd::rfnoc::block_ctrl_base | |
block_ctrl_base (void) | |
virtual | ~block_ctrl_base () |
block_ctrl_base (const make_args_t &make_args) | |
stream_sig_t | _resolve_port_def (const blockdef::port_t &port_def) const |
uhd::fs_path | get_arg_path (const std::string &key, size_t port=0) const |
Return the property tree path to a block argument key on port . More... | |
timed_wb_iface::sptr | get_ctrl_iface (const size_t block_port) |
Get a control interface object for block port block_port . More... | |
virtual void | _clear (const size_t port=0) |
Override this function if your block does something else. More... | |
virtual void | _set_command_time (const time_spec_t &time_spec, const size_t port=ANY_PORT) |
Override this function if your block needs to specially handle. More... | |
Protected Member Functions inherited from uhd::rfnoc::node_ctrl_base | |
node_ctrl_base (void) | |
virtual | ~node_ctrl_base () |
virtual void | _register_downstream_node (node_ctrl_base::sptr downstream_node, size_t port) |
Additional Inherited Members | |
Static Public Member Functions inherited from uhd::rfnoc::block_ctrl_base | |
static void | register_block (const make_t &make, const std::string &name) |
static sptr | make (const make_args_t &make_args, uint64_t noc_id=~0) |
Create a block controller class given a NoC-ID or a block name. More... | |
Protected Attributes inherited from uhd::rfnoc::block_ctrl_base | |
uhd::property_tree::sptr | _tree |
Property sub-tree. More... | |
uhd::fs_path | _root_path |
Root node of this block's properties. More... | |
blockdef::sptr | _block_def |
Block definition (stores info about the block such as ports) More... | |
Protected Attributes inherited from uhd::rfnoc::node_ctrl_base | |
uhd::device_addr_t | _args |
Stores default arguments. More... | |
node_map_t | _upstream_nodes |
List of upstream nodes. More... | |
node_map_t | _downstream_nodes |
List of downstream nodes. More... | |
size_t | _num_input_ports |
size_t | _num_output_ports |
std::map< size_t, bool > | _rx_streamer_active |
std::map< size_t, bool > | _tx_streamer_active |
typedef boost::shared_ptr<sink_block_ctrl_base> uhd::rfnoc::sink_block_ctrl_base::sptr |
|
protectedvirtual |
Like sink_node_ctrl::_request_input_port(), but also checks the port has an input signature.
Reimplemented from uhd::rfnoc::sink_node_ctrl.
|
virtual |
Configure flow control for incoming streams.
If flow control is enabled for incoming streams, this block will periodically send out ACKs, telling the upstream block which packets have been consumed, so the upstream block can increase his flow control credit.
In the default implementation, this just sets register SR_FLOW_CTRL_PKTS_PER_ACK accordingly.
Override this function if your block has port-specific flow control settings.
bytes | Send an ACK after this many bytes have been consumed. Setting this to zero disables flow control acknowledgement. |
block_port | Set up flow control for a stream coming in on this particular block port. |
size_t uhd::rfnoc::sink_block_ctrl_base::get_fifo_size | ( | size_t | block_port = 0 | ) | const |
Return the size of input buffer on a given block port.
This is necessary for setting up flow control, among other things. Note: This does not query the block's settings register. The FIFO size is queried once during construction and cached.
If the block port is not defined, it will return 0, and not throw.
block_port | The block port (0 through 15). |
Returns the size of the buffer in bytes.
std::vector<size_t> uhd::rfnoc::sink_block_ctrl_base::get_input_ports | ( | ) | const |
Return a list of valid input ports.
stream_sig_t uhd::rfnoc::sink_block_ctrl_base::get_input_signature | ( | size_t | block_port = 0 | ) | const |
Return the input stream signature for a given block port.
The actual signature is determined by the current configuration and the block definition file. The value returned here is calculated on-the-fly and is only valid as long as the configuration does not change.
block_port
uhd::runtime_error | if block_port is not a valid port |
size_t uhd::rfnoc::sink_block_ctrl_base::get_mtu | ( | size_t | block_port = 0 | ) | const |
Return the MTU size on a given block port.
This is necessary for setting up transports, among other things.
If the block port is not defined, it will return 0, and not throw.
block_port | The block port (0 through 15). |
Returns the MTU in bytes.
|
virtual |
Configure the behaviour for errors on incoming packets (e.g. sequence errors).