123 lines
2.1 KiB
C++
123 lines
2.1 KiB
C++
|
#include "gtl_device.h"
|
||
|
|
||
|
namespace gtl
|
||
|
{
|
||
|
device::device(data_model_node *parent)
|
||
|
: data_model_node(types::device, parent)
|
||
|
{
|
||
|
|
||
|
}
|
||
|
|
||
|
device::~device()
|
||
|
{
|
||
|
// lock_ai();
|
||
|
}
|
||
|
|
||
|
gtl::analog_data *device::ai(int idx)
|
||
|
{
|
||
|
if(idx < 0 || idx >= _ai.size())
|
||
|
return NULL;
|
||
|
|
||
|
return _ai[idx];
|
||
|
}
|
||
|
|
||
|
void device::clear()
|
||
|
{
|
||
|
for(int i = 0; i < _ai.size(); i++)
|
||
|
{
|
||
|
// _children.erase(std::find(_children.begin(), _children.end(), _ai[i]));
|
||
|
delete _ai[i];
|
||
|
}
|
||
|
|
||
|
_ai.clear();
|
||
|
}
|
||
|
|
||
|
int device::count_ai() const
|
||
|
{
|
||
|
return (int)_ai.size();
|
||
|
}
|
||
|
|
||
|
void device::add_ai(analog_data *ai)
|
||
|
{
|
||
|
_ai.push_back(ai);
|
||
|
}
|
||
|
|
||
|
void device::lock_ai()
|
||
|
{
|
||
|
_ai_mutex.lock();
|
||
|
}
|
||
|
|
||
|
void device::unlock_ai()
|
||
|
{
|
||
|
_ai_mutex.unlock();
|
||
|
}
|
||
|
|
||
|
void device::save(QDomElement &root_element)
|
||
|
{
|
||
|
emit save_device(root_element);
|
||
|
data_model_node::save(root_element);
|
||
|
}
|
||
|
|
||
|
void device::load(const QDomElement &root_element)
|
||
|
{
|
||
|
bool is_running = root_element.attribute("is_running", "0").toInt();
|
||
|
_id = root_element.attribute("id", "");
|
||
|
_rate = root_element.attribute("rate", "0").toDouble();
|
||
|
|
||
|
emit load_device(root_element);
|
||
|
|
||
|
emit start(_id, _rate);
|
||
|
|
||
|
data_model_node::load(root_element);
|
||
|
|
||
|
if(is_running)
|
||
|
emit restart();
|
||
|
else
|
||
|
emit stop();
|
||
|
|
||
|
}
|
||
|
|
||
|
QString device::id() const
|
||
|
{
|
||
|
return _id;
|
||
|
}
|
||
|
|
||
|
void device::set_id(QString id)
|
||
|
{
|
||
|
_id = id;
|
||
|
}
|
||
|
|
||
|
qreal device::rate() const
|
||
|
{
|
||
|
return _rate;
|
||
|
}
|
||
|
|
||
|
void device::set_rate(qreal rate)
|
||
|
{
|
||
|
_rate = rate;
|
||
|
}
|
||
|
|
||
|
QString device::device_type() const
|
||
|
{
|
||
|
return emit get_type();
|
||
|
}
|
||
|
|
||
|
QVariant device::get_parameter(int idx)
|
||
|
{
|
||
|
QVariant v;
|
||
|
emit get_device_parameter(idx, v);
|
||
|
|
||
|
return v;
|
||
|
}
|
||
|
|
||
|
void device::set_parameter(int idx, QVariant value)
|
||
|
{
|
||
|
emit set_device_parameter(idx, value);
|
||
|
}
|
||
|
|
||
|
bool device::is_checkable() const
|
||
|
{
|
||
|
return false;
|
||
|
}
|
||
|
}
|