diff options
Diffstat (limited to 'gr-fec/lib/tpc_common.cc')
-rw-r--r-- | gr-fec/lib/tpc_common.cc | 78 |
1 files changed, 45 insertions, 33 deletions
diff --git a/gr-fec/lib/tpc_common.cc b/gr-fec/lib/tpc_common.cc index 4d6a744580..ac55f63c8a 100644 --- a/gr-fec/lib/tpc_common.cc +++ b/gr-fec/lib/tpc_common.cc @@ -22,76 +22,88 @@ #include <gnuradio/fec/tpc_common.h> -namespace gr { - namespace fec { +namespace gr { +namespace fec { -int tpc_common::parity_counter( int symbol, int length ) { +int tpc_common::parity_counter(int symbol, int length) +{ int counter; int temp_parity = 0; - for (counter=0;counter<length;counter++) { - temp_parity = temp_parity^(symbol&1); - symbol = symbol>>1; + for (counter = 0; counter < length; counter++) { + temp_parity = temp_parity ^ (symbol & 1); + symbol = symbol >> 1; } - return( temp_parity ); + return (temp_parity); } -void tpc_common::rsc_enc_bit(int input, int state_in, std::vector<int> g, int KK, int nn, - std::vector< std::vector<int> > &outputVec, std::vector< std::vector<int> > &nextStateVec) { +void tpc_common::rsc_enc_bit(int input, + int state_in, + std::vector<int> g, + int KK, + int nn, + std::vector<std::vector<int>>& outputVec, + std::vector<std::vector<int>>& nextStateVec) +{ int state, i, out, a_k; // systematic output out = input; // determine feedback bit - a_k = input^tpc_common::parity_counter( g[0]&state_in, KK ); + a_k = input ^ tpc_common::parity_counter(g[0] & state_in, KK); // create a word made up of state and feedback bit - state = (a_k<<(KK-1))^state_in; + state = (a_k << (KK - 1)) ^ state_in; // AND the word with the generators - for (i=1;i<nn;i++) { + for (i = 1; i < nn; i++) { // update output symbol - out = (out<<1) + tpc_common::parity_counter( state&g[i], KK ); + out = (out << 1) + tpc_common::parity_counter(state & g[i], KK); } outputVec[input][state_in] = out; - nextStateVec[input][state_in] = (state>>1); + nextStateVec[input][state_in] = (state >> 1); } void tpc_common::precomputeStateTransitionMatrix_RSCPoly( - int numStates, - std::vector<int> g, - int KK, - int nn, - std::vector< std::vector<int> > &output, - std::vector< std::vector<int> > &nextStates) { - - for(int input=0; input<2; input++) { - for(int state=0; state<numStates; state++) { + int numStates, + std::vector<int> g, + int KK, + int nn, + std::vector<std::vector<int>>& output, + std::vector<std::vector<int>>& nextStates) +{ + + for (int input = 0; input < 2; input++) { + for (int state = 0; state < numStates; state++) { tpc_common::rsc_enc_bit(input, state, g, KK, nn, output, nextStates); } } } -void tpc_common::rsc_tail( std::vector<int> &tail_p, std::vector<int> g, int max_states, int mm ) { +void tpc_common::rsc_tail(std::vector<int>& tail_p, + std::vector<int> g, + int max_states, + int mm) +{ // Determine the tail for each state - for(int state=0;state<max_states;state++) { + for (int state = 0; state < max_states; state++) { // determine feedback word - tail_p[state] = tpc_common::parity_counter( g[0]&state, mm ); + tail_p[state] = tpc_common::parity_counter(g[0] & state, mm); } return; } -void tpc_common::itob(std::vector<int> &binVec, int symbol, int length) { +void tpc_common::itob(std::vector<int>& binVec, int symbol, int length) +{ /// Go through each bit in the vector - for (int counter=0;counter<length;counter++) { - binVec[length-counter-1] = (symbol&1); - symbol = symbol>>1; + for (int counter = 0; counter < length; counter++) { + binVec[length - counter - 1] = (symbol & 1); + symbol = symbol >> 1; } - } -} -} +} // namespace fec +} // namespace gr |