#ifndef GTL_MATH_DELTA_PHASE_SPEC_H #define GTL_MATH_DELTA_PHASE_SPEC_H #include #include "core/gtl_device.h" #include "core/gtl_analog_data.h" #include "gtl_math_spec.h" #include "math_global.h" namespace gtl { namespace math { class MATH_EXPORT delta_phase_spec : public QObject { Q_OBJECT Q_PROPERTY(qreal frequency READ frequency WRITE set_frequency NOTIFY frequency_changed); Q_PROPERTY(qreal max_frequency READ max_frequency WRITE set_max_frequency NOTIFY max_frequency_changed); Q_PROPERTY(qreal resolution READ resolution WRITE set_resolution NOTIFY resolution_changed); Q_PROPERTY(qreal value READ value() NOTIFY value_changed); public: delta_phase_spec(gtl::analog_data *ref, gtl::analog_data *data); ~delta_phase_spec(); qreal frequency() const; void set_frequency(qreal value); qreal max_frequency() const; void set_max_frequency(qreal value); qreal resolution() const; void set_resolution(qreal value); qreal overlap() const; void set_overlap(int value); private: int _ref_max_idx; int _data_max_idx; gtl::math::spec* _ref_spec = NULL; gtl::math::spec* _data_spec = NULL; qreal _phase; qreal _freq; qreal _max_freq; gtl::device* _device; private slots: void calculate(); signals: void value_changed(); void frequency_changed(); void max_frequency_changed(); void resolution_changed(); void overlap_changed(); public slots: qreal value(); }; } // namespace math } // namespace gtl #endif // GTL_MATH_DELTA_PHASE_SPEC_H