test_sdk/math/gtl_math_osc_meas.h

71 lines
2.4 KiB
C++

#ifndef GTL_MATH_OSC_MEAS_H
#define GTL_MATH_OSC_MEAS_H
#include <QObject>
#include <QSharedPointer>
#include <QList>
#include "core/gtl_analog_data.h"
#include "math_global.h"
namespace gtl {
namespace math {
class MATH_EXPORT osc_meas
{
Q_GADGET
public:
osc_meas();
enum class types
{
min,
max,
offset,
peak,
peak_to_peak,
rms,
freq,
period,
kurt
};
Q_ENUM(types)
struct params
{
int id;
QString chan;
osc_meas::types type;
qreal value;
gtl::analog_data* ad;
explicit params()
{
chan = "";
type = math::osc_meas::types::min;
value = 0;
id = 0;
ad = nullptr;
}
};
static qreal min(const std::vector<qreal>::iterator& begin, const std::vector<qreal>::iterator& end);
static qreal max(const std::vector<qreal>::iterator& begin, const std::vector<qreal>::iterator& end);
static qreal offset(const std::vector<qreal>::iterator& begin, const std::vector<qreal>::iterator& end);
static qreal peak(const std::vector<qreal>::iterator& begin, const std::vector<qreal>::iterator& end);
static qreal peak_to_peak(const std::vector<qreal>::iterator& begin, const std::vector<qreal>::iterator& end);
static qreal rms(const std::vector<qreal>::iterator& begin, const std::vector<qreal>::iterator& end);
static qreal freq(const std::vector<qreal>::iterator& begin, const std::vector<qreal>::iterator& end, qreal f_sample);
static qreal period(const std::vector<qreal>::iterator& begin, const std::vector<qreal>::iterator& end, qreal f_sample);
static qreal kurt(const std::vector<qreal>::iterator& begin, const std::vector<qreal>::iterator& end);
};
} // namespace math
} // namespace gtl
Q_DECLARE_METATYPE(gtl::math::osc_meas::params)
typedef QList<gtl::math::osc_meas::params> QListOscMeasParams;
typedef QSharedPointer<QListOscMeasParams> OscMeasParamsListPtr;
Q_DECLARE_METATYPE(OscMeasParamsListPtr)
#endif // GTL_MATH_OSC_MEAS_H