GNU Radio C++ API
gr_basic_block Class Reference

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...

#include <gr_basic_block.h>

Inheritance diagram for gr_basic_block:

Public Member Functions

virtual ~gr_basic_block ()
 
long unique_id () const
 
std::string name () const
 
gr_io_signature_sptr input_signature () const
 
gr_io_signature_sptr output_signature () const
 
gr_basic_block_sptr to_basic_block ()
 
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 (T msg_handler)
 Set the callback that is fired when messages are available. More...
 
- Public Member Functions inherited from gr_msg_accepter
 gr_msg_accepter ()
 
 ~gr_msg_accepter ()
 
void post (pmt::pmt_t msg)
 send msg to msg_accepter More...
 
- Public Member Functions inherited from gruel::msg_accepter
 msg_accepter ()
 
virtual ~msg_accepter ()
 

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. 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
 

Protected Attributes

std::string d_name
 
gr_io_signature_sptr d_input_signature
 
gr_io_signature_sptr d_output_signature
 
long d_unique_id
 
vcolor d_color
 

Friends

class gr_flowgraph
 
class gr_flat_flowgraph
 
class gr_tpb_thread_body
 

Detailed Description

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.

Member Enumeration Documentation

enum gr_basic_block::vcolor
protected
Enumerator
WHITE 
GREY 
BLACK 

Constructor & Destructor Documentation

gr_basic_block::gr_basic_block ( void  )
inlineprotected
gr_basic_block::gr_basic_block ( const std::string &  name,
gr_io_signature_sptr  input_signature,
gr_io_signature_sptr  output_signature 
)
protected

Protected constructor prevents instantiation by non-derived classes.

virtual gr_basic_block::~gr_basic_block ( )
virtual

Member Function Documentation

virtual bool gr_basic_block::check_topology ( int  ninputs,
int  noutputs 
)
inlinevirtual

Confirm that ninputs and noutputs is an acceptable combination.

Parameters
ninputsnumber of input streams connected
noutputsnumber 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_test, comedi_source_s, comedi_sink_s, gr_align_on_samplenumbers_ss, gr_packed_to_unpacked_bb, gr_packed_to_unpacked_ii, gr_packed_to_unpacked_ss, audio_alsa_source, gr_unpacked_to_packed_bb, gr_unpacked_to_packed_ii, gr_unpacked_to_packed_ss, audio_portaudio_sink, audio_alsa_sink, audio_osx_source, audio_portaudio_source, audio_jack_sink, audio_jack_source, 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_oscope_sink_f, gr_deinterleave, gr_interleave, gr_copy, and gr_kludge_copy.

Referenced by gr_test::set_check_topology().

vcolor gr_basic_block::color ( ) const
inlineprotected
gr_io_signature_sptr gr_basic_block::input_signature ( ) const
inline
std::string gr_basic_block::name ( ) const
inline
gr_io_signature_sptr gr_basic_block::output_signature ( ) const
inline
void gr_basic_block::set_color ( vcolor  color)
inlineprotected

Allow the flowgraph to set for sorting and partitioning.

void gr_basic_block::set_input_signature ( gr_io_signature_sptr  iosig)
inlineprotected

may only be called during constructor

template<typename T >
void gr_basic_block::set_msg_handler ( 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.

void gr_basic_block::set_output_signature ( gr_io_signature_sptr  iosig)
inlineprotected

may only be called during constructor

gr_basic_block_sptr gr_basic_block::to_basic_block ( )
long gr_basic_block::unique_id ( ) const
inline

Friends And Related Function Documentation

friend class gr_flat_flowgraph
friend
friend class gr_flowgraph
friend
friend class gr_tpb_thread_body
friend

Member Data Documentation

vcolor gr_basic_block::d_color
protected
gr_io_signature_sptr gr_basic_block::d_input_signature
protected
std::string gr_basic_block::d_name
protected
gr_io_signature_sptr gr_basic_block::d_output_signature
protected
long gr_basic_block::d_unique_id
protected

The documentation for this class was generated from the following file: