virtual void set_sensitivity (float sens)=0
virtual float sensitivity () const =0
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
void forecast (int noutput_items, gr_vector_int &ninput_items_required) override
Estimate input requirements given output request.
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
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.
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.
~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.
virtual bool start ()
Called to enable drivers, etc for i/o devices.
virtual bool stop ()
Called to disable drivers, etc for i/o devices.
void set_output_multiple (int multiple)
Constrain the noutput_items argument passed to forecast and general_work.
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)
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.
void consume_each (int how_many_items)
Tell the scheduler how_many_items
were consumed on each input stream.
void produce (int which_output, int how_many_items)
Tell the scheduler how_many_items
were produced on output stream which_output
.
void set_relative_rate (double relative_rate )
Set the approximate output rate / input rate.
void set_inverse_relative_rate (double inverse_relative_rate)
Set the approximate output rate / input rate using its reciprocal.
void set_relative_rate (uint64_t interpolation, uint64_t decimation)
Set the approximate output rate / input rate as an integer ratio.
double relative_rate () const
return the approximate output rate / input rate
uint64_t relative_rate_i () const
return the numerator, or interpolation rate, of the approximate output rate / input rate
uint64_t relative_rate_d () const
return the denominator, or decimation rate, of the approximate output rate / input rate
mpq_class & mp_relative_rate ()
return a reference to the multiple precision rational representation of the approximate output rate / input rate
uint64_t nitems_read (unsigned int which_input)
Return the number of items read on input stream which_input.
uint64_t nitems_written (unsigned int which_output)
Return the number of items written on output stream which_output.
tag_propagation_policy_t tag_propagation_policy ()
Asks for the policy used by the scheduler to moved tags downstream.
void set_tag_propagation_policy (tag_propagation_policy_t p)
Set the policy by the scheduler to determine how tags are moved downstream.
int min_noutput_items () const
Return the minimum number of output items this block can produce during a call to work.
void set_min_noutput_items (int m)
Set the minimum number of output items this block can produce during a call to work.
int max_noutput_items ()
Return the maximum number of output items this block will handle during a call to work.
void set_max_noutput_items (int m)
Set the maximum number of output items this block will handle during a call to work.
void unset_max_noutput_items ()
Clear the switch for using the max_noutput_items value of this block.
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.
void expand_minmax_buffer (int port)
long max_output_buffer (size_t i)
Returns max buffer size on output port i
.
void set_max_output_buffer (long max_output_buffer )
Request limit on max buffer size on all output ports.
void set_max_output_buffer (int port, long max_output_buffer )
Request limit on max buffer size on output port port
.
long min_output_buffer (size_t i)
Returns min buffer size on output port i
.
void set_min_output_buffer (long min_output_buffer )
Request limit on the minimum buffer size on all output ports.
void set_min_output_buffer (int port, long min_output_buffer )
Request limit on min buffer size on output port port
.
void set_blkd_input_timer_value (unsigned int timer_value_ms)
DEPRECATED Configure the timer set when input is blocked port
.
unsigned int blkd_input_timer_value ()
DEPRECATED Returns timer value set when input is blocked.
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.
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.
float pc_noutput_items ()
Gets instantaneous noutput_items performance counter.
float pc_noutput_items_avg ()
Gets average noutput_items performance counter.
float pc_noutput_items_var ()
Gets variance of noutput_items performance counter.
float pc_nproduced ()
Gets instantaneous num items produced performance counter.
float pc_nproduced_avg ()
Gets average num items produced performance counter.
float pc_nproduced_var ()
Gets variance of num items produced performance counter.
float pc_input_buffers_full (int which)
Gets instantaneous fullness of which
input buffer.
float pc_input_buffers_full_avg (int which)
Gets average fullness of which
input buffer.
float pc_input_buffers_full_var (int which)
Gets variance of fullness of which
input buffer.
std::vector < float > pc_input_buffers_full ()
Gets instantaneous fullness of all input buffers.
std::vector < float > pc_input_buffers_full_avg ()
Gets average fullness of all input buffers.
std::vector < float > pc_input_buffers_full_var ()
Gets variance of fullness of all input buffers.
float pc_output_buffers_full (int which)
Gets instantaneous fullness of which
output buffer.
float pc_output_buffers_full_avg (int which)
Gets average fullness of which
output buffer.
float pc_output_buffers_full_var (int which)
Gets variance of fullness of which
output buffer.
std::vector < float > pc_output_buffers_full ()
Gets instantaneous fullness of all output buffers.
std::vector < float > pc_output_buffers_full_avg ()
Gets average fullness of all output buffers.
std::vector < float > pc_output_buffers_full_var ()
Gets variance of fullness of all output buffers.
float pc_work_time ()
Gets instantaneous clock cycles spent in work.
float pc_work_time_avg ()
Gets average clock cycles spent in work.
float pc_work_time_var ()
Gets average clock cycles spent in work.
float pc_work_time_total ()
Gets total clock cycles spent in work.
float pc_throughput_avg ()
Gets average throughput.
void reset_perf_counters ()
Resets the performance counters.
void setup_pc_rpc ()
Sets up export of perf. counters to ControlPort. Only called by the scheduler.
bool is_pc_rpc_set () const
Checks if this block is already exporting perf. counters to ControlPort.
void no_pc_rpc ()
If the block calls this in its constructor, it's perf. counters will not be exported.
void set_processor_affinity (const std::vector < int > &mask) override
Set the thread's affinity to processor core n
.
void unset_processor_affinity () override
Remove processor affinity to a specific core.
std::vector < int > processor_affinity () override
Get the current processor affinity.
int active_thread_priority ()
Get the current thread priority in use.
int thread_priority ()
Get the current thread priority stored.
int set_thread_priority (int priority)
Set the current thread priority.
bool update_rate () const
void system_handler (pmt::pmt_t msg)
the system message handler
void set_log_level (const std::string &level) override
Set the logger's output level.
std::string log_level () override
Get the logger's output level.
bool finished ()
returns true when execution has completed due to a message connection
block_detail_sptr detail () const
void set_detail (block_detail_sptr detail )
void notify_msg_neighbors ()
Tell msg neighbors we are finished.
void clear_finished ()
Make sure we don't think we are finished.
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.
pmt::pmt_t message_ports_out ()
Get output message port names.
void _post (pmt::pmt_t which_port, pmt::pmt_t msg)
bool empty_p (pmt::pmt_t which_port)
is the queue empty?
bool empty_p ()
bool empty_handled_p (pmt::pmt_t which_port)
are all msg ports with handlers empty?
bool empty_handled_p ()
size_t nmsgs (pmt::pmt_t which_port)
How many messages in the queue?
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
void add_rpc_variable (rpcbasic_sptr s)
Add an RPC variable (get or set).
virtual void setup_rpc ()
Set up the RPC registered variables.
bool is_rpc_set ()
Ask if this block has been registered to the RPC.
void rpc_set ()
When the block is registered with the RPC, set this.
virtual bool check_topology (int ninputs, int noutputs)
Confirm that ninputs and noutputs is an acceptable combination.
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.
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
msg_accepter ()
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.
void add_item_tag (unsigned int which_output, const tag_t &tag)
Adds a new tag onto the given output buffer.
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.
void remove_item_tag (unsigned int which_input, const tag_t &tag)
DEPRECATED. Will be removed in 3.8.
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.
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.
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.
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
.
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.
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.
void set_input_signature (gr::io_signature::sptr iosig)
may only be called during constructor
void set_output_signature (gr::io_signature::sptr iosig)
may only be called during constructor
void set_color (vcolor color )
Allow the flowgraph to set for sorting and partitioning.
vcolor color () const
virtual bool has_msg_handler (pmt::pmt_t which_port)
Tests if there is a handler attached to port which_port
.
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.
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.
msg_queue_map_t msg_queue
Verbose logger.
std::vector < rpcbasic_sptr > d_rpc_vars
pmt::pmt_t d_message_subscribers
Frequency modulator block.
float input; complex baseband output
Takes a real, baseband signal (x_m[n]) and output a frequency modulated signal (y[n]) according to:
Where x[n] is the input sample at time n and is the frequency deviation. Common values for are 5 kHz for narrowband FM channels such as for voice systems and 75 KHz for wideband FM, like audio broadcast FM stations.
In this block, the input argument is sensitivity
, not the frequency deviation. The sensitivity specifies how much the phase changes based on the new input sample. Given a maximum deviation, , and sample rate , the sensitivity is defined as: