From cf1cabc15dd337ff120a724937569d3be4bd1d04 Mon Sep 17 00:00:00 2001 From: F5OEO Date: Thu, 22 Mar 2018 22:48:49 +0000 Subject: [PATCH] Add harmonic calculation --- src/iqdmasync.cpp | 12 +++++++----- src/iqdmasync.h | 4 ++-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/iqdmasync.cpp b/src/iqdmasync.cpp index afb4f3a..fd6cc9f 100644 --- a/src/iqdmasync.cpp +++ b/src/iqdmasync.cpp @@ -136,14 +136,14 @@ void iqdmasync::SetDmaAlgo() } -void iqdmasync::SetIQSample(uint32_t Index,std::complex sample) +void iqdmasync::SetIQSample(uint32_t Index,std::complex sample,int Harmonic) { Index=Index%buffersize; mydsp.pushsample(sample); /*if(mydsp.frequency>2250) mydsp.frequency=2250; if(mydsp.frequency<1000) mydsp.frequency=1000;*/ - sampletab[Index*registerbysample]=(0x5A<<24)|GetMasterFrac(mydsp.frequency); //Frequency - int IntAmplitude=(int)(mydsp.amplitude*1e4*8.0)-1; + sampletab[Index*registerbysample]=(0x5A<<24)|GetMasterFrac(mydsp.frequency)/Harmonic; //Frequency + int IntAmplitude=(int)(mydsp.amplitude*1e4*8.0)-1; //Fixme 1e4 seems to work with SSB but should be an issue with classical IQ file int IntAmplitudePAD=0; if(IntAmplitude>7) IntAmplitudePAD=7; @@ -164,7 +164,7 @@ void iqdmasync::SetIQSample(uint32_t Index,std::complex sample) PushSample(Index); } -void iqdmasync::SetIQSamples(std::complex *sample,size_t Size) +void iqdmasync::SetIQSamples(std::complex *sample,size_t Size,int Harmonic=1) { size_t NbWritten=0; int OSGranularity=100; @@ -188,9 +188,11 @@ void iqdmasync::SetIQSamples(std::complex *sample,size_t Size) for(int i=0;i sample); - void SetIQSamples(std::complex *sample,size_t Size); + void SetIQSample(uint32_t Index,std::complex sample,int Harmonic); + void SetIQSamples(std::complex *sample,size_t Size,int Harmonic); }; #endif