aboutsummaryrefslogtreecommitdiff
path: root/src/gp_interleaver.c
diff options
context:
space:
mode:
authordrowe67 <[email protected]>2023-07-20 08:59:48 +0930
committerGitHub <[email protected]>2023-07-20 08:59:48 +0930
commit06d4c11e699b0351765f10398abb4f663a984f36 (patch)
tree33e22af0814c5b6c3d676f096ae8c2ac8a3ed9f0 /src/gp_interleaver.c
parent6588e77f38bdebd7adffe091b22e7760d95d0ccb (diff)
parent4d6c143c0abec15e1d6ed1fd95d36f80e6cb7df8 (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.c131
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;
+ }
}