Subversion Repositories Projects

Rev

Rev 2212 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2136 - 1
/*****************************************************************************
2
 *   Copyright (C) 2008 Thomas Kaiser, thomas@ft-fanpage.de                  *
3
 *   Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net                  *
4
 *   Copyright (C) 2012 Christian "Cebra" Brandtner, brandtner@brandtner.net *
5
 *   Copyright (C) 2012 Harald Bongartz                                      *
6
 *                                                                           *
7
 *   This program is free software; you can redistribute it and/or modify    *
8
 *   it under the terms of the GNU General Public License as published by    *
9
 *   the Free Software Foundation; either version 2 of the License.          *
10
 *                                                                           *
11
 *   This program is distributed in the hope that it will be useful,         *
12
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
13
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           *
14
 *   GNU General Public License for more details.                            *
15
 *                                                                           *
16
 *   You should have received a copy of the GNU General Public License       *
17
 *   along with this program; if not, write to the                           *
18
 *   Free Software Foundation, Inc.,                                         *
19
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.               *
20
 *                                                                           *
21
 *                                                                           *
22
 *   Credits to:                                                             *
23
 *   Holger Buss & Ingo Busker from mikrokopter.de for the MK project + SVN  *
24
 *                          http://www.mikrokopter.de                        *
25
 *   Gregor "killagreg" Stobrawa for his version of the MK code              *
26
 *   Thomas Kaiser "thkais" for the original project. See                    *
27
 *                          http://www.ft-fanpage.de/mikrokopter/            *
28
 *                          http://forum.mikrokopter.de/topic-4061-1.html    *
29
 *   Claas Anders "CaScAdE" Rathje for providing the font and his C-OSD code *
30
 *                          http://www.mylifesucks.de/oss/c-osd/             *
31
 *   Harald Bongartz "HaraldB" for providing his Ideas and Code for usibility*
32
 *****************************************************************************/
33
 
