9 #ifndef LIB_SIGNALS_MESA_H_ 10 #define LIB_SIGNALS_MESA_H_ 13 #include <boost/thread/mutex.hpp> 15 #include <volk/volk.h> 21 #define FFTDIRECTION_FORWARD FFTW_FORWARD 22 #define FFTDIRECTION_BACKWARD FFTW_BACKWARD 24 #define WINDOWTYPE_NONE 0 25 #define WINDOWTYPE_HAMMING 1 26 #define WINDOWTYPE_BLACKMAN_HARRIS 2 28 #define SQUELCH_DISABLE -1000.0 29 #define NOISE_FLOOR -100.0 36 void printArray(
float *arr,
int arrSize,
string name);
46 FFT(
int FFTDirection,
int initFFTSize,
int initNumThreads = 1);
55 virtual void setWindow(
int winType);
59 virtual void clearWindow();
63 virtual void execute(
bool shift =
false);
68 inline void execute(
float *pTaps,
bool shift =
false);
76 void PowerSpectralDensity(
float *psdBuffer,
123 float dutyCycle = 0.0;
125 float minPower = 1000.0;
129 bool energyOverThreshold =
false;
140 double widthHz = 0.0;
141 double centerFreqHz = 0.0;
162 virtual void reserve(
int newFFTSize,
long newNumRows);
163 virtual void clear();
164 virtual bool isEmpty();
189 float initMinDutyCycle,
bool useWindow =
true);
193 squelchThreshold = newThreshold;
196 inline void setDutyCycle(
float newDutyCycle) { minDutyCycle = newDutyCycle; };
207 virtual long analyze(
const SComplex *frame,
long numSamples,
212 virtual long maxHold(
const SComplex *frame,
long numSamples,
224 void analyzeSpectrum(
const float *spectrum,
float &dutyCycle,
float &maxPower,
225 float &minPower,
float ¢erAvgPower,
float &avgPower);
236 int findSignals(
const float *spectrum,
double sampleRate,
237 double centerFrequencyHz,
double minWidthHz,
247 int findSingleSignal(
const float *spectrum,
double sampleRate,
248 double centerFrequencyHz,
double minWidthHz,
251 long getWaterfall(
const SComplex *frame,
long numSamples,
259 long powerBinarySlicer(
const SComplex *frame,
long numSamples,
266 bool energyPresent(
const SComplex *frame,
long numSamples,
float &rssi);
272 long countEnergyBlocks(
const SComplex *frame,
long numSamples,
float &rssi);
#define NOISE_FLOOR
Definition: signals_mesa.h:29
int inputBufferLength() const
Definition: signals_mesa.h:49
int centerBucket
Definition: signals_mesa.h:178
FFT * getFFTProcessor()
Definition: signals_mesa.h:200
string wisdomFilename
Definition: signals_mesa.h:92
void setThreshold(float newThreshold)
Definition: signals_mesa.h:192
float getDutyCycle()
Definition: signals_mesa.h:197
float log2To10Factor
Definition: signals_mesa.h:89
virtual ~SignalOverview()
Definition: signals_mesa.h:137
int numThreads
Definition: signals_mesa.h:94
int outputBufferLength() const
Definition: signals_mesa.h:50
Definition: signals_mesa.h:41
float * data
Definition: signals_mesa.h:160
int fftSize
Definition: signals_mesa.h:93
SComplex * inputBuffer
Definition: signals_mesa.h:101
SpectrumOverview()
Definition: signals_mesa.h:119
float * alignedWindowTaps
Definition: signals_mesa.h:98
std::vector< SpectrumOverview > SpectrumOverviewVector
Definition: signals_mesa.h:132
int fftLenBytes
Definition: signals_mesa.h:104
boost::mutex d_mutex
Definition: signals_mesa.h:87
FFT * fftProc
Definition: signals_mesa.h:182
float getFFTSize()
Definition: signals_mesa.h:199
SignalOverview()
Definition: signals_mesa.h:136
Definition: signals_mesa.h:117
float squelchThreshold
Definition: signals_mesa.h:179
void printArray(float *arr, int arrSize, string name)
int fftSize
Definition: signals_mesa.h:177
float * tmpBuff
Definition: signals_mesa.h:103
float getThreshold()
Definition: signals_mesa.h:195
Definition: signals_mesa.h:153
float minDutyCycle
Definition: signals_mesa.h:180
float rssi_K_const
Definition: signals_mesa.h:90
double centerFrequency
Definition: signals_mesa.h:156
std::vector< float > FloatVector
Definition: signals_mesa.h:17
void * fftPlan
Definition: signals_mesa.h:95
float * psdSpectrum
Definition: signals_mesa.h:183
int fftSize
Definition: signals_mesa.h:157
SComplex * outputBuffer
Definition: signals_mesa.h:102
std::vector< SignalOverview > SignalOverviewVector
Definition: signals_mesa.h:147
int halfFFTSize
Definition: signals_mesa.h:106
Definition: signals_mesa.h:134
virtual ~SpectrumOverview()
Definition: signals_mesa.h:120
SComplex * getInputBuffer()
Definition: signals_mesa.h:52
Definition: signals_mesa.h:33
SComplex * getOutputBuffer()
Definition: signals_mesa.h:53
int fftDirection
Definition: signals_mesa.h:96
std::complex< float > SComplex
Definition: scomplex.h:15
void setDutyCycle(float newDutyCycle)
Definition: signals_mesa.h:196
#define SQUELCH_DISABLE
Definition: signals_mesa.h:28
long numRows
Definition: signals_mesa.h:158
int halfFFTSizeBytes
Definition: signals_mesa.h:105
Definition: signals_mesa.h:175