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) 2011 Christian "Cebra" Brandtner, brandtner@brandtner.net *
5
 *   Copyright (C) 2011 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  menu.c
2214 - 36
//# 14.10.2015 Starter
37
//# fix: -FollowMeStep2 Debug wird nur noch bei FollowMeStep2 angezeigt
2136 - 38
//#
39
//# 03.08.2015 Cebra
40
//# - add: Menü _DefMenu_Main_NO erweitert für GPS Test , mit #define schaltbar
41
//#
42
//# 09.04.2015 Cebra
43
//# - add: Vorbereitung für ACC Kalibrartion aus dem Menü
44
//#        #ifdef USE_ACCCALIBRATION
45
//#
46
//# 27.06.2014 OG
47
//# - chg: Menu_PKTSpezial() - Tracking etwas nach oben verschoben
48
//#
49
//# 26.06.2014 OG
50
//# - chg: Menu_PKTSpezial() - ergaenzt um Setup_FollowMe()
51
//#
52
//# 18.06.2014 OG
53
//# - chg: Menu_PKTSpezial() umorganisiert
54
//#
55
//# 14.06.2014 OG
56
//# - chg: _DefMenu_Main_NO() - "PKT Spezial" wird nicht mehr angezeigt wenn
57
//#        kein Kopter gefunden wurde; aktuell sind dort nur Funktionen
58
//#        enthalten die einen Kopter benoetigen - wenn sich das mal irgendwann
59
//#        aendert muss man das anpassen
60
//#
61
//# 01.06.2014 OG
62
//# - chg: Menu_PKTSpezial() - Aufruf von Tracking und Followme ergaenzt
63
//#        um Abfrage MKVersion.isNC
64
//# - chg: _ConfigMenu_Main() umgestellt auf MKVersion.isNC/isFC
65
//#
66
//# 14.05.2014 OG
67
//# - chg: Aufruf von gps() geaendert zu MK_Gps_Info()
68
//# - chg: include "gps/gps.h" geaendert zu "mk/mkgpsinfo.h"
69
//#
70
//# 13.05.2014 OG
71
//# - del: USE_MAINMENU_SEPARATOR (verschoben nach main.h)
72
//# - chg: Menu_Main() - del unused variable 'event'
73
//#
74
//# 11.05.2014 OG
75
//# - chg: Menu_PKTSpezial() umgestellt auf MenuCtrl_SetTitleFromParentItem()
76
//#        -> die Menues 'erben' damit ihren Titel vom aufrufenden Menuepunkt
77
//#
78
//# 08.04.2014 OG
79
//# - chg: die Menuetrennlinien werden jetzt via define USE_MAINMENU_SEPARATOR
80
//#        angezeigt (das define ist hier im Code) und sind erstmal wieder
81
//#        abgeschaltet
82
//#
83
//# 08.04.2014 OG
84
//# - add: _DefMenu_Main_NC() - Menuetrennlinien hinzugefuegt
85
//# - add: _DefMenu_Main_FC(), _DefMenu_Main_NO() - Menuetrennlinien hinzugefuegt
86
//#
87
//# 01.04.2014 OG
88
//# - chg: PCB_WiFlyPatch umbenannt zu PCB_SV2RxTxPatch
89
//# - add: PKT-Connect(): "BLE Extender" (ext. Bluetooth 4 Low Energy Modul an SV2)
90
//# - fix: Menu_PKTConnect(): "WLAN Extender" nur sichtar wenn Config.UseWL gesetzt ist
91
//#
92
//# 30.03.2014 OG
93
//# - chg: Sprache Hollaendisch vollstaendig entfernt
94
//# - chg: MenuCtrl_PushML_P() umgestellt auf MenuCtrl_PushML2_P()
95
//#
96
//# 29.03.2014 OG
97
//# - chg: versch. Funktionen: del: MenuCtrl_SetShowBatt() wegen Aenderung
98
//#        des Defaults auf true
99
//#
100
//# 24.03.2014 OG
101
//# - chg: "MK Info" vor "MK Settings" verschoben
102
//#
103
//# 28.02.2014 OG
104
//# - chg: ID_MKSETTINGS in den Menues fuer NC/FC weiter nach oben geschoben
105
//#
106
//# 27.02.2014 OG
107
//# - chg: Menuetexte fuer Menu_PKTConnect()
108
//#
109
//# 26.02.2014 OG
110
//# - chg: DEBUG_NEW_PARAMETERS umbenannt zu DEBUG_PARAMSET
111
//#
112
//# 18.02.2014 OG
113
//# - chg: Aufruf von MK_Parameters() ist jetzt MK_Settings() und geht auf
114
//#        den Source mk/mksettings.c
115
//#
116
//# 17.02.2014 OG
117
//# - chg: aus "MK Parameters" ist "MK Settings" geworden! Entsprechende
118
//#        defines zu ID's, USE und Sprachen haben sich geaendert
119
//# - chg: umbenannt: USE_MKPARAMETER -> USE_MKSETTINGS
120
//#
121
//# 12.02.2014 OG
122
//# - del: die includes zu den alten parameter... entfernt
123
//# - chg: auf mk/mkparameters.c/h umgestellt -> MK_Parameters()
124
//# - chg: auf 'MKVersion.paramsetOK' umgestellt
125
//#
126
//# 05.02.2014 OG
127
//# - add: DEBUG_NEW_PARAMETERS in Hauptmenues fuer Entwicklung
128
//#
129
//# 30.01.2014 OG
130
//# - add: Unterstuetzung fuer USE_BLUETOOTH
131
//#
132
//# 29.01.2014 OG
133
//# - chg: Umstrukturierung vom Hauptmenue
134
//#          chg: "PKT Tools" -> "PKT Connect" (nur noch Connect-Funktionen drin)
135
//#          add: "PKT Spezial" -> MK-Motortest und Spezial-Funktionen
136
//#               wie Joystick, Tracking, FollowMe
137
//# - chg: call: display_debug() -> MK_DebugData()
138
//# - chg: call: display_data() -> MK_Display()
139
//# - chg: #include "debug.h" -> "mk/mkdebugdata.h"
140
//# - chg: #include "display.h" -> #include "mk/mkdisplay.h"
141
//# - add: #include "mk/mkbase.h"
142
//#
143
//# 25.01.2014 OG
144
//# - chg: MK-Display und MK-DebugData auch bei falscher FC-Revision wieder
145
//#        aktiviert
146
//#
147
//# 07.01.2014 Cebra
148
//# - chg: Abfrage WrongFCVersion etwas verändert
149
//#
150
//# 06.01.2014 Cebra
151
//# - add: Alle Menüpunkte die FC versionabhängig werden bei falscher FC Version ausgeblendet
152
//#
153
//# 04.10.2013 Cebra
154
//# - add: Motortest ohne FC = I2C-Anschluss PKT, mit FC/NC Motortest über FC
155
//#
156
//# 26.06.2013 Cebra
157
//# - add: Menüpunkt Wlan Rangeextender
158
//#
159
//# 24.06 2013 OG
160
//# - chg: Menu_PKTTools(): Menuepunkte fuer PKT-SV2-Verbindungen werden
161
//#        durch define USE_PKTTOOLS_SV2 (main.h) an-/ausgeschaltet
162
//# - chg: Menu_PKTTools(): Menuepunkte werden je nach aktiviertem Wi232 und
163
//#        Bluetooth ein-/ausgeblendet
164
//# - chg: Menuetexte fuer ID_USB2SV2 und ID_BT2SV2 geaendert
165
//# - chg: defines fuer Menuetexte von PKT-Tools geaendert
166
//# - del: verschiedene Exec_* Funktionen
167
//#
168
//# 24.06 2013 Cebra
169
//# - add: Menuepunkt MKUSB in PKT-Tools
170
//#
171
//# 13.06.2013 OG
172
//# - chg: Fastconnect auf Menu_PKTTools() umgelegt
173
//# - chg: Menueeintraege von Menu_PKTTools() modifiziert und reduziert
174
//# - chg: in allen Hauptmenues ist PKT-Setup und PKT-Info drin
175
//#
176
//# 11.06.2013 OG
177
//# - chg: Code zu Menu_OSDData() ausgegliedert nach osddata.c
178
//#
179
//# 24.05.2013 OG
180
//# - chg: Aufrufe von MenuCtrl_Push() umgestellt auf MenuCtrl_PushML_P()
181
//#
182
//# 21.05.2013 OG
183
//# - chg: Menu_Main() umgestellt auf MENUCTRL_EVENT
184
//# - fix: Menu_Main() nach Menu-Redraw searchMK()
185
//# - chg: Menu_Setup() umbenannt zu Setup_MAIN()
186
//# - del: include utils/menuold.h
187
//#
188
//# 20.05.2013 OG
189
//# - chg: Layout Menutitel
190
//#
191
//# 19.05.2013 OG
192
//# - chg: Menuepunkte Tracking und FollowMe werden nur angezeigt wenn BTM222
193
//#        installiert ist (Config.UseBT == true)
194
//# - add: Menu_PKTTools() (ehemals in tools.c)
195
//# - del: PC_Fast_Connect() verschoben nach pkt.c
196
//# - chg: main_menu() umbenannt zu Menu_Main()
197
//#
198
//# 19.05.2013 OG
199
//# - chg: Funktionen nach main.c verschoben
200
//#        CheckUpdate(), Update_PKT(), PKT_Info(), PKT_SwitchOff()
201
//#
202
//# 18.05.2013 OG
203
//# - chg: PKT_Info() erweitert um optionale Module-Info (via USE_MODULEINFO)
204
//#        und Credits chronoligisch umgedreht
205
//#
206
//# 18.05.2013 OG
207
//# - add: USE_JOYSTICK, USE_TRACKING, USE_OSDDATA, USE_MKPARAMETER, USE_MKDISPLAY
208
//# - chg: redundante Menue-Strings sind untereinander verpointert um Platz zu
209
//#        sparen
210
//# - chg: Umstellung auf neue menuctrl.c und damit starke Strukturaenderung
211
//#        Hinweis: autom. PKT-Update via Hauptmenue geht noch nicht - wird
212
//#        wieder eingebaut (wenn m�glich direkt in menuctrl.c dann geht
213
//#        das in allen Menues)
214
//# - del: Ausgliederung der alten Menue-Funktionen nach utils/menuold.c
215
//#        inkl. not_possible()
216
//#
217
//# 16.05.2013 OG
218
//# - add: define USE_MKGPSINFO fuer gps()
219
//#
220
//# 05.05.2013 Cebra
221
//# - chg: Fehler im Menü bei nicht verfügbaren Funktionen
222
//#
223
//# 02.05.2013 OG
224
//# - chg: Menuetext: osddata_menuitems:  "MK Fehlerliste" -> "MK Fehler"
225
//# - chg: Menuetext: "OSD Anzeige" wieder zurueck zu "OSD"
226
//#
227
//# 28.04.2013 OG
228
//# - chg: Show_Version() auf ScrollBox umgestellt
229
//# - chg: Menuetext "Debug Data" zu "MK Debug Data" (kam frueher zu Verwirrungen bei mir)
230
//# - chg: main_menu() bzgl. Menu_OSDDATA()
231
//# - add: Menu_OSDDATA() (aus ehemaligem osd/osd_tools.c)
232
//#
233
//# 21.04.2013 Cebra
234
//# - chg: OSD-Tools im Menue integriert
235
//#
236
//# 16.04.2013 Cebra
237
//# - chg: PROGMEM angepasst auf neue avr-libc und GCC, prog_char depreciated
238
//#
239
//# 14.04.2013 OG
240
//# - WIP: Anzeige "OSD-Daten" in param_menuitems_nc, param_menuitems_no
241
//#
242
//# 04.04.2013 Cebra
243
//# - chg:Texttuning
244
//#       not_possible, für Menüpunkte nicht nicht wählbar sind
245
//#
246
//# 03.04.2013 OG
247
//# - fix: Anzeigefehler wenn (hardware == NC) und nicht gesetzt define 'USE_MKDEBUGDATA' (bzw. 'analognames')
248
//# - chg: Layout von Anzeige wenn USE_MKDEBUGDATA nicht verfuegbar (jetzt Invers)
249
//# - chg: define 'analognames' zu define 'USE_MKDEBUGDATA'
250
//#
251
//# 30.03.2013 CB
252
//# - add: automatischer Start der PKT-Updatefunktion im Mainmenüe für das Updatetool
253
//#
254
//# 28.03.2013 CB
255
//# - chg: Hinweis wenn Debug Data nicht möglich ist
256
//#
257
//# 10.03.2013 Cebra
258
//# - add: menu_select, gemeinsame Routine für alle Setupmenüs
259
//#
260
//# 27.03.2013 Cebra
261
//# - chg: Fehler bei der Menüsteuerung behoben
262
//############################################################################
263
 
