test_sdk/hw/gtl_hw_device.h

122 lines
2.3 KiB
C
Raw Permalink Normal View History

#ifndef HW_DEVICE_H
#define HW_DEVICE_H
#include <QThread>
#include <QSettings>
#include "hw_global.h"
#include "core/gtl_device.h"
#include "gtl_analog_input.h"
#include "core/gtl_analog_data.h"
namespace gtl
{
namespace hw
{
class HW_EXPORT device : public QThread
{
Q_OBJECT
public:
enum ADCState
{
IDLE,
INIT_IN_PROGRESS,
OK,
INIT_FAILED,
FAILED,
DRIVER_NOT_FOUND
};
public:
device(QObject *parent);
~device();
// virtual bool restart(){ return true; }
virtual qreal rate() const;
int count_ai() const { return _count_ai; }
bool is_created() { return _is_created_success; }
QString id() const;
analog_input *ai(int idx);
gtl::device* gtl_device() const;
virtual void set_config(const QJsonValue& config);
const QJsonValue& config() const;
ADCState state() const;
protected:
void clear_ai();
void set_ai();
void set_ai_data(qreal *data, int size);
virtual analog_input* create_ai(int idx);
protected:
gtl::device* _device;
bool _is_created_success;
QString _id;
qreal _rate;
int _count_ai;
bool _is_continue;
QJsonValue _config;
ADCState _state;
QUuid _uuid;
public slots:
virtual bool start(QString id, qreal rate) = 0;
virtual bool stop();
virtual void restart();
virtual void get_parameter(int idx, QVariant &value);
virtual void set_parameter(int idx, const QVariant &value);
virtual QString type() const = 0;
protected slots:
virtual void ai_iepe_changed(){};
virtual void ai_coupling_changed(){};
virtual void save(QDomElement& root_element);
virtual void load(const QDomElement& root_element);
signals :
void received_data();
void error(QString title, QString message);
void channels_changed();
void remove_channel(int idx);
void rate_changed();
void begin_reset();
void end_reset();
void set_channels_sensitivity(qreal);
void name_changed();
void status_changed(int);
void config_changed();
};
}
}
#endif // HW_DEVICE_H