-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmainwindow.h
More file actions
241 lines (204 loc) · 5.86 KB
/
Copy pathmainwindow.h
File metadata and controls
241 lines (204 loc) · 5.86 KB
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include "camerasettings.h"
#include "instrumentcluster.h"
#include "joystickhandler.h"
#include "joysticksetupdialog.h"
#include "ledindicator.h"
#include "qscopedpointer.h"
#include "qwidget.h"
#include "rovcameracapture.h"
#include "rovcameracommunication.h"
#include "rovcommunication.h"
#include "rovdataparser.h"
#include "rovdatasplines.h"
#include "rovdatatypes.h"
#include "thrustersetupdialog.h"
#include <QDebug>
#include <QMainWindow>
#include <QString>
#include <chrono>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
/**
* \brief The MainWindow class is responsible for displaying the main window of
* the app and tying it all together \todo maybe create another class that
* manages all the backend and provides data for the MainWindow
*/
class MainWindow : public QMainWindow {
Q_OBJECT
public:
/**
* \brief Default constructor
* \param parent Parent
*/
MainWindow(QWidget *parent = nullptr);
/**
* \brief Default destructor
*/
~MainWindow();
public slots:
/**
* \brief Called to change image of the camera label
*/
void updateStatusbar();
/**
* \brief You guessed it
*/
void updateStatusbarIndicators();
/**
* \brief Called to update telemetry data in corresponding dock widget
* \param tele Telemetry data
*/
void updateTelemetry(RovTelemetry tele);
/**
* \brief Called to update data splines with the telemetry data
* \param tele Telemetry data
*/
void updateDatasplines(RovTelemetry tele);
/**
* \brief You guessed it
* \param text Text to update the statusbar with
*/
void updateStatusbarText(QString text);
/**
* \brief You guessed it \b {NI}
* \param progress Progress 0-100, if < 0 then continous
* \todo implement
*/
void updateStatusbarProgress(int progress);
// void updateRegulators(QBitArray regulators);
/**
* \brief Updates rASFs across all of the program
* \param thrustFactor ASF to set
*/
void updateASF(float thrustFactor);
/**
* \brief updates dDepth in RovAuxControl
* \param val Value
*/
void setDesiredDepth(float val);
/**
* \brief updates dYaw in RovAuxControl
* \param val Value
*/
void setDesiredYaw(float val);
/**
* \brief updates dPitch in RovAuxControl
* \param val Value
*/
void setDesiredPitch(float val);
/**
* \brief updates dRoll in RovAuxControl
* \param val Value
*/
void setDesiredRoll(float val);
/**
* \brief Sets depth QDoubleSpinBox to be readonly or rw for aux programlets
* purpose \param ro If this true then the spinbox blocks user input. Else
* it allows user input, overriding previous value
*/
void overrideDepth(bool ro);
/**
* \brief Sets yaw QDoubleSpinBox to be readonly or rw for aux programlets
* purpose \param ro If this true then the spinbox blocks user input. Else
* it allows user input, overriding previous value
*/
void overrideYaw(bool ro);
/**
* \brief Sets pitch QDoubleSpinBox to be readonly or rw for aux programlets
* purpose \param ro If this true then the spinbox blocks user input. Else
* it allows user input, overriding previous value
*/
void overridePitch(bool ro);
/**
* \brief Sets roll QDoubleSpinBox to be readonly or rw for aux programlets
* purpose \param ro If this true then the spinbox blocks user input. Else
* it allows user input, overriding previous value
*/
void overrideRoll(bool ro);
signals:
/**
* \brief Emitted when rASFs are updated either by programlets or user input
* \param thrustFactor ASF
* \todo maybe set individual ASFs and akchually implement this
*/
void asfUpdated(float thrustFactor);
private:
/**
* \brief Connects all modules together
*/
void createConnections();
/**
* \brief Sets up statusbar
*/
void setupStatusbar();
/**
* \brief Helper variable for feeding into m_datasplines
*/
quint64 m_vSamples = 0;
/**
* \brief Helper variable for feeding into m_datasplines
*/
quint64 m_aSamples = 0;
/**
* @brief Helper variable for UI/UX
*
*/
float lastDepth = 0.0f;
/**
* @brief Last telemetry data, usually no more than 10ms behind
*
*/
RovTelemetry lastTele;
/**
* \brief Ui object
*/
Ui::MainWindow *ui;
/**
* \brief Camera capture object
* \see RovCameraCapture
*/
QScopedPointer<RovCameraCapture> m_cameraCapture;
/**
* \brief Joystick handler object
* \see JoystickHandler
*/
QScopedPointer<JoystickHandler> m_joystickHandler;
/**
* \brief Joystick setup dialog object
* \see JoystickSetupDialog
*/
QScopedPointer<JoystickSetupDialog> m_jsd;
/**
* \brief Network interface for communicating with the ROV
* \see RovCommunication
*/
QScopedPointer<RovCommunication> m_rovCommunication;
/**
* \brief ROV data parser object
* \see RovDataParser
*/
QScopedPointer<RovDataParser> m_rovDataParser;
/**
* \brief Data splines, cute graphs
* \see RovDataSplines
*/
QScopedPointer<RovDataSplines> m_datasplines;
/**
* \brief Statusbar label, used to display connection status
*/
QScopedPointer<QLabel> m_rovStatusLabel;
/**
* \brief Statusbar indicator, used to display connection status
*/
QScopedPointer<LEDIndicator> m_rovStatusIndicator;
QScopedPointer<RovCameraCommunication> m_rovCameraCommunication;
QScopedPointer<CameraSettings> m_cameraSettings;
QScopedPointer<InstrumentWidget> m_compassWidget;
QScopedPointer<InstrumentWidget> m_gyroWidget;
};
#endif // MAINWINDOW_H