Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 2202 → Rev 2203

/Transportables_Koptertool/PKT/branches/branch_FollowMeStep2/menu.c
0,0 → 1,848
/*****************************************************************************
* Copyright (C) 2008 Thomas Kaiser, thomas@ft-fanpage.de *
* Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net *
* Copyright (C) 2011 Christian "Cebra" Brandtner, brandtner@brandtner.net *
* Copyright (C) 2011 Harald Bongartz *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
* *
* *
* Credits to: *
* Holger Buss & Ingo Busker from mikrokopter.de for the MK project + SVN *
* http://www.mikrokopter.de *
* Gregor "killagreg" Stobrawa for his version of the MK code *
* Thomas Kaiser "thkais" for the original project. See *
* http://www.ft-fanpage.de/mikrokopter/ *
* http://forum.mikrokopter.de/topic-4061-1.html *
* Claas Anders "CaScAdE" Rathje for providing the font and his C-OSD code *
* http://www.mylifesucks.de/oss/c-osd/ *
* Harald Bongartz "HaraldB" for providing his Ideas and Code for usibility*
*****************************************************************************/
 
//############################################################################
//# HISTORY menu.c
//#
//# 03.08.2015 Cebra
//# - add: Menü _DefMenu_Main_NO erweitert für GPS Test , mit #define schaltbar
//#
//# 09.04.2015 Cebra
//# - add: Vorbereitung für ACC Kalibrartion aus dem Menü
//# #ifdef USE_ACCCALIBRATION
//#
//# 27.06.2014 OG
//# - chg: Menu_PKTSpezial() - Tracking etwas nach oben verschoben
//#
//# 26.06.2014 OG
//# - chg: Menu_PKTSpezial() - ergaenzt um Setup_FollowMe()
//#
//# 18.06.2014 OG
//# - chg: Menu_PKTSpezial() umorganisiert
//#
//# 14.06.2014 OG
//# - chg: _DefMenu_Main_NO() - "PKT Spezial" wird nicht mehr angezeigt wenn
//# kein Kopter gefunden wurde; aktuell sind dort nur Funktionen
//# enthalten die einen Kopter benoetigen - wenn sich das mal irgendwann
//# aendert muss man das anpassen
//#
//# 01.06.2014 OG
//# - chg: Menu_PKTSpezial() - Aufruf von Tracking und Followme ergaenzt
//# um Abfrage MKVersion.isNC
//# - chg: _ConfigMenu_Main() umgestellt auf MKVersion.isNC/isFC
//#
//# 14.05.2014 OG
//# - chg: Aufruf von gps() geaendert zu MK_Gps_Info()
//# - chg: include "gps/gps.h" geaendert zu "mk/mkgpsinfo.h"
//#
//# 13.05.2014 OG
//# - del: USE_MAINMENU_SEPARATOR (verschoben nach main.h)
//# - chg: Menu_Main() - del unused variable 'event'
//#
//# 11.05.2014 OG
//# - chg: Menu_PKTSpezial() umgestellt auf MenuCtrl_SetTitleFromParentItem()
//# -> die Menues 'erben' damit ihren Titel vom aufrufenden Menuepunkt
//#
//# 08.04.2014 OG
//# - chg: die Menuetrennlinien werden jetzt via define USE_MAINMENU_SEPARATOR
//# angezeigt (das define ist hier im Code) und sind erstmal wieder
//# abgeschaltet
//#
//# 08.04.2014 OG
//# - add: _DefMenu_Main_NC() - Menuetrennlinien hinzugefuegt
//# - add: _DefMenu_Main_FC(), _DefMenu_Main_NO() - Menuetrennlinien hinzugefuegt
//#
//# 01.04.2014 OG
//# - chg: PCB_WiFlyPatch umbenannt zu PCB_SV2RxTxPatch
//# - add: PKT-Connect(): "BLE Extender" (ext. Bluetooth 4 Low Energy Modul an SV2)
//# - fix: Menu_PKTConnect(): "WLAN Extender" nur sichtar wenn Config.UseWL gesetzt ist
//#
//# 30.03.2014 OG
//# - chg: Sprache Hollaendisch vollstaendig entfernt
//# - chg: MenuCtrl_PushML_P() umgestellt auf MenuCtrl_PushML2_P()
//#
//# 29.03.2014 OG
//# - chg: versch. Funktionen: del: MenuCtrl_SetShowBatt() wegen Aenderung
//# des Defaults auf true
//#
//# 24.03.2014 OG
//# - chg: "MK Info" vor "MK Settings" verschoben
//#
//# 28.02.2014 OG
//# - chg: ID_MKSETTINGS in den Menues fuer NC/FC weiter nach oben geschoben
//#
//# 27.02.2014 OG
//# - chg: Menuetexte fuer Menu_PKTConnect()
//#
//# 26.02.2014 OG
//# - chg: DEBUG_NEW_PARAMETERS umbenannt zu DEBUG_PARAMSET
//#
//# 18.02.2014 OG
//# - chg: Aufruf von MK_Parameters() ist jetzt MK_Settings() und geht auf
//# den Source mk/mksettings.c
//#
//# 17.02.2014 OG
//# - chg: aus "MK Parameters" ist "MK Settings" geworden! Entsprechende
//# defines zu ID's, USE und Sprachen haben sich geaendert
//# - chg: umbenannt: USE_MKPARAMETER -> USE_MKSETTINGS
//#
//# 12.02.2014 OG
//# - del: die includes zu den alten parameter... entfernt
//# - chg: auf mk/mkparameters.c/h umgestellt -> MK_Parameters()
//# - chg: auf 'MKVersion.paramsetOK' umgestellt
//#
//# 05.02.2014 OG
//# - add: DEBUG_NEW_PARAMETERS in Hauptmenues fuer Entwicklung
//#
//# 30.01.2014 OG
//# - add: Unterstuetzung fuer USE_BLUETOOTH
//#
//# 29.01.2014 OG
//# - chg: Umstrukturierung vom Hauptmenue
//# chg: "PKT Tools" -> "PKT Connect" (nur noch Connect-Funktionen drin)
//# add: "PKT Spezial" -> MK-Motortest und Spezial-Funktionen
//# wie Joystick, Tracking, FollowMe
//# - chg: call: display_debug() -> MK_DebugData()
//# - chg: call: display_data() -> MK_Display()
//# - chg: #include "debug.h" -> "mk/mkdebugdata.h"
//# - chg: #include "display.h" -> #include "mk/mkdisplay.h"
//# - add: #include "mk/mkbase.h"
//#
//# 25.01.2014 OG
//# - chg: MK-Display und MK-DebugData auch bei falscher FC-Revision wieder
//# aktiviert
//#
//# 07.01.2014 Cebra
//# - chg: Abfrage WrongFCVersion etwas verändert
//#
//# 06.01.2014 Cebra
//# - add: Alle Menüpunkte die FC versionabhängig werden bei falscher FC Version ausgeblendet
//#
//# 04.10.2013 Cebra
//# - add: Motortest ohne FC = I2C-Anschluss PKT, mit FC/NC Motortest über FC
//#
//# 26.06.2013 Cebra
//# - add: Menüpunkt Wlan Rangeextender
//#
//# 24.06 2013 OG
//# - chg: Menu_PKTTools(): Menuepunkte fuer PKT-SV2-Verbindungen werden
//# durch define USE_PKTTOOLS_SV2 (main.h) an-/ausgeschaltet
//# - chg: Menu_PKTTools(): Menuepunkte werden je nach aktiviertem Wi232 und
//# Bluetooth ein-/ausgeblendet
//# - chg: Menuetexte fuer ID_USB2SV2 und ID_BT2SV2 geaendert
//# - chg: defines fuer Menuetexte von PKT-Tools geaendert
//# - del: verschiedene Exec_* Funktionen
//#
//# 24.06 2013 Cebra
//# - add: Menuepunkt MKUSB in PKT-Tools
//#
//# 13.06.2013 OG
//# - chg: Fastconnect auf Menu_PKTTools() umgelegt
//# - chg: Menueeintraege von Menu_PKTTools() modifiziert und reduziert
//# - chg: in allen Hauptmenues ist PKT-Setup und PKT-Info drin
//#
//# 11.06.2013 OG
//# - chg: Code zu Menu_OSDData() ausgegliedert nach osddata.c
//#
//# 24.05.2013 OG
//# - chg: Aufrufe von MenuCtrl_Push() umgestellt auf MenuCtrl_PushML_P()
//#
//# 21.05.2013 OG
//# - chg: Menu_Main() umgestellt auf MENUCTRL_EVENT
//# - fix: Menu_Main() nach Menu-Redraw searchMK()
//# - chg: Menu_Setup() umbenannt zu Setup_MAIN()
//# - del: include utils/menuold.h
//#
//# 20.05.2013 OG
//# - chg: Layout Menutitel
//#
//# 19.05.2013 OG
//# - chg: Menuepunkte Tracking und FollowMe werden nur angezeigt wenn BTM222
//# installiert ist (Config.UseBT == true)
//# - add: Menu_PKTTools() (ehemals in tools.c)
//# - del: PC_Fast_Connect() verschoben nach pkt.c
//# - chg: main_menu() umbenannt zu Menu_Main()
//#
//# 19.05.2013 OG
//# - chg: Funktionen nach main.c verschoben
//# CheckUpdate(), Update_PKT(), PKT_Info(), PKT_SwitchOff()
//#
//# 18.05.2013 OG
//# - chg: PKT_Info() erweitert um optionale Module-Info (via USE_MODULEINFO)
//# und Credits chronoligisch umgedreht
//#
//# 18.05.2013 OG
//# - add: USE_JOYSTICK, USE_TRACKING, USE_OSDDATA, USE_MKPARAMETER, USE_MKDISPLAY
//# - chg: redundante Menue-Strings sind untereinander verpointert um Platz zu
//# sparen
//# - chg: Umstellung auf neue menuctrl.c und damit starke Strukturaenderung
//# Hinweis: autom. PKT-Update via Hauptmenue geht noch nicht - wird
//# wieder eingebaut (wenn m�glich direkt in menuctrl.c dann geht
//# das in allen Menues)
//# - del: Ausgliederung der alten Menue-Funktionen nach utils/menuold.c
//# inkl. not_possible()
//#
//# 16.05.2013 OG
//# - add: define USE_MKGPSINFO fuer gps()
//#
//# 05.05.2013 Cebra
//# - chg: Fehler im Menü bei nicht verfügbaren Funktionen
//#
//# 02.05.2013 OG
//# - chg: Menuetext: osddata_menuitems: "MK Fehlerliste" -> "MK Fehler"
//# - chg: Menuetext: "OSD Anzeige" wieder zurueck zu "OSD"
//#
//# 28.04.2013 OG
//# - chg: Show_Version() auf ScrollBox umgestellt
//# - chg: Menuetext "Debug Data" zu "MK Debug Data" (kam frueher zu Verwirrungen bei mir)
//# - chg: main_menu() bzgl. Menu_OSDDATA()
//# - add: Menu_OSDDATA() (aus ehemaligem osd/osd_tools.c)
//#
//# 21.04.2013 Cebra
//# - chg: OSD-Tools im Menue integriert
//#
//# 16.04.2013 Cebra
//# - chg: PROGMEM angepasst auf neue avr-libc und GCC, prog_char depreciated
//#
//# 14.04.2013 OG
//# - WIP: Anzeige "OSD-Daten" in param_menuitems_nc, param_menuitems_no
//#
//# 04.04.2013 Cebra
//# - chg:Texttuning
//# not_possible, für Menüpunkte nicht nicht wählbar sind
//#
//# 03.04.2013 OG
//# - fix: Anzeigefehler wenn (hardware == NC) und nicht gesetzt define 'USE_MKDEBUGDATA' (bzw. 'analognames')
//# - chg: Layout von Anzeige wenn USE_MKDEBUGDATA nicht verfuegbar (jetzt Invers)
//# - chg: define 'analognames' zu define 'USE_MKDEBUGDATA'
//#
//# 30.03.2013 CB
//# - add: automatischer Start der PKT-Updatefunktion im Mainmenüe für das Updatetool
//#
//# 28.03.2013 CB
//# - chg: Hinweis wenn Debug Data nicht möglich ist
//#
//# 10.03.2013 Cebra
//# - add: menu_select, gemeinsame Routine für alle Setupmenüs
//#
//# 27.03.2013 Cebra
//# - chg: Fehler bei der Menüsteuerung behoben
//############################################################################
 
 
#include "cpu.h"
#include <avr/io.h>
#include <inttypes.h>
#include <stdlib.h>
#include <avr/pgmspace.h>
#include <avr/wdt.h>
#include <util/delay.h>
#include <string.h>
 
