#include <uhd/rfnoc/sink_block_ctrl_base.hpp>
Public Types | |
typedef boost::shared_ptr< sink_block_ctrl_base > | sptr |
![]() | |
typedef boost::shared_ptr< block_ctrl_base > | sptr |
typedef boost::function< sptr(const make_args_t &)> | make_t |
![]() | |
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 |
![]() | |
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 |
virtual void | configure_flow_control_in (size_t cycles, size_t packets, size_t block_port=0) |
virtual void | set_error_policy (const std::string &policy) |
![]() | |
boost::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 boost::uint32_t reg, const boost::uint32_t data, const size_t port=0) |
void | sr_write (const std::string ®, const boost::uint32_t data, const size_t port=0) |
boost::uint64_t | sr_read64 (const settingsbus_reg_t reg, const size_t port=0) |
boost::uint32_t | sr_read32 (const settingsbus_reg_t reg, const size_t port=0) |
boost::uint64_t | user_reg_read64 (const boost::uint32_t addr, const size_t port=0) |
boost::uint64_t | user_reg_read64 (const std::string ®, const size_t port=0) |
boost::uint32_t | user_reg_read32 (const boost::uint32_t addr, const size_t port=0) |
boost::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 (const size_t port=0) |
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 |
![]() | |
virtual void | clear () |
node_map_t | list_downstream_nodes () |
node_map_t | list_upstream_nodes () |
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 () |
template<typename T > | |
UHD_INLINE std::vector< boost::shared_ptr< T > > | find_upstream_node () |
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 > >()) |
![]() | |
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 |
![]() | |
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... | |
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... | |
![]() | |
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 void | register_block (const make_t &make, const std::string &name) |
static sptr | make (const make_args_t &make_args, boost::uint64_t noc_id=~0) |
Create a block controller class given a NoC-ID or a block name. More... | |
![]() | |
uhd::property_tree::sptr | _tree |
Property sub-tree. More... | |
uhd::fs_path | _root_path |
Root node of this block's properties. More... | |
bool | _transport_is_big_endian |
Endianness of underlying transport (for data transport) More... | |
blockdef::sptr | _block_def |
Block definition (stores info about the block such as ports) More... | |
![]() | |
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... | |
![]() | |
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 registers SR_FLOW_CTRL_CYCS_PER_ACK and SR_FLOW_CTRL_PKTS_PER_ACK accordingly.
Override this function if your block has port-specific flow control settings.
cycles | Send an ACK after this many clock cycles. Setting this to zero disables this type of flow control acknowledgement. |
packets | Send an ACK after this many packets have been consumed. Setting this to zero disables this type of 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 |
|
virtual |
Configure the behaviour for errors on incoming packets (e.g. sequence errors).