gr::digital::ofdm_chanest_vcvc
gr::block
gnuradio/digital/ofdm_chanest_vcvc.h
std::shared_ptr< ofdm_chanest_vcvc > typedef std::shared_ptr<ofdm_chanest_vcvc> gr::digital::ofdm_chanest_vcvc::sptr sptr gr::digital::ofdm_chanest_vcvc::sptr
sptr static sptr gr::digital::ofdm_chanest_vcvc::make (const std::vector< gr_complex > &sync_symbol1, const std::vector< gr_complex > &sync_symbol2, int n_data_symbols, int eq_noise_red_len=0, int max_carr_offset=-1, bool force_one_sync_symbol=false) make gr::digital::ofdm_chanest_vcvc::make const std::vector< gr_complex > & sync_symbol1 const std::vector< gr_complex > & sync_symbol2 int n_data_symbols int eq_noise_red_len 0 int max_carr_offset -1 bool force_one_sync_symbol false

sync_symbol1

First synchronisation symbol in the frequency domain. Its length must be the FFT length. For Schmidl & Cox synchronisation, every second sub-carrier has to be zero.

sync_symbol2

Second synchronisation symbol in the frequency domain. Must be equal to the FFT length, or zero length if only one synchronisation symbol is used. Using this symbol is how synchronisation is described in [1]. Leaving this empty forces us to interpolate the equalizer taps. If you are using an unusual sub-carrier configuration (e.g. because of OFDMA), this sync symbol is used to identify the active sub-carriers. If you only have one synchronisation symbol, set the active sub-carriers to a non-zero value in here, and set `force_one_sync_symbol` parameter to true.

n_data_symbols

The number of data symbols following each set of synchronisation symbols. Must be at least 1.

eq_noise_red_len

If non-zero, noise reduction for the equalizer taps is done according to [2]. In this case, it is the channel influence time in number of samples. A good value is usually the length of the cyclic prefix.

max_carr_offset

Limit the number of sub-carriers the frequency offset can maximally be. Leave this zero to try all possibilities.

force_one_sync_symbol

See `sync_symbol2`.

Estimate channel and coarse frequency offset for OFDM from preambles

Input: OFDM symbols (in frequency domain). The first one (or two) symbols are expected to be synchronisation symbols, which are used to estimate the coarse freq offset and the initial equalizer taps (these symbols are removed from the stream). The following `n_data_symbols` are passed through unmodified (the actual equalisation must be done elsewhere). Output: The data symbols, without the synchronisation symbols. The first data symbol passed through has two tags: 'ofdm_sync_carr_offset' (integer), the coarse frequency offset as number of carriers, and 'ofdm_sync_eq_taps' (complex vector). Any tags attached to the synchronisation symbols are attached to the first data symbol. All other tags are propagated as expected.

Note: The vector on ofdm_sync_eq_taps is already frequency-corrected, whereas the rest is not.

This block assumes the frequency offset is even (i.e. an integer multiple of 2).

[1] Schmidl, T.M. and Cox, D.C., "Robust frequency and timing synchronization for OFDM", Communications, IEEE Transactions on, 1997. [2] K.D. Kammeyer, "Nachrichtenuebertragung," Chapter. 16.3.2.

gr::basic_block
gr::block
gr::digital::ofdm_chanest_vcvc
gr::messages::msg_accepter
gr::msg_accepter
std::enable_shared_from_this< basic_block >
gr::basic_block
d_name
d_symbol_alias
d_symbol_name
d_input_signature
d_output_signature
d_debug_logger
d_logger
msg_queue
d_rpc_vars
d_message_subscribers
gr::block
d_max_output_buffer
d_min_output_buffer
d_pmt_done
d_system_port
gr::digital::ofdm_chanest_vcvc
gr::messages::msg_accepter
gr::msg_accepter
std::basic_string< Char >
std::enable_shared_from_this< basic_block >
std::map< pmt::pmt_t, msg_queue_t, msg_queue_comparator >
std::shared_ptr< io_signature >
std::shared_ptr< logger >
std::shared_ptr< pmt_base >
std::shared_ptr< rpcbasic_base >
std::string
std::vector< long >
std::vector< rpcbasic_sptr >
elements
p
- gr::digital::ofdm_chanest_vcvc
  _post
- gr::digital::ofdm_chanest_vcvc
  active_thread_priority
- gr::digital::ofdm_chanest_vcvc
  add_item_tag
- gr::digital::ofdm_chanest_vcvc
  add_item_tag
- gr::digital::ofdm_chanest_vcvc
  alias
- gr::digital::ofdm_chanest_vcvc
  alias_pmt
- gr::digital::ofdm_chanest_vcvc
  alias_set