264
 
265
#include "cpu.h"
266
#include <avr/io.h>
267
#include <inttypes.h>
268
#include <stdlib.h>
269
#include <avr/pgmspace.h>
270
#include <avr/wdt.h>
271
#include <util/delay.h>
272
#include <string.h>
273
 
274
#include "main.h"
275
#include "lcd/lcd.h"
276
#include "menu.h"
277
#include "mk/mkdisplay.h"
278
#include "mk/mkdebugdata.h"
279
#include "timer/timer.h"
280
#include "osd/osd.h"
281
#include "osd/osddata.h"
282
#include "motortest/motortest.h"
283
#include "mk/mkgpsinfo.h"
284
#include "eeprom/eeprom.h"
285
#include "setup/setup.h"
286
#include "uart/uart1.h"
287
#include "mk-data-structs.h"
288
#include "wi232/Wi232.h"
289
 
290
#include "connect.h"
291
#include "lipo/lipo.h"
292
#include "messages.h"
293
#include "bluetooth/bluetooth.h"
294
#include "followme/followme.h"
295
#include "tracking/ng_servo.h"
296
#include "tracking/tracking.h"
297
#include "stick/stick.h"
298
#include "utils/menuctrl.h"
299
#include "pkt/pkt.h"
300
#include "mk/mkbase.h"
301
#include "mksettings/paramset.h"
302
#include "mksettings/mksettings.h"
303
 
