Branch data Line data Source code
1 : : #ifndef DATAMANAGER_HPP
2 : : #define DATAMANAGER_HPP
3 : :
4 : : #include <QtQml/qqml.h>
5 : :
6 : : #include <QtCore/QObject>
7 : : #include <QtCore/QThread>
8 : :
9 : : #include "applications/instrument-cluster/mq/ZMQSubscriber.hpp"
10 : :
11 : : class DataManager : public QObject {
12 : : // NOLINTNEXTLINE(modernize-use-trailing-return-type)
13 : : Q_OBJECT
14 : : QML_ELEMENT
15 : : Q_PROPERTY(float speed READ speed WRITE setSpeed NOTIFY speedChanged)
16 : : Q_PROPERTY(float rpm READ rpm WRITE setRpm NOTIFY rpmChanged)
17 : : Q_PROPERTY(uint8_t battery READ battery WRITE setBattery NOTIFY batteryChanged)
18 : : Q_PROPERTY(uint8_t temperature READ temperature WRITE setTemperature NOTIFY temperatureChanged)
19 : :
20 : : public:
21 : : explicit DataManager(QObject* parent = nullptr);
22 : : ~DataManager() override;
23 : :
24 : 0 : [[nodiscard]] auto speed() const -> float { return m_speed; }
25 : : void setSpeed(float speed);
26 : :
27 : 0 : [[nodiscard]] auto rpm() const -> float { return m_rpm; }
28 : : void setRpm(float rpm);
29 : :
30 : 0 : [[nodiscard]] auto battery() const -> uint8_t { return m_battery; }
31 : :
32 : 0 : [[nodiscard]] auto temperature() const -> uint8_t { return m_temperature; }
33 : :
34 : : private slots:
35 : : void updateData(float speed, float rpm);
36 : : void setTemperature(uint8_t temperature);
37 : : void setBattery(uint8_t battery);
38 : :
39 : : signals:
40 : : void speedChanged();
41 : : void rpmChanged();
42 : : void batteryChanged();
43 : : void temperatureChanged();
44 : : void startZeroMQ();
45 : :
46 : : private:
47 : : float m_speed = 0;
48 : : float m_rpm = 0;
49 : : uint8_t m_battery = 0;
50 : : uint8_t m_temperature = 0;
51 : : QThread* thread;
52 : : ZmqSubscriber* worker;
53 : : zmq::context_t context;
54 : : };
55 : :
56 : : #endif
|