#include "main.h"
#include "lcd/lcd.h"
#include "menu.h"
#include "mk/mkdisplay.h"
#include "mk/mkdebugdata.h"
#include "timer/timer.h"
#include "osd/osd.h"
#include "osd/osddata.h"
#include "motortest/motortest.h"
#include "mk/mkgpsinfo.h"
#include "eeprom/eeprom.h"
#include "setup/setup.h"
#include "uart/uart1.h"
#include "mk-data-structs.h"
#include "wi232/Wi232.h"
 
#include "connect.h"
#include "lipo/lipo.h"
#include "messages.h"
#include "bluetooth/bluetooth.h"
#include "followme/followme.h"
#include "tracking/ng_servo.h"
#include "tracking/tracking.h"
#include "stick/stick.h"
#include "utils/menuctrl.h"
#include "pkt/pkt.h"
#include "mk/mkbase.h"
#include "mksettings/paramset.h"
#include "mksettings/mksettings.h"
 
 
//############################################################################
 
char titlemain[] = "PKT v "; // buffer fuer PKT-Versionsinfo
//123456789012345678901
 
 
 
// nur fuer Entwicklung...
static const char DEBUG_PARAMSET_Text[] PROGMEM = "DEBUG PARAMSET";
 
//############################################################################
 
//-----------------------
// main_menu
//-----------------------
#define ID_OSD 1
#define ID_OSDDATA 2
#define ID_MKDISPLAY 3
#define ID_MKSETTINGS 4
#define ID_MKDEBUGDATA 5
#define ID_MKGPSINFO 6
#define ID_SEARCHMK 7
#define ID_PKTCONNECT 8
#define ID_PKTSETUP 9
#define ID_PKTINFO 10
#define ID_PKTSPEZIAL 11
#define ID_MKINFO 12
#define ID_MKACCCAL 13
 
