9 #ifndef LIB_SIGNALS_MESA_H_ 10 #define LIB_SIGNALS_MESA_H_ 13 #include <volk/volk.h> 14 #include <boost/thread/mutex.hpp> 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);
45 FFT(
int FFTDirection,
int initFFTSize,
int initNumThreads=1);
54 virtual void setWindow(
int winType);
58 virtual void clearWindow();
62 virtual void execute(
bool shift=
false);
67 inline void execute(
float *pTaps,
bool shift=
false);
119 float dutyCycle = 0.0;
121 float minPower = 1000.0;
125 bool energyOverThreshold =
false;
137 float centerFreqHz = 0.0;
158 virtual void reserve(
int newFFTSize,
long newNumRows);
159 virtual void clear();
160 virtual bool isEmpty();
184 EnergyAnalyzer(
int initFFTSize,
float initSquelchThreshold,
float initMinDutyCycle,
bool useWindow=
true);
187 inline void setThreshold(
float newThreshold) { squelchThreshold = newThreshold; };
189 inline void setDutyCycle(
float newDutyCycle) { minDutyCycle = newDutyCycle; };
204 virtual long maxHold(
const SComplex *frame,
long numSamples,
FloatVector& maxSpectrum,
bool useSquelch=
true);
213 void analyzeSpectrum(
const float *spectrum,
float& dutyCycle,
float& maxPower,
float& minPower,
214 float& centerAvgPower,
float& avgPower);
224 int findSignals(
const float *spectrum,
float sampleRate,
float centerFrequencyHz,
float minWidthHz,
float maxWidthHz,
231 int findSingleSignal(
const float *spectrum,
float sampleRate,
float centerFrequencyHz,
float minWidthHz,
SignalOverview& signalOverview);
238 long powerBinarySlicer(
const SComplex *frame,
long numSamples,
FloatVector& bits,
float& rssi);
243 bool energyPresent(
const SComplex *frame,
long numSamples,
float& rssi);
248 long countEnergyBlocks(
const SComplex *frame,
long numSamples,
float& rssi);
#define NOISE_FLOOR
Definition: signals_mesa.h:29
int inputBufferLength() const
Definition: signals_mesa.h:48
int centerBucket
Definition: signals_mesa.h:174
FFT * getFFTProcessor()
Definition: signals_mesa.h:193
string wisdomFilename
Definition: signals_mesa.h:88
void setThreshold(float newThreshold)
Definition: signals_mesa.h:187
float getDutyCycle()
Definition: signals_mesa.h:190
float log2To10Factor
Definition: signals_mesa.h:85
virtual ~SignalOverview()
Definition: signals_mesa.h:133
int numThreads
Definition: signals_mesa.h:90
int outputBufferLength() const
Definition: signals_mesa.h:49
Definition: signals_mesa.h:41
float * data
Definition: signals_mesa.h:156
int fftSize
Definition: signals_mesa.h:89
SComplex * inputBuffer
Definition: signals_mesa.h:97
SpectrumOverview()
Definition: signals_mesa.h:115
float * alignedWindowTaps
Definition: signals_mesa.h:94
std::vector< SpectrumOverview > SpectrumOverviewVector
Definition: signals_mesa.h:128
int fftLenBytes
Definition: signals_mesa.h:100
boost::mutex d_mutex
Definition: signals_mesa.h:83
FFT * fftProc
Definition: signals_mesa.h:178
float getFFTSize()
Definition: signals_mesa.h:192
SignalOverview()
Definition: signals_mesa.h:132
Definition: signals_mesa.h:113
float squelchThreshold
Definition: signals_mesa.h:175
void printArray(float *arr, int arrSize, string name)
int fftSize
Definition: signals_mesa.h:173
float * tmpBuff
Definition: signals_mesa.h:99
float getThreshold()
Definition: signals_mesa.h:188
Definition: signals_mesa.h:149
float minDutyCycle
Definition: signals_mesa.h:176
float rssi_K_const
Definition: signals_mesa.h:86
std::vector< float > FloatVector
Definition: signals_mesa.h:17
void * fftPlan
Definition: signals_mesa.h:91
float * psdSpectrum
Definition: signals_mesa.h:179
int fftSize
Definition: signals_mesa.h:153
SComplex * outputBuffer
Definition: signals_mesa.h:98
std::vector< SignalOverview > SignalOverviewVector
Definition: signals_mesa.h:143
int halfFFTSize
Definition: signals_mesa.h:102
Definition: signals_mesa.h:130
float centerFrequency
Definition: signals_mesa.h:152
virtual ~SpectrumOverview()
Definition: signals_mesa.h:116
SComplex * getInputBuffer()
Definition: signals_mesa.h:51
Definition: signals_mesa.h:33
SComplex * getOutputBuffer()
Definition: signals_mesa.h:52
int fftDirection
Definition: signals_mesa.h:92
std::complex< float > SComplex
Definition: scomplex.h:15
void setDutyCycle(float newDutyCycle)
Definition: signals_mesa.h:189
#define SQUELCH_DISABLE
Definition: signals_mesa.h:28
long numRows
Definition: signals_mesa.h:154
int halfFFTSizeBytes
Definition: signals_mesa.h:101
Definition: signals_mesa.h:171