summaryrefslogtreecommitdiff
path: root/gr-fec/include/gnuradio/fec/polar_encoder.h
diff options
context:
space:
mode:
Diffstat (limited to 'gr-fec/include/gnuradio/fec/polar_encoder.h')
-rw-r--r--gr-fec/include/gnuradio/fec/polar_encoder.h21
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;