34
//############################################################################
35
//# HISTORY  main.h
36
//#
2214 - 37
//# 14.10.2015 Starter
38
//# - Offset for FollowMe jetzt activ in Version 3.85h
39
//# - FollowMeStep2 wird nicht mehr benötigt, nur zu Debugzwecken
40
//#
2200 - 41
//# 20.09.2015 Starter
42
//# - FollowMeStep2 wird jetzt nurnoch von USE_FOLLOWME_STEP2 aktiviert
43
//#
2198 - 44
//# 19.09.2015 Cebra
45
//# - add: Ordner 10DOF hinzugefügt für die Bearbeitung des GY-87 Sensorboard
46
//#        Kompass, Gyro, ACC, Luftdruck
47
//#
2136 - 48
//# 03.08.2015 Cebra
49
//# - add: Define für GPS Debug hinzugefügt für GPS Berechnung FollowMe
50
//# - add: #define USE_WAYPOINTS , Code sparen
51
//#
52
//# 30.07.2015 Cebra
53
//# - chg: neue Version 3.85e wegen einigen Änderungen in GPS-Maus Bereich, CRC Erkennung und Weitergabe
54
//#
55
//#
56
//# 30.07.2015 Cebra
57
//# - chg: neue Version 3.85d wegen Änderungen in gpsmouse.c
58
//#
59
//#
60
//# 16.07.2015 Cebra
61
//# - chg: neue Version 3.85a wegen FC2.11a
62
//#
63
//# 09.04.2015 Cebra
64
//# - chg: neue Version 3.84a wegen FC2.09j
65
//#
66
//# 05.04.2015 Cebra (PKT383b)
67
//# - chg: Änderungen wegen Fehlfunktion mit NC 2.09h
68
//#        SendOutData( 'h', ADDRESS_ANY, 2, &mkdisplayCmd, 1, 0x00,1)
69
//#        ergänzt um 2. Parameter
70
//#
71
//# 19.03.2015 Cebra (PKT383a)
72
//# - chg: Anpassung an FC209d
73
//#
74
//# 27.01.2015 Cebra (PKT382a)
75
//# - chg: Anpassung an FC209a
76
//#
77
//# 26.09.2014 Cebra (PKT381b)
78
//#
79
//#
80
//# 26.09.2014 Cebra (PKT381a)
81
//#
82
//# 01.07.2014 OG (PKT380e)
83
//#
84
//# 28.06.2014 OG (PKT380dX4)
85
//#
86
//# 27.06.2014 OG (PKT380dX3)
87
//# - chg: USE_FOLLOWME eingeschaltet
88
//# - chg: USE_TRACKING abgeschaltet
89
//#
90
//# 22.06.2014 OG (PKT380dX3)
91
//#
92
//# 20.06.2014 OG (PKT380dX2)
93
//#
94
//# 18.06.2014 OG (PKT380dX1)
95
//#
96
//# 18.06.2014 OG (PKT380d)
97
//#
98
//# 05.06.2014 OG (PKT380cX5)
99
//#
100
//# 02.06.2014 OG (PKT380cX4)
101
//# Update auf Windows Atmel AVR Studio 6.2.1153 (Release)
102
//# (von ehemals Atmel AVR Studio 6.2 Beta)
103
//#
104
//# 27.05.2014 OG (PKT380cX3)
105
//#
106
//# 20.05.2014 OG (PKT380cX2)
107
//#
108
//# 19.05.2014 OG (PKT380cX1)
109
//# - add: USE_OSD_SCREEN_WAYPOINTS (keine Freigabe! In Entwicklung!)
110
//#
111
//# 18.05.2014 OG (PKT380cX1)
112
//#
113
//# 15.05.2014 OG (PKT380c)
114
//#
115
//# 15.05.2014 OG (PKT380bX7)
116
//# - chg: USE_OSD_SCREEN_3DLAGE eingeschaltet (war ungewollt abgeschaltet)
117
//#
118
//# 14.05.2014 OG (PKT380bX7)
119
//#
120
//# 13.05.2014 OG (PKT380bX6)
121
//# - add: USE_MAINMENU_SEPARATOR (aus menu.h hierhin verschoben)
122
//# - del: MKINFO_AUTO_REFRESH
123
//#
124
//# 12.05.2014 OG (PKT380bX5b)
125
//# - chg: keine Code-Changes - dafuer Compiler jetzt Atmel Studio 6.2 Beta
126
//#        (statt bisher Atmel Studio 5.1)
127
//#
128
//# 07.05.2014 OG (PKT380bX4)
129
//#
130
//# 07.05.2014 OG (PKT380bX3)
131
//# - fix: EEpromversion erhoeht auf 138 (siehe eeprom.c)
132
//#
133
//# 02.05.2014 OG (PKT380bX2)
134
//#
135
//# 28.04.2014 OG
136
//# - chg: USE_OSD_SCREEN_OLD abgeschaltet
137
//#
138
//# 20.04.2014 OG (PKT380bX1)
139
//#
140
//# 18.04.2014 OG (PKT380b)
141
//#
142
//# 17.04.2014 OG (PKT380aX1)
143
//# - chg: PKT Versionsanzeige geaendert auf "3.80a" statt wie frueher "3.8.0a"
144
//#
145
//# 16.04.2014 OG (PKT380a)
146
//#
147
//# 14.04.2014 OG (PKT374aX8)
148
//#
149
//# 02.04.2014 OG
150
//# - chg: define fuer Baud_2400 von 0 auf 7 geaendert
151
//#        (0/false wird benoetigt um zu erkennen ob keine Baud-Rate erkannt wurde)
152
//#
153
//# 01.04.2014 OG
154
//# - add: USE_SV2MODULE_BLE (Bluetooth 4 Low Energy Modul an SV2)
155
//#
156
//# 31.03.2014 OG (PKT374aX7)
157
//#
158
//# 30.03.2014 OG (PKT374aX6)
159
//# Sprachunterstuetzung fuer Hollaendisch vollstaendig entfernt
160
//#
161
//# 30.03.2014 OG (PKT374aX5)
162
//# Source-Schnipp PKT374aX5
163
//#
164
//# 01.03.2014 OG (PKT374aX5)
165
//#
166
//# 26.02.2014 OG (PKT374aX4)
167
//# - chg: DEBUG_NEW_PARAMETERS umbenannt zu DEBUG_PARAMSET
168
//#
169
//# 22.02.2014 OG (PKT374aX4)
170
//#
171
//# 17.02.2014 OG (PKT374aX3)
172
//# - chg: umbenannt: USE_MKPARAMETER -> USE_MKSETTINGS
173
//#
174
//# 14.02.2014 OG (PKT374aX2)
175
//# - add: MKINFO_AUTO_REFRESH
176
//# - del: veraltete PKT defines HWVERSION... entfernt
177
//#
178
//# 12.02.2014 OG (PKT374aX2)
179
//# - del: defines zu MKVERSIONnnn entfernt
180
//#
181
//# 10.02.2014 OG (PKT374aX1)
182
//# - add: ...
183
//#
184
//# 05.02.2014 OG (PKT374aX1)
185
//# - add: DEBUG_NEW_PARAMETERS - nur fuer Entwicklung!
186
//#
187
//# 30.01.2014 OG (PKT373cX4)
188
//# - add: USE_BLUETOOTH
189
//#
190
//# 29.01.2014 OG (3.7.3cX3)
191
//# - del: extern uint8_t searchMK(void) ist jetzt in mk/mkbase.c
192
//#
193
//# 24.01.2014 OG (3.7.3cX1)
194
//# - add: DEBUG_FC_COMMUNICATION (Auswirkung in usart.c)
195
//#
196
//# 06.01.2014 CB
197
//# - add: Abschaltung MK Parameter aendern bei nicht passender FC Software
198
//#
199
//# 02.12.2013 CB
200
//# - add: Anpassung Parameter an FC 2.01f
201
//#
202
//# 21.10.2013 CB
203
//# - add: Anpassung Parameter an FC 2.01a
204
//#
205
//# 16.07.2013 CB
206
//# - chg: neuen Versionsnummer wegen Wiflypatch
207
//#
208
//# 07.07.2013 OG
209
//# - add: ABO_TIMEOUT und von 3 sec auf 2 sec gesetzt (war vorher in timer.h)
210
//# - del: define USE_OSD_SCREEN_ELECTRIC_N
211
//# - del: USE_PKT_STARTINFO (wird nicht mehr benoetigt)
212
//# - add: DEBUG_SV2_EXTENSION um Debug-Ausgaben fuer den SV2-Patch an-/auszuschalten
213
//#
214
//# 05.07.2013 CB
215
//# - add: USE_WLAN
216
//#
217
//# 30.06.2013 OG
218
//# - add: USE_OSD_PKTHOOK
219
//#
220
//# 26.06.2013 OG
221
//# - del: USE_PKT_STARTINFO (wird nicht mehr benoetigt)
222
//#
223
//# 24.06.2013 OG
224
//# - add: USE_PKTTOOLS_SV2 - zeigt SV2-Verbindungsmenuepunkte in PKT-Tools an
225
//#        bzw. nicht an. Am PKT-SV2 liegen +5 Volt für die FC/NC an.
226
//#        Anmerkung OG: bei meinen Kompilaten wird das erstmal ausgeschaltet
227
//#                      sein bis 100% klar ist ob das keine Probleme macht
228
//#                      wenn der Kopter mit FC/NC nicht bereits anderweitig
229
//#                      (Netzteil/Lipo) mit Strom versorgt wird.
230
//#
231
//# 22.06.2013 Cebra
232
//# - chg: Fehler bei der Lipooffset Einstellung beseitigt, neue Version 3.7.0c
233
//#
234
//# 20.06.2013 Cebra
235
//# - chg: falsche Versionsnummer korrigiert, neu jetzt 3.7.0b
236
//#
237
//# 13.06.2013 OG
238
//# - del: USE_PCFASTCONNECT (nicht mehr benoetigt)
239
//#
240
//# 12.06.2013 Cebra
241
//# - chg: Versionswechsel auf 3.7.0a, Zielrelease für FC-Software 0.91 (bzw.1.00??)
242
//#
243
//# 10.06.2013 Cebra
244
//# - add: #define MKVERSION091f für FC-Version 0.91f
245
//#
246
//# 30.05.2013 Cebra
247
//# - add: #define MKVERSION091a für FC-Version 0.91a
248
//#
249
//# 19.05.2013 OG
250
//# - del: PKT_Update(), PKT_CheckUpdate(), PKT_Info(), PKT_SwitchOff()
251
//#        -> verschoben nach pkt/pkt.c
252
//# - chg: Kommentare zum Module-Support
253
//#
254
//# 19.05.2013 OG
255
//# - add: USE_MODULEINFO
256
//# - add: PKT_Update(), PKT_CheckUpdate(), PKT_Info(), PKT_SwitchOff()
257
//#
258
//# 18.05.2013 OG
259
//# - add: USE_JOYSTICK, USE_TRACKING, USE_OSDDATA, USE_MKPARAMETER, USE_MKDISPLAY
260
//#
261
//# 16.05.2013 OG
262
//# - add: USE_OSD_SCREEN_NAVIGATION, USE_OSD_SCREEN_ELECTRIC, USE_OSD_SCREEN_ELECTRIC_N,
263
//#        USE_OSD_SCREEN_MKSTATUS, USE_OSD_SCREEN_USERGPS, USE_OSD_SCREEN_3DLAGE,
264
//#        USE_OSD_SCREEN_STATISTIC
265
//# - add: USE_MKGPSINFO
266
//#
267
//# 15.05.2013 OG
268
//# - add: define USE_PKT_STARTINFO
269
//#
270
//# 13.05.2013 Cebra
271
//# - add: #define MKVERSION090h    // wegen GPS-Zeitausgabe NC
272
//#
273
//# 13.05.2013 Cebra
274
//# - add: #define USE_I2CMOTORTEST, I2C Funktionen schaltbar
275
//#
276
//# 05.05.2013 Cebra
277
//# - chg: #define USE_FOLLOWME
278
//#
279
//# 03.05.2013 OG
280
//# - del: USE_XPRINTF_LONG - spart keinen Platz mehr und ist nun dauerhaft notwendig
281
//#
282
//# 28.04.2013 OG
283
//# - add: define USE_PCFASTCONNECT
284
//# - add: define USE_FONT_BIG
285
//# - add: define USE_XPRINTF_LONG
286
//# - chg: Anordnung der Feature- & Debug-defines um einfacher via Copy&Paste
287
//#        die Einstellungen notieren bzw. posten zu koennen
288
//#
289
//# 03.04.2013 OG
290
//# - chg: define 'analognames' zu define 'USE_MKDEBUGDATA'
291
//# - add: USE_OSD_... defines
292
//############################################################################
293
 
