Subversion Repositories Projects

Rev

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