virtual void set_threshold (float threshold )=0
virtual float threshold () const =0
~hier_block2 () override
opaque_self self ()
Return an object, representing the current block, which can be passed to connect.
void connect (basic_block_sptr block )
Add a stand-alone (possibly hierarchical) block to internal graph.
void connect (basic_block_sptr src, int src_port, basic_block_sptr dst, int dst_port)
Add gr-blocks or hierarchical blocks to internal graph and wire together.
void msg_connect (basic_block_sptr src, pmt::pmt_t srcport, basic_block_sptr dst, pmt::pmt_t dstport)
Add gr-blocks or hierarchical blocks to internal graph and wire together.
void msg_connect (basic_block_sptr src, std::string srcport, basic_block_sptr dst, std::string dstport)
void msg_disconnect (basic_block_sptr src, pmt::pmt_t srcport, basic_block_sptr dst, pmt::pmt_t dstport)
void msg_disconnect (basic_block_sptr src, std::string srcport, basic_block_sptr dst, std::string dstport)
void disconnect (basic_block_sptr block )
Remove a gr-block or hierarchical block from the internal flowgraph.
void disconnect (basic_block_sptr src, int src_port, basic_block_sptr dst, int dst_port)
Disconnect a pair of gr-blocks or hierarchical blocks in internal flowgraph.
void disconnect_all ()
Disconnect all connections in the internal flowgraph.
virtual void lock ()
virtual void unlock ()
int max_output_buffer (size_t port=0)
Returns max buffer size (itemcount) on output port i
.
void set_max_output_buffer (int max_output_buffer )
Sets max buffer size (itemcount) on all output ports.
void set_max_output_buffer (size_t port, int max_output_buffer )
Sets max buffer size (itemcount) on output port port
.
int min_output_buffer (size_t port=0)
Returns min buffer size (itemcount) on output port i
.
void set_min_output_buffer (int min_output_buffer )
Sets min buffer size (itemcount) on all output ports.
void set_min_output_buffer (size_t port, int min_output_buffer )
Sets min buffer size (itemcount) on output port port
.
flat_flowgraph_sptr flatten () const
hier_block2_sptr to_hier_block2 ()
bool has_msg_port (pmt::pmt_t which_port) override
bool message_port_is_hier (pmt::pmt_t port_id) override
bool message_port_is_hier_in (pmt::pmt_t port_id) override
bool message_port_is_hier_out (pmt::pmt_t port_id) override
void message_port_register_hier_in (pmt::pmt_t port_id)
void message_port_register_hier_out (pmt::pmt_t port_id)
void set_processor_affinity (const std::vector < int > &mask) override
Set the affinity of all blocks in hier_block2 to processor core n
.
void unset_processor_affinity () override
Remove processor affinity for all blocks in hier_block2 .
std::vector < int > processor_affinity () override
Get the current processor affinity.
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 all_min_output_buffer_p (void)
Get if all block min buffers should be set.
bool all_max_output_buffer_p (void)
Get if all block max buffers should be set.
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)
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)
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 ()
Schmidl & Cox synchronisation for OFDM.
Input: complex samples. Output 0: Fine frequency offset, scaled by the OFDM symbol duration. This is in [1]. The normalized frequency offset is then 2.0*output0/fft_len. Output 1: Beginning of the first OFDM symbol after the first (doubled) OFDM symbol. The beginning is marked with a 1 (it's 0 everywhere else).
The evaluation of the coarse frequency offset is not done in this block. Also, the initial equalizer taps are not calculated here.
Note that we use a different normalization factor in the timing metric than the authors do in their original work[1]. If the timing metric (8) is
we calculate the normalization as
i.e., we estimate the energy from both half-symbols. This avoids spurious detects at the end of a burst, when the energy level suddenly drops.
[1] Schmidl, T.M. and Cox, D.C., "Robust frequency and timing synchronization for
OFDM", Communications, IEEE Transactions on, 1997.