294
#ifndef _MAIN_H
295
#define _MAIN_H
296
 
297
// Softwareversion des PKT
2214 - 298
#define PKTSWVersion "3.85_h"        // PKT Version
2136 - 299
 
300
 
301
//#########################################################################
302
//# Einstellungen
303
//#########################################################################
304
#define USE_MAINMENU_SEPARATOR      // Menuetrennlinien im PKT-Hauptmenues anzeigen
305
 
306
 
307
//#########################################################################
308
//# MODULE SUPPORT
309
//# ein-/ausgeschalten von Modulen des PKT um ggf. Speicherplatz zu sparen
310
//#
311
//# Hinweis:
312
//#  wenn neue USE_* hinzugefuegt werden bitte die in PKT_Info()(pkt.c)
313
//#  ergaenzen fuer eine aktualisierte Modul-Info
314
//#########################################################################
315
 
316
//---------------------------------------------
317
//- Module: Hauptfunktionen und allgemeine
318
//---------------------------------------------
319
#define USE_OSDDATA                 // zeigt die OSD-Statistikdaten an (ca. 3.5 KByte)
320
#define USE_MKSETTINGS              // lesen, aktivieren und bearbeiten der MK-Settings 1-5 (ca. ?? KByte)
321
#define USE_MKDEBUGDATA             // Anzeige MK-Debug-Data (ca. 1.7 KByte)
322
#define USE_MKDISPLAY               // Anzeige MK-Display (ca. 1 KByte)
323
#define USE_MKGPSINFO               // Anzeige MK-GPS-Daten (ca. 2 KByte)
324
//#define USE_SOUND                 // PKT Sounderweiterung, benoetigt entsprechende Hardware (ca. 2.5 Kbyte)
325
#define USE_MODULEINFO              // Anzeige installierter Module in PKT_Info()  (ca. 1.8 KByte)
326
#define USE_BLUETOOTH               // Bluetooth Unterstuetzung des PKT (ca. 13 KByte)
327
                                    // Achtung! Das schaltet USE_TRACKING, USE_FOLLOWME aus!
