-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathasicdevice.h
101 lines (96 loc) · 2.41 KB
/
asicdevice.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#ifndef ASICDEVICE_H
#define ASICDEVICE_H
#include <QObject>
#include <QJsonObject>
#include <QJsonArray>
#include <QHostAddress>
#include <QtNetwork>
#include <QApplication>
class Pool
{
public:
QUrl URL;
uint priority;
bool StratumActive;
QString User;
QString Status;
Pool();
};
enum ASICAlarmFlags
{
NoAlarm =0x0000,
AlarmThermalRunout =0x0001,
AlarmHashrateDecline =0x0002,
AlarmSocketTimeout =0x0004,
AlarmSocketError =0x0008
};
class ASICDevice : public QObject
{
Q_OBJECT
signals:
void HaveAPendingCommands();
void Updated(ASICDevice *device);
void SocketConnected(ASICDevice *device);
void SocketError(ASICDevice *device);
void Alarm(uint alarmCode);
public:
uint GroupID;
static uint32_t ActiveThreadsNum;
quint16 WebPort;
quint16 APIPort;
QString UserName;
QString Password;
QHostAddress Address;
QString Type;
QString Miner;
QString Description;
bool IsAlarmed();
uint State();
Pool *ActivePool();
uint ActiveChipsNumber();
uint Frequency();
uint HardwareErrors();
double HashRate();
double Temperature();
uint UpTime();
void ClearUpErrorFlags();
explicit ASICDevice(QObject *parent=nullptr);
~ASICDevice();
public slots:
void updateStats(QByteArray *data);
//void updateStats(QJsonObject *data);
void SendCommand(QByteArray command);
void ExecCGIScriptViaGET(QString path, QUrlQuery query=QUrlQuery());
void UploadDataViaPOST(QString path, QByteArray *DataToSend);
private:
QTcpSocket *_pDevSocket;
QTimer *ThreadTimer;
QVector <QByteArray> *_pPendingCommands;
QByteArray *_pReceivedTCPData;
bool _pIsBusy;
uint _pState;
uint _pAccepted;
uint _pRejected;
uint _pUpTime;
Pool *_pPools;
double *_pBoardTemperature1;
double *_pBoardTemperature2;
double _pTemperature;
double *_pBoardHashRateIdeal;
double *_pBoardHashRateReal;
double _pHashRate;
uint *_pBoardHardwareErrors;
uint _pHardwareErrors;
uint *_pBoardFrequency;
uint *_pBoardACN;
private slots:
void CommandLoop();
void on_socketConnected();
void on_socketDisconnected();
void on_socketTimeout();
void on_socketError(QAbstractSocket::SocketError error);
void on_socketReadyRead();
void onAuthenticationNeeded(QNetworkReply *reply, QAuthenticator *authenticator);
void onNetManagerFinished(QNetworkReply *reply);
};
#endif // ASICDEVICE_H