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 gr_block, which implements actual signal processing functions.
More...
Public Member Functions |
virtual | ~gr_basic_block () |
long | unique_id () const |
long | symbolic_id () const |
std::string | name () const |
std::string | symbol_name () const |
gr_io_signature_sptr | input_signature () const |
gr_io_signature_sptr | output_signature () const |
gr_basic_block_sptr | to_basic_block () |
bool | alias_set () |
std::string | alias () |
pmt::pmt_t | alias_pmt () |
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.
|
pmt::pmt_t | message_ports_out () |
| Get output message port names.
|
void | _post (pmt::pmt_t which_port, pmt::pmt_t msg) |
bool | empty_p (pmt::pmt_t which_port) |
| is the queue empty?
|
bool | empty_p () |
size_t | nmsgs (pmt::pmt_t which_port) |
| How many messages in the queue?
|
void | insert_tail (pmt::pmt_t which_port, pmt::pmt_t msg) |
pmt::pmt_t | delete_head_nowait (pmt::pmt_t which_port) |
pmt::pmt_t | delete_head_blocking (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) |
virtual bool | check_topology (int ninputs, int noutputs) |
| Confirm that ninputs and noutputs is an acceptable combination.
|
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.
|
Protected Types |
enum | vcolor { WHITE,
GREY,
BLACK
} |
Protected Member Functions |
| gr_basic_block (void) |
| gr_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.
|
void | set_input_signature (gr_io_signature_sptr iosig) |
| may only be called during constructor
|
void | set_output_signature (gr_io_signature_sptr iosig) |
| may only be called during constructor
|
void | set_color (vcolor color) |
| Allow the flowgraph to set for sorting and partitioning.
|
vcolor | color () const |
bool | has_msg_handler (pmt::pmt_t which_port) |
| Tests if there is a handler attached to port which_port .
|
virtual void | dispatch_msg (pmt::pmt_t which_port, pmt::pmt_t msg) |
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 |
msg_queue_map_t | msg_queue |
pmt::pmt_t | message_subscribers |
Friends |
class | gr_flowgraph |
class | gr_flat_flowgraph |
class | gr_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 gr_block, which implements actual signal processing functions.
virtual bool gr_basic_block::check_topology |
( |
int |
ninputs, |
|
|
int |
noutputs |
|
) |
| [inline, virtual] |
Confirm that ninputs and noutputs is an acceptable combination.
- Parameters:
-
ninputs | number of input streams connected |
noutputs | number of output streams connected |
- Returns:
- true if this is a valid configuration for this block.
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_pfb_clock_sync_ccf, gr_pfb_clock_sync_fff, gr_align_on_samplenumbers_ss, gr_copy, gr_deinterleave, gr_interleave, gr_kludge_copy, gr_test, gr_oscope_sink_f, audio_alsa_sink, audio_alsa_source, audio_jack_sink, audio_jack_source, audio_osx_source, audio_portaudio_sink, audio_portaudio_source, gr::blocks::copy_impl, gr::blocks::deinterleave_impl, gr::blocks::interleave_impl, comedi_sink_s, comedi_source_s, digital_pfb_clock_sync_ccf, digital_pfb_clock_sync_fff, gr_chunks_to_symbols_bc, gr_chunks_to_symbols_bf, gr_chunks_to_symbols_ic, gr_chunks_to_symbols_if, gr_chunks_to_symbols_sc, gr_chunks_to_symbols_sf, gr_packed_to_unpacked_bb, gr_packed_to_unpacked_ii, gr_packed_to_unpacked_ss, gr_unpacked_to_packed_bb, gr_unpacked_to_packed_ii, gr_unpacked_to_packed_ss, gr::blocks::packed_to_unpacked_bb_impl, gr::blocks::packed_to_unpacked_ii_impl, gr::blocks::packed_to_unpacked_ss_impl, gr::blocks::unpacked_to_packed_bb_impl, gr::blocks::unpacked_to_packed_ii_impl, gr::blocks::unpacked_to_packed_ss_impl, digital_chunks_to_symbols_bc, digital_chunks_to_symbols_bf, digital_chunks_to_symbols_ic, digital_chunks_to_symbols_if, digital_chunks_to_symbols_sc, and digital_chunks_to_symbols_sf.
References void().
Referenced by gr_test::set_check_topology().
template<typename T >
void gr_basic_block::set_msg_handler |
( |
pmt::pmt_t |
which_port, |
|
|
T |
msg_handler |
|
) |
| [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_nop.{h,cc} 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 gr_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 gr_hier_block2, the runtime system will ensure that no reentrant calls are made to msg_handler.