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