gr::fec::puncture_bb
gr::block
gnuradio/fec/puncture_bb.h
std::shared_ptr< puncture_bb > std::shared_ptr<puncture_bb> gr::fec::puncture_bb::sptr sptr gr::fec::puncture_bb::sptr
sptr static sptr gr::fec::puncture_bb::make (int puncsize, int puncpat, int delay=0) make gr::fec::puncture_bb::make int puncsize int puncpat int delay 0

Constructs a puncture block for unpacked bits.

puncsize

Size of block of bits to puncture

puncpat

The puncturing pattern

delay

Delayed the puncturing pattern by shifting it

Puncture a stream of unpacked bits.

Puncture a given block of input samples of `puncsize`. The items produced is based on pattern `puncpat`. Basically, if:

    k=0
    if_puncpat[i]==1:
    out[k++]=input[i]

This block is designed for unpacked bits - that is, every input sample is a bit, either a 1 or 0. It's possible to use packed bits as symbols, but the puncturing will be done on the symbol level, not the bit level.

`puncpat` is specified as a 32-bit integer that we can convert into the vector _puncpat used in the algorithm above:

    _puncpat=[0,...]
    foriinpuncsize:
    _puncpat[i]=puncpat>>(puncsize-1-i)

Example:

    puncsize=8
    puncpat=0xEF-->[1,1,1,0,1,1,1,1]
    input=[a,b,c,d,e,f,g,h]
    output=[a,b,c,e,f,g,h]

The gr.fec Python module provides a read_bitlist function that can turn a string of a puncture pattern into the correct integer form. The pattern of 0xEF could be specified as fec.readbitlist("11101111"). Also, this allows us to use puncsize=len("11101111") to make sure that our sizes are set up correctly for the pattern we want.

The fec.extended_encoder takes in the puncture pattern directly as a string and uses the readbitlist inside to do the conversion.

Note that due to the above concept, the default setting in the extended encoder of '11' translates into no puncturing.

The `delay` parameter delays the application of the puncture pattern. This is equivalent to circularly rotating the `puncpat` by `delay`. Note that because of the circular shift, the delay should be between 0 and `puncsize`, but this is not enforced; the effective delay will simply be `delay` mod `puncsize`. A negative value here is ignored.

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