GNU Radio Manual and C++ API Reference  3.7.13.4
The Free & Open Software Radio Ecosystem
gr Namespace Reference

Include this header to use the message passing features. More...

Namespaces

 analog
 
 audio
 
 blocks
 
 channels
 
 comedi
 
 digital
 
 dtv
 
 fcd
 
 fec
 
 fft
 
 filter
 
 impl
 
 messages
 
 noaa
 
 pager
 
 qtgui
 
 thread
 
 trellis
 
 uhd
 
 video_sdl
 
 vocoder
 
 wavelet
 
 wxgui
 
 zeromq
 

Classes

class  basic_block
 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. More...
 
class  block
 The abstract base class for all 'terminal' processing blocks.A signal processing flow is constructed by creating a tree of hierarchical blocks, which at any level may also contain terminal nodes that actually implement signal processing functions. This is the base class for all such leaf nodes. More...
 
class  block_detail
 Implementation details to support the signal processing abstractionThis class contains implementation detail that should be "out of sight" of almost all users of GNU Radio. This decoupling also means that we can make changes to the guts without having to recompile everything. More...
 
class  block_gateway
 
struct  block_gw_message_type
 
class  block_registry
 
class  buffer
 Single writer, multiple reader fifo. More...
 
class  buffer_reader
 How we keep track of the readers of a gr::buffer. More...
 
class  edge
 Class representing a connection between to graph endpoints. More...
 
class  endpoint
 Class representing a specific input or output graph endpoint. More...
 
class  feval
 base class for evaluating a function: void -> voidThis class is designed to be subclassed in Python or C++ and is callable from both places. It uses SWIG's "director" feature to implement the magic. More...
 
class  feval_cc
 base class for evaluating a function: complex -> complexThis class is designed to be subclassed in Python or C++ and is callable from both places. It uses SWIG's "director" feature to implement the magic. More...
 
class  feval_dd
 base class for evaluating a function: double -> doubleThis class is designed to be subclassed in Python or C++ and is callable from both places. It uses SWIG's "director" feature to implement the magic. More...
 
class  feval_ll
 base class for evaluating a function: long -> longThis class is designed to be subclassed in Python or C++ and is callable from both places. It uses SWIG's "director" feature to implement the magic. More...
 
class  feval_p
 base class for evaluating a function: pmt -> voidThis class is designed to be subclassed in Python or C++ and is callable from both places. It uses SWIG's "director" feature to implement the magic. More...
 
class  flowgraph
 Class representing a directed, acyclic graph of basic blocks. More...
 
class  fxpt
 fixed point sine and cosine and friends.fixed pt radians


-2**31 -pi 0 0 2**31-1 pi - epsilon More...

 
class  fxpt_nco
 Numerically Controlled Oscillator (NCO) More...
 
class  fxpt_vco
 Voltage Controlled Oscillator (VCO) More...
 
class  hier_block2
 Hierarchical container class for gr::block's and gr::hier_block2's. More...
 
class  io_signature
 i/o signature for input and output ports. More...
 
class  logger
 Logger class for referencing loggers in python. Not needed in C++ (use macros) Wraps and manipulates loggers for python as python has no macros. More...
 
class  message
 Message class. More...
 
class  msg_accepter
 Accepts messages and inserts them into a message queue, then notifies subclass gr::basic_block there is a message pending. More...
 
class  msg_edge
 Class representing a msg connection between to graph msg endpoints. More...
 
class  msg_endpoint
 
class  msg_handler
 abstract class of message handlers More...
 
class  msg_queue
 thread-safe message queue More...
 
class  nco
 base class template for Numerically Controlled Oscillator (NCO) More...
 
class  prefs
 Base class for representing user preferences a la windows INI files.The real implementation is in Python, and is accessible from C++ via the magic of SWIG directors. More...
 
class  py_feval
 
class  py_feval_cc
 
class  py_feval_dd
 
class  py_feval_ll
 
class  py_feval_p
 
class  random
 pseudo random number generator More...
 
class  sync_block
 synchronous 1:1 input to output with historyOverride work to provide the signal processing implementation. More...
 
class  sync_decimator
 synchronous N:1 input to output with historyOverride work to provide the signal processing implementation. More...
 