328
//#define USE_WAYPOINTS               // Waypoint mit dem PKT
329
 
330
//Entwicklung:
2198 - 331
//#define USE_ACCCALIBRATION         // schaltet ACC Calibration im Menü ein/aus
332
//#define USE_KOMPASS                // Tilt kompensierter Kompass für FollowMe Funktionen
2136 - 333
//---------------------------------------------
334
//- Module: OSD-Screens
335
//---------------------------------------------
336
//#define USE_OSD_SCREEN_OLD        // OSD Screens OSD0, OSD1, OSD2 (ca. 6.6 KByte)
337
#define USE_OSD_SCREEN_NAVIGATION   // OSD-Screen: Navigation
338
#define USE_OSD_SCREEN_WAYPOINTS    // OSD-Screen: Waypoints
339
#define USE_OSD_SCREEN_ELECTRIC     // OSD-Screen: Electric
340
#define USE_OSD_SCREEN_MKSTATUS     // OSD-Screen: MK-Status
341
#define USE_OSD_SCREEN_USERGPS      // OSD-Screen: UserGPS
342
#define USE_OSD_SCREEN_3DLAGE       // OSD-Screen: 3D-Lage  (ca. 900 Bytes)
343
#define USE_OSD_SCREEN_STATISTIC    // OSD-Screen: Statistic
344
 
