Added Foxhunt Mode

This commit is contained in:
clemibunge 2020-02-18 01:35:49 +01:00 committed by GitHub
parent 0442d78eb8
commit 8bb85619d8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 113 additions and 0 deletions

113
src/foxhunt/foxhunt.cpp Normal file
View File

@ -0,0 +1,113 @@
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <cstring>
#include <errno.h>
#include <stdarg.h>
#include <stdint.h>
#include <math.h>
#include <time.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/mman.h>
#include "../librpitx/src/librpitx.h"
int FileFreqTiming;
ngfmdmasync *fmmod;
static double GlobalTuningFrequency=00000.0;
int FifoSize=10000; //10ms
double frequencyshift=20000;
bool running=true;
void playtone(double Frequency,uint32_t Timing)//Timing in 0.1us
{
uint32_t SumTiming=0;
SumTiming+=Timing%100;
if(SumTiming>=100)
{
Timing+=100;
SumTiming=SumTiming-100;
}
int NbSamples=(Timing/100);
while(NbSamples>0)
{
usleep(10);
int Available=fmmod->GetBufferAvailable();
if(Available>FifoSize/2)
{
int Index=fmmod->GetUserMemIndex();
if(Available>NbSamples) Available=NbSamples;
for(int j=0;j<Available;j++)
{
fmmod->SetFrequencySample(Index+j,Frequency);
NbSamples--;
}
}
}
}
static void SendTones()
{
double basefreq = 1100;
double freq2 = 1100 + frequencyshift;
while(running)
{
playtone( 1100 , 10000000) ;
playtone( freq2 , 10000000) ;
}
}
static void
terminate(int num)
{
running=false;
fprintf(stderr,"Caught signal - Terminating %x\n",num);
}
int main(int argc, char **argv)
{
float frequency=144.5e6;
if (argc > 1)
{
frequency=atof(argv[1]);
frequencyshift=atof(argv[2]);
}
else
{
printf("usage : foxhunt frequency(Hz) frequency shift(Hz)\n");
exit(0);
}
for (int i = 0; i < 64; i++) {
struct sigaction sa;
std::memset(&sa, 0, sizeof(sa));
sa.sa_handler = terminate;
sigaction(i, &sa, NULL);
}
fmmod=new ngfmdmasync(frequency,100000,14,FifoSize);
SendTones();
delete fmmod;
return 0;
}