#define ID_DEBUG_GPS 14
 
 
static const char SEARCHMK_de[] PROGMEM = "Suche Mikrokopter";
static const char SEARCHMK_en[] PROGMEM = "search Kopter";
 
static const char OSD_de[] PROGMEM = "OSD";
#define OSD_en OSD_de
 
static const char OSDDATA_de[] PROGMEM = "OSD Daten";
static const char OSDDATA_en[] PROGMEM = "OSD Data";
 
static const char MKINFO_de[] PROGMEM = "MK Info";
#define MKINFO_en MKINFO_de
 
static const char MKDISPLAY_de[] PROGMEM = "MK Display";
#define MKDISPLAY_en MKDISPLAY_de
 
static const char MKACCCAL_de[] PROGMEM = "MK ACC Kalibr.";
static const char MKACCCAL_en[] PROGMEM = "MK ACC Calibr.";
 
static const char MKSETTINGS_de[] PROGMEM = "MK Settings";
#define MKSETTINGS_en MKSETTINGS_de
 
static const char MKDEBUGDATA_de[] PROGMEM = "MK Daten";
static const char MKDEBUGDATA_en[] PROGMEM = "MK Data";
 
static const char MKGPSINFO_de[] PROGMEM = "MK GPS Info";
#define MKGPSINFO_en MKGPSINFO_de
 