- gr::digital::ofdm_chanest_vcvc
  alignment
- gr::digital::ofdm_chanest_vcvc
  allocate_buffer
- gr::digital::ofdm_chanest_vcvc
  allocate_detail
- gr::digital::ofdm_chanest_vcvc
  basic_block
- gr::digital::ofdm_chanest_vcvc
  basic_block
- gr::digital::ofdm_chanest_vcvc
  BLACK
- gr::digital::ofdm_chanest_vcvc
  blkd_input_timer_value
- gr::digital::ofdm_chanest_vcvc
  block
- gr::digital::ofdm_chanest_vcvc
  block
- gr::digital::ofdm_chanest_vcvc
  check_topology
- gr::digital::ofdm_chanest_vcvc
  clear_finished
- gr::digital::ofdm_chanest_vcvc
  color
- gr::digital::ofdm_chanest_vcvc
  consume
- gr::digital::ofdm_chanest_vcvc
  consume_each
- gr::digital::ofdm_chanest_vcvc
  d_blkd_input_timer_value
- gr::digital::ofdm_chanest_vcvc
  d_color
- gr::digital::ofdm_chanest_vcvc
  d_debug_logger
- gr::digital::ofdm_chanest_vcvc
  d_input_signature
- gr::digital::ofdm_chanest_vcvc
  d_logger
- gr::digital::ofdm_chanest_vcvc
  d_max_output_buffer
- gr::digital::ofdm_chanest_vcvc
  d_message_subscribers
- gr::digital::ofdm_chanest_vcvc
  d_min_output_buffer
- gr::digital::ofdm_chanest_vcvc
  d_name
- gr::digital::ofdm_chanest_vcvc
  d_output_signature
- gr::digital::ofdm_chanest_vcvc
  d_pmt_done
- gr::digital::ofdm_chanest_vcvc
  d_rpc_set
- gr::digital::ofdm_chanest_vcvc
  d_rpc_vars
- gr::digital::ofdm_chanest_vcvc
  d_setlock
- gr::digital::ofdm_chanest_vcvc
  d_symbol_alias
- gr::digital::ofdm_chanest_vcvc
  d_symbol_name
- gr::digital::ofdm_chanest_vcvc
  d_symbolic_id
- gr::digital::ofdm_chanest_vcvc
  d_system_port
- gr::digital::ofdm_chanest_vcvc
  d_unique_id
- gr::digital::ofdm_chanest_vcvc
  declare_sample_delay
- gr::digital::ofdm_chanest_vcvc
  declare_sample_delay
- gr::digital::ofdm_chanest_vcvc
  delete_head_nowait
- gr::digital::ofdm_chanest_vcvc
  detail
- gr::digital::ofdm_chanest_vcvc
  dispatch_msg
- gr::digital::ofdm_chanest_vcvc
  empty_handled_p
- gr::digital::ofdm_chanest_vcvc
  empty_handled_p
- gr::digital::ofdm_chanest_vcvc
  empty_p
- gr::digital::ofdm_chanest_vcvc
  empty_p
- gr::digital::ofdm_chanest_vcvc
  enable_update_rate
- gr::digital::ofdm_chanest_vcvc
  erase_msg
- gr::digital::ofdm_chanest_vcvc
  expand_minmax_buffer
- gr::digital::ofdm_chanest_vcvc
  finished
- gr::digital::ofdm_chanest_vcvc
  fixed_rate
- gr::digital::ofdm_chanest_vcvc
  fixed_rate_ninput_to_noutput
- gr::digital::ofdm_chanest_vcvc
  fixed_rate_noutput_to_ninput
- gr::digital::ofdm_chanest_vcvc
  forecast
- gr::digital::ofdm_chanest_vcvc
  general_work
- gr::digital::ofdm_chanest_vcvc
  get_iterator
- gr::digital::ofdm_chanest_vcvc
  get_msg_map
- gr::digital::ofdm_chanest_vcvc
  get_tags_in_range
- gr::digital::ofdm_chanest_vcvc
  get_tags_in_range
- gr::digital::ofdm_chanest_vcvc
  get_tags_in_window
- gr::digital::ofdm_chanest_vcvc
  get_tags_in_window
- gr::digital::ofdm_chanest_vcvc
  GREY
- gr::digital::ofdm_chanest_vcvc
  has_msg_handler
- gr::digital::ofdm_chanest_vcvc
  has_msg_port
- gr::digital::ofdm_chanest_vcvc
  history
- gr::digital::ofdm_chanest_vcvc
  identifier
- gr::digital::ofdm_chanest_vcvc
  input_signature
- gr::digital::ofdm_chanest_vcvc
  insert_tail
- gr::digital::ofdm_chanest_vcvc
  is_pc_rpc_set
