#include "gtl_hw_generator_analog_input.h" namespace gtl { namespace hw { generator_analog_input::generator_analog_input(qreal rate, QString name, gtl::device *parent) : analog_input(rate, name, parent) , _freq(100) , _ampl(1) , _phase(0) { } qreal generator_analog_input::get_value(qreal t) { return _ampl * qSin(2 * M_PI * t * _freq + _phase / 180.0*M_PI); } qreal generator_analog_input::freq() const { return _freq; } qreal generator_analog_input::ampl() const { return _ampl; } qreal generator_analog_input::phase() const { return _phase; } void generator_analog_input::save(QDomElement &root_element) { root_element.setAttribute("freq", _freq); root_element.setAttribute("phase", _phase); gtl::analog_data::save(root_element); } void generator_analog_input::load(const QDomElement &root_element) { _freq = root_element.attribute("freq", "100").toDouble(); _phase = root_element.attribute("phase", "0").toDouble(); gtl::analog_data::load(root_element); } void generator_analog_input::set_freq(qreal value) { if(_freq != value) { _freq = value; emit freq_changed(); } } void generator_analog_input::set_ampl(qreal value) { if(_ampl != value && value > 0) { _ampl = value; emit ampl_changed(); } } void generator_analog_input::set_phase(qreal value) { if(_phase != value && value < 360) { _phase = value; emit phase_changed(); } } } }