Subversion Repositories Projects

Rev

Rev 399 | Rev 441 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 399 Rev 440
1
/***************************************************************************
1
/***************************************************************************
2
 *   Copyright (C) 2008 by Manuel Schrape                                  *
2
 *   Copyright (C) 2008 by Manuel Schrape                                  *
3
 *   manuel.schrape@gmx.de                                                 *
3
 *   manuel.schrape@gmx.de                                                 *
4
 *                                                                         *
4
 *                                                                         *
5
 *   This program is free software; you can redistribute it and/or modify  *
5
 *   This program is free software; you can redistribute it and/or modify  *
6
 *   it under the terms of the GNU General Public License as published by  *
6
 *   it under the terms of the GNU General Public License as published by  *
7
 *   the Free Software Foundation; either version 2 of the License.        *
7
 *   the Free Software Foundation; either version 2 of the License.        *
8
 *                                                                         *
8
 *                                                                         *
9
 *   This program is distributed in the hope that it will be useful,       *
9
 *   This program is distributed in the hope that it will be useful,       *
10
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
10
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
11
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
11
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
12
 *   GNU General Public License for more details.                          *
12
 *   GNU General Public License for more details.                          *
13
 *                                                                         *
13
 *                                                                         *
14
 *   You should have received a copy of the GNU General Public License     *
14
 *   You should have received a copy of the GNU General Public License     *
15
 *   along with this program; if not, write to the                         *
15
 *   along with this program; if not, write to the                         *
16
 *   Free Software Foundation, Inc.,                                       *
16
 *   Free Software Foundation, Inc.,                                       *
17
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
17
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
18
 ***************************************************************************/
18
 ***************************************************************************/
19
 
19
 
20
 
20
 
21
#ifndef MKTOOL_H
21
#ifndef MKTOOL_H
22
#define MKTOOL_H
22
#define MKTOOL_H
23
 
23
 
24
#include <QMainWindow>
24
#include <QMainWindow>
25
#include <QSettings>
25
#include <QSettings>
26
#include <QString>
26
#include <QString>
27
#include <QTimer>
27
#include <QTimer>
28
#include <QComboBox>
28
#include <QComboBox>
29
#include <QIcon>
29
#include <QIcon>
30
#include <QProcess>
30
#include <QProcess>
31
 
31
 
32
#include <qwt_plot_curve.h>
32
#include <qwt_plot_curve.h>
33
#include <qwt_plot_grid.h>
33
#include <qwt_plot_grid.h>
34
#include <qwt_legend.h>
34
#include <qwt_legend.h>
35
#include <qwt_plot.h>
35
#include <qwt_plot.h>
36
#include <qwt_compass.h>
36
#include <qwt_compass.h>
37
#include <qwt_compass_rose.h>
37
#include <qwt_compass_rose.h>
38
#include <qwt_dial_needle.h>
38
#include <qwt_dial_needle.h>
39
 
39
 
40
#include "ui_mktool.h"
40
#include "ui_mktool.h"
41
#include "wdg_Settings.h"
41
#include "wdg_Settings.h"
42
#include "dlg_LCD.h"
42
#include "dlg_LCD.h"
43
#include "dlg_Map.h"
43
#include "dlg_Map.h"
44
#include "dlg_MotorMixer.h"
44
#include "dlg_MotorMixer.h"
45
 
45
 
46
#include "../Classes/cConnection.h"
46
#include "../Classes/cConnection.h"
47
#include "../Classes/cSettings.h"
47
#include "../Classes/cSettings.h"
48
#include "../Classes/cKML_Server.h"
48
#include "../Classes/cKML_Server.h"
49
#include "../Classes/cQMK_Server.h"
49
#include "../Classes/cQMK_Server.h"
50
#include "../Classes/cAttitude.h"
50
#include "../Classes/cAttitude.h"
51
#include "../Classes/cSpeedMeter.h"
51
#include "../Classes/cSpeedMeter.h"
52
#include "../Logger/Logger.h"
52
#include "../Logger/Logger.h"
53
#include "../typedefs.h"
53
#include "../typedefs.h"
54
 
54
 
55
//quadcopter lib stuff
55
//quadcopter lib stuff
56
#include "../com/Handler.h"
56
#include "../libMK/Handler.h"
57
#include "../com/Communication.h"
57
#include "../libMK/Communication.h"
58
#include "../com/QTCommunication.h"
58
#include "../libMK/QTCommunication.h"
59
 
59
 
60
class QextSerialPort;
60
class QextSerialPort;
61
 
61
 
