23 #ifndef INCLUDED_TPC_DECODER_H
24 #define INCLUDED_TPC_DECODER_H
42 tpc_decoder (std::vector<int> row_polys, std::vector<int> col_polys,
int krow,
int kcol,
int bval,
int qval,
int max_iter,
int decoder_type);
47 int get_input_item_size();
48 int get_output_item_size();
49 const char* get_conversion();
50 void generic_work(
void *inBuffer,
void *outbuffer);
51 int get_output_size();
54 std::vector<int> d_rowpolys;
55 std::vector<int> d_colpolys;
68 std::vector< std::vector<int> > rowOutputs;
69 std::vector< std::vector<int> > rowNextStates;
71 std::vector< std::vector<int> > colOutputs;
72 std::vector< std::vector<int> > colNextStates;
91 std::vector< std::vector<float> > channel_llr;
92 std::vector< std::vector<float> > Z;
93 std::vector<float> extrinsic_info;
94 std::vector<float> input_u_rows;
95 std::vector<float> input_u_cols;
96 std::vector<float> input_c_rows;
97 std::vector<float> input_c_cols;
98 std::vector<float> output_u_rows;
99 std::vector<float> output_u_cols;
100 std::vector<float> output_c_rows;
101 std::vector<float> output_c_cols;
103 uint32_t numInitLoadIter;
104 int numInitRemaining;
105 int output_c_col_idx;
112 int mm_row, max_states_row, num_symbols_row;
113 std::vector< std::vector<float> > beta_row;
114 std::vector<float> alpha_prime_row;
115 std::vector<float> alpha_row;
116 std::vector<float> metric_c_row;
117 std::vector<float> rec_array_row;
118 std::vector<float> num_llr_c_row;
119 std::vector<float> den_llr_c_row;
120 void siso_decode_row();
122 int mm_col, max_states_col, num_symbols_col;
123 std::vector< std::vector<float> > beta_col;
124 std::vector<float> alpha_prime_col;
125 std::vector<float> alpha_col;
126 std::vector<float> metric_c_col;
127 std::vector<float> rec_array_col;
128 std::vector<float> num_llr_c_col;
129 std::vector<float> den_llr_c_col;
130 void siso_decode_col();
134 float gamma(
const std::vector<float> rec_array,
const int symbol);
136 float (tpc_decoder::*max_star)(
const float,
const float);
138 float linear_log_map(
const float delta1,
const float delta2);
139 float max_log_map(
const float delta1,
const float delta2);
140 float constant_log_map(
const float delta1,
const float delta2);
141 float log_map_lut_correction(
const float delta1,
const float delta2);
142 float log_map_cfunction_correction(
const float delta1,
const float delta2);
144 template <
typename T>
static int sgn(T val);
147 static generic_decoder::sptr make (std::vector<int> row_poly, std::vector<int> col_poly,
int krow,
int kcol,
int bval,
int qval,
int max_iter,
int decoder_type);
149 double rate() {
return (1.0*get_output_size() / get_input_size()); }
Parent class for FECAPI objects.
Definition: generic_decoder.h:60
float INPUT_DATATYPE
Definition: tpc_decoder.h:26
bool set_frame_size(unsigned int frame_size)
Definition: tpc_decoder.h:150
Include this header to use the message passing features.
Definition: logger.h:131
unsigned char OUTPUT_DATATYPE
Definition: tpc_decoder.h:27
#define FEC_API
Definition: gr-fec/include/gnuradio/fec/api.h:30
FEC_API int get_history(generic_decoder::sptr my_decoder)
FEC_API float get_shift(generic_decoder::sptr my_decoder)
boost::shared_ptr< generic_decoder > sptr
Definition: generic_decoder.h:75
double rate()
Definition: tpc_decoder.h:149
Definition: tpc_decoder.h:40