Page MenuHomec4science

hriboard.h
No OneTemporary

File Metadata

Created
Sat, Jul 5, 16:36

hriboard.h

#ifndef HRIBOARD_H
#define HRIBOARD_H
#include <QObject>
#include <QList>
#include <QSerialPort>
#include "../Firmware/src/definitions.h"
typedef comm_VarType VarType;
typedef comm_VarAccess VarAccess;
class SyncVar
{
public:
SyncVar() = default;
SyncVar(quint8 index, QString name, VarAccess access, int size);
virtual ~SyncVar();
void setValue(QByteArray const &newValue);
QByteArray getValue() const;
quint8 getIndex() const;
QString getName() const;
int getSize() const;
virtual double toDouble() const = 0;
virtual QString toString() const = 0;
protected:
QByteArray value;
private:
const quint8 index;
const QString name;
const VarAccess access;
const int size;
};
template<typename T>
class SyncVarT : public SyncVar
{
public:
SyncVarT(quint8 index, QString name, VarAccess access, int size) :
SyncVar(index, name, access, size)
{
}
double toDouble() const
{
return (double)*(T*)value.data();
}
QString toString() const
{
return QString::number(*(T*)value.data());
}
};
SyncVar* makeSyncVar(int index, QString name, VarType type, VarAccess access,
int size);
class HriBoard : public QObject
{
Q_OBJECT
public:
HriBoard();
~HriBoard();
void openLink(QString comPortName);
void setStreamedVars(QList<SyncVar const*> varsToStream);
void setVar(SyncVar const* var, QByteArray value);
//void getVar(SyncVar const* var);
static QStringList getComPorts();
public slots:
void onReceivedData();
signals:
void syncVarsListReceived(QList<SyncVar const*>);
void syncVarsUpdated();
protected:
void sendPacket(quint8 messageType, QByteArray dataBytes = QByteArray());
private:
QSerialPort serial;
QList<SyncVar*> syncVars;
QList<SyncVar*> streamedVars;
QByteArray rxBuffer;
int rxCurrentMessageType, rxBytesCount;
quint8 firstHalfByte;
quint8 rxDataBytesBuffer[1024];
int streamID;
int streamPacketSize;
};
#endif

Event Timeline