static const char PKTCONNECT_de[] PROGMEM = "PKT Connect";
#define PKTCONNECT_en PKTCONNECT_de
 
static const char PKTSPEZIAL_de[] PROGMEM = "PKT Spezial";
static const char PKTSPEZIAL_en[] PROGMEM = "PKT Special";
 
static const char PKTSETUP_de[] PROGMEM = "PKT Setup";
#define PKTSETUP_en PKTSETUP_de
 
static const char PKTINFO_de[] PROGMEM = "PKT Info";
#define PKTINFO_en PKTINFO_de
 
 
#ifdef DEBUG_GPS
static const char PKTGPS_de[] PROGMEM = "PKT GPS Debug";
#define PKTGPS_en PKTGPS_de
#endif
 
 
//############################################################################
 
//-----------------------------
// Menu_PKTSpezial()
//-----------------------------
#define ID_BLTESTER 60
#define ID_TRACKING 61
#define ID_JOYSTICK 62
#define ID_FOLLOWME 63
#define ID_FOLLOWMESETUP 64
 
static const char BLTESTER_de[] PROGMEM = "MK Motortest";
#define BLTESTER_en BLTESTER_de
 
static const char TRACKING_de[] PROGMEM = "Tracking";
#define TRACKING_en TRACKING_de
 
static const char JOYSTICK_de[] PROGMEM = "Joystick";
#define JOYSTICK_en JOYSTICK_de
 
static const char FOLLOWME_de[] PROGMEM = "Follow Me";
#define FOLLOWME_en FOLLOWME_de
 
static const char FOLLOWMESETUP_de[] PROGMEM = "Follow Me Setup";
#define FOLLOWMESETUP_en FOLLOWMESETUP_de
 
//############################################################################
 