345
//---------------------------------------------
346
//- Module fuer spezielle Benutzergruppen
347
//---------------------------------------------
348
#define USE_FOLLOWME                // FollowMe Funktionen (ca. 3 Kbyte)
2214 - 349
//#define USE_FOLLOWME_STEP2          // FollowMe Funktionen Abstand und Winkel einstellbar
2136 - 350
//#define USE_JOYSTICK                // Joystick Support, benoetigt spezielle Hardware (ca. 4.1 KByte)
351
#define USE_WLAN                    // WLAN WiFly Modul an SV2 (ca. 6 KByte))
352
#define USE_SV2MODULE_BLE           // Bluetooth 4 Low Energy Modul - externes Modul an SV2 (RedBearLab BLE Mini) (ca. 200 Bytes)
353
 
354
//---------------------------------------------
355
//- Module mit geringer Relevanz
356
//---------------------------------------------
357
//#define USE_I2CMOTORTEST          // I2C Funktionen für Motortest (ca. 3.8 KByte)
358
//#define USE_FONT_BIG              // grosser 8x8 Font (ca. 2.2 KByte, bei Verwendung von USE_OSD_SCREEN_OLD ca. 2.4 KByte)
359
 
360
//---------------------------------------------
361
//- Module unfertig bzw. noch in der Entwicklung
362
//---------------------------------------------
2194 - 363
//#define USE_TRACKING                // Antennentracking, benoetigt spezielle Hardware (ca. 6 KByte)
2136 - 364
 