304
 
305
//############################################################################
306
 
307
char titlemain[]  = "PKT v                ";    // buffer fuer PKT-Versionsinfo
308
                   //123456789012345678901
309
 
310
 
311
 
312
// nur fuer Entwicklung...
313
static const char DEBUG_PARAMSET_Text[]         PROGMEM = "DEBUG PARAMSET";
314
 
315
//############################################################################
316
 
317
//-----------------------
318
// main_menu
319
//-----------------------
320
#define ID_OSD              1
321
#define ID_OSDDATA          2
322
#define ID_MKDISPLAY        3
323
#define ID_MKSETTINGS       4
324
#define ID_MKDEBUGDATA      5
325
#define ID_MKGPSINFO        6
326
#define ID_SEARCHMK         7
327
#define ID_PKTCONNECT       8
328
#define ID_PKTSETUP         9
329
#define ID_PKTINFO          10
330
#define ID_PKTSPEZIAL       11
331
#define ID_MKINFO           12
332
#define ID_MKACCCAL         13
333
 
334
#define ID_DEBUG_GPS        14
335
 
336
 
337
static const char SEARCHMK_de[]         PROGMEM = "Suche Mikrokopter";
338
static const char SEARCHMK_en[]         PROGMEM = "search Kopter";
339
 
340
static const char OSD_de[]              PROGMEM = "OSD";
341
#define OSD_en OSD_de
342
 
