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, ¶msetDEBUG , 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, ¶msetDEBUG , 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, ¶msetDEBUG , 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 |