gr::fec::code::polar_encoder_systematic
gr::fec::generic_encoder
gr::fec::code::polar_common
gnuradio/fec/polar_encoder_systematic.h
volk::vector< unsigned char > volk::vector<unsigned char> gr::fec::code::polar_encoder_systematic::d_volk_syst_intermediate d_volk_syst_intermediate gr::fec::code::polar_encoder_systematic::d_volk_syst_intermediate
generic_encoder::sptr static generic_encoder::sptr gr::fec::code::polar_encoder_systematic::make (int block_size, int num_info_bits, std::vector< int > frozen_bit_positions) make gr::fec::code::polar_encoder_systematic::make int block_size int num_info_bits std::vector< int > frozen_bit_positions

Factory for a polar code encoder object.

block_size

defines the codeword size. It MUST be a power of 2.

num_info_bits

represents the number of information bits in a block. Also called frame_size.

frozen_bit_positions

is an integer vector which defines the position of all frozen bits in a block. Its size MUST be equal to block_size - num_info_bits. Also it must be sorted and every position must only occur once. Frozen bit values will be set to ZERO!

gr::fec::code::polar_common::block_size
gr::fec::code::polar_common::num_info_bits
void void gr::fec::code::polar_encoder_systematic::generic_work (const void *in_buffer, void *out_buffer) override generic_work gr::fec::code::polar_encoder_systematic::generic_work generic_work const void * in_buffer void * out_buffer
double double gr::fec::code::polar_encoder_systematic::rate () override rate gr::fec::code::polar_encoder_systematic::rate rate

Returns the rate of the code. For every 1 input bit, there are r output bits, so the rate is 1/r. Used for setting things like the encoder block's relative rate.

This function MUST be reimplemented by the child class.

get_input_size
get_output_size
int int gr::fec::code::polar_encoder_systematic::get_input_size () override get_input_size gr::fec::code::polar_encoder_systematic::get_input_size get_input_size

Returns the input size in items that the encoder object uses to encode a full frame. Often, this number is the number of bits per frame if the input format is unpacked. If the block expects packed bytes, then this value should be the number of bytes (number of bits / 8) per input frame.

The child class MUST implement this function.

gr::fec::code::polar_common::num_info_bits
rate
int int gr::fec::code::polar_encoder_systematic::get_output_size () override get_output_size gr::fec::code::polar_encoder_systematic::get_output_size get_output_size

Returns the output size in items that the encoder object produces after encoding a full frame. Often, this number is the number of bits in the outputted frame if the input format is unpacked. If the block produces packed bytes, then this value should be the number of bytes (number of bits / 8) per frame produced. This value is generally something like R*get_input_size() for a 1/R rate code.

The child class MUST implement this function.

gr::fec::code::polar_common::block_size
rate
bool bool gr::fec::code::polar_encoder_systematic::set_frame_size (unsigned int frame_size) override set_frame_size gr::fec::code::polar_encoder_systematic::set_frame_size set_frame_size unsigned int frame_size

Updates the size of the frame to encode.

The child class MUST implement this function and interpret how the `frame_size` information affects the block's behavior. It should also provide bounds checks.

gr::fec::code::polar_encoder_systematic::~polar_encoder_systematic
() override
~polar_encoder_systematic
gr::fec::code::polar_encoder_systematic::~polar_encoder_systematic
gr::fec::code::polar_common::block_size
gr::fec::code::polar_common::num_info_bits
gr::fec::code::polar_encoder_systematic::polar_encoder_systematic
(int block_size, int num_info_bits, std::vector< int > frozen_bit_positions)
polar_encoder_systematic
gr::fec::code::polar_encoder_systematic::polar_encoder_systematic
int block_size
int num_info_bits
std::vector< int > frozen_bit_positions
void void gr::fec::code::polar_encoder_systematic::bit_reverse_and_reset_frozen_bits (unsigned char *outbuf, const unsigned char *inbuf) bit_reverse_and_reset_frozen_bits gr::fec::code::polar_encoder_systematic::bit_reverse_and_reset_frozen_bits unsigned char * outbuf const unsigned char * inbuf