343
static const char OSDDATA_de[]          PROGMEM = "OSD Daten";
344
static const char OSDDATA_en[]          PROGMEM = "OSD Data";
345
 
346
static const char MKINFO_de[]           PROGMEM = "MK Info";
347
#define MKINFO_en  MKINFO_de
348
 
349
static const char MKDISPLAY_de[]        PROGMEM = "MK Display";
350
#define MKDISPLAY_en MKDISPLAY_de
351
 
352
static const char MKACCCAL_de[]         PROGMEM = "MK ACC Kalibr.";
353
static const char MKACCCAL_en[]         PROGMEM = "MK ACC Calibr.";
354
 
355
static const char MKSETTINGS_de[]       PROGMEM = "MK Settings";
356
#define MKSETTINGS_en  MKSETTINGS_de
357
 
358
static const char MKDEBUGDATA_de[]      PROGMEM = "MK Daten";
359
static const char MKDEBUGDATA_en[]      PROGMEM = "MK Data";
360
 
361
static const char MKGPSINFO_de[]        PROGMEM = "MK GPS Info";
362
#define MKGPSINFO_en MKGPSINFO_de
363
 
364
static const char PKTCONNECT_de[]       PROGMEM = "PKT Connect";
365
#define PKTCONNECT_en PKTCONNECT_de
366
 
367
static const char PKTSPEZIAL_de[]       PROGMEM = "PKT Spezial";
368
static const char PKTSPEZIAL_en[]       PROGMEM = "PKT Special";
369
 
370
static const char PKTSETUP_de[]         PROGMEM = "PKT Setup";
371
#define PKTSETUP_en  PKTSETUP_de
372
 
373
static const char PKTINFO_de[]          PROGMEM = "PKT Info";
374
#define PKTINFO_en  PKTINFO_de
375
 
376
 
2212 - 377
#ifdef USE_FOLLOWME_STEP2
2136 - 378
static const char PKTGPS_de[]          PROGMEM = "PKT GPS Debug";
379
#define PKTGPS_en  PKTGPS_de
380
#endif
381
 
382
 
383
//############################################################################
384
 
385
//-----------------------------
386
// Menu_PKTSpezial()
387
//-----------------------------
388
#define ID_BLTESTER         60
389
#define ID_TRACKING         61
390
#define ID_JOYSTICK         62
391
#define ID_FOLLOWME         63
392
#define ID_FOLLOWMESETUP    64
393
 
394
static const char BLTESTER_de[]         PROGMEM = "MK Motortest";
395
#define BLTESTER_en                     BLTESTER_de
396
 
397
static const char TRACKING_de[]         PROGMEM = "Tracking";
398
#define TRACKING_en                     TRACKING_de
399
 
400
static const char JOYSTICK_de[]         PROGMEM = "Joystick";
401
#define JOYSTICK_en                     JOYSTICK_de
402
 
403
static const char FOLLOWME_de[]         PROGMEM = "Follow Me";
404
#define FOLLOWME_en                     FOLLOWME_de
405
 
406
static const char FOLLOWMESETUP_de[]    PROGMEM = "Follow Me Setup";
407
#define FOLLOWMESETUP_en                FOLLOWMESETUP_de
408
 
409
//############################################################################
410
 
411
//-----------------------------
412
// Menu_PKTConnect()
413
//-----------------------------
414
#define ID_BT2WI232         40
415
#define ID_USB2WI232        41
416
#define ID_USB2SV2          42
417
#define ID_BT2SV2           43
418
#define ID_WIFLY2WI232      44
419
#define ID_BLE2WI232        45
420
 
421
 
422
 
423
static const char BT2WI232_de[]         PROGMEM = "BT   Extender";
424
#define           BT2WI232_en           BT2WI232_de
425
 
426
static const char BLE2WI232_de[]        PROGMEM = "BLE  Extender";
427
#define           BLE2WI232_en          BLE2WI232_de
428
 
429
static const char WIFLY2WI232_de[]      PROGMEM = "WLAN Extender";
430
#define           WIFLY2WI232_en        WIFLY2WI232_de
431
 
432
static const char USB2WI232_de[]        PROGMEM = "USB  -> Wi232";
433
#define           USB2WI232_en          USB2WI232_de
434
 
