LibreVNA/Software/PC_Application/LibreVNA-GUI/Traces/Math/tdr.h
2022-10-01 17:10:44 +02:00

69 lines
1.2 KiB
C++

#ifndef TDRLOWPASS_H
#define TDRLOWPASS_H
#include "tracemath.h"
#include "windowfunction.h"
#include <QThread>
#include <QSemaphore>
namespace Math {
class TDR;
class TDRThread : public QThread
{
Q_OBJECT
public:
TDRThread(TDR &tdr);
~TDRThread(){};
private:
void run() override;
TDR &tdr;
};
class TDR : public TraceMath
{
friend class TDRThread;
Q_OBJECT
public:
TDR();
~TDR();
DataType outputType(DataType inputType) override;
QString description() override;
void edit() override;
static QWidget* createExplanationWidget();
virtual nlohmann::json toJSON() override;
virtual void fromJSON(nlohmann::json j) override;
Type getType() override {return Type::TDR;};
enum class Mode {
Lowpass,
Bandpass,
};
void setMode(Mode m);
Mode getMode() const;
const WindowFunction& getWindow() const;
public slots:
void inputSamplesChanged(unsigned int begin, unsigned int end) override;
private:
void updateTDR();
Mode mode;
WindowFunction window;
bool stepResponse;
bool automaticDC;
std::complex<double> manualDC;
TDRThread *thread;
bool destructing;
QSemaphore semphr;
};
}
#endif // TDRBANDPASS_H