-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmonitor.h
94 lines (74 loc) · 2.08 KB
/
monitor.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
#ifndef MONITOR_H
#define MONITOR_H
#include <QObject>
#include <QMqttClient>
#include <QtSerialPort>
#include <QTimer>
#include "switch.h"
class Monitor : public QObject
{
Q_OBJECT
public:
class MQTTSettings {
public:
QString hostname;
int port;
QString topCategory;
QString defaultTopic, willTopic;
QString startMessage, defaultMessage, willMessage;
unsigned char msgQoS, willQoS;
bool msgRetain, willRetain;
void readJSON(const QJsonObject &json);
void writeJSON(QJsonObject &json) const;
};
class SerialSettings {
public:
QString portName;
int baudRate;
QSerialPort::DataBits dataBits;
QSerialPort::Parity parity;
QSerialPort::StopBits stopBits;
QSerialPort::FlowControl flowControl;
void readJSON(const QJsonObject &json);
void writeJSON(QJsonObject &json) const;
};
explicit Monitor(QObject *parent = nullptr);
~Monitor();
bool loadConfig();
bool saveConfig();
void readJSON(const QJsonObject &json);
void writeJSON(QJsonObject &json) const;
protected:
QTimer repeatTimer;
bool serviceRunning;
bool portConnected;
bool mqttConnected;
MQTTSettings mqttSettings;
SerialSettings serialSettings;
QMqttClient m_client;
QSerialPort m_port;
QByteArray readBuffer, prevLine;
/* Use the messages received from the serial port as keys into this map.
* Values in the map should be pointers to Switch classes.
*/
// QMap<QString, Switch> switches;
QVariantMap switches;
private:
void setupSwitches();
signals:
void receivedMessage(const QString& line);
public slots:
void connectMQTT();
void connectSerial();
void disconnectSerial();
void onSerialDataReady();
void onServiceStarted();
void onServiceStopped();
void onServiceInstalled();
void onServiceUninstalled();
protected slots:
void onMQTTConnected();
void onMQTTDisconnected();
void postedMessage(const QString& topic, const QString& message);
};
#endif // MONITOR_H