kopia lustrzana https://github.com/F5OEO/rpitx
Add sendiq
rodzic
96e884e4ad
commit
43021f4501
15
src/Makefile
15
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
|
||||
|
|
|
@ -0,0 +1,147 @@
|
|||
#include <unistd.h>
|
||||
#include "librpitx/src/librpitx.h"
|
||||
#include "stdio.h"
|
||||
#include <cstring>
|
||||
#include <signal.h>
|
||||
|
||||
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<float> CIQBuffer[IQBURST];
|
||||
while(running)
|
||||
{
|
||||
int nbread=fread(IQBuffer,sizeof(short),IQBURST*2,iqfile);
|
||||
if(nbread>0)
|
||||
{
|
||||
for(int i=0;i<nbread/2;i++)
|
||||
{
|
||||
|
||||
CIQBuffer[i]=std::complex<float>(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();
|
||||
|
||||
}
|
||||
|
Ładowanie…
Reference in New Issue