test_sdk/hw/ADCCluster/adcqueue.h

55 lines
1.3 KiB
C
Raw Normal View History

#ifndef ADCQUEUE_H
#define ADCQUEUE_H
#include <QObject>
#include <QQueue>
#include <QDebug>
#include <QTimer>
#include "stpdefine.h"
class ADCQueue : public QObject
{
Q_OBJECT
public:
explicit ADCQueue(QObject *parent = nullptr);
~ADCQueue();
bool clear();
void appendCmd(ADCQueue_ns::cmdItem cmd);
void appendCmd(stpProtocol_ns::stpCommand cmd, uint16_t regNumber, QByteArray * regData = new QByteArray());
bool start();
bool stop();
ADCQueue_ns::queueState getState() {return _state; };
bool receiveData(QByteArray data);
signals:
void queueIsEmpty();
void queueTimeout();
void queueError();
void registerReadFinished(ADCQueue_ns::cmdItem cmd);
void registerReadError(ADCQueue_ns::cmdItem cmd);
void registerWriteFinished(ADCQueue_ns::cmdItem cmd);
void registerWriteError(ADCQueue_ns::cmdItem cmd);
void sendData(QByteArray data);
private:
void _startNext();
void _repeatCurrent();
bool _headerCheck(QByteArray * data);
QByteArray _packCommand(ADCQueue_ns::cmdItem cmd);
QQueue<ADCQueue_ns::cmdItem> * _cmdItems;
ADCQueue_ns::queueState _state;
ADCQueue_ns::cmdItem _currentItem;
uint16_t _currentCmd;
QTimer * _timer;
int _repeatCount;
};
#endif // ADCQUEUE_H