- gr::digital::ofdm_chanest_vcvc
  is_rpc_set
- gr::digital::ofdm_chanest_vcvc
  is_set_max_noutput_items
- gr::digital::ofdm_chanest_vcvc
  is_unaligned
- gr::digital::ofdm_chanest_vcvc
  log_level
- gr::digital::ofdm_chanest_vcvc
  make
- gr::digital::ofdm_chanest_vcvc
  max_noutput_items
- gr::digital::ofdm_chanest_vcvc
  max_output_buffer
- gr::digital::ofdm_chanest_vcvc
  message_port_is_hier
- gr::digital::ofdm_chanest_vcvc
  message_port_is_hier_in
- gr::digital::ofdm_chanest_vcvc
  message_port_is_hier_out
- gr::digital::ofdm_chanest_vcvc
  message_port_pub
- gr::digital::ofdm_chanest_vcvc
  message_port_register_in
- gr::digital::ofdm_chanest_vcvc
  message_port_register_out
- gr::digital::ofdm_chanest_vcvc
  message_port_sub
- gr::digital::ofdm_chanest_vcvc
  message_port_unsub
- gr::digital::ofdm_chanest_vcvc
  message_ports_in
- gr::digital::ofdm_chanest_vcvc
  message_ports_out
- gr::digital::ofdm_chanest_vcvc
  message_subscribers
- gr::digital::ofdm_chanest_vcvc
  min_noutput_items
- gr::digital::ofdm_chanest_vcvc
  min_output_buffer
- gr::digital::ofdm_chanest_vcvc
  mp_relative_rate
- gr::digital::ofdm_chanest_vcvc
  msg_accepter
- gr::digital::ofdm_chanest_vcvc
  msg_queue
- gr::digital::ofdm_chanest_vcvc
  name
- gr::digital::ofdm_chanest_vcvc
  nitems_read
- gr::digital::ofdm_chanest_vcvc
  nitems_written
- gr::digital::ofdm_chanest_vcvc
  nmsgs
- gr::digital::ofdm_chanest_vcvc
  no_pc_rpc
- gr::digital::ofdm_chanest_vcvc
  notify_msg_neighbors
- gr::digital::ofdm_chanest_vcvc
  output_multiple
- gr::digital::ofdm_chanest_vcvc
  output_multiple_set
- gr::digital::ofdm_chanest_vcvc
  output_signature
- gr::digital::ofdm_chanest_vcvc
  pc_input_buffers_full
- gr::digital::ofdm_chanest_vcvc
  pc_input_buffers_full
- gr::digital::ofdm_chanest_vcvc
  pc_input_buffers_full_avg
- gr::digital::ofdm_chanest_vcvc
  pc_input_buffers_full_avg
- gr::digital::ofdm_chanest_vcvc
  pc_input_buffers_full_var
- gr::digital::ofdm_chanest_vcvc
  pc_input_buffers_full_var
- gr::digital::ofdm_chanest_vcvc
  pc_noutput_items
- gr::digital::ofdm_chanest_vcvc
  pc_noutput_items_avg
- gr::digital::ofdm_chanest_vcvc
  pc_noutput_items_var
- gr::digital::ofdm_chanest_vcvc
  pc_nproduced
- gr::digital::ofdm_chanest_vcvc
  pc_nproduced_avg
- gr::digital::ofdm_chanest_vcvc
  pc_nproduced_var
- gr::digital::ofdm_chanest_vcvc
  pc_output_buffers_full
- gr::digital::ofdm_chanest_vcvc
  pc_output_buffers_full
- gr::digital::ofdm_chanest_vcvc
  pc_output_buffers_full_avg
- gr::digital::ofdm_chanest_vcvc
  pc_output_buffers_full_avg
- gr::digital::ofdm_chanest_vcvc
  pc_output_buffers_full_var
- gr::digital::ofdm_chanest_vcvc
  pc_output_buffers_full_var
- gr::digital::ofdm_chanest_vcvc
  pc_throughput_avg
- gr::digital::ofdm_chanest_vcvc
  pc_work_time
- gr::digital::ofdm_chanest_vcvc
  pc_work_time_avg
- gr::digital::ofdm_chanest_vcvc
  pc_work_time_total
- gr::digital::ofdm_chanest_vcvc
  pc_work_time_var
- gr::digital::ofdm_chanest_vcvc
  post
- gr::digital::ofdm_chanest_vcvc
  processor_affinity
- gr::digital::ofdm_chanest_vcvc
  produce
- gr::digital::ofdm_chanest_vcvc
  relative_rate
- gr::digital::ofdm_chanest_vcvc
  relative_rate_d
- gr::digital::ofdm_chanest_vcvc
  relative_rate_i
