9#ifndef LIB_SIGNALS_MESA_H_
10#define LIB_SIGNALS_MESA_H_
13#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
46 FFT(
int FFTDirection,
int initFFTSize,
int initNumThreads = 1);
68 inline void execute(
float *pTaps,
bool shift =
false);
162 virtual void reserve(
int newFFTSize,
long newNumRows);
189 float initMinDutyCycle,
bool useWindow =
true);
225 float &minPower,
float ¢erAvgPower,
float &avgPower);
237 double centerFrequencyHz,
double minWidthHz,
248 double centerFrequencyHz,
double minWidthHz,
float getDutyCycle()
Definition signals_mesa.h:197
void setDutyCycle(float newDutyCycle)
Definition signals_mesa.h:196
bool energyPresent(const SComplex *frame, long numSamples, float &rssi)
float * psdSpectrum
Definition signals_mesa.h:183
long powerBinarySlicer(const SComplex *frame, long numSamples, FloatVector &bits, float &rssi)
float squelchThreshold
Definition signals_mesa.h:179
int findSingleSignal(const float *spectrum, double sampleRate, double centerFrequencyHz, double minWidthHz, SignalOverview &signalOverview)
float maxPower(FloatVector &maxSpectrum)
float getFFTSize()
Definition signals_mesa.h:199
int fftSize
Definition signals_mesa.h:177
float getThreshold()
Definition signals_mesa.h:195
EnergyAnalyzer(int initFFTSize, float initSquelchThreshold, float initMinDutyCycle, bool useWindow=true)
void analyzeSpectrum(const float *spectrum, float &dutyCycle, float &maxPower, float &minPower, float ¢erAvgPower, float &avgPower)
FFT * fftProc
Definition signals_mesa.h:182
virtual long maxHold(const SComplex *frame, long numSamples, FloatVector &maxSpectrum, bool useSquelch=true)
FFT * getFFTProcessor()
Definition signals_mesa.h:200
void setThreshold(float newThreshold)
Definition signals_mesa.h:192
long getWaterfall(const SComplex *frame, long numSamples, WaterfallData &waterfallData)
int centerBucket
Definition signals_mesa.h:178
float minDutyCycle
Definition signals_mesa.h:180
virtual long analyze(const SComplex *frame, long numSamples, SpectrumOverviewVector &results)
int findSignals(const float *spectrum, double sampleRate, double centerFrequencyHz, double minWidthHz, double maxWidthHz, SignalOverviewVector &signalVector, bool stopOnFirst)
virtual ~EnergyAnalyzer()
long countEnergyBlocks(const SComplex *frame, long numSamples, float &rssi)
Definition signals_mesa.h:41
virtual void execute(bool shift=false)
bool hasTaps
Definition signals_mesa.h:99
int outputBufferLength() const
Definition signals_mesa.h:50
boost::mutex d_mutex
Definition signals_mesa.h:87
SComplex * outputBuffer
Definition signals_mesa.h:102
float * alignedWindowTaps
Definition signals_mesa.h:98
SComplex * getOutputBuffer()
Definition signals_mesa.h:53
string wisdomFilename
Definition signals_mesa.h:92
int fftLenBytes
Definition signals_mesa.h:104
float log2To10Factor
Definition signals_mesa.h:89
void rssi(float *psdBuffer, float squelchThreshold=SQUELCH_DISABLE, float onSquelchSetRSSI=NOISE_FLOOR)
float rssi_K_const
Definition signals_mesa.h:90
int inputBufferLength() const
Definition signals_mesa.h:49
void PowerSpectralDensity(float *psdBuffer, float squelchThreshold=SQUELCH_DISABLE, float onSquelchSetRSSI=NOISE_FLOOR)
int halfFFTSize
Definition signals_mesa.h:106
float * tmpBuff
Definition signals_mesa.h:103
SComplex * getInputBuffer()
Definition signals_mesa.h:52
void * fftPlan
Definition signals_mesa.h:95
FFT(int FFTDirection, int initFFTSize, int initNumThreads=1)
virtual void setWindow(FloatVector &newTaps)
SComplex * inputBuffer
Definition signals_mesa.h:101
int fftDirection
Definition signals_mesa.h:96
virtual void clearWindow()
int numThreads
Definition signals_mesa.h:94
int halfFFTSizeBytes
Definition signals_mesa.h:105
int fftSize
Definition signals_mesa.h:93
void execute(float *pTaps, bool shift=false)
virtual void setWindow(int winType)
Definition signals_mesa.h:134
SignalOverview & operator=(const SignalOverview &other)
SignalOverview()
Definition signals_mesa.h:136
double centerFreqHz
Definition signals_mesa.h:141
float maxPower
Definition signals_mesa.h:142
double widthHz
Definition signals_mesa.h:140
virtual ~SignalOverview()
Definition signals_mesa.h:137
float dutyCycle
Definition signals_mesa.h:123
float minPowerOverThreshold
Definition signals_mesa.h:128
virtual ~SpectrumOverview()
Definition signals_mesa.h:120
SpectrumOverview & operator=(const SpectrumOverview &other)
float avgPower
Definition signals_mesa.h:127
SpectrumOverview()
Definition signals_mesa.h:119
float centerAvgPower
Definition signals_mesa.h:126
float maxPower
Definition signals_mesa.h:124
float minPower
Definition signals_mesa.h:125
bool energyOverThreshold
Definition signals_mesa.h:129
Definition signals_mesa.h:153
int fftSize
Definition signals_mesa.h:157
long numRows
Definition signals_mesa.h:158
float * data
Definition signals_mesa.h:160
virtual void reserve(int newFFTSize, long newNumRows)
double centerFrequency
Definition signals_mesa.h:156
Definition signals_mesa.h:33
std::vector< SpectrumOverview > SpectrumOverviewVector
Definition signals_mesa.h:132
std::vector< SignalOverview > SignalOverviewVector
Definition signals_mesa.h:147
void printArray(FloatVector &arr, string name)
std::complex< float > SComplex
Definition scomplex.h:15
std::vector< float > FloatVector
Definition signals_mesa.h:17
#define NOISE_FLOOR
Definition signals_mesa.h:29
#define SQUELCH_DISABLE
Definition signals_mesa.h:28