systematic POLAR encoder for basic details see 'polar_common' class.

expects values with MSB first. It needs a full information word and encodes it in one pass. Output is a codeword of block_size.

Systematic encoding indicates that the info bit values are present in the codeword. 'info_bit_positions' may be obtained by ordering all non frozen_bit_positions in increasing order. One may extract them at their positions after a bit reversal operation. encoder -> decoder chain would need additional bit-reversal after encoding + before decoding. This is unnecessary.

gr::fec::code::polar_common
gr::fec::code::polar_encoder_systematic
gr::fec::generic_encoder
gr::fec::code::polar_common
d_frozen_bit_positions
d_info_bit_positions
d_info_bit_positions_reversed
d_frozen_bit_values
gr::fec::code::polar_encoder_systematic
gr::fec::generic_encoder
d_logger
d_name
std::basic_string< Char >
std::shared_ptr< logger >
std::string
std::vector< int >
std::vector< uint8_t >
- gr::fec::code::polar_encoder_systematic
  alias
- gr::fec::code::polar_encoder_systematic
  base_unique_id
- gr::fec::code::polar_encoder_systematic
  bit_reverse
- gr::fec::code::polar_encoder_systematic
  bit_reverse_and_reset_frozen_bits
- gr::fec::code::polar_encoder_systematic
  block_power
- gr::fec::code::polar_encoder_systematic
  block_size
- gr::fec::code::polar_encoder_systematic
  d_frozen_bit_positions
- gr::fec::code::polar_encoder_systematic
  d_frozen_bit_values
- gr::fec::code::polar_encoder_systematic
  d_info_bit_positions
- gr::fec::code::polar_encoder_systematic
  d_info_bit_positions_reversed
- gr::fec::code::polar_encoder_systematic
  d_logger
- gr::fec::code::polar_encoder_systematic
  d_name
- gr::fec::code::polar_encoder_systematic
  d_volk_frozen_bit_mask
- gr::fec::code::polar_encoder_systematic
  d_volk_frozen_bits
- gr::fec::code::polar_encoder_systematic
  d_volk_syst_intermediate
- gr::fec::code::polar_encoder_systematic
  d_volk_temp
- gr::fec::code::polar_encoder_systematic
  generic_encoder
- gr::fec::code::polar_encoder_systematic
  generic_encoder
- gr::fec::code::polar_encoder_systematic
  generic_work
- gr::fec::code::polar_encoder_systematic
  get_input_conversion
- gr::fec::code::polar_encoder_systematic
  get_input_size
- gr::fec::code::polar_encoder_systematic
  get_output_conversion
- gr::fec::code::polar_encoder_systematic
  get_output_size
- gr::fec::code::polar_encoder_systematic
  make
- gr::fec::code::polar_encoder_systematic
  my_id
- gr::fec::code::polar_encoder_systematic
  num_info_bits
- gr::fec::code::polar_encoder_systematic
  polar_common
- gr::fec::code::polar_encoder_systematic
  polar_encoder_systematic
- gr::fec::code::polar_encoder_systematic
  print_packed_bit_array
- gr::fec::code::polar_encoder_systematic
  print_unpacked_bit_array
- gr::fec::code::polar_encoder_systematic
  rate
- gr::fec::code::polar_encoder_systematic
  set_frame_size
- gr::fec::code::polar_encoder_systematic
  setup_info_bit_positions_reversed
- gr::fec::code::polar_encoder_systematic
  setup_volk_vectors
- gr::fec::code::polar_encoder_systematic
  sptr
- gr::fec::code::polar_encoder_systematic
  unique_id
- gr::fec::code::polar_encoder_systematic
  volk_encode
- gr::fec::code::polar_encoder_systematic
  volk_encode_block
- gr::fec::code::polar_encoder_systematic
  ~generic_encoder
- gr::fec::code::polar_encoder_systematic
  ~polar_common
- gr::fec::code::polar_encoder_systematic
  ~polar_encoder_systematic