aboutsummaryrefslogtreecommitdiff
path: root/src/fsk_get_test_bits.c
diff options
context:
space:
mode:
authorAuthor Name <[email protected]>2023-07-07 12:20:59 +0930
committerDavid Rowe <[email protected]>2023-07-07 12:29:06 +0930
commitac7c48b4dee99d4c772f133d70d8d1b38262fcd2 (patch)
treea2d0ace57a9c0e2e5b611c4987f6fed1b38b81e7 /src/fsk_get_test_bits.c
shallow zip-file copy from codec2 e9d726bf20
Diffstat (limited to 'src/fsk_get_test_bits.c')
-rw-r--r--src/fsk_get_test_bits.c97
1 files changed, 97 insertions, 0 deletions
diff --git a/src/fsk_get_test_bits.c b/src/fsk_get_test_bits.c
new file mode 100644
index 0000000..937ccf0
--- /dev/null
+++ b/src/fsk_get_test_bits.c
@@ -0,0 +1,97 @@
+/*---------------------------------------------------------------------------*\
+
+ FILE........: fsk_get_test_bits.c
+ AUTHOR......: Brady O'Brien
+ DATE CREATED: January 2016
+
+ Generates a pseudorandom sequence of bits for testing of fsk_mod and fsk_demod
+
+\*---------------------------------------------------------------------------*/
+
+
+/*
+ Copyright (C) 2016 David Rowe
+
+ All rights reserved.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 2.1, as
+ published by the Free Software Foundation. This program is
+ distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program; if not, see <http://www.gnu.org/licenses/>.
+*/
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "fsk.h"
+
+#define TEST_FRAME_SIZE 100 /* arbitrary choice, repeats after this
+ many bits, sets frame size for rx
+ processing */
+
+int main(int argc,char *argv[]){
+ int bitcnt, framecnt;
+ int framesize = TEST_FRAME_SIZE;
+ int i;
+ FILE *fout;
+ uint8_t *bitbuf;
+
+ if(argc < 3){
+ fprintf(stderr,"usage: %s OutputBitsOnePerByte numBits [framesize]\n",argv[0]);
+ exit(1);
+ }
+
+ if (argc == 4){
+ framesize = atoi(argv[3]);
+ fprintf(stderr, "Using custom frame size of %d bits\n", framesize);
+ }
+
+ /* Extract parameters */
+ bitcnt = atoi(argv[2]);
+ framecnt = bitcnt/framesize;
+ if (framecnt == 0) {
+ fprintf(stderr,"Need a minimum of %d bits\n", framesize);
+ exit(1);
+ }
+
+ if(strcmp(argv[1],"-")==0){
+ fout = stdout;
+ }else{
+ fout = fopen(argv[1],"w");
+ }
+
+ if(fout==NULL){
+ fprintf(stderr,"Couldn't open output file: %s\n", argv[1]);
+ exit(1);
+ }
+
+ /* allocate buffers for processing */
+ bitbuf = (uint8_t*)malloc(sizeof(uint8_t)*framesize);
+
+ /* Generate buffer of test frame bits from known seed */
+ srand(158324);
+ for(i=0; i<framesize; i++){
+ bitbuf[i] = rand()&0x1;
+ }
+
+ /* Output test frames */
+ srand(158324);
+ for(i=0; i<framecnt; i++){
+ fwrite(bitbuf,sizeof(uint8_t),framesize,fout);
+ if(fout == stdout){
+ fflush(fout);
+ }
+ }
+
+ free(bitbuf);
+ fclose(fout);
+
+ return 0;
+}