122 lines
2.3 KiB
C
122 lines
2.3 KiB
C
|
#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
|