62
class MKTool : public QMainWindow, public Ui::dlg_mktool_UI
62
class MKTool : public QMainWindow, public Ui::dlg_mktool_UI
63
{
63
{
64
      Q_OBJECT
64
      Q_OBJECT
65
 
65
 
66
public:
66
public:
67
      MKTool();
67
      MKTool();
68
      ~MKTool();
68
      ~MKTool();
69
 
69
 
70
private:
70
private:
71
    // Object für Kopter-Verbindung
71
    // Object für Kopter-Verbindung
72
    //cConnection *o_Connection;
72
    //cConnection *o_Connection;
-
 
73
    KopterData * data;
73
 
74
 
74
    Handler *handler;
75
    Handler *handler;
75
 
76
 
76
    Communication *com;
77
    Communication *com;
77
 
78
 
78
    // Settings-Object (Programmeinstellungen)
79
    // Settings-Object (Programmeinstellungen)
79
    cSettings *Settings;
80
    cSettings *Settings;
80
 
81
 
81
    // Settings-Widget (FC-Settings)
82
    // Settings-Widget (FC-Settings)
82
    wdg_Settings *f_Settings;
83
    wdg_Settings *f_Settings;
83
 
84
 
84
    // HTTP-Server-Object für KML-Files
85
    // HTTP-Server-Object für KML-Files
85
    cKML_Server *KML_Server;
86
    cKML_Server *KML_Server;
86
 
87
 
87
    // QMK-Serverobjekt
88
    // QMK-Serverobjekt
88
    cQMK_Server *QMK_Server;
89
    cQMK_Server *QMK_Server;
89
 
90
 
90
    // LCD-Dialog
91
    // LCD-Dialog
91
    dlg_LCD *f_LCD;
92
    dlg_LCD *f_LCD;
92
 
93
 
93
    // MotorMixer-Dialog
94
    // MotorMixer-Dialog
94
    dlg_MotorMixer *f_MotorMixer;
95
    dlg_MotorMixer *f_MotorMixer;
95
 
96
 
96
    // Map-Dialog
97
    // Map-Dialog
97
    dlg_Map *f_Map;
98
    dlg_Map *f_Map;
98
 
99
 
99
    //TCP-Socket
100
    //TCP-Socket
100
    QTcpSocket *TcpSocket;
101
    QTcpSocket *TcpSocket;
101
 
102
 
102
    // Default-Ticker
103
    // Default-Ticker
103
    QTimer *Ticker;
104
    QTimer *Ticker;
104
 
105
 
105
    // Kopie der Tabs des Hauptfensters
106
    // Kopie der Tabs des Hauptfensters
106
    QWidget *TabWidgets[7];
107
    QWidget *TabWidgets[7];
107
 
108
 
108
    // Analogwert-Beschreibungen
109
    // Analogwert-Beschreibungen
109
    QLabel *lb_Analog[MaxAnalog];
110
    QLabel *lb_Analog[MaxAnalog];
110
 
-
 
111
    // Analogwerte
-
 
112
    int AnalogData[MaxAnalog];
-
 
113
 
111
 
114
    // Plots für die Analogwerte
112
    // Plots für die Analogwerte
115
    QwtPlotCurve *Plot[MaxAnalog];    
113
    QwtPlotCurve *Plot[MaxAnalog];    
116
 
114
 
117
    // Datenspeicher für die Plots
115
    // Datenspeicher für die Plots
118
    double aData[MaxAnalog][MaxPlot];
116
    double aData[MaxAnalog][MaxPlot];
119
    double aID[MaxPlot];
117
    double aID[MaxPlot];
120
    int NextPlot;
118
    int NextPlot;
121
 
119
 
122
    AttitudeIndicator *Attitude;
120
    AttitudeIndicator *Attitude;
123
    cSpeedMeter * SpeedMeter;
121
    cSpeedMeter * SpeedMeter;
124
 
122
 
125
    // Ticker-Event-Array
123
    // Ticker-Event-Array
126
    bool TickerEvent[MaxTickerEvents];
124
    bool TickerEvent[MaxTickerEvents];
127
    bool TickerDiv;
125
    bool TickerDiv;
128
 
126
 
129
    //Logger für CVS und andere
127
    //Logger für CVS und andere
130
    Logger * logger;
128
    Logger * logger;
131
 
-
 
132
    sMode Mode;
-
 
133
    sRxData RxData;
-
 
134
    sNaviData Navi;
-
 
135
    sMotor Motor;
-
 
136
 
-
 
137
    QString RXS;
-
 
138
 
129
 
139
    // Softwareupdate
130
    // Softwareupdate
140
    QProcess *Update;
131
    QProcess *Update;
141
 
132
 
142
    // FC-Settings
133
    // FC-Settings
143
    int FCSettings[MaxParameter];
134
    int FCSettings[MaxParameter];
144
 
135
 
145
    // Programm Initialisieren
136
    // Programm Initialisieren
146
    void init_GUI();
137
    void init_GUI();
147
    void init_Objects();
138
    void init_Objects();
148
    void init_Connections();
139
    void init_Connections();
149
    void init_Arrays();
140
    void init_Arrays();
150
    void init_Plot();
141
    void init_Plot();
151
    void init_Cockpit();
142
    void init_Cockpit();
152
 
143
 
153
    // Daten-Plotter
144
    // Daten-Plotter
154
    void update_Plot();
145
    void update_Plot();
155
    void config_Plot();
146
    void config_Plot();
156
 
147
 
157
    void new_NaviData(sRxData RX);
148
    void new_NaviData(sRxData RX);
158
    void parse_TargetKML();
149
    void parse_TargetKML();
159
 
150
 
160
    // Debugdaten anzeigen und speichern.
151
    // Debugdaten anzeigen und speichern.
161
    void show_DebugData();
152
    void show_DebugData();
162
    void update_Log();
153
    void update_Log();
163
 
154
 
164
    // Programmeinstellungen speichern
155
    // Programmeinstellungen speichern
165
    void set_Preferences();
156
    void set_Preferences();
166
 
157
 
167
private slots:
158
private slots:
168
    void slot_QMKS_Connect();
159
    void slot_QMKS_Connect();
169
    void slot_QMKS_Connected();
160
    void slot_QMKS_Connected();
170
    void slot_QMKS_Disconnected(int Error);
161
    void slot_QMKS_Disconnected(int Error);
171
 
162
 
172
    void slot_set_Settings(cSettings *t_Settings);
163
    void slot_set_Settings(cSettings *t_Settings);
173
 
164
 
174
    void slot_MAP_SetTarget(sWayPoint Target);
165
    void slot_MAP_SetTarget(sWayPoint Target);
175
    void slot_MAP_SetWayPoints(QList<sWayPoint> l_WayPoints);
166
    void slot_MAP_SetWayPoints(QList<sWayPoint> l_WayPoints);
176
 
167
 
177
 
168
 
178
    void slot_showTerminal(int Typ, QString Text);
169
    void slot_showTerminal(int Typ, QString Text);
179
 
170
 
180
    void slot_ac_Hardware();
171
    void slot_ac_Hardware();
181
    void slot_rb_Hardware();
172
    void slot_rb_Hardware();
182
 
173
 
183
    void slot_ac_StartServer();
174
    void slot_ac_StartServer();
184
 
175
 
185
    void slot_Test();
176
    void slot_Test();
186
 
177
 
187
    void slot_ac_Config();
178
    void slot_ac_Config();
188
    void slot_ac_Preferences();
179
    void slot_ac_Preferences();
189
    void slot_ac_StartPlotter();
180
    void slot_ac_StartPlotter();
190
    void slot_ac_View();
181
    void slot_ac_View();
191
    void slot_ac_FastDebug();
182
    void slot_ac_FastDebug();
192
    void slot_ac_NoDebug();
183
    void slot_ac_NoDebug();
193
    void slot_ac_FastNavi();
184
    void slot_ac_FastNavi();
194
    void slot_ac_NoNavi();
185
    void slot_ac_NoNavi();
195
    void slot_ac_About();
186
    void slot_ac_About();
196
    void slot_ac_GetLabels();
187
    void slot_ac_GetLabels();
197
    void slot_ac_Motortest();
188
    void slot_ac_Motortest();
198
    void slot_ac_LCD();
189
    void slot_ac_LCD();
199
    void slot_ac_Map();
190
    void slot_ac_Map();
200
    void slot_ac_MotorMixer();
191
    void slot_ac_MotorMixer();
201
 
192
 
202
    void slot_pb_HexFile();
193
    void slot_pb_HexFile();
203
    void slot_pb_SendTarget();
194
    void slot_pb_SendTarget();
204
 
195
 
205
    // Default-Ticker
196
    // Default-Ticker
206
    void slot_Ticker();
197
    void slot_Ticker();
207
 
198
 
208
    // LCD-Seite vor / zurück
199
    // LCD-Seite vor / zurück
209
    void slot_LCD_UP();
200
    void slot_LCD_UP();
210
    void slot_LCD_DOWN();
201
    void slot_LCD_DOWN();
211
 
202
 
212
    void slot_Motortest(sMotor p_Motor);
203
    void slot_Motortest(sMotor p_Motor);
213
 
204
 
214
    // Firmeware-Update
205
    // Firmeware-Update
215
    void slot_pb_Update();
206
    void slot_pb_Update();
216
    void slot_UpdateShell();
207
    void slot_UpdateShell();
217
 
208
 
218
    // Seriell-Port Slots
209
    // Seriell-Port Slots
219
    void slot_newData(sRxData RX);
210
    void slot_newData(sRxData RX);
220
    void slot_OpenPort();
211
    void slot_OpenPort();
221
 
212
 
222
    void slot_TabChanged(int Tab);
213
    void slot_TabChanged(int Tab);
223
 
214
 
224
    void slot_RecordLog();
215
    void slot_RecordLog();
225
 
216
 
226
    void slot_ScrollPlot(int Pos);
217
    void slot_ScrollPlot(int Pos);
227
 
218
 
228
    // FC-Settings lesen / Schreiben
219
    // FC-Settings lesen / Schreiben
229
    void slot_GetFCSettings();
220
    void slot_GetFCSettings();
230
    void slot_SetFCSettings();
221
    void slot_SetFCSettings();
231
};
222
};
232
 
223
 
233
#endif
224
#endif
234
 
225