//-----------------------------
// Menu_PKTConnect()
//-----------------------------
#define ID_BT2WI232 40
#define ID_USB2WI232 41
#define ID_USB2SV2 42
#define ID_BT2SV2 43
#define ID_WIFLY2WI232 44
#define ID_BLE2WI232 45
 
 
 
static const char BT2WI232_de[] PROGMEM = "BT Extender";
#define BT2WI232_en BT2WI232_de
 
static const char BLE2WI232_de[] PROGMEM = "BLE Extender";
#define BLE2WI232_en BLE2WI232_de
 
static const char WIFLY2WI232_de[] PROGMEM = "WLAN Extender";
#define WIFLY2WI232_en WIFLY2WI232_de
 
static const char USB2WI232_de[] PROGMEM = "USB -> Wi232";
#define USB2WI232_en USB2WI232_de
 
#ifdef USE_PKTTOOLS_SV2
static const char USB2SV2_de[] PROGMEM = "USB -> SV2";
#define USB2SV2_en USB2SV2_de
#endif
 
#ifdef USE_PKTTOOLS_SV2
static const char BT2SV2_de[] PROGMEM = "BT -> SV2";
#define BT2SV2_en BT2SV2_de
#endif
 
 
//#############################################################################################
//# Hilfsfunktionen & Verschiedenes
//#############################################################################################
 
 
//--------------------------------------------------------------
// wird von Menu_PKTTools() verwendet
//--------------------------------------------------------------
void Exec_BLTESTER(void)
{
if(hardware == NO) motor_test( I2C_Mode );
if(hardware == NC) motor_test( FC_Mode );
if(hardware == FC) motor_test( FC_Mode );
 
}
 
 
//#############################################################################################
//# Menu: Spezial
//#############################################################################################
 
 
 
//--------------------------------------------------------------
// Menue fuer 'PKTSpezial'
//--------------------------------------------------------------
void Menu_PKTSpezial( void )
{
//---------------
// Create
//---------------
MenuCtrl_Create();
 
//---------------
// Einstellungen
//---------------
MenuCtrl_SetTitleFromParentItem(); // "PKT Spezial"
//MenuCtrl_SetTitle_P( PSTR("PKT Spezial") );
//MenuCtrl_SetShowBatt( true );
 
//---------------
// Menuitems: PKTSpezial
//---------------
#ifdef USE_FOLLOWME
if( Config.UseBT && MKVersion.isNC )
{
MenuCtrl_PushML2_P( ID_FOLLOWME , MENU_ITEM, &FollowMe , FOLLOWME_de , FOLLOWME_en );
MenuCtrl_PushML2_P( ID_FOLLOWMESETUP, MENU_ITEM, &Setup_FollowMe, FOLLOWMESETUP_de, FOLLOWMESETUP_en );
}
#endif
 
 
#ifdef USE_TRACKING
if( Config.UseBT && MKVersion.isNC )
{
MenuCtrl_PushML2_P( ID_TRACKING , MENU_ITEM, &PKT_tracking , TRACKING_de , TRACKING_en );
}
#endif
 
 
#ifdef USE_JOYSTICK
MenuCtrl_PushML2_P( ID_JOYSTICK , MENU_ITEM, &joystick , JOYSTICK_de , JOYSTICK_en );
#endif
 
 
MenuCtrl_PushSeparator(); // MENUE TRENNLINIE
 
MenuCtrl_PushML2_P( ID_BLTESTER , MENU_ITEM, &Exec_BLTESTER , BLTESTER_de , BLTESTER_en );
 
// {"Servo Tester ","servo test ","Servo Tester "},
// if((val+offset) == 2 ) servo_test();
 
//---------------
// Control
//---------------
MenuCtrl_Control( MENUCTRL_EVENT );
 
//---------------
// Destroy
//---------------
MenuCtrl_Destroy();
}
 
 
//#############################################################################################
//# Menu: PKT-Connect
//#############################################################################################
 
