11 #ifndef INCLUDED_GR_RUNTIME_BLOCK_H
12 #define INCLUDED_GR_RUNTIME_BLOCK_H
93 unsigned history()
const;
94 void set_history(
unsigned history);
115 void declare_sample_delay(
int which,
unsigned delay);
121 void declare_sample_delay(
unsigned delay);
131 unsigned sample_delay(
int which)
const;
154 virtual void forecast(
int noutput_items,
gr_vector_int& ninput_items_required);
179 virtual int general_work(
int noutput_items,
192 virtual bool start();
209 void set_output_multiple(
int multiple);
230 void set_alignment(
int multiple);
233 void set_unaligned(
int na);
235 void set_is_unaligned(
bool u);
247 void consume(
int which_input,
int how_many_items);
255 void consume_each(
int how_many_items);
268 void produce(
int which_output,
int how_many_items);
279 void set_relative_rate(
double relative_rate);
289 void set_inverse_relative_rate(
double inverse_relative_rate);
300 void set_relative_rate(uint64_t interpolation, uint64_t decimation);
313 return (uint64_t)d_mp_relative_rate.get_num().get_ui();
322 return (uint64_t)d_mp_relative_rate.get_den().get_ui();
343 virtual int fixed_rate_ninput_to_noutput(
int ninput);
350 virtual int fixed_rate_noutput_to_ninput(
int noutput);
355 uint64_t nitems_read(
unsigned int which_input);
360 uint64_t nitems_written(
unsigned int which_output);
365 tag_propagation_policy_t tag_propagation_policy();
370 void set_tag_propagation_policy(tag_propagation_policy_t p);
393 int max_noutput_items();
401 void set_max_noutput_items(
int m);
418 void unset_max_noutput_items();
424 bool is_set_max_noutput_items();
433 void expand_minmax_buffer(
int port);
438 long max_output_buffer(
size_t i);
456 void set_max_output_buffer(
long max_output_buffer);
475 void set_max_output_buffer(
int port,
long max_output_buffer);
480 long min_output_buffer(
size_t i);
499 void set_min_output_buffer(
long min_output_buffer);
518 void set_min_output_buffer(
int port,
long min_output_buffer);
536 void set_blkd_input_timer_value(
unsigned int timer_value_ms);
541 unsigned int blkd_input_timer_value();
548 void allocate_detail(
int ninputs,
550 const std::vector<int>& downstream_max_nitems_vec,
551 const std::vector<uint64_t>& downstream_lcm_nitems_vec,
552 const std::vector<uint32_t>& downstream_max_out_mult_vec);
567 buffer_sptr replace_buffer(
size_t src_port,
size_t dst_port, block_sptr block_owner);
574 float pc_noutput_items();
579 float pc_noutput_items_avg();
584 float pc_noutput_items_var();
589 float pc_nproduced();
594 float pc_nproduced_avg();
599 float pc_nproduced_var();
604 float pc_input_buffers_full(
int which);
609 float pc_input_buffers_full_avg(
int which);
614 float pc_input_buffers_full_var(
int which);
619 std::vector<float> pc_input_buffers_full();
624 std::vector<float> pc_input_buffers_full_avg();
629 std::vector<float> pc_input_buffers_full_var();
634 float pc_output_buffers_full(
int which);
639 float pc_output_buffers_full_avg(
int which);
644 float pc_output_buffers_full_var(
int which);
649 std::vector<float> pc_output_buffers_full();
654 std::vector<float> pc_output_buffers_full_avg();
659 std::vector<float> pc_output_buffers_full_var();
664 float pc_work_time();
669 float pc_work_time_avg();
674 float pc_work_time_var();
679 float pc_work_time_total();
684 float pc_throughput_avg();
689 void reset_perf_counters();
718 void set_processor_affinity(
const std::vector<int>& mask)
override;
723 void unset_processor_affinity()
override;
733 int active_thread_priority();
745 bool update_rate()
const;
771 void set_log_level(
const std::string& level)
override;
784 int d_output_multiple;
785 bool d_output_multiple_set;
788 double d_relative_rate;
789 mpq_class d_mp_relative_rate;
790 block_detail_sptr d_detail;
792 unsigned d_attr_delay;
794 bool d_max_noutput_items_set;
795 int d_max_noutput_items;
796 int d_min_noutput_items;
797 tag_propagation_policy_t
798 d_tag_propagation_policy;
799 std::vector<int> d_affinity;
807 block(
const std::string& name,
834 this->add_item_tag(which_output, tag);
843 void add_item_tag(
unsigned int which_output,
const tag_t& tag);
868 this->remove_item_tag(which_input, tag);
877 void remove_item_tag(
unsigned int which_input,
const tag_t& tag);
892 void get_tags_in_range(std::vector<tag_t>&
v,
893 unsigned int which_input,
912 void get_tags_in_range(std::vector<tag_t>&
v,
913 unsigned int which_input,
939 void get_tags_in_window(std::vector<tag_t>&
v,
940 unsigned int which_input,
956 void get_tags_in_window(std::vector<tag_t>&
v,
957 unsigned int which_input,
962 void enable_update_rate(
bool en);
969 buffer_sptr allocate_buffer(
size_t port,
970 int downstream_max_nitems,
971 uint64_t downstream_lcm_nitems,
972 uint32_t downstream_max_out_mult);
977 unsigned int d_blkd_input_timer_value = 250;
998 block_detail_sptr
detail()
const {
return d_detail; }
999 void set_detail(block_detail_sptr detail) { d_detail = detail; }
1003 void notify_msg_neighbors();
1009 std::string identifier()
const;
1015 inline block_sptr cast_to_block_sptr(basic_block_sptr p)
std::vector< int > processor_affinity() override
Get the current processor affinity.
Definition: gnuradio-runtime/include/gnuradio/block.h:728
pmt::pmt_t value
the value of tag (as a PMT)
Definition: tags.h:27
std::shared_ptr< io_signature > sptr
Definition: io_signature.h:52
uint64_t offset
the item tag occurred at (as a uint64_t)
Definition: tags.h:21
uint64_t relative_rate_d() const
return the denominator, or decimation rate, of the approximate output rate / input rate ...
Definition: gnuradio-runtime/include/gnuradio/block.h:320
std::vector< block_sptr > block_vector_t
Definition: gnuradio-runtime/include/gnuradio/block.h:1012
const pmt::pmt_t d_system_port
Definition: gnuradio-runtime/include/gnuradio/block.h:995
GR_RUNTIME_API const pmt::pmt_t msg()
block_detail_sptr detail() const
Definition: gnuradio-runtime/include/gnuradio/block.h:998
void set_fixed_rate(bool fixed_rate)
Definition: gnuradio-runtime/include/gnuradio/block.h:811
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: gnuradio-runtime/include/gnuradio/block.h:823
std::vector< const void * > gr_vector_const_void_star
Definition: types.h:28
bool output_multiple_set() const
Definition: gnuradio-runtime/include/gnuradio/block.h:211
#define PMT_F
Definition: pmt.h:123
gr::thread::mutex d_setlock
Definition: gnuradio-runtime/include/gnuradio/block.h:984
Definition: cc_common.h:35
int unaligned() const
Definition: gnuradio-runtime/include/gnuradio/block.h:234
#define GR_RUNTIME_API
Definition: gnuradio-runtime/include/gnuradio/api.h:18
int min_noutput_items() const
Return the minimum number of output items this block can produce during a call to work...
Definition: gnuradio-runtime/include/gnuradio/block.h:379
void clear_finished()
Make sure we don't think we are finished.
Definition: gnuradio-runtime/include/gnuradio/block.h:1007
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: gnuradio-runtime/include/gnuradio/block.h:975
std::vector< void * > gr_vector_void_star
Definition: types.h:27
std::vector< block_sptr >::iterator block_viter_t
Definition: gnuradio-runtime/include/gnuradio/block.h:1013
std::vector< long > d_max_output_buffer
Definition: gnuradio-runtime/include/gnuradio/block.h:974
GNU Radio logging wrapper.
Definition: basic_block.h:29
The abstract base class for all signal processing blocks.Basic blocks are the bare abstraction of an ...
Definition: basic_block.h:61
bool fixed_rate() const
Return true if this block has a fixed input to output rate.
Definition: gnuradio-runtime/include/gnuradio/block.h:138
block(void)
Definition: gnuradio-runtime/include/gnuradio/block.h:806
void set_min_noutput_items(int m)
Set the minimum number of output items this block can produce during a call to work.
Definition: gnuradio-runtime/include/gnuradio/block.h:387
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: gnuradio-runtime/include/gnuradio/block.h:71
pmt::pmt_t key
the key of tag (as a PMT symbol)
Definition: tags.h:24
bool is_pc_rpc_set() const
Checks if this block is already exporting perf. counters to ControlPort.
Definition: gnuradio-runtime/include/gnuradio/block.h:701
std::ostream & operator<<(std::ostream &os, basic_block_sptr basic_block)
Definition: basic_block.h:436
bool is_unaligned() const
Definition: gnuradio-runtime/include/gnuradio/block.h:236
work_return_t
Magic return values from general_work.
Definition: gnuradio-runtime/include/gnuradio/block.h:66
boost::mutex mutex
Definition: thread.h:37
double relative_rate() const
return the approximate output rate / input rate
Definition: gnuradio-runtime/include/gnuradio/block.h:305
pmt::pmt_t srcid
the source ID of tag (as a PMT)
Definition: tags.h:30
The abstract base class for all 'terminal' processing blocks.A signal processing flow is constructed ...
Definition: gnuradio-runtime/include/gnuradio/block.h:62
const pmt::pmt_t d_pmt_done
Definition: gnuradio-runtime/include/gnuradio/block.h:991
void set_detail(block_detail_sptr detail)
Definition: gnuradio-runtime/include/gnuradio/block.h:999
int alignment() const
Definition: gnuradio-runtime/include/gnuradio/block.h:231
spdlog::level::level_enum log_level
Definition: logger.h:50
void no_pc_rpc()
If the block calls this in its constructor, it's perf. counters will not be exported.
Definition: gnuradio-runtime/include/gnuradio/block.h:707
mpq_class & mp_relative_rate()
return a reference to the multiple precision rational representation of the approximate output rate /...
Definition: gnuradio-runtime/include/gnuradio/block.h:329
std::shared_ptr< pmt_base > pmt_t
typedef for shared pointer (transparent reference counting).
Definition: pmt.h:83
uint64_t relative_rate_i() const
return the numerator, or interpolation rate, of the approximate output rate / input rate ...
Definition: gnuradio-runtime/include/gnuradio/block.h:311
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: gnuradio-runtime/include/gnuradio/block.h:857
int output_multiple() const
Definition: gnuradio-runtime/include/gnuradio/block.h:210
std::vector< int > gr_vector_int
Definition: types.h:23