class  sync_interpolator
 synchronous 1:N input to output with historyOverride work to provide the signal processing implementation. More...
 
struct  sys_pri
 
class  tag_checker
 
struct  tag_t
 
class  tagged_stream_block
 Block that operates on PDUs in form of tagged streamsOverride work to provide the signal processing implementation. More...
 
class  top_block
 Top-level hierarchical block representing a flowgraph. More...
 
struct  tpb_detail
 used by thread-per-block scheduler More...
 

Typedefs

typedef void * logger_ptr
 
typedef std::vector< basic_block_sptr > basic_block_vector_t
 
typedef std::vector< basic_block_sptr >::iterator basic_block_viter_t
 
typedef std::vector< block_sptr > block_vector_t
 
typedef std::vector< block_sptr >::iterator block_viter_t
 
typedef std::vector< endpointendpoint_vector_t
 
typedef std::vector< endpoint >::iterator endpoint_viter_t
 
typedef std::vector< edgeedge_vector_t
 
typedef std::vector< edge >::iterator edge_viter_t
 
typedef std::vector< msg_edgemsg_edge_vector_t
 
typedef std::vector< msg_edge >::iterator msg_edge_viter_t
 
typedef signed long long high_res_timer_type
 Typedef for the timer tick count. More...
 
typedef std::map< std::string, std::map< std::string, std::string > > config_map_t
 
typedef std::map< std::string, std::map< std::string, std::string > >::iterator config_map_itr
 
typedef std::map< std::string, std::string > config_map_elem_t
 
typedef std::map< std::string, std::string >::iterator config_map_elem_itr
 

Enumerations

enum  block_gw_work_type { GR_BLOCK_GW_WORK_GENERAL, GR_BLOCK_GW_WORK_SYNC, GR_BLOCK_GW_WORK_DECIM, GR_BLOCK_GW_WORK_INTERP }
 
enum  block_gw_work_return_type { WORK_CALLED_PRODUCE = -2, WORK_DONE = -1 }
 Magic return values from general_work, gr::block::WORK_CALLED_PRODUCE. More...
 
enum  tag_propagation_policy_t { TPP_DONT = 0, TPP_ALL_TO_ALL = 1, TPP_ONE_TO_ONE = 2, TPP_CUSTOM = 3 }
 
enum  endianness_t { GR_MSB_FIRST, GR_LSB_FIRST }
 
enum  rt_status_t { RT_OK = 0, RT_NOT_IMPLEMENTED, RT_NO_PRIVS, RT_OTHER_ERROR }
 
enum  rt_sched_policy { RT_SCHED_RR = 0, RT_SCHED_FIFO = 1 }
 

Functions

GR_RUNTIME_API bool configure_default_loggers (gr::logger_ptr &l, gr::logger_ptr &d, const std::string name)
 
GR_RUNTIME_API bool update_logger_alias (const std::string &name, const std::string &alias)
 
bool operator< (basic_block_sptr lhs, basic_block_sptr rhs)
 
GR_RUNTIME_API long basic_block_ncurrently_allocated ()
 
std::ostream & operator<< (std::ostream &os, basic_block_sptr basic_block)
 
GR_RUNTIME_API std::ostream & operator<< (std::ostream &os, const block *m)
 
GR_RUNTIME_API block_detail_sptr make_block_detail (unsigned int ninputs, unsigned int noutputs)
 
GR_RUNTIME_API long block_detail_ncurrently_allocated ()
 
GR_RUNTIME_API buffer_sptr make_buffer (int nitems, size_t sizeof_item, block_sptr link=block_sptr())
 Allocate a buffer that holds at least nitems of size sizeof_item. More...
 
GR_RUNTIME_API buffer_reader_sptr buffer_add_reader (buffer_sptr buf, int nzero_preload, block_sptr link=block_sptr(), int delay=0)
 Create a new gr::buffer_reader and attach it to buffer buf. More...
 
GR_RUNTIME_API long buffer_ncurrently_allocated ()
 returns # of buffers currently allocated More...
 
GR_RUNTIME_API long buffer_reader_ncurrently_allocated ()
 returns # of buffer_readers currently allocated More...
 
GR_RUNTIME_API const std::string prefix ()
 return SYSCONFDIR. Typically ${CMAKE_INSTALL_PREFIX}/etc or /etc More...
 