//--------------------------------------------------------------
// Menue fuer; PKT-Connect
//
// verbindet das PKT mit anderen Devices wie Tablet usw.
//--------------------------------------------------------------
void Menu_PKTConnect( void )
{
//---------------
// Create
//---------------
MenuCtrl_Create();
 
//---------------
// Einstellungen
//---------------
MenuCtrl_SetTitle_P( PSTR("PKT Connect") ); // kann nicht auf MenuCtrl_SetTitleFromParentItem() umgestellt
// werden da PKT-Connect auch durch einen Hot-Key aufgerufen
// werden kann
//MenuCtrl_SetCycle( false );
//MenuCtrl_SetShowBatt( true );
//MenuCtrl_SetBeep( true );
 
//---------------
// Menuitems
//---------------
#ifdef USE_BLUETOOTH
if( Config.UseBT && Config.UseWi )
MenuCtrl_PushML2_P( ID_BT2WI232 , MENU_ITEM, &Port_BT2Wi , BT2WI232_de , BT2WI232_en );
#endif
 
#ifdef USE_SV2MODULE_BLE
if( PCB_SV2RxTxPatch && Config.UseBLE )
MenuCtrl_PushML2_P( ID_BLE2WI232 , MENU_ITEM, &Port_BLE2Wi , BLE2WI232_de , BLE2WI232_en );
#endif
 
if( PCB_SV2RxTxPatch && Config.UseWL )
MenuCtrl_PushML2_P( ID_WIFLY2WI232 , MENU_ITEM, &Port_WiFly2Wi , WIFLY2WI232_de , WIFLY2WI232_en );
 
if( Config.UseWi )
MenuCtrl_PushML2_P( ID_USB2WI232 , MENU_ITEM, &Port_USB2Wi , USB2WI232_de , USB2WI232_en );
 
#ifdef USE_PKTTOOLS_SV2 // am PKT-SV2 liegen +5 Volt an...
MenuCtrl_PushML2_P( ID_USB2SV2 , MENU_ITEM, &Port_USB2FC , USB2SV2_de , USB2SV2_en );
 
#ifdef USE_BLUETOOTH
if( Config.UseBT )
MenuCtrl_PushML2_P( ID_BT2SV2 , MENU_ITEM, &Port_BT2FC , BT2SV2_de , BT2SV2_en );
#endif
 
#endif // end: #ifdef USE_PKTTOOLS_SV2
 
//---------------
// Control
//---------------
MenuCtrl_Control( MENUCTRL_EVENT );
 
//---------------
// Destroy
//---------------
MenuCtrl_Destroy();
}
 
 
//#############################################################################################
//# Menu: Menu_Main
//#############################################################################################
 
//--------------------------------------------------------------
//--------------------------------------------------------------
void _DefMenu_Main_NC( void )
{
 
 
MenuCtrl_PushML2_P( ID_OSD , MENU_ITEM, &osd , OSD_de , OSD_en );
 
#ifdef USE_OSDDATA
MenuCtrl_PushML2_P( ID_OSDDATA , MENU_SUB , &Menu_OSDData , OSDDATA_de , OSDDATA_en );
#endif
 
#ifdef USE_MAINMENU_SEPARATOR
MenuCtrl_PushSeparator(); // MENUE TRENNLINIE
#endif
 
MenuCtrl_PushML2_P( ID_MKINFO , MENU_ITEM, NOFUNC , MKINFO_de , MKINFO_en );
 
#ifdef USE_MKSETTINGS
if( MKVersion.paramsetOK )
{
MenuCtrl_PushML2_P( ID_MKSETTINGS, MENU_SUB , &MK_Settings , MKSETTINGS_de, MKSETTINGS_en );
}
#endif
 
#ifdef USE_MKDISPLAY
// ACC_Display = false;
MenuCtrl_PushML2_P( ID_MKDISPLAY , MENU_ITEM, &MK_Display , MKDISPLAY_de , MKDISPLAY_en );
#endif
 
#ifdef USE_ACCCALIBRATION
if ((MKVersion_Cmp( MKVersion.FCVer, 2,9,'i') == VERSION_EQUAL) || (MKVersion_Cmp( MKVersion.FCVer, 2,9,'i') == VERSION_GREATER))
{
ACC_Display = true;
MenuCtrl_PushML2_P( ID_MKACCCAL , MENU_ITEM, &MK_Display , MKACCCAL_de , MKACCCAL_en );
}
#endif
 
#ifdef USE_MKDEBUGDATA
MenuCtrl_PushML2_P( ID_MKDEBUGDATA, MENU_ITEM, &MK_DebugData , MKDEBUGDATA_de, MKDEBUGDATA_en );
#endif
 
 
#ifdef USE_MKGPSINFO
MenuCtrl_PushML2_P( ID_MKGPSINFO , MENU_ITEM, &MK_Gps_Info , MKGPSINFO_de , MKGPSINFO_en );
#endif
 
#ifdef USE_MAINMENU_SEPARATOR
MenuCtrl_PushSeparator(); // MENUE TRENNLINIE
#endif
 
MenuCtrl_PushML2_P( ID_PKTSPEZIAL , MENU_SUB , &Menu_PKTSpezial , PKTSPEZIAL_de , PKTSPEZIAL_en );
MenuCtrl_PushML2_P( ID_PKTCONNECT , MENU_SUB , &Menu_PKTConnect , PKTCONNECT_de , PKTCONNECT_en );
MenuCtrl_PushML2_P( ID_PKTSETUP , MENU_SUB , NOFUNC , PKTSETUP_de , PKTSETUP_en );
MenuCtrl_PushML2_P( ID_PKTINFO , MENU_ITEM ,&PKT_Info , PKTINFO_de , PKTINFO_en );
 
 
#ifdef DEBUG_PARAMSET
MenuCtrl_Push_P( 0 , MENU_ITEM, &paramsetDEBUG , DEBUG_PARAMSET_Text );
#endif
}
 
 
 
