test_sdk/core/gtl_device.cpp

123 lines
2.1 KiB
C++
Raw Normal View History

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