test_sdk/hw/gtl_hw_generator_analog_inp...

81 lines
1.9 KiB
C++
Raw Permalink Normal View History

#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();
}
}
}
}