//--------------------------------------------------------------
//--------------------------------------------------------------
void _DefMenu_Main_FC( void )
{
MenuCtrl_PushML2_P( ID_MKINFO , MENU_ITEM, NOFUNC , MKINFO_de , MKINFO_en );
 
#ifdef USE_MKSETTINGS
if( MKVersion.paramsetOK )
{
MenuCtrl_PushML2_P( ID_MKSETTINGS, MENU_SUB , &MK_Settings , MKSETTINGS_de, MKSETTINGS_en );
}
#endif
 
 
 
#ifdef USE_MKDISPLAY
// ACC_Display = false;
MenuCtrl_PushML2_P( ID_MKDISPLAY , MENU_ITEM, &MK_Display , MKDISPLAY_de , MKDISPLAY_en );
#endif
 
#ifdef USE_ACCCALIBRATION
if ((MKVersion_Cmp( MKVersion.FCVer, 2,9,'i') == VERSION_EQUAL) || (MKVersion_Cmp( MKVersion.FCVer, 2,9,'i') == VERSION_GREATER))
{
ACC_Display = true;
MenuCtrl_PushML2_P( ID_MKACCCAL , MENU_ITEM, &MK_Display , MKACCCAL_de , MKACCCAL_en );
}
#endif
 
#ifdef USE_MKDEBUGDATA
MenuCtrl_PushML2_P( ID_MKDEBUGDATA, MENU_ITEM, &MK_DebugData , MKDEBUGDATA_de, MKDEBUGDATA_en );
#endif
 
#ifdef USE_MAINMENU_SEPARATOR
MenuCtrl_PushSeparator(); // MENUE TRENNLINIE
#endif
 
MenuCtrl_PushML2_P( ID_PKTSPEZIAL , MENU_SUB , &Menu_PKTSpezial , PKTSPEZIAL_de , PKTSPEZIAL_en );
MenuCtrl_PushML2_P( ID_PKTCONNECT , MENU_SUB , &Menu_PKTConnect , PKTCONNECT_de , PKTCONNECT_en );
MenuCtrl_PushML2_P( ID_PKTSETUP , MENU_SUB , NOFUNC , PKTSETUP_de , PKTSETUP_en );
MenuCtrl_PushML2_P( ID_PKTINFO , MENU_ITEM ,&PKT_Info , PKTINFO_de , PKTINFO_en );
 
 
#ifdef DEBUG_PARAMSET
MenuCtrl_Push_P( 0 , MENU_ITEM, &paramsetDEBUG , DEBUG_PARAMSET_Text );
#endif
}
 
 
 