435
#ifdef USE_PKTTOOLS_SV2
436
static const char USB2SV2_de[]          PROGMEM = "USB  -> SV2";
437
#define           USB2SV2_en            USB2SV2_de
438
#endif
439
 
440
#ifdef USE_PKTTOOLS_SV2
441
static const char BT2SV2_de[]           PROGMEM = "BT   -> SV2";
442
#define           BT2SV2_en             BT2SV2_de
443
#endif
444
 
445
 
446
//#############################################################################################
447
//# Hilfsfunktionen & Verschiedenes
448
//#############################################################################################
449
 
450
 
451
//--------------------------------------------------------------
452
// wird von Menu_PKTTools() verwendet
453
//--------------------------------------------------------------
454
void Exec_BLTESTER(void)
455
{
456
  if(hardware == NO) motor_test( I2C_Mode );
457
  if(hardware == NC) motor_test( FC_Mode );
458
  if(hardware == FC) motor_test( FC_Mode );
459
 
460
}
461
 
462
 
463
//#############################################################################################
464
//# Menu: Spezial
465
//#############################################################################################
466
 
467
 
468
 
469
//--------------------------------------------------------------
470
// Menue fuer 'PKTSpezial'
471
//--------------------------------------------------------------
472
void Menu_PKTSpezial( void )
473
{
474
    //---------------
475
    // Create
476
    //---------------
477
    MenuCtrl_Create();
478
 
479
    //---------------
480
    // Einstellungen
481
    //---------------
482
    MenuCtrl_SetTitleFromParentItem();      // "PKT Spezial"
483
  //MenuCtrl_SetTitle_P( PSTR("PKT Spezial") );
484
  //MenuCtrl_SetShowBatt( true );
485
 
486
    //---------------
487
    // Menuitems: PKTSpezial
488
    //---------------
489
    #ifdef USE_FOLLOWME
490
    if( Config.UseBT && MKVersion.isNC )
491
    {
492
      MenuCtrl_PushML2_P( ID_FOLLOWME     , MENU_ITEM, &FollowMe      , FOLLOWME_de     , FOLLOWME_en      );
493
      MenuCtrl_PushML2_P( ID_FOLLOWMESETUP, MENU_ITEM, &Setup_FollowMe, FOLLOWMESETUP_de, FOLLOWMESETUP_en );
494
    }
495
    #endif
496
 
497
 
498
    #ifdef USE_TRACKING
499
    if( Config.UseBT && MKVersion.isNC )
500
    {
501
      MenuCtrl_PushML2_P( ID_TRACKING   , MENU_ITEM, &PKT_tracking , TRACKING_de   , TRACKING_en  );
502
    }
503
    #endif
504
 
505
 
506
    #ifdef USE_JOYSTICK
507
    MenuCtrl_PushML2_P( ID_JOYSTICK   , MENU_ITEM, &joystick       , JOYSTICK_de   , JOYSTICK_en  );
508
    #endif
509
 
510
 
511
    MenuCtrl_PushSeparator();       // MENUE TRENNLINIE
512
 
513
    MenuCtrl_PushML2_P( ID_BLTESTER    , MENU_ITEM, &Exec_BLTESTER , BLTESTER_de    , BLTESTER_en );
514
 
515
    // {"Servo Tester     ","servo test       ","Servo Tester     "},
516
    // if((val+offset) == 2 )  servo_test();
517
 
518
    //---------------
519
    // Control
520
    //---------------
521
    MenuCtrl_Control( MENUCTRL_EVENT );
522
 
523
    //---------------
524
    // Destroy
525
    //---------------
526
    MenuCtrl_Destroy();
527
}
528
 
529
 
530
//#############################################################################################
531
//# Menu: PKT-Connect
532
//#############################################################################################
533
 
