23 #ifndef INCLUDED_GR_RUNTIME_BLOCK_H
24 #define INCLUDED_GR_RUNTIME_BLOCK_H
96 unsigned history()
const;
97 void set_history(
unsigned history);
118 void declare_sample_delay(
int which,
unsigned delay);
124 void declare_sample_delay(
unsigned delay);
134 unsigned sample_delay(
int which)
const;
157 virtual void forecast(
int noutput_items,
gr_vector_int& ninput_items_required);
182 virtual int general_work(
int noutput_items,
195 virtual bool start();
212 void set_output_multiple(
int multiple);
233 void set_alignment(
int multiple);
236 void set_unaligned(
int na);
238 void set_is_unaligned(
bool u);
250 void consume(
int which_input,
int how_many_items);
258 void consume_each(
int how_many_items);
271 void produce(
int which_output,
int how_many_items);
282 void set_relative_rate(
double relative_rate);
301 virtual int fixed_rate_ninput_to_noutput(
int ninput);
308 virtual int fixed_rate_noutput_to_ninput(
int noutput);
313 uint64_t nitems_read(
unsigned int which_input);
318 uint64_t nitems_written(
unsigned int which_output);
351 int max_noutput_items();
359 void set_max_noutput_items(
int m);
376 void unset_max_noutput_items();
382 bool is_set_max_noutput_items();
391 void expand_minmax_buffer(
int port);
396 long max_output_buffer(
size_t i);
414 void set_max_output_buffer(
long max_output_buffer);
433 void set_max_output_buffer(
int port,
long max_output_buffer);
438 long min_output_buffer(
size_t i);
457 void set_min_output_buffer(
long min_output_buffer);
476 void set_min_output_buffer(
int port,
long min_output_buffer);
483 float pc_noutput_items();
488 float pc_noutput_items_avg();
493 float pc_noutput_items_var();
498 float pc_nproduced();
503 float pc_nproduced_avg();
508 float pc_nproduced_var();
513 float pc_input_buffers_full(
int which);
518 float pc_input_buffers_full_avg(
int which);
523 float pc_input_buffers_full_var(
int which);
528 std::vector<float> pc_input_buffers_full();
533 std::vector<float> pc_input_buffers_full_avg();
538 std::vector<float> pc_input_buffers_full_var();
543 float pc_output_buffers_full(
int which);
548 float pc_output_buffers_full_avg(
int which);
553 float pc_output_buffers_full_var(
int which);
558 std::vector<float> pc_output_buffers_full();
563 std::vector<float> pc_output_buffers_full_avg();
568 std::vector<float> pc_output_buffers_full_var();
573 float pc_work_time();
578 float pc_work_time_avg();
583 float pc_work_time_var();
588 float pc_work_time_total();
593 float pc_throughput_avg();
598 void reset_perf_counters();
627 void set_processor_affinity(
const std::vector<int>& mask);
632 void unset_processor_affinity();
642 int active_thread_priority();
654 bool update_rate()
const;
669 int d_output_multiple;
670 bool d_output_multiple_set;
673 double d_relative_rate;
674 block_detail_sptr d_detail;
676 unsigned d_attr_delay;
678 bool d_max_noutput_items_set;
679 int d_max_noutput_items;
680 int d_min_noutput_items;
682 d_tag_propagation_policy;
683 std::vector<int> d_affinity;
691 block(
const std::string& name,
718 this->add_item_tag(which_output, tag);
727 void add_item_tag(
unsigned int which_output,
const tag_t& tag);
752 this->remove_item_tag(which_input, tag);
761 void remove_item_tag(
unsigned int which_input,
const tag_t& tag);
776 void get_tags_in_range(std::vector<tag_t>&
v,
777 unsigned int which_input,
796 void get_tags_in_range(std::vector<tag_t>&
v,
797 unsigned int which_input,
823 void get_tags_in_window(std::vector<tag_t>&
v,
824 unsigned int which_input,
840 void get_tags_in_window(std::vector<tag_t>&
v,
841 unsigned int which_input,
846 void enable_update_rate(
bool en);
875 block_detail_sptr
detail()
const {
return d_detail; }
876 void set_detail(block_detail_sptr detail) { d_detail = detail; }
880 void notify_msg_neighbors();
890 inline block_sptr cast_to_block_sptr(basic_block_sptr p)
boost::shared_ptr< io_signature > sptr
Definition: io_signature.h:46
pmt::pmt_t value
the value of tag (as a PMT)
Definition: tags.h:39
uint64_t offset
the item tag occurred at (as a uint64_t)
Definition: tags.h:33
gr::logger_ptr d_debug_logger
Definition: block.h:861
std::vector< int > processor_affinity()
Get the current processor affinity.
Definition: block.h:637
std::vector< block_sptr > block_vector_t
Definition: block.h:887
const pmt::pmt_t d_system_port
Definition: block.h:872
block_detail_sptr detail() const
Definition: block.h:875
static purpose_t msg
Definition: source_logger.h:39
void set_fixed_rate(bool fixed_rate)
Definition: block.h:695
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.
Definition: block.h:707
Definition: block_gateway.h:50
bool output_multiple_set() const
Definition: block.h:214
#define PMT_F
Definition: pmt.h:105
gr::thread::mutex d_setlock
Definition: block.h:856
gr::logger_ptr d_logger
Definition: block.h:860
Definition: cc_common.h:45
int unaligned() const
Definition: block.h:237
#define GR_RUNTIME_API
Definition: gnuradio-runtime/include/gnuradio/api.h:30
int min_noutput_items() const
Return the minimum number of output items this block can produce during a call to work...
Definition: block.h:337
void clear_finished()
Make sure we don't think we are finished.
Definition: block.h:884
Definition: block_gateway.h:45
Definition: block_gateway.h:45
GR_RUNTIME_API int set_thread_priority(gr_thread_t thread, int priority)
set current thread priority for a given thread ID
std::vector< long > d_min_output_buffer
Definition: block.h:849
Definition: block_gateway.h:48
std::vector< int > gr_vector_int
Definition: gnuradio-runtime/include/gnuradio/types.h:35
std::vector< block_sptr >::iterator block_viter_t
Definition: block.h:888
std::vector< long > d_max_output_buffer
Definition: block.h:848
void * logger_ptr
Definition: logger.h:696
The abstract base class for all signal processing blocks.Basic blocks are the bare abstraction of an ...
Definition: basic_block.h:58
bool fixed_rate() const
Return true if this block has a fixed input to output rate.
Definition: block.h:141
block(void)
Definition: block.h:690
void set_min_noutput_items(int m)
Set the minimum number of output items this block can produce during a call to work.
Definition: block.h:345
GR_RUNTIME_API int thread_priority(gr_thread_t thread)
get current thread priority for a given thread ID
tag_propagation_policy_t
enum to represent different tag propagation policies.
Definition: block.h:74
bool is_pc_rpc_set()
Checks if this block is already exporting perf. counters to ControlPort.
Definition: block.h:610
pmt::pmt_t key
the key of tag (as a PMT symbol)
Definition: tags.h:36
std::vector< const void * > gr_vector_const_void_star
Definition: gnuradio-runtime/include/gnuradio/types.h:40
Definition: block_gateway.h:47
std::ostream & operator<<(std::ostream &os, basic_block_sptr basic_block)
Definition: basic_block.h:427
bool is_unaligned() const
Definition: block.h:239
boost::mutex mutex
Definition: thread.h:48
Definition: block_gateway.h:49
double relative_rate() const
return the approximate output rate / input rate
Definition: block.h:287
pmt::pmt_t srcid
the source ID of tag (as a PMT)
Definition: tags.h:42
boost::intrusive_ptr< pmt_base > pmt_t
typedef for shared pointer (transparent reference counting). See http://www.boost.org/libs/smart_ptr/smart_ptr.htm
Definition: pmt.h:56
The abstract base class for all 'terminal' processing blocks.A signal processing flow is constructed ...
Definition: block.h:65
std::vector< void * > gr_vector_void_star
Definition: gnuradio-runtime/include/gnuradio/types.h:39
const pmt::pmt_t d_pmt_done
Definition: block.h:868
tag_propagation_policy_t
Definition: block_gateway.h:46
void set_detail(block_detail_sptr detail)
Definition: block.h:876
int alignment() const
Definition: block.h:234
void no_pc_rpc()
If the block calls this in its constructor, it's perf. counters will not be exported.
Definition: block.h:616
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.
Definition: block.h:741
int output_multiple() const
Definition: block.h:213