The abstract base class for all signal processing blocks. More...
#include <gnuradio/basic_block.h>
Public Member Functions | |
pmt::pmt_t | message_subscribers (pmt::pmt_t port) |
~basic_block () override | |
long | unique_id () const |
long | symbolic_id () const |
std::string | name () const |
std::string | symbol_name () const |
std::string | identifier () const |
gr::io_signature::sptr | input_signature () const |
gr::io_signature::sptr | output_signature () const |
basic_block_sptr | to_basic_block () |
bool | alias_set () const |
std::string | alias () const |
pmt::pmt_t | alias_pmt () const |
void | set_block_alias (std::string name) |
void | message_port_register_in (pmt::pmt_t port_id) |
void | message_port_register_out (pmt::pmt_t port_id) |
void | message_port_pub (pmt::pmt_t port_id, pmt::pmt_t msg) |
void | message_port_sub (pmt::pmt_t port_id, pmt::pmt_t target) |
void | message_port_unsub (pmt::pmt_t port_id, pmt::pmt_t target) |
virtual bool | message_port_is_hier (pmt::pmt_t port_id) |
virtual bool | message_port_is_hier_in (pmt::pmt_t port_id) |
virtual bool | message_port_is_hier_out (pmt::pmt_t port_id) |
pmt::pmt_t | message_ports_in () |
Get input message port names. More... | |
pmt::pmt_t | message_ports_out () |
Get output message port names. More... | |
void | _post (pmt::pmt_t which_port, pmt::pmt_t msg) |
bool | empty_p (pmt::pmt_t which_port) |
is the queue empty? More... | |
bool | empty_p () |
bool | empty_handled_p (pmt::pmt_t which_port) |
are all msg ports with handlers empty? More... | |
bool | empty_handled_p () |
size_t | nmsgs (pmt::pmt_t which_port) |
How many messages in the queue? More... | |
void | insert_tail (pmt::pmt_t which_port, pmt::pmt_t msg) |
pmt::pmt_t | delete_head_nowait (pmt::pmt_t which_port) |
msg_queue_t::iterator | get_iterator (pmt::pmt_t which_port) |
void | erase_msg (pmt::pmt_t which_port, msg_queue_t::iterator it) |
virtual bool | has_msg_port (pmt::pmt_t which_port) |
const msg_queue_map_t & | get_msg_map (void) const |
virtual void | setup_rpc () |
Set up the RPC registered variables. More... | |
bool | is_rpc_set () |
Ask if this block has been registered to the RPC. More... | |
void | rpc_set () |
When the block is registered with the RPC, set this. More... | |
virtual bool | check_topology (int ninputs, int noutputs) |
Confirm that ninputs and noutputs is an acceptable combination. More... | |
template<typename T > | |
void | set_msg_handler (pmt::pmt_t which_port, T msg_handler) |
Set the callback that is fired when messages are available. More... | |
virtual void | set_processor_affinity (const std::vector< int > &mask)=0 |
virtual void | unset_processor_affinity ()=0 |
virtual std::vector< int > | processor_affinity ()=0 |
virtual void | set_log_level (const std::string &level)=0 |
virtual std::string | log_level ()=0 |
Public Member Functions inherited from gr::msg_accepter | |
msg_accepter () | |
~msg_accepter () override | |
void | post (pmt::pmt_t which_port, pmt::pmt_t msg) override |
send msg to msg_accepter on port which_port More... | |
Protected Types | |
enum | vcolor { WHITE , GREY , BLACK } |
Protected Member Functions | |
basic_block (void) | |
basic_block (const std::string &name, gr::io_signature::sptr input_signature, gr::io_signature::sptr output_signature) | |
Protected constructor prevents instantiation by non-derived classes. More... | |
void | set_input_signature (gr::io_signature::sptr iosig) |
may only be called during constructor More... | |
void | set_output_signature (gr::io_signature::sptr iosig) |
may only be called during constructor More... | |
void | set_color (vcolor color) |
Allow the flowgraph to set for sorting and partitioning. More... | |
vcolor | color () const |
virtual bool | has_msg_handler (pmt::pmt_t which_port) |
Tests if there is a handler attached to port which_port . More... | |
virtual void | dispatch_msg (pmt::pmt_t which_port, pmt::pmt_t msg) |
template<typename Derived > | |
std::shared_ptr< Derived > | shared_from_base () |
This is meant to be called by derived classes (e.g. block) to get a shared pointer internally. This is needed because std::enable_shared_from_this doesn't seem to work with derived classes in an inheritance hierarchy. More... | |
Protected Attributes | |
std::string | d_name |
gr::io_signature::sptr | d_input_signature |
gr::io_signature::sptr | d_output_signature |
long | d_unique_id |
long | d_symbolic_id |
std::string | d_symbol_name |
std::string | d_symbol_alias |
vcolor | d_color |
bool | d_rpc_set |
gr::logger_ptr | d_logger |
gr::logger_ptr | d_debug_logger |
Default logger. More... | |
msg_queue_map_t | msg_queue |
Verbose logger. More... | |
std::vector< rpcbasic_sptr > | d_rpc_vars |
pmt::pmt_t | d_message_subscribers |
Friends | |
class | flowgraph |
class | flat_flowgraph |
class | tpb_thread_body |
The abstract base class for all signal processing blocks.
Basic blocks are the bare abstraction of an entity that has a name, a set of inputs and outputs, and a message queue. These are never instantiated directly; rather, this is the abstract parent class of both gr_hier_block, which is a recursive container, and block, which implements actual signal processing functions.
|
protected |
|
inlineprotected |
|
protected |
Protected constructor prevents instantiation by non-derived classes.
|
override |
void gr::basic_block::_post | ( | pmt::pmt_t | which_port, |
pmt::pmt_t | msg | ||
) |
Accept msg, place in queue, arrange for thread to be awakened if it's not already.
|
inline |
Returns the block's alias as a string.
|
inline |
Returns the block's alias as PMT.
References pmt::intern().
|
inline |
True if the block has an alias (see set_block_alias).
|
inlinevirtual |
Confirm that ninputs and noutputs is an acceptable combination.
ninputs | number of input streams connected |
noutputs | number of output streams connected |
This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr::io_signatures.
Reimplemented in gr::tagged_stream_block.
|
inlineprotected |
pmt::pmt_t gr::basic_block::delete_head_nowait | ( | pmt::pmt_t | which_port | ) |
|
inlineprotectedvirtual |
References gr::msgport_names::msg().
|
inline |
|
inline |
are all msg ports with handlers empty?
|
inline |
|
inline |
is the queue empty?
|
inline |
|
inline |
|
inline |
|
inlineprotectedvirtual |
Tests if there is a handler attached to port which_port
.
|
inlinevirtual |
Reimplemented in gr::hier_block2.
References pmt::dict_has_key().
Referenced by gr::hier_block2::has_msg_port().
|
inline |
Referenced by gr::operator<<().
|
inline |
void gr::basic_block::insert_tail | ( | pmt::pmt_t | which_port, |
pmt::pmt_t | msg | ||
) |
|
inline |
Ask if this block has been registered to the RPC.
We can only register a block once, so we use this to protect us from calling it multiple times.
|
pure virtual |
Implemented in gr::hier_block2, and gr::block.
|
inlinevirtual |
Reimplemented in gr::hier_block2.
|
inlinevirtual |
Reimplemented in gr::hier_block2.
|
inlinevirtual |
Reimplemented in gr::hier_block2.
void gr::basic_block::message_port_pub | ( | pmt::pmt_t | port_id, |
pmt::pmt_t | msg | ||
) |
void gr::basic_block::message_port_register_in | ( | pmt::pmt_t | port_id | ) |
void gr::basic_block::message_port_register_out | ( | pmt::pmt_t | port_id | ) |
void gr::basic_block::message_port_sub | ( | pmt::pmt_t | port_id, |
pmt::pmt_t | target | ||
) |
void gr::basic_block::message_port_unsub | ( | pmt::pmt_t | port_id, |
pmt::pmt_t | target | ||
) |
pmt::pmt_t gr::basic_block::message_ports_in | ( | ) |
Get input message port names.
Returns the available input message ports for a block. The return object is a PMT vector that is filled with PMT symbols.
pmt::pmt_t gr::basic_block::message_ports_out | ( | ) |
Get output message port names.
Returns the available output message ports for a block. The return object is a PMT vector that is filled with PMT symbols.
pmt::pmt_t gr::basic_block::message_subscribers | ( | pmt::pmt_t | port | ) |
|
inline |
The name of the block
|
inline |
How many messages in the queue?
|
inline |
|
pure virtual |
Implemented in gr::hier_block2, and gr::block.
|
inline |
When the block is registered with the RPC, set this.
void gr::basic_block::set_block_alias | ( | std::string | name | ) |
Set's a new alias for the block; also adds an entry into the block_registry to get the block using either the alias or the original symbol name.
|
inlineprotected |
Allow the flowgraph to set for sorting and partitioning.
|
inlineprotected |
may only be called during constructor
|
pure virtual |
Implemented in gr::hier_block2, and gr::block.
|
inline |
Set the callback that is fired when messages are available.
msg_handler
can be any kind of function pointer or function object that has the signature:
void msg_handler(pmt::pmt msg);
(You may want to use boost::bind to massage your callable into the correct form. See gr::blocks::nop for an example that sets up a class method as the callback.)
Blocks that desire to handle messages must call this method in their constructors to register the handler that will be invoked when messages are available.
If the block inherits from block, the runtime system will ensure that msg_handler is called in a thread-safe manner, such that work and msg_handler will never be called concurrently. This allows msg_handler to update state variables without having to worry about thread-safety issues with work, general_work or another invocation of msg_handler.
If the block inherits from hier_block2, the runtime system will ensure that no reentrant calls are made to msg_handler.
|
inlineprotected |
may only be called during constructor
|
pure virtual |
Implemented in gr::hier_block2, and gr::block.
|
inlinevirtual |
Set up the RPC registered variables.
This must be overloaded by a block that wants to use controlport. This is where rpcbasic_register_{get,set} pointers are created, which then get wrapped as shared pointers (rpcbasic_sptr(...)) and stored using add_rpc_variable.
Reimplemented in gr::top_block.
|
inlineprotected |
This is meant to be called by derived classes (e.g. block) to get a shared pointer internally. This is needed because std::enable_shared_from_this doesn't seem to work with derived classes in an inheritance hierarchy.
|
inline |
The sybolic name of the block, which is used in the block_registry. The name is assigned by the block's constructor and never changes during the life of the block.
|
inline |
basic_block_sptr gr::basic_block::to_basic_block | ( | ) |
|
inline |
|
pure virtual |
Implemented in gr::hier_block2, and gr::block.
|
friend |
|
friend |
|
friend |
|
protected |
|
protected |
Default logger.
|
protected |
|
protected |
Used by blocks to access the logger system.
Referenced by block_gateway::_get_logger().
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
Verbose logger.