aboutsummaryrefslogtreecommitdiff
path: root/src/fdmdv_put_test_bits.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fdmdv_put_test_bits.c')
-rw-r--r--src/fdmdv_put_test_bits.c250
1 files changed, 125 insertions, 125 deletions
diff --git a/src/fdmdv_put_test_bits.c b/src/fdmdv_put_test_bits.c
index abda2f9..01bb3f3 100644
--- a/src/fdmdv_put_test_bits.c
+++ b/src/fdmdv_put_test_bits.c
@@ -9,7 +9,6 @@
\*---------------------------------------------------------------------------*/
-
/*
Copyright (C) 2012 David Rowe
@@ -28,140 +27,141 @@
*/
#include <assert.h>
+#include <errno.h>
+#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <math.h>
-#include <errno.h>
#include "codec2_fdmdv.h"
-int main(int argc, char *argv[])
-{
- FILE *fin;
- struct FDMDV *fdmdv;
- char *packed_bits;
- int *rx_bits;
- int i, bit, byte;
- int test_frame_sync, bit_errors, total_bit_errors, total_bits, ntest_bits;
- int test_frame_sync_state, test_frame_count;
- int bits_per_fdmdv_frame;
- int bits_per_codec_frame;
- int bytes_per_codec_frame;
- int Nc;
- short *error_pattern;
-
- if (argc < 2) {
- printf("usage: %s InputBitFile [Nc]\n", argv[0]);
- printf("e.g %s test.c2\n", argv[0]);
- exit(1);
- }
-
- if (strcmp(argv[1], "-") == 0) fin = stdin;
- else if ( (fin = fopen(argv[1],"rb")) == NULL ) {
- fprintf(stderr, "Error opening input bit file: %s: %s.\n",
- argv[1], strerror(errno));
- exit(1);
- }
-
- if (argc == 3) {
- Nc = atoi(argv[2]);
- if ((Nc < 2) || (Nc > FDMDV_NC_MAX) ) {
- fprintf(stderr, "Error number of carriers must be between 2 and %d\n", FDMDV_NC_MAX);
- exit(1);
- }
+int main(int argc, char *argv[]) {
+ FILE *fin;
+ struct FDMDV *fdmdv;
+ char *packed_bits;
+ int *rx_bits;
+ int i, bit, byte;
+ int test_frame_sync, bit_errors, total_bit_errors, total_bits, ntest_bits;
+ int test_frame_sync_state, test_frame_count;
+ int bits_per_fdmdv_frame;
+ int bits_per_codec_frame;
+ int bytes_per_codec_frame;
+ int Nc;
+ short *error_pattern;
+
+ if (argc < 2) {
+ printf("usage: %s InputBitFile [Nc]\n", argv[0]);
+ printf("e.g %s test.c2\n", argv[0]);
+ exit(1);
+ }
+
+ if (strcmp(argv[1], "-") == 0)
+ fin = stdin;
+ else if ((fin = fopen(argv[1], "rb")) == NULL) {
+ fprintf(stderr, "Error opening input bit file: %s: %s.\n", argv[1],
+ strerror(errno));
+ exit(1);
+ }
+
+ if (argc == 3) {
+ Nc = atoi(argv[2]);
+ if ((Nc < 2) || (Nc > FDMDV_NC_MAX)) {
+ fprintf(stderr, "Error number of carriers must be between 2 and %d\n",
+ FDMDV_NC_MAX);
+ exit(1);
}
- else
- Nc = FDMDV_NC;
-
- fdmdv = fdmdv_create(Nc);
-
- bits_per_fdmdv_frame = fdmdv_bits_per_frame(fdmdv);
- bits_per_codec_frame = 2*fdmdv_bits_per_frame(fdmdv);
- bytes_per_codec_frame = (bits_per_codec_frame+7)/8;
- fprintf(stderr, "bits_per_fdmdv_frame: %d bits_per_codec_frame: %d bytes_per_codec_frame: %d\n",
- bits_per_fdmdv_frame, bits_per_codec_frame, bytes_per_codec_frame);
-
- packed_bits = (char*)malloc(bytes_per_codec_frame);
- assert(packed_bits != NULL);
- rx_bits = (int*)malloc(sizeof(int)*bits_per_codec_frame);
- assert(rx_bits != NULL);
-
- error_pattern = (short*)malloc(fdmdv_error_pattern_size(fdmdv)*sizeof(int));
- assert(error_pattern != NULL);
-
- total_bit_errors = 0;
- total_bits = 0;
- test_frame_sync_state = 0;
- test_frame_count = 0;
-
- while(fread(packed_bits, sizeof(char), bytes_per_codec_frame, fin) == bytes_per_codec_frame) {
- /* unpack bits, MSB first */
-
- bit = 7; byte = 0;
- for(i=0; i<bits_per_codec_frame; i++) {
- rx_bits[i] = (packed_bits[byte] >> bit) & 0x1;
- //printf("%d 0x%x %d\n", i, packed_bits[byte], rx_bits[i]);
- bit--;
- if (bit < 0) {
- bit = 7;
- byte++;
- }
- }
-
- fdmdv_put_test_bits(fdmdv, &test_frame_sync, error_pattern, &bit_errors, &ntest_bits, rx_bits);
-
- if (test_frame_sync == 1) {
- test_frame_sync_state = 1;
- test_frame_count = 0;
- }
-
- if (test_frame_sync_state) {
- if (test_frame_count == 0) {
- total_bit_errors += bit_errors;
- total_bits = total_bits + ntest_bits;
- printf("+");
- }
- else
- printf("-");
- test_frame_count++;
- if (test_frame_count == 4)
- test_frame_count = 0;
- }
- else
- printf("-");
-
- fdmdv_put_test_bits(fdmdv, &test_frame_sync, error_pattern, &bit_errors, &ntest_bits, &rx_bits[bits_per_fdmdv_frame]);
-
- if (test_frame_sync == 1) {
- test_frame_sync_state = 1;
- test_frame_count = 0;
- }
-
- if (test_frame_sync_state) {
- if (test_frame_count == 0) {
- total_bit_errors += bit_errors;
- total_bits = total_bits + ntest_bits;
- printf("+");
- }
- else
- printf("-");
- test_frame_count++;
- if (test_frame_count == 4)
- test_frame_count = 0;
- }
- else
- printf("-");
+ } else
+ Nc = FDMDV_NC;
+
+ fdmdv = fdmdv_create(Nc);
+
+ bits_per_fdmdv_frame = fdmdv_bits_per_frame(fdmdv);
+ bits_per_codec_frame = 2 * fdmdv_bits_per_frame(fdmdv);
+ bytes_per_codec_frame = (bits_per_codec_frame + 7) / 8;
+ fprintf(stderr,
+ "bits_per_fdmdv_frame: %d bits_per_codec_frame: %d "
+ "bytes_per_codec_frame: %d\n",
+ bits_per_fdmdv_frame, bits_per_codec_frame, bytes_per_codec_frame);
+
+ packed_bits = (char *)malloc(bytes_per_codec_frame);
+ assert(packed_bits != NULL);
+ rx_bits = (int *)malloc(sizeof(int) * bits_per_codec_frame);
+ assert(rx_bits != NULL);
+
+ error_pattern =
+ (short *)malloc(fdmdv_error_pattern_size(fdmdv) * sizeof(int));
+ assert(error_pattern != NULL);
+
+ total_bit_errors = 0;
+ total_bits = 0;
+ test_frame_sync_state = 0;
+ test_frame_count = 0;
+
+ while (fread(packed_bits, sizeof(char), bytes_per_codec_frame, fin) ==
+ bytes_per_codec_frame) {
+ /* unpack bits, MSB first */
+
+ bit = 7;
+ byte = 0;
+ for (i = 0; i < bits_per_codec_frame; i++) {
+ rx_bits[i] = (packed_bits[byte] >> bit) & 0x1;
+ // printf("%d 0x%x %d\n", i, packed_bits[byte], rx_bits[i]);
+ bit--;
+ if (bit < 0) {
+ bit = 7;
+ byte++;
+ }
}
- fclose(fin);
- free(error_pattern);
- fdmdv_destroy(fdmdv);
+ fdmdv_put_test_bits(fdmdv, &test_frame_sync, error_pattern, &bit_errors,
+ &ntest_bits, rx_bits);
- printf("\nbits %d errors %d BER %1.4f\n", total_bits, total_bit_errors, (float)total_bit_errors/(1E-6+total_bits) );
+ if (test_frame_sync == 1) {
+ test_frame_sync_state = 1;
+ test_frame_count = 0;
+ }
- if (packed_bits != NULL) free(packed_bits);
+ if (test_frame_sync_state) {
+ if (test_frame_count == 0) {
+ total_bit_errors += bit_errors;
+ total_bits = total_bits + ntest_bits;
+ printf("+");
+ } else
+ printf("-");
+ test_frame_count++;
+ if (test_frame_count == 4) test_frame_count = 0;
+ } else
+ printf("-");
+
+ fdmdv_put_test_bits(fdmdv, &test_frame_sync, error_pattern, &bit_errors,
+ &ntest_bits, &rx_bits[bits_per_fdmdv_frame]);
+
+ if (test_frame_sync == 1) {
+ test_frame_sync_state = 1;
+ test_frame_count = 0;
+ }
- return 0;
+ if (test_frame_sync_state) {
+ if (test_frame_count == 0) {
+ total_bit_errors += bit_errors;
+ total_bits = total_bits + ntest_bits;
+ printf("+");
+ } else
+ printf("-");
+ test_frame_count++;
+ if (test_frame_count == 4) test_frame_count = 0;
+ } else
+ printf("-");
+ }
+
+ fclose(fin);
+ free(error_pattern);
+ fdmdv_destroy(fdmdv);
+
+ printf("\nbits %d errors %d BER %1.4f\n", total_bits, total_bit_errors,
+ (float)total_bit_errors / (1E-6 + total_bits));
+
+ if (packed_bits != NULL) free(packed_bits);
+
+ return 0;
}
-