GR_RUNTIME_API const std::string sysconfdir ()
 return SYSCONFDIR. Typically ${CMAKE_INSTALL_PREFIX}/etc or /etc More...
 
GR_RUNTIME_API const std::string prefsdir ()
 return preferences file directory. Typically ${SYSCONFDIR}/etc/conf.d More...
 
GR_RUNTIME_API const std::string build_date ()
 return date/time of build, as set when 'cmake' is run More...
 
GR_RUNTIME_API const std::string version ()
 return version string defined by cmake (GrVersion.cmake) More...
 
GR_RUNTIME_API const std::string major_version ()
 return just the major version defined by cmake More...
 
GR_RUNTIME_API const std::string api_version ()
 return just the api version defined by cmake More...
 
GR_RUNTIME_API const std::string minor_version ()
 returnjust the minor version defined by cmake More...
 
GR_RUNTIME_API const std::string c_compiler ()
 return C compiler used to build this version of GNU Radio More...
 
GR_RUNTIME_API const std::string cxx_compiler ()
 return C++ compiler used to build this version of GNU Radio More...
 
GR_RUNTIME_API const std::string compiler_flags ()
 return C and C++ compiler flags used to build this version of GNU Radio More...
 
GR_RUNTIME_API const std::string build_time_enabled_components ()
 return build-time enabled components More...
 
GR_RUNTIME_API double feval_dd_example (feval_dd *f, double x)
 trivial examples / test cases showing C++ calling Python code More...
 
GR_RUNTIME_API gr_complex feval_cc_example (feval_cc *f, gr_complex x)
 
GR_RUNTIME_API long feval_ll_example (feval_ll *f, long x)
 
GR_RUNTIME_API void feval_example (feval *f)
 
GR_RUNTIME_API flowgraph_sptr make_flowgraph ()
 
std::ostream & operator<< (std::ostream &os, const endpoint endp)
 
std::ostream & operator<< (std::ostream &os, const edge edge)
 
std::ostream & operator<< (std::ostream &os, const msg_endpoint endp)
 
std::ostream & operator<< (std::ostream &os, const msg_edge edge)
 
std::string dot_graph_fg (flowgraph_sptr fg)
 
GR_RUNTIME_API hier_block2_sptr make_hier_block2 (const std::string &name, gr::io_signature::sptr input_signature, gr::io_signature::sptr output_signature)
 public constructor for hier_block2 More...
 
GR_RUNTIME_API std::string dot_graph (hier_block2_sptr hierblock2)
 Return hierarchical block's flow graph represented in dot language. More...
 
high_res_timer_type high_res_timer_now (void)
 Get the current time in ticks. More...
 
high_res_timer_type high_res_timer_now_perfmon (void)
 Get the current time in ticks - for performance monitoring. More...
 
high_res_timer_type high_res_timer_tps (void)
 Get the number of ticks per second. More...
 
high_res_timer_type high_res_timer_epoch (void)
 Get the tick count at the epoch. More...
 
static bool is_power_of_2 (long x)
 
GR_RUNTIME_API float fast_atan2f (float y, float x)
 Fast arc tangent using table lookup and linear interpolation. More...
 
static float fast_atan2f (gr_complex z)
 
static float branchless_clip (float x, float clip)
 
static float clip (float x, float clip)
 
static unsigned int binary_slicer (float x)
 
static unsigned int quad_45deg_slicer (float r, float i)
 
static unsigned int quad_0deg_slicer (float r, float i)
 
static unsigned int quad_45deg_slicer (gr_complex x)
 
static unsigned int quad_0deg_slicer (gr_complex x)
 
static unsigned int branchless_binary_slicer (float x)
 
static unsigned int branchless_quad_0deg_slicer (float r, float i)
 
static unsigned int branchless_quad_0deg_slicer (gr_complex x)
 
static unsigned int branchless_quad_45deg_slicer (float r, float i)
 
static unsigned int branchless_quad_45deg_slicer (gr_complex x)
 
static size_t p2_round_down (size_t x, size_t pow2)
 
static size_t p2_round_up (size_t x, size_t pow2)
 
static size_t p2_modulo (size_t x, size_t pow2)
 
static size_t p2_modulo_neg (size_t x, size_t pow2)
 
