diff options
| author | drowe67 <[email protected]> | 2023-07-20 08:59:48 +0930 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-07-20 08:59:48 +0930 |
| commit | 06d4c11e699b0351765f10398abb4f663a984f36 (patch) | |
| tree | 33e22af0814c5b6c3d676f096ae8c2ac8a3ed9f0 /src/gp_interleaver.c | |
| parent | 6588e77f38bdebd7adffe091b22e7760d95d0ccb (diff) | |
| parent | 4d6c143c0abec15e1d6ed1fd95d36f80e6cb7df8 (diff) | |
Merge pull request #3 from drowe67/dr-cleanup21.2.0
Cleanup Part 2
Diffstat (limited to 'src/gp_interleaver.c')
| -rw-r--r-- | src/gp_interleaver.c | 131 |
1 files changed, 65 insertions, 66 deletions
diff --git a/src/gp_interleaver.c b/src/gp_interleaver.c index 26e74bf..61678f8 100644 --- a/src/gp_interleaver.c +++ b/src/gp_interleaver.c @@ -28,9 +28,10 @@ along with this program; if not, see <http://www.gnu.org/licenses/>. */ +#include "gp_interleaver.h" + #include <assert.h> #include <stdio.h> -#include "gp_interleaver.h" /* Choose b for Golden Prime Interleaver. b is chosen to be the @@ -43,105 +44,103 @@ */ static const int b_table[] = { - 56, 37, /* 700E: HRA_56_56 */ - 106, 67, /* 2020B: (112,56) partial protection */ - 112, 71, /* 700D: HRA_112_112 */ - 128, 83, /* datac0: H_128_256_5 */ - 192, 127, /* datac13: H_256_512_4, 128 data bits used */ - 210, 131, /* 2020: HRAb_396_504 with 312 data bits used */ - 736, 457, /* datac4: H_1024_2048_4f, 448 data bits used */ - 1024, 641, /* datac3: H_1024_2048_4f */ - 1290, 797, /* datac2: H2064_516_sparse */ - 4096, 2531 /* datac1: H_4096_8192_3d */ + 56, 37, /* 700E: HRA_56_56 */ + 106, 67, /* 2020B: (112,56) partial protection */ + 112, 71, /* 700D: HRA_112_112 */ + 128, 83, /* datac0: H_128_256_5 */ + 192, 127, /* datac13: H_256_512_4, 128 data bits used */ + 210, 131, /* 2020: HRAb_396_504 with 312 data bits used */ + 736, 457, /* datac4: H_1024_2048_4f, 448 data bits used */ + 1024, 641, /* datac3: H_1024_2048_4f */ + 1290, 797, /* datac2: H2064_516_sparse */ + 4096, 2531 /* datac1: H_4096_8192_3d */ }; -int choose_interleaver_b(int Nbits) -{ - int i; - for(i=0; i<sizeof(b_table)/sizeof(int); i+=2) { - if (b_table[i] == Nbits) { - return b_table[i+1]; - } +int choose_interleaver_b(int Nbits) { + int i; + for (i = 0; i < sizeof(b_table) / sizeof(int); i += 2) { + if (b_table[i] == Nbits) { + return b_table[i + 1]; } + } - /* if we get to here it means a Nbits we don't have in our table so choke */ + /* if we get to here it means a Nbits we don't have in our table so choke */ - fprintf(stderr, "gp_interleaver: Nbits: %d, b not found!\n", Nbits); - assert(0); - return -1; + fprintf(stderr, "gp_interleaver: Nbits: %d, b not found!\n", Nbits); + assert(0); + return -1; } - void gp_interleave_comp(COMP interleaved_frame[], COMP frame[], int Nbits) { int b = choose_interleaver_b(Nbits); - int i,j; - for (i=0; i<Nbits; i++) { - j = (b*i) % Nbits; + int i, j; + for (i = 0; i < Nbits; i++) { + j = (b * i) % Nbits; interleaved_frame[j] = frame[i]; } } void gp_deinterleave_comp(COMP frame[], COMP interleaved_frame[], int Nbits) { int b = choose_interleaver_b(Nbits); - int i,j; - for (i=0; i<Nbits; i++) { - j = (b*i) % Nbits; - frame[i] = interleaved_frame[j]; + int i, j; + for (i = 0; i < Nbits; i++) { + j = (b * i) % Nbits; + frame[i] = interleaved_frame[j]; } } void gp_interleave_float(float interleaved_frame[], float frame[], int Nbits) { int b = choose_interleaver_b(Nbits); - int i,j; + int i, j; - for (i=0; i<Nbits; i++) { - j = (b*i) % Nbits; + for (i = 0; i < Nbits; i++) { + j = (b * i) % Nbits; interleaved_frame[j] = frame[i]; } } -void gp_deinterleave_float(float frame[], float interleaved_frame[], int Nbits) { +void gp_deinterleave_float(float frame[], float interleaved_frame[], + int Nbits) { int b = choose_interleaver_b(Nbits); - int i,j; + int i, j; - for (i=0; i<Nbits; i++) { - j = (b*i) % Nbits; + for (i = 0; i < Nbits; i++) { + j = (b * i) % Nbits; frame[i] = interleaved_frame[j]; } } // The above work on complex numbers (e.g. OFDM symbols), so the below work on // groups of two bits at a time to remain compatible with the above. -void gp_interleave_bits(char interleaved_frame[], char frame[], int Nbits) -{ - char temp[Nbits]; - int b = choose_interleaver_b(Nbits); - int i,j; - - for (i=0; i<Nbits; i++) { - j = (b*i) % Nbits; - temp[j] = ((frame[i*2] & 1) << 1) | (frame[i*2+1] & 1); - } - - for (i=0; i<Nbits; i++) { - interleaved_frame[i*2] = temp[i] >> 1; - interleaved_frame[i*2+1] = temp[i] & 1; - } +void gp_interleave_bits(char interleaved_frame[], char frame[], int Nbits) { + char temp[Nbits]; + int b = choose_interleaver_b(Nbits); + int i, j; + + for (i = 0; i < Nbits; i++) { + j = (b * i) % Nbits; + temp[j] = ((frame[i * 2] & 1) << 1) | (frame[i * 2 + 1] & 1); + } + + for (i = 0; i < Nbits; i++) { + interleaved_frame[i * 2] = temp[i] >> 1; + interleaved_frame[i * 2 + 1] = temp[i] & 1; + } } -void gp_deinterleave_bits(char frame[], char interleaved_frame[], int Nbits) -{ - char temp[Nbits]; - int b = choose_interleaver_b(Nbits); - int i,j; +void gp_deinterleave_bits(char frame[], char interleaved_frame[], int Nbits) { + char temp[Nbits]; + int b = choose_interleaver_b(Nbits); + int i, j; - for (i=0; i<Nbits; i++) { - j = (b*i) % Nbits; - temp[i] = ((interleaved_frame[j*2] & 1) << 1) | (interleaved_frame[j*2+1] & 1); - } - - for (i=0; i<Nbits; i++) { - frame[i*2] = temp[i] >> 1; - frame[i*2 + 1] = temp[i] & 1; - } + for (i = 0; i < Nbits; i++) { + j = (b * i) % Nbits; + temp[i] = ((interleaved_frame[j * 2] & 1) << 1) | + (interleaved_frame[j * 2 + 1] & 1); + } + + for (i = 0; i < Nbits; i++) { + frame[i * 2] = temp[i] >> 1; + frame[i * 2 + 1] = temp[i] & 1; + } } |
