0,0 → 1,2650 |
/***************************************************************************** |
* 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 setup.c |
//# |
//# |
//# 03.08.2015 CB |
//# - add: FollowMe Setup um Distance und Azimuth erweitert |
//# |
//# 27.06.2014 OG |
//# - chg: Setup_MAIN() - Reihenfolge von GPS-Maus/FollowMe/Tracking geaendert |
//# |
//# 25.06.2014 OG |
//# - chg: Text von GPS_SHOWDEV |
//# - chg: Setup_FollowMe() - deaktiviert/auskommentiert: FME_REFRESH |
//# - chg: Setup_GPSMouse() - deaktiviert/auskommentiert: GPS_TYPE, GPS_ACTIVE |
//# |
//# 24.06.2014 OG |
//# - chg: Setup_GPSMouse() angepasst auf geaendertes GPSMouse_ShowData() |
//# |
//# 22.06.2014 OG |
//# - del: verschiedene weitere Modul-Variablen entfernt weil nicht benoetigt |
//# - del: Variable CheckGPS |
//# - del: BT_ShowGPSData() - ist jetzt als GPSMouse_ShowData() in gps/gpsmouse.c |
//# - chg: BT_ShowGPSData() - Parameter und Rueckgabe |
//# - del: BT_ShowGPSData_OLD |
//# |
//# 21.06.2014 CB |
//# - chg: BT_SearchDevices - Timeoutanzeige bei Devicesuche |
//# |
//# 16.06.2014 OG |
//# - chg: BT_ShowGPSData() - neues Layout und Anzeige fuer "XCnt" (=RX-Count) |
//# hinzugefuegt; XCnt zeigt die Anzahl empfangener GPS-Datenpakete an |
//# und ist ein Indikator wie schnell die BT-GPS Maus Daten sendet |
//# |
//# 13.06.2014 OG |
//# - chg: Setup_PKTGeneric() - neue Einstellung "PKT aus nach" |
//# - del: ChangeWi_SV2() |
//# |
//# 12.06.2014 OG |
//# - del: Reset_EEprom() - ist jetzt als PKT_Reset_EEprom() in pkt.c |
//# |
//# 11.06.2014 OG |
//# - fix: Edit_generic() funktioniert jetzt auch, wenn kein vorgelagertes |
//# Menue vorhanden ist (ggf. muss das Label angepasst werden) |
//# |
//# 10.06.2014 OG |
//# - chg: verschiedene Funktionen umgestellt auf Wi232_Initalize() |
//# |
//# 08.06.2014 OG |
//# - add: Setup_MKConnection() - hier ist auch das setzen der Baudrate Wi232/BT |
//# hin verschoben worden (war vorher im Wi.232 Bereicch) |
//# |
//# 06.06.2014 OG |
//# - chg: Setup_WI232_MenuCreate()... Eintraege geloescht... |
//# |
//# 04.06.2014 OG |
//# - chg: Setup_PKTGeneric() eine Menue-Trennlinie hinter Sommerzeit eingefuegt |
//# |
//# 01.06.2014 OG |
//# - chg: Edit_LED_Form() Parameter 'Text' entfernt und auf strGetOSDOLD() |
//# umgestellt |
//# - add: include "../osd/osdold_messages.h" |
//# |
//# 31.05.2014 OG |
//# - chg: Edit_String() - Parameter 'Text' entfernt; angepasst auf neue |
//# Titelzeile; PKT_CtrlHook integriert; PKT Lipo-Anzeige; |
//# auf 'redraw' umgestellt |
//# |
//# 30.05.2014 OG |
//# - chg: Edit_LipoOffset() - umgeschrieben auf neues Layout, Code optimiert, |
//# Increment jetzt +/-50 (statt vorher 20), Offset bis 15000 (statt 10000) |
//# - chg: Edit_LipoOffset() - keine Parameter mehr, keine Rueckgabe |
//# |
//# 29.05.2014 OG |
//# - chg: Setup_OSD() umgestellt auf Menuetexte statt strGet() mit Textaenderung |
//# |
//# 28.05.2014 OG |
//# - chg: Setup's auf das neue Edit_generic() umgestellt |
//# - chg: Edit_generic() - geaenderte Aufrufparameter |
//# (Text enfernt da vom Menue geerbt; optionale Hilfstexte moeglich) |
//# |
//# 27.05.2014 OG |
//# - del: Edit_generic_int(), Edit_printout_int() - nicht mehr benoetigt da |
//# anhaengende Werte umgemappt auf Edit_generic() |
//# |
//# 26.05.2014 OG |
//# - chg: Menuetext TIME_ZONE ergaenzt um "UTC" |
//# - chg: Setup_MAIN() - neue Anordnung der Menueeintraege mit Trennlinien |
//# - chg: Setup_OSDScreens() - OSDSCREEN_WAYPOINTS hinzugefuegt |
//# - chg: Text "LCD aus nach..." nach "LCD aus nach" |
//# - chg: Text "PKT allgemein" geaendert auf "PKT Allgemein" |
//# - del: PKT_LCDINVERS inkl. Sprachen |
//# - chg: Setup_PKTGeneric() - PKT_LCDINVERS (Config.LCD_DisplayMode) entfernt, |
//# nicht mehr unterstuetzt |
//# - chg: Edit_printout() - Hilfstexte CHANGENORMREV1 und 2 fuer NormRev entfernt |
//# |
//# 23.05.2014 OG |
//# - add: Edit_generic() - Anzeige Titel mit PKT_TitleFromMenuItem() |
//# - fix: Setup_PKTGeneric() - PKT_LCDINVERS (Config.LCD_DisplayMode) |
//# Edit-Range umgestellt von 0,4 auf 0,1 |
//# |
//# 11.05.2014 OG |
//# - chg: die Setup-Menues umgestellt auf MenuCtrl_SetTitleFromParentItem() |
//# -> die Menues 'erben' damit ihren Titel vom aufrufenden Menuepunkt |
//# - chg: ein paar Menuetexte fuer Setup_MAIN() |
//# |
//# 18.04.2014 OG |
//# - chg: Setup_PKTGeneric() - PKT_BRIGHTNESS rausgenommen da es aktuell auch |
//# nicht mehr mit PKT 3.9m Hardware geht (spart ca. 650 Bytes) |
//# - chg: Text von "Tracking Servos" gekuerzt auf "Tracking" |
//# |
//# 09.04.2014 OG |
//# - chg: Edit_printout() Text von WlanMode 'Nein' auf 'Aus' geaendert |
//# |
//# 04.04.2014 OG |
//# - chg: Edit_String() auf ShowTitle_P() umgestellt |
//# - del: Edit_ShowTitle_P() |
//# - chg: in versch. Funktionen Titel-Strings fuer Edit_String() gekuerzt |
//# - chg: Edit_String() auf Edit_ShowTitle_P() umgestellt |
//# |
//# 02.04.2014 OG |
//# - add: Edit_ShowTitle_P() |
//# - add: Edit_printout(): WlanMode (Aus, AP-Mode, AdHoc) |
//# - chg: Edit_printout(): Code-Optimierung |
//# |
//# 01.04.2014 OG |
//# - add: Unterstuetzung fuer BLE (Bluetooth 4 Low Energy Zusatzmodul an SV2) |
//# - chg: PCB_WiFlyPatch umbenannt zu PCB_SV2RxTxPatch |
//# |
//# 30.03.2014 OG |
//# - chg: Sprache Hollaendisch vollstaendig entfernt |
//# - chg: MenuCtrl_PushML_P() umgestellt auf MenuCtrl_PushML2_P() |
//# |
//# 27.03.2014 OG |
//# - chg: Setup_PKTGeneric(), Edit_printout() Sprache "Niederländisch" nicht mehr waehlbar |
//# |
//# 04.02.2014 OG |
//# - chg: kleine Layoutaenderung von 'PKT_Akku' in Edit_printout() |
//# - add: PKT_CtrlHook() in Edit_generic(), Edit_generic_int(), Edit_LipoOffset() eingebaut |
//# - add: kleiner Hilfetext in Edit_printout() bei Aenderung von Einstellung |
//# "LCD Normal/Invers" bzgl. PKT neu starten nach Aenderung |
//# - chg: Anzeige von Edit_LipoOffset() geaendert und fix vom springen der |
//# Eingabe wenn Wert geaendert wird |
//# |
//# 03.02.2014 OG |
//# - add: SHOWCELLU in Setup_OSD() ("zeige Zellensp.") |
//# |
//# 30.01.2014 OG |
//# - add: Unterstuetzung fuer USE_BLUETOOTH |
//# |
//# 29.07.2013 Cebra |
//# - chg: Fehler in Setup_WI232_MenuCreate, MenuCtrl_Push_P( WI_INSTALLED.. war auskommentiert, dadurch Fehler im Menu bei nicht |
//# aktivem Wi232 |
//# |
//# 18.07.2013 Cebra |
//# - chg: Edit_PKT_Accu entfernt, Edit_generic erweitert |
//# |
//# 15.07.2013 Cebra |
//# - add: Edit_Printout um Wlan Security erweitert |
//# |
//# 07.07.2013 OG |
//# - add: Setup_OSDScreens(), Mark_OSDScreen(), Edit_OSDScreen() |
//# |
//# 04.07.2013 Cebra |
//# - chg: Setupmenü um Wlan erweitert |
//# |
//# 02.07.2013 Cebra |
//# - chg: Edit_String, geändert für die Nutzung von SSID und Wlan Passwort |
//# |
//# 30.06.2013 OG |
//# - del: Setup_OSD(): OSDS_HOMEVIEW |
//# |
//# 26.06.2013 OG |
//# - del: USE_PKT_STARTINFO |
//# |
//# 24.06.2013 OG |
//# - chg: vor dem editieren des Bluetooth Namens bt_fixname() eingefuegt |
//# |
//# 24.06.2013 OG |
//# - fix: Edit_String(): Fehlermeldung bei EDIT_BT_NAME wenn erstes Zeichen = Space |
//# - chg: Edit_String(): Code-Layout und diverses |
//# - chg: Setup_BTM222(): Bearbeitung von BT_NAME geaendert |
//# - chg: Setup_BTM222(): Menuetexte geaendert |
//# - chg: Setup_MAIN(): Text im Setup-Hauptmenue von "BTM-222" auf "Bluetooth" geaendert |
//# |
//# 21.06.2013 OG |
//# - fix: Menuetext GPSMouse "Zeige Geräteliste" (Anzeige "ä" korrigiert) |
//# |
//# 15.06.2013 OG |
//# - add: "zeige MK-Setting" in Setup_OSD() hinzugefuegt |
//# |
//# 15.06.2013 OG |
//# - chg: Umstrukturierungen am OSD-Setup |
//# - chg: OSD Empfangsausfall von Setup_PKTGeneric() nach Setup_OSD() verschoben |
//# |
//# 13.06.2013 OG |
//# - del: Setup_Time() - jetzt in Setup_PKTGeneric() |
//# - del: Setup_PKTAccu() - jetzt in Setup_PKTGeneric() |
//# - del: SETUP_PKTDEBUG in Setup_MAIN() entfernt (auskommentiert, wenn notwendig ggf. mit einem Debug define regeln) |
//# - chg: diverse Aenderungen in Menutexten |
//# - fix: keine LCD-Helligkeitseinstellung bei HW 3.9x mehr durch Abfrage von PCB_Version |
//# |
//# 31.05.2013 cebra |
//# - chg: Umlaute, soweit gefunden, korrigiert |
//# |
//# 30.05.2013 cebra |
//# - chg: doppelte Texte auf #define umgestellt |
//# |
//# 24.05.2013 OG |
//# - chg: etliche Aenderungen rund um Bluetooth/BT-GPS Maus fuer bessere |
//# Usebility, Code-Einsparung und Code-Lesbarkeit |
//# - add: Wait4KeyOK() |
//# - chg: Aufrufe von MenuCtrl_Push() umgestellt auf MenuCtrl_PushML_P() |
//# |
//# 22.05.2013 OG |
//# - chg: umgestellt auf menuctrl: BT_SelectDevice() |
//# |
//# 22.05.2013 OG |
//# - chg: umgestellt auf menuctrl: Setup_Time(), Setup_FollowMe(), Setup_OSD() |
//# - chg: weitere Speicheroptimierungen fuer USE_* |
//# - chg: Menu_Setup() umbenannt zu Setup_MAIN() |
//# |
//# 20.05.2013 OG |
//# - chg: umgestellt auf menuctrl: Menu_Setup(), Setup_PKTGeneric(), Setup_WI232() |
//# Setup_BTM222(), Setup_PKTAccu(), Setup_GPSMouse() |
//# - add: GPSMouse_ShowData() |
//# |
//# 19.05.2013 OG |
//# - chg: Aufruf von Update_PKT() umgestellt auf PKT_Update() |
//# |
//# 17.05.2013 OG |
//# - chg: umgestellt auf utils/menuold.h |
//# |
//# 16.05.2013 Cebra |
//# - chg: Fehler bei On/Off Settings |
//# |
//# 05.05.2013 Cebra |
//# - add: PKT Zeitsetup |
//# |
//# 19.04.2013 Cebra |
//# - chg: Fehlerbehandlung im GPS Menü für den Fall das kein BTM22 eingebaut oder GPS-Device konfiguriert |
//# |
//# 16.04.2013 Cebra |
//# - chg: PROGMEM angepasst auf neue avr-libc und GCC, prog_char depreciated |
//# |
//# 12.04.2013 Cebra |
//# - chg: edit_generic um Sprungfaktor erweitert, erm�glicht bei hohen Werten einen schnelleren Wertewechsel |
//# |
//# 03.04.2013 Cebra |
//# - chg: find/replace Fehler bei lcd_puts_at beseitigt, GPS und BT-Maus Bereich |
//# |
//# 02.04.2013 Cebra |
//# - chg: Textfehler bei der Einstellung "Verbindung zum MK" beseitigt |
//# |
//# 04.03.2013 Cebra |
//# - del: OSD-Sreenmode ,is no longer necessary, last OSD-Screen is saved at shutdown |
//# |
//# 27.03.2013 Cebra |
//# - chg: Fehler bei der Menüsteuerung behoben |
//############################################################################ |
|
|
#include "../cpu.h" |
#include <avr/io.h> |
#include <avr/interrupt.h> |
#include <avr/pgmspace.h> |
#include <string.h> |
#include <util/delay.h> |
#include "../main.h" |
#include "../setup/setup.h" |
#include "../lcd/lcd.h" |
#include "../timer/timer.h" |
#include "../wi232/Wi232.h" |
#include "../bluetooth/bluetooth.h" |
#include "../connect.h" |
#include "../lipo/lipo.h" |
#include "../messages.h" |
#include "../eeprom/eeprom.h" |
#include "../tracking/tracking.h" |
#include "../uart/uart1.h" |
#include "../sound/pwmsine8bit.h" |
#include "../tracking/servo_setup.h" |
#include "../bluetooth/error.h" |
#include "../stick/stick_setup.h" |
#include "../utils/menuctrl.h" |
#include "../utils/xutils.h" |
#include "../pkt/pkt.h" |
#include "../osd/osd.h" |
#include "../wifly/wifly_setup.h" |
#include "../gps/gpsmouse.h" |
#include "../utils/scrollbox.h" |
#include "../osd/osdold_messages.h" |
|
|
uint8_t edit = 0; |
uint16_t Pre; |
char EditString[21]; |
uint8_t length_tmp; |
uint8_t Old_Baudrate; //Merkzelle für alte Baudrate |
|
|
//############################################################################ |
//############################################################################ |
|
//----------------------------- |
// Setup_Main() |
//----------------------------- |
#define SETUP_MKCONNECTION 1 |
#define SETUP_PKTCONFIG 2 |
#define SETUP_WI232 3 |
#define SETUP_BTM222 4 |
#define SETUP_SERVOCONFIG 5 |
#define SETUP_OSDVIEW 6 |
#define SETUP_TIME 7 |
#define SETUP_GPSMAUS 8 |
#define SETUP_FOLLOWME 9 |
#define SETUP_JOYSTICK 10 |
#define SETUP_PKTAKKU 11 |
#define SETUP_PKTUPDATE 12 |
#define SETUP_PKTDEBUG 13 |
#define SETUP_EEPROMRESET 14 |
#define SETUP_WIFLY 15 |
#define SETUP_OSDSCREENS 16 |
#define SETUP_BLE 17 |
|
|
static const char SETUP_MKCONNECTION_de[] PROGMEM = "Verbindung MK"; |
static const char SETUP_MKCONNECTION_en[] PROGMEM = "connection MK"; |
|
static const char SETUP_PKTCONFIG_de[] PROGMEM = "PKT Allgemein"; |
static const char SETUP_PKTCONFIG_en[] PROGMEM = "PKT general"; |
|
static const char SETUP_WI232_de[] PROGMEM = "Wi.232"; |
#define SETUP_WI232_en SETUP_WI232_de |
|
static const char SETUP_BTM222_de[] PROGMEM = "Bluetooth"; |
#define SETUP_BTM222_en SETUP_BTM222_de |
|
static const char SETUP_BLE_de[] PROGMEM = "Bluetooth BLE"; |
#define SETUP_BLE_en SETUP_BLE_de |
|
static const char SETUP_WIFLY_de[] PROGMEM = "WLAN WiFly"; |
#define SETUP_WIFLY_en SETUP_WIFLY_de |
|
static const char SETUP_SERVOCONFIG_de[] PROGMEM = "Tracking"; |
#define SETUP_SERVOCONFIG_en SETUP_SERVOCONFIG_de |
|
static const char SETUP_OSDVIEW_de[] PROGMEM = "OSD Anzeige"; |
static const char SETUP_OSDVIEW_en[] PROGMEM = "OSD display"; |
|
static const char SETUP_OSDSCREENS_de[] PROGMEM = "OSD Screens"; |
static const char SETUP_OSDSCREENS_en[] PROGMEM = "OSD screens"; |
|
static const char SETUP_GPSMAUS_de[] PROGMEM = "GPS Maus"; |
static const char SETUP_GPSMAUS_en[] PROGMEM = "GPS mouse"; |
|
static const char SETUP_FOLLOWME_de[] PROGMEM = "Follow Me"; |
#define SETUP_FOLLOWME_en SETUP_FOLLOWME_de |
|
static const char SETUP_JOYSTICK_de[] PROGMEM = "Joystick"; |
#define SETUP_JOYSTICK_en SETUP_JOYSTICK_de |
|
static const char SETUP_PKTUPDATE_de[] PROGMEM = "PKT Update"; |
#define SETUP_PKTUPDATE_en SETUP_PKTUPDATE_de |
|
static const char SETUP_PKTDEBUG_de[] PROGMEM = "Debug PKT"; |
#define SETUP_PKTDEBUG_en SETUP_PKTDEBUG_de |
|
static const char SETUP_EEPROMRESET_de[] PROGMEM = "PKT Reset"; |
#define SETUP_EEPROMRESET_en SETUP_EEPROMRESET_de |
|
//############################################################################ |
|
//----------------------------- |
// Setup_PKTGeneric() ("PKT allgemein") |
//----------------------------- |
#define PKT_LANGUAGE 3 |
#define PKT_LIGHTOFF 4 |
#define PKT_BRIGHTNESS 5 |
#define PKT_CONTRAST 6 |
#define PKT_SOUNDMODUL 9 |
#define PKT_BEEPER 10 |
#define PKT_VOLUME 11 |
#define PKT_ACCUTYPE 12 |
#define PKT_ACCUMEASURE 13 |
#define TIME_ZONE 14 |
#define TIME_SUMMER 15 |
#define PKT_PKTOFF 16 |
|
|
static const char LANGUAGE_de[] PROGMEM = "Sprache"; |
static const char LANGUAGE_en[] PROGMEM = "language"; |
|
static const char TIME_ZONE_de[] PROGMEM = "Zeitzone UTC"; |
static const char TIME_ZONE_en[] PROGMEM = "time zone UTC"; |
|
static const char TIME_SUMMER_de[] PROGMEM = "Sommerzeit"; |
static const char TIME_SUMMER_en[] PROGMEM = "summer time"; |
|
static const char PKT_PKTOFF_de[] PROGMEM = "PKT aus nach"; |
static const char PKT_PKTOFF_en[] PROGMEM = "PKT off after"; |
|
static const char LIGHTOFF_de[] PROGMEM = "LCD aus nach"; |
static const char LIGHTOFF_en[] PROGMEM = "LCD off after"; |
|
//static const char BRIGHTNESS_de[] PROGMEM = "LCD Helligkeit"; |
//static const char BRIGHTNESS_en[] PROGMEM = "LCD brightness"; |
|
static const char CONTRAST_de[] PROGMEM = "LCD Kontrast"; |
static const char CONTRAST_en[] PROGMEM = "LCD contrast"; |
|
static const char BEEPER_de[] PROGMEM = "Hardware Beeper"; |
#define BEEPER_en BEEPER_de |
|
#ifdef USE_SOUND |
static const char SOUNDMODUL_de[] PROGMEM = "Soundmodul"; |
static const char SOUNDMODUL_en[] PROGMEM = "Soundmodule"; |
|
static const char VOLUME_de[] PROGMEM = "Lautstärke Sound"; |
static const char VOLUME_en[] PROGMEM = "Volume Sound"; |
#endif |
|
static const char ACCUTYPE_de[] PROGMEM = "Akku Typ"; |
static const char ACCUTYPE_en[] PROGMEM = "Accu type"; |
|
static const char ACCUMEASURE_de[] PROGMEM = "Akku Messung"; |
static const char ACCUMEASURE_en[] PROGMEM = "Accu measure"; |
|
//############################################################################ |
|
//----------------------------- |
// Setup_MKConnection() |
//----------------------------- |
|
#define MKCONN_CONNECTION 1 |
#define MKCONN_BAUDRATE 2 |
|
#define MKCONN_CONNECTION_de SETUP_MKCONNECTION_de |
#define MKCONN_CONNECTION_en SETUP_MKCONNECTION_en |
|
static const char MKCONN_BAUDRATE_de[] PROGMEM = "Baudrate Wi232/BT"; |
#define MKCONN_BAUDRATE_en MKCONN_BAUDRATE_de |
|
|
//############################################################################ |
|
//----------------------------- |
// Setup_WI232() |
//----------------------------- |
#define WI_INSTALLED 1 |
#define WI_TXRX 2 |
#define WI_GROUP 3 |
#define WI_MODE 4 |
#define WI_TIMEOUT 5 |
#define WI_MTU 6 |
#define WI_INIT 7 |
#define WI_PCCONFIG 8 |
|
static const char WI_INSTALLED_de[] PROGMEM = "Modul eingebaut"; |
static const char WI_INSTALLED_en[] PROGMEM = "module built in"; |
|
static const char WI_TXRX_de[] PROGMEM = "TX/RX Kanal"; |
static const char WI_TXRX_en[] PROGMEM = "TX/RX Channel"; |
|
static const char WI_GROUP_de[] PROGMEM = "NetW. Gruppe"; |
static const char WI_GROUP_en[] PROGMEM = "NetW. Group"; |
|
static const char WI_MODE_de[] PROGMEM = "NetW. Mode"; |
#define WI_MODE_en WI_MODE_de |
|
static const char WI_TIMEOUT_de[] PROGMEM = "TX Timeout"; |
#define WI_TIMEOUT_en WI_TIMEOUT_de |
|
static const char WI_MTU_de[] PROGMEM = "TX MTU"; |
#define WI_MTU_en WI_MTU_de |
|
static const char WI_INIT_de[] PROGMEM = "Initialisieren"; |
static const char WI_INIT_en[] PROGMEM = "initialize"; |
|
static const char WI_PCCONFIG_de[] PROGMEM = "Konfig. mit PC"; |
static const char WI_PCCONFIG_en[] PROGMEM = "config. with PC"; |
|
|
//############################################################################ |
|
//----------------------------- |
// Setup_BTM222() (Bluetooth) |
//----------------------------- |
#define BT_INSTALLED 1 |
#define BT_NAME 2 |
#define BT_PIN 3 |
#define BT_INIT 4 |
#define BT_MAC 5 |
#define BT_REID 6 |
#define BT_PCCONFIG 7 |
#define BT_SHOWCONFIG 8 |
|
#define BT_INSTALLED_de WI_INSTALLED_de |
#define BT_INSTALLED_en WI_INSTALLED_en |
|
static const char BT_NAME_de[] PROGMEM = "BT Name"; |
static const char BT_NAME_en[] PROGMEM = "BT name"; |
|
static const char BT_PIN_de[] PROGMEM = "BT Pin"; |
static const char BT_PIN_en[] PROGMEM = "BT pin"; |
|
#define BT_INIT_de WI_INIT_de |
#define BT_INIT_en WI_INIT_en |
|
static const char BT_MAC_de[] PROGMEM = "zeige BT MAC"; |
static const char BT_MAC_en[] PROGMEM = "show BT MAC"; |
|
static const char BT_REID_de[] PROGMEM = "RE-ID Notiz"; |
#define BT_REID_en BT_REID_de |
|
#define BT_PCCONFIG_de WI_PCCONFIG_de |
#define BT_PCCONFIG_en WI_PCCONFIG_en |
|
static const char BT_SHOWCONFIG_de[] PROGMEM = "zeige BT Konfig"; |
static const char BT_SHOWCONFIG_en[] PROGMEM = "show BT config"; |
|
//############################################################################ |
|
//----------------------------- |
// Setup_BLE() (Bluetooth 4 Low Energy) |
//----------------------------- |
#define BLE_INSTALLED 1 |
|
// Text ist in messages.c: MODULE_EXIST |
|
|
//############################################################################ |
|
//----------------------------- |
// Setup_GPSMouse() |
//----------------------------- |
#define GPS_DEVICES 1 |
#define GPS_SEARCH 2 |
#define GPS_TYPE 3 |
#define GPS_ACTIVE 4 |
#define GPS_SHOWDEV 5 |
#define GPS_DATA 6 |
|
|
static const char GPS_SEARCH_de[] PROGMEM = "suche GPS-Maus"; |
static const char GPS_SEARCH_en[] PROGMEM = "search GPS-mouse"; |
|
static const char GPS_DEVICES_de[] PROGMEM = "Geräteliste"; |
static const char GPS_DEVICES_en[] PROGMEM = "devicelist"; |
|
static const char GPS_SHOWDEV_de[] PROGMEM = "aktuelle Maus"; |
static const char GPS_SHOWDEV_en[] PROGMEM = "act. GPS-mouse"; |
|
static const char GPS_DATA_de[] PROGMEM = "GPS-Maus Daten"; |
static const char GPS_DATA_en[] PROGMEM = "GPS-mouse data"; |
|
static const char GPS_TYPE_de[] PROGMEM = "GPS-Maus Typ"; // aktuell nicht verwendet |
static const char GPS_TYPE_en[] PROGMEM = "GPS-mouse typ"; |
|
static const char GPS_ACTIVE_de[] PROGMEM = "GPS-Maus aktiv"; // aktuell nicht verwendet |
static const char GPS_ACTIVE_en[] PROGMEM = "GPS-mouse activ"; |
|
|
//############################################################################ |
|
//----------------------------- |
// Setup_FollowMe() |
//----------------------------- |
#define FME_DISTANCE 1 |
#define FME_SPEED 2 |
#define FME_RADIUS 3 |
#define FME_AZIMUTH 4 |
|
static const char FME_DISTANCE_de[] PROGMEM = "FollowMe Abstand"; |
static const char FME_DISTANCE_en[] PROGMEM = "followMe distance"; |
|
static const char FME_AZIMUTH_de[] PROGMEM = "FollowMe Winkel"; |
static const char FME_AZIMUTH_en[] PROGMEM = "followMe angle"; |
|
static const char FME_SPEED_de[] PROGMEM = "FollowMe Speed"; |
#define FME_SPEED_en FME_SPEED_de |
|
static const char FME_RADIUS_de[] PROGMEM = "Toleranz Radius"; |
static const char FME_RADIUS_en[] PROGMEM = "tolerance radius"; |
|
|
|
|
//############################################################################ |
|
//----------------------------- |
// Setup_OSD() |
//----------------------------- |
#define OSDS_SHOWCELLU 1 |
#define OSDS_LOWBAT 2 |
#define OSDS_RCERROR 3 |
#define OSDS_MKSETTING 4 |
#define OSDS_MAH 5 |
#define OSDS_DATASV2 6 |
#define OSDS_OUTFORMAT 7 |
#define OSDS_OUTPOLARITY 8 |
#define OSDS_FALLSPEED 9 |
#define OSDS_VARIOBEEP 10 |
#define OSDS_VOLTBAR 11 |
|
|
static const char OSDS_LOWBAT_de[] PROGMEM = "Warn Unterspannung"; |
static const char OSDS_LOWBAT_en[] PROGMEM = "Warn LowBat"; |
|
static const char OSDS_MAH_de[] PROGMEM = "Warn mAh"; |
static const char OSDS_MAH_en[] PROGMEM = "Warn mAh"; |
|
static const char OSDS_RCERROR_de[] PROGMEM = "Warn RC-Fehler"; |
static const char OSDS_RCERROR_en[] PROGMEM = "Warn RC-Error"; |
|
static const char OSDS_SHOWCELLU_de[] PROGMEM = "zeige Zellspannung"; |
static const char OSDS_SHOWCELLU_en[] PROGMEM = "show cell voltage"; |
|
static const char OSDS_MKSETTING_de[] PROGMEM = "zeige MK Setting"; |
static const char OSDS_MKSETTING_en[] PROGMEM = "show mk setting"; |
|
static const char OSDS_DATASV2_de[] PROGMEM = "Navi Daten an SV2"; |
static const char OSDS_DATASV2_en[] PROGMEM = "Navi data to SV2"; |
|
|
#ifdef USE_OSD_SCREEN_OLD |
static const char OSDS_OUTFORMAT_de[] PROGMEM = "OUT1/2 Format"; |
static const char OSDS_OUTFORMAT_en[] PROGMEM = "OUT1/2 format"; |
|
static const char OSDS_FALLSPEED_de[] PROGMEM = "Max. Sinkrate m/s"; |
static const char OSDS_FALLSPEED_en[] PROGMEM = "max fallspeed m/s"; |
|
static const char OSDS_VARIOBEEP_de[] PROGMEM = "Variometer Beep"; |
static const char OSDS_VARIOBEEP_en[] PROGMEM = "Variometer beep"; |
|
static const char OSDS_OUTPOLARITY_de[] PROGMEM = "OUT1/2 Polarität"; |
static const char OSDS_OUTPOLARITY_en[] PROGMEM = "OUT1/2 polarity"; |
|
static const char OSDS_VOLTBAR_de[] PROGMEM = "Volt Balken"; |
static const char OSDS_VOLTBAR_en[] PROGMEM = "volt bargraph"; |
#endif |
|
|
|
//############################################################################ |
|
|
//############################################################################ |
//# Allgemeines |
//############################################################################ |
|
//-------------------------------------------------------------- |
//-------------------------------------------------------------- |
void Wait4KeyOK( void ) |
{ |
set_beep( 60, 0xffff, BeepNormal); |
lcd_printp_at(19, 7, strGet(OK) , MNORMAL); |
while( !get_key_press(1 << KEY_ENTER) ) PKT_CtrlHook(); // PKT-Update usw... |
clear_key_all(); |
} |
|
|
//-------------------------------------------------------------- |
//-------------------------------------------------------------- |
void Wait4KeyENDE( uint8_t beep ) |
{ |
if( beep ) set_beep( 60, 0xffff, BeepNormal); |
lcd_printp_at(12, 7, strGet(ENDE) , MNORMAL); |
while( !get_key_press(1 << KEY_ESC) ) |
{ |
show_Lipo(); |
PKT_CtrlHook(); // PKT-Update usw... |
} |
clear_key_all(); |
} |
|
|
//############################################################################ |
//# BT-Funktionen (GPS-Maus) |
//############################################################################ |
|
#ifdef USE_BLUETOOTH |
|
//-------------------------------------------------------------- |
// BT_CheckBTM222() |
// |
// prueft ob das Bluetooth Modul im PKT installiert ist |
//-------------------------------------------------------------- |
uint8_t BT_CheckBTM222( void ) |
{ |
if( !Config.UseBT ) |
{ |
// PKT_Message_P( text, error, timeout, beep, clearscreen) |
PKT_Message_P( strGet(STR_NOBTM222), true, 1000, true, true); // 1000 = max. 10 Sekunden anzeigen; "kein BTM222 vorh." |
return false; // -> kein BTM222 eingebaut |
} |
|
return true; |
} |
|
|
|
//-------------------------------------------------------------- |
// BT_SelectDevice() |
// |
// Auswahl eines BT-Device aus einer Liste von BT-Devices |
//-------------------------------------------------------------- |
void BT_SelectDevice( void ) |
{ |
uint8_t itemid; |
uint8_t event; |
uint8_t i; |
|
//------------------------------- |
// BTM222 Modul vorhanden? |
//------------------------------- |
if( !BT_CheckBTM222() ) return; |
|
|
//------------------------------- |
// BT Device-Suche durchgefuert? |
//------------------------------- |
if( bt_devicecount == 0 ) |
{ |
// PKT_Message_P( text, error, timeout, beep, clearscreen) |
PKT_Message_P( PSTR("Suche durchführen!"), true, 1000, true, true); // 1000 = max. 10 Sekunden anzeigen; "kein BTM222 vorh." |
return; |
} |
|
|
//--------------- |
// Create |
//--------------- |
MenuCtrl_Create(); |
MenuCtrl_SetTitle_P( strGet(STR_BT_DEVICES) ); // "BT Geräte" |
|
//--------------- |
// Menuitems |
//--------------- |
for( i = 0; i < bt_devicecount; i++ ) |
{ |
MenuCtrl_Push( i, MENU_ITEM, NOFUNC, device_list[i].DevName ); |
|
if( strncmp(device_list[i].mac,Config.gps_UsedMac,14) == 0 ) |
MenuCtrl_ItemMark( i, true ); // aktuelles BT-Device markieren |
} |
|
//--------------- |
// Control |
//--------------- |
event = MenuCtrl_Control( MENUCTRL_EVENT ); |
|
if( event == MENUEVENT_ITEM ) |
{ |
itemid = MenuCtrl_GetItemId(); // welcher Menu-Punkt (ID) |
strncpy( Config.gps_UsedMac , device_list[itemid].mac , 14); |
strncpy( Config.gps_UsedDevName, device_list[itemid].DevName, 20); |
} |
|
//--------------- |
// Destroy |
//--------------- |
MenuCtrl_Destroy(); |
} |
|
|
|
//-------------------------------------------------------------- |
// BT_SearchDevices() |
// |
// sucht BT-Devices |
//-------------------------------------------------------------- |
void BT_SearchDevices( void ) |
{ |
uint8_t wahl; |
|
char *title; |
|
//------------------- |
// 1. Frage: suchen? |
//------------------- |
if( Config.gps_UsedDevName[0] != 0 ) // ist eine BT GPS-Maus bereits vorhanden? |
title = Config.gps_UsedDevName; // dann zeige im Titel den Namen der GPS-Maus an |
else |
title = "BT Devices"; |
|
set_beep( 50, 0xffff, BeepNormal); |
|
//wahl = PKT_AskX( asktype, text1, text2, text_progmem, headline, headline_progmem, title, title_progmem) |
wahl = PKT_AskX( ASK_END_START, strGet(STR_SEARCH_BT_ASK), strGet(STR_BT_SEARCHTIME), true, MenuCtrl_GetItemText(), true, title, false); // "BT Geräte suchen?" |
|
|
//------------------- |
// 2. BT suchen |
//------------------- |
if( wahl ) |
{ |
if( BT_CheckBTM222() ) |
{ |
//PKT_Title_P( text, lShowLipo, clearscreen ) |
PKT_Title_P( PSTR("BT Suche"), true, true ); |
|
lcdx_printp_center( 2, strGet(STR_SEARCH_BT), MNORMAL, 0,1); // "suche BT Geräte" |
|
//PKT_Gauge_Begin( 0 ); // Gauge: 0 = Default fuer y verwenden |
|
set_BTOn(); |
bt_downlink_init(); |
|
lcd_printp_at( 11, 7, strGet(KEYCANCEL), MNORMAL); // Keyline: "Abbr." bzw "Cancel" |
bt_searchDevice(); |
|
set_BTOff(); |
|
//PKT_Gauge_End(); // Gauge: Ende |
|
if( bt_devicecount==0 ) |
{ |
//PKT_Message_P( text, error, timeout, beep, clearscreen) |
PKT_Message_P( strGet(STR_NO_BT_FOUND), true, 2000, true, true); |
} |
else |
{ |
set_beep( 50, 0xffff, BeepNormal); |
BT_SelectDevice(); |
} |
} |
} |
} |
|
|
#endif // end: #ifdef USE_BLUETOOTH |
|
|
|
|
//############################################################################ |
//# Edit-Funktionen |
//############################################################################ |
|
|
//-------------------------------------------------------------- |
// Ausgabe von Werten fuer Edit_generic() |
//-------------------------------------------------------------- |
void Edit_generic_printout( int16_t Value, int16_t min, int16_t max, uint8_t what, int8_t yoffs) |
{ |
const char *pStr = 0; // PGM |
const char *pstr = 0; // RAM |
//uint8_t x = 0; |
//uint8_t y = 3; |
|
|
switch( what ) |
{ |
case Show_uint3: pstr = buffered_sprintf_P( PSTR("%3d"), Value ); |
break; |
|
|
case Show_uint5: pstr = buffered_sprintf_P( PSTR("%5d"), Value ); |
break; |
|
|
case Show_uint10th: pstr = buffered_sprintf_P( PSTR("%2.1d"), Value ); |
break; |
|
|
case MK_Connection: switch( Value ) |
{ |
case 0: pStr = PSTR("Wi.232"); break; |
case 1: pStr = strGet(KABEL); break; |
} |
|
if( (Value == 0) && (Config.UseWi == false) ) |
{ |
lcd_rect_round( 0, 37, 127, 21-6, 1, R2); // Rahmen |
lcdx_printp_center( 6, strGet(STR_WI232_ACTIVATE), MNORMAL, 0,-7); // "aktiviere Wi.232!" |
} |
else |
{ |
lcd_frect( 0, 37, 127, 21-6, 0); // Hilfebereich loeschen |
} |
break; |
|
|
case GPSMOUSE: switch( Value ) |
{ |
case GPS_Bluetoothmouse1: pStr = PSTR("BT-Mouse"); break; |
case GPS_Mikrokopter: pStr = PSTR("Mikrokopter"); break; |
default: pStr = PSTR("unknown"); |
} |
break; |
|
|
case Wi_Netmode: switch( Value ) |
{ |
case false: pStr = strGet(SLAVE); break; |
case true : pStr = strGet(NORMAL); break; |
} |
break; |
|
|
|
case OnOff: switch( Value ) |
{ |
case 0: pStr = strGet(OFF); break; |
case 1: pStr = strGet(ON); break; |
} |
break; |
|
|
case YesNo: switch( Value ) |
{ |
case 0: pStr = strGet(NOO); break; |
case 1: pStr = strGet(YES); break; |
} |
break; |
|
|
case WlanMode: switch( Value ) |
{ |
case 0: pStr = strGet(OFF); break; |
case 1: pStr = PSTR("AP-Mode"); break; |
case 2: pStr = PSTR("AdHoc"); break; |
} |
break; |
|
|
|
case NormRev: switch( Value ) // wird noch von stick/stick_setup.c verwendet |
{ |
case 0 : pStr = strGet(NORMAL); break; |
case 1 : pStr = strGet(REVERSE); break; |
} |
break; |
|
|
case Kontrast: if( Value >= max ) |
{ |
Value = max; |
set_beep( 200, 0x0080, BeepNormal); |
} |
|
if( Value == min ) |
{ |
Value = min; |
set_beep( 200, 0x0080, BeepNormal); |
} |
|
lcd_set_contrast( Value ); |
|
pstr = buffered_sprintf_P( PSTR("%3d"), Value ); |
break; |
|
|
case Baudrate: pstr = buffered_sprintf_P( PSTR("%ld"), Baud_to_uint32(Value) ); |
break; |
|
|
case Language: switch( Value ) |
{ |
case 0: pStr = strGet(DEUTSCH); break; |
case 1: pStr = strGet(ENGLISCH); break; |
} |
break; |
|
|
case Sticktype: switch( Value ) |
{ |
case false: pStr = strGet(POTI); break; |
case true : pStr = strGet(TASTER); break; |
} |
break; |
|
|
/* |
case WlanSecurity: // Anmerkung 02.04.2014 OG: wird aktuell nicht benoetigt weil anders geloest |
switch (Value) |
{ |
case 0x0 : lcd_printp_at(15, 2, PSTR("Adhoc"), 0); |
break; |
case 0x1 : lcd_printp_at(15, 2, PSTR("WPA "), 0); |
break; |
} |
break; |
*/ |
|
case PKT_Akku: switch( Value ) |
{ |
case true : pStr = PSTR("Lipo"); break; |
case false: pStr = PSTR("LiIon"); break; |
} |
break; |
} // end: switch( what ) |
|
|
|
//lcdx_printf_at_P( uint8_t x, uint8_t y, uint8_t mode, int8_t xoffs, int8_t yoffs, const char *format, ... ) |
|
if( pStr ) lcdx_printf_at_P( 0, 3, MNORMAL, 0,yoffs, PSTR("> %16S"), pStr ); // PGM |
if( pstr ) lcdx_printf_at_P( 0, 3, MNORMAL, 0,yoffs, PSTR("> %16s"), pstr ); // RAM |
} |
|
|
|
|
//-------------------------------------------------------------- |
// int16_t Edit_generic( Value, min, max, what, Addfactor, strHelp1, strHelp2) |
// |
// generische Funktion zum aendern von Setup-Werten |
// |
// PARAMETER: |
// Value: Ausgangswert der zu aendern ist |
// min : minimaler Wert |
// max : maximaler Wert |
// what : Typ des Wertes, abhaengig davon wird der Wert dargestellt, ENUM dafuer in setup.h |
// Addfactor : Sprungwert der beim erhöhen und erniedrigen addiert wird |
// strHelp1 : Hilefetext 1 (PGM) |
// strHelp2 : Hilefetext 2 (PGM) |
//S |
// RUECKGABE: |
// int16_t Return : Ergebnis der Veraenderung des Wertes |
//-------------------------------------------------------------- |
int16_t Edit_generic( int16_t Value, int16_t min, int16_t max, uint8_t what, uint8_t Addfactor, const char *strHelp1, const char *strHelp2 ) |
{ |
uint8_t redraw = true; |
uint8_t noCancel = false; |
int8_t yoffs = 0; // yoffs fuer das Edit-Label |
int8_t yoffsV = 4; // yoffs fuer den Eingabebereich |
const char *pStr; |
|
Pre = Value; |
|
do |
{ |
//------------------------ |
// Screen neu zeichnen |
//------------------------ |
if( redraw ) |
{ |
PKT_TitleFromMenuItem( true ); // Titel mit PKT-LiPo Anzeige und clearcsreen |
|
|
//------------------------ |
// Platz reservieren fuer |
// spezielle Typen |
//------------------------ |
if( what == MK_Connection ) |
{ |
yoffs = -2; // yoffs fuer das Edit-Label |
yoffsV = 0; // yoffs fuer den Eingabebereich |
} |
|
//------------------------ |
// 1 zeiliger Hilfstext |
//------------------------ |
if( strHelp1 != NULL && strHelp2 == NULL ) |
{ |
lcd_rect_round( 0, 37, 127, 21-6, 1, R2); // Rahmen |
lcdx_printp_center( 6, strHelp1, MNORMAL, 0,-7); // Hilfe-Text 1 |
yoffs = -2; // yoffs fuer das Edit-Label |
yoffsV = 0; // yoffs fuer den Eingabebereich |
} |
|
//------------------------ |
// 2 zeiliger Hilfstext |
//------------------------ |
if( strHelp2 != NULL ) |
{ |
lcd_rect_round( 0, 32, 127, 21, 1, R2); // Rahmen |
lcdx_printp_center( 5, strHelp1, MNORMAL, 0,-5); // Hilfe-Text 1 |
lcdx_printp_center( 6, strHelp2, MNORMAL, 0,-5); // Hilfe-Text 2 |
yoffs = -4; // yoffs fuer das Edit-Label |
yoffsV = -2; // yoffs fuer den Eingabebereich |
} |
|
//------------------------ |
// Label |
//------------------------ |
pStr = PSTR("???"); |
if( MenuCtrl_GetMenuIndex() >= 0 ) pStr = MenuCtrl_GetItemText(); // das Label wird vom Menueeintrag uebernommen (Menuetext muss im PGM sein!) |
else |
{ |
if( what == Language ) // Ausnahme: wird ggf. beim Start vom PKT von HAL_HW3_9.c aufgerufen |
{ |
pStr = strGetLanguage( LANGUAGE_de, LANGUAGE_en); |
noCancel = true; |
} |
} |
lcdx_printf_at_P( 0, 2, MNORMAL, 0,yoffs, PSTR("%S:"), pStr ); // Ausgabe des Labels |
|
|
lcd_printp_at( 0, 7, strGet(KEYLINE5) , MNORMAL); // Keyline: <- -> Abbr. OK |
if( noCancel ) lcd_printp_at(11, 7, PSTR(" "), MNORMAL); // Keyline: "Abbr." loeschen wenn noCancel |
|
Edit_generic_printout( Value, min, max, what, yoffsV); // aktuellen Eingabewert anzeigen |
redraw = false; |
} |
|
|
//------------------------ |
// PKT CtrlHook |
//------------------------ |
if( PKT_CtrlHook() ) |
{ |
redraw = true; |
} |
|
|
//------------------------ |
// Key: PLUS |
//------------------------ |
if( (get_key_press(1 << KEY_PLUS) || get_key_long_rpt_sp((1 << KEY_PLUS), 2)) ) |
{ |
if( Value <= (max-Addfactor) ) Value = Value + Addfactor; |
else Value = min; |
|
Edit_generic_printout( Value, min, max, what, yoffsV); |
} |
|
|
//------------------------ |
// Key: MINUS |
//------------------------ |
if( (get_key_press(1 << KEY_MINUS) || get_key_long_rpt_sp((1 << KEY_MINUS), 2)) ) |
{ |
if( Value >= (min + Addfactor) ) Value = Value - Addfactor; |
else Value = max; |
|
Edit_generic_printout( Value, min, max, what, yoffsV); |
} |
|
|
//------------------------ |
// Key: ENTER |
//------------------------ |
if( get_key_press(1 << KEY_ENTER) ) |
{ |
return Value; |
} |
|
|
//------------------------ |
// Key: ESC |
//------------------------ |
if( !noCancel && get_key_press(1 << KEY_ESC) ) // Ende ohne speichern |
{ |
break; |
} |
} |
while( true ); |
|
get_key_press(KEY_ALL); |
return Pre; |
} |
|
|
|
//-------------------------------------------------------------- |
// bei HW 3.9x geht das nicht mehr wegen dem Platinenlayout |
// bei HW 3.9m geht es theoretisch noch - aber durch einen Bug scheinbar |
// nicht mehr. Kann nur von jemanden mit HW 3.9m repariert werden. |
// ALSO -> raus und Speicher sparen |
//-------------------------------------------------------------- |
/* |
uint8_t Edit_DisplayHelligkeit(uint8_t Value, uint8_t min, uint8_t max) |
{ |
float ValCorr = 2.55; // (Value * ValCorr) maximal 255 |
Pre = Value; |
OCR2A = Value * ValCorr; |
|
lcd_cls(); |
// lcd_printp_at (0, 2, Text, 0); |
lcdx_printf_at_P( 0, 2, MNORMAL, 0,0, PSTR("%S:"), MenuCtrl_GetItemText() ); // Menuetext muss im PGM sein! (aktuell keine Unterscheidung RAM/PGM) |
write_ndigit_number_u (16, 2, Value, 3, 0,0); |
lcd_printp_at (17, 2, PSTR("%"), 0); |
// lcd_printp_at (0, 7, PSTR(KEY_LINE_2), 0); |
lcd_printp_at(0, 7, strGet(KEYLINE2), 0); |
|
do |
{ |
write_ndigit_number_u (16, 2,Value, 3, 0,0); |
lcd_frect ((8*0), (8*4), (Value * (16*8) / 100), 6, 1); |
|
if ((get_key_press (1 << KEY_PLUS) || get_key_long_rpt_sp ((1 << KEY_PLUS), 3)) && (Value < max)) |
{ |
Value++; |
|
if (Value >= max) |
{ |
Value = max; |
set_beep ( 200, 0x0080, BeepNormal); |
} |
else |
OCR2A = Value * ValCorr; |
|
} |
|
if ((get_key_press (1 << KEY_MINUS) || get_key_long_rpt_sp ((1 << KEY_MINUS), 3)) && (Value > min)) |
{ |
lcd_frect (((Value - 1) * (16*8) / 100), (8*4), (16*8), 6, 0); |
Value--; |
|
if (Value == min) |
{ |
Value = min; |
set_beep ( 200, 0x0080, BeepNormal); |
} |
else |
OCR2A = Value * ValCorr; |
|
} |
|
if (get_key_press (1 << KEY_ENTER)) |
{ |
OCR2A = Value * ValCorr; |
Config.LCD_Helligkeit = Value; |
// WriteParameter(); |
edit = 0; |
return Value; |
} |
} |
|
while (!get_key_press (1 << KEY_ESC)); |
{ |
get_key_press(KEY_ALL); |
OCR2A = Pre * ValCorr; |
Config.LCD_Helligkeit = Pre; |
// WriteParameter(); |
return Pre; |
} |
} |
*/ |
|
|
|
//-------------------------------------------------------------- |
//-------------------------------------------------------------- |
uint8_t Edit_String( const char *data, const uint8_t length, uint8_t type) |
{ |
uint8_t redraw = true; |
uint8_t x = 1; |
uint8_t I = 0; |
uint8_t lOk = false; |
uint8_t i; |
|
|
for( i = 0; i < length; i++) |
{ |
EditString[i] = data[i]; |
} |
|
|
do |
{ |
//------------------------- |
// Screen zeichnen |
//------------------------- |
if( redraw ) |
{ |
PKT_TitleFromMenuItem( true ); // true = showlipo (mit clearscreen) |
|
for( i = 0; i < length; i++) |
{ |
lcd_putc ( (i*2)+1, 3, EditString[i], MNORMAL); |
lcd_printp_at( (i*2)+2, 3, PSTR(" ") , MNORMAL); |
} |
|
lcd_rect( (x*6)-3, (8*3)-2, 10, 10, 1); |
lcd_printp_at(13, 6, PSTR("C"), MNORMAL); |
lcd_printp_at( 0, 7, PSTR(" \x17 \x16 \x19 OK"), MNORMAL); // Keyline |
|
redraw = false; |
} |
|
|
//------------------------- |
// PKT-LiPo anzeigen |
//------------------------- |
show_Lipo(); |
|
|
//------------------------- |
// PKT Update-Anforderung? |
//------------------------- |
if( PKT_CtrlHook() ) |
{ |
redraw = true; |
} |
|
|
if( (type == EDIT_BT_NAME) || (type == EDIT_SSID) || (type == EDIT_WL_PASSWORD)) // Name |
{ |
if ((get_key_press (1 << KEY_PLUS) || get_key_long_rpt_sp ((1 << KEY_PLUS), 2)) && EditString[I] < 'z') |
{ |
EditString[I]++; |
|
if (EditString[I] >= 0x00 && EditString[I] < ' ') |
EditString[I] = ' '; |
|
if (EditString[I] > ' ' && EditString[I] < '0') |
EditString[I] = '0'; |
|
if (EditString[I] > '9' && EditString[I] < 'A') |
EditString[I] = 'A'; |
|
if (EditString[I] > 'Z' && EditString[I] < 'a') |
EditString[I] = 'a'; |
|
lcd_putc (x, 3, EditString[I], 0); |
edit = 1; |
} |
|
if ((get_key_press (1 << KEY_MINUS) || get_key_long_rpt_sp ((1 << KEY_MINUS), 2)) && EditString[I] > ' ') |
{ |
EditString[I]--; |
|
if (EditString[I] < 'a' && EditString[I] > 'Z') |
EditString[I] = 'Z'; |
|
if (EditString[I] < 'A' && EditString[I] > '9') |
EditString[I] = '9'; |
|
if (EditString[I] < '0' && EditString[I] > ' ') |
EditString[I] = ' '; |
|
lcd_putc (x, 3, EditString[I], 0); |
edit = 1; |
} |
} |
else if( type == EDIT_BT_PIN ) // PIN |
{ |
if ((get_key_press (1 << KEY_PLUS) || get_key_long_rpt_sp ((1 << KEY_PLUS), 1)) && (EditString[I] < '9')) |
{ |
EditString[I]++; |
|
if (EditString[I] >= 0x00 && EditString[I] < ' ') |
EditString[I] = ' '; |
|
if (EditString[I] > ' ' && EditString[I] < '0') |
EditString[I] = '0'; |
|
lcd_putc (x, 3, EditString[I], 0); |
edit = 1; |
} |
|
if ((get_key_press (1 << KEY_MINUS) || get_key_long_rpt_sp ((1 << KEY_MINUS), 1)) && (EditString[I] > '0')) |
{ |
EditString[I]--; |
|
if (EditString[I] < 'A' && EditString[I] > '9') |
EditString[I] = '9'; |
|
lcd_putc (x, 3, EditString[I], 0); |
edit = 1; |
} |
} |
|
if( get_key_long (1 << KEY_ESC)) |
{ |
if( type == EDIT_BT_NAME|| type == EDIT_SSID || type == EDIT_WL_PASSWORD) EditString[I] = ' '; // Zeichen loeschen |
if( type == EDIT_BT_PIN) EditString[I] = '0'; // Zeichen setzen |
lcd_putc (x, 3, EditString[I], 0); |
edit = 1; |
} |
|
if( get_key_short (1 << KEY_ESC)) |
{ |
if( type == EDIT_BT_NAME ) length_tmp = bt_name_length; |
if( type == EDIT_BT_PIN ) length_tmp = bt_pin_length; |
if (type == EDIT_SSID ) length_tmp = wlan_ssid_length; |
if (type == EDIT_WL_PASSWORD ) length_tmp = wlan_password_length; |
|
if ((x / 2) + 2 > length_tmp) |
{ |
lcd_rect ((x*6)-3, (8*3)-2, 10, 10, 0); |
x = 1; |
lcd_rect ((x*6)-3, (8*3)-2, 10, 10, 1); |
I = 0; |
} |
else |
{ |
lcd_rect ((x*6)-3, (8*3)-2, 10, 10, 0); |
x++; |
x++; |
lcd_rect ((x*6)-3, (8*3)-2, 10, 10, 1); |
I++; //Zeiger auf Zeichen |
} |
} |
|
if( get_key_press (1 << KEY_ENTER) ) |
{ |
lOk = true; |
if( type == EDIT_BT_NAME && EditString[0] == ' ' ) // BT-Name: 1. Zeichen darf nicht Space sein |
{ |
lcdx_printp_at( 0, 5, PSTR(" FEHLER! 1. Zeichen! "), MNORMAL, 0,-4); |
set_beep ( 300, 0xf00f, BeepNormal); |
_delay_ms(2000); |
lcd_frect( 0, 5*8-4, 127, 7, 0); // loesche Fehlertext |
|
lcd_rect ((x*6)-3, (8*3)-2, 10, 10, 0); // setze Cursor auf Position 1 |
x = 1; |
lcd_rect ((x*6)-3, (8*3)-2, 10, 10, 1); |
I = 0; |
|
get_key_press(KEY_ALL); |
lOk = false; |
} |
} |
|
} while( !lOk ); |
|
return 1; |
} |
|
|
|
//-------------------------------------------------------------- |
// min,max sind in Setup_PKTGeneric() festgelegt |
//-------------------------------------------------------------- |
void Edit_LipoOffset( void ) |
{ |
uint8_t redraw = true; |
uint8_t inc = 50; // in diesen Schritten hoch/runter zaehlen |
uint16_t min = 0; // min. Offset Wert |
uint16_t max = 15000; // max. Offset Wert |
uint16_t oldValue; |
|
if( Config.Lipo_UOffset % inc ) // ggf. wurde frueher ein anderer Wert fuer das Increment 'inc' verwendet |
Config.Lipo_UOffset = (uint16_t)(Config.Lipo_UOffset/inc)*inc; // hier wird der Wert auf das aktuelle 'inc' angepasst |
|
oldValue = Config.Lipo_UOffset; |
|
do |
{ |
//------------------------- |
// Screen zeichnen |
//------------------------- |
if( redraw ) |
{ |
PKT_TitleFromMenuItem( true ); // true = showlipo (mit clearscreen) |
|
lcdx_printf_at_P( 0, 2, MNORMAL, 0,-4, PSTR("%S:"), MenuCtrl_GetItemText() ); // Menuetext muss im PGM sein! (aktuell keine Unterscheidung RAM/PGM) |
|
lcd_rect_round( 0, 32, 127, 21, 1, R2); // Rahmen |
lcdx_printp_at( 1, 5, strGet(STR_HELP_LIPOOFFSET1), MNORMAL, 0,-5); // Hilfe-Text 1 |
lcdx_printp_at( 1, 6, strGet(STR_HELP_LIPOOFFSET2), MNORMAL, 0,-5); // Hilfe-Text 2 |
lcd_printp_at( 0, 7, strGet(KEYLINE5), MNORMAL); // Keyline |
redraw = false; |
} |
|
|
//------------------------- |
// Wert ausgeben |
//------------------------- |
lcdx_printf_at_P( 0, 3, MNORMAL, 0,-2, PSTR("> %5d => %1.2dv"), Config.Lipo_UOffset, volt_avg ); |
show_Lipo(); |
|
|
//------------------------- |
// PKT Update-Anforderung? |
//------------------------- |
if( PKT_CtrlHook() ) |
{ |
redraw = true; |
} |
|
|
//------------------------- |
// Tasten |
//------------------------- |
if( (get_key_press(1 << KEY_PLUS) || get_key_long_rpt_sp((1 << KEY_PLUS),2)) && (Config.Lipo_UOffset < max) ) |
{ |
Config.Lipo_UOffset = Config.Lipo_UOffset + inc; |
} |
|
if( (get_key_press(1 << KEY_MINUS) || get_key_long_rpt_sp((1 << KEY_MINUS),2)) && (Config.Lipo_UOffset > min) ) |
{ |
Config.Lipo_UOffset = Config.Lipo_UOffset - inc; |
} |
|
if( get_key_press(1 << KEY_ENTER) ) |
{ |
clear_key_all(); |
return; |
} |
|
} while( !get_key_press(1 << KEY_ESC) ); |
|
clear_key_all(); |
|
Config.Lipo_UOffset = oldValue; // Abbruch, orginalen Wert wieder herstellen |
return; |
} |
|
|
|
//-------------------------------------------------------------- |
//-------------------------------------------------------------- |
#ifdef USE_OSD_SCREEN_OLD |
uint8_t Edit_LED_Form (uint8_t Value, uint8_t min, uint8_t max ) |
{ |
Pre = Value; |
lcd_cls(); |
|
lcd_printp_at(0, 2, strGetOSDOLD(OSD_LED_Form), MNORMAL); |
|
switch (Value) |
{ |
case 0x1: |
lcd_circle (14 * 6 + 5, 2 * 8 + 3, 3, 1); // kreis |
|
lcd_fcircle (16 * 6 + 5, 2 * 8 + 3, 3, 0); // l�schen |
lcd_circle (16 * 6 + 5, 2 * 8 + 3, 3, 1); // kreis |
lcd_fcircle (16 * 6 + 5, 2 * 8 + 3, 1, 1); // plus |
break; |
case 0x3 : |
lcd_circle (14 * 6 + 5, 2 * 8 + 3, 3, 1); // kreis |
|
lcd_fcircle (16 * 6 + 5, 2 * 8 + 3, 3, 1); // schwarz |
break; |
break; |
} |
|
lcd_printp_at(0, 7, strGet(KEYLINE2), 0); |
|
do |
{ |
if ((get_key_press (1 << KEY_PLUS)) && (Value == 1)) |
{ |
Value = 3; |
lcd_circle (14 * 6 + 5, 2 * 8 + 3, 3, 1); // kreis |
|
lcd_fcircle (16 * 6 + 5, 2 * 8 + 3, 3, 1); // schwarz |
} |
|
if ((get_key_press (1 << KEY_MINUS)) && (Value == 3)) |
{ |
Value = 1; |
lcd_circle (14 * 6 + 5, 2 * 8 + 3, 3, 1); // kreis |
|
lcd_fcircle (16 * 6 + 5, 2 * 8 + 3, 3, 0); // l�schen |
lcd_circle (16 * 6 + 5, 2 * 8 + 3, 3, 1); // kreis |
lcd_fcircle (16 * 6 + 5, 2 * 8 + 3, 1, 1); // plus |
} |
|
if (get_key_press (1 << KEY_ENTER)) |
{ |
edit = 1; |
Config.OSD_LEDform = Value; |
// WriteParameter(); |
edit = 0; |
return Value; |
} |
} |
|
while (!get_key_press (1 << KEY_ESC)); |
{ |
get_key_press(KEY_ALL); |
edit = 0; |
Config.OSD_LEDform = Pre; |
return Pre; |
} |
} |
#endif // USE_OSD_SCREEN_OLD |
|
|
|
//-------------------------------------------------------------- |
// Show_MAC( progmem, headline, mac) |
//-------------------------------------------------------------- |
void Show_MAC( uint8_t progmem, const char *headline, const char *mac ) |
{ |
uint8_t i; |
uint8_t z; |
|
lcd_cls(); |
PKT_TitleFromMenuItem( true ); |
|
if( progmem ) |
lcdx_printp_center( 2, headline, MNORMAL, 0,2); |
else |
lcdx_print_center( 2, (uint8_t *)headline, MNORMAL, 0,2); |
|
z = 0; |
for( i = 0; i < 13; i++) |
{ |
lcdx_putc( z+2, 5, mac[i], MNORMAL, 0,-1); |
if( (i%2==1) && (i<11) ) |
{ |
z++; |
lcdx_printp_at( z+2, 5, PSTR(":"), MNORMAL, 0,-1); |
} |
z++; |
} |
lcd_rect_round( 0, 34, 127, 16, 1, R2); // Rahmen |
Wait4KeyENDE( false ); |
} |
|
|
|
//-------------------------------------------------------------- |
// Setup_OSD() |
//-------------------------------------------------------------- |
void Setup_OSD( void ) |
{ |
uint8_t itemid; |
|
//--------------- |
// Create |
//--------------- |
MenuCtrl_Create(); |
MenuCtrl_SetTitleFromParentItem(); // "OSD Anzeige" |
|
//--------------- |
// Menuitems |
//--------------- |
MenuCtrl_PushML2_P( OSDS_LOWBAT , MENU_ITEM, NOFUNC , OSDS_LOWBAT_de , OSDS_LOWBAT_en ); |
//MenuCtrl_PushML2_P( OSDS_MAH , MENU_ITEM, NOFUNC , OSDS_MAH_de , OSDS_MAH_en ); |
MenuCtrl_PushML2_P( OSDS_RCERROR , MENU_ITEM, NOFUNC , OSDS_RCERROR_de , OSDS_RCERROR_en ); |
|
MenuCtrl_PushSeparator(); // MENUE TRENNLINIE |
|
MenuCtrl_PushML2_P( OSDS_SHOWCELLU , MENU_ITEM, NOFUNC , OSDS_SHOWCELLU_de , OSDS_SHOWCELLU_en ); |
MenuCtrl_PushML2_P( OSDS_MKSETTING , MENU_ITEM, NOFUNC , OSDS_MKSETTING_de , OSDS_MKSETTING_en ); |
|
#ifdef USE_OSD_SCREEN_OLD |
MenuCtrl_PushSeparator(); // MENUE TRENNLINIE |
MenuCtrl_PushML2_P( OSDS_FALLSPEED , MENU_ITEM, NOFUNC , OSDS_FALLSPEED_de , OSDS_FALLSPEED_en ); |
MenuCtrl_PushML2_P( OSDS_VARIOBEEP , MENU_ITEM, NOFUNC , OSDS_VARIOBEEP_de , OSDS_VARIOBEEP_en ); |
MenuCtrl_PushML2_P( OSDS_VOLTBAR , MENU_ITEM, NOFUNC , OSDS_VOLTBAR_de , OSDS_VOLTBAR_en ); |
MenuCtrl_PushML2_P( OSDS_OUTFORMAT , MENU_ITEM, NOFUNC , OSDS_OUTFORMAT_de , OSDS_OUTFORMAT_en ); |
MenuCtrl_PushML2_P( OSDS_OUTPOLARITY , MENU_ITEM, NOFUNC , OSDS_OUTPOLARITY_de , OSDS_OUTPOLARITY_en ); |
#endif |
|
MenuCtrl_PushSeparator(); // MENUE TRENNLINIE |
|
MenuCtrl_PushML2_P( OSDS_DATASV2 , MENU_ITEM, NOFUNC , OSDS_DATASV2_de , OSDS_DATASV2_en ); |
|
|
//--------------- |
// Control |
//--------------- |
while( true ) |
{ |
MenuCtrl_Control( MENUCTRL_EVENT ); |
|
if( MenuCtrl_GetKey() == KEY_ESC ) break; // ENDE |
|
itemid = MenuCtrl_GetItemId(); // welcher Menu-Punkt (ID) |
|
if( itemid == OSDS_LOWBAT ) { Config.MK_LowBat = Edit_generic( Config.MK_LowBat ,32,255, Show_uint10th,1 ,strGet(STR_HELP_LOWBAT1),strGet(STR_HELP_LOWBAT2)); } |
if( itemid == OSDS_SHOWCELLU ) { Config.OSD_ShowCellU = Edit_generic( Config.OSD_ShowCellU , 0, 1, YesNo,1 ,NULL,NULL); } |
if( itemid == OSDS_MAH ) { Config.OSD_mAh_Warning = Edit_generic( Config.OSD_mAh_Warning , 0,30000, Show_uint5,100 ,NULL,NULL); } |
if( itemid == OSDS_RCERROR ) { Config.OSD_RCErrorbeep = Edit_generic( Config.OSD_RCErrorbeep , 0, 1, OnOff,1 ,NULL,NULL); } |
if( itemid == OSDS_MKSETTING ) { Config.OSD_ShowMKSetting = Edit_generic( Config.OSD_ShowMKSetting, 0, 1, YesNo,1 ,NULL,NULL); } |
if( itemid == OSDS_DATASV2 ) { Config.OSD_SendOSD = Edit_generic( Config.OSD_SendOSD , 0, 1, YesNo,1 ,NULL,NULL); } |
|
#ifdef USE_OSD_SCREEN_OLD |
if( itemid == OSDS_FALLSPEED ) { Config.OSD_Fallspeed = Edit_generic( Config.OSD_Fallspeed , 0,247, Show_uint10th,1 ,NULL,NULL); } |
if( itemid == OSDS_VARIOBEEP ) { Config.OSD_VarioBeep = Edit_generic( Config.OSD_VarioBeep , 0, 1, YesNo,1 ,NULL,NULL); } |
if( itemid == OSDS_OUTFORMAT ) { Config.OSD_LEDform = Edit_LED_Form(Config.OSD_LEDform , 1, 3 ); } |
if( itemid == OSDS_OUTPOLARITY ) { Config.OSD_InvertOut = Edit_generic( Config.OSD_InvertOut , 0, 1, YesNo,1 ,NULL,NULL); } |
if( itemid == OSDS_VOLTBAR ) { Config.OSD_LipoBar = Edit_generic( Config.OSD_LipoBar , 0, 1, YesNo,1 ,NULL,NULL); } |
#endif |
} |
|
//--------------- |
// Destroy |
//--------------- |
MenuCtrl_Destroy(); |
} |
|
|
|
//-------------------------------------------------------------- |
//-------------------------------------------------------------- |
void Mark_OSDScreen( uint8_t osdscreenid ) |
{ |
MenuCtrl_ItemMarkR( osdscreenid, (Config.OSD_UseScreen & (1 << osdscreenid)) != 0 ); |
} |
|
|
//-------------------------------------------------------------- |
//-------------------------------------------------------------- |
void Edit_OSDScreen( uint8_t osdscreenid ) |
{ |
if( (Config.OSD_UseScreen & (1 << osdscreenid)) == 0 ) |
Config.OSD_UseScreen = (Config.OSD_UseScreen | (1 << osdscreenid)); |
else |
Config.OSD_UseScreen = (Config.OSD_UseScreen ^ (1 << osdscreenid)); |
|
Mark_OSDScreen( osdscreenid ); |
} |
|
|
|
//-------------------------------------------------------------- |
// Setup_OSDScreens() |
//-------------------------------------------------------------- |
void Setup_OSDScreens( void ) |
{ |
uint8_t itemid; |
|
//--------------- |
// Create |
//--------------- |
MenuCtrl_Create(); |
MenuCtrl_SetTitleFromParentItem(); // "OSD Screens" |
|
//--------------- |
// Menuitems |
//--------------- |
#ifdef USE_OSD_SCREEN_NAVIGATION |
MenuCtrl_Push_P( OSDSCREEN_NAVIGATION, MENU_ITEM, NOFUNC, strGet(STR_OSDSCREEN_NAVIGATION) ); Mark_OSDScreen( OSDSCREEN_NAVIGATION ); |
#endif |
|
#ifdef USE_OSD_SCREEN_WAYPOINTS |
MenuCtrl_Push_P( OSDSCREEN_WAYPOINTS , MENU_ITEM, NOFUNC, strGet(STR_OSDSCREEN_WAYPOINTS) ); Mark_OSDScreen( OSDSCREEN_WAYPOINTS ); |
#endif |
|
#ifdef USE_OSD_SCREEN_ELECTRIC |
MenuCtrl_Push_P( OSDSCREEN_ELECTRIC , MENU_ITEM, NOFUNC, strGet(STR_OSDSCREEN_ELECTRIC) ); Mark_OSDScreen( OSDSCREEN_ELECTRIC ); |
#endif |
|
#ifdef USE_OSD_SCREEN_ELECTRIC_N |
MenuCtrl_Push_P( OSDSCREEN_ELECTRIC , MENU_ITEM, NOFUNC, strGet(STR_OSDSCREEN_ELECTRIC) ); Mark_OSDScreen( OSDSCREEN_ELECTRIC ); |
#endif |
|
#ifdef USE_OSD_SCREEN_MKSTATUS |
MenuCtrl_Push_P( OSDSCREEN_MKSTATUS , MENU_ITEM, NOFUNC, strGet(STR_OSDSCREEN_MKSTATUS) ); Mark_OSDScreen( OSDSCREEN_MKSTATUS ); |
#endif |
|
#ifdef USE_OSD_SCREEN_USERGPS |
MenuCtrl_Push_P( OSDSCREEN_USERGPS , MENU_ITEM, NOFUNC, strGet(STR_OSDSCREEN_USERGPS) ); Mark_OSDScreen( OSDSCREEN_USERGPS ); |
#endif |
|
#ifdef USE_OSD_SCREEN_3DLAGE |
MenuCtrl_Push_P( OSDSCREEN_3DLAGE , MENU_ITEM, NOFUNC, strGet(STR_OSDSCREEN_3DLAGE) ); Mark_OSDScreen( OSDSCREEN_3DLAGE ); |
#endif |
|
#ifdef USE_OSD_SCREEN_STATISTIC |
MenuCtrl_Push_P( OSDSCREEN_STATISTICS, MENU_ITEM, NOFUNC, strGet(STR_OSDSCREEN_STATISTIC) ); Mark_OSDScreen( OSDSCREEN_STATISTICS ); |
#endif |
|
#ifdef USE_OSD_SCREEN_OLD |
MenuCtrl_Push_P( OSDSCREEN_OSD0, MENU_ITEM, NOFUNC, strGet(STR_OSDSCREEN_OSD0) ); Mark_OSDScreen( OSDSCREEN_OSD0 ); |
MenuCtrl_Push_P( OSDSCREEN_OSD1, MENU_ITEM, NOFUNC, strGet(STR_OSDSCREEN_OSD1) ); Mark_OSDScreen( OSDSCREEN_OSD1 ); |
MenuCtrl_Push_P( OSDSCREEN_OSD2, MENU_ITEM, NOFUNC, strGet(STR_OSDSCREEN_OSD2) ); Mark_OSDScreen( OSDSCREEN_OSD2 ); |
#endif |
|
|
//--------------- |
// Control |
//--------------- |
while( true ) |
{ |
MenuCtrl_Control( MENUCTRL_EVENT ); |
|
if( MenuCtrl_GetKey() == KEY_ESC ) break; // ENDE |
|
itemid = MenuCtrl_GetItemId(); // welcher Menu-Punkt (ID) |
|
Edit_OSDScreen( itemid ); |
} |
|
//--------------- |
// Destroy |
//--------------- |
MenuCtrl_Destroy(); |
} |
|
|
//-------------------------------------------------------------- |
// Setup_FollowMe() |
//-------------------------------------------------------------- |
#ifdef USE_FOLLOWME |
void Setup_FollowMe( void ) |
{ |
uint8_t itemid; |
|
//--------------- |
// Create |
//--------------- |
MenuCtrl_Create(); |
MenuCtrl_SetTitle_P( PSTR("FollowMe Setup") ); |
|
//--------------- |
// Menuitems |
//--------------- |
//-------------------------------------------------------------------------------------------------------- |
// 25.06.2014 OG - auskommentiert weil nicht verwendet. FollowMe wird aktuell ueber die Daten-Updaterate |
// der BT GPS-Maus getriggert! |
//-------------------------------------------------------------------------------------------------------- |
//MenuCtrl_PushML2_P( FME_REFRESH , MENU_ITEM, NOFUNC , FME_REFRESH_de , FME_REFRESH_en ); |
|
|
|
#ifdef USE_FOLLOWME_STEP2 |
MenuCtrl_PushML2_P( FME_DISTANCE, MENU_ITEM, NOFUNC , FME_DISTANCE_de , FME_DISTANCE_en ); |
MenuCtrl_PushML2_P( FME_AZIMUTH , MENU_ITEM, NOFUNC , FME_AZIMUTH_de , FME_AZIMUTH_en ); |
#endif |
MenuCtrl_PushML2_P( FME_SPEED , MENU_ITEM, NOFUNC , FME_SPEED_de , FME_SPEED_en ); |
MenuCtrl_PushML2_P( FME_RADIUS , MENU_ITEM, NOFUNC , FME_RADIUS_de , FME_RADIUS_en ); |
|
MenuCtrl_PushSeparator(); // MENUE TRENNLINIE |
MenuCtrl_PushML2_P( GPS_DATA , MENU_ITEM, NOFUNC , GPS_DATA_de , GPS_DATA_en ); |
|
//--------------- |
// Control |
//--------------- |
while( true ) |
{ |
MenuCtrl_Control( MENUCTRL_EVENT ); |
|
if( MenuCtrl_GetKey() == KEY_ESC ) break; // ENDE |
|
itemid = MenuCtrl_GetItemId(); // welcher Menu-Punkt (ID) |
|
//if( itemid == FME_REFRESH ) { Config.FM_Refresh = Edit_generic( Config.FM_Refresh ,250,60000, Show_uint3,1 ,NULL,NULL); } |
|
if( itemid == FME_DISTANCE) { Config.FM_Distance= Edit_generic( Config.FM_Distance , 0, 100, Show_uint3,1 ,strGet(STR_METERS),NULL); } |
if( itemid == FME_AZIMUTH ) { Config.FM_Azimuth = Edit_generic( Config.FM_Azimuth , 0, 360, Show_uint3,1 ,PSTR("Grad"),NULL); } |
if( itemid == FME_SPEED ) { Config.FM_Speed = Edit_generic( Config.FM_Speed , 0, 100, Show_uint3,1 ,PSTR("0.1 m/s") ,NULL); } |
if( itemid == FME_RADIUS ) { Config.FM_Radius = Edit_generic( Config.FM_Radius , 1, 20, Show_uint3,1 ,strGet(STR_METERS),NULL); } |
|
//-------------------- |
// GPS_DATA |
//-------------------- |
if( itemid == GPS_DATA ) |
{ |
GPSMouse_ShowData( GPSMOUSE_SHOW_TIME, 0 ); // 0 = beenden mit Verbindungstrennung |
} |
} |
|
//--------------- |
// Destroy |
//--------------- |
MenuCtrl_Destroy(); |
} |
#endif // USE_FOLLOWME |
|
|
|
//-------------------------------------------------------------- |
// Setup_GPSMouse() |
//-------------------------------------------------------------- |
#ifdef USE_BLUETOOTH |
|
void Setup_GPSMouse( void ) |
{ |
uint8_t itemid; |
|
//--------------- |
// Create |
//--------------- |
MenuCtrl_Create(); |
MenuCtrl_SetTitleFromParentItem(); // "GPS Maus" |
|
//--------------- |
// Menuitems |
//--------------- |
MenuCtrl_PushML2_P( GPS_SEARCH , MENU_ITEM, &BT_SearchDevices , GPS_SEARCH_de , GPS_SEARCH_en ); |
MenuCtrl_PushML2_P( GPS_DEVICES , MENU_ITEM, &BT_SelectDevice , GPS_DEVICES_de , GPS_DEVICES_en ); |
|
//-------------------------------------------------------------------------------------------------------- |
// 25.06.2014 OG - auskommentiert weil erstmal nicht weiter benoetigt. Wurde zwar verwendet in tracking.c |
// aber auch dort wurde betroffener Code deaktiviert - siehe Anmerkung tracking.c / PKT_tracking() |
//-------------------------------------------------------------------------------------------------------- |
//MenuCtrl_PushML2_P( GPS_TYPE , MENU_ITEM, NOFUNC , GPS_TYPE_de , GPS_TYPE_en ); |
|
//-------------------------------------------------------------------------------------------------------- |
// 25.06.2014 OG - auskommentiert weil nirgendwo verwendet |
//-------------------------------------------------------------------------------------------------------- |
//MenuCtrl_PushML2_P( GPS_ACTIVE , MENU_ITEM, NOFUNC , GPS_ACTIVE_de , GPS_ACTIVE_en ); |
|
MenuCtrl_PushSeparator(); // MENUE TRENNLINIE |
MenuCtrl_PushML2_P( GPS_SHOWDEV , MENU_ITEM, NOFUNC , GPS_SHOWDEV_de , GPS_SHOWDEV_en ); |
MenuCtrl_PushML2_P( GPS_DATA , MENU_ITEM, NOFUNC , GPS_DATA_de , GPS_DATA_en ); |
|
|
//--------------- |
// Control |
//--------------- |
while( true ) |
{ |
MenuCtrl_Control( MENUCTRL_EVENT ); |
|
if( MenuCtrl_GetKey() == KEY_ESC ) break; // ENDE |
|
itemid = MenuCtrl_GetItemId(); // welcher Menu-Punkt (ID) |
|
//-------------------- |
// GPS_TYPE |
//-------------------- |
/* |
if( itemid == GPS_TYPE ) |
{ |
Config.gps_UsedGPSMouse = Edit_generic( Config.gps_UsedGPSMouse, 0,1,GPSMOUSE,1 ,NULL,NULL); |
} |
*/ |
|
//-------------------- |
// GPS_ACTIVE |
//-------------------- |
/* |
if( itemid == GPS_ACTIVE ) |
{ |
Config.gps_UseGPS = Edit_generic( Config.gps_UseGPS, 0,1,YesNo,1 ,NULL,NULL); |
} |
*/ |
|
|
//-------------------- |
// GPS_SHOWDEV |
//-------------------- |
if( itemid == GPS_SHOWDEV ) |
{ |
//Show_MAC( progmem, headline, mac) |
Show_MAC( false, Config.gps_UsedDevName, Config.gps_UsedMac); |
} |
|
|
//-------------------- |
// GPS_DATA |
//-------------------- |
if( itemid == GPS_DATA ) |
{ |
GPSMouse_ShowData( GPSMOUSE_SHOW_TIME, 0 ); // 0 = beenden mit Verbindungstrennung |
} |
|
} |
|
//--------------- |
// Destroy |
//--------------- |
MenuCtrl_Destroy(); |
} |
|
|
|
|
//-------------------------------------------------------------- |
// zeigt die Konfig des BTM-222 |
//-------------------------------------------------------------- |
void BTM222_Info( void ) |
{ |
|
lcd_cls(); |
|
set_Modul_On( Bluetooth ); |
|
if( !ScrollBox_Create(55) ) // max. 55 Zeilen |
return; // kein RAM mehr |
|
ScrollBox_Push_P( MNORMAL, PSTR("BTM-222 Config") ); |
ScrollBox_Push_P( MNORMAL, PSTR("") ); |
bt_showsettings(); |
ScrollBox_Push_P( MNORMAL, PSTR("End of Config") ); |
|
ScrollBox_Show(); |
ScrollBox_Destroy(); // free memory |
|
set_Modul_On( USB ); |
|
} |
|
|
|
//-------------------------------------------------------------- |
// Setup_BTM222_MenuCreate() |
// |
// das Menue aendert sich je nachdem ob BTM222 ein- oder |
// ausgeschaltet ist |
//-------------------------------------------------------------- |
void Setup_BTM222_MenuCreate( void ) |
{ |
//--------------- |
// Create |
//--------------- |
MenuCtrl_Create(); |
MenuCtrl_SetTitleFromParentItem(); // "Bluetooth" |
|
//--------------- |
// Menuitems |
//--------------- |
MenuCtrl_PushML2_P( BT_INSTALLED , MENU_ITEM, NOFUNC , BT_INSTALLED_de , BT_INSTALLED_en ); |
|
if( Config.UseBT ) |
{ |
MenuCtrl_PushSeparator(); // MENUE TRENNLINIE |
MenuCtrl_PushML2_P( BT_NAME , MENU_ITEM, NOFUNC , BT_NAME_de , BT_NAME_en ); |
MenuCtrl_PushML2_P( BT_PIN , MENU_ITEM, NOFUNC , BT_PIN_de , BT_PIN_en ); |
MenuCtrl_PushML2_P( BT_REID , MENU_ITEM, NOFUNC , BT_REID_de , BT_REID_en ); |
MenuCtrl_PushSeparator(); // MENUE TRENNLINIE |
MenuCtrl_PushML2_P( BT_INIT , MENU_ITEM, NOFUNC , BT_INIT_de , BT_INIT_en ); |
MenuCtrl_PushML2_P( BT_PCCONFIG , MENU_ITEM, &Port_FC2CFG_BT , BT_PCCONFIG_de , BT_PCCONFIG_en ); |
MenuCtrl_PushML2_P( BT_SHOWCONFIG, MENU_ITEM, &BTM222_Info , BT_SHOWCONFIG_de, BT_SHOWCONFIG_en); |
MenuCtrl_PushSeparator(); // MENUE TRENNLINIE |
MenuCtrl_PushML2_P( BT_MAC , MENU_ITEM, NOFUNC , BT_MAC_de , BT_MAC_en ); |
} |
} |
|
#endif // end: #ifdef USE_BLUETOOTH |
|
|
|
//-------------------------------------------------------------- |
// Setup_BTM222() |
//-------------------------------------------------------------- |
#ifdef USE_BLUETOOTH |
|
void Setup_BTM222( void ) |
{ |
uint8_t itemid; |
uint8_t UseBT; |
uint8_t i; |
char string[11]; |
|
Setup_BTM222_MenuCreate(); |
|
//--------------- |
// Control |
//--------------- |
while( true ) |
{ |
MenuCtrl_Control( MENUCTRL_EVENT ); |
|
if( MenuCtrl_GetKey() == KEY_ESC ) break; // ENDE |
|
itemid = MenuCtrl_GetItemId(); // welcher Menu-Punkt (ID) |
edit = 0; |
|
//-------------------- |
// BT_INSTALLED |
//-------------------- |
if( itemid == BT_INSTALLED ) |
{ |
UseBT = Config.UseBT; |
Config.UseBT = Edit_generic( Config.UseBT ,0,1, YesNo,1 ,NULL,NULL); |
|
if( UseBT != Config.UseBT ) // hat Benutzer Einstellung geaendert? |
{ |
if( Config.UseBT ) // BTM222 wurde aktiviert - initialisieren |
{ |
BTM222_Initalize(); |
|
//if( bt_init() ) |
// Config.BTIsSet = true; |
//else |
// Config.BTIsSet = false; |
} |
|
MenuCtrl_Destroy(); // Menue aendern wegen wechsel Wi232 vorhanden / nicht vorhanden |
Setup_BTM222_MenuCreate(); |
continue; |
} |
} |
|
|
//-------------------- |
// BT_NAME |
//-------------------- |
if( itemid == BT_NAME ) |
{ |
bt_fixname(); |
strncpyfill( string, Config.bt_name, bt_name_length+1 ); // bt_name_length=10 + 1 Terminierende 0 |
Edit_String( string, bt_name_length, EDIT_BT_NAME ); |
|
if( edit == 1 ) |
{ |
strrtrim( EditString); // Leerzeichen rechts entfernen |
//lcd_print_at( 0, 5, EditString, 0); // DEBUG |
//lcdx_printf_at( 17, 5, MNORMAL, 0,0, "%3d", strlen(EditString) ); |
//_delay_ms(8000); |
|
strncpy( Config.bt_name, EditString, bt_name_length+1 ); |
} |
} |
|
|
//-------------------- |
// BT_PIN |
//-------------------- |
if( itemid == BT_PIN ) |
{ |
for( i = 0; i < bt_pin_length; i++) |
{ |
string[i] = Config.bt_pin[i]; |
} |
string[bt_pin_length] = 0; |
Edit_String( string, bt_pin_length, EDIT_BT_PIN ); |
|
if (edit == 1) |
{ |
for( i = 0; i < bt_pin_length; i++) |
{ |
Config.bt_pin[i] = EditString[i]; |
} |
} |
} |
|
|
//-------------------- |
// BT_INIT |
//-------------------- |
if( itemid == BT_INIT ) |
{ |
//lcd_cls (); |
//Old_Baudrate = Config.PKT_Baudrate; |
|
BTM222_Initalize(); |
|
/* |
if( bt_init() == true ) |
{ |
lcd_printp_at( 0, 3, PSTR("BT Init ok"), MNORMAL); |
WriteBTInitFlag(); |
} |
else |
{ |
lcd_printp_at( 0, 3, PSTR("BT Init Error"), MNORMAL); |
Config.BTIsSet = false; |
set_beep( 1000, 0x0040, BeepNormal); |
} |
_delay_ms(2500); // 2.5 Sekunden anzeigen fuer Benutzer |
*/ |
} |
|
|
//-------------------- |
// BT_MAC |
//-------------------- |
if( itemid == BT_MAC ) |
{ |
//Show_MAC( progmem, headline, mac) |
Show_MAC( true, PSTR("BTM-222 MAC"), Config.bt_Mac); |
} |
|
|
//-------------------- |
// BT_REID |
//-------------------- |
if( itemid == BT_REID ) |
{ |
for( i = 0; i < RE_ID_length; i++) |
{ |
string[i] = Config.RE_ID[i]; |
} |
string[RE_ID_length] = 0; |
Edit_String( string, RE_ID_length, EDIT_BT_PIN ); |
|
if( edit == 1 ) |
{ |
for( i = 0; i < RE_ID_length; i++) |
{ |
Config.RE_ID[i] = EditString[i]; |
} |
} |
} |
|
} // end: while( true ) |
|
//--------------- |
// Destroy |
//--------------- |
MenuCtrl_Destroy(); |
|
} // end: Setup_BTM222() |
|
#endif // end: #ifdef USE_BLUETOOTH |
|
|
|
|
//-------------------------------------------------------------- |
// Setup_BLE() |
//-------------------------------------------------------------- |
void Setup_BLE( void ) |
{ |
uint8_t itemid; |
|
//--------------- |
// Create |
//--------------- |
MenuCtrl_Create(); |
MenuCtrl_SetTitleFromParentItem(); // "Bluetooth BLE" |
|
//--------------- |
// Menuitems |
//--------------- |
MenuCtrl_Push_P( BLE_INSTALLED, MENU_ITEM, NOFUNC, strGet(MODULE_EXIST) ); |
|
|
//--------------- |
// Control |
//--------------- |
while( true ) |
{ |
MenuCtrl_Control( MENUCTRL_EVENT ); |
|
if( MenuCtrl_GetKey() == KEY_ESC ) break; // ENDE |
|
itemid = MenuCtrl_GetItemId(); // welcher Menu-Punkt (ID) |
|
//-------------------- |
// BT_INSTALLED |
//-------------------- |
if( itemid == BT_INSTALLED ) |
{ |
Config.UseBLE = Edit_generic( Config.UseBLE, 0, 1, YesNo, 1 ,strGet(STR_EXTSV2MODULE),NULL); |
} |
} // end: while( true ) |
|
//--------------- |
// Destroy |
//--------------- |
MenuCtrl_Destroy(); |
|
} // end: Setup_BTM222() |
|
|
|
//-------------------------------------------------------------- |
// Setup_MKConnection() |
//-------------------------------------------------------------- |
void Setup_MKConnection( void ) |
{ |
uint8_t itemid; |
uint8_t old; |
|
//--------------- |
// Create |
//--------------- |
MenuCtrl_Create(); |
MenuCtrl_SetTitleFromParentItem(); // "Bluetooth BLE" |
|
//--------------- |
// Menuitems |
//--------------- |
MenuCtrl_PushML2_P( MKCONN_CONNECTION , MENU_ITEM, NOFUNC , MKCONN_CONNECTION_de , MKCONN_CONNECTION_en ); |
MenuCtrl_PushSeparator(); // MENUE TRENNLINIE |
MenuCtrl_PushML2_P( MKCONN_BAUDRATE , MENU_ITEM, NOFUNC , MKCONN_BAUDRATE_de , MKCONN_BAUDRATE_en ); |
|
|
//--------------- |
// Control |
//--------------- |
while( true ) |
{ |
MenuCtrl_Control( MENUCTRL_EVENT ); |
|
if( MenuCtrl_GetKey() == KEY_ESC ) break; // ENDE |
|
itemid = MenuCtrl_GetItemId(); // welcher Menu-Punkt (ID) |
|
|
//-------------------- |
// MKCONN_CONNECTION |
//-------------------- |
if( itemid == MKCONN_CONNECTION ) |
{ |
old = Config.U02SV2; |
Config.U02SV2 = Edit_generic( Config.U02SV2, 0, 1, MK_Connection,1, NULL,NULL); |
|
if( Config.U02SV2 != old ) // Verbindung geaendert? |
{ |
if( Config.U02SV2 == 1 ) Change_Output( Uart02FC ); // 1 = Kabel |
else Change_Output( Uart02Wi ); // 0 = Wi.232 |
} |
|
if( (Config.U02SV2 == 0) && (Config.UseWi == false) ) // FEHLER: Wi.232 nicht aktiviert (Config.U02SV2 = 0 -> entspricht Wi.232) |
{ |
//PKT_Message_P( text , error, timeout, beep, clear) |
PKT_Message_P( strGet(STR_WI232_ACTIVATE), true , 3000 , true, true); |
} |
} |
|
|
//-------------------- |
// MKCONN_BAUDRATE |
//-------------------- |
if( itemid == MKCONN_BAUDRATE ) |
{ |
old = Config.PKT_Baudrate; |
Config.PKT_Baudrate = Edit_generic( Config.PKT_Baudrate ,1,6,Baudrate,1 ,PSTR("Standard: ! 57600 !"),NULL); |
|
if( Config.PKT_Baudrate != old ) |
{ |
// Wi.232 umkonfigurieren |
if( Config.UseWi ) |
{ |
Wi232_Initalize(); |
} |
|
// BTM222 umkonfigurieren |
#ifdef USE_BLUETOOTH |
if( Config.UseBT ) |
{ |
//set_BTOn(); |
BTM222_Initalize(); |
//set_BTOff(); |
} |
#endif // end: #ifdef USE_BLUETOOTH |
} |
} |
|
} // end: while( true ) |
|
//--------------- |
// Destroy |
//--------------- |
MenuCtrl_Destroy(); |
|
} // end: Setup_BTM222() |
|
|
|
|
//-------------------------------------------------------------- |
// Setup_WI232_MenuCreate() |
// |
// das Menue aendert sich je nachdem ob Wi.232 ein- oder |
// ausgeschaltet ist |
//-------------------------------------------------------------- |
void Setup_WI232_MenuCreate( void ) |
{ |
//--------------- |
// Create |
//--------------- |
MenuCtrl_Create(); |
MenuCtrl_SetTitleFromParentItem(); // "Wi.232" |
|
//--------------- |
// Menuitems |
//--------------- |
MenuCtrl_Push_P( WI_INSTALLED , MENU_ITEM, NOFUNC , strGet(CONNECT13) ); |
|
if( Config.UseWi ) |
{ |
MenuCtrl_PushSeparator(); // MENUE TRENNLINIE |
MenuCtrl_PushML2_P( WI_TXRX , MENU_ITEM, NOFUNC , WI_TXRX_de , WI_TXRX_en ); |
MenuCtrl_PushML2_P( WI_GROUP , MENU_ITEM, NOFUNC , WI_GROUP_de , WI_GROUP_en ); |
|
// 06.06.2014 OG |
//MenuCtrl_PushML2_P( WI_MODE , MENU_ITEM, NOFUNC , WI_MODE_de , WI_MODE_en ); |
//MenuCtrl_PushML2_P( WI_TIMEOUT , MENU_ITEM, NOFUNC , WI_TIMEOUT_de , WI_TIMEOUT_en ); |
//MenuCtrl_PushML2_P( WI_MTU , MENU_ITEM, NOFUNC , WI_MTU_de , WI_MTU_en ); |
|
MenuCtrl_PushSeparator(); // MENUE TRENNLINIE |
MenuCtrl_PushML2_P( WI_INIT , MENU_ITEM, NOFUNC , WI_INIT_de , WI_INIT_en ); |
|
//MenuCtrl_PushML2_P( WI_PCCONFIG , MENU_ITEM, &Port_USB2CFG_Wi , WI_PCCONFIG_de , WI_PCCONFIG_en ); |
MenuCtrl_PushML2_P( WI_PCCONFIG , MENU_ITEM, &Wi232_ConfigPC , WI_PCCONFIG_de , WI_PCCONFIG_en ); |
|
|
} |
} |
|
|
|
//-------------------------------------------------------------- |
// Setup_WI232() |
//-------------------------------------------------------------- |
void Setup_WI232( void ) |
{ |
uint8_t itemid; |
uint8_t UseWi; |
|
Setup_WI232_MenuCreate(); |
|
//--------------- |
// Control |
//--------------- |
while( true ) |
{ |
MenuCtrl_Control( MENUCTRL_EVENT ); |
|
if( MenuCtrl_GetKey() == KEY_ESC ) break; // ENDE |
|
itemid = MenuCtrl_GetItemId(); // welcher Menu-Punkt (ID) |
edit = 0; |
|
if( itemid == WI_TXRX ) { Config.WiTXRXChannel = Edit_generic( Config.WiTXRXChannel , 0, 5, Show_uint3,1 ,NULL,NULL); } |
if( itemid == WI_GROUP ) { Config.WiNetworkGroup = Edit_generic( Config.WiNetworkGroup , 0, 127, Show_uint3,1 ,NULL,NULL); } |
//if( itemid == WI_MODE ) { Config.WiNetworkMode = Edit_generic( Config.WiNetworkMode , 0, 1, Wi_Netmode,1 ,NULL,NULL); } |
//if( itemid == WI_TIMEOUT ) { Config.WiTXTO = Edit_generic( Config.WiTXTO , 0, 127, Show_uint3,1 ,NULL,NULL); } |
//if( itemid == WI_MTU ) { Config.WiUartMTU = Edit_generic( Config.WiUartMTU , 0, 127, Show_uint3,1 ,NULL,NULL); } |
if( itemid == WI_INIT ) { Wi232_Initalize(); } |
|
//-------------------- |
// WI_INSTALLED |
//-------------------- |
if( itemid == WI_INSTALLED ) |
{ |
UseWi = Config.UseWi; |
Config.UseWi = Edit_generic( Config.UseWi, 0,1, YesNo,1, NULL,NULL); |
if( UseWi != Config.UseWi ) // hat Benutzer Einstellung geaendert? |
{ |
if( Config.UseWi ) |
Wi232_Initalize(); // Wi232 wurde aktiviert: init |
|
MenuCtrl_Destroy(); // Menue aendern wegen wechsel Wi232 vorhanden / nicht vorhanden |
Setup_WI232_MenuCreate(); |
continue; |
} |
} |
} |
|
//--------------- |
// Destroy |
//--------------- |
MenuCtrl_Destroy(); |
} |
|
|
|
//-------------------------------------------------------------- |
// Setup_PKTGeneric() |
// |
// entspricht "PKT allgemein" |
//-------------------------------------------------------------- |
void Setup_PKTGeneric( void ) |
{ |
uint8_t itemid; |
uint8_t old; |
|
//--------------- |
// Create |
//--------------- |
MenuCtrl_Create(); |
|
//--------------- |
// Einstellungen |
//--------------- |
MenuCtrl_SetTitleFromParentItem(); // "PKT allgemein" |
//MenuCtrl_SetCycle( false ); |
//MenuCtrl_SetShowBatt( false ); |
//MenuCtrl_SetBeep( true ); |
|
//--------------- |
// Menuitems |
//--------------- |
MenuCtrl_PushML2_P( PKT_LANGUAGE , MENU_ITEM, NOFUNC , LANGUAGE_de , LANGUAGE_en ); |
MenuCtrl_PushML2_P( TIME_ZONE , MENU_ITEM, NOFUNC , TIME_ZONE_de , TIME_ZONE_en ); |
MenuCtrl_PushML2_P( TIME_SUMMER , MENU_ITEM, NOFUNC , TIME_SUMMER_de , TIME_SUMMER_en ); |
|
MenuCtrl_PushSeparator(); // MENUE TRENNLINIE |
|
MenuCtrl_PushML2_P( PKT_PKTOFF , MENU_ITEM, NOFUNC , PKT_PKTOFF_de , PKT_PKTOFF_en ); |
MenuCtrl_PushML2_P( PKT_LIGHTOFF , MENU_ITEM, NOFUNC , LIGHTOFF_de , LIGHTOFF_en ); |
|
MenuCtrl_PushSeparator(); // MENUE TRENNLINIE |
|
// 18.04.2014 OG: rausgenommen da es aktuell auch nicht mehr mit PKT 3.9m Hardware geht |
//if( PCB_Version == PKT39m ) // Helligkeit nur bei PKT39m - bei der PKT39x geht das nicht mehr |
// MenuCtrl_PushML2_P( PKT_BRIGHTNESS , MENU_ITEM, NOFUNC , BRIGHTNESS_de , BRIGHTNESS_en ); |
|
MenuCtrl_PushML2_P( PKT_CONTRAST , MENU_ITEM, NOFUNC , CONTRAST_de , CONTRAST_en ); |
MenuCtrl_PushML2_P( PKT_BEEPER , MENU_ITEM, NOFUNC , BEEPER_de , BEEPER_en ); |
|
#ifdef USE_SOUND |
MenuCtrl_PushML2_P( PKT_SOUNDMODUL , MENU_ITEM, NOFUNC , SOUNDMODUL_de , SOUNDMODUL_en ); |
MenuCtrl_PushML2_P( PKT_VOLUME , MENU_ITEM, NOFUNC , VOLUME_de , VOLUME_en ); |
#endif |
|
MenuCtrl_PushML2_P( PKT_ACCUTYPE , MENU_ITEM, NOFUNC , ACCUTYPE_de , ACCUTYPE_en ); |
MenuCtrl_PushML2_P( PKT_ACCUMEASURE , MENU_ITEM, NOFUNC , ACCUMEASURE_de , ACCUMEASURE_en ); |
|
//--------------- |
// Control |
//--------------- |
while( true ) |
{ |
MenuCtrl_Control( MENUCTRL_EVENT ); |
|
if( MenuCtrl_GetKey() == KEY_ESC ) break; |
|
itemid = MenuCtrl_GetItemId(); // welcher Menu-Punkt (ID) |
|
if( itemid == PKT_LANGUAGE ) |
{ |
old = Config.DisplayLanguage; |
Config.DisplayLanguage = Edit_generic( Config.DisplayLanguage , 0, 1, Language,1, NULL,NULL); |
|
if( old != Config.DisplayLanguage ) |
{ |
PKT_Ask_Restart( strGetLanguage(LANGUAGE_de,LANGUAGE_en) ); |
} |
} |
|
if( itemid == TIME_ZONE ) Config.timezone = Edit_generic( Config.timezone ,-12, 12, Show_uint3,1, PSTR("+1 = Berlin "),PSTR("-5 = New York")); |
if( itemid == TIME_SUMMER ) Config.summertime = Edit_generic( Config.summertime , 0, 1, YesNo,1, NULL,NULL); |
if( itemid == PKT_LIGHTOFF ) Config.DisplayTimeout = Edit_generic( Config.DisplayTimeout , 0,254, Show_uint3,1, strGet(STR_HELP_PKTOFFTIME1),NULL); |
if( itemid == PKT_PKTOFF ) Config.PKTOffTimeout = Edit_generic( Config.PKTOffTimeout , 0,254, Show_uint3,1, strGet(STR_HELP_PKTOFFTIME1),NULL); |
if( itemid == PKT_BEEPER ) Config.HWBeeper = Edit_generic( Config.HWBeeper , 0, 1, YesNo,1, NULL,NULL); |
if( itemid == PKT_SOUNDMODUL ) Config.HWSound = Edit_generic( Config.HWSound , 0, 1, YesNo,1, NULL,NULL); |
if( itemid == PKT_VOLUME ) Config.Volume = Edit_generic( Config.Volume , 0, 50, Show_uint3,1, NULL,NULL); |
if( itemid == PKT_CONTRAST ) { Config.LCD_Kontrast = Edit_generic( Config.LCD_Kontrast , 10, 40, Kontrast,1, NULL,NULL); |
lcd_set_contrast( Config.LCD_Kontrast ); |
} |
|
//if( itemid == PKT_BRIGHTNESS ) Config.LCD_Helligkeit = Edit_DisplayHelligkeit(Config.LCD_Helligkeit,0,100); |
if( itemid == PKT_ACCUTYPE ) Config.PKT_Accutyp = Edit_generic( Config.PKT_Accutyp , 0, 1, PKT_Akku,1, NULL,NULL); |
if( itemid == PKT_ACCUMEASURE ) Edit_LipoOffset(); |
} |
|
//--------------- |
// Destroy |
//--------------- |
MenuCtrl_Destroy(); |
} |
|
|
|
//-------------------------------------------------------------- |
// Setup_Main() |
// |
// Das Hauptmenue fuer das gesamte Setup |
//-------------------------------------------------------------- |
void Setup_MAIN( void ) |
{ |
uint8_t itemid; |
|
//--------------- |
// Create |
//--------------- |
MenuCtrl_Create(); |
|
//--------------- |
// Einstellungen |
//--------------- |
MenuCtrl_SetTitleFromParentItem(); // "PKT Setup" |
//MenuCtrl_SetTitle_P( PSTR("PKT Setup") ); |
//MenuCtrl_SetCycle( false ); |
//MenuCtrl_SetShowBatt( false ); |
//MenuCtrl_SetBeep( true ); |
|
//--------------- |
// Menuitems |
//--------------- |
MenuCtrl_PushML2_P( SETUP_PKTCONFIG , MENU_SUB , &Setup_PKTGeneric , SETUP_PKTCONFIG_de , SETUP_PKTCONFIG_en ); |
MenuCtrl_PushML2_P( SETUP_OSDVIEW , MENU_SUB , &Setup_OSD , SETUP_OSDVIEW_de , SETUP_OSDVIEW_en ); |
MenuCtrl_PushML2_P( SETUP_OSDSCREENS , MENU_SUB , &Setup_OSDScreens , SETUP_OSDSCREENS_de , SETUP_OSDSCREENS_en ); |
|
MenuCtrl_PushSeparator(); // MENUE TRENNLINIE |
|
MenuCtrl_PushML2_P( SETUP_MKCONNECTION , MENU_SUB , &Setup_MKConnection , SETUP_MKCONNECTION_de , SETUP_MKCONNECTION_en ); |
|
MenuCtrl_PushML2_P( SETUP_WI232 , MENU_SUB , &Setup_WI232 , SETUP_WI232_de , SETUP_WI232_en ); |
|
#ifdef USE_BLUETOOTH |
MenuCtrl_PushML2_P( SETUP_BTM222 , MENU_SUB , &Setup_BTM222 , SETUP_BTM222_de , SETUP_BTM222_en ); |
#endif |
|
#if (defined(USE_SV2MODULE_BLE) || defined(USE_WLAN)) |
if( PCB_SV2RxTxPatch ) // nur sichtbar mit SV2 Patch! |
MenuCtrl_PushSeparator(); // MENUE TRENNLINIE |
#endif |
|
#ifdef USE_SV2MODULE_BLE |
if( PCB_SV2RxTxPatch ) // nur sichtbar mit SV2 Patch! |
MenuCtrl_PushML2_P( SETUP_BLE , MENU_SUB , &Setup_BLE , SETUP_BLE_de , SETUP_BLE_en ); |
#endif |
|
#ifdef USE_WLAN |
if( PCB_SV2RxTxPatch ) // nur sichtbar mit SV2 Patch! |
MenuCtrl_PushML2_P( SETUP_WIFLY , MENU_SUB , &Setup_WiFly , SETUP_WIFLY_de , SETUP_WIFLY_en ); |
#endif |
|
MenuCtrl_PushSeparator(); // MENUE TRENNLINIE |
|
#ifdef USE_BLUETOOTH |
MenuCtrl_PushML2_P( SETUP_GPSMAUS , MENU_SUB , &Setup_GPSMouse , SETUP_GPSMAUS_de , SETUP_GPSMAUS_en ); |
#endif |
|
#ifdef USE_FOLLOWME |
MenuCtrl_PushML2_P( SETUP_FOLLOWME , MENU_SUB , &Setup_FollowMe , SETUP_FOLLOWME_de , SETUP_FOLLOWME_en ); |
#endif |
|
#ifdef USE_TRACKING |
MenuCtrl_PushML2_P( SETUP_SERVOCONFIG , MENU_SUB , &Setup_ServoTracking, SETUP_SERVOCONFIG_de , SETUP_SERVOCONFIG_en ); // tracking/servo_setup.c |
#endif |
|
#ifdef USE_JOYSTICK |
MenuCtrl_PushML2_P( SETUP_JOYSTICK , MENU_SUB , &Setup_Joysticks , SETUP_JOYSTICK_de , SETUP_JOYSTICK_en ); |
#endif |
|
MenuCtrl_PushSeparator(); // MENUE TRENNLINIE |
|
MenuCtrl_PushML2_P( SETUP_PKTUPDATE , MENU_ITEM, &PKT_Update , SETUP_PKTUPDATE_de , SETUP_PKTUPDATE_en ); |
//MenuCtrl_PushML2_P( SETUP_PKTDEBUG , MENU_ITEM, NOFUNC , SETUP_PKTDEBUG_de , SETUP_PKTDEBUG_en ); |
MenuCtrl_PushML2_P( SETUP_EEPROMRESET , MENU_ITEM, &PKT_Reset_EEprom , SETUP_EEPROMRESET_de , SETUP_EEPROMRESET_en ); |
|
//--------------- |
// Control |
//--------------- |
while( true ) |
{ |
MenuCtrl_Control( MENUCTRL_EVENT ); |
if( MenuCtrl_GetKey() == KEY_ESC ) break; |
|
itemid = MenuCtrl_GetItemId(); // welcher Menu-Punkt (ID) |
|
//-------------------- |
// SETUP_PKTDEBUG |
//-------------------- |
if( itemid == SETUP_PKTDEBUG ) |
{ |
Config.Debug = Edit_generic( Config.Debug, 0,1,Show_uint3,1 ,NULL,NULL); |
} |
|
} |
|
//--------------- |
// Destroy |
//--------------- |
MenuCtrl_Destroy(); |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |