GNU Radio 3.6.4.2 C++ API
|
a computationally efficient controllable DC blocker More...
#include <gr_dc_blocker_ff.h>
Public Member Functions | |
~gr_dc_blocker_ff () | |
int | get_group_delay () |
int | work (int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) |
just like gr_block::general_work, only this arranges to call consume_each for you More... | |
![]() | |
gr_sync_block (void) | |
gr_sync_block (const std::string &name, gr_io_signature_sptr input_signature, gr_io_signature_sptr output_signature) | |
virtual | ~gr_sync_block (void) |
int | general_work (int noutput_items, gr_vector_int &ninput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) |
implements work -> calls work More... | |
![]() | |
gr_block (void) | |
gr_block (const std::string &name, gr_io_signature_sptr input_signature, gr_io_signature_sptr output_signature) | |
long | unique_id (void) const |
std::string | name (void) const |
virtual | ~gr_block (void) |
gr_io_signature_sptr | input_signature (void) const |
gr_io_signature_sptr | output_signature (void) const |
void | set_input_signature (gr_io_signature_sptr sig) |
void | set_output_signature (gr_io_signature_sptr sig) |
virtual bool | check_topology (int ninputs, int noutputs) |
virtual void | forecast (int, std::vector< int > &) |
Overload me! I am the forecast. More... | |
virtual bool | start (void) |
virtual bool | stop (void) |
void | consume_each (const int how_many_items) |
Call during work to consume items. More... | |
void | consume (const size_t i, const int how_many_items) |
void | produce (const size_t o, const int how_many_items) |
uint64_t | nitems_read (const size_t which_input=0) |
Get absolute count of all items consumed on the given input port. More... | |
uint64_t | nitems_written (const size_t which_output=0) |
Get absolute count of all items produced on the given output port. More... | |
void | add_item_tag (const size_t which_output, const gr_tag_t &tag) |
void | add_item_tag (const size_t which_output, uint64_t abs_offset, const pmt::pmt_t &key, const pmt::pmt_t &value, const pmt::pmt_t &srcid=pmt::PMT_F) |
void | get_tags_in_range (std::vector< gr_tag_t > &tags, const size_t which_input, uint64_t abs_start, uint64_t abs_end, const pmt::pmt_t &key=pmt::pmt_t()) |
void | set_alignment (const size_t alignment) |
bool | is_unaligned (void) |
size_t | fixed_rate_noutput_to_ninput (const size_t noutput_items) |
size_t | interpolation (void) const |
void | set_interpolation (const size_t) |
size_t | decimation (void) const |
void | set_decimation (const size_t) |
int | max_noutput_items (void) const |
void | set_max_noutput_items (int) |
void | unset_max_noutput_items (void) |
bool | is_set_max_noutput_items (void) const |
unsigned | history (void) const |
void | set_history (unsigned history) |
void | set_fixed_rate (const bool fixed_rate) |
bool | fixed_rate (void) const |
Get the fixed rate setting. More... | |
void | set_relative_rate (const double relative_rate) |
double | relative_rate (void) const |
Get the relative rate setting. More... | |
void | set_output_multiple (const size_t multiple) |
size_t | output_multiple (void) const |
Get the output multiple setting. More... | |
tag_propagation_policy_t | tag_propagation_policy (void) |
void | set_tag_propagation_policy (tag_propagation_policy_t p) |
void | set_max_output_buffer (long) |
void | set_max_output_buffer (int, long) |
long | max_output_buffer (size_t) |
void | set_min_output_buffer (long) |
void | set_min_output_buffer (int, long) |
long | min_output_buffer (size_t) |
std::string | symbol_name () const |
bool | alias_set () |
std::string | alias () |
pmt::pmt_t | alias_pmt () |
void | set_block_alias (std::string name) |
template<typename T > | |
void | set_msg_handler (pmt::pmt_t which_port, T msg_handler) |
void | message_port_register_in (pmt::pmt_t) |
void | message_port_register_out (pmt::pmt_t) |
void | message_port_pub (pmt::pmt_t, pmt::pmt_t) |
void | message_port_sub (pmt::pmt_t, pmt::pmt_t) |
void | message_port_unsub (pmt::pmt_t, pmt::pmt_t) |
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... | |
bool | empty_p (pmt::pmt_t which_port) |
is the queue empty? More... | |
bool | empty_p () |
void | insert_tail (pmt::pmt_t, pmt::pmt_t) |
pmt::pmt_t | delete_head_nowait (pmt::pmt_t) |
pmt::pmt_t | delete_head_blocking (pmt::pmt_t) |
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) |
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) |
void | set_processor_affinity (const std::vector< int > &mask) |
Set the thread's affinity to processor core n . More... | |
void | unset_processor_affinity () |
Remove processor affinity to a specific core. More... | |
std::vector< int > | processor_affinity () |
Get the current processor affinity. More... | |
void | work (const InputItems &, const OutputItems &) |
implements work -> calls general work More... | |
void | notify_topology (const size_t, const size_t) |
notifications of new topological commits More... | |
void | notify_active (void) |
start notification More... | |
void | notify_inactive (void) |
stop notification More... | |
virtual void | propagate_tags (const size_t, const gras::TagIter &) |
implements tag_propagation_policy() More... | |
void | _update_input_reserve (void) |
gras::BufferQueueSptr | input_buffer_allocator (const size_t, const gras::SBufferConfig &) |
gras::BufferQueueSptr | output_buffer_allocator (const size_t, const gras::SBufferConfig &) |
Friends | |
GR_CORE_API gr_dc_blocker_ff_sptr | gr_make_dc_blocker_ff (int D, bool long_form) |
a computationally efficient controllable DC blocker
This block implements a computationally efficient DC blocker that produces a tighter notch filter around DC for a smaller group delay than an equivalent FIR filter or using a single pole IIR filter (though the IIR filter is computationally cheaper).
The block defaults to using a delay line of length 32 and the long form of the filter. Optionally, the delay line length can be changed to alter the width of the DC notch (longer lines will decrease the width).
The long form of the filter produces a nearly flat response outside of the notch but at the cost of a group delay of 2D-2.
The short form of the filter does not have as flat a response in the passband but has a group delay of only D-1 and is cheaper to compute.
The theory behind this block can be found in the paper:
R. Yates, "DC Blocker Algorithms," IEEE Signal Processing Magazine, Mar. 2008, pp 132-134.
gr_dc_blocker_ff::~gr_dc_blocker_ff | ( | ) |
int gr_dc_blocker_ff::get_group_delay | ( | ) |
Get the blocker's group delay that is based on length of delay lines
|
virtual |
just like gr_block::general_work, only this arranges to call consume_each for you
The user must override work to define the signal processing code
Reimplemented from gr_sync_block.
|
friend |
Build the DC blocker.
D | (int) the length of the delay line |
long_form | (bool) whether to use long (true, default) or short form |