81 lines
1.9 KiB
C++
81 lines
1.9 KiB
C++
|
#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();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|