GR_RUNTIME_API long message_ncurrently_allocated ()
 
GR_RUNTIME_API rt_status_t enable_realtime_scheduling ()
 If possible, enable high-priority "real time" scheduling. More...
 
GR_RUNTIME_API void sincos (double x, double *sin, double *cos)
 
GR_RUNTIME_API void sincosf (float x, float *sin, float *cos)
 
GR_RUNTIME_API const char * tmp_path ()
 directory to create temporary files More...
 
GR_RUNTIME_API const char * appdata_path ()
 directory to store application data More...
 
GR_RUNTIME_API const char * userconf_path ()
 directory to store user configuration More...
 
GR_RUNTIME_API top_block_sptr make_top_block (const std::string &name)
 

Detailed Description

Include this header to use the message passing features.

System independent way to ask for realtime scheduling.

See also
sys_pri.h

Typedef Documentation

typedef std::vector<basic_block_sptr> gr::basic_block_vector_t
typedef std::vector<basic_block_sptr>::iterator gr::basic_block_viter_t
typedef std::vector<block_sptr> gr::block_vector_t
typedef std::vector<block_sptr>::iterator gr::block_viter_t
typedef std::map<std::string, std::string>::iterator gr::config_map_elem_itr
typedef std::map<std::string, std::string> gr::config_map_elem_t
typedef std::map< std::string, std::map<std::string, std::string> >::iterator gr::config_map_itr
typedef std::map< std::string, std::map<std::string, std::string> > gr::config_map_t
typedef std::vector<edge> gr::edge_vector_t
typedef std::vector<edge>::iterator gr::edge_viter_t
typedef std::vector<endpoint> gr::endpoint_vector_t
typedef std::vector<endpoint>::iterator gr::endpoint_viter_t
typedef signed long long gr::high_res_timer_type

Typedef for the timer tick count.

typedef void* gr::logger_ptr
typedef std::vector<msg_edge> gr::msg_edge_vector_t
typedef std::vector<msg_edge>::iterator gr::msg_edge_viter_t

Enumeration Type Documentation

Magic return values from general_work, gr::block::WORK_CALLED_PRODUCE.

Enumerator
WORK_CALLED_PRODUCE 
WORK_DONE 

The work type enum tells the gateway what kind of block to implement. The choices are familiar gnuradio block overloads (sync, decim, interp).

Enumerator
GR_BLOCK_GW_WORK_GENERAL 
GR_BLOCK_GW_WORK_SYNC 
GR_BLOCK_GW_WORK_DECIM 
GR_BLOCK_GW_WORK_INTERP 
Enumerator
GR_MSB_FIRST 
GR_LSB_FIRST 
Enumerator
RT_SCHED_RR 
RT_SCHED_FIFO 
Enumerator
RT_OK 
RT_NOT_IMPLEMENTED 
RT_NO_PRIVS 
RT_OTHER_ERROR 
Enumerator
TPP_DONT 
TPP_ALL_TO_ALL 
TPP_ONE_TO_ONE 
TPP_CUSTOM 

Function Documentation

GR_RUNTIME_API const std::string gr::api_version ( )

return just the api version defined by cmake

GR_RUNTIME_API const char* gr::appdata_path ( )

directory to store application data

GR_RUNTIME_API long gr::basic_block_ncurrently_allocated ( )
static unsigned int gr::binary_slicer ( float  x)
inlinestatic
GR_RUNTIME_API long gr::block_detail_ncurrently_allocated ( )
static unsigned int gr::branchless_binary_slicer ( float  x)
inlinestatic
static float gr::branchless_clip ( float  x,
float  clip 
)
inlinestatic
static unsigned int gr::branchless_quad_0deg_slicer ( float  r,
float  i 
)
inlinestatic
static unsigned int gr::branchless_quad_0deg_slicer ( gr_complex  x)
inlinestatic
static unsigned int gr::branchless_quad_45deg_slicer ( float  r,
float  i 
)
inlinestatic
static unsigned int gr::branchless_quad_45deg_slicer ( gr_complex  x)
inlinestatic
GR_RUNTIME_API buffer_reader_sptr gr::buffer_add_reader ( buffer_sptr  buf,
int  nzero_preload,
block_sptr  link = block_sptr(),
int  delay = 0 
)

