#ifndef DEVICE_H #define DEVICE_H #include "core_global.h" #include #include #include #include "core/gtl_analog_data.h" namespace gtl { class CORE_EXPORT device : public data_model_node { Q_OBJECT public: device(data_model_node *parent = nullptr); virtual ~device(); analog_data* ai(int idx); void clear(); int count_ai() const; void add_ai(analog_data* ai); void lock_ai(); void unlock_ai(); virtual void save(QDomElement& root_element); virtual void load(const QDomElement& root_element); QString id() const; void set_id(QString id); qreal rate() const; void set_rate(qreal rate); QString device_type() const; QVariant get_parameter(int idx); void set_parameter(int idx, QVariant value); protected: virtual bool is_checkable() const; private: std::vector _ai; QRecursiveMutex _ai_mutex; QString _id; qreal _rate; signals: void save_device(QDomElement& root_element); void load_device(const QDomElement& root_element); void start(QString id, qreal rate); void restart(); void stop(); void recieved_data(); QString get_type() const; void get_device_parameter(int idx, QVariant &value); void set_device_parameter(int idx, const QVariant &value); void started(); void stopped(); }; } #endif // DEVICE_H