534
//--------------------------------------------------------------
535
// Menue fuer; PKT-Connect
536
//
537
// verbindet das PKT mit anderen Devices wie Tablet usw.
538
//--------------------------------------------------------------
539
void Menu_PKTConnect( void )
540
{
541
    //---------------
542
    // Create
543
    //---------------
544
    MenuCtrl_Create();
545
 
546
    //---------------
547
    // Einstellungen
548
    //---------------
549
    MenuCtrl_SetTitle_P( PSTR("PKT Connect") );     // kann nicht auf MenuCtrl_SetTitleFromParentItem() umgestellt
550
                                                    // werden da PKT-Connect auch durch einen Hot-Key aufgerufen
551
                                                    // werden kann
552
  //MenuCtrl_SetCycle( false );
553
  //MenuCtrl_SetShowBatt( true );
554
  //MenuCtrl_SetBeep( true );
555
 
556
    //---------------
557
    // Menuitems
558
    //---------------
559
    #ifdef USE_BLUETOOTH
560
    if( Config.UseBT && Config.UseWi )
561
        MenuCtrl_PushML2_P( ID_BT2WI232    , MENU_ITEM, &Port_BT2Wi    , BT2WI232_de    , BT2WI232_en    );
562
    #endif
563
 
564
    #ifdef USE_SV2MODULE_BLE
565
    if( PCB_SV2RxTxPatch && Config.UseBLE )
566
        MenuCtrl_PushML2_P( ID_BLE2WI232   , MENU_ITEM, &Port_BLE2Wi   , BLE2WI232_de   , BLE2WI232_en );
567
    #endif
568
 
569
    if( PCB_SV2RxTxPatch && Config.UseWL )
570
        MenuCtrl_PushML2_P( ID_WIFLY2WI232 , MENU_ITEM, &Port_WiFly2Wi , WIFLY2WI232_de , WIFLY2WI232_en );
571
 
572
    if( Config.UseWi )
573
        MenuCtrl_PushML2_P( ID_USB2WI232   , MENU_ITEM, &Port_USB2Wi   , USB2WI232_de   , USB2WI232_en   );
574
 
575
    #ifdef USE_PKTTOOLS_SV2     // am PKT-SV2 liegen +5 Volt an...
576
        MenuCtrl_PushML2_P( ID_USB2SV2     , MENU_ITEM, &Port_USB2FC   , USB2SV2_de     , USB2SV2_en     );
577
 
578
    #ifdef USE_BLUETOOTH
579
    if( Config.UseBT )
580
        MenuCtrl_PushML2_P( ID_BT2SV2      , MENU_ITEM, &Port_BT2FC    , BT2SV2_de      , BT2SV2_en      );
581
    #endif
582
 
583
    #endif   // end: #ifdef USE_PKTTOOLS_SV2
584
 
585
    //---------------
586
    // Control
587
    //---------------
588
    MenuCtrl_Control( MENUCTRL_EVENT );
589
 
590
    //---------------
591
    // Destroy
592
    //---------------
593
    MenuCtrl_Destroy();
594
}
595
 
596
 
597
//#############################################################################################
598
//# Menu: Menu_Main
599
//#############################################################################################
600
 
601
//--------------------------------------------------------------
602
//--------------------------------------------------------------
603
void _DefMenu_Main_NC( void )
604
{
605
 
606
 
607
    MenuCtrl_PushML2_P( ID_OSD        , MENU_ITEM, &osd              , OSD_de        , OSD_en         );
608
 
609
    #ifdef USE_OSDDATA
610
    MenuCtrl_PushML2_P( ID_OSDDATA    , MENU_SUB , &Menu_OSDData     , OSDDATA_de    , OSDDATA_en     );
611
    #endif
612
 
613
    #ifdef USE_MAINMENU_SEPARATOR
614
    MenuCtrl_PushSeparator();   // MENUE TRENNLINIE
615
    #endif
616
 
617
    MenuCtrl_PushML2_P( ID_MKINFO     , MENU_ITEM, NOFUNC            , MKINFO_de     , MKINFO_en      );
618
 
619
    #ifdef USE_MKSETTINGS
620
    if( MKVersion.paramsetOK )
621
    {
622
       MenuCtrl_PushML2_P( ID_MKSETTINGS, MENU_SUB , &MK_Settings   , MKSETTINGS_de, MKSETTINGS_en    );
623
    }
624
    #endif
625
 
626
    #ifdef USE_MKDISPLAY
627
//    ACC_Display = false;
628
    MenuCtrl_PushML2_P( ID_MKDISPLAY  , MENU_ITEM, &MK_Display       , MKDISPLAY_de  , MKDISPLAY_en   );
629
    #endif
630
 
631
    #ifdef USE_ACCCALIBRATION
632
    if ((MKVersion_Cmp( MKVersion.FCVer,  2,9,'i')  == VERSION_EQUAL) || (MKVersion_Cmp( MKVersion.FCVer,  2,9,'i')  == VERSION_GREATER))
633
      {
634
        ACC_Display = true;
635
        MenuCtrl_PushML2_P( ID_MKACCCAL   , MENU_ITEM, &MK_Display       , MKACCCAL_de  , MKACCCAL_en   );
636
      }
637
    #endif
638
 
639
    #ifdef USE_MKDEBUGDATA
640
    MenuCtrl_PushML2_P( ID_MKDEBUGDATA, MENU_ITEM, &MK_DebugData     , MKDEBUGDATA_de, MKDEBUGDATA_en );
641
    #endif
642
 
643
 
644
    #ifdef USE_MKGPSINFO
645
    MenuCtrl_PushML2_P( ID_MKGPSINFO  , MENU_ITEM, &MK_Gps_Info      , MKGPSINFO_de  , MKGPSINFO_en   );
646
    #endif
647
 
648
    #ifdef USE_MAINMENU_SEPARATOR
649
    MenuCtrl_PushSeparator();   // MENUE TRENNLINIE
650
    #endif
651
 
652
    MenuCtrl_PushML2_P( ID_PKTSPEZIAL , MENU_SUB , &Menu_PKTSpezial  , PKTSPEZIAL_de , PKTSPEZIAL_en  );
653
    MenuCtrl_PushML2_P( ID_PKTCONNECT , MENU_SUB , &Menu_PKTConnect  , PKTCONNECT_de , PKTCONNECT_en  );
654
    MenuCtrl_PushML2_P( ID_PKTSETUP   , MENU_SUB , NOFUNC            , PKTSETUP_de   , PKTSETUP_en    );
655
    MenuCtrl_PushML2_P( ID_PKTINFO    , MENU_ITEM ,&PKT_Info         , PKTINFO_de    , PKTINFO_en     );
656
 
657
 
658
    #ifdef DEBUG_PARAMSET
659
    MenuCtrl_Push_P( 0  , MENU_ITEM, &paramsetDEBUG , DEBUG_PARAMSET_Text  );
660
    #endif
661
}
662
 
