gr::digital::ofdm_carrier_allocator_cvc
gr::tagged_stream_block
gnuradio/digital/ofdm_carrier_allocator_cvc.h
std::shared_ptr< ofdm_carrier_allocator_cvc > std::shared_ptr<ofdm_carrier_allocator_cvc> gr::digital::ofdm_carrier_allocator_cvc::sptr sptr gr::digital::ofdm_carrier_allocator_cvc::sptr
std::string virtual std::string gr::digital::ofdm_carrier_allocator_cvc::len_tag_key ()=0 len_tag_key gr::digital::ofdm_carrier_allocator_cvc::len_tag_key
const int virtual const int gr::digital::ofdm_carrier_allocator_cvc::fft_len ()=0 fft_len gr::digital::ofdm_carrier_allocator_cvc::fft_len
std::vector< std::vector< int > > virtual std::vector< std::vector< int > > gr::digital::ofdm_carrier_allocator_cvc::occupied_carriers ()=0 occupied_carriers gr::digital::ofdm_carrier_allocator_cvc::occupied_carriers
sptr static sptr gr::digital::ofdm_carrier_allocator_cvc::make (int fft_len, const std::vector< std::vector< int > > &occupied_carriers, const std::vector< std::vector< int > > &pilot_carriers, const std::vector< std::vector< gr_complex > > &pilot_symbols, const std::vector< std::vector< gr_complex > > &sync_words, const std::string &len_tag_key="packet_len", const bool output_is_shifted=true) make gr::digital::ofdm_carrier_allocator_cvc::make int fft_len const std::vector< std::vector< int > > & occupied_carriers const std::vector< std::vector< int > > & pilot_carriers const std::vector< std::vector< gr_complex > > & pilot_symbols const std::vector< std::vector< gr_complex > > & sync_words const std::string & len_tag_key "packet_len" const bool output_is_shifted true

Create frequency domain OFDM symbols from complex values, add pilots.

This block turns a stream of complex, scalar modulation symbols into vectors which are the input for an IFFT in an OFDM transmitter. It also supports the possibility of placing pilot symbols onto the carriers.

The carriers can be allocated freely, if a carrier is not allocated, it is set to zero. This allows doing OFDMA-style carrier allocations.

Input: A tagged stream of complex scalars. The first item must have a tag containing the number of complex symbols in this frame. Output: A tagged stream of complex vectors of length fft_len. This can directly be connected to an FFT block. Make sure to set this block to 'reverse' for the IFFT. If `output_is_shifted` is true, the FFT block must activate FFT shifting, otherwise, set shifting to false. If given, sync words are prepended to the output. Note that sync words are prepended verbatim, make sure they are shifted (or not).

Carrier indexes are always such that index 0 is the DC carrier (note: you should not allocate this carrier). The carriers below the DC carrier are either indexed with negative numbers, or with indexes larger than `fft_len/2`. Index -1 and index `fft_len-1` both identify the carrier below the DC carrier.

There are some basic checks in place during initialization which check that the carrier allocation table is valid. However, it is possible to overwrite data symbols with pilot symbols, or provide a carrier allocation that has mismatching pilot symbol positions and -values.

Tags are propagated such that a tag on an incoming complex symbol is mapped to the corresponding OFDM symbol. There is one exception: If a tag is on the first OFDM symbol, it is assumed that this tag should stay there, so it is moved to the front even if a sync word is included (any other tags will never be attached to the sync word). This allows tags to control the transmit timing to pass through in the correct position.

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