Details | 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 | |||
375 | #ifdef DEBUG_GPS |
||
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, ¶msetDEBUG , 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, ¶msetDEBUG , DEBUG_PARAMSET_Text ); |
||
707 | #endif |
||
708 | } |
||
709 | |||
710 | |||
711 | |||
712 | //-------------------------------------------------------------- |
||
713 | //-------------------------------------------------------------- |
||
714 | void _DefMenu_Main_NO( void ) |
||
715 | { |
||
716 | #ifdef USE_FOLLOWME |
||
717 | #ifdef DEBUG_GPS |
||
718 | MenuCtrl_PushML2_P( ID_DEBUG_GPS , MENU_ITEM, &Debug_GPS , PKTGPS_de , PKTGPS_en ); |
||
719 | |||
720 | |||
721 | #endif |
||
722 | #endif |
||
723 | |||
724 | MenuCtrl_PushML2_P( ID_SEARCHMK , MENU_ITEM, NOFUNC , SEARCHMK_de , SEARCHMK_en ); |
||
725 | |||
726 | #ifdef USE_MAINMENU_SEPARATOR |
||
727 | MenuCtrl_PushSeparator(); // MENUE TRENNLINIE |
||
728 | #endif |
||
729 | |||
730 | #ifdef USE_OSDDATA |
||
731 | MenuCtrl_PushML2_P( ID_OSDDATA , MENU_SUB , &Menu_OSDData , OSDDATA_de , OSDDATA_en ); |
||
732 | #endif |
||
733 | |||
734 | #ifdef USE_MAINMENU_SEPARATOR |
||
735 | MenuCtrl_PushSeparator(); // MENUE TRENNLINIE |
||
736 | #endif |
||
737 | |||
738 | //MenuCtrl_PushML2_P( ID_PKTSPEZIAL, MENU_SUB , &Menu_PKTSpezial, PKTSPEZIAL_de , PKTSPEZIAL_en ); |
||
739 | MenuCtrl_PushML2_P( ID_PKTCONNECT, MENU_SUB , &Menu_PKTConnect, PKTCONNECT_de , PKTCONNECT_en ); |
||
740 | MenuCtrl_PushML2_P( ID_PKTSETUP , MENU_SUB , NOFUNC , PKTSETUP_de , PKTSETUP_en ); |
||
741 | MenuCtrl_PushML2_P( ID_PKTINFO , MENU_ITEM, &PKT_Info , PKTINFO_de , PKTINFO_en ); |
||
742 | |||
743 | |||
744 | #ifdef DEBUG_PARAMSET |
||
745 | MenuCtrl_Push_P( 0 , MENU_ITEM, ¶msetDEBUG , DEBUG_PARAMSET_Text ); |
||
746 | #endif |
||
747 | } |
||
748 | |||
749 | |||
750 | |||
751 | //-------------------------------------------------------------- |
||
752 | //-------------------------------------------------------------- |
||
753 | void _ConfigMenu_Main( void ) |
||
754 | { |
||
755 | MenuCtrl_Create(); |
||
756 | |||
757 | MenuCtrl_SetTitle( titlemain ); |
||
758 | //MenuCtrl_SetShowBatt( true ); |
||
759 | |||
760 | //----------- |
||
761 | // Tasten |
||
762 | //----------- |
||
763 | MenuCtrl_SetKey( KEY_ESC , strGet(OFF), &PKT_SwitchOff ); |
||
764 | |||
765 | MenuCtrl_SetKey( KEY_ENTER_LONG , NOTEXT, &Menu_PKTConnect ); |
||
766 | |||
767 | if ( MKVersion.isNC ) _DefMenu_Main_NC(); |
||
768 | else if( MKVersion.isFC ) _DefMenu_Main_FC(); |
||
769 | else _DefMenu_Main_NO(); |
||
770 | } |
||
771 | |||
772 | |||
773 | |||
774 | //-------------------------------------------------------------- |
||
775 | //-------------------------------------------------------------- |
||
776 | void Menu_Main( void ) |
||
777 | { |
||
778 | uint8_t itemid; |
||
779 | uint8_t UseBT = Config.UseBT; // merkt sich Bluetooth Einstellung falls durch Setup geaendert |
||
780 | |||
781 | uart1_flush(); |
||
782 | ADC_Init(); // ADC für Lipomessung // MartinR hierher verschoben |
||
783 | get_key_press(KEY_ALL); |
||
784 | |||
785 | strncpy( &titlemain[5], PKTSWVersion, 12); // baue Titel mit PKT-Versionsnummer zusammen |
||
786 | |||
787 | MenuCtrl_ShowLevel( true ); // zeige Menuelevel in der Titelzeile aller Menues |
||
788 | _ConfigMenu_Main(); // initialisiert das Menu je nach Hardware (NO,FC,NC) verschieden |
||
789 | |||
790 | |||
791 | //--------------- |
||
792 | // Control |
||
793 | //--------------- |
||
794 | while( true ) |
||
795 | { |
||
796 | MenuCtrl_Control( MENUCTRL_EVENT ); // wartet nicht auf Event, springt direkt zurueck (wegen evtl. BT-Aenderung) |
||
797 | |||
798 | itemid = MenuCtrl_GetItemId(); // welcher Menu-Punkt (ID) |
||
799 | |||
800 | //-------------- |
||
801 | // ID_SEARCHMK |
||
802 | //-------------- |
||
803 | if( itemid == ID_SEARCHMK ) // neuer Hardware Modus? |
||
804 | { |
||
805 | if( searchMK(true) ) // true = zeige MK_Info() an |
||
806 | { |
||
807 | MenuCtrl_Destroy(); // Menu verwerfen... |
||
808 | _ConfigMenu_Main(); // ...und neues Menu initialisieren (je nach Hardware: NO,FC,NC) |
||
809 | } |
||
810 | } |
||
811 | |||
812 | //-------------- |
||
813 | // ID_MKINFO |
||
814 | //-------------- |
||
815 | if( itemid == ID_MKINFO ) |
||
816 | { |
||
817 | if( MK_Info( 0, true) ) // neuer Hardware Modus? (in MK_Info() kann man eine Neusuche des MK starten) (true = mit Settings-Refresh) |
||
818 | { |
||
819 | MenuCtrl_Destroy(); // Menu verwerfen... |
||
820 | _ConfigMenu_Main(); // ...und neues Menu initialisieren (je nach Hardware: NO,FC,NC) |
||
821 | } |
||
822 | } |
||
823 | |||
824 | //-------------- |
||
825 | // ID_PKTSETUP |
||
826 | //-------------- |
||
827 | if( itemid == ID_PKTSETUP ) |
||
828 | { |
||
829 | Setup_MAIN(); |
||
830 | } |
||
831 | |||
832 | |||
833 | //-------------- |
||
834 | // Bluetooth geaendert? |
||
835 | //-------------- |
||
836 | if( UseBT != Config.UseBT ) // falls sich im PKT-Setup die Einstellung bzgl. installiertem Bluetooth Modul |
||
837 | { // geaendert hat werden ggf. andere Menuepunkte angezeigt (Tracking, FollowMe) |
||
838 | MenuCtrl_Destroy(); // Menu verwerfen... |
||
839 | _ConfigMenu_Main(); // ...und neues Menu initialisieren (je nach Hardware: NO,FC,NC) |
||
840 | UseBT = Config.UseBT; |
||
841 | } |
||
842 | } |
||
843 | |||
844 | MenuCtrl_Destroy(); |
||
845 | } |
||
846 | |||
847 | |||
848 |