365
 
366
//---------------------------------------------
367
//- zusaetzliche Optionen
368
//---------------------------------------------
369
//#define USE_OSD_PKTHOOK
370
#define USE_PKTTOOLS_SV2            // im Menue von PKT-Tools erscheinen Punkte zur Verbindung zum MK via
371
                                    // 10-Pol-Kabel am PKT-SV2. Der PKT-SV2-Anschluss liefert zur FC/NC +5 Volt!
372
 
373
 
374
//#########################################################################
375
//# Debug Module & Einstellungen
376
//# Nur fuer die Entwicklung - fuer Veroeffentlichung alles abschalten!
377
//#########################################################################
378
//#define IgnoreFCVersion           // keine FC-Revisions Pruefung
379
//#define DEBUG_SV2_EXTENSION       // ...
380
//#define USE_OSD_DEMO              // zeigt Demo-Daten in den OSD-Screens (sofern vom Screen unterstuetzt) (fuer Fotos) (nicht fuer die Oeffentlichkeit)
381
//#define USE_OSD_SCREEN_DEBUG      // zusaetzliche Debug-Screen's aktivieren (ca. 1 KByte) (nicht fuer die Oeffentlichkeit)
382
//#define DEBUG                     // ?? Funktion unbekannt!
383
//#define DEBUG_FC_COMMUNICATION    // in usart.c Debugausgaben auf dem PKT bzgl. Datenempfang vom Kopter
384
//#define DEBUG_PARAMSET            // nur fuer Entwicklung! Fuer Release ABSCHALTEN!
2200 - 385
//#define DEBUG_GPS                   // Entwicklung der GPS Berechnung für FollowMe (wird im Moment nicth genutzt)
2136 - 386
 
387
 
388
//#########################################################################
389
//# Einstellungen
390
//#########################################################################
391
//#define ABO_TIMEOUT       300 // 3 sec
392
#define ABO_TIMEOUT       200   // 2 sec
393
 
394
 
395
 
396
 
397
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
398
//+ ggf. abhaengige USE-defines deaktivieren
399
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
400
#ifndef USE_BLUETOOTH
401
  #undef USE_TRACKING
402
  #undef USE_FOLLOWME
403
#endif
404
 
405
 
406
 
407
// Fusebits fü½r Hardware 1.2 D7 DC FC
408
// Fusebits für Hardware 1.3 D7 DC FC
409
// Fusebits für Hardware 3.x D7 DC FC
410
// avrdude -pm1284p -cavr109 -P/dev/ttyUSB1 -b115200 -V -Uflash:w:Dateiname.hex:a
411
 
412
 
413
// hier die entsprechende Hardwareversion der Leiterplatte einstellen
414
#define HWVERSION3_9   // Hardware Cebra Oktober 2011 ATmega1284P
415
 
416
#ifdef HWVERSION3_9
417
#include "HAL_HW3_9.h"
418
#endif
419
 
420
#define NO     0
421
#define NC     1
422
#define FC     2
423
#define MK3MAG 3
424
#define MKGPS  4
425
#define Wi232  5
426
 
427
// CB #define ENABLE_PWM
428
 
429
 
430
//                      Baud Rate
431
#define Baud_9600       1
432
#define Baud_19200      2
433
#define Baud_38400      3
434
#define Baud_57600      4
435
#define Baud_115200     5
436
#define Baud_4800       6
437
#define Baud_2400       7
438
 
439
 
440
//----------------------------------------------------------------------------
441
// Anmerkung: 29.01.2014 OG
442
// - muss spaeter an geeignete Stelle verschoben werden (ggf. mkbase.c/usart.c)
443
//----------------------------------------------------------------------------
444
extern volatile uint8_t mode;
445
extern uint8_t hardware;
446
extern uint8_t current_hardware;
447
 
448
#endif