Create a new gr::buffer_reader and attach it to buffer buf.

Parameters
bufis the buffer the gr::buffer_reader reads from.
nzero_preload– number of zero items to "preload" into buffer.
linkis the block that reads from the buffer using this gr::buffer_reader.
delayOptional setting to declare the buffer's sample delay.
GR_RUNTIME_API long gr::buffer_ncurrently_allocated ( )

returns # of buffers currently allocated

GR_RUNTIME_API long gr::buffer_reader_ncurrently_allocated ( )

returns # of buffer_readers currently allocated

GR_RUNTIME_API const std::string gr::build_date ( )

return date/time of build, as set when 'cmake' is run

GR_RUNTIME_API const std::string gr::build_time_enabled_components ( )

return build-time enabled components

GR_RUNTIME_API const std::string gr::c_compiler ( )

return C compiler used to build this version of GNU Radio

static float gr::clip ( float  x,
float  clip 
)
inlinestatic
GR_RUNTIME_API const std::string gr::compiler_flags ( )

return C and C++ compiler flags used to build this version of GNU Radio

GR_RUNTIME_API bool gr::configure_default_loggers ( gr::logger_ptr l,
gr::logger_ptr d,
const std::string  name 
)

Function to use the GR prefs files to get and setup the two default loggers defined there. The loggers are unique to the class in which they are called, and we pass it the name to identify where the log message originates from. For a GNU Radio block, we use 'alias()' for this value, and this is set up for us automatically in gr::block.

Referenced by gr::logger::add_rollingfile_appender(), thrift_application_base< TserverBase, TserverClass >::thrift_application_base(), and thrift_server_template< TserverBase, TserverClass, TImplClass >::thrift_server_template().

GR_RUNTIME_API const std::string gr::cxx_compiler ( )

return C++ compiler used to build this version of GNU Radio

GR_RUNTIME_API std::string gr::dot_graph ( hier_block2_sptr  hierblock2)

Return hierarchical block's flow graph represented in dot language.

Referenced by gr::hier_block2::message_port_register_hier_out().

std::string gr::dot_graph_fg ( flowgraph_sptr  fg)

Referenced by operator<<().

static float gr::fast_atan2f ( gr_complex  z)
inlinestatic

References fast_atan2f().

GR_RUNTIME_API gr_complex gr::feval_cc_example ( feval_cc f,
gr_complex  x 
)

Referenced by gr::feval_p::feval_p().

GR_RUNTIME_API double gr::feval_dd_example ( feval_dd f,
double  x 
)

trivial examples / test cases showing C++ calling Python code

Referenced by gr::feval_p::feval_p().

GR_RUNTIME_API void gr::feval_example ( feval f)

Referenced by gr::feval_p::feval_p().

GR_RUNTIME_API long gr::feval_ll_example ( feval_ll f,
long  x 
)

Referenced by gr::feval_p::feval_p().

gr::high_res_timer_type gr::high_res_timer_epoch ( void  )
inline

Get the tick count at the epoch.

References high_res_timer_now(), and high_res_timer_tps().

Referenced by TimeScaleData::setZeroTime().

gr::high_res_timer_type gr::high_res_timer_now ( void  )
inline

Get the current time in ticks.

Referenced by high_res_timer_epoch(), and high_res_timer_now_perfmon().

gr::high_res_timer_type gr::high_res_timer_now_perfmon ( void  )
inline

Get the current time in ticks - for performance monitoring.

References high_res_timer_now().

gr::high_res_timer_type gr::high_res_timer_tps ( void  )
inline

Get the number of ticks per second.

Referenced by high_res_timer_epoch().

static bool gr::is_power_of_2 ( long  x)
inlinestatic

References fast_atan2f(), and GR_RUNTIME_API.

GR_RUNTIME_API const std::string gr::major_version ( )

return just the major version defined by cmake

GR_RUNTIME_API block_detail_sptr gr::make_block_detail ( unsigned int  ninputs,
unsigned int  noutputs 
)
GR_RUNTIME_API buffer_sptr gr::make_buffer ( int  nitems,
size_t  sizeof_item,
block_sptr  link = block_sptr() 
)

Allocate a buffer that holds at least nitems of size sizeof_item.

