virtual const std::vector< std::vector< T > > & get_A () const =0
Returns the current matrix. More...
virtual bool set_A (const std::vector< std::vector< T > > &new_A)=0
Sets the matrix to a new value new_A
. Returns true if the new matrix was valid and could be changed. More...
virtual int work (int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items)=0
just like gr::block::general_work , only this arranges to call consume_each for you More...
void forecast (int noutput_items, gr_vector_int &ninput_items_required) override
Estimate input requirements given output request. More...
int general_work (int noutput_items, gr_vector_int &ninput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) override
compute output items from input items More...
int fixed_rate_ninput_to_noutput (int ninput) override
Given ninput samples, return number of output samples that will be produced. N.B. this is only defined if fixed_rate returns true. Generally speaking, you don't need to override this. More...
int fixed_rate_noutput_to_ninput (int noutput) override
Given noutput samples, return number of input samples required to produce noutput. N.B. this is only defined if fixed_rate returns true. Generally speaking, you don't need to override this. More...
~block () override
unsigned history () const
void set_history (unsigned history )
void declare_sample_delay (int which, unsigned delay)
void declare_sample_delay (unsigned delay)
unsigned sample_delay (int which) const
bool fixed_rate () const
Return true if this block has a fixed input to output rate. More...
virtual void forecast (int noutput_items, gr_vector_int &ninput_items_required)
Estimate input requirements given output request. More...
virtual int general_work (int noutput_items, gr_vector_int &ninput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items)
compute output items from input items More...
virtual bool start ()
Called to enable drivers, etc for i/o devices. More...
virtual bool stop ()
Called to disable drivers, etc for i/o devices. More...
void set_output_multiple (int multiple)
Constrain the noutput_items argument passed to forecast and general_work. More...
int output_multiple () const
bool output_multiple_set () const
void set_alignment (int multiple)
Constrains buffers to work on a set item alignment (for SIMD) More...
int alignment () const
void set_unaligned (int na)
int unaligned () const
void set_is_unaligned (bool u)
bool is_unaligned () const
void consume (int which_input, int how_many_items)
Tell the scheduler how_many_items
of input stream which_input
were consumed. More...
void consume_each (int how_many_items)
Tell the scheduler how_many_items
were consumed on each input stream. More...
void produce (int which_output, int how_many_items)
Tell the scheduler how_many_items
were produced on output stream which_output
. More...
void set_relative_rate (double relative_rate )
Set the approximate output rate / input rate. More...
void set_inverse_relative_rate (double inverse_relative_rate)
Set the approximate output rate / input rate using its reciprocal. More...
void set_relative_rate (uint64_t interpolation, uint64_t decimation)
Set the approximate output rate / input rate as an integer ratio. More...
double relative_rate () const
return the approximate output rate / input rate More...
uint64_t relative_rate_i () const
return the numerator, or interpolation rate, of the approximate output rate / input rate More...
uint64_t relative_rate_d () const
return the denominator, or decimation rate, of the approximate output rate / input rate More...
mpq_class & mp_relative_rate ()
return a reference to the multiple precision rational representation of the approximate output rate / input rate More...
virtual int fixed_rate_ninput_to_noutput (int ninput)
Given ninput samples, return number of output samples that will be produced. N.B. this is only defined if fixed_rate returns true. Generally speaking, you don't need to override this. More...
virtual int fixed_rate_noutput_to_ninput (int noutput)
Given noutput samples, return number of input samples required to produce noutput. N.B. this is only defined if fixed_rate returns true. Generally speaking, you don't need to override this. More...
uint64_t nitems_read (unsigned int which_input)
Return the number of items read on input stream which_input. More...
uint64_t nitems_written (unsigned int which_output)
Return the number of items written on output stream which_output. More...
tag_propagation_policy_t tag_propagation_policy ()
Asks for the policy used by the scheduler to moved tags downstream. More...
void set_tag_propagation_policy (tag_propagation_policy_t p)
Set the policy by the scheduler to determine how tags are moved downstream. More...
int min_noutput_items () const
Return the minimum number of output items this block can produce during a call to work. More...
void set_min_noutput_items (int m)
Set the minimum number of output items this block can produce during a call to work. More...
int max_noutput_items ()
Return the maximum number of output items this block will handle during a call to work. More...
void set_max_noutput_items (int m)
Set the maximum number of output items this block will handle during a call to work. More...
void unset_max_noutput_items ()
Clear the switch for using the max_noutput_items value of this block. More...
bool is_set_max_noutput_items ()
Ask the block if the flag is or is not set to use the internal value of max_noutput_items during a call to work. More...
void expand_minmax_buffer (int port)
long max_output_buffer (size_t i)
Returns max buffer size on output port i
. More...
void set_max_output_buffer (long max_output_buffer )
Request limit on max buffer size on all output ports. More...
void set_max_output_buffer (int port, long max_output_buffer )
Request limit on max buffer size on output port port
. More...
long min_output_buffer (size_t i)
Returns min buffer size on output port i
. More...
void set_min_output_buffer (long min_output_buffer )
Request limit on the minimum buffer size on all output ports. More...
void set_min_output_buffer (int port, long min_output_buffer )
Request limit on min buffer size on output port port
. More...
void set_blkd_input_timer_value (unsigned int timer_value_ms)
DEPRECATED Configure the timer set when input is blocked port
. More...
unsigned int blkd_input_timer_value ()
DEPRECATED Returns timer value set when input is blocked. More...
void allocate_detail (int ninputs, int noutputs, const std::vector< int > &downstream_max_nitems_vec, const std::vector< uint64_t > &downstream_lcm_nitems_vec, const std::vector< uint32_t > &downstream_max_out_mult_vec)
Allocate the block_detail and necessary output buffers for this block. More...
buffer_sptr replace_buffer (size_t src_port, size_t dst_port, block_sptr block_owner)
Replace the block's buffer with a new one owned by the block_owner parameter. More...
float pc_noutput_items ()
Gets instantaneous noutput_items performance counter. More...
float pc_noutput_items_avg ()
Gets average noutput_items performance counter. More...
float pc_noutput_items_var ()
Gets variance of noutput_items performance counter. More...
float pc_nproduced ()
Gets instantaneous num items produced performance counter. More...
float pc_nproduced_avg ()
Gets average num items produced performance counter. More...
float pc_nproduced_var ()
Gets variance of num items produced performance counter. More...
float pc_input_buffers_full (int which)
Gets instantaneous fullness of which
input buffer. More...
float pc_input_buffers_full_avg (int which)
Gets average fullness of which
input buffer. More...
float pc_input_buffers_full_var (int which)
Gets variance of fullness of which
input buffer. More...
std::vector< float > pc_input_buffers_full ()
Gets instantaneous fullness of all input buffers. More...
std::vector< float > pc_input_buffers_full_avg ()
Gets average fullness of all input buffers. More...
std::vector< float > pc_input_buffers_full_var ()
Gets variance of fullness of all input buffers. More...
float pc_output_buffers_full (int which)
Gets instantaneous fullness of which
output buffer. More...
float pc_output_buffers_full_avg (int which)
Gets average fullness of which
output buffer. More...
float pc_output_buffers_full_var (int which)
Gets variance of fullness of which
output buffer. More...
std::vector< float > pc_output_buffers_full ()
Gets instantaneous fullness of all output buffers. More...
std::vector< float > pc_output_buffers_full_avg ()
Gets average fullness of all output buffers. More...
std::vector< float > pc_output_buffers_full_var ()
Gets variance of fullness of all output buffers. More...
float pc_work_time ()
Gets instantaneous clock cycles spent in work. More...
float pc_work_time_avg ()
Gets average clock cycles spent in work. More...
float pc_work_time_var ()
Gets average clock cycles spent in work. More...
float pc_work_time_total ()
Gets total clock cycles spent in work. More...
float pc_throughput_avg ()
Gets average throughput. More...
void reset_perf_counters ()
Resets the performance counters. More...
void setup_pc_rpc ()
Sets up export of perf. counters to ControlPort. Only called by the scheduler. More...
bool is_pc_rpc_set () const
Checks if this block is already exporting perf. counters to ControlPort. More...
void no_pc_rpc ()
If the block calls this in its constructor, it's perf. counters will not be exported. More...
void set_processor_affinity (const std::vector< int > &mask) override
Set the thread's affinity to processor core n
. More...
void unset_processor_affinity () override
Remove processor affinity to a specific core. More...
std::vector< int > processor_affinity () override
Get the current processor affinity. More...
int active_thread_priority ()
Get the current thread priority in use. More...
int thread_priority ()
Get the current thread priority stored. More...
int set_thread_priority (int priority)
Set the current thread priority. More...
bool update_rate () const
void system_handler (pmt::pmt_t msg)
the system message handler More...
void set_log_level (const std::string &level) override
Set the logger's output level. More...
std::string log_level () override
Get the logger's output level. More...
bool finished ()
returns true when execution has completed due to a message connection More...
block_detail_sptr detail () const
void set_detail (block_detail_sptr detail )
void notify_msg_neighbors ()
Tell msg neighbors we are finished. More...
void clear_finished ()
Make sure we don't think we are finished. More...
std::string identifier () const
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
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...
msg_accepter ()
virtual ~msg_accepter ()
virtual void post (pmt::pmt_t which_port, pmt::pmt_t msg)=0
send msg
to msg_accepter
on port which_port
More...
enum vcolor { WHITE
, GREY
, BLACK
}
sync_block (void)
sync_block (const std::string &name , gr::io_signature::sptr input_signature , gr::io_signature::sptr output_signature )
block (void)
block (const std::string &name , gr::io_signature::sptr input_signature , gr::io_signature::sptr output_signature )
void set_fixed_rate (bool fixed_rate )
void add_item_tag (unsigned int which_output, uint64_t abs_offset, const pmt::pmt_t &key, const pmt::pmt_t &value, const pmt::pmt_t &srcid=pmt::PMT_F)
Adds a new tag onto the given output buffer. More...
void add_item_tag (unsigned int which_output, const tag_t &tag)
Adds a new tag onto the given output buffer. More...
void remove_item_tag (unsigned int which_input, uint64_t abs_offset, const pmt::pmt_t &key, const pmt::pmt_t &value, const pmt::pmt_t &srcid=pmt::PMT_F)
DEPRECATED. Will be removed in 3.8. More...
void remove_item_tag (unsigned int which_input, const tag_t &tag)
DEPRECATED. Will be removed in 3.8. More...
void get_tags_in_range (std::vector< tag_t > &v , unsigned int which_input, uint64_t abs_start, uint64_t abs_end)
Given a [start,end), returns a vector of all tags in the range. More...
void get_tags_in_range (std::vector< tag_t > &v , unsigned int which_input, uint64_t abs_start, uint64_t abs_end, const pmt::pmt_t &key)
Given a [start,end), returns a vector of all tags in the range with a given key. More...
void get_tags_in_window (std::vector< tag_t > &v , unsigned int which_input, uint64_t rel_start, uint64_t rel_end)
Gets all tags within the relative window of the current call to work. More...
void get_tags_in_window (std::vector< tag_t > &v , unsigned int which_input, uint64_t rel_start, uint64_t rel_end, const pmt::pmt_t &key)
Operates like gr::block::get_tags_in_window with the ability to only return tags with the specified key
. More...
void enable_update_rate (bool en)
buffer_sptr allocate_buffer (size_t port, int downstream_max_nitems, uint64_t downstream_lcm_nitems, uint32_t downstream_max_out_mult)
Allocate a buffer for the given output port of this block. Note that the downstream max number of items must be passed in to this function for consideration. More...
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...
std::vector< long > d_max_output_buffer
std::vector< long > d_min_output_buffer
unsigned int d_blkd_input_timer_value = 250
gr::thread::mutex d_setlock
const pmt::pmt_t d_pmt_done
const pmt::pmt_t d_system_port
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
template<class T>
class gr::blocks::multiply_matrix< T >
Matrix multiplexer/multiplier: y(k) = A x(k)
This block is similar to gr::blocks::multiply_const_ff , the difference being it can handle several inputs and outputs, and the input-to-output relation can be described by the following mathematical equation:
and are column-vectors describing the elements on the input port at time step (this is a sync block with no memory).
Examples for where to use this block include:
Switch matrices (i.e. switch which ports go where), assuming all ports run on the same rate
Simulation of static MIMO-Channels (in that case, is the channel matrix)
Summing up streams with variable coefficients
This block features a special tag propagation mode: When setting the tag propagation policy to gr::block::TPP_CUSTOM , a tag is propagated from input to output , if .
Message Ports
This block as one input message port (set_A
). A message sent to this port will be converted to a std::vector<std::vector<T> >, and then passed on to set_A() . If no conversion is possible, a warning is issued via the logging interface, and A remains unchanged.
Note : It is not possible to change the dimension of the matrix after initialization, as this affects the I/O signature! If a matrix of invalid size is passed to the block, an alert is raised via the logging interface, and A remains unchanged.