663
 
664
 
665
//--------------------------------------------------------------
666
//--------------------------------------------------------------
667
void _DefMenu_Main_FC( void )
668
{
669
    MenuCtrl_PushML2_P( ID_MKINFO     , MENU_ITEM, NOFUNC            , MKINFO_de     , MKINFO_en      );
670
 
671
    #ifdef USE_MKSETTINGS
672
    if( MKVersion.paramsetOK )
673
    {
674
       MenuCtrl_PushML2_P( ID_MKSETTINGS, MENU_SUB , &MK_Settings   , MKSETTINGS_de, MKSETTINGS_en    );
675
    }
676
    #endif
677
 
678
 
679
 
680
    #ifdef USE_MKDISPLAY
681
//    ACC_Display = false;
682
    MenuCtrl_PushML2_P( ID_MKDISPLAY  , MENU_ITEM, &MK_Display       , MKDISPLAY_de  , MKDISPLAY_en   );
683
    #endif
684
 
685
    #ifdef USE_ACCCALIBRATION
686
    if ((MKVersion_Cmp( MKVersion.FCVer,  2,9,'i')  == VERSION_EQUAL) || (MKVersion_Cmp( MKVersion.FCVer,  2,9,'i')  == VERSION_GREATER))
687
      {
688
        ACC_Display = true;
689
        MenuCtrl_PushML2_P( ID_MKACCCAL   , MENU_ITEM, &MK_Display       , MKACCCAL_de  , MKACCCAL_en   );
690
      }
691
    #endif
692
 
693
    #ifdef USE_MKDEBUGDATA
694
    MenuCtrl_PushML2_P( ID_MKDEBUGDATA, MENU_ITEM, &MK_DebugData     , MKDEBUGDATA_de, MKDEBUGDATA_en );
695
    #endif
696
 
697
    #ifdef USE_MAINMENU_SEPARATOR
698
    MenuCtrl_PushSeparator();   // MENUE TRENNLINIE
699
    #endif
700
 
701
    MenuCtrl_PushML2_P( ID_PKTSPEZIAL , MENU_SUB , &Menu_PKTSpezial  , PKTSPEZIAL_de , PKTSPEZIAL_en  );
702
    MenuCtrl_PushML2_P( ID_PKTCONNECT , MENU_SUB , &Menu_PKTConnect  , PKTCONNECT_de , PKTCONNECT_en  );
703
    MenuCtrl_PushML2_P( ID_PKTSETUP   , MENU_SUB , NOFUNC            , PKTSETUP_de   , PKTSETUP_en    );
704
    MenuCtrl_PushML2_P( ID_PKTINFO    , MENU_ITEM ,&PKT_Info         , PKTINFO_de    , PKTINFO_en     );
705
 
706
 
707
    #ifdef DEBUG_PARAMSET
708
    MenuCtrl_Push_P( 0  , MENU_ITEM, &paramsetDEBUG , DEBUG_PARAMSET_Text  );
709
    #endif
710
}
711
 
712
 
713
 
714
//--------------------------------------------------------------
715
//--------------------------------------------------------------
716
void _DefMenu_Main_NO( void )
717
{
2214 - 718
#ifdef USE_FOLLOWME_STEP2
2136 - 719
    MenuCtrl_PushML2_P( ID_DEBUG_GPS  , MENU_ITEM, &Debug_GPS     , PKTGPS_de     , PKTGPS_en      );
720
#endif
721
 
722
    MenuCtrl_PushML2_P( ID_SEARCHMK  , MENU_ITEM, NOFUNC          , SEARCHMK_de   , SEARCHMK_en    );
723
 
724
    #ifdef USE_MAINMENU_SEPARATOR
725
    MenuCtrl_PushSeparator();   // MENUE TRENNLINIE
726
    #endif
727
 
728
    #ifdef USE_OSDDATA
729
    MenuCtrl_PushML2_P( ID_OSDDATA   , MENU_SUB , &Menu_OSDData   , OSDDATA_de    , OSDDATA_en     );
730
    #endif
731
 
732
    #ifdef USE_MAINMENU_SEPARATOR
733
    MenuCtrl_PushSeparator();   // MENUE TRENNLINIE
734
    #endif
735
 
736
  //MenuCtrl_PushML2_P( ID_PKTSPEZIAL, MENU_SUB , &Menu_PKTSpezial, PKTSPEZIAL_de , PKTSPEZIAL_en  );
737
    MenuCtrl_PushML2_P( ID_PKTCONNECT, MENU_SUB , &Menu_PKTConnect, PKTCONNECT_de , PKTCONNECT_en  );
738
    MenuCtrl_PushML2_P( ID_PKTSETUP  , MENU_SUB , NOFUNC          , PKTSETUP_de   , PKTSETUP_en    );
739
    MenuCtrl_PushML2_P( ID_PKTINFO   , MENU_ITEM, &PKT_Info       , PKTINFO_de    , PKTINFO_en     );
740
 
741
 
742
    #ifdef DEBUG_PARAMSET
743
    MenuCtrl_Push_P( 0  , MENU_ITEM, &paramsetDEBUG , DEBUG_PARAMSET_Text  );
744
    #endif
745
}
746
 