The total size of the buffer will be rounded up to a system dependent boundary. This is typically the system page size, but under MS windows is 64KB.

Parameters
nitemsis the minimum number of items the buffer will hold.
sizeof_itemis the size of an item in bytes.
linkis the block that writes to this buffer.
GR_RUNTIME_API flowgraph_sptr gr::make_flowgraph ( )
GR_RUNTIME_API hier_block2_sptr gr::make_hier_block2 ( const std::string &  name,
gr::io_signature::sptr  input_signature,
gr::io_signature::sptr  output_signature 
)

public constructor for hier_block2

GR_RUNTIME_API top_block_sptr gr::make_top_block ( const std::string &  name)
GR_RUNTIME_API long gr::message_ncurrently_allocated ( )

Referenced by gr::message::length().

GR_RUNTIME_API const std::string gr::minor_version ( )

returnjust the minor version defined by cmake

bool gr::operator< ( basic_block_sptr  lhs,
basic_block_sptr  rhs 
)
inline
std::ostream& gr::operator<< ( std::ostream &  os,
const endpoint  endp 
)
inline
std::ostream& gr::operator<< ( std::ostream &  os,
const edge  edge 
)
inline

References gr::edge::dst(), and gr::edge::src().

std::ostream& gr::operator<< ( std::ostream &  os,
const msg_endpoint  endp 
)
inline
std::ostream& gr::operator<< ( std::ostream &  os,
const msg_edge  edge 
)
inline
std::ostream& gr::operator<< ( std::ostream &  os,
basic_block_sptr  basic_block 
)
inline

Referenced by pmt::acons().

GR_RUNTIME_API std::ostream& gr::operator<< ( std::ostream &  os,
const block m 
)
static size_t gr::p2_modulo ( size_t  x,
size_t  pow2 
)
inlinestatic
Parameters
xany value
pow2must be a power of 2
Returns
x modulo pow2.

Referenced by p2_modulo_neg().

static size_t gr::p2_modulo_neg ( size_t  x,
size_t  pow2 
)
inlinestatic
Parameters
xany value
pow2must be a power of 2
Returns
pow2 - (x modulo pow2).

References p2_modulo().

static size_t gr::p2_round_down ( size_t  x,
size_t  pow2 
)
inlinestatic
Parameters
xany value
pow2must be a power of 2
Returns
x rounded down to a multiple of pow2.

Referenced by p2_round_up().

static size_t gr::p2_round_up ( size_t  x,
size_t  pow2 
)
inlinestatic
Parameters
xany value
pow2must be a power of 2
Returns
x rounded up to a multiple of pow2.

References p2_round_down().

GR_RUNTIME_API const std::string gr::prefix ( )

return SYSCONFDIR. Typically ${CMAKE_INSTALL_PREFIX}/etc or /etc

GR_RUNTIME_API const std::string gr::prefsdir ( )

return preferences file directory. Typically ${SYSCONFDIR}/etc/conf.d

static unsigned int gr::quad_0deg_slicer ( float  r,
float  i 
)
inlinestatic

Referenced by quad_0deg_slicer().

static unsigned int gr::quad_0deg_slicer ( gr_complex  x)
inlinestatic

References quad_0deg_slicer().

static unsigned int gr::quad_45deg_slicer ( float  r,
float  i 
)
inlinestatic

Referenced by quad_45deg_slicer().

static unsigned int gr::quad_45deg_slicer ( gr_complex  x)
inlinestatic

References quad_45deg_slicer().

GR_RUNTIME_API void gr::sincos ( double  x,
double *  sin,
double *  cos 
)
GR_RUNTIME_API void gr::sincosf ( float  x,
float *  sin,
float *  cos 
)
GR_RUNTIME_API const std::string gr::sysconfdir ( )

return SYSCONFDIR. Typically ${CMAKE_INSTALL_PREFIX}/etc or /etc

GR_RUNTIME_API const char* gr::tmp_path ( )

directory to create temporary files

GR_RUNTIME_API bool gr::update_logger_alias ( const std::string &  name,
const std::string &  alias 
)
GR_RUNTIME_API const char* gr::userconf_path ( )

directory to store user configuration

GR_RUNTIME_API const std::string gr::version ( )

return version string defined by cmake (GrVersion.cmake)