diff --git a/src/Makefile b/src/Makefile index 032a6a1..ce3e251 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,5 +1,5 @@ #all: ../rpitx ../pissb ../pisstv ../pifsq ../pifm ../piam ../pidcf77 -all: ../pisstv ../piopera ../pifsq ../pichirp +all: ../pisstv ../piopera ../pifsq ../pichirp ../sendiq ../pissb CFLAGS = -Wall -g -O2 -Wno-unused-variable LDFLAGS = librpitx/src/librpitx.a -lm -lrt -lpthread @@ -11,14 +11,11 @@ CC= g++ CFLAGS_Pissb = -Wall -g -O2 -Wno-unused-variable LDFLAGS_Pissb = librpitx/src/librpitx.a -lm -lrt -lpthread -lsndfile -../pissb: ../ssbgen/test_ssb.c ../ssbgen/ssb_gen.c - $(CC) $(CFLAGS_Pissb) -o ../pissb ../ssbgen/ssb_gen.c ../ssbgen/test_ssb.c $(LDFLAGS_Pissb) +../pissb: ssbgen/test_ssb.c ssbgen/ssb_gen.c + $(CC) $(CFLAGS_Pissb) -o ../pissb ssbgen/ssb_gen.c ssbgen/test_ssb.c $(LDFLAGS_Pissb) -CFLAGS_Pisstv = -Wall -g -O2 -Wno-unused-variable -LDFLAGS_Pisstv = librpitx/src/librpitx.a -lm -lrt -lpthread ../pisstv : sstv/pisstv.cpp - $(CC) $(CFLAGS_Pisstv) -o ../pisstv sstv/pisstv.cpp $(LDFLAGS_Pisstv) - + $(CC) $(CFLAGS) -o ../pisstv sstv/pisstv.cpp $(LDFLAGS) ../piopera : opera/opera.cpp @@ -31,6 +28,10 @@ LDFLAGS_Pisstv = librpitx/src/librpitx.a -lm -lrt -lpthread ../pichirp : chirp/chirp.cpp $(CC) $(CFLAGS) -o ../pichirp chirp/chirp.cpp $(LDFLAGS) +../sendiq : sendiq.cpp + $(CC) $(CFLAGS) -o ../sendiq sendiq.cpp $(LDFLAGS) + + CFLAGS_Pifm = -Wall -g -O2 -Wno-unused-variable LDFLAGS_Pifm = librpitx/src/librpitx.a -lm -lrt -lpthread -lsndfile ../pifm : ../fm/pifm.c diff --git a/src/sendiq.cpp b/src/sendiq.cpp new file mode 100644 index 0000000..5a95162 --- /dev/null +++ b/src/sendiq.cpp @@ -0,0 +1,147 @@ +#include +#include "librpitx/src/librpitx.h" +#include "stdio.h" +#include +#include + +bool running=true; + +#define PROGRAM_VERSION "0.1" + +void SimpleTestFileIQ(uint64_t Freq) +{ + +} + +void print_usage(void) +{ + +fprintf(stderr,\ +"\nsendiq -%s\n\ +Usage:\nsendiq [-i File Input][-s Samplerate][-l] [-f Frequency] [-h] \n\ +-i path to File Input \n\ +-s SampleRate 10000-250000 \n\ +-f float central frequency Hz(50 kHz to 1500 MHz),\n\ +-l loop mode for file input\n\ +-h help (this help).\n\ +\n",\ +PROGRAM_VERSION); + +} /* end function print_usage */ + +static void +terminate(int num) +{ + running=false; + fprintf(stderr,"Caught signal - Terminating\n"); + +} + +int main(int argc, char* argv[]) +{ + int a; + int anyargs = 0; + float SetFrequency=434e6; + float SampleRate=48000; + bool loop_mode_flag=false; + char* FileName=NULL; + while(1) + { + a = getopt(argc, argv, "i:f:s:hl"); + + if(a == -1) + { + if(anyargs) break; + else a='h'; //print usage and exit + } + anyargs = 1; + + switch(a) + { + case 'i': // File name + FileName = optarg; + break; + case 'f': // Frequency + SetFrequency = atof(optarg); + break; + case 's': // SampleRate (Only needeed in IQ mode) + SampleRate = atoi(optarg); + break; + case 'h': // help + print_usage(); + exit(1); + break; + case 'l': // loop mode + loop_mode_flag = true; + break; + case -1: + break; + case '?': + if (isprint(optopt) ) + { + fprintf(stderr, "sendiq: unknown option `-%c'.\n", optopt); + } + else + { + fprintf(stderr, "sendiq: unknown option character `\\x%x'.\n", optopt); + } + print_usage(); + + exit(1); + break; + default: + print_usage(); + exit(1); + break; + }/* end switch a */ + }/* end while getopt() */ + + + + for (int i = 0; i < 64; i++) { + struct sigaction sa; + + std::memset(&sa, 0, sizeof(sa)); + sa.sa_handler = terminate; + sigaction(i, &sa, NULL); + } + + FILE *iqfile=NULL; + iqfile=fopen(FileName ,"rb"); + if (iqfile==NULL) printf("input file issue\n"); + + #define IQBURST 1280 + + int SR=48000; + int FifoSize=512; + iqdmasync iqtest(SetFrequency,SampleRate,14,FifoSize); + short IQBuffer[IQBURST*2]; + std::complex CIQBuffer[IQBURST]; + while(running) + { + int nbread=fread(IQBuffer,sizeof(short),IQBURST*2,iqfile); + if(nbread>0) + { + for(int i=0;i(IQBuffer[i*2]/32768.0,IQBuffer[i*2+1]/32768.0); + + } + iqtest.SetIQSamples(CIQBuffer,nbread/2); + } + else + { + printf("End of file\n"); + if(loop_mode_flag) + fseek ( iqfile , 0 , SEEK_SET ); + else + running=0; + + } + } + + iqtest.stop(); + +} +