diff options
Diffstat (limited to 'gr-fec/include/gnuradio/fec/polar_encoder.h')
-rw-r--r-- | gr-fec/include/gnuradio/fec/polar_encoder.h | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/gr-fec/include/gnuradio/fec/polar_encoder.h b/gr-fec/include/gnuradio/fec/polar_encoder.h index 20ff5dc3b1..530a6ded40 100644 --- a/gr-fec/include/gnuradio/fec/polar_encoder.h +++ b/gr-fec/include/gnuradio/fec/polar_encoder.h @@ -33,6 +33,13 @@ namespace gr { /*! * \brief POLAR encoder + * for basic details see 'polar_common' class. + * \ingroup error_coding_blk + * + * \details + * Additional parameters + * is_packed: choose 1 active bit/byte or 8 active bit/byte. + * if false, VOLK polar encoder is used. * */ class FEC_API polar_encoder : public generic_encoder, public polar_common @@ -44,23 +51,21 @@ namespace gr { // FECAPI void generic_work(void *in_buffer, void *out_buffer); double rate(){return (1.0 * get_input_size() / get_output_size());}; - int get_input_size(){return num_info_bits() / (is_packed() ? 8 : 1);}; - int get_output_size(){return block_size() / (is_packed() ? 8 : 1);}; + int get_input_size(){return num_info_bits() / (d_is_packed ? 8 : 1);}; + int get_output_size(){return block_size() / (d_is_packed ? 8 : 1);}; bool set_frame_size(unsigned int frame_size){return false;}; - const char* get_input_conversion(){return is_packed() ? "pack" : "none";}; - const char* get_output_conversion(){return is_packed() ? "packed_bits" : "none";}; + const char* get_input_conversion(){return d_is_packed ? "pack" : "none";}; + const char* get_output_conversion(){return d_is_packed ? "packed_bits" : "none";}; private: polar_encoder(int block_size, int num_info_bits, std::vector<int>& frozen_bit_positions, std::vector<char>& frozen_bit_values, bool is_packed); - std::vector<int> d_frozen_bit_positions; - std::vector<int> d_info_bit_positions; - std::vector<char> d_frozen_bit_values; + std::vector<int> d_info_bit_reversed_positions; + bool d_is_packed; // c'tor method for packed algorithm setup. void setup_frozen_bit_inserter(); // methods insert input bits and frozen bits into packed array for encoding - unsigned char* d_block_array; // use for encoding unsigned char* d_frozen_bit_prototype; // packed frozen bits are written onto it and later copies are used. void insert_packed_frozen_bits_and_reverse(unsigned char* target, const unsigned char* input) const; void insert_unpacked_bit_into_packed_array_at_position(unsigned char* target, const unsigned char bit, const int pos) const; |