- gr::digital::ofdm_chanest_vcvc
  remove_item_tag
- gr::digital::ofdm_chanest_vcvc
  remove_item_tag
- gr::digital::ofdm_chanest_vcvc
  replace_buffer
- gr::digital::ofdm_chanest_vcvc
  reset_perf_counters
- gr::digital::ofdm_chanest_vcvc
  rpc_set
- gr::digital::ofdm_chanest_vcvc
  sample_delay
- gr::digital::ofdm_chanest_vcvc
  set_alignment
- gr::digital::ofdm_chanest_vcvc
  set_blkd_input_timer_value
- gr::digital::ofdm_chanest_vcvc
  set_block_alias
- gr::digital::ofdm_chanest_vcvc
  set_color
- gr::digital::ofdm_chanest_vcvc
  set_detail
- gr::digital::ofdm_chanest_vcvc
  set_fixed_rate
- gr::digital::ofdm_chanest_vcvc
  set_history
- gr::digital::ofdm_chanest_vcvc
  set_input_signature
- gr::digital::ofdm_chanest_vcvc
  set_inverse_relative_rate
- gr::digital::ofdm_chanest_vcvc
  set_is_unaligned
- gr::digital::ofdm_chanest_vcvc
  set_log_level
- gr::digital::ofdm_chanest_vcvc
  set_max_noutput_items
- gr::digital::ofdm_chanest_vcvc
  set_max_output_buffer
- gr::digital::ofdm_chanest_vcvc
  set_max_output_buffer
- gr::digital::ofdm_chanest_vcvc
  set_min_noutput_items
- gr::digital::ofdm_chanest_vcvc
  set_min_output_buffer
- gr::digital::ofdm_chanest_vcvc
  set_min_output_buffer
- gr::digital::ofdm_chanest_vcvc
  set_msg_handler
- gr::digital::ofdm_chanest_vcvc
  set_output_multiple
- gr::digital::ofdm_chanest_vcvc
  set_output_signature
- gr::digital::ofdm_chanest_vcvc
  set_processor_affinity
- gr::digital::ofdm_chanest_vcvc
  set_relative_rate
- gr::digital::ofdm_chanest_vcvc
  set_relative_rate
- gr::digital::ofdm_chanest_vcvc
  set_tag_propagation_policy
- gr::digital::ofdm_chanest_vcvc
  set_thread_priority
- gr::digital::ofdm_chanest_vcvc
  set_unaligned
- gr::digital::ofdm_chanest_vcvc
  setup_pc_rpc
- gr::digital::ofdm_chanest_vcvc
  setup_rpc
- gr::digital::ofdm_chanest_vcvc
  shared_from_base
- gr::digital::ofdm_chanest_vcvc
  sptr
- gr::digital::ofdm_chanest_vcvc
  start
- gr::digital::ofdm_chanest_vcvc
  stop
- gr::digital::ofdm_chanest_vcvc
  symbol_name
- gr::digital::ofdm_chanest_vcvc
  symbolic_id
- gr::digital::ofdm_chanest_vcvc
  system_handler
- gr::digital::ofdm_chanest_vcvc
  tag_propagation_policy
- gr::digital::ofdm_chanest_vcvc
  tag_propagation_policy_t
- gr::digital::ofdm_chanest_vcvc
  thread_priority
- gr::digital::ofdm_chanest_vcvc
  to_basic_block
- gr::digital::ofdm_chanest_vcvc
  TPP_ALL_TO_ALL
- gr::digital::ofdm_chanest_vcvc
  TPP_CUSTOM
- gr::digital::ofdm_chanest_vcvc
  TPP_DONT
- gr::digital::ofdm_chanest_vcvc
  TPP_ONE_TO_ONE
- gr::digital::ofdm_chanest_vcvc
  unaligned
- gr::digital::ofdm_chanest_vcvc
  unique_id
- gr::digital::ofdm_chanest_vcvc
  unset_max_noutput_items
- gr::digital::ofdm_chanest_vcvc
  unset_processor_affinity
- gr::digital::ofdm_chanest_vcvc
  update_rate
- gr::digital::ofdm_chanest_vcvc
  vcolor
- gr::digital::ofdm_chanest_vcvc
  WHITE
- gr::digital::ofdm_chanest_vcvc
  WORK_CALLED_PRODUCE
- gr::digital::ofdm_chanest_vcvc
  WORK_DONE
- gr::digital::ofdm_chanest_vcvc
  work_return_t
- gr::digital::ofdm_chanest_vcvc
  ~basic_block
- gr::digital::ofdm_chanest_vcvc
  ~block
- gr::digital::ofdm_chanest_vcvc
  ~msg_accepter