747
 
748
 
749
//--------------------------------------------------------------
750
//--------------------------------------------------------------
751
void _ConfigMenu_Main( void )
752
{
753
    MenuCtrl_Create();
754
 
755
    MenuCtrl_SetTitle( titlemain );
756
    //MenuCtrl_SetShowBatt( true );
757
 
758
    //-----------
759
    // Tasten
760
    //-----------
761
    MenuCtrl_SetKey( KEY_ESC       , strGet(OFF), &PKT_SwitchOff );
762
 
763
    MenuCtrl_SetKey( KEY_ENTER_LONG , NOTEXT, &Menu_PKTConnect );
764
 
765
    if     ( MKVersion.isNC )   _DefMenu_Main_NC();
766
    else if( MKVersion.isFC )   _DefMenu_Main_FC();
767
    else                        _DefMenu_Main_NO();
768
}
769
 
770
 
771
 
772
//--------------------------------------------------------------
773
//--------------------------------------------------------------
774
void Menu_Main( void )
775
{
776
    uint8_t itemid;
777
    uint8_t UseBT = Config.UseBT;                       // merkt sich Bluetooth Einstellung falls durch Setup geaendert
778
 
779
    uart1_flush();
780
    ADC_Init();                                         // ADC für Lipomessung // MartinR hierher verschoben
781
    get_key_press(KEY_ALL);
782
 
783
    strncpy( &titlemain[5], PKTSWVersion, 12);          // baue Titel mit PKT-Versionsnummer zusammen
784
 
785
    MenuCtrl_ShowLevel( true );                         // zeige Menuelevel in der Titelzeile aller Menues
786
    _ConfigMenu_Main();                                 // initialisiert das Menu je nach Hardware (NO,FC,NC) verschieden
787
 
788
 
789
    //---------------
790
    // Control
791
    //---------------
792
    while( true )
793
    {
794
        MenuCtrl_Control( MENUCTRL_EVENT );             // wartet nicht auf Event, springt direkt zurueck (wegen evtl. BT-Aenderung)
795
 
796
        itemid = MenuCtrl_GetItemId();                  // welcher Menu-Punkt (ID)
797
 
798
        //--------------
799
        // ID_SEARCHMK
800
        //--------------
801
        if( itemid == ID_SEARCHMK )                     // neuer Hardware Modus?
802
        {
803
            if( searchMK(true) )                        // true = zeige MK_Info() an
804
            {
805
                MenuCtrl_Destroy();                     // Menu verwerfen...
806
                _ConfigMenu_Main();                     // ...und neues Menu initialisieren (je nach Hardware: NO,FC,NC)
807
            }
808
        }
809
 
810
        //--------------
811
        // ID_MKINFO
812
        //--------------
813
        if( itemid == ID_MKINFO )
814
        {
815
            if( MK_Info( 0, true) )                     // neuer Hardware Modus? (in MK_Info() kann man eine Neusuche des MK starten)  (true = mit Settings-Refresh)
816
            {
817
                MenuCtrl_Destroy();                     // Menu verwerfen...
818
                _ConfigMenu_Main();                     // ...und neues Menu initialisieren (je nach Hardware: NO,FC,NC)
819
            }
820
        }
821
 
822
        //--------------
823
        // ID_PKTSETUP
824
        //--------------
825
        if( itemid == ID_PKTSETUP )
826
        {
827
            Setup_MAIN();
828
        }
829
 
830
 
831
        //--------------
832
        // Bluetooth geaendert?
833
        //--------------
834
        if( UseBT != Config.UseBT )                     // falls sich im PKT-Setup die Einstellung bzgl. installiertem Bluetooth Modul
835
        {                                               //   geaendert hat werden ggf. andere Menuepunkte angezeigt (Tracking, FollowMe)
836
            MenuCtrl_Destroy();                         // Menu verwerfen...
837
            _ConfigMenu_Main();                         // ...und neues Menu initialisieren (je nach Hardware: NO,FC,NC)
838
            UseBT = Config.UseBT;
839
        }
840
    }
841
 
842
    MenuCtrl_Destroy();
843
}
844
 
845
 
846