//--------------------------------------------------------------
//--------------------------------------------------------------
void _DefMenu_Main_NO( void )
{
#ifdef USE_FOLLOWME
#ifdef DEBUG_GPS
MenuCtrl_PushML2_P( ID_DEBUG_GPS , MENU_ITEM, &Debug_GPS , PKTGPS_de , PKTGPS_en );
 
 
#endif
#endif
 
MenuCtrl_PushML2_P( ID_SEARCHMK , MENU_ITEM, NOFUNC , SEARCHMK_de , SEARCHMK_en );
 
#ifdef USE_MAINMENU_SEPARATOR
MenuCtrl_PushSeparator(); // MENUE TRENNLINIE
#endif
 
#ifdef USE_OSDDATA
MenuCtrl_PushML2_P( ID_OSDDATA , MENU_SUB , &Menu_OSDData , OSDDATA_de , OSDDATA_en );
#endif
 
#ifdef USE_MAINMENU_SEPARATOR
MenuCtrl_PushSeparator(); // MENUE TRENNLINIE
#endif
 
//MenuCtrl_PushML2_P( ID_PKTSPEZIAL, MENU_SUB , &Menu_PKTSpezial, PKTSPEZIAL_de , PKTSPEZIAL_en );
MenuCtrl_PushML2_P( ID_PKTCONNECT, MENU_SUB , &Menu_PKTConnect, PKTCONNECT_de , PKTCONNECT_en );
MenuCtrl_PushML2_P( ID_PKTSETUP , MENU_SUB , NOFUNC , PKTSETUP_de , PKTSETUP_en );
MenuCtrl_PushML2_P( ID_PKTINFO , MENU_ITEM, &PKT_Info , PKTINFO_de , PKTINFO_en );
 
 
#ifdef DEBUG_PARAMSET
MenuCtrl_Push_P( 0 , MENU_ITEM, &paramsetDEBUG , DEBUG_PARAMSET_Text );
#endif
}
 
 
 
//--------------------------------------------------------------
//--------------------------------------------------------------
void _ConfigMenu_Main( void )
{
MenuCtrl_Create();
 
MenuCtrl_SetTitle( titlemain );
//MenuCtrl_SetShowBatt( true );
 
//-----------
// Tasten
//-----------
MenuCtrl_SetKey( KEY_ESC , strGet(OFF), &PKT_SwitchOff );
 
MenuCtrl_SetKey( KEY_ENTER_LONG , NOTEXT, &Menu_PKTConnect );
 
if ( MKVersion.isNC ) _DefMenu_Main_NC();
else if( MKVersion.isFC ) _DefMenu_Main_FC();
else _DefMenu_Main_NO();
}
 
 
 
//--------------------------------------------------------------
//--------------------------------------------------------------
void Menu_Main( void )
{
uint8_t itemid;
uint8_t UseBT = Config.UseBT; // merkt sich Bluetooth Einstellung falls durch Setup geaendert
 
uart1_flush();
ADC_Init(); // ADC für Lipomessung // MartinR hierher verschoben
get_key_press(KEY_ALL);
 
strncpy( &titlemain[5], PKTSWVersion, 12); // baue Titel mit PKT-Versionsnummer zusammen
 
MenuCtrl_ShowLevel( true ); // zeige Menuelevel in der Titelzeile aller Menues
_ConfigMenu_Main(); // initialisiert das Menu je nach Hardware (NO,FC,NC) verschieden
 
 
//---------------
// Control
//---------------
while( true )
{
MenuCtrl_Control( MENUCTRL_EVENT ); // wartet nicht auf Event, springt direkt zurueck (wegen evtl. BT-Aenderung)
 
itemid = MenuCtrl_GetItemId(); // welcher Menu-Punkt (ID)
 
//--------------
// ID_SEARCHMK
//--------------
if( itemid == ID_SEARCHMK ) // neuer Hardware Modus?
{
if( searchMK(true) ) // true = zeige MK_Info() an
{
MenuCtrl_Destroy(); // Menu verwerfen...
_ConfigMenu_Main(); // ...und neues Menu initialisieren (je nach Hardware: NO,FC,NC)
}
}
 
//--------------
// ID_MKINFO
//--------------
if( itemid == ID_MKINFO )
{
if( MK_Info( 0, true) ) // neuer Hardware Modus? (in MK_Info() kann man eine Neusuche des MK starten) (true = mit Settings-Refresh)
{
MenuCtrl_Destroy(); // Menu verwerfen...
_ConfigMenu_Main(); // ...und neues Menu initialisieren (je nach Hardware: NO,FC,NC)
}
}
 
//--------------
// ID_PKTSETUP
//--------------
if( itemid == ID_PKTSETUP )
{
Setup_MAIN();
}
 
 
//--------------
// Bluetooth geaendert?
//--------------
if( UseBT != Config.UseBT ) // falls sich im PKT-Setup die Einstellung bzgl. installiertem Bluetooth Modul
{ // geaendert hat werden ggf. andere Menuepunkte angezeigt (Tracking, FollowMe)
MenuCtrl_Destroy(); // Menu verwerfen...
_ConfigMenu_Main(); // ...und neues Menu initialisieren (je nach Hardware: NO,FC,NC)
UseBT = Config.UseBT;
}
}
 
MenuCtrl_Destroy();
}
 
 
 
Property changes:
Added: svn:mime-type
+text/plain
\ No newline at end of property