|
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. More...
|
|
void | connect (basic_block_sptr block) |
| Add a stand-alone (possibly hierarchical) block to internal graph. More...
|
|
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. More...
|
|
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. More...
|
|
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. More...
|
|
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. More...
|
|
void | disconnect_all () |
| Disconnect all connections in the internal flowgraph. More...
|
|
virtual void | lock () |
|
virtual void | unlock () |
|
int | max_output_buffer (size_t port=0) |
| Returns max buffer size (itemcount) on output port i . More...
|
|
void | set_max_output_buffer (int max_output_buffer) |
| Sets max buffer size (itemcount) on all output ports. More...
|
|
void | set_max_output_buffer (size_t port, int max_output_buffer) |
| Sets max buffer size (itemcount) on output port port . More...
|
|
int | min_output_buffer (size_t port=0) |
| Returns min buffer size (itemcount) on output port i . More...
|
|
void | set_min_output_buffer (int min_output_buffer) |
| Sets min buffer size (itemcount) on all output ports. More...
|
|
void | set_min_output_buffer (size_t port, int min_output_buffer) |
| Sets min buffer size (itemcount) on output port port . More...
|
|
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 . More...
|
|
void | unset_processor_affinity () override |
| Remove processor affinity for all blocks in hier_block2. More...
|
|
std::vector< int > | processor_affinity () override |
| Get the current processor affinity. More...
|
|
void | set_log_level (const std::string &level) override |
| Set the logger's output level. More...
|
|
std::string | log_level () override |
| Get the logger's output level. More...
|
|
bool | all_min_output_buffer_p (void) |
| Get if all block min buffers should be set. More...
|
|
bool | all_max_output_buffer_p (void) |
| Get if all block max buffers should be set. More...
|
|
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. More...
|
|
pmt::pmt_t | message_ports_out () |
| Get output message port names. More...
|
|
void | _post (pmt::pmt_t which_port, pmt::pmt_t msg) |
|
bool | empty_p (pmt::pmt_t which_port) |
| is the queue empty? More...
|
|
bool | empty_p () |
|
bool | empty_handled_p (pmt::pmt_t which_port) |
| are all msg ports with handlers empty? More...
|
|
bool | empty_handled_p () |
|
size_t | nmsgs (pmt::pmt_t which_port) |
| How many messages in the queue? More...
|
|
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 |
|
virtual void | setup_rpc () |
| Set up the RPC registered variables. More...
|
|
bool | is_rpc_set () |
| Ask if this block has been registered to the RPC. More...
|
|
void | rpc_set () |
| When the block is registered with the RPC, set this. More...
|
|
virtual bool | check_topology (int ninputs, int noutputs) |
| Confirm that ninputs and noutputs is an acceptable combination. More...
|
|
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. More...
|
|
virtual void | set_processor_affinity (const std::vector< int > &mask)=0 |
|
virtual void | unset_processor_affinity ()=0 |
|
virtual std::vector< int > | processor_affinity ()=0 |
|
virtual void | set_log_level (const std::string &level)=0 |
|
virtual std::string | log_level ()=0 |
|
| 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 More...
|
|
| msg_accepter () |
|
virtual | ~msg_accepter () |
|
virtual void | post (pmt::pmt_t which_port, pmt::pmt_t msg)=0 |
| send msg to msg_accepter on port which_port More...
|
|
Schmidl & Cox synchronisation for OFDM.
Input: complex samples. Output 0: Fine frequency offset, scaled by the OFDM symbol duration. This is \(\hat{\varphi}\) 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
\[
M(d) = \frac{|P(d)|^2}{(R(d))^2},
\]
we calculate the normalization as
\[
R(d) = \frac{1}{2} \sum_{k=0}^{N-1} |r_{k+d}|^2,
\]
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.