/Transportables_Koptertool/PKT/trunk/mksettings/mkparameters.c |
---|
0,0 → 1,2692 |
/***************************************************************************** |
* 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 mkparameters.c |
//# |
//# 16.07.2015 Cebra |
//# - add: Erweiterung SingleWpControlChannel; (FC2.11a) |
//# MenuKeyChannel; (FC2.11a) |
//# |
//# 09.04.2015 Cebra |
//# - add: Erweiterung paramEditItemTable und ID_MENU_KAMERA_Items[] um neue Parameter (FC2.09j) |
//# param_ServoNickFailsave, param_ServoRollFailsave, param_Servo3Failsave, param_Servo4Failsave, param_Servo5Failsave |
//# |
//# 26.01.2015 Cebra |
//# - add: Comming Home Ausrichtung hinzugefügt, |
//# neue Einstellungen ab FC 209a im Wert ServoCompInvert, Bit4 + Bit5 |
//# |
//# 26.09.2014 Cebra |
//# - add: im Menü Höhe -> param_Hoehe_TiltCompensation, FC207d |
//# |
//# 04.06.2014 OG |
//# - chg: MK_Parameters_MenuMain() eine Menue-Trennlinie hinter Favoriten eingefuegt |
//# |
//# 14.05.2014 OG |
//# - chg: include "mkbase.h" geaendert auf "../mk/mkbase.h" |
//# |
//# 11.05.2014 OG |
//# - chg: Menu_Favoriten() umgestellt auf MenuCtrl_SetTitleFromParentItem() |
//# - chg: Menu_EditCategory() umgestellt auf MenuCtrl_SetTitleFromParentItem() |
//# |
//# 10.05.2014 OG |
//# - del: editDisableDeclCalc() - wurde ersetzt durch eine Transform-Funktion |
//# in paramset.c und wird jetzt von editGeneric() bearbeitet |
//# |
//# 07.05.2014 OG |
//# - chg: Menu_Favoriten() - uebernimmt den gegebenen Menuetitel vom |
//# uebergeordneten Eintrag aus mkparameters_messages.h (also Multilanguage) |
//# - chg: fav_add() - erweitert um Menue-Separatoren (Trennlinien) aufzunehmen |
//# - chg: Menu_EditCategory() umgestellt auf MenuCtrl_PushSeparatorID() |
//# |
//# 06.05.2014 OG |
//# - add: Favoriten-Verwaltung implementiert (Aenderungen an verschiedenen Funktionen) |
//# |
//# 18.04.2014 OG |
//# - fix: im ID_MENU_NAVICTRL fehlten param_NaviStickThreshold ("GPS Stick-Schwelle") |
//# und param_NaviGpsMinSat ("Min. Sat") |
//# |
//# 17.04.2014 OG |
//# - add: param_Servo3OnValue, param_Servo3OffValue, param_Servo4OnValue |
//# param_Servo4OffValue |
//# - add: param_NaviMaxFlyingRange, param_NaviDescendRange |
//# - chg: Menu_EditCategory() blendet ggf. doppelt aufeinanderfolgenden |
//# Menue-Separatoren aus |
//# |
//# 30.03.2014 OG |
//# - chg: Sprache Hollaendisch vollstaendig entfernt |
//# - chg: MenuCtrl_PushML_P() umgestellt auf MenuCtrl_PushML2_P() |
//# |
//# 29.03.2014 OG |
//# - chg: versch. Funktioionen del: MenuCtrl_SetShowBatt() wegen Aenderung Default auf true |
//# - add: Unterstuetzung fuer Rev. 100 |
//# (param_AutoPhotoDistance, param_AutoPhotoAtitudes, param_SingleWpSpeed) |
//# |
//# 27.03.2014 OG |
//# kompletter neuer Code fuer ein erstes Release |
//# |
//# 23.02.2014 OG |
//# - chg: MK_Parameters_Menu() umbenannt zu MK_Parameters() |
//# |
//# 20.02.2014 OG |
//# - chg: MK_Parameters_Menu() meldet "nicht verfügbar" |
//# |
//# 12.02.2014 OG - NEU |
//############################################################################ |
#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 <avr/eeprom.h> |
#include <util/delay.h> |
#include <string.h> |
#include <util/atomic.h> |
//#include "../lipo/lipo.h" |
#include "../main.h" |
#include "../lipo/lipo.h" |
#include "../lcd/lcd.h" |
#include "../uart/usart.h" |
#include "../utils/menuctrl.h" |
#include "../utils/xutils.h" |
#include "../uart/uart1.h" |
#include "../mk-data-structs.h" |
//#include "../menu.h" |
#include "../timer/timer.h" |
#include "../eeprom/eeprom.h" |
#include "../messages.h" |
#include "../pkt/pkt.h" |
#include "../mk/mkbase.h" |
#include "paramset.h" |
#include "mkparameters.h" |
#include "mkparameters_messages.h" |
//############################################################################################# |
//# Strukturen; Forward-Deklarationen |
//############################################################################################# |
#define DEBUG_PARAMEDIT // schaltet zusaetzliche Debug-Ausgaben ein |
#define EOF 255 // End Of File (bzw. end of Table...) |
#define SEPARATOR 254 // ID fuer einen Separator in einem Menue (Trennlinie) |
#define SCREEN_REFRESH 1 // neuzeichnen/refresh der Anzeige |
#define SCREEN_REDRAW 2 // neuzeichnen/refresh der Anzeige |
//-------------------------------------------- |
// editGenericCode_t |
// deklariert ein einzelnes Code-Zeichen fuer Edit-Generic |
//-------------------------------------------- |
typedef struct |
{ |
unsigned char code; // z.B. '0', '1', 'v', 'P', 'C' ... (einzelnes Zeichen aus paramEditItem_t.format ) |
unsigned char min; |
unsigned char max; |
const char *shortText_de; // |
const char *shortText_en; |
const char *longText_de; |
const char *longText_en; |
} editGenericCode_t; |
//--------------------------------------------- |
//----- globale Modulvariablen |
//--------------------------------------------- |
editGenericCode_t genericCode; // Daten eines einzelnen Code-Zeichen (im RAM) |
paramEditItem_t paramEditItem; // RAM Buffer: fuer ein Element von paramEditDef |
char paramEditFormat[MKPARAM_STRBUFFER_LEN]; // RAM Buffer: fuer 'str' von paramEdit (Format; editGeneric) |
char mkparam_strValueBuffer[MKPARAM_STRBUFFER_LEN]; // Anzeige eines Values als Klartext; Kurz (fuer das Menue) oder Lang (in der Edit-Funktion) |
//############################################################################################# |
//# |
//############################################################################################# |
static const char GENERIC_SHORT_VALUE_de[] PROGMEM = "%3u"; // nur Wert anzeigen - min/max wird uebergeordnet definiert |
#define GENERIC_SHORT_VALUE_en GENERIC_SHORT_VALUE_de |
#define GENERIC_LONG_VALUE_de GENERIC_SHORT_VALUE_de |
#define GENERIC_LONG_VALUE_en GENERIC_SHORT_VALUE_de |
// |
//static const char GENERIC_SHORT_VALUE_ACCZ_de[] PROGMEM = "%4u"; // nur Wert anzeigen - min/max wird uebergeordnet definiert |
//#define GENERIC_SHORT_VALUE_ACCZ_en GENERIC_SHORT_VALUE_ACCZ_de |
//#define GENERIC_LONG_VALUE_ACCZ_de GENERIC_SHORT_VALUE_ACCZ_de |
//#define GENERIC_LONG_VALUE_ACCZ_en GENERIC_SHORT_VALUE_ACCZ_de |
static const char GENERIC_SHORT_NO_de[] PROGMEM = " N"; |
#define GENERIC_SHORT_NO_en GENERIC_SHORT_NO_de |
static const char GENERIC_LONG_NO_de[] PROGMEM = "Nein"; |
static const char GENERIC_LONG_NO_en[] PROGMEM = "No"; |
static const char GENERIC_SHORT_YES_de[] PROGMEM = " J"; |
static const char GENERIC_SHORT_YES_en[] PROGMEM = " Y"; |
static const char GENERIC_LONG_YES_de[] PROGMEM = "Ja"; |
static const char GENERIC_LONG_YES_en[] PROGMEM = "Yes"; |
static const char GENERIC_SHORT_POTI_de[] PROGMEM = " P%u"; |
#define GENERIC_SHORT_POTI_en GENERIC_SHORT_POTI_de |
static const char GENERIC_LONG_POTI_de[] PROGMEM = "Poti %u"; |
#define GENERIC_LONG_POTI_en GENERIC_LONG_POTI_de |
static const char GENERIC_SHORT_CHANNEL_de[] PROGMEM = "C%2u"; |
#define GENERIC_SHORT_CHANNEL_en GENERIC_SHORT_CHANNEL_de |
static const char GENERIC_LONG_CHANNEL_de[] PROGMEM = "Kanal %u"; |
static const char GENERIC_LONG_CHANNEL_en[] PROGMEM = "Channel %u"; |
static const char GENERIC_SHORT_SERCHANNEL_de[] PROGMEM = "S%2u"; |
#define GENERIC_SHORT_SERCHANNEL_en GENERIC_SHORT_SERCHANNEL_de |
static const char GENERIC_LONG_SERCHANNEL_de[] PROGMEM = "Ser. Kanal %u"; |
static const char GENERIC_LONG_SERCHANNEL_en[] PROGMEM = "Ser. Channel %u"; |
static const char GENERIC_SHORT_AUS_de[] PROGMEM = "Aus"; |
static const char GENERIC_SHORT_AUS_en[] PROGMEM = "Off"; |
#define GENERIC_LONG_AUS_de GENERIC_SHORT_AUS_de |
#define GENERIC_LONG_AUS_en GENERIC_SHORT_AUS_en |
static const char GENERIC_SHORT_INACTIV_de[] PROGMEM = "Ina"; |
#define GENERIC_SHORT_INACTIV_en GENERIC_SHORT_INACTIV_de |
static const char GENERIC_LONG_INACTIV_de[] PROGMEM = "Inaktiv"; |
#define GENERIC_LONG_INACTIV_en GENERIC_LONG_INACTIV_de |
static const char GENERIC_SHORT_WPEVENT_de[] PROGMEM = "WPE"; |
#define GENERIC_SHORT_WPEVENT_en GENERIC_SHORT_WPEVENT_de |
static const char GENERIC_LONG_WPEVENT_de[] PROGMEM = "WP-Event"; |
#define GENERIC_LONG_WPEVENT_en GENERIC_LONG_WPEVENT_de |
static const char GENERIC_SHORT_MINIMUM_de[] PROGMEM = "Min"; |
#define GENERIC_SHORT_MINIMUM_en GENERIC_SHORT_MINIMUM_de |
static const char GENERIC_LONG_MINIMUM_de[] PROGMEM = "Minimum"; |
#define GENERIC_LONG_MINIMUM_en GENERIC_LONG_MINIMUM_de |
static const char GENERIC_SHORT_MIDDLE_de[] PROGMEM = "Mid"; |
#define GENERIC_SHORT_MIDDLE_en GENERIC_SHORT_MIDDLE_de |
static const char GENERIC_LONG_MIDDLE_de[] PROGMEM = "Mitte"; |
static const char GENERIC_LONG_MIDDLE_en[] PROGMEM = "Middle"; |
static const char GENERIC_SHORT_MAXIMUM_de[] PROGMEM = "Max"; |
#define GENERIC_SHORT_MAXIMUM_en GENERIC_SHORT_MAXIMUM_de |
static const char GENERIC_LONG_MAXIMUM_de[] PROGMEM = "Maximum"; |
#define GENERIC_LONG_MAXIMUM_en GENERIC_LONG_MAXIMUM_de |
static const char GENERIC_SHORT_AN_de[] PROGMEM = " An"; |
static const char GENERIC_SHORT_AN_en[] PROGMEM = " On"; |
#define GENERIC_LONG_AN_de GENERIC_SHORT_AN_de |
#define GENERIC_LONG_AN_en GENERIC_SHORT_AN_en |
static const char GENERIC_SHORT_FREE_de[] PROGMEM = "Fre"; // z.b. "GPS Modus Steuerung" |
#define GENERIC_SHORT_FREE_en GENERIC_SHORT_FREE_de |
static const char GENERIC_LONG_FREE_de[] PROGMEM = "Free"; |
#define GENERIC_LONG_FREE_en GENERIC_LONG_FREE_de |
static const char GENERIC_SHORT_CH_de[] PROGMEM = " CH"; // z.b. "GPS Modus Steuerung" |
#define GENERIC_SHORT_CH_en GENERIC_SHORT_CH_de |
static const char GENERIC_LONG_CH_de[] PROGMEM = "Coming Home (CH)"; |
#define GENERIC_LONG_CH_en GENERIC_LONG_CH_de |
static const char GENERIC_SHORT_PH_de[] PROGMEM = " PH"; // z.b. "GPS Modus Steuerung" |
#define GENERIC_SHORT_PH_en GENERIC_SHORT_PH_de |
static const char GENERIC_LONG_PH_de[] PROGMEM = "Position Hold (PH)"; |
#define GENERIC_LONG_PH_en GENERIC_LONG_PH_de |
static const char GENERIC_SHORT_DISABLED_de[] PROGMEM = "Dis"; // z.b. "Auto Start / Land" |
#define GENERIC_SHORT_DISABLED_en GENERIC_SHORT_DISABLED_de |
static const char GENERIC_LONG_DISABLED_de[] PROGMEM = "Disabled"; |
#define GENERIC_LONG_DISABLED_en GENERIC_LONG_DISABLED_de |
static const char GENERIC_SHORT_OUT_de[] PROGMEM = "Ou%1u"; // z.B. Servo 3 und Servo 4 |
#define GENERIC_SHORT_OUT_en GENERIC_SHORT_OUT_de |
static const char GENERIC_LONG_OUT_de[] PROGMEM = "Out %1u"; |
#define GENERIC_LONG_OUT_en GENERIC_LONG_OUT_de |
static const char GENERIC_SHORT_CH_OR_NC_de[] PROGMEM = "kÄn"; |
static const char GENERIC_SHORT_CH_OR_NC_en[] PROGMEM = "nCh"; |
static const char GENERIC_LONG_CH_OR_NC_de[] PROGMEM = "Keine Änderung"; |
static const char GENERIC_LONG_CH_OR_NC_en[] PROGMEM = "no change"; |
static const char GENERIC_SHORT_CH_OR_FH_de[] PROGMEM = "FzH"; |
static const char GENERIC_SHORT_CH_OR_FH_en[] PROGMEM = "FtH"; |
static const char GENERIC_LONG_CH_OR_FH_de[] PROGMEM = "Front zu Home"; |
static const char GENERIC_LONG_CH_OR_FH_en[] PROGMEM = "front to home"; |
static const char GENERIC_SHORT_CH_OR_RH_de[] PROGMEM = "HzH"; |
static const char GENERIC_SHORT_CH_OR_RH_en[] PROGMEM = "RtH"; |
static const char GENERIC_LONG_CH_OR_RH_de[] PROGMEM = "Heck zu Home"; |
static const char GENERIC_LONG_CH_OR_RH_en[] PROGMEM = "rear to home"; |
static const char GENERIC_SHORT_CH_OR_SO_de[] PROGMEM = "wSt"; |
static const char GENERIC_SHORT_CH_OR_SO_en[] PROGMEM = "sOr"; |
static const char GENERIC_LONG_CH_OR_SO_de[] PROGMEM = "wie beim Start"; |
static const char GENERIC_LONG_CH_OR_SO_en[] PROGMEM = "same as start"; |
//------------------------------------------------ |
/************************************************* |
//------------- |
// ZUR INFO |
//------------- |
typedef struct |
{ |
unsigned char code; // '0', '1', 'v', 'P', 'C' ... |
unsigned char min; |
unsigned char max; |
const char *shortText_de; |
const char *shortText_en; |
const char *longText_de; |
const char *longText_en; |
} editGenericCode_t; |
*************************************************/ |
// Anmerkung: kann bei Bedarf evtl. zu PROGMEM umschreiben |
//editGenericCode_t const editGenericCode[] PROGMEM = |
editGenericCode_t editGenericCode[] = |
{ |
{ 'v', 0, 0, GENERIC_SHORT_VALUE_de, GENERIC_SHORT_VALUE_en, GENERIC_LONG_VALUE_de, GENERIC_LONG_VALUE_en }, // nur Wert anzeigen - min/max wird uebergeordnet definiert |
// { 'z', 0, 0, GENERIC_SHORT_VALUE_ACCZ_de, GENERIC_SHORT_VALUE_ACCZ_en, GENERIC_LONG_VALUE_ACCZ_de, GENERIC_LONG_VALUE_ACCZ_en }, // nur Wert anzeigen x 4- min/max wird uebergeordnet definiert |
{ '0', 0, 0, GENERIC_SHORT_NO_de, GENERIC_SHORT_NO_en, GENERIC_LONG_NO_de, GENERIC_LONG_NO_en }, |
{ '1', 1, 1, GENERIC_SHORT_YES_de, GENERIC_SHORT_YES_en, GENERIC_LONG_YES_de, GENERIC_LONG_YES_en }, |
{ 'P', 255,248, GENERIC_SHORT_POTI_de, GENERIC_SHORT_POTI_en, GENERIC_LONG_POTI_de, GENERIC_LONG_POTI_en }, |
{ 'C', 1, 16, GENERIC_SHORT_CHANNEL_de, GENERIC_SHORT_CHANNEL_en, GENERIC_LONG_CHANNEL_de, GENERIC_LONG_CHANNEL_en }, |
{ 'S', 17, 28, GENERIC_SHORT_SERCHANNEL_de, GENERIC_SHORT_SERCHANNEL_en, GENERIC_LONG_SERCHANNEL_de, GENERIC_LONG_SERCHANNEL_en }, |
{ 'A', 0, 0, GENERIC_SHORT_AUS_de, GENERIC_SHORT_AUS_en, GENERIC_LONG_AUS_de, GENERIC_LONG_AUS_en }, |
{ 'I', 0, 0, GENERIC_SHORT_INACTIV_de, GENERIC_SHORT_INACTIV_en, GENERIC_LONG_INACTIV_de, GENERIC_LONG_INACTIV_en }, |
{ 'W', 29, 29, GENERIC_SHORT_WPEVENT_de, GENERIC_SHORT_WPEVENT_en, GENERIC_LONG_WPEVENT_de, GENERIC_LONG_WPEVENT_en }, |
{ 'U', 30, 30, GENERIC_SHORT_MINIMUM_de, GENERIC_SHORT_MINIMUM_en, GENERIC_LONG_MINIMUM_de, GENERIC_LONG_MINIMUM_en }, |
{ 'M', 31, 31, GENERIC_SHORT_MIDDLE_de, GENERIC_SHORT_MIDDLE_en, GENERIC_LONG_MIDDLE_de, GENERIC_LONG_MIDDLE_en }, |
{ 'X', 32, 32, GENERIC_SHORT_MAXIMUM_de, GENERIC_SHORT_MAXIMUM_en, GENERIC_LONG_MAXIMUM_de, GENERIC_LONG_MAXIMUM_en }, |
{ 'O', 30, 30, GENERIC_SHORT_AUS_de, GENERIC_SHORT_AUS_en, GENERIC_LONG_AUS_de, GENERIC_LONG_AUS_en }, // ein weiteres "Aus"; z.b. "Motors-Sicherheitsschalter" |
{ 'N', 31, 31, GENERIC_SHORT_AN_de, GENERIC_SHORT_AN_en, GENERIC_LONG_AN_de, GENERIC_LONG_AN_en }, // z.b. "Carefree" |
{ 'F', 30, 30, GENERIC_SHORT_FREE_de, GENERIC_SHORT_FREE_en, GENERIC_LONG_FREE_de, GENERIC_LONG_FREE_en }, // Free - z.b. "Carefree" |
{ 'H', 31, 31, GENERIC_SHORT_CH_de, GENERIC_SHORT_CH_en, GENERIC_LONG_CH_de, GENERIC_LONG_CH_en }, // Coming Home - z.b. "Carefree" |
{ 'Q', 32, 32, GENERIC_SHORT_PH_de, GENERIC_SHORT_PH_en, GENERIC_LONG_PH_de, GENERIC_LONG_PH_en }, // Positiosn Hold - z.b. "Carefree" |
{ 'D', 0, 0, GENERIC_SHORT_DISABLED_de, GENERIC_SHORT_DISABLED_en, GENERIC_LONG_DISABLED_de, GENERIC_LONG_DISABLED_en }, // Inaktiv - z.b. "Auto Start / Land" |
{ 'T', 247,246, GENERIC_SHORT_OUT_de, GENERIC_SHORT_OUT_en, GENERIC_LONG_OUT_de, GENERIC_LONG_OUT_en }, |
{ 'K', 0, 0, GENERIC_SHORT_CH_OR_NC_de, GENERIC_SHORT_CH_OR_NC_en, GENERIC_LONG_CH_OR_NC_de, GENERIC_LONG_CH_OR_NC_en }, // CommingHome Orientation, |
{ 'V', 1, 1, GENERIC_SHORT_CH_OR_FH_de, GENERIC_SHORT_CH_OR_FH_en, GENERIC_LONG_CH_OR_FH_de, GENERIC_LONG_CH_OR_FH_en }, // CommingHome Orientation, |
{ 'R', 2, 2, GENERIC_SHORT_CH_OR_RH_de, GENERIC_SHORT_CH_OR_RH_en, GENERIC_LONG_CH_OR_RH_de, GENERIC_LONG_CH_OR_RH_en }, // CommingHome Orientation, |
{ 'G', 3, 3, GENERIC_SHORT_CH_OR_SO_de, GENERIC_SHORT_CH_OR_SO_en, GENERIC_LONG_CH_OR_SO_de, GENERIC_LONG_CH_OR_SO_en }, // CommingHome Orientation, |
{ EOF, 0, 0, 0,0,0,0 } // END OF LIST - MUST BE THE LAST!! |
}; |
//############################################################################################# |
//# |
//############################################################################################# |
static const char GENERIC_NoYes[] PROGMEM = "01"; // Nein, Ja (z.B. (fast) alle Checkboxen) |
static const char GENERIC_Value[] PROGMEM = "v"; // value mit min,max aus paramEditItem (in paramEditItemTable) (z.B. Nick/Roll P (0..20) / Min. Gas (0..247) ) |
static const char GENERIC_ValueACCZ[] PROGMEM = "D"; // value mit min,max aus paramEditItem (in paramEditItemTable) x 4 (ACC Z Landing pulse ) |
static const char GENERIC_ValuePoti[] PROGMEM = "vP"; // value, Poti (z.B. Gyro Gier P) |
static const char GENERIC_ValueOutPoti[] PROGMEM = "vTP"; // value, Out, Poti (z.B. Servo 3 & 4) |
static const char GENERIC_Cannel[] PROGMEM = "C"; // Channel (z.B. Gas / Gier / Nick / Roll) |
static const char GENERIC_AusChSerWpeMMM[] PROGMEM = "ACSWUMX"; // Aus, Channel, Ser. Channel, WP Event, Minimum, Mitte, Maximum (z.B. Poti 1..8) |
static const char GENERIC_DisChSerWpeOff[] PROGMEM = "DCSWO"; // Disabled, Channel, Ser. Channel, WP Event, Off (z.B. Motors-Sicherheitsschalter) |
static const char GENERIC_DisChSerWpeOffOn[] PROGMEM = "DCSWON"; // Disabled, Channel, Ser. Channel, WP Event, Off, On (z.B. Carefree) |
static const char GENERIC_DisChSerWpeFreeCHPH[] PROGMEM = "DCSWFHQ"; // Disabled, Channel, Ser. Channel, WP Event, Free, CH, PH (z.B. GPS Modus Steuerung) |
static const char GENERIC_DisChSer[] PROGMEM = "DCS"; // Disabled, Channel, Ser. Channel (z.B. Auto Start / Land) |
static const char GENERIC_CH_Orientation[] PROGMEM = "KVRG"; // Keine Änderung, vorne Home, Heck Home, gleiche Richtung (Comming Home Orientation |
static const char GENERIC_InaChSerWpeMMM[] PROGMEM = "ICSWUMX"; // Inactiv, Channel, Ser. Channel, WP Event, Minimum, Mitte, Maximum(z.B. Menu Key Channel |
/************************************************* |
//------------- |
// ZUR INFO |
//------------- |
typedef struct |
{ |
unsigned char paramID; // paramID aus paramset.h |
void (*editfunc)(unsigned char paramID, uint8_t cmd); // Edit-Funktion - z.B. editGeneric(); cmd = MKPARAM_EDIT oder MKPARAM_SHORTVALUE |
const char *format; // Parameter: String (PROGMEM) (vorallem fuer editGeneric() ) |
unsigned char min; // Parameter: min (P1) |
unsigned char max; // Parameter: max (P2) |
const char *title_de; // Text in PROGMEM - Menuetext und Beschreibung im Edit-Screen |
const char *title_en; // Text in PROGMEM |
} paramEditItem_t; |
*************************************************/ |
//---------------------- |
// HINWEIS! |
// Die unten stehende Aufgliederung in die verschiedenen Menue-Bereiche ist nur zur ORIENTIERUNG! |
// Jede paramID wird nur EINMAL deklariert - die Zuordnung in die Menues erfolgt in den |
// nachfolgenden ID_MENU_xyz_Items Strukturen! |
//---------------------- |
paramEditItem_t const paramEditItemTable[] PROGMEM = |
{ |
//----------------------------------- |
// Menue: ID_MENU_KANAELE (Kanäle) |
//----------------------------------- |
{ param_Kanalbelegung_Gas , &editGeneric, GENERIC_Cannel , 0, 0, param_Kanalbelegung_Gas_de, param_Kanalbelegung_Gas_en }, |
{ param_Kanalbelegung_Gear , &editGeneric, GENERIC_Cannel , 0, 0, param_Kanalbelegung_Gear_de, param_Kanalbelegung_Gear_en }, |
{ param_Kanalbelegung_Nick , &editGeneric, GENERIC_Cannel , 0, 0, param_Kanalbelegung_Nick_de, param_Kanalbelegung_Nick_en }, |
{ param_Kanalbelegung_Roll , &editGeneric, GENERIC_Cannel , 0, 0, param_Kanalbelegung_Roll_de, param_Kanalbelegung_Roll_en }, |
{ param_Kanalbelegung_Poti1 , &editGeneric, GENERIC_AusChSerWpeMMM , 0, 0, param_Kanalbelegung_Poti1_de, param_Kanalbelegung_Poti1_en }, |
{ param_Kanalbelegung_Poti2 , &editGeneric, GENERIC_AusChSerWpeMMM , 0, 0, param_Kanalbelegung_Poti2_de, param_Kanalbelegung_Poti2_en }, |
{ param_Kanalbelegung_Poti3 , &editGeneric, GENERIC_AusChSerWpeMMM , 0, 0, param_Kanalbelegung_Poti3_de, param_Kanalbelegung_Poti3_en }, |
{ param_Kanalbelegung_Poti4 , &editGeneric, GENERIC_AusChSerWpeMMM , 0, 0, param_Kanalbelegung_Poti4_de, param_Kanalbelegung_Poti4_en }, |
{ param_Kanalbelegung_Poti5 , &editGeneric, GENERIC_AusChSerWpeMMM , 0, 0, param_Kanalbelegung_Poti5_de, param_Kanalbelegung_Poti5_en }, |
{ param_Kanalbelegung_Poti6 , &editGeneric, GENERIC_AusChSerWpeMMM , 0, 0, param_Kanalbelegung_Poti6_de, param_Kanalbelegung_Poti6_en }, |
{ param_Kanalbelegung_Poti7 , &editGeneric, GENERIC_AusChSerWpeMMM , 0, 0, param_Kanalbelegung_Poti7_de, param_Kanalbelegung_Poti7_en }, |
{ param_Kanalbelegung_Poti8 , &editGeneric, GENERIC_AusChSerWpeMMM , 0, 0, param_Kanalbelegung_Poti8_de, param_Kanalbelegung_Poti8_en }, |
{ param_MotorSafetySwitch , &editGeneric, GENERIC_DisChSerWpeOff , 0, 0, param_MotorSafetySwitch_de, param_MotorSafetySwitch_en }, |
{ param_GlobalConfig3_MotorSwitchMode , &editGeneric, GENERIC_NoYes , 0, 0, param_GlobalConfig3_MotorSwitchMode_de, param_GlobalConfig3_MotorSwitchMode_en }, |
{ param_ExtraConfig_SensitiveRc , &editGeneric, GENERIC_NoYes , 0, 0, param_ExtraConfig_SensitiveRc_de, param_ExtraConfig_SensitiveRc_en }, |
{ param_GlobalConfig3_SpeakAll , &editGeneric, GENERIC_NoYes , 0, 0, param_GlobalConfig3_SpeakAll_de, param_GlobalConfig3_SpeakAll_en }, |
//----------------------------------- |
// Menue: ID_MENU_KONFIGURATION (Konfiguration) |
//----------------------------------- |
{ param_GlobalConfig_HoehenRegelung , &editGeneric, GENERIC_NoYes , 0, 0, param_GlobalConfig_HoehenRegelung_de, param_GlobalConfig_HoehenRegelung_en }, |
{ param_GlobalConfig_GpsAktiv , &editGeneric, GENERIC_NoYes , 0, 0, param_GlobalConfig_GpsAktiv_de, param_GlobalConfig_GpsAktiv_en }, |
{ param_GlobalConfig_KompassAktiv , &editGeneric, GENERIC_NoYes , 0, 0, param_GlobalConfig_KompassAktiv_de, param_GlobalConfig_KompassAktiv_en }, |
{ param_GlobalConfig_KompassFix , &editGeneric, GENERIC_NoYes , 0, 0, param_GlobalConfig_KompassFix_de, param_GlobalConfig_KompassFix_en }, |
// param_ExtraConfig_SensitiveRc |
{ param_GlobalConfig_AchsenkopplungAktiv , &editGeneric, GENERIC_NoYes , 0, 0, param_GlobalConfig_AchsenkopplungAktiv_de, param_GlobalConfig_AchsenkopplungAktiv_en }, |
{ param_GlobalConfig_DrehratenBegrenzer , &editGeneric, GENERIC_NoYes , 0, 0, param_GlobalConfig_DrehratenBegrenzer_de, param_GlobalConfig_DrehratenBegrenzer_en }, |
{ param_GlobalConfig_HeadingHold , &editGeneric, GENERIC_NoYes , 0, 0, param_GlobalConfig_HeadingHold_de, param_GlobalConfig_HeadingHold_en }, |
//----------------------------------- |
// Menue: ID_MENU_STICK (Stick) |
//----------------------------------- |
{ param_Stick_P , &editGeneric, GENERIC_Value , 0, 20, param_Stick_P_de, param_Stick_P_en }, |
{ param_Stick_D , &editGeneric, GENERIC_Value , 0, 20, param_Stick_D_de, param_Stick_D_en }, |
{ param_StickGier_P , &editGeneric, GENERIC_ValuePoti , 0, 247, param_Gyro_Gier_P_de, param_Gyro_Gier_P_en }, |
{ param_ExternalControl , &editGeneric, GENERIC_ValuePoti , 0, 247, param_ExternalControl_de, param_ExternalControl_en }, |
//----------------------------------- |
// Menue: ID_MENU_LOOPING (Looping) |
//----------------------------------- |
{ param_BitConfig_LoopOben , &editGeneric, GENERIC_NoYes , 0, 0, param_BitConfig_LoopOben_de, param_BitConfig_LoopOben_en }, |
{ param_BitConfig_LoopUnten , &editGeneric, GENERIC_NoYes , 0, 0, param_BitConfig_LoopUnten_de, param_BitConfig_LoopUnten_en }, |
{ param_BitConfig_LoopLinks , &editGeneric, GENERIC_NoYes , 0, 0, param_BitConfig_LoopLinks_de, param_BitConfig_LoopLinks_en }, |
{ param_BitConfig_LoopRechts , &editGeneric, GENERIC_NoYes , 0, 0, param_BitConfig_LoopRechts_de, param_BitConfig_LoopRechts_en }, |
{ param_LoopGasLimit , &editGeneric, GENERIC_ValuePoti , 0, 247, param_LoopGasLimit_de, param_LoopGasLimit_en }, |
{ param_LoopThreshold , &editGeneric, GENERIC_Value , 0, 247, param_LoopThreshold_de, param_LoopThreshold_en }, |
{ param_LoopHysterese , &editGeneric, GENERIC_Value , 0, 247, param_LoopHysterese_de, param_LoopHysterese_en }, |
{ param_WinkelUmschlagNick , &editGeneric, GENERIC_Value , 0, 247, param_WinkelUmschlagNick_de, param_WinkelUmschlagNick_en }, |
{ param_WinkelUmschlagRoll , &editGeneric, GENERIC_Value , 0, 247, param_WinkelUmschlagRoll_de, param_WinkelUmschlagRoll_en }, |
//----------------------------------- |
// Menue: ID_MENU_HOEHE (Höhe) |
//----------------------------------- |
{ param_GlobalConfig_HoehenRegelung , &editGeneric, GENERIC_NoYes , 0, 0, param_GlobalConfig_HoehenRegelung_de, param_GlobalConfig_HoehenRegelung_en}, |
{ param_ExtraConfig_HeightLimit , &editGeneric, GENERIC_NoYes , 0, 0, param_ExtraConfig_HeightLimit_de, param_ExtraConfig_HeightLimit_en }, |
{ param_ExtraConfig_HeightVario , &editGeneric, GENERIC_NoYes , 0, 0, param_ExtraConfig_HeightVario_de, param_ExtraConfig_HeightVario_en }, // negiertes param_ExtraConfig_HeightLimit |
{ param_GlobalConfig_HoehenSchalter , &editGeneric, GENERIC_NoYes , 0, 0, param_GlobalConfig_HoehenSchalter_de, param_GlobalConfig_HoehenSchalter_en}, |
{ param_ExtraConfig_VarioBeep , &editGeneric, GENERIC_NoYes , 0, 0, param_ExtraConfig_VarioBeep_de, param_ExtraConfig_VarioBeep_en }, |
{ param_HoeheChannel , &editGeneric, GENERIC_DisChSerWpeOffOn, 0, 0, param_HoeheChannel_de, param_HoeheChannel_en }, |
{ param_Hoehe_MinGas , &editGeneric, GENERIC_Value , 0, 247, param_Hoehe_MinGas_de, param_Hoehe_MinGas_en }, |
{ param_Hoehe_P , &editGeneric, GENERIC_ValuePoti , 0, 247, param_Hoehe_P_de, param_Hoehe_P_en }, |
{ param_Luftdruck_D , &editGeneric, GENERIC_ValuePoti , 0, 247, param_Luftdruck_D_de, param_Luftdruck_D_en }, |
{ param_Hoehe_ACC_Wirkung , &editGeneric, GENERIC_ValuePoti , 0, 247, param_Hoehe_ACC_Wirkung_de, param_Hoehe_ACC_Wirkung_en }, |
{ param_MaxAltitude , &editGeneric, GENERIC_ValuePoti , 0, 247, param_MaxAltitude_de, param_MaxAltitude_en }, |
{ param_Hoehe_Verstaerkung , &editGeneric, GENERIC_Value , 0, 247, param_Hoehe_Verstaerkung_de, param_Hoehe_Verstaerkung_en }, |
{ param_Hoehe_HoverBand , &editGeneric, GENERIC_Value , 0, 247, param_Hoehe_HoverBand_de, param_Hoehe_HoverBand_en }, |
{ param_Hoehe_GPS_Z , &editGeneric, GENERIC_ValuePoti , 0, 247, param_Hoehe_GPS_Z_de, param_Hoehe_GPS_Z_en }, |
{ param_Hoehe_TiltCompensation , &editGeneric, GENERIC_ValuePoti , 0, 247, param_Hoehe_Tilt_Comp_de, param_Hoehe_Tilt_Comp_en }, |
{ param_Hoehe_StickNeutralPoint , &editGeneric, GENERIC_Value , 0, 160, param_Hoehe_StickNeutralPoint_de, param_Hoehe_StickNeutralPoint_en }, |
{ param_StartLandChannel , &editGeneric, GENERIC_DisChSer , 0, 0, param_StartLandChannel_de, param_StartLandChannel_en }, |
{ param_LandingSpeed , &editGeneric, GENERIC_Value , 0, 247, param_LandingSpeed_de, param_LandingSpeed_en }, |
{ param_LandingPulse , &editACCZLandingPulse, GENERIC_ValueACCZ , 0, 0, param_LandingPulse_de, param_LandingPulse_en }, |
//----------------------------------- |
// Menue: ID_MENU_KAMERA (Kamera) |
//----------------------------------- |
{ param_ServoNickControl , &editGeneric, GENERIC_ValuePoti , 0, 247, param_ServoNickControl_de, param_ServoNickControl_en }, |
{ param_ServoNickComp , &editGeneric, GENERIC_ValuePoti , 0, 247, param_ServoNickComp_de, param_ServoNickComp_en }, |
{ param_ServoNickFailsave , &editGeneric, GENERIC_Value , 0, 247, param_ServoNickFails_de, param_ServoNickFails_en }, |
{ param_GlobalConfig3_ServoNickCompOff , &editGeneric, GENERIC_NoYes , 0, 0, param_GlobalConfig3_ServoNickCompOff_de, param_GlobalConfig3_ServoNickCompOff_en }, // TODO: pruefen: ab welcher Version ist das drin ??? |
{ param_ServoCompInvert_SERVO_NICK_INV , &editGeneric, GENERIC_NoYes , 0, 0, param_ServoCompInvert_SVNick_de, param_ServoCompInvert_SVNick_en }, |
{ param_ServoCompInvert_SERVO_RELATIVE , &editGeneric, GENERIC_NoYes , 0, 0, param_ServoCompInvert_SVRelMov_de, param_ServoCompInvert_SVRelMov_en }, |
{ param_ServoNickMin , &editGeneric, GENERIC_Value , 0, 247, param_ServoNickMin_de, param_ServoNickMin_en }, |
{ param_ServoNickMax , &editGeneric, GENERIC_Value , 0, 247, param_ServoNickMax_de, param_ServoNickMax_en }, |
{ param_ServoFilterNick , &editGeneric, GENERIC_Value , 0, 25, param_ServoFilterNick_de, param_ServoFilterNick_en }, |
{ param_ServoRollControl , &editGeneric, GENERIC_ValuePoti , 0, 247, param_ServoRollControl_de, param_ServoRollControl_en }, |
{ param_ServoRollComp , &editGeneric, GENERIC_ValuePoti , 0, 247, param_ServoRollComp_de, param_ServoRollComp_en }, |
{ param_ServoRollFailsave , &editGeneric, GENERIC_Value , 0, 247, param_ServoRollFails_de, param_ServoRollFails_en }, |
{ param_ServoCompInvert_SERVO_ROLL_INV , &editGeneric, GENERIC_NoYes , 0, 0, param_ServoCompInvert_SVRoll_de, param_ServoCompInvert_SVRoll_en }, |
{ param_ServoRollMin , &editGeneric, GENERIC_Value , 0, 247, param_ServoRollMin_de, param_ServoRollMin_en }, |
{ param_ServoRollMax , &editGeneric, GENERIC_Value , 0, 247, param_ServoRollMax_de, param_ServoRollMax_en }, |
{ param_ServoFilterRoll , &editGeneric, GENERIC_Value , 0, 25, param_ServoFilterRoll_de, param_ServoFilterRoll_en }, |
{ param_ServoNickRefresh , &editGeneric, GENERIC_Value , 2, 8, param_ServoNickRefresh_de, param_ServoNickRefresh_en }, |
{ param_ServoManualControlSpeed , &editGeneric, GENERIC_Value , 0, 247, param_ServoManualControlSpeed_de, param_ServoManualControlSpeed_en }, |
{ param_Servo3 , &editGeneric, GENERIC_ValueOutPoti , 0, 245, param_Servo3_de, param_Servo3_en }, |
{ param_Servo3Failsave , &editGeneric, GENERIC_Value , 0, 247, param_Servo3Fails_de, param_Servo3Fails_en }, |
{ param_Servo4 , &editGeneric, GENERIC_ValueOutPoti , 0, 245, param_Servo4_de, param_Servo4_en }, |
{ param_Servo4Failsave , &editGeneric, GENERIC_Value , 0, 247, param_Servo4Fails_de, param_Servo4Fails_en }, |
{ param_Servo5 , &editGeneric, GENERIC_ValuePoti , 0, 247, param_Servo5_de, param_Servo5_en }, |
{ param_Servo5Failsave , &editGeneric, GENERIC_Value , 0, 247, param_Servo5Fails_de, param_Servo5Fails_en }, |
{ param_Servo3OnValue , &editGeneric, GENERIC_Value , 0, 247, param_Servo3OnValue_de, param_Servo3OnValue_en }, |
{ param_Servo3OffValue , &editGeneric, GENERIC_Value , 0, 247, param_Servo3OffValue_de, param_Servo3OffValue_en }, |
{ param_Servo4OnValue , &editGeneric, GENERIC_Value , 0, 247, param_Servo4OnValue_de, param_Servo4OnValue_en }, |
{ param_Servo4OffValue , &editGeneric, GENERIC_Value , 0, 247, param_Servo4OffValue_de, param_Servo4OffValue_en }, |
//{ param_CamOrientation , &editNA , 0 , 0, 0, param_CamOrientation_de, param_CamOrientation_en }, // wird evtl. nicht mehr unterstuetzt |
//----------------------------------- |
// Menue: ID_MENU_NAVICTRL (NaviCtrl) |
//----------------------------------- |
{ param_GlobalConfig_GpsAktiv , &editGeneric, GENERIC_NoYes , 0, 0, param_GlobalConfig_GpsAktiv_de, param_GlobalConfig_GpsAktiv_en }, |
{ param_NaviGpsModeChannel , &editGeneric, GENERIC_DisChSerWpeFreeCHPH , 0, 0, param_NaviGpsModeChannel_de, param_NaviGpsModeChannel_en }, |
{ param_NaviGpsGain , &editGeneric, GENERIC_ValuePoti , 0, 247, param_NaviGpsGain_de, param_NaviGpsGain_en }, |
{ param_NaviStickThreshold , &editGeneric, GENERIC_Value , 0, 247, param_NaviStickThreshold_de, param_NaviStickThreshold_en }, |
{ param_NaviGpsMinSat , &editGeneric, GENERIC_Value , 0, 247, param_NaviGpsMinSat_de, param_NaviGpsMinSat_en }, |
{ param_NaviGpsP , &editGeneric, GENERIC_ValuePoti , 0, 247, param_NaviGpsP_de, param_NaviGpsP_en }, |
{ param_NaviGpsI , &editGeneric, GENERIC_ValuePoti , 0, 247, param_NaviGpsI_de, param_NaviGpsI_en }, |
{ param_NaviGpsD , &editGeneric, GENERIC_ValuePoti , 0, 247, param_NaviGpsD_de, param_NaviGpsD_en }, |
{ param_NaviGpsPLimit , &editGeneric, GENERIC_ValuePoti , 0, 247, param_NaviGpsPLimit_de, param_NaviGpsPLimit_en }, |
{ param_NaviGpsILimit , &editGeneric, GENERIC_ValuePoti , 0, 247, param_NaviGpsILimit_de, param_NaviGpsILimit_en }, |
{ param_NaviGpsDLimit , &editGeneric, GENERIC_ValuePoti , 0, 247, param_NaviGpsDLimit_de, param_NaviGpsDLimit_en }, |
{ param_NaviGpsA , &editGeneric, GENERIC_ValuePoti , 0, 247, param_NaviGpsA_de, param_NaviGpsA_en }, |
{ param_NaviWindCorrection , &editGeneric, GENERIC_ValuePoti , 0, 247, param_NaviWindCorrection_de, param_NaviWindCorrection_en }, |
{ param_NaviAccCompensation , &editGeneric, GENERIC_ValuePoti , 0, 247, param_NaviAccCompensation_de, param_NaviAccCompensation_en }, |
{ param_NaviMaxFlyingRange , &editGeneric, GENERIC_Value , 0, 250, param_NaviMaxFlyingRange_de, param_NaviMaxFlyingRange_en }, |
{ param_NaviOperatingRadius , &editGeneric, GENERIC_ValuePoti , 0, 247, param_NaviOperatingRadius_de, param_NaviOperatingRadius_en }, |
{ param_NaviAngleLimitation , &editGeneric, GENERIC_ValuePoti , 0, 247, param_NaviAngleLimitation_de, param_NaviAngleLimitation_en }, |
{ param_NaviPH_LoginTime , &editGeneric, GENERIC_Value , 0, 247, param_NaviPH_LoginTime_de, param_NaviPH_LoginTime_en }, |
{ param_ExtraConfig_GpsAid , &editGeneric, GENERIC_NoYes , 0, 0, param_ExtraConfig_GpsAid_de, param_ExtraConfig_GpsAid_en }, |
{ param_GlobalConfig3_DphMaxRadius , &editGeneric, GENERIC_NoYes , 0, 0, param_GlobalConfig3_DphMaxRadius_de, param_GlobalConfig3_DphMaxRadius_en }, |
{ param_ComingHomeAltitude , &editGeneric, GENERIC_Value , 0, 247, param_ComingHomeAltitude_de, param_ComingHomeAltitude_en }, |
{ param_ComingHomeOrientation , &editGeneric, GENERIC_CH_Orientation , 0, 3, param_ComingHomeOrientation_de, param_ComingHomeOrientation_en }, |
{ param_SingleWpControlChannel , &editGeneric, GENERIC_InaChSerWpeMMM , 0, 0, param_SingleWpControlChannel_de, param_SingleWpControlChannel_en }, //ab Rev.106 |
{ param_MenuKeyChannel , &editGeneric, GENERIC_InaChSerWpeMMM , 0, 0, param_MenuKeyChannel_de, param_MenuKeyChannel_en }, |
{ param_SingleWpSpeed , &editGeneric, GENERIC_ValuePoti , 0, 247, param_SingleWpSpeed_de, param_SingleWpSpeed_en }, // ab Rev. 100 |
{ param_NaviDescendRange , &editGeneric, GENERIC_Value , 0, 250, param_NaviDescendRange_de, param_NaviDescendRange_en }, |
//----------------------------------- |
// Menue: ID_MENU_AUSGAENGE (Ausgänge) |
//----------------------------------- |
{ param_J16Bitmask , &editBitmask, 0 , 0, 0, param_J16Bitmask_de, param_J16Bitmask_en }, |
{ param_J16Timing , &editGeneric, GENERIC_ValuePoti , 0, 247, param_J16Timing_de, param_J16Timing_en }, |
{ param_BitConfig_MotorBlink1 , &editGeneric, GENERIC_NoYes , 0, 0, param_BitConfig_MotorBlink1_de, param_BitConfig_MotorBlink1_en }, // "nur nach Start der Motoren aktiv" |
{ param_BitConfig_MotorOffLed1 , &editGeneric, GENERIC_NoYes , 0, 0, param_BitConfig_MotorOffLed1_de, param_BitConfig_MotorOffLed1_en }, // nur wenn "nur nach Start der Motoren aktiv" = JA ist -> bestimmt ob LED's an oder aus sind wenn die Motoren aus sind |
{ param_GlobalConfig3_UseNcForOut1 , &editGeneric, GENERIC_NoYes , 0, 0, param_GlobalConfig3_UseNcForOut1_de, param_GlobalConfig3_UseNcForOut1_en }, // "mit WP-Event verknüpfen" |
{ param_NaviOut1Parameter , &editGeneric, GENERIC_ValuePoti , 0, 247, param_NaviOut1Parameter_de, param_NaviOut1Parameter_en }, // "AutoTrigger alle...[meter]" (bis Rev.98) |
{ param_AutoPhotoDistance , &editGeneric, GENERIC_ValuePoti , 0, 247, param_AutoPhotoDistance_de, param_AutoPhotoDistance_en }, // "AutoTrigger alle [meter] in Distance" (ab Rev.100) |
{ param_AutoPhotoAtitudes , &editGeneric, GENERIC_ValuePoti , 0, 247, param_AutoPhotoAtitudes_de, param_AutoPhotoAtitudes_en }, // "AutoTrigger alle [meter] in Altitude" (ab Rev.100) |
{ param_J17Bitmask , &editBitmask, 0 , 0, 0, param_J17Bitmask_de, param_J17Bitmask_en }, |
{ param_J17Timing , &editGeneric, GENERIC_ValuePoti , 0, 247, param_J17Timing_de, param_J17Timing_en }, |
{ param_BitConfig_MotorBlink2 , &editGeneric, GENERIC_NoYes , 0, 0, param_BitConfig_MotorBlink2_de, param_BitConfig_MotorBlink2_en }, // "nur nach Start der Motoren aktiv" |
{ param_BitConfig_MotorOffLed2 , &editGeneric, GENERIC_NoYes , 0, 0, param_BitConfig_MotorOffLed2_de, param_BitConfig_MotorOffLed2_en }, // nur wenn "nur nach Start der Motoren aktiv" = JA ist -> bestimmt ob LED's an oder aus sind wenn die Motoren aus sind |
{ param_WARN_J16_Bitmask , &editBitmask, 0 , 0, 0, param_WARN_J16_Bitmask_de, param_WARN_J16_Bitmask_en }, // Bitmaske fuer Unterspannungswarnung |
{ param_WARN_J17_Bitmask , &editBitmask, 0 , 0, 0, param_WARN_J17_Bitmask_de, param_WARN_J17_Bitmask_en }, // Bitmaske fuer Unterspannungswarnung |
//----------------------------------- |
// Menue: ID_MENU_VERSCHIEDENES (Verschiedenes) |
//----------------------------------- |
{ param_Gas_Min , &editGeneric, GENERIC_Value , 0, 247, param_Gas_Min_de, param_Gas_Min_en }, |
{ param_Gas_Max , &editGeneric, GENERIC_Value , 0, 247, param_Gas_Max_de, param_Gas_Max_en }, |
{ param_KompassWirkung , &editGeneric, GENERIC_ValuePoti , 0, 247, param_KompassWirkung_de, param_KompassWirkung_en }, |
//{ param_CompassOffset , &editGeneric, GENERIC_Value , 0, 255, param_CompassOffset_de, param_CompassOffset_en }, // TODO: +/- Werte sind dort kodiert |
{ param_CompassOffset , &editCompassOffset, 0 , 0, 0, param_CompassOffset_de, param_CompassOffset_en }, // TODO: +/- Werte sind dort kodiert |
{ param_CompassOffset_DisableDeclCalc , &editGeneric, GENERIC_NoYes , 0, 0, param_CompassOffset_DisableDeclCalc_de, param_CompassOffset_DisableDeclCalc_en }, // TODO: +/- Werte sind dort kodiert |
{ param_CareFreeChannel , &editGeneric, GENERIC_DisChSerWpeOffOn , 0, 0, param_CareFreeChannel_de, param_CareFreeChannel_en }, |
{ param_ExtraConfig_LearnableCarefree , &editGeneric, GENERIC_NoYes , 0, 0, param_ExtraConfig_LearnableCarefree_de, param_ExtraConfig_LearnableCarefree_en }, |
{ param_UnterspannungsWarnung , &editGeneric, GENERIC_Value , 0, 247, param_UnterspannungsWarnung_de, param_UnterspannungsWarnung_en }, |
{ param_ComingHomeVoltage , &editGeneric, GENERIC_Value , 0, 247, param_ComingHomeVoltage_de, param_ComingHomeVoltage_en }, |
{ param_AutoLandingVoltage , &editGeneric, GENERIC_Value , 0, 247, param_AutoLandingVoltage_de, param_AutoLandingVoltage_en }, |
//{ param_ExtraConfig_33vReference , &editGeneric, GENERIC_NoYes , 0, 0, param_ExtraConfig_33vReference_de, param_ExtraConfig_33vReference_en }, // nicht mehr unterstuetzt! |
{ param_NotGasZeit , &editGeneric, GENERIC_Value , 0, 247, param_NotGasZeit_de, param_NotGasZeit_en }, |
{ param_GlobalConfig3_VarioFailsafe , &editGeneric, GENERIC_NoYes , 0, 0, param_GlobalConfig3_VarioFailsafe_de, param_GlobalConfig3_VarioFailsafe_en }, |
{ param_NotGas , &editGeneric, GENERIC_Value , 0, 247, param_NotGas_de, param_NotGas_en }, |
{ param_FailSafeTime , &editGeneric, GENERIC_Value , 0, 247, param_FailSafeTime_de, param_FailSafeTime_en }, |
{ param_FailsafeChannel , &editGeneric, GENERIC_Value , 0, 16, param_FailsafeChannel_de, param_FailsafeChannel_en }, |
{ param_ExtraConfig_NoRcOffBeeping , &editGeneric, GENERIC_NoYes , 0, 0, param_ExtraConfig_NoRcOffBeeping_de, param_ExtraConfig_NoRcOffBeeping_en }, |
{ param_ExtraConfig_IgnoreMagErrAtStartup , &editGeneric, GENERIC_NoYes , 0, 0, param_ExtraConfig_IgnoreMagErrAtStartup_de, param_ExtraConfig_IgnoreMagErrAtStartup_en }, |
{ param_GlobalConfig3_NoSdCardNoStart , &editGeneric, GENERIC_NoYes , 0, 0, param_GlobalConfig3_NoSdCardNoStart_de, param_GlobalConfig3_NoSdCardNoStart_en }, |
{ param_GlobalConfig3_NoGpsFixNoStart , &editGeneric, GENERIC_NoYes , 0, 0, param_GlobalConfig3_NoGpsFixNoStart_de, param_GlobalConfig3_NoGpsFixNoStart_en }, |
//----------------------------------- |
// Menue: ID_MENU_GYRO (Gyro) |
//----------------------------------- |
{ param_Gyro_P , &editGeneric, GENERIC_ValuePoti , 0, 247, param_Gyro_P_de, param_Gyro_P_en }, |
{ param_Gyro_Gier_P , &editGeneric, GENERIC_ValuePoti , 0, 247, param_Gyro_Gier_P_de, param_Gyro_Gier_P_en }, |
{ param_Gyro_I , &editGeneric, GENERIC_ValuePoti , 0, 247, param_Gyro_I_de, param_Gyro_I_en }, |
{ param_Gyro_Gier_I , &editGeneric, GENERIC_ValuePoti , 0, 247, param_Gyro_Gier_I_de, param_Gyro_Gier_I_en }, |
{ param_Gyro_D , &editGeneric, GENERIC_ValuePoti , 0, 247, param_Gyro_D_de, param_Gyro_D_en }, |
{ param_DynamicStability , &editGeneric, GENERIC_ValuePoti , 0, 247, param_DynamicStability_de, param_DynamicStability_en }, |
{ param_GlobalConfig_DrehratenBegrenzer , &editGeneric, GENERIC_NoYes , 0, 0, param_GlobalConfig_DrehratenBegrenzer_de, param_GlobalConfig_DrehratenBegrenzer_en }, |
{ param_GyroAccFaktor , &editGeneric, GENERIC_Value , 0, 247, param_GyroAccFaktor_de, param_GyroAccFaktor_en }, |
{ param_GyroAccAbgleich , &editGeneric, GENERIC_Value , 0, 247, param_GyroAccAbgleich_de, param_GyroAccAbgleich_en }, |
{ param_I_Faktor , &editGeneric, GENERIC_ValuePoti , 0, 247, param_I_Faktor_de, param_I_Faktor_en }, |
{ param_Driftkomp , &editGeneric, GENERIC_Value , 0, 247, param_Driftkomp_de, param_Driftkomp_en }, |
{ param_Gyro_Stability , &editGeneric, GENERIC_Value , 0, 247, param_Gyro_Stability_de, param_Gyro_Stability_en }, |
{ param_MotorSmooth , &editGeneric, GENERIC_Value , 0, 247, param_MotorSmooth_de, param_MotorSmooth_en }, |
//----------------------------------- |
// Menue: ID_MENU_BENUTZER (Benutzer) |
//----------------------------------- |
{ param_UserParam1 , &editGeneric, GENERIC_ValuePoti , 0, 247, param_UserParam1_de, param_UserParam1_en }, |
{ param_UserParam2 , &editGeneric, GENERIC_ValuePoti , 0, 247, param_UserParam2_de, param_UserParam2_en }, |
{ param_UserParam3 , &editGeneric, GENERIC_ValuePoti , 0, 247, param_UserParam3_de, param_UserParam3_en }, |
{ param_UserParam4 , &editGeneric, GENERIC_ValuePoti , 0, 247, param_UserParam4_de, param_UserParam4_en }, |
{ param_UserParam5 , &editGeneric, GENERIC_ValuePoti , 0, 247, param_UserParam5_de, param_UserParam5_en }, |
{ param_UserParam6 , &editGeneric, GENERIC_ValuePoti , 0, 247, param_UserParam6_de, param_UserParam6_en }, |
{ param_UserParam7 , &editGeneric, GENERIC_ValuePoti , 0, 247, param_UserParam7_de, param_UserParam7_en }, |
{ param_UserParam8 , &editGeneric, GENERIC_ValuePoti , 0, 247, param_UserParam8_de, param_UserParam8_en }, |
//----------------------------------- |
// Menue: ID_MENU_ACHSKOPPLUNG (Achskopplung) |
//----------------------------------- |
{ param_GlobalConfig_AchsenkopplungAktiv , &editGeneric, GENERIC_NoYes , 0, 0, param_GlobalConfig_AchsenkopplungAktiv_de, param_GlobalConfig_AchsenkopplungAktiv_en }, |
{ param_AchsKopplung1 , &editGeneric, GENERIC_ValuePoti , 0, 247, param_AchsKopplung1_de, param_AchsKopplung1_en }, |
{ param_AchsKopplung2 , &editGeneric, GENERIC_ValuePoti , 0, 247, param_AchsKopplung2_de, param_AchsKopplung2_en }, |
{ param_CouplingYawCorrection , &editGeneric, GENERIC_ValuePoti , 0, 247, param_CouplingYawCorrection_de, param_CouplingYawCorrection_en }, |
//----------------------------------- |
// ENDE |
//----------------------------------- |
{ param_EOF, NOFUNC, 0,0,0, 0,0 } // END OF LIST - MUST BE THE LAST!! |
}; |
/************************************************************ |
NICHT MEHR UNTERSTUEZT: |
param_Receiver (Empfänger Typ: Hott, Jeti, Spektrum,...) |
************************************************************/ |
//############################################################################################# |
//# Menue's und Menuezuordnung |
//############################################################################################# |
//----------------------------------- |
// Menue ID's: Parameters Hauptmenue |
//----------------------------------- |
#define ID_MENU_FAVORITEN 1 // fuer spaeter reserviert.... |
#define ID_MENU_KANAELE 2 |
#define ID_MENU_KONFIGURATION 3 |
#define ID_MENU_STICK 4 |
#define ID_MENU_LOOPING 5 |
#define ID_MENU_HOEHE 6 |
#define ID_MENU_KAMERA 7 |
#define ID_MENU_NAVICTRL 8 |
#define ID_MENU_AUSGAENGE 9 |
#define ID_MENU_VERSCHIEDENES 10 |
#define ID_MENU_GYRO 11 |
#define ID_MENU_BENUTZER 12 |
#define ID_MENU_ACHSKOPPLUNG 13 |
#define ID_MENU_MIXERSETUP 14 // nicht verwendet / unterstuetzt |
#define ID_MENU_EASYSETUP 15 |
#define ID_MENU_TEST 66 // TEST / DEBUG |
//----------------------------------- |
// Zuordnungen von paramID's zu den jeweiligen Menue's |
// |
// Eintrag "SEPARATOR" - damit wird eine Trennlinie |
// im Menue dargestellt |
//----------------------------------- |
//------------------------------- |
// Menue: ID_MENU_KANAELE |
//------------------------------- |
unsigned char const ID_MENU_KANAELE_Items[] = |
{ |
param_Kanalbelegung_Gas, |
param_Kanalbelegung_Gear, |
param_Kanalbelegung_Nick, |
param_Kanalbelegung_Roll, |
param_Kanalbelegung_Poti1, |
param_Kanalbelegung_Poti2, |
param_Kanalbelegung_Poti3, |
param_Kanalbelegung_Poti4, |
param_Kanalbelegung_Poti5, |
param_Kanalbelegung_Poti6, |
param_Kanalbelegung_Poti7, |
param_Kanalbelegung_Poti8, |
SEPARATOR, |
param_MotorSafetySwitch, |
param_GlobalConfig3_MotorSwitchMode, |
SEPARATOR, |
param_ExtraConfig_SensitiveRc, |
param_GlobalConfig3_SpeakAll, |
EOF // *** MUST BE THE LAST! *** |
}; |
//------------------------------- |
// Menue: ID_MENU_KONFIGURATION |
//------------------------------- |
unsigned char const ID_MENU_KONFIGURATION_Items[] = |
{ |
param_GlobalConfig_HoehenRegelung, |
param_GlobalConfig_GpsAktiv, |
param_GlobalConfig_KompassAktiv, |
param_GlobalConfig_KompassFix, |
param_ExtraConfig_SensitiveRc, |
param_GlobalConfig_AchsenkopplungAktiv, |
param_GlobalConfig_DrehratenBegrenzer, |
param_GlobalConfig_HeadingHold, |
EOF // *** MUST BE THE LAST! *** |
}; |
//------------------------------- |
// Menue: ID_MENU_STICK |
//------------------------------- |
unsigned char const ID_MENU_STICK_Items[] = |
{ |
param_Stick_P, |
param_Stick_D, |
param_StickGier_P, |
SEPARATOR, |
param_ExternalControl, |
EOF // *** MUST BE THE LAST! *** |
}; |
//------------------------------- |
// Menue: ID_MENU_LOOPING |
//------------------------------- |
unsigned char const ID_MENU_LOOPING_Items[] = |
{ |
param_BitConfig_LoopOben, |
param_BitConfig_LoopUnten, |
param_BitConfig_LoopLinks, |
param_BitConfig_LoopRechts, |
SEPARATOR, |
param_LoopGasLimit, |
param_LoopThreshold, |
param_LoopHysterese, |
param_WinkelUmschlagNick, |
param_WinkelUmschlagRoll, |
EOF // *** MUST BE THE LAST! *** |
}; |
//------------------------------- |
// Menue: ID_MENU_HOEHE |
//------------------------------- |
unsigned char const ID_MENU_HOEHE_Items[] = |
{ |
param_GlobalConfig_HoehenRegelung, |
param_ExtraConfig_HeightLimit, |
param_ExtraConfig_HeightVario, |
param_GlobalConfig_HoehenSchalter, |
param_ExtraConfig_VarioBeep, |
SEPARATOR, |
param_HoeheChannel, |
param_Hoehe_Verstaerkung, |
param_Hoehe_MinGas, |
param_Hoehe_HoverBand, |
param_Hoehe_P, |
param_Hoehe_GPS_Z, |
param_Hoehe_TiltCompensation, |
param_Luftdruck_D, |
param_Hoehe_StickNeutralPoint, |
param_Hoehe_ACC_Wirkung, |
param_MaxAltitude, |
SEPARATOR, |
param_StartLandChannel, |
param_LandingSpeed, |
param_LandingPulse, |
EOF // *** MUST BE THE LAST! *** |
}; |
//------------------------------- |
// Menue: ID_MENU_KAMERA |
//------------------------------- |
unsigned char const ID_MENU_KAMERA_Items[] = |
{ |
param_ServoNickControl, |
param_ServoNickComp, |
param_ServoNickFailsave, |
param_GlobalConfig3_ServoNickCompOff, // erst ab FC-Rev 96 |
param_ServoCompInvert_SERVO_NICK_INV, |
param_ServoCompInvert_SERVO_RELATIVE, |
param_ServoNickMin, |
param_ServoNickMax, |
param_ServoFilterNick, |
SEPARATOR, |
param_ServoRollControl, |
param_ServoRollComp, |
param_ServoRollFailsave, |
param_ServoCompInvert_SERVO_ROLL_INV, |
param_ServoRollMin, |
param_ServoRollMax, |
param_ServoFilterRoll, |
SEPARATOR, |
param_ServoNickRefresh, |
param_ServoManualControlSpeed, |
param_Servo3, |
param_Servo3Failsave, |
param_Servo4, |
param_Servo4Failsave, |
param_Servo5, |
param_Servo5Failsave, |
SEPARATOR, |
param_Servo3OnValue, |
param_Servo3OffValue, |
param_Servo4OnValue, |
param_Servo4OffValue, |
EOF // *** MUST BE THE LAST! *** |
}; |
//------------------------------- |
// Menue: ID_MENU_NAVICTRL |
//------------------------------- |
unsigned char const ID_MENU_NAVICTRL_Items[] = |
{ |
param_GlobalConfig_GpsAktiv, |
param_NaviGpsModeChannel, |
param_NaviGpsGain, |
param_NaviStickThreshold, |
param_NaviGpsMinSat, |
param_NaviGpsP, |
param_NaviGpsPLimit, |
param_NaviGpsI, |
param_NaviGpsILimit, |
param_NaviGpsD, |
param_NaviGpsDLimit, |
param_NaviGpsA, |
SEPARATOR, |
param_NaviWindCorrection, |
param_NaviAccCompensation, |
param_NaviMaxFlyingRange, |
param_NaviOperatingRadius, |
param_NaviAngleLimitation, |
param_NaviPH_LoginTime, |
param_ExtraConfig_GpsAid, |
param_GlobalConfig3_DphMaxRadius, |
SEPARATOR, |
param_ComingHomeAltitude, |
param_ComingHomeOrientation, |
SEPARATOR, |
param_SingleWpControlChannel, |
param_MenuKeyChannel, |
param_SingleWpSpeed, |
SEPARATOR, |
param_NaviDescendRange, |
EOF // *** MUST BE THE LAST! *** |
}; |
//------------------------------- |
// Menue: ID_MENU_AUSGAENGE |
//------------------------------- |
unsigned char const ID_MENU_AUSGAENGE_Items[] = |
{ |
param_J16Bitmask, // LED 1 Bitmaske |
param_J16Timing, |
param_BitConfig_MotorBlink1, |
param_BitConfig_MotorOffLed1, |
param_GlobalConfig3_UseNcForOut1, |
param_NaviOut1Parameter, |
param_AutoPhotoDistance, |
param_AutoPhotoAtitudes, |
SEPARATOR, |
param_J17Bitmask, // LED 2 Bitmaske |
param_J17Timing, |
param_BitConfig_MotorBlink2, |
param_BitConfig_MotorOffLed2, |
SEPARATOR, |
param_WARN_J16_Bitmask, |
param_WARN_J17_Bitmask, |
EOF // *** MUST BE THE LAST! *** |
}; |
//------------------------------- |
// Menue: ID_MENU_VERSCHIEDENES |
//------------------------------- |
unsigned char const ID_MENU_VERSCHIEDENES_Items[] = |
{ |
param_Gas_Min, |
param_Gas_Max, |
param_KompassWirkung, |
param_CompassOffset, |
param_CompassOffset_DisableDeclCalc, |
param_CareFreeChannel, |
param_ExtraConfig_LearnableCarefree, |
SEPARATOR, |
param_UnterspannungsWarnung, |
param_ComingHomeVoltage, |
param_AutoLandingVoltage, |
SEPARATOR, |
param_NotGasZeit, |
param_GlobalConfig3_VarioFailsafe, // Nutze "Vario-Höhe" für "Not-Gas" -> beeinflusst 'param_NotGas' bzgl. "%" |
param_NotGas, |
param_FailSafeTime, |
param_FailsafeChannel, |
param_ExtraConfig_NoRcOffBeeping, |
SEPARATOR, |
param_ExtraConfig_IgnoreMagErrAtStartup, |
param_GlobalConfig3_NoSdCardNoStart, |
param_GlobalConfig3_NoGpsFixNoStart, |
EOF // *** MUST BE THE LAST! *** |
}; |
//------------------------------- |
// Menue: ID_MENU_GYRO |
//------------------------------- |
unsigned char const ID_MENU_GYRO_Items[] = |
{ |
param_Gyro_P, |
param_Gyro_I, |
param_Gyro_D, |
param_Gyro_Gier_P, |
param_Gyro_Gier_I, |
SEPARATOR, |
param_DynamicStability, |
param_GlobalConfig_DrehratenBegrenzer, |
SEPARATOR, |
param_GyroAccFaktor, |
param_GyroAccAbgleich, |
SEPARATOR, |
param_I_Faktor, |
param_Driftkomp, |
param_Gyro_Stability, |
param_MotorSmooth, |
EOF // *** MUST BE THE LAST! *** |
}; |
//------------------------------- |
// Menue: ID_MENU_BENUTZER |
//------------------------------- |
unsigned char const ID_MENU_BENUTZER_Items[] = |
{ |
param_UserParam1, |
param_UserParam2, |
param_UserParam3, |
param_UserParam4, |
param_UserParam5, |
param_UserParam6, |
param_UserParam7, |
param_UserParam8, |
EOF // *** MUST BE THE LAST! *** |
}; |
//------------------------------- |
// Menue: ID_MENU_ACHSKOPPLUNG |
//------------------------------- |
unsigned char const ID_MENU_ACHSKOPPLUNG_Items[] = |
{ |
param_GlobalConfig_AchsenkopplungAktiv, |
param_AchsKopplung1, |
param_AchsKopplung2, |
param_CouplingYawCorrection, |
EOF // *** MUST BE THE LAST! *** |
}; |
//------------------------------- |
// Menue: ID_MENU_EASYSETUP |
//------------------------------- |
unsigned char const ID_MENU_EASYSETUP_Items[] = |
{ |
param_GlobalConfig_HoehenRegelung, |
param_HoeheChannel, |
param_Hoehe_StickNeutralPoint, |
param_StartLandChannel, |
SEPARATOR, |
param_GlobalConfig_GpsAktiv, |
param_NaviGpsModeChannel, |
param_ExtraConfig_GpsAid, |
param_ComingHomeAltitude, |
SEPARATOR, |
param_CareFreeChannel, |
param_ExtraConfig_LearnableCarefree, |
EOF // *** MUST BE THE LAST! *** |
}; |
//############################################################################################# |
//# Error-Handling |
//############################################################################################# |
//# mittels des auf dem PKT angezeigten Errocodes (z.B. "E32") kann man hier schauen was bzw. |
//# wo (in welcher Funktion) der Fehler aufgetreten ist. |
//# |
//# Im Menue wird der Fehlercode rechts bei den Values dargestellt (dabei ertönen immer wieder |
//# Fehler-Beep's). |
//# In der Vollbildanzeige wird zusaetzlich ein uebergebener Wert (value) angezeigt - im Code |
//# kann man ermitteln was der Wert darstellt. |
//############################################################################################# |
#define E01_PARAMID_MENUEDITCATEGORY 1 // Menu_EditCategory() - FEHLER: paramEditItem (=paramID) nicht in Tabelle paramEditItemTable gefunden |
#define E11_PARAMID_EDITGENERIC 11 // editGeneric() - FEHLER: paramEditItem (=paramID) nicht in Tabelle paramEditItemTable gefunden |
#define E12_PARAMID_EDITBITMASK 12 // editBitmask() - FEHLER: paramEditItem (=paramID) nicht in Tabelle paramEditItemTable gefunden |
#define E30_CODECHAR_NOT_FOUND 30 // find_genericCode() - FEHLER: Code-Zeichen nicht in Tabelle editGenericCode gefunden |
#define E31_PARAMEDIT_ITEM_NOT_FOUND 31 // find_genericCodeByValue() - FEHLER: paramEditItem (=paramID) nicht in Tabelle paramEditItemTable gefunden |
#define E32_CODECHAR_NOT_FOUND 32 // find_genericCodeByValue() - FEHLER: Code-Zeichen nicht in Tabelle editGenericCode gefunden |
#define E33_VALUE_NOT_IN_FORMAT 33 // find_genericCodeByValue() - FEHLER: Ende des Format-Strings erreicht - fuer das gegebene value konnte kein passender Code im Format-String gefunden werden |
#define E41_VALUE_MIN_MAX_RANGE 41 // strValueGeneric() - FEHLER: fuer die Range von 'v' (Value) wurde max < min angegeben bei Generic -> nicht unterstuetzt |
//-------------------------------------------------------------- |
// _error( errorcode, value, showscreen) |
// |
// zeigt Fehlermeldungen an |
// |
// PARAMETER: |
// errorcode : siehe Error-defines |
// value : zusaetzlicher Anzeigeparameter (nur in Screen-Anzeige) |
// showscreen: true = Fehlermeldung wird vollstaendig angezeigt. |
// - er Screen wird dabei geloescht |
// - Ende mit Taste 'Ende' |
// - langer Fehler-Beep |
// |
// false = es wird nur der Buffer mkparam_strValueBuffer |
// mit dem Fehlercode befuellt |
// - Anzeige im Menue ganz recht als "Enn" |
// - kurzer Fehler-Beep der jedoch bei jeder |
// Aktion im Menue zu hoeren ist |
// => dann auf Anzeige "Enn" achten! |
//-------------------------------------------------------------- |
void _error( uint8_t errorcode, uint8_t value, uint8_t showscreen) |
{ |
xsnprintf_P( mkparam_strValueBuffer, MKPARAM_STRBUFFER_LEN, PSTR("E%02u"), errorcode); // in mkparam_strValueBuffer ausgeben fuer das Menue |
if( showscreen ) |
{ |
lcd_cls(); |
lcdx_printp_center( 1, PSTR(" ERROR "), MINVERS, 0,-3); |
lcdx_printp_center( 2, PSTR("mkparameters.c"), MNORMAL, 0,0); |
lcd_printf_at_P( 0, 4, MNORMAL, PSTR("Code : E%02u"), errorcode ); |
lcd_printf_at_P( 0, 5, MNORMAL, PSTR("Value: %3u"), value ); |
lcd_printp_at(11, 7, strGet(ENDE), MNORMAL ); |
set_beep( 500, 0x000f, BeepNormal); // Beep Error |
while( !get_key_press(1 << KEY_ESC) ) |
{ |
//-------------------------------- |
// Anmerkung: OG 25.03.2014 |
// |
// Ohne diese Verzoegerung funkioniert die Update-Erkennung via PKT-UpdateTool |
// meist nicht - ist das PKT zu schnell? |
// Kann man evtl. das PKT-UpdateTool diesbezueglich mal ueberpruefen ob man |
// Timings/Timeout's anpassen kann? |
// |
// Hinweis dazu: PKT_CtrlHook() bzw. die dort enthaltene Update-Anforderungspruefung |
// ist in den letzten Wochen beschleunigt geworden da unnoetiger Code fuer nicht |
// benoetigte Bildschirmausgaben entfernt wurde - das ist grundsaetzlich fuer das PKT |
// besser. |
// |
// Um das nachzustellen: |
// Unten das Delay auskommentieren und einen Fehler in Menu_EditCategory() provozieren |
// indem "paramID = 0;" einkommentiert wird (ist dort beschrieben) |
// Dann den Fehlerscreen im PKT anzeigen lassen und ein Update via PKT-UpdateTool initiieren, |
//-------------------------------- |
_delay_ms(150); |
PKT_CtrlHook(); |
} |
} |
else |
{ |
// kurzer Fehler-Beep - der kann wiederholt im Menue auftreten bei jedem Refresh des Menues |
set_beep( 160, 0x000f, BeepNormal); // Beep Error |
} |
} |
//############################################################################################# |
//# Edit-Funktionen |
//############################################################################################# |
//-------------------------------------------------------------- |
// ok = find_paramEditItem( paramID ) |
// |
// sucht in paramEditItemTable (PROGMEM) eine paramID und |
// kopiert den Eintrag in das RAM |
// |
// PARAMETER: |
// paramID |
// |
// RUECKGABE: |
// true = paramID gefunden |
// false = nicht gefunden (Fehler) |
// |
// -- globale Modulvariablen -- |
// Ergebnisse in: |
// |
// paramEditItem : der gefundene Eintrag vom Typ paramEditItem_t (im RAM) |
// paramEditFormat: der Format-String paramEditItem.format im RAM |
//-------------------------------------------------------------- |
unsigned char find_paramEditItem( unsigned char paramID ) |
{ |
unsigned char id; |
unsigned char *p; |
p = (unsigned char *) paramEditItemTable; |
while( true ) |
{ |
id = pgm_read_byte(p); // die aktuelle paramID aus paramEditDef |
if( id == paramID || id == param_EOF ) |
break; |
p += sizeof( paramEditItem_t ); |
} |
//----- |
// wenn die gesuchte paramID nicht gefunden wurde steht |
// im RAM-Buffer paramEdit.paramID == param_EOF !! |
//----- |
memcpy_P ( ¶mEditItem , p, sizeof(paramEditItem_t) ); // die Struktur -> in den RAM-Buffer kopieren (Zugriff: paramEditItem) |
strncpy_P( paramEditFormat, paramEditItem.format, MKPARAM_STRBUFFER_LEN); // format String -> in den RAM-Buffer kopieren (Zugriff: paramEditFormat) |
return( id!=param_EOF ); |
} |
//-------------------------------------------------------------- |
// ptrP = paramEditItemTitle() |
// |
// gibt einen Zeiger in PROGMEM auf den Titel/Bezeichnung eines |
// paramID's in der richtigen Sprache zurueck |
// |
// ACHTUNG! paramEditItem muss vorher initialisert worden sein! |
//-------------------------------------------------------------- |
/* |
const char * paramEditItemTitle( void ) |
{ |
if( Config.DisplayLanguage == 0 ) |
return( paramEditItem.title_de ); |
else |
return( paramEditItem.title_en ); |
} |
*/ |
//-------------------------------------------------------------- |
// print_paramEditItemTitle() |
// |
// gibt Titel/Bezeichnung auf den Bildschirm bei x=0, y=2 aus |
// |
// ACHTUNG! paramEditItem muss vorher initialisert worden sein! |
//-------------------------------------------------------------- |
void print_paramEditItemTitle( void ) |
{ |
lcd_printp_at( 0, 2, (Config.DisplayLanguage == 0 ? paramEditItem.title_de : paramEditItem.title_en ), MNORMAL); // Bezeichnung des paramID's |
} |
//-------------------------------------------------------------- |
// ok = find_genericCode( code ) |
// |
// Ergebnis steht in: (globale Modulvariablen) |
// genericCode |
//-------------------------------------------------------------- |
unsigned char find_genericCode( unsigned char code ) |
{ |
unsigned char codeIdx; |
codeIdx = 0; |
while( (editGenericCode[codeIdx].code != code ) && (editGenericCode[codeIdx].code != EOF) ) |
codeIdx++; |
//----------------------------- |
// find_genericCode() - FEHLER: Code-Zeichen nicht in Tabelle editGenericCode gefunden |
//----------------------------- |
if( editGenericCode[codeIdx].code == EOF ) |
{ |
_error( E30_CODECHAR_NOT_FOUND, code, false); |
return false; |
} |
memcpy( &genericCode, &editGenericCode[codeIdx], sizeof(editGenericCode_t) ); // die gefundene Struktur in den RAM-Buffer kopieren |
return true; |
} |
//-------------------------------------------------------------- |
// ok = find_genericCode( paramID, &v, &min, &max, pFormat) |
// |
// PARAMETER: |
// paramID |
// *v |
// *min |
// *max |
// *pFormat |
// |
// Ergebnis steht in: (globale Modulvariablen) |
// paramEditItem |
// paramEditFormat: der zugehoerige Format-String |
// genericCode |
//-------------------------------------------------------------- |
unsigned char find_genericCodeByValue( unsigned char paramID, unsigned char *v, unsigned char *min, unsigned char *max ) |
{ |
unsigned char codeIdx; |
char *pFormat; |
//------------------------------------------------- |
// 1. finde paramID in der paramEditItem-Tabelle |
// |
// sollte der RAM-Buffer paramEditItem bereits das |
// gesuchte enthalten dann ok |
//------------------------------------------------- |
if( paramEditItem.paramID != paramID ) |
find_paramEditItem( paramID ); |
//--- |
// FEHLER: paramEditItem nicht in Tabelle paramEditItemTable gefunden |
//--- |
if( paramEditItem.paramID == param_EOF ) |
{ |
_error( E31_PARAMEDIT_ITEM_NOT_FOUND, paramID, false); |
return false; |
} |
pFormat = paramEditFormat; // Zeiger auf das erste Zeichen vom Format-String (z.B. "DCSWFHQ") |
*v = paramGet( paramID ); // der aktuelle Wert des paraID |
while( true ) |
{ |
//------ |
// suche editGenericCode mittels aktuelles Zeichens *pFormat |
//------ |
codeIdx = 0; |
while( (editGenericCode[codeIdx].code != *pFormat) && (editGenericCode[codeIdx].code != EOF) ) |
codeIdx++; |
//------ |
// FEHLER: Code-Zeichen nicht in Tabelle editGenericCode gefunden |
//------ |
if( editGenericCode[codeIdx].code == EOF ) |
{ |
_error( E32_CODECHAR_NOT_FOUND, *pFormat, false); |
return false; |
} |
//------ |
// suche den Value-Bereich (min/max) fuer das Code-Zeichen |
//------ |
if( editGenericCode[codeIdx].code == 'v' ) |
{ |
// bei code 'v' kommt min/max aus paramEditItem |
*min = paramEditItem.min; |
*max = paramEditItem.max; |
} |
else |
{ |
// ansonsten kommt min/max aus dem Code selber |
*min = editGenericCode[codeIdx].min; |
*max = editGenericCode[codeIdx].max; |
} |
// value gefunden (innerhalb von min/max)? |
// beruecksichtigt 'gedrehte' min/max (z.B. Poti1..8) |
if( (*min <= *max && *v >= *min && *v <= *max) || (*min > *max && *v >= *max && *v <= *min) ) |
{ |
// gefunden - Schleife verlassen |
break; |
} |
//------ |
// naechstes Code-Zeichen aus der Format-Maske |
//------ |
pFormat++; |
//------ |
// FEHLER: Ende des Format-Strings erreicht - fuer das gegebene value konnte kein passender Code im Format-String gefunden werden |
//------ |
if( *pFormat == 0 ) // Ende des Format-Strings erreicht - Fehler... |
{ |
_error( E33_VALUE_NOT_IN_FORMAT, *v, false); |
return false; |
} |
} |
memcpy( &genericCode, &editGenericCode[codeIdx], sizeof(editGenericCode_t) ); // die gefundene Struktur in den RAM-Buffer kopieren |
genericCode.min = *min; // ggf. min/max ueberschreiben durch min/max von paramEditItem |
genericCode.max = *max; |
return true; |
} |
//-------------------------------------------------------------- |
//-------------------------------------------------------------- |
const char * get_genericCodeText( uint8_t cmd ) |
{ |
if( cmd == MKPARAM_LONGVALUE ) |
{ |
if( Config.DisplayLanguage == 0 ) return genericCode.longText_de; |
else return genericCode.longText_en; |
} |
else |
{ |
if( Config.DisplayLanguage == 0 ) return genericCode.shortText_de; |
else return genericCode.shortText_en; |
} |
return 0; |
} |
//-------------------------------------------------------------- |
// ok = strValueGeneric( paramID, cmd ) |
// |
// erstellt die String Representation des Wertes von paramID |
// im Buffer mkparam_strValueBuffer. |
// |
// Mit 'cmd' wird gesteuert ob es der Lang-Text oder der |
// Kurztext (3 Zeichen) ist. |
// |
// PARAMETER: |
// paramID: |
// cmd: MKPARAM_SHORTVALUE oder MKPARAM_LONGVALUE |
//-------------------------------------------------------------- |
uint8_t strValueGeneric( unsigned char paramID, uint8_t cmd ) |
{ |
unsigned char v; |
unsigned char min; |
unsigned char max; |
if( find_genericCodeByValue( paramID, &v, &min, &max) ) |
{ |
//------------------- |
// value gefunden! |
//------------------- |
if( genericCode.code == 'v' ) // Code 'v' (Value) - keine Umrechnung von min/max |
{ |
if( max < min ) |
{ |
// max < min bei 'v' (Value) wird aktuell nicht unterstuezt da |
// kein Beispiel vorhanden ist was damit ggf. gemeint ist. |
// Wenn das irgendwann benoetigt wird muss das hier gecoded werden. |
// Bis dahin wird das als Fehler angesehen (ggf. vertippt beim coden). |
_error( E41_VALUE_MIN_MAX_RANGE, v, false); |
return false; |
} |
} |
else // alles andere ausser 'v' - der Wert wird in die Range von min/max umgerechnet |
{ |
if( min <= max ) |
v = v-min; |
else |
v = min-v; // OG Notiz: v = 248 = 8 # 248 = 8, 255 = 1 # min 255 max = 248 |
v++; // fuer Anzeige +1: statt '0' eine '1' anzeigen - Beispiel: statt "Poti0" zeige "Poti1" |
} |
//------------------- |
// ertstelle String |
//------------------- |
xsnprintf_P( mkparam_strValueBuffer, MKPARAM_STRBUFFER_LEN, get_genericCodeText(cmd), v); // erzeuge den Ausgabestring in mkparam_strValueBuffer |
return true; |
} |
return false; |
} |
//-------------------------------------------------------------- |
// ok = getGenericNextValue( paramID, vInc ) |
// |
// PARAMETER: |
//-------------------------------------------------------------- |
uint8_t getGenericNextValue( unsigned char paramID, int8_t vInc ) |
{ |
int v; // value von paramID - signed int: damit -1 und >255 ausgewertet werden kann |
unsigned char value; // zum holen von v via find_genericCodeByValue() |
unsigned char min; |
unsigned char max; |
unsigned char codeIdx; |
char *pFormat; |
if( find_genericCodeByValue( paramID, &value, &min, &max) ) |
{ |
v = (int)value; // value vom paramID wird gecastet auf int um -1 und >255 fuer edit zu erkennen |
//------------------------------------------------------ |
// Pointer auf das Zeichen im Format-String ermitteln |
//------------------------------------------------------ |
pFormat = paramEditFormat; |
while( *pFormat != genericCode.code ) pFormat++; |
if( min > max ) // 'umgedrehte' min/max Werte wie bei Poti1..8 |
vInc = vInc * -1; |
v = v + vInc; |
//------------------------------------------------------ |
// min/max Grenzen des Code-Zeichens ueberschritten? |
//------------------------------------------------------ |
if( (min <= max && v < min) || (min > max && v > min) ) |
{ |
if( pFormat == paramEditFormat ) // Anfang vom Code-String? -> dann gehe zum Ende (letztes Zeichen) |
{ |
while( *(pFormat+1) ) pFormat++; |
} |
else |
{ |
pFormat--; // vorheriges Format-Zeichen = vorheriger Code |
} |
codeIdx = 0; // code-Zeichen suchen in Tabelle editGenericCode |
while( (editGenericCode[codeIdx].code != *pFormat) && (editGenericCode[codeIdx].code != EOF) ) |
codeIdx++; |
if( editGenericCode[codeIdx].code == EOF ) // Fehler? -> exit |
{ |
return false; |
} |
if( editGenericCode[codeIdx].code == 'v' ) |
v = paramEditItem.max; |
else |
v = editGenericCode[codeIdx].max; |
} |
else if( (min <= max && v > max) || (min > max && v < max) ) |
{ |
pFormat++; // naechstes Format-Zeichen = naechster Code |
if( *pFormat == 0 ) // Ende des Format-Strings? |
pFormat = paramEditFormat; |
codeIdx = 0; // code-Zeichen suchen in Tabelle editGenericCode |
while( (editGenericCode[codeIdx].code != *pFormat) && (editGenericCode[codeIdx].code != EOF) ) |
codeIdx++; |
if( editGenericCode[codeIdx].code == EOF ) // Fehler? -> exit |
{ |
return false; |
} |
if( editGenericCode[codeIdx].code == 'v' ) |
v = paramEditItem.min; |
else |
v = editGenericCode[codeIdx].min; |
} |
//------------------------------------------------------ |
// neuen Wert setzen |
//------------------------------------------------------ |
paramSet( paramID, (unsigned char)v ); |
return true; |
} // end: if( find_genericCode( paramID, &v, &min, &max) ) |
return false; |
} |
//-------------------------------------------------------------- |
// editGeneric( paramID, cmd ) |
// |
// PARAMETER: |
// cmd: MKPARAM_EDIT oder MKPARAM_SHORTVALUE oder MKPARAM_LONGVALUE |
//-------------------------------------------------------------- |
void editGeneric( unsigned char paramID, uint8_t cmd ) |
{ |
unsigned char v_org; |
uint8_t redraw; |
int8_t vInc; |
if( cmd != MKPARAM_EDIT ) |
{ |
// wenn cmd = MKPARAM_SHORTVALUE oder MKPARAM_LONGVALUE |
strValueGeneric( paramID, cmd); // Ergebnis in: mkparam_strValueBuffer |
return; |
} |
find_paramEditItem( paramID ); |
//------------------------ |
// editGeneric() - FEHLER: paramEditItem (=paramID) nicht in Tabelle paramEditItemTable gefunden |
//------------------------ |
if( paramEditItem.paramID == param_EOF ) |
{ |
_error( E11_PARAMID_EDITGENERIC, paramID, true); |
return; |
} |
lcd_cls(); |
v_org = paramGet( paramID ); |
redraw = SCREEN_REDRAW; |
vInc = 0; // 0, +1, -1 (inc/dec) |
while( true ) |
{ |
//----------------------- |
// Anzeige: Titel, usw.. |
//----------------------- |
if( redraw == SCREEN_REDRAW ) |
{ |
lcd_frect( 0, 0, 127, 7, 1); // Headline: Box fill |
lcdx_printp_at( 1, 0, PSTR("Ändern"), MINVERS, 0,0); // Titel |
lcd_printp_at( 0, 7, strGet(KEYLINE2), MNORMAL); // Keyline: <- -> Ende OK |
lcd_printp_at(11, 7, strGet(KEYCANCEL), MNORMAL); // Keyline: "Abbr." statt "Ende" einsetzen |
print_paramEditItemTitle(); // Bezeichnung des paramID's anzeigen |
redraw = SCREEN_REFRESH; |
} |
//--------------- |
// LiPo Anzeigen |
//--------------- |
show_Lipo(); // LiPo anzeigen |
//----------------------- |
// Anzeige: nur Wert |
//----------------------- |
if( redraw == SCREEN_REFRESH ) |
{ |
strValueGeneric( paramID, MKPARAM_LONGVALUE); // Lang-Text des Values anzeigen |
// nach strValueGeneric() ist auch genericCode initialisiert! |
lcd_printf_at_P( 0, 4, MNORMAL, PSTR("> %18s"), mkparam_strValueBuffer ); |
// DEBUG... |
#ifdef DEBUG_PARAMEDIT |
//lcd_printf_at_P( 16, 1, MNORMAL, PSTR("%c %3u"), genericCode.code, paramGet(paramID) ); |
#endif |
//lcd_printf_at_P( 16, 4, MNORMAL, PSTR("= %03u"), v ); |
if( abs(genericCode.max-genericCode.min) <= 20 ) |
_delay_ms( 200 ); // Verzoegerung |
vInc = 0; |
redraw = 0; |
} |
//----------------- |
// TASTEN |
//----------------- |
if( get_key_press(1 << KEY_ESC) ) // Key: Cancel |
{ |
paramSet( paramID, v_org ); // org. Wert wieder herstellen |
break; |
} |
if( get_key_press(1 << KEY_ENTER) ) // Key: OK |
{ |
break; |
} |
if( get_key_press(1 << KEY_PLUS) || get_key_long_rpt_sp( (1 << KEY_PLUS),2) ) // Key: rechts / +1 |
{ |
vInc = +1; |
} |
if( get_key_press(1 << KEY_MINUS) || get_key_long_rpt_sp( (1 << KEY_MINUS),2) ) // Key: links / -1 |
{ |
vInc = -1; |
} |
if( vInc != 0 ) |
{ |
getGenericNextValue( paramID, vInc ); |
redraw = SCREEN_REFRESH; |
} |
//------------------------------------------ |
// Pruefe PKT-Update oder andere PKT-Aktion |
//------------------------------------------ |
if( PKT_CtrlHook() ) // Update vom Updatetool angefordert? |
{ |
lcd_cls(); |
redraw = SCREEN_REDRAW; |
} |
} // end: while( true ) |
} |
//-------------------------------------------------------------- |
// editBitmask( paramID, cmd ) |
// |
// PARAMETER: |
// paramID: die paramID |
// cmd: MKPARAM_EDIT oder MKPARAM_SHORTVALUE oder MKPARAM_LONGVALUE |
//-------------------------------------------------------------- |
void editBitmask( unsigned char paramID, uint8_t cmd ) |
{ |
unsigned char v; |
uint8_t redraw; |
uint8_t i; |
int8_t pos; |
find_paramEditItem( paramID ); |
//----------------------- |
// editBitmask() - FEHLER: paramEditItem (=paramID) nicht in Tabelle paramEditItemTable gefunden |
//----------------------- |
if( paramEditItem.paramID == param_EOF ) |
{ |
_error( E12_PARAMID_EDITBITMASK, paramID, (cmd==MKPARAM_EDIT) ); |
return; |
} |
//----------------------- |
// nur Rueckgabe des Wertes in mkparam_strValueBuffer ? |
//----------------------- |
if( cmd != MKPARAM_EDIT ) |
{ |
v = paramGet( paramID ); |
xsnprintf_P( mkparam_strValueBuffer, MKPARAM_STRBUFFER_LEN, PSTR("%03u"), v); // erzeuge den Ausgabestring in mkparam_strValueBuffer |
return; |
} |
lcd_cls(); |
v = paramGet( paramID ); |
redraw = SCREEN_REDRAW; |
pos = 0; |
while( true ) |
{ |
//----------------------- |
// Anzeige: Titel, usw.. |
//----------------------- |
if( redraw == SCREEN_REDRAW ) |
{ |
lcd_frect( 0, 0, 127, 7, 1); // Headline: Box fill |
lcdx_printp_at( 1, 0, PSTR("Ändern"), MINVERS, 0,0); // Titel |
lcd_printp_at( 1, 7, PSTR("0/1 \x19 OK"), MNORMAL); // Keyline: -> 0/1 OK |
lcd_printp_at( 11, 7, strGet(KEYCANCEL), MNORMAL); // Keyline: "Abbr." bzw "Cancel" |
lcdx_printp_at( 7, 6, PSTR("\x18"), MNORMAL, -2,2); // Keyline langer Tastendruck: -> 0/1 OK |
if( (paramID == param_J16Bitmask) || (paramID == param_J17Bitmask) ) |
{ |
lcdx_printp_at( 10, 5, PSTR("(Bit1=Idle)"), MNORMAL, 0,2); // |
} |
print_paramEditItemTitle(); // Bezeichnung des paramID's (Stelle x=0, y=2) |
redraw = SCREEN_REFRESH; |
} |
//--------------- |
// LiPo Anzeigen |
//--------------- |
show_Lipo(); // LiPo anzeigen |
//----------------------- |
// Anzeige: nur Wert |
//----------------------- |
if( redraw == SCREEN_REFRESH ) |
{ |
for(i = 0; i < 8; i++) |
{ |
lcd_putc( 8-i, 4, ( (v & (1 << i)) ? '1' : '0'), MNORMAL); |
} |
lcd_frect( 0, (8*5), 125-(11*6), 7, 0); // clear: Eingabemarkierung |
lcd_printp_at (pos+1, 5,PSTR("\x12"), MNORMAL); // Eingabemarkierung (Pfeil nach oben) |
lcd_printf_at_P( 15, 4, MNORMAL, PSTR("= %03u"), v ); // Anzeige des aktuellen Wertes Dezimal |
// _delay_ms( 200 ); // Verzoegerung |
redraw = 0; |
} |
//----------------- |
// TASTEN |
//----------------- |
if( get_key_short(1 << KEY_ESC) ) // Key: Cancel |
{ |
break; // verlassen |
} |
if (get_key_short(1 << KEY_ENTER)) // Key: OK |
{ |
paramSet( paramID, v ); // Wert speichern |
break; // und verlassen |
} |
if( get_key_short(1 << KEY_PLUS) ) |
{ |
if(pos == 7) pos = 0; |
else pos++; |
redraw = SCREEN_REFRESH; |
} |
if( get_key_long(1 << KEY_PLUS) ) |
{ |
if(pos == 0) pos = 7; |
else pos--; |
redraw = SCREEN_REFRESH; |
} |
if( get_key_short (1 << KEY_MINUS) ) |
{ |
v ^= (1<<(7-pos)); |
redraw = SCREEN_REFRESH; |
} |
//------------------------------------------ |
// evtl. weitere lange Tasten abfangen, da es |
// ansonsten ggf. Nebeneffekte bzgl. dem Menue |
// beim verlassen der Funktion gibt |
//------------------------------------------ |
get_key_long_rpt_sp( KEY_ALL,2); |
//------------------------------------------ |
// Pruefe PKT-Update oder andere PKT-Aktion |
//------------------------------------------ |
if( PKT_CtrlHook() ) // Update vom Updatetool angefordert? |
{ |
lcd_cls(); |
redraw = SCREEN_REDRAW; |
} |
} // end: while( true ) |
} |
//-------------------------------------------------------------- |
//-------------------------------------------------------------- |
void editCompassOffset( unsigned char paramID, uint8_t cmd ) |
{ |
unsigned char vu; // unsigned byte |
int v; // signed |
uint8_t redraw; |
uint8_t bit7; |
uint8_t bit8; |
uint8_t lDisDeclCalc; |
find_paramEditItem( paramID ); |
//----------------------- |
// editCompassOffset() - FEHLER: paramEditItem (=paramID) nicht in Tabelle paramEditItemTable gefunden |
//----------------------- |
if( paramEditItem.paramID == param_EOF ) |
{ |
// TODO: Fehlercode anpassen! |
_error( E12_PARAMID_EDITBITMASK, paramID, (cmd==MKPARAM_EDIT) ); |
return; |
} |
//----------------------- |
// Wert ermitteln (-60 bis 60) |
//----------------------- |
vu = paramGet( paramID ); |
bit7 = ((vu & 0x40) ? true : false); // Bit 7: 1 = negativ; 0 = positiv |
bit8 = ((vu & 0x80) ? true : false); // Bit 8 in Kombination mit Bit 7 = "Disable dec. Calc" |
// Bit 8 == Bit 7: "Disable dec. Calc" AUS |
// Bit 8 != Bit 7: "Disable dec. Calc" AN |
lDisDeclCalc = ((bit8 == bit7) ? 0 : 1); // merken um das spaeter wieder in den Wert einzubauen |
vu = (vu & (0x80 ^ 0xff)); // Bit 8 loeschen |
if( bit7 ) // Wert negativ? |
{ |
vu = vu - 1; // Umrechnung: 7-Bit Zweierkomplement |
vu = (vu ^ 0xff); // invertieren |
vu = (vu & (0x80 ^ 0xff)); // Bit 8 loeschen |
v = (int)vu; |
v = v * -1; |
} |
else // Wert ist positiv |
{ |
v = (int)vu; |
} |
//----------------------- |
// nur Rueckgabe des Wertes in mkparam_strValueBuffer ? |
//----------------------- |
if( cmd != MKPARAM_EDIT ) |
{ |
xsnprintf_P( mkparam_strValueBuffer, MKPARAM_STRBUFFER_LEN, PSTR("%3d"), v ); // erzeuge den Ausgabestring in mkparam_strValueBuffer |
return; |
} |
//----------------------- |
// Wert Editieren |
//----------------------- |
lcd_cls(); |
redraw = SCREEN_REDRAW; |
while( true ) |
{ |
//----------------------- |
// Anzeige: Titel, usw.. |
//----------------------- |
if( redraw == SCREEN_REDRAW ) |
{ |
lcd_frect( 0, 0, 127, 7, 1); // Headline: Box fill |
lcdx_printp_at( 1, 0, PSTR("Ändern") , MINVERS, 0,0); // Titel |
lcd_printp_at( 0, 7, strGet(KEYLINE2) , MNORMAL); // Keyline: <- -> Ende OK |
lcd_printp_at( 11, 7, strGet(KEYCANCEL), MNORMAL); // Keyline: "Abbr." statt "Ende" einsetzen |
print_paramEditItemTitle(); // Bezeichnung des paramID's anzeigen |
redraw = SCREEN_REFRESH; |
} |
//--------------- |
// LiPo Anzeigen |
//--------------- |
show_Lipo(); // LiPo anzeigen |
//----------------------- |
// Anzeige: Wert |
//----------------------- |
if( redraw == SCREEN_REFRESH ) |
{ |
lcd_printf_at_P( 0, 4, MNORMAL, PSTR("> %3d"), v ); |
redraw = false; |
} |
//----------------- |
// TASTEN |
//----------------- |
if( get_key_short(1 << KEY_ESC) ) // Key: Cancel |
{ |
break; // verlassen |
} |
if( get_key_short(1 << KEY_ENTER) ) // Key: OK |
{ |
//------------------------------------- |
// signed int in unsigned byte wandeln |
//------------------------------------- |
if( v < 0 ) // Wert negativ? |
{ |
// Umwandeln in 7-Bit Zweierkomplement |
v = v * -1; // Wert positiv machen |
vu = (unsigned char)v; // in unsigned Byte speichern |
vu = (vu ^ 0xff); // invertieren |
vu = vu + 1; // +1 |
} |
else // Wert ist positiv |
{ |
vu = (unsigned char)v; // in unsigned Byte speichern |
} |
//------------------------------------- |
// "Disable declination calc" wieder einrechnen |
//------------------------------------- |
bit7 = ((vu & 0x40) ? true : false); // Bit 7: 1 = negativ; 0 = positiv |
if( lDisDeclCalc ) bit8 = !bit7; // Bit 8 != Bit 7: "Disable dec. Calc" AN |
else bit8 = bit7; // Bit 8 == Bit 7: "Disable dec. Calc" AUS |
if( bit8 ) vu = (vu | 0x80); // Bit 8 setzen |
else vu = (vu & (0x80 ^ 0xff)); // Bit 8 loeschen |
//------------------------------------- |
// Wert speichern |
//------------------------------------- |
paramSet( paramID, vu ); // Wert speichern |
break; // und verlassen |
} // end: KEY_ENTER |
if( get_key_short(1 << KEY_MINUS) || get_key_long_rpt_sp( (1 << KEY_MINUS),2) ) |
{ |
if( v <= -60 ) v = 60; |
else v = v - 1; |
redraw = SCREEN_REFRESH; |
} |
if( get_key_short(1 << KEY_PLUS) || get_key_long_rpt_sp( (1 << KEY_PLUS),2) ) |
{ |
if( v >= 60 ) v = -60; |
else v = v + 1; |
redraw = SCREEN_REFRESH; |
} |
//------------------------------------------ |
// evtl. weitere lange Tasten abfangen, da es |
// ansonsten ggf. Nebeneffekte bzgl. dem Menue |
// beim verlassen der Funktion gibt |
//------------------------------------------ |
get_key_long_rpt_sp( KEY_ALL,2); |
//------------------------------------------ |
// Pruefe PKT-Update oder andere PKT-Aktion |
//------------------------------------------ |
if( PKT_CtrlHook() ) // Update vom Updatetool angefordert? |
{ |
lcd_cls(); |
redraw = SCREEN_REDRAW; |
} |
} // end: while( true ) |
} |
//-------------------------------------------------------------- |
void editACCZLandingPulse( unsigned char paramID, uint8_t cmd ) |
{ |
unsigned char vu; // unsigned byte |
// int v; // signed |
uint8_t redraw; |
// uint8_t bit7; |
// uint8_t bit8; |
// uint8_t lDisDeclCalc; |
find_paramEditItem( paramID ); |
//----------------------- |
// editACCZLandingPulse() - FEHLER: paramEditItem (=paramID) nicht in Tabelle paramEditItemTable gefunden |
//----------------------- |
if( paramEditItem.paramID == param_EOF ) |
{ |
// TODO: Fehlercode anpassen! |
_error( E12_PARAMID_EDITBITMASK, paramID, (cmd==MKPARAM_EDIT) ); |
return; |
} |
vu = paramGet( paramID ); |
//----------------------- |
// nur Rueckgabe des Wertes in mkparam_strValueBuffer ? |
//----------------------- |
if( cmd != MKPARAM_EDIT ) |
{ |
xsnprintf_P( mkparam_strValueBuffer, MKPARAM_STRBUFFER_LEN, PSTR("%4d"), vu*4 ); // erzeuge den Ausgabestring in mkparam_strValueBuffer |
return; |
} |
//----------------------- |
// Wert Editieren |
//----------------------- |
lcd_cls(); |
redraw = SCREEN_REDRAW; |
while( true ) |
{ |
//----------------------- |
// Anzeige: Titel, usw.. |
//----------------------- |
if( redraw == SCREEN_REDRAW ) |
{ |
lcd_frect( 0, 0, 127, 7, 1); // Headline: Box fill |
lcdx_printp_at( 1, 0, PSTR("Ändern") , MINVERS, 0,0); // Titel |
lcd_printp_at( 0, 7, strGet(KEYLINE2) , MNORMAL); // Keyline: <- -> Ende OK |
lcd_printp_at( 11, 7, strGet(KEYCANCEL), MNORMAL); // Keyline: "Abbr." statt "Ende" einsetzen |
print_paramEditItemTitle(); // Bezeichnung des paramID's anzeigen |
redraw = SCREEN_REFRESH; |
} |
//--------------- |
// LiPo Anzeigen |
//--------------- |
show_Lipo(); // LiPo anzeigen |
//----------------------- |
// Anzeige: Wert |
//----------------------- |
if( redraw == SCREEN_REFRESH ) |
{ |
lcd_printf_at_P( 0, 4, MNORMAL, PSTR("> %4d"), vu *4 ); |
redraw = false; |
} |
//----------------- |
// TASTEN |
//----------------- |
if( get_key_short(1 << KEY_ESC) ) // Key: Cancel |
{ |
break; // verlassen |
} |
if( get_key_short(1 << KEY_ENTER) ) // Key: OK |
{ |
// //------------------------------------- |
// // signed int in unsigned byte wandeln |
// //------------------------------------- |
// if( v < 0 ) // Wert negativ? |
// { |
// // Umwandeln in 7-Bit Zweierkomplement |
// v = v * -1; // Wert positiv machen |
// vu = (unsigned char)v; // in unsigned Byte speichern |
// vu = (vu ^ 0xff); // invertieren |
// vu = vu + 1; // +1 |
// } |
// else // Wert ist positiv |
// { |
// vu = (unsigned char)v; // in unsigned Byte speichern |
// } |
// |
// //------------------------------------- |
// // "Disable declination calc" wieder einrechnen |
// //------------------------------------- |
// bit7 = ((vu & 0x40) ? true : false); // Bit 7: 1 = negativ; 0 = positiv |
// |
// if( lDisDeclCalc ) bit8 = !bit7; // Bit 8 != Bit 7: "Disable dec. Calc" AN |
// else bit8 = bit7; // Bit 8 == Bit 7: "Disable dec. Calc" AUS |
// |
// if( bit8 ) vu = (vu | 0x80); // Bit 8 setzen |
// else vu = (vu & (0x80 ^ 0xff)); // Bit 8 loeschen |
//------------------------------------- |
// Wert speichern |
//------------------------------------- |
paramSet( paramID, vu ); // Wert speichern |
break; // und verlassen |
} // end: KEY_ENTER |
if( get_key_short(1 << KEY_MINUS) || get_key_long_rpt_sp( (1 << KEY_MINUS),2) ) |
{ |
// if( v <= -60 ) v = 60; |
// else v = v - 1; |
// |
if( vu < 191 ) vu = 190; |
else vu = vu -1; |
redraw = SCREEN_REFRESH; |
} |
if( get_key_short(1 << KEY_PLUS) || get_key_long_rpt_sp( (1 << KEY_PLUS),2) ) |
{ |
// if( v >= 60 ) v = -60; |
// else v = v + 1; |
if( vu >= 255 ) vu = 255; |
// if( vu == 1 ) vu = 191; |
else vu = vu +1; |
redraw = SCREEN_REFRESH; |
} |
//------------------------------------------ |
// evtl. weitere lange Tasten abfangen, da es |
// ansonsten ggf. Nebeneffekte bzgl. dem Menue |
// beim verlassen der Funktion gibt |
//------------------------------------------ |
get_key_long_rpt_sp( KEY_ALL,2); |
//------------------------------------------ |
// Pruefe PKT-Update oder andere PKT-Aktion |
//------------------------------------------ |
if( PKT_CtrlHook() ) // Update vom Updatetool angefordert? |
{ |
lcd_cls(); |
redraw = SCREEN_REDRAW; |
} |
} // end: while( true ) |
} |
//-------------------------------------------------------------- |
//-------------------------------------------------------------- |
// editNA( paramID, cmd ) |
// |
// Hilfsfunktion die nur "nicht verfügbar" anzeigt wenn die |
// paramID noch nicht implementiert ist |
// |
// PARAMETER: |
// paramID: die paramID |
// cmd: MKPARAM_EDIT oder MKPARAM_SHORTVALUE oder MKPARAM_LONGVALUE |
//-------------------------------------------------------------- |
void editNA( unsigned char paramID, uint8_t cmd ) |
{ |
if( cmd != MKPARAM_EDIT ) |
{ |
strncpy_P( mkparam_strValueBuffer, PSTR("NA!"), MKPARAM_STRBUFFER_LEN); // "NA!" bzw, "not available" |
return; |
} |
//PKT_Message_P( *text, error, timeout, beep, clearscreen ) |
PKT_Message_P( PSTR("nicht verfügbar"), false, 2000, true, true ); // "nicht verfügbar" |
} |
//############################################################################################# |
//# TEST / DEBUG |
//############################################################################################# |
//-------------------------------------------------------------- |
//-------------------------------------------------------------- |
void editGenericTEST( unsigned char paramID ) |
{ |
lcd_cls(); |
//lcdx_printp_at( 0, 0, PSTR("NEW PARAM TEST..."), MNORMAL, 0,0); |
lcd_printp_at(12, 7, strGet(ENDE), MNORMAL); // Keyline |
find_paramEditItem( paramID ); // Ergebnis in paramEditItem (RAM) |
if( paramEditItem.paramID == paramID ) |
{ |
lcd_printf_at_P( 0, 1, MNORMAL, PSTR("%S"), paramEditItem.title_de ); |
lcd_printf_at_P( 0, 2, MNORMAL, PSTR("format: %s"), paramEditFormat ); |
lcd_printf_at_P( 0, 3, MNORMAL, PSTR("value:%u"), paramGet(paramID) ); |
strValueGeneric( paramID, MKPARAM_LONGVALUE); |
lcd_printf_at_P( 0, 4, MNORMAL, PSTR("vstr: %s"), mkparam_strValueBuffer ); |
strValueGeneric( paramID, MKPARAM_SHORTVALUE); |
lcd_printf_at_P( 0, 5, MNORMAL, PSTR("vstr: %s"), mkparam_strValueBuffer ); |
} |
if( paramEditItem.paramID == param_EOF ) |
{ |
lcd_printf_at_P( 0, 5, MNORMAL, PSTR("! ERROR !") ); |
} |
//----------------------------------------- |
// Tasten... |
while( true ) |
{ |
PKT_CtrlHook(); |
if (get_key_press (1 << KEY_ESC)) |
{ |
break; |
} |
} |
} |
//-------------------------------------------------------------- |
//-------------------------------------------------------------- |
void TEST(void) |
{ |
//editGeneric( param_Gyro_Gier_P, MKPARAM_EDIT ); |
editGeneric( param_Kanalbelegung_Gas, MKPARAM_EDIT ); |
} |
//############################################################################################# |
//# Menues & Favoriten |
//############################################################################################# |
//-------------------------------------------------------------- |
// fav_add() |
// |
// einen Favoriten hinzufuegen |
// |
// Aufruf durch: wird durch den Menu-Controller aufgerufen |
//-------------------------------------------------------------- |
void fav_add( void ) |
{ |
uint8_t paramID; |
uint8_t i; |
//------------------------------ |
// welche paramID wurde gewaehlt? |
//------------------------------ |
paramID = MenuCtrl_GetItemId(); // gewaehlter Menuepunkt bzw. paramID (0 = keine itemID) |
//------------------------------ |
// ungueltige paramID? |
//------------------------------ |
if( paramID==0 || paramID==EOF ) |
{ |
return; // keine gueltige paramID gewaehlt -> ZURUECK |
} |
//------------------------------ |
// Duplikatsuche bzgl. paramID |
// (gilt nicht fuer SEPARATOR) |
//------------------------------ |
if( paramID!=SEPARATOR ) |
{ |
//------------------------------ |
// suche Duplikate fuer paramID |
//------------------------------ |
for( i=0; (i<MAX_MKPARAM_FAVORITES) && (Config.MKParam_Favs[i]!=paramID); i++); |
//------------------------------ |
// Favoriten bereits vorhanden? |
// -> exit |
//------------------------------ |
if( Config.MKParam_Favs[i] == paramID ) |
{ |
set_beep( 300, 0x000f, BeepNormal); // Error Beep kurz |
PKT_Popup_P( 400, strGet(STR_FAV_EXIST),0,0,0); // "* Fav vorhanden *" (ca. 4 sec max.) |
return; |
} |
} // end: if( paramID!=SEPARATOR ) |
//------------------------------ |
// suche freien Speicherplatz fuer paramID |
//------------------------------ |
for( i=0; (i<MAX_MKPARAM_FAVORITES) && (Config.MKParam_Favs[i]!=0); i++); |
//------------------------------ |
// Favoriten voll? |
// -> exit |
//------------------------------ |
if( i >= MAX_MKPARAM_FAVORITES ) |
{ |
set_beep( 500, 0x000f, BeepNormal); // Error Beep lang |
PKT_Popup_P( 400, strGet(STR_FAV_FULL),0,0,0); // "* Fav ist voll *" (ca. 4 sec max.) |
return; |
} |
//------------------------------ |
// neuen Fav merken |
//------------------------------ |
Config.MKParam_Favs[i] = paramID; |
set_beep( 25, 0xffff, BeepNormal ); // kurzer Bestaetigungs-Beep |
PKT_Popup_P( 400, strGet(STR_FAV_ADD),0,0,0); // "Fav hinzugefügt!" (ca. 4 sec max.) |
} |
//-------------------------------------------------------------- |
//-------------------------------------------------------------- |
void Menu_Favoriten( void ) |
{ |
uint8_t paramID; |
uint8_t i; |
//unsigned char MKParam_Favs[MAX_MKPARAM_FAVORITES]; // Array von MK-Parameter Favoriten des Benutzers |
if( Config.MKParam_Favs[0] == 0 ) // Favoriten vorhanden |
{ |
//PKT_Message_P( *text, error, timeout, beep, clearscreen ) |
PKT_Message_P( strGet(STR_FAV_NOTEXIST), false, 500, true, true ); // Anzeige "nicht verfügbar" (max. 2 Sekunden anzeigen) |
return; |
} |
//--------------- |
// Create |
//--------------- |
MenuCtrl_Create(); |
MenuCtrl_SetTitleFromParentItem(); // uebernimmt den Titel vom uebergeordneten Menuepunkt |
MenuCtrl_ShowLevel( false ); |
MenuCtrl_SetDelete( true ); // Menueeintraege loeschen (langer Druck auf "OK") |
MenuCtrl_SetMove( true ); // Menueeintraege verschieben (langer Druck auf hoch/runter) |
//MenuCtrl_SetShowBatt( true ); |
//MenuCtrl_SetCycle( false ); |
//MenuCtrl_SetBeep( true ); |
//--------------- |
// Menu-Items |
//--------------- |
i = 0; |
while( (i<MAX_MKPARAM_FAVORITES) && (Config.MKParam_Favs[i]!=0) ) |
{ |
paramID = Config.MKParam_Favs[i]; |
if( paramID == SEPARATOR ) |
{ |
MenuCtrl_PushSeparatorID( SEPARATOR ); // Trennlinie im Menue hinzufuegen |
} |
else |
{ |
find_paramEditItem( paramID ); |
//-------- |
// FEHLER: paramEditItem (=paramID) nicht in Tabelle paramEditItemTable gefunden - Menu_EditCategory() |
//-------- |
if( paramEditItem.paramID == param_EOF ) |
{ |
_error( E01_PARAMID_MENUEDITCATEGORY, paramID, true); |
MenuCtrl_Destroy(); |
return; |
} |
MenuCtrl_PushParamEdit( paramID ); |
// existiert die paramID in der Firmware des Kopters? |
if( !paramExist(paramID) ) |
{ |
MenuCtrl_ItemActive( paramID, false ); // paramID deaktivieren |
} |
// DEBUG! (Simulation eines deaktivierten Fav's) |
// if( i==2 ) MenuCtrl_ItemActive( paramID, false ); // paramID deaktivieren |
} // end: else: if( paramID == SEPARATOR ) |
i++; |
} // end: while(..) |
//--------------- |
// Control |
//--------------- |
while( true ) |
{ |
MenuCtrl_Control( MENUCTRL_EVENT ); |
if( MenuCtrl_GetKey() == KEY_ESC ) break; // KEY_ESC = Menue beenden |
paramID = MenuCtrl_GetItemId(); // welcher Menu-Punkt (= paramID) |
find_paramEditItem( paramID ); // Edit-Definitionen heraussuchen (initialisiert: paramEditItem) |
paramEditItem.editfunc( paramID, MKPARAM_EDIT ); // zugeordnete Edit-Funktion aufrufen |
} |
//--------------- |
// ggf. neue Menuereihenfolge |
// in der Config speichern |
//--------------- |
for( i=0; (i<MAX_MKPARAM_FAVORITES); i++) |
{ |
Config.MKParam_Favs[i] = MenuCtrl_GetItemIdByIndex( i ); |
} |
//--------------- |
// Destroy |
//--------------- |
MenuCtrl_Destroy(); |
} |
//-------------------------------------------------------------- |
//-------------------------------------------------------------- |
void Menu_EditCategory( const unsigned char *menuitems ) |
{ |
unsigned char paramID; |
unsigned char lastmenuitem = 0; |
//--------------- |
// Create |
//--------------- |
MenuCtrl_Create(); |
//--------------- |
// Einstellungen |
//--------------- |
MenuCtrl_SetTitleFromParentItem(); // uebernimmt den Titel vom uebergeordneten Menuepunkt |
MenuCtrl_ShowLevel( false ); |
//MenuCtrl_SetShowBatt( true ); |
//MenuCtrl_SetCycle( false ); |
//MenuCtrl_SetBeep( true ); |
//MenuCtrl_SetKey( uint8_t key, const char *keytext, void (*keyfunc)(void) ) |
MenuCtrl_SetKey( KEY_ENTER_LONG, 0, &fav_add ); |
//--------------- |
// Menuitems |
//--------------- |
while( *menuitems != EOF ) |
{ |
paramID = *menuitems; |
if( paramID == SEPARATOR ) |
{ |
// wenn der vorherige Menueeintrag bereits ein SEPARATOR war |
// dann nicht erneut einen Separator anzeigen! |
// |
// Das kann ggf. passieren wenn z.B. aufgrund der FC-Revision |
// alle Zwischeneintraege ausgeblendet wurden |
if( lastmenuitem != SEPARATOR ) |
{ |
MenuCtrl_PushSeparatorID( SEPARATOR ); // Trennlinie im Menue hinzufuegen |
lastmenuitem = paramID; |
} |
} |
else |
{ |
//------------------------------------------------------ |
// TEST / DEBUG fuer beschriebenes Problem in _error() |
// |
// Wenn man das dortige Problem nachstellen will kann |
// man hier einen Fehlerscreen provozieren! |
//------------------------------------------------------ |
//paramID = 0; |
find_paramEditItem( paramID ); |
//-------- |
// FEHLER: paramEditItem (=paramID) nicht in Tabelle paramEditItemTable gefunden - Menu_EditCategory() |
//-------- |
if( paramEditItem.paramID == param_EOF ) |
{ |
_error( E01_PARAMID_MENUEDITCATEGORY, paramID, true); |
MenuCtrl_Destroy(); |
return; |
} |
// existiert die paramID in der Firmware des Kopters? |
if( paramExist(paramEditItem.paramID) ) |
{ |
MenuCtrl_PushParamEdit( paramEditItem.paramID ); |
lastmenuitem = paramID; |
} |
} |
menuitems++; |
} |
//--------------- |
// Control |
//--------------- |
while( true ) |
{ |
MenuCtrl_Control( MENUCTRL_EVENT ); |
if( MenuCtrl_GetKey() == KEY_ESC ) break; // Menue beenden |
paramID = MenuCtrl_GetItemId(); // welcher Menu-Punkt (= paramID) |
find_paramEditItem( paramID ); // Edit-Definitionen heraussuchen (initialisiert: paramEditItem) |
paramEditItem.editfunc( paramID, MKPARAM_EDIT ); // zugeordnete Edit-Funktion aufrufen |
} |
//--------------- |
// Destroy |
//--------------- |
MenuCtrl_Destroy(); |
} |
//-------------------------------------------------------------- |
//-------------------------------------------------------------- |
void MK_Parameters_MenuMain( uint8_t setting, char *settingname ) |
{ |
uint8_t itemid; |
//--------------- |
// Create |
//--------------- |
MenuCtrl_Create(); |
//--------------- |
// Einstellungen |
//--------------- |
MenuCtrl_SetTitle( settingname ); |
MenuCtrl_ShowLevel( false ); |
//MenuCtrl_SetShowBatt( true ); |
//MenuCtrl_SetCycle( false ); |
//MenuCtrl_SetBeep( true ); |
//--------------- |
// Menuitems |
//--------------- |
//MenuCtrl_PushML2_P( ID_MENU_TEST , MENU_ITEM, &TEST, ID_MENU_TEST_de , ID_MENU_TEST_en ); |
MenuCtrl_PushML2_P( ID_MENU_FAVORITEN , MENU_ITEM, NOFUNC, ID_MENU_FAVORITEN_de , ID_MENU_FAVORITEN_en ); // Favoriten: noch nicht implementiert... |
MenuCtrl_PushSeparator(); // MENUE TRENNLINIE |
MenuCtrl_PushML2_P( ID_MENU_KANAELE , MENU_ITEM, NOFUNC, ID_MENU_KANAELE_de , ID_MENU_KANAELE_en ); |
MenuCtrl_PushML2_P( ID_MENU_KONFIGURATION, MENU_ITEM, NOFUNC, ID_MENU_KONFIGURATION_de, ID_MENU_KONFIGURATION_en ); |
MenuCtrl_PushML2_P( ID_MENU_STICK , MENU_ITEM, NOFUNC, ID_MENU_STICK_de , ID_MENU_STICK_en ); |
MenuCtrl_PushML2_P( ID_MENU_LOOPING , MENU_ITEM, NOFUNC, ID_MENU_LOOPING_de , ID_MENU_LOOPING_en ); |
MenuCtrl_PushML2_P( ID_MENU_HOEHE , MENU_ITEM, NOFUNC, ID_MENU_HOEHE_de , ID_MENU_HOEHE_en ); |
MenuCtrl_PushML2_P( ID_MENU_KAMERA , MENU_ITEM, NOFUNC, ID_MENU_KAMERA_de , ID_MENU_KAMERA_en ); |
MenuCtrl_PushML2_P( ID_MENU_NAVICTRL , MENU_ITEM, NOFUNC, ID_MENU_NAVICTRL_de , ID_MENU_NAVICTRL_en ); |
MenuCtrl_PushML2_P( ID_MENU_AUSGAENGE , MENU_ITEM, NOFUNC, ID_MENU_AUSGAENGE_de , ID_MENU_AUSGAENGE_en ); |
MenuCtrl_PushML2_P( ID_MENU_VERSCHIEDENES, MENU_ITEM, NOFUNC, ID_MENU_VERSCHIEDENES_de, ID_MENU_VERSCHIEDENES_en ); |
MenuCtrl_PushML2_P( ID_MENU_GYRO , MENU_ITEM, NOFUNC, ID_MENU_GYRO_de , ID_MENU_GYRO_en ); |
MenuCtrl_PushML2_P( ID_MENU_BENUTZER , MENU_ITEM, NOFUNC, ID_MENU_BENUTZER_de , ID_MENU_BENUTZER_en ); |
MenuCtrl_PushML2_P( ID_MENU_ACHSKOPPLUNG , MENU_ITEM, NOFUNC, ID_MENU_ACHSKOPPLUNG_de , ID_MENU_ACHSKOPPLUNG_en ); |
//MenuCtrl_PushML2_P( ID_MENU_MIXERSETUP , MENU_ITEM, NOFUNC, ID_MENU_MIXERSETUP_de , ID_MENU_MIXERSETUP_en ); // nicht mehr unterstuetzt! |
MenuCtrl_PushML2_P( ID_MENU_EASYSETUP , MENU_ITEM, NOFUNC, ID_MENU_EASYSETUP_de , ID_MENU_EASYSETUP_en ); |
//--------------- |
// Control |
//--------------- |
while( true ) |
{ |
MenuCtrl_Control( MENUCTRL_EVENT ); |
if( MenuCtrl_GetKey() == KEY_ESC ) break; |
itemid = MenuCtrl_GetItemId(); // welcher Menu-Punkt (ID) |
switch( itemid ) |
{ |
case ID_MENU_FAVORITEN: Menu_Favoriten(); break; |
case ID_MENU_KANAELE: Menu_EditCategory( ID_MENU_KANAELE_Items ); break; |
case ID_MENU_KONFIGURATION: Menu_EditCategory( ID_MENU_KONFIGURATION_Items ); break; |
case ID_MENU_STICK: Menu_EditCategory( ID_MENU_STICK_Items ); break; |
case ID_MENU_LOOPING: Menu_EditCategory( ID_MENU_LOOPING_Items ); break; |
case ID_MENU_HOEHE: Menu_EditCategory( ID_MENU_HOEHE_Items ); break; |
case ID_MENU_KAMERA: Menu_EditCategory( ID_MENU_KAMERA_Items ); break; |
case ID_MENU_NAVICTRL: Menu_EditCategory( ID_MENU_NAVICTRL_Items ); break; |
case ID_MENU_AUSGAENGE: Menu_EditCategory( ID_MENU_AUSGAENGE_Items ); break; |
case ID_MENU_VERSCHIEDENES: Menu_EditCategory( ID_MENU_VERSCHIEDENES_Items ); break; |
case ID_MENU_GYRO: Menu_EditCategory( ID_MENU_GYRO_Items ); break; |
case ID_MENU_BENUTZER: Menu_EditCategory( ID_MENU_BENUTZER_Items ); break; |
case ID_MENU_ACHSKOPPLUNG: Menu_EditCategory( ID_MENU_ACHSKOPPLUNG_Items ); break; |
case ID_MENU_EASYSETUP: Menu_EditCategory( ID_MENU_EASYSETUP_Items ); break; |
default: //PKT_Message_P( *text, error, timeout, beep, clearscreen ) |
PKT_Message_P( PSTR("nicht verfügbar"), false, 200, true, true ); // Anzeige "nicht verfügbar" (max. 2 Sekunden anzeigen) |
break; |
} |
} |
//--------------- |
// Destroy |
//--------------- |
MenuCtrl_Destroy(); |
} |
//############################################################################################# |
//# MK_Parameters() - Main-Function |
//############################################################################################# |
//-------------------------------------------------------------- |
// changed = MK_Parameters( setting, settingname ) |
//-------------------------------------------------------------- |
uint8_t MK_Parameters( uint8_t setting, char *settingname ) |
{ |
int changed; |
unsigned char *org_parameters; |
uint8_t size = paramsetSize(); |
//----------------------------------------------------------------- |
// Erkennung ob Aenderungen durch den Benutzer vorgenommen wurde |
// -> das aktuelle Paramset wird gespeichert um es spaeter mit |
// der bearbeiteten Version via memcmp zu vergleichen |
//----------------------------------------------------------------- |
org_parameters = malloc( size+1 ); // +1 fuer das erste settings-byte |
if( !org_parameters ) |
{ |
//PKT_Message_P( *text, error, timeout, beep, clearscreen ) |
PKT_Message_P( PSTR("NO RAM!"), true, 800, true, true ); // FEHLER! (NO RAM) |
return false; |
} |
memcpy( org_parameters, (unsigned char *)(pRxData), size+1 ); // memcpy( dst, src, size)) |
//----------------------------------------------------------------- |
// MK-Parameter bearbeiten |
//----------------------------------------------------------------- |
MK_Parameters_MenuMain( setting, settingname ); |
//----------------------------------------------------------------- |
// Vergleich: Orginal-Daten <-> ggf. geaenderte Daten |
//----------------------------------------------------------------- |
changed = memcmp( org_parameters, (unsigned char *)(pRxData), size+1 ); |
free( org_parameters ); |
return( changed!=0 ); |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/Transportables_Koptertool/PKT/trunk/mksettings/mkparameters.h |
---|
0,0 → 1,95 |
/***************************************************************************** |
* Copyright (C) 2008 Thomas Kaiser, thomas@ft-fanpage.de * |
* Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net * |
* Copyright (C) 2012 Christian "Cebra" Brandtner, brandtner@brandtner.net * |
* Copyright (C) 2012 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 mkparameters.h |
//# |
//# 27.03.2014 OG |
//# etliche neue Funktionen / Strukturen |
//# |
//# 23.02.2014 OG |
//# - chg: MK_Parameters_Menu() umbenannt zu MK_Parameters() |
//# |
//# 12.02.2014 OG - NEU |
//############################################################################ |
#ifndef _MKPARAMETERS_H |
#define _MKPARAMETERS_H |
// fuer cmd-Parameter der Edit-Funktionen |
#define MKPARAM_EDIT 1 // Wert bearbeiten |
#define MKPARAM_SHORTVALUE 2 // erzeugt einen 3-Zeichen String der den Wert darstellt (z.B. "Dis"); Ergebnis in strValueBuffer |
#define MKPARAM_LONGVALUE 3 // erzeugt einen String der den Wert in langer Form darstellt (z.B. "Disabled"); Ergebnis in strValueBuffer |
#define MKPARAM_STRBUFFER_LEN 20 |
//-------------------------------------------- |
// paramEditItem_t |
// deklariert die Edit-Daten einer paramID |
//-------------------------------------------- |
typedef struct |
{ |
unsigned char paramID; // paramID aus paramset.h |
void (*editfunc)(unsigned char paramID, uint8_t cmd); // Edit-Funktion (z.B. editGeneric()); cmd = CMD_EDIT oder CMD_SHORTVALUE |
const char *format; // Parameter: String (PROGMEM) (vorallem fuer editGeneric() ) |
unsigned char min; // Parameter: min (P1) |
unsigned char max; // Parameter: max (P2) |
const char *title_de; // Text in PROGMEM - Menuetext und Beschreibung im Edit-Screen |
const char *title_en; // Text in PROGMEM |
} paramEditItem_t; |
extern paramEditItem_t paramEditItem; // RAM Buffer: fuer ein Element von paramEditDef |
extern char paramEditFormat[MKPARAM_STRBUFFER_LEN]; // RAM Buffer: fuer 'str' von paramEdit (Format; editGeneric) |
extern char mkparam_strValueBuffer[MKPARAM_STRBUFFER_LEN]; // Anzeige eines Values als Klartext; Kurz (fuer das Menue) oder Lang (in der Edit-Funktion) |
//--------------------------- |
// exportierte Funktionen |
//--------------------------- |
unsigned char find_paramEditItem( unsigned char paramID ); |
void editGeneric( unsigned char paramID, uint8_t cmd ); |
void editBitmask( unsigned char paramID, uint8_t cmd ); |
void editDisableDeclCalc( unsigned char paramID, uint8_t cmd ); |
void editCompassOffset( unsigned char paramID, uint8_t cmd ); |
void editACCZLandingPulse( unsigned char paramID, uint8_t cmd ); |
void editNA( unsigned char paramID, uint8_t cmd ); |
uint8_t MK_Parameters( uint8_t setting, char *settingname ); |
#endif // _MKPARAMETERS_H |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/Transportables_Koptertool/PKT/trunk/mksettings/mkparameters_messages.h |
---|
0,0 → 1,618 |
/***************************************************************************** |
*****************************************************************************/ |
//############################################################################ |
//# HISTORY mkparameters_messages.h |
//# |
//# 16.07.2015 Cebra |
//# - add: Texte für neue Parameter in FC 2.11a inkl. der ID's |
//# const char param_singleWpControlChannel_de |
//# const char param_MenuKeyChannel_de |
//# |
//# 09.04.2015 Cebra |
//# - add: Texte für neue Parameter in FC 2.09j |
//# const char param_ServoNickFails_de[],const char param_ServoRollFails_de[], const char param_Servo3Fails_de[], |
//# const char param_Servo4Fails_de[], const char param_Servo5Fails_de[] |
//# |
//# 26.09.2014 Cebra |
//# - add: Text Höhe Tilt Compensation (FC207f) |
//# |
//# 04.06.2014 OG |
//# - chg: Text von ID_MENU_FAVORITEN etwas gekuerzt |
//# |
//# 07.05.2014 OG |
//# - chg: ID_MENU_FAVORITEN_en |
//# |
//# 18.04.2014 OG |
//# - chg: Textanpassung: param_NaviGpsMinSat_de, param_NaviStickThreshold_de |
//# |
//# 17.04.2014 OG |
//# - add: param_Servo3OnValue, param_Servo3OffValue, param_Servo4OnValue |
//# param_Servo4OffValue |
//# - add: param_NaviMaxFlyingRange, param_NaviDescendRange |
//# - chg: Textanpassung: param_WARN_J16_Bitmask_de, param_WARN_J17_Bitmask_de |
//# - chg: Textanpassung: param_J16Bitmask, param_J16Timing |
//# - chg: Textanpassung: param_J17Bitmask, param_J17Timing |
//# - chg: Textanpassung: param_SingleWpSpeed_de |
//# - chg: Textanpassung: param_ServoNickRefresh_de, param_ServoManualControlSpeed_de |
//# - chg: Textanpassung: param_ServoRollControl_de |
//# |
//# 07.04.2014 OG |
//# - chg: kleine Aenderungen an englischen Texten |
//# |
//# 06.04.2014 CB |
//# - add: englische Menütexte ergänzt |
//# |
//# 30.03.2014 OG |
//# - chg: Sprache Hollaendisch vollstaendig entfernt |
//# |
//# 28.03.2014 OG |
//# - add: paramID-Texte fuer Rev. 100 |
//# (param_AutoPhotoDistance, param_AutoPhotoAtitudes, param_SingleWpSpeed) |
//# |
//# 16.03.2014 OG |
//# erste groesstenteils fertige Version |
//# |
//# 23.02.2014 OG - NEU |
//############################################################################ |
#ifndef _MKPARAMETERS_MESSAGES_H |
#define _MKPARAMETERS_MESSAGES_H |
//############################################################################################# |
//# Texte: Menues von mkparameters |
//############################################################################################# |
static const char ID_MENU_TEST_de[] PROGMEM = "TEST/DEBUG"; |
#define ID_MENU_TEST_en ID_MENU_TEST_de |
static const char ID_MENU_FAVORITEN_de[] PROGMEM = "Favoriten"; |
static const char ID_MENU_FAVORITEN_en[] PROGMEM = "Favorites"; |
static const char ID_MENU_KANAELE_de[] PROGMEM = "Kanäle"; |
static const char ID_MENU_KANAELE_en[] PROGMEM = "Channel"; |
static const char ID_MENU_KONFIGURATION_de[] PROGMEM = "Konfiguration"; |
static const char ID_MENU_KONFIGURATION_en[] PROGMEM = "Configuration"; |
static const char ID_MENU_STICK_de[] PROGMEM = "Stick"; |
#define ID_MENU_STICK_en ID_MENU_STICK_de |
static const char ID_MENU_LOOPING_de[] PROGMEM = "Looping"; |
#define ID_MENU_LOOPING_en ID_MENU_LOOPING_de |
static const char ID_MENU_HOEHE_de[] PROGMEM = "Höhe"; |
static const char ID_MENU_HOEHE_en[] PROGMEM = "Altitude"; |
static const char ID_MENU_KAMERA_de[] PROGMEM = "Kamera"; |
static const char ID_MENU_KAMERA_en[] PROGMEM = "Camera"; |
static const char ID_MENU_NAVICTRL_de[] PROGMEM = "Navi-Ctrl"; |
#define ID_MENU_NAVICTRL_en ID_MENU_NAVICTRL_de |
static const char ID_MENU_AUSGAENGE_de[] PROGMEM = "Ausgänge"; |
static const char ID_MENU_AUSGAENGE_en[] PROGMEM = "Outputs"; |
static const char ID_MENU_VERSCHIEDENES_de[] PROGMEM = "Verschiedenes"; |
static const char ID_MENU_VERSCHIEDENES_en[] PROGMEM = "Miscellaneous"; |
static const char ID_MENU_GYRO_de[] PROGMEM = "Gyro"; |
#define ID_MENU_GYRO_en ID_MENU_GYRO_de |
static const char ID_MENU_BENUTZER_de[] PROGMEM = "Benutzer"; |
static const char ID_MENU_BENUTZER_en[] PROGMEM = "User"; |
static const char ID_MENU_ACHSKOPPLUNG_de[] PROGMEM = "Achskopplung"; |
static const char ID_MENU_ACHSKOPPLUNG_en[] PROGMEM = "Coupl Axes"; |
/* |
static const char ID_MENU_MIXERSETUP_de[] PROGMEM = "Mixer-Setup"; |
static const char ID_MENU_MIXERSETUP_en[] PROGMEM = "Config Mix"; |
*/ |
static const char ID_MENU_EASYSETUP_de[] PROGMEM = "Easy Setup"; |
#define ID_MENU_EASYSETUP_en ID_MENU_EASYSETUP_de |
//############################################################################################# |
//# Bezeichnungen der paramID's |
//############################################################################################# |
// Hier ist erstmal alles deklariert was auch in paramset.h vorhanden ist. |
// Wenn der Compiler richtig eingestellt ist, dann wird alles nicht benoetigte wegoptimiert! |
static const char param_Hoehe_MinGas_de[] PROGMEM = "Min. Gas"; |
static const char param_Hoehe_MinGas_en[] PROGMEM = "min. throttle"; |
static const char param_Luftdruck_D_de[] PROGMEM = "Luftdruck D"; |
static const char param_Luftdruck_D_en[] PROGMEM = "barometric D"; |
static const char param_HoeheChannel_de[] PROGMEM = "Höhe Sollwert"; |
static const char param_HoeheChannel_en[] PROGMEM = "hight setpoint"; |
static const char param_Hoehe_P_de[] PROGMEM = "Höhe P"; |
static const char param_Hoehe_P_en[] PROGMEM = "altitude P"; |
static const char param_Hoehe_Verstaerkung_de[] PROGMEM = "Verstärk./Rate"; |
static const char param_Hoehe_Verstaerkung_en[] PROGMEM = "gain rate"; |
static const char param_Hoehe_ACC_Wirkung_de[] PROGMEM = "Z-ACC"; |
#define param_Hoehe_ACC_Wirkung_en param_Hoehe_ACC_Wirkung_de |
static const char param_Hoehe_HoverBand_de[] PROGMEM = "Schwebe-Gas"; |
static const char param_Hoehe_HoverBand_en[] PROGMEM = "hoover throttle"; |
static const char param_Hoehe_GPS_Z_de[] PROGMEM = "GPS Z"; |
#define param_Hoehe_GPS_Z_en param_Hoehe_GPS_Z_de |
static const char param_Hoehe_Tilt_Comp_de[] PROGMEM = "Tilt Compensation"; |
#define param_Hoehe_Tilt_Comp_en param_Hoehe_Tilt_Comp_de |
static const char param_Hoehe_StickNeutralPoint_de[] PROGMEM = "Stick Neutr.Punkt"; |
static const char param_Hoehe_StickNeutralPoint_en[] PROGMEM = "stick neutr.point"; |
static const char param_Stick_P_de[] PROGMEM = "Nick/Roll P"; |
static const char param_Stick_D_de[] PROGMEM = "Nick/Roll D"; |
static const char param_StickGier_P_de[] PROGMEM = "Gier P"; |
#define param_Stick_P_en param_Stick_P_de |
#define param_Stick_D_en param_Stick_D_de |
#define param_StickGier_P_en param_StickGier_P_de |
static const char param_Gas_Min_de[] PROGMEM = "Min. Gas"; |
static const char param_Gas_Min_en[] PROGMEM = "min. throttle"; |
static const char param_Gas_Max_de[] PROGMEM = "Max. Gas"; |
static const char param_Gas_Max_en[] PROGMEM = "max. throttle"; |
static const char param_GyroAccFaktor_de[] PROGMEM = "ACC/Gyro Faktor"; |
#define param_GyroAccFaktor_en param_GyroAccFaktor_de |
static const char param_KompassWirkung_de[] PROGMEM = "Kompasswirkung"; |
static const char param_KompassWirkung_en[] PROGMEM = "compass effect"; |
static const char param_Gyro_P_de[] PROGMEM = "Gyro P"; |
static const char param_Gyro_I_de[] PROGMEM = "Gyro I"; |
static const char param_Gyro_D_de[] PROGMEM = "Gyro D"; |
static const char param_Gyro_Gier_P_de[] PROGMEM = "Gier P"; |
static const char param_Gyro_Gier_I_de[] PROGMEM = "Gier I"; |
static const char param_Gyro_Stability_de[] PROGMEM = "Gyro stab."; |
#define param_Gyro_P_en param_Gyro_P_de |
#define param_Gyro_I_en param_Gyro_I_de |
#define param_Gyro_D_en param_Gyro_D_de |
#define param_Gyro_Gier_P_en param_Gyro_Gier_P_de |
#define param_Gyro_Gier_I_en param_Gyro_Gier_I_de |
#define param_Gyro_Stability_en param_Gyro_Stability_de |
static const char param_UnterspannungsWarnung_de[] PROGMEM = "Unterspannung [0.1V]"; |
static const char param_UnterspannungsWarnung_en[] PROGMEM = "undervoltage [0.1V]"; |
static const char param_NotGas_de[] PROGMEM = "NOT-Gas"; |
static const char param_NotGas_en[] PROGMEM = "Emerg.Throttle"; |
static const char param_NotGasZeit_de[] PROGMEM = "NOT-Gas Zeit [0.1s]"; |
static const char param_NotGasZeit_en[] PROGMEM = "Emerg.Thro.Time[0.1s]"; |
static const char param_Receiver_de[] PROGMEM = "Receiver"; |
#define param_Receiver_en param_Receiver_de |
static const char param_I_Faktor_de[] PROGMEM = "Hauptregler I"; |
static const char param_I_Faktor_en[] PROGMEM = "main I"; |
static const char param_UserParam1_de[] PROGMEM = "Parameter 1"; |
static const char param_UserParam2_de[] PROGMEM = "Parameter 2"; |
static const char param_UserParam3_de[] PROGMEM = "Parameter 3"; |
static const char param_UserParam4_de[] PROGMEM = "Parameter 4"; |
#define param_UserParam1_en param_UserParam1_de |
#define param_UserParam2_en param_UserParam2_de |
#define param_UserParam3_en param_UserParam3_de |
#define param_UserParam4_en param_UserParam4_de |
static const char param_ServoNickControl_de[] PROGMEM = "Nick Ansteuerung"; |
static const char param_ServoNickControl_en[] PROGMEM = "nick servo ctrl"; |
static const char param_ServoNickComp_de[] PROGMEM = "Nick Kompensation"; |
static const char param_ServoNickComp_en[] PROGMEM = "nick servo comp."; |
static const char param_ServoNickFails_de[] PROGMEM = "Nick Failsave Wert"; |
static const char param_ServoNickFails_en[] PROGMEM = "nick failsave value"; |
static const char param_ServoNickMin_de[] PROGMEM = "Nick Servo Minimum"; |
static const char param_ServoNickMax_de[] PROGMEM = "Nick Servo Maximum"; |
#define param_ServoNickMin_en param_ServoNickMin_de |
#define param_ServoNickMax_en param_ServoNickMax_de |
static const char param_ServoRollControl_de[] PROGMEM = "Roll Ansteuerung"; |
static const char param_ServoRollControl_en[] PROGMEM = "roll servo ctrl."; |
static const char param_ServoRollComp_de[] PROGMEM = "Roll Kompensation"; |
static const char param_ServoRollComp_en[] PROGMEM = "roll compensation"; |
static const char param_ServoRollFails_de[] PROGMEM = "Roll Failsave Wert"; |
static const char param_ServoRollFails_en[] PROGMEM = "roll failsave value"; |
static const char param_ServoRollMin_de[] PROGMEM = "Roll Minimum"; |
static const char param_ServoRollMax_de[] PROGMEM = "Roll Maximum"; |
#define param_ServoRollMin_en param_ServoRollMin_de |
#define param_ServoRollMax_en param_ServoRollMax_de |
//static const char param_ServoNickRefresh_de[] PROGMEM = "Anst. Geschw."; // ALT |
static const char param_ServoNickRefresh_de[] PROGMEM = "Anst. Geschwindigkeit"; |
static const char param_ServoNickRefresh_en[] PROGMEM = "servo refresh"; |
static const char param_ServoManualControlSpeed_de[] PROGMEM = "Manu. Geschwindigkeit."; |
static const char param_ServoManualControlSpeed_en[] PROGMEM = "manuell Speed"; |
static const char param_CamOrientation_de[] PROGMEM = "Cam Richtung"; |
static const char param_CamOrientation_en[] PROGMEM = "cam orientation"; |
static const char param_Servo3_de[] PROGMEM = "Servo 3"; |
#define param_Servo3_en param_Servo3_de |
static const char param_Servo3Fails_de[] PROGMEM = "Servo 3 Failsave Wert"; |
static const char param_Servo3Fails_en[] PROGMEM = "Servo 3 failsave value"; |
static const char param_Servo4_de[] PROGMEM = "Servo 4"; |
#define param_Servo4_en param_Servo4_de |
static const char param_Servo4Fails_de[] PROGMEM = "Servo 4 Failsave Wert"; |
static const char param_Servo4Fails_en[] PROGMEM = "Servo 4 failsave value"; |
static const char param_Servo5_de[] PROGMEM = "Servo 5"; |
#define param_Servo5_en param_Servo5_de |
static const char param_Servo5Fails_de[] PROGMEM = "Servo 5 Failsave Wert"; |
static const char param_Servo5Fails_en[] PROGMEM = "Servo 5 failsave value"; |
static const char param_Servo3OnValue_de[] PROGMEM = "Servo 3 On Out1/2"; |
static const char param_Servo3OffValue_de[] PROGMEM = "Servo 3 Off Out1/2"; |
static const char param_Servo4OnValue_de[] PROGMEM = "Servo 4 On Out1/2"; |
static const char param_Servo4OffValue_de[] PROGMEM = "Servo 4 Off Out1/2"; |
#define param_Servo3OnValue_en param_Servo3OnValue_de |
#define param_Servo3OffValue_en param_Servo3OffValue_de |
#define param_Servo4OnValue_en param_Servo4OnValue_de |
#define param_Servo4OffValue_en param_Servo4OffValue_de |
static const char param_LoopGasLimit_de[] PROGMEM = "Looping Gas Limit"; |
static const char param_LoopGasLimit_en[] PROGMEM = "loop throttle limit"; |
static const char param_LoopThreshold_de[] PROGMEM = "Ansprechschwelle"; |
static const char param_LoopThreshold_en[] PROGMEM = "response threshold"; |
static const char param_LoopHysterese_de[] PROGMEM = "Hysterese"; |
static const char param_LoopHysterese_en[] PROGMEM = "hysteresis"; |
static const char param_AchsKopplung1_de[] PROGMEM = "Gier pos. Kopplung"; |
static const char param_AchsKopplung1_en[] PROGMEM = "gier pos. coupling"; |
static const char param_AchsKopplung2_de[] PROGMEM = "Nick/Roll Kopplung"; |
static const char param_AchsKopplung2_en[] PROGMEM = "nick/roll coupling"; |
static const char param_CouplingYawCorrection_de[] PROGMEM = "Gier Korrektur"; |
static const char param_CouplingYawCorrection_en[] PROGMEM = "gier correction"; |
static const char param_WinkelUmschlagNick_de[] PROGMEM = "Nick Umkehrpunkt"; |
static const char param_WinkelUmschlagNick_en[] PROGMEM = "nick turnover"; |
static const char param_WinkelUmschlagRoll_de[] PROGMEM = "Roll Umkehrpunkt"; |
static const char param_WinkelUmschlagRoll_en[] PROGMEM = "roll turnover"; |
static const char param_GyroAccAbgleich_de[] PROGMEM = "ACC/Gyro Komp. [1/x]"; |
static const char param_GyroAccAbgleich_en[] PROGMEM = "ACC/Gyro Comp. [1/x]"; |
static const char param_Driftkomp_de[] PROGMEM = "Drift-Kompensation"; |
static const char param_Driftkomp_en[] PROGMEM = "drift compensation"; |
static const char param_DynamicStability_de[] PROGMEM = "Dynamische Stabilität"; |
static const char param_DynamicStability_en[] PROGMEM = "dynamic stabiliy"; |
static const char param_UserParam5_de[] PROGMEM = "Parameter 5"; |
static const char param_UserParam6_de[] PROGMEM = "Parameter 6"; |
static const char param_UserParam7_de[] PROGMEM = "Parameter 7"; |
static const char param_UserParam8_de[] PROGMEM = "Parameter 8"; |
#define param_UserParam5_en param_UserParam5_de |
#define param_UserParam6_en param_UserParam6_de |
#define param_UserParam7_en param_UserParam7_de |
#define param_UserParam8_en param_UserParam8_de |
static const char param_J16Bitmask_de[] PROGMEM = "Out1: Bitmaske"; |
static const char param_J16Bitmask_en[] PROGMEM = "Out1: bitmask"; |
static const char param_J16Timing_de[] PROGMEM = "Out1: Timing [10ms]"; |
#define param_J16Timing_en param_J16Timing_de |
static const char param_J17Bitmask_de[] PROGMEM = "Out2: Bitmaske"; |
static const char param_J17Bitmask_en[] PROGMEM = "Out2: bitmask"; |
static const char param_J17Timing_de[] PROGMEM = "Out2: Timing [10ms]"; |
#define param_J17Timing_en param_J17Timing_de |
static const char param_WARN_J16_Bitmask_de[] PROGMEM = "Out1 Warn UBat"; |
static const char param_WARN_J16_Bitmask_en[] PROGMEM = "Out1 undervolt warn"; |
static const char param_WARN_J17_Bitmask_de[] PROGMEM = "Out2 Warn UBat"; |
static const char param_WARN_J17_Bitmask_en[] PROGMEM = "Out2 undervolt warn"; |
static const char param_AutoPhotoDistance_de[] PROGMEM = "Auto Trigger Dist.[m]"; // ab Rev. 100 (z.B. FC 2.05e) |
#define param_AutoPhotoDistance_en param_AutoPhotoDistance_de // ab Rev. 100 (z.B. FC 2.05e) |
static const char param_AutoPhotoAtitudes_de[] PROGMEM = "Auto Trigger Alt. [m]"; // ab Rev. 100 (z.B. FC 2.05e) |
#define param_AutoPhotoAtitudes_en param_AutoPhotoAtitudes_de // ab Rev. 100 (z.B. FC 2.05e) |
#define param_NaviOut1Parameter_de param_AutoPhotoDistance_de // bis Rev. 98 |
#define param_NaviOut1Parameter_en param_AutoPhotoDistance_de // bis Rev. 98 |
static const char param_SingleWpSpeed_de[] PROGMEM = "SingleWP Speed 0.1m/s"; // ab Rev. 100 (z.B. FC 2.05e) |
#define param_SingleWpSpeed_en param_SingleWpSpeed_de // ab Rev. 100 (z.B. FC 2.05e) |
static const char param_LandingPulse_de[] PROGMEM = "ACC Z Landing Pulse"; // ab Rev. 104 (FC 2.09d) |
#define param_LandingPulse_en param_LandingPulse_de // ab Rev. 104 (FC 2.09d) |
static const char param_NaviGpsModeChannel_de[] PROGMEM = "GPS Modus Steuerung"; |
static const char param_NaviGpsModeChannel_en[] PROGMEM = "GPS mode control"; |
static const char param_NaviGpsGain_de[] PROGMEM = "GPS Verstärkung [%]"; |
static const char param_NaviGpsGain_en[] PROGMEM = "GPS gain [%]"; |
static const char param_NaviGpsP_de[] PROGMEM = "GPS-P"; |
static const char param_NaviGpsI_de[] PROGMEM = "GPS-I"; |
static const char param_NaviGpsD_de[] PROGMEM = "GPS-D"; |
static const char param_NaviGpsPLimit_de[] PROGMEM = "GPS-P Limit"; |
static const char param_NaviGpsILimit_de[] PROGMEM = "GPS-I Limit"; |
static const char param_NaviGpsDLimit_de[] PROGMEM = "GPS-D Limit"; |
static const char param_NaviGpsA_de[] PROGMEM = "GPS Acc"; |
#define param_NaviGpsP_en param_NaviGpsP_de |
#define param_NaviGpsI_en param_NaviGpsI_de |
#define param_NaviGpsD_en param_NaviGpsD_de |
#define param_NaviGpsPLimit_en param_NaviGpsPLimit_de |
#define param_NaviGpsILimit_en param_NaviGpsILimit_de |
#define param_NaviGpsDLimit_en param_NaviGpsDLimit_de |
#define param_NaviGpsA_en param_NaviGpsA_de |
static const char param_NaviGpsMinSat_de[] PROGMEM = "Min. Satelliten"; |
static const char param_NaviGpsMinSat_en[] PROGMEM = "minimum satelite"; |
static const char param_NaviStickThreshold_de[] PROGMEM = "GPS Stick-Schwelle"; |
static const char param_NaviStickThreshold_en[] PROGMEM = "GPS stick threshold"; |
static const char param_NaviWindCorrection_de[] PROGMEM = "GPS Windkorrektur [%]"; |
static const char param_NaviWindCorrection_en[] PROGMEM = "GPS wind correct. [%]"; |
static const char param_NaviAccCompensation_de[] PROGMEM = "ACC Kompensation"; |
static const char param_NaviAccCompensation_en[] PROGMEM = "ACC compensation"; |
static const char param_NaviOperatingRadius_de[] PROGMEM = "max. Radius"; |
static const char param_NaviOperatingRadius_en[] PROGMEM = "max. radius"; |
static const char param_NaviAngleLimitation_de[] PROGMEM = "Winkel Limit"; |
static const char param_NaviAngleLimitation_en[] PROGMEM = "angle limit"; |
static const char param_NaviPH_LoginTime_de[] PROGMEM = "PH Login Zeit [s]"; |
static const char param_NaviPH_LoginTime_en[] PROGMEM = "PH login time [s]"; |
static const char param_ExternalControl_de[] PROGMEM = "Ext. Kontrolle"; |
static const char param_ExternalControl_en[] PROGMEM = "ext. control"; |
static const char param_OrientationAngle_de[] PROGMEM = "OrientationAngle"; |
#define param_OrientationAngle_en param_OrientationAngle_de |
static const char param_CareFreeChannel_de[] PROGMEM = "CareFree Steuerung"; |
static const char param_CareFreeChannel_en[] PROGMEM = "careFree control"; |
static const char param_MotorSafetySwitch_de[] PROGMEM = "Motor Sicherh.Schalt."; |
static const char param_MotorSafetySwitch_en[] PROGMEM = "motor safety switch"; |
static const char param_MotorSmooth_de[] PROGMEM = "Motor Glättung"; |
static const char param_MotorSmooth_en[] PROGMEM = "motor smooth"; |
static const char param_ComingHomeAltitude_de[] PROGMEM = "Com.Home Höhe [m]"; |
static const char param_ComingHomeAltitude_en[] PROGMEM = "coming home alti. [m]"; |
static const char param_FailSafeTime_de[] PROGMEM = "Fails. CH Zeit [s]"; |
static const char param_FailSafeTime_en[] PROGMEM = "fails. CH time [s]"; |
static const char param_MaxAltitude_de[] PROGMEM = "Max. Höhe [m]"; |
static const char param_MaxAltitude_en[] PROGMEM = "max. altitude [m]"; |
static const char param_FailsafeChannel_de[] PROGMEM = "Fails. Channel 0=Aus"; |
static const char param_FailsafeChannel_en[] PROGMEM = "fails. channel 0=off"; |
static const char param_ServoFilterNick_de[] PROGMEM = "Nick Filter"; |
static const char param_ServoFilterNick_en[] PROGMEM = "nick filter"; |
static const char param_ServoFilterRoll_de[] PROGMEM = "Roll Filter"; |
static const char param_ServoFilterRoll_en[] PROGMEM = "roll filter"; |
static const char param_StartLandChannel_de[] PROGMEM = "Auto StartLand Kanal"; |
static const char param_StartLandChannel_en[] PROGMEM = "auto start/land chan."; |
static const char param_LandingSpeed_de[] PROGMEM = "Landing Speed 0.1m/s"; |
#define param_LandingSpeed_en param_LandingSpeed_de |
static const char param_CompassOffset_de[] PROGMEM = "Compass Offset [\x0B]"; |
#define param_CompassOffset_en param_CompassOffset_de |
static const char param_AutoLandingVoltage_de[] PROGMEM = "Autoland. Volt [0.1V]"; |
#define param_AutoLandingVoltage_en param_AutoLandingVoltage_de |
static const char param_ComingHomeVoltage_de[] PROGMEM = "Coming H. Volt [0.1V]"; |
#define param_ComingHomeVoltage_en param_ComingHomeVoltage_de |
static const char param_BitConfig_de[] PROGMEM = "BitConfig"; |
static const char param_ServoCompInvert_de[] PROGMEM = "ServoCompInvert"; |
static const char param_ExtraConfig_de[] PROGMEM = "ExtraConfig"; |
static const char param_GlobalConfig3_de[] PROGMEM = "GlobalConfig3"; |
static const char param_Name_de[] PROGMEM = "Setting Name"; |
#define param_BitConfig_en param_BitConfig_de |
#define param_ServoCompInvert_en param_ServoCompInvert_de |
#define param_ExtraConfig_en param_ExtraConfig_de |
#define param_GlobalConfig3_en param_GlobalConfig3_de |
#define param_Name_en param_Name_de |
static const char param_ComingHomeOrientation_de[] PROGMEM = "CH Ausrichtung"; |
static const char param_ComingHomeOrientation_en[] PROGMEM = "CH orientation"; |
static const char param_SingleWpControlChannel_de[] PROGMEM = "Single WP Ctrl Chan."; |
#define param_SingleWpControlChannel_en param_SingleWpControlChannel_de |
static const char param_MenuKeyChannel_de[] PROGMEM = "Next WP Channel"; |
#define param_MenuKeyChannel_en param_MenuKeyChannel_de |
// subitems (Bit / Byte-Felder) |
static const char param_ServoCompInvert_SVNick_de[] PROGMEM = "Nick Umkehren"; |
static const char param_ServoCompInvert_SVNick_en[] PROGMEM = "nick inv. direction"; |
static const char param_ServoCompInvert_SVRoll_de[] PROGMEM = "Roll Umkehren"; |
static const char param_ServoCompInvert_SVRoll_en[] PROGMEM = "Roll inv. direction"; |
static const char param_ServoCompInvert_SVRelMov_de[] PROGMEM = "Nick Relativ"; |
static const char param_ServoCompInvert_SVRelMov_en[] PROGMEM = "nick relativ"; |
static const char param_ExtraConfig_HeightLimit_de[] PROGMEM = "Höhenbegrenzung"; |
static const char param_ExtraConfig_HeightLimit_en[] PROGMEM = "heigth limitation"; |
static const char param_ExtraConfig_HeightVario_de[] PROGMEM = "Vario-Höhe"; // negiert param_ExtraConfig_HeightLimit |
static const char param_ExtraConfig_HeightVario_en[] PROGMEM = "vario heigth"; // negiert param_ExtraConfig_HeightLimit |
static const char param_ExtraConfig_VarioBeep_de[] PROGMEM = "akust. Vario"; |
#define param_ExtraConfig_VarioBeep_en param_ExtraConfig_VarioBeep_de |
static const char param_ExtraConfig_SensitiveRc_de[] PROGMEM = "Erw. Empf.Sig.Prüfung"; |
static const char param_ExtraConfig_SensitiveRc_en[] PROGMEM = "enh. rec. sign. check"; |
static const char param_ExtraConfig_33vReference_de[] PROGMEM = "33vReference"; |
#define param_ExtraConfig_33vReference_en param_ExtraConfig_33vReference_de |
static const char param_ExtraConfig_NoRcOffBeeping_de[] PROGMEM = "k.Summer o.Sender"; |
static const char param_ExtraConfig_NoRcOffBeeping_en[] PROGMEM = "no beep without TX"; |
static const char param_ExtraConfig_GpsAid_de[] PROGMEM = "Dynamic PH"; |
#define param_ExtraConfig_GpsAid_en param_ExtraConfig_GpsAid_de |
static const char param_ExtraConfig_LearnableCarefree_de[] PROGMEM = "Teachable CF"; |
#define param_ExtraConfig_LearnableCarefree_en param_ExtraConfig_LearnableCarefree_de |
static const char param_ExtraConfig_IgnoreMagErrAtStartup_de[] PROGMEM = "Kompass Fehler ignor."; |
static const char param_ExtraConfig_IgnoreMagErrAtStartup_en[] PROGMEM = "ignore compass error"; |
static const char param_BitConfig_LoopOben_de[] PROGMEM = "Looping Oben"; |
static const char param_BitConfig_LoopOben_en[] PROGMEM = "looping up"; |
static const char param_BitConfig_LoopUnten_de[] PROGMEM = "Looping Unten"; |
static const char param_BitConfig_LoopUnten_en[] PROGMEM = "looping down"; |
static const char param_BitConfig_LoopLinks_de[] PROGMEM = "Looping Links"; |
static const char param_BitConfig_LoopLinks_en[] PROGMEM = "looping left"; |
static const char param_BitConfig_LoopRechts_de[] PROGMEM = "Looping Rechts"; |
static const char param_BitConfig_LoopRechts_en[] PROGMEM = "looping right"; |
static const char param_BitConfig_MotorBlink1_de[] PROGMEM = "nur wenn Motor An"; |
static const char param_BitConfig_MotorBlink1_en[] PROGMEM = "only with motor on"; |
static const char param_BitConfig_MotorOffLed1_de[] PROGMEM = " \x19 sofort an"; |
static const char param_BitConfig_MotorOffLed1_en[] PROGMEM = " \x19 immediately on"; |
#define param_BitConfig_MotorOffLed2_de param_BitConfig_MotorOffLed1_de |
#define param_BitConfig_MotorBlink2_de param_BitConfig_MotorBlink1_de |
#define param_BitConfig_MotorOffLed2_en param_BitConfig_MotorOffLed1_en |
#define param_BitConfig_MotorBlink2_en param_BitConfig_MotorBlink1_en |
static const char param_GlobalConfig3_NoSdCardNoStart_de[] PROGMEM = "k.Start o.SD-Karte"; |
static const char param_GlobalConfig3_NoSdCardNoStart_en[] PROGMEM = "no start w/o SD-card"; |
static const char param_GlobalConfig3_DphMaxRadius_de[] PROGMEM = "Max.Radius dPH"; |
#define param_GlobalConfig3_DphMaxRadius_en param_GlobalConfig3_DphMaxRadius_de |
static const char param_GlobalConfig3_VarioFailsafe_de[] PROGMEM = "NOT-Gas Vario Höhe"; |
static const char param_GlobalConfig3_VarioFailsafe_en[] PROGMEM = "Emerg.thr.vario h."; |
static const char param_GlobalConfig3_MotorSwitchMode_de[] PROGMEM = "Motor Swi.Mode"; |
#define param_GlobalConfig3_MotorSwitchMode_en param_GlobalConfig3_MotorSwitchMode_de |
static const char param_GlobalConfig3_NoGpsFixNoStart_de[] PROGMEM = "k.Start o.GPS Fix"; |
static const char param_GlobalConfig3_NoGpsFixNoStart_en[] PROGMEM = "no start w/o GPS Fix"; |
static const char param_GlobalConfig3_UseNcForOut1_de[] PROGMEM = "mit WP-Event verkn."; |
static const char param_GlobalConfig3_UseNcForOut1_en[] PROGMEM = "combine with WP-Event"; |
static const char param_GlobalConfig3_SpeakAll_de[] PROGMEM = "Alles Ansagen"; |
static const char param_GlobalConfig3_SpeakAll_en[] PROGMEM = "speak all"; |
static const char param_GlobalConfig3_ServoNickCompOff_de[] PROGMEM = "Nick Komp. Aus"; |
static const char param_GlobalConfig3_ServoNickCompOff_en[] PROGMEM = "nick compensation off"; |
static const char param_GlobalConfig_HoehenRegelung_de[] PROGMEM = "Höhenregelung"; |
static const char param_GlobalConfig_HoehenRegelung_en[] PROGMEM = "height control"; |
static const char param_GlobalConfig_HoehenSchalter_de[] PROGMEM = "Schalter Höhe"; |
static const char param_GlobalConfig_HoehenSchalter_en[] PROGMEM = "height switch"; |
static const char param_GlobalConfig_HeadingHold_de[] PROGMEM = "Heading Hold"; |
#define param_GlobalConfig_HeadingHold_en param_GlobalConfig_HeadingHold_de |
static const char param_GlobalConfig_KompassAktiv_de[] PROGMEM = "Kompass Aktiv"; |
static const char param_GlobalConfig_KompassAktiv_en[] PROGMEM = "compass aktiv"; |
static const char param_GlobalConfig_KompassFix_de[] PROGMEM = "Kompass Fix"; |
static const char param_GlobalConfig_KompassFix_en[] PROGMEM = "compass fix"; |
static const char param_GlobalConfig_GpsAktiv_de[] PROGMEM = "GPS Aktiv"; |
#define param_GlobalConfig_GpsAktiv_en param_GlobalConfig_GpsAktiv_de |
static const char param_GlobalConfig_AchsenkopplungAktiv_de[] PROGMEM = "Achs(ent)kopplung"; |
static const char param_GlobalConfig_AchsenkopplungAktiv_en[] PROGMEM = "(De)Coupl Axes"; |
static const char param_GlobalConfig_DrehratenBegrenzer_de[] PROGMEM = "Drehratenbegrenzung"; |
static const char param_GlobalConfig_DrehratenBegrenzer_en[] PROGMEM = "rotary rate limit."; |
static const char param_Kanalbelegung_Nick_de[] PROGMEM = "Nick"; |
static const char param_Kanalbelegung_Roll_de[] PROGMEM = "Roll"; |
#define param_Kanalbelegung_Nick_en param_Kanalbelegung_Nick_de |
#define param_Kanalbelegung_Roll_en param_Kanalbelegung_Roll_de |
static const char param_Kanalbelegung_Gas_de[] PROGMEM = "Gas"; |
static const char param_Kanalbelegung_Gas_en[] PROGMEM = "throttle"; |
static const char param_Kanalbelegung_Gear_de[] PROGMEM = "Gear"; |
#define param_Kanalbelegung_Gear_en param_Kanalbelegung_Gear_de |
static const char param_Kanalbelegung_Poti1_de[] PROGMEM = "Poti 1"; |
static const char param_Kanalbelegung_Poti2_de[] PROGMEM = "Poti 2"; |
static const char param_Kanalbelegung_Poti3_de[] PROGMEM = "Poti 3"; |
static const char param_Kanalbelegung_Poti4_de[] PROGMEM = "Poti 4"; |
static const char param_Kanalbelegung_Poti5_de[] PROGMEM = "Poti 5"; |
static const char param_Kanalbelegung_Poti6_de[] PROGMEM = "Poti 6"; |
static const char param_Kanalbelegung_Poti7_de[] PROGMEM = "Poti 7"; |
static const char param_Kanalbelegung_Poti8_de[] PROGMEM = "Poti 8"; |
#define param_Kanalbelegung_Poti1_en param_Kanalbelegung_Poti1_de |
#define param_Kanalbelegung_Poti2_en param_Kanalbelegung_Poti2_de |
#define param_Kanalbelegung_Poti3_en param_Kanalbelegung_Poti3_de |
#define param_Kanalbelegung_Poti4_en param_Kanalbelegung_Poti4_de |
#define param_Kanalbelegung_Poti5_en param_Kanalbelegung_Poti5_de |
#define param_Kanalbelegung_Poti6_en param_Kanalbelegung_Poti6_de |
#define param_Kanalbelegung_Poti7_en param_Kanalbelegung_Poti7_de |
#define param_Kanalbelegung_Poti8_en param_Kanalbelegung_Poti8_de |
static const char param_CompassOffset_DisableDeclCalc_de[] PROGMEM = "Disable Decl. Calc"; |
#define param_CompassOffset_DisableDeclCalc_en param_CompassOffset_DisableDeclCalc_de |
static const char param_NaviMaxFlyingRange_de[] PROGMEM = "Max. Flugradius [10m]"; |
static const char param_NaviMaxFlyingRange_en[] PROGMEM = "Max. Flightrad. [10m]"; |
static const char param_NaviDescendRange_de[] PROGMEM = "Fail SinkRadius [10m]"; |
#define param_NaviDescendRange_en param_NaviDescendRange_de |
#endif // _MKPARAMETERS_H |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/Transportables_Koptertool/PKT/trunk/mksettings/mksettings.c |
---|
0,0 → 1,707 |
/***************************************************************************** |
* 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 mksettings.c |
//# |
//# 14.05.2014 OG |
//# - chg: include "mkbase.h" geaendert auf "../mk/mkbase.h" |
//# |
//# 11.05.2014 OG |
//# - chg: MKSettings_Menu() umgestellt auf MenuCtrl_SetTitleFromParentItem() |
//# -> die Menues 'erben' damit ihren Titel vom aufrufenden Menuepunkt |
//# |
//# 29.03.2014 OG |
//# - chg: versch. Funktionen: del: MenuCtrl_SetShowBatt() wegen Aenderung |
//# des Defaults auf true |
//# |
//# 26.03.2014 OG |
//# - add: etliche Aenderungen in allen Bereichen fuer das erste Release |
//# der neuen MK-Settings |
//# |
//# 27.02.2014 OG |
//# - chg: MKSettings_AskAction() Unterstuetzung von param_DUMMY |
//# |
//# 26.02.2014 OG |
//# - chg: MKSettings_Copy() auf KEYLINE2 geaendert |
//# |
//# 23.02.2014 OG |
//# - chg: MKSettings_Menu() Aufruf von MK_Parameters() geaendert |
//# |
//# 18.02.2014 OG - NEU |
//############################################################################ |
#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 <avr/eeprom.h> |
#include <util/delay.h> |
#include <string.h> |
#include <util/atomic.h> |
//#include "../lipo/lipo.h" |
#include "../main.h" |
#include "../lipo/lipo.h" |
#include "../lcd/lcd.h" |
#include "../uart/usart.h" |
#include "../utils/menuctrl.h" |
#include "../utils/xutils.h" |
#include "../uart/uart1.h" |
#include "../mk-data-structs.h" |
//#include "../menu.h" |
#include "../timer/timer.h" |
#include "../eeprom/eeprom.h" |
#include "../messages.h" |
#include "../pkt/pkt.h" |
#include "../mk/mkbase.h" |
#include "paramset.h" |
#include "mkparameters.h" |
#include "mksettings.h" |
//--------------------------------------------------------------------------------------------- |
#define F_EXIT 0 |
#define F_REFRESH 1 |
char mksettings_menu_names[6][18]; // befuellt von: MKSettings_read_Names() |
//------------------------------------- |
//------------------------------------- |
typedef struct |
{ |
unsigned char paramsetRevision; // Revision FC-Parameterset fuer die das Temp-Setting gueltig ist |
unsigned char *paramset; // malloc: Pointer auf kopierte Parameter-Daten |
} MKSetting_TMP_t; |
MKSetting_TMP_t MKSetting_TMP; |
#define ID_SETTING_COPY 10 // fuer MKSettings_Menu() |
#define ID_EDIT 20 // fuer MKSettings_AskAction() |
#define ID_ACTIVATE 21 // fuer MKSettings_AskAction() |
#define ID_COPY 22 // fuer MKSettings_AskAction() |
#define ID_SAVE 30 // fuer MKSettings_AskSaveSetting() |
#define ID_DISCARD 31 // fuer MKSettings_AskSaveSetting() |
//############################################################################################# |
//# |
//############################################################################################# |
//-------------------------------------------------------------- |
// MKSettings_TMP_Init0() |
// |
// nur fuer main.c |
//-------------------------------------------------------------- |
void MKSettings_TMP_Init0( void ) |
{ |
memset( &MKSetting_TMP, 0, sizeof(MKSetting_TMP_t) ); |
strcpy( mksettings_menu_names[5], "PKT: --empty--"); |
} |
//-------------------------------------------------------------- |
// MKSettings_TMP_Init() |
// |
// loeschen / initialisieren vom PKT Temp-Setting |
//-------------------------------------------------------------- |
void MKSettings_TMP_Init( void ) |
{ |
if( MKSetting_TMP.paramset != NULL ) |
{ |
free( MKSetting_TMP.paramset ); |
} |
MKSettings_TMP_Init0(); |
} |
//-------------------------------------------------------------- |
// from_setting = 6 : von TMP zu einem MK-Setting |
// from_setting <= 5: von MK-Setting zu TMP |
//-------------------------------------------------------------- |
uint8_t MKSettings_TMP_copy( uint8_t to_setting, uint8_t timeout ) |
{ |
uint8_t written; |
uint8_t size = paramsetSize(); |
if( MKSetting_TMP.paramset == NULL ) |
{ |
MKSetting_TMP.paramset = malloc( size+1 ); // +1 fuer das erste settings-byte |
} |
if( !MKSetting_TMP.paramset ) |
{ |
//PKT_Message_P( *text, error, timeout, beep, clearscreen ) |
PKT_Message_P( PSTR("NO RAM!"), true, 800, true, true ); // FEHLER! (NO RAM) |
return 0; // -> EXIT |
} |
// von MK-Setting 1..5 zu TMP |
if( to_setting == 6 ) |
{ |
MKSetting_TMP.paramsetRevision = MKVersion.paramsetRevision; |
memcpy( MKSetting_TMP.paramset, (unsigned char *)(pRxData), size+1 ); // memcpy( dst, src, size)) |
return 6; |
} |
// von TMP zu MK-Setting 1..5 |
memcpy( (unsigned char *)(pRxData), MKSetting_TMP.paramset , size+1 ); // memcpy( dst, src, size)) |
written = MK_Setting_write( to_setting, timeout); |
return written; |
} |
//############################################################################################# |
//# |
//############################################################################################# |
//-------------------------------------------------------------- |
//-------------------------------------------------------------- |
uint8_t MKSettings_read_Names( void ) |
{ |
uint8_t setting; |
// die 5 Settings vom Kopter laden um die |
// Setting-Namen zu speichern |
for( setting=1; setting <= 5; setting++ ) |
{ |
if( !MK_Setting_load( setting, 20 ) ) |
return(0); // Fehler - setting konnte nicht geladen werden (timeout = 20) |
xsnprintf( mksettings_menu_names[setting-1], 16, "%1d: %s", setting, paramGet_p(param_Name) ); |
} |
// TMP-Setting |
if( MKSetting_TMP.paramset != NULL ) |
{ |
if( MKSetting_TMP.paramsetRevision != MKVersion.paramsetRevision ) |
{ |
// wenn die FC-Revision vom TMP-Setting abweicht vom zuletzt geladenen |
// dann wurde ggf. der Kopter gewechselt -> TMP-Setting verwerfen |
MKSettings_TMP_Init(); |
} |
else |
{ |
// den Namen aus dem TMP-Setting holen |
paramsetInit( MKSetting_TMP.paramset ); |
xsnprintf( mksettings_menu_names[5], 16, "PKT: %s", paramGet_p(param_Name) ); |
} |
} |
setting = MK_Setting_load( 0xff, 20); // aktuelles MK Setting ermitteln |
return setting; |
} |
//-------------------------------------------------------------- |
// wahl = MKSettings_AskAction( setting) |
// |
// Rueckgabe: |
// 0 (==Ende), ID_EDIT, ID_ACTIVATE, ID_COPY |
//-------------------------------------------------------------- |
uint8_t MKSettings_AskAction( uint8_t setting ) |
{ |
uint8_t wahl = 0; |
//----------------- |
// Menue erstellen |
//----------------- |
MenuCtrl_Create(); |
MenuCtrl_SetTitle( mksettings_menu_names[setting-1] ); // Menuetitel ist der Settingname |
MenuCtrl_ShowLevel(false); |
MenuCtrl_SetTopSpace(1); // oben beim Menue eine Leerzeile einfuegen |
//----------------- |
// Menueeintraege |
//----------------- |
if( !paramExist(param_DUMMY) ) // param_DUMMY -> das Parameterset wird nicht zum bearbeiten unterstuetzt |
MenuCtrl_Push_P( ID_EDIT , MENU_ITEM, NOFUNC, strGet(EDIT_SETTING) ); // "Setting ändern" |
if( setting != 6) |
MenuCtrl_Push_P( ID_ACTIVATE, MENU_ITEM, NOFUNC, strGet(PARA_AKTIVI) ); // "aktivieren" |
MenuCtrl_Push_P( ID_COPY , MENU_ITEM, NOFUNC, strGet(STR_COPY) ); // "kopieren" |
//----------------- |
// Menue Control |
//----------------- |
MenuCtrl_Control( MENUCTRL_EVENT ); |
if( MenuCtrl_GetKey() != KEY_ESC ) |
wahl = MenuCtrl_GetItemId(); // welcher Menu-Punkt (ID_CHANGE, ID_ACTIVATE) |
MenuCtrl_Destroy(); |
MenuCtrl_ShowLevel(true); |
return wahl; // 0=Ende; ID_EDIT; ID_ACTIVATE, ID_COPY |
} |
//-------------------------------------------------------------- |
// wahl = MKSettings_AskSaveSetting( setting) |
// |
// Rueckgabe: |
// 0 (==Ende), ID_SAVE, ID_DISCARD |
//-------------------------------------------------------------- |
uint8_t MKSettings_AskSaveSetting( uint8_t setting ) |
{ |
uint8_t wahl = 0; |
//----------------- |
// Menue erstellen |
//----------------- |
MenuCtrl_Create(); |
MenuCtrl_SetTitle( mksettings_menu_names[setting-1] ); // Menuetitel ist der Settingname |
MenuCtrl_ShowLevel(false); |
MenuCtrl_SetTopSpace(1); // oben beim Menue eine Leerzeile einfuegen |
//----------------- |
// Menueeintraege |
//----------------- |
MenuCtrl_Push_P( ID_SAVE , MENU_ITEM, NOFUNC, strGet(STR_SAVE) ); // "speichern" |
MenuCtrl_Push_P( ID_DISCARD , MENU_ITEM, NOFUNC, strGet(STR_DISCARD) ); // "verwerfen" |
//----------------- |
// Menue Control |
//----------------- |
MenuCtrl_Control( MENUCTRL_EVENT ); |
if( MenuCtrl_GetKey() != KEY_ESC ) |
wahl = MenuCtrl_GetItemId(); // welcher Menu-Punkt (ID_CHANGE, ID_ACTIVATE) |
MenuCtrl_Destroy(); |
MenuCtrl_ShowLevel(true); |
return wahl; // 0=Ende; ID_EDIT; ID_ACTIVATE, ID_COPY |
} |
//-------------------------------------------------------------- |
//-------------------------------------------------------------- |
uint8_t MKSettings_Copy( uint8_t from_setting ) |
{ |
const char *mask = PSTR("%15s"); |
uint8_t redraw = true; |
uint8_t loaded = 0; |
uint8_t to_setting; |
uint8_t written; |
uint8_t key; |
int8_t yoffs; |
lcd_cls(); |
to_setting = from_setting; |
while( true ) |
{ |
//------------------------ |
// anzeigen |
//------------------------ |
if( redraw ) |
{ |
lcd_frect( 0, 0, 127, 7, 1); // Titel: Invers |
lcd_printp_at( 1, 0, strGet(PARA_COPY), MINVERS); |
yoffs = -1; |
lcdx_printp_at( 0, 2, strGet(STR_VON), MNORMAL, 0,yoffs); // "von" |
lcdx_printf_at_P( 5, 2, MNORMAL, 3,yoffs, mask, mksettings_menu_names[from_setting-1] ); |
yoffs = -7; |
lcd_frect( 5*6, 4*8+yoffs, 15*6, 7, 0); |
lcdx_printp_at( 0, 4, strGet(STR_NACH), MNORMAL, 0,yoffs); // "nach" |
lcdx_printf_at_P( 5, 4, MNORMAL, 3,yoffs, mask, mksettings_menu_names[to_setting-1] ); |
lcd_printp_at(0, 7, strGet(KEYLINE2), MNORMAL); // Keyline: <- -> Ende OK |
redraw = false; |
} |
//------------------------ |
// Tasten abfragen |
//------------------------ |
if( get_key_press(1 << KEY_ESC) ) |
{ |
return 99; // nur "ENDE" |
} |
if( get_key_press(1 << KEY_PLUS) ) |
{ |
if( to_setting == 6 ) to_setting = 1; |
else to_setting++; |
redraw = true; |
} |
if( get_key_press(1 << KEY_MINUS) ) |
{ |
if( to_setting == 1 ) to_setting = 6; |
else to_setting--; |
redraw = true; |
} |
//------------------------------- |
// Taste: OK = Setting kopieren? |
//------------------------------- |
if( get_key_press(1 << KEY_ENTER) ) |
{ |
lcdx_printp_center( 5, strGet(PARA_COPYQ), MNORMAL, 0,1); // "Wirklich kopieren?" (zentriert) |
lcd_rect_round( 0, 5*8-3, 127, 7+7, 1, R2); // Rahmen um die Frage |
lcd_frect( 0, 7*8, 127, 7, 0); // Keyline loeschen |
lcd_printp_at(12, 7, strGet(NOYES), MNORMAL); // neue Keyline: "Nein Ja" |
set_beep( 25, 0xffff, BeepNormal ); // kurzer Beep |
key = 0; |
while( !key ) // Abfrage: Ja / Nein |
{ |
key = get_key_press(1 << KEY_ENTER) ? KEY_ENTER : key; // => "Ja" (=Setting kopieren) |
key = get_key_press(1 << KEY_ESC) ? KEY_ESC : key; // => "Nein" |
PKT_CtrlHook(); |
} |
//--------------------------- |
// "Ja" -> Setting kopieren! |
//--------------------------- |
if( key == KEY_ENTER ) // => "Ja" -> Setting kopieren! |
{ |
if( from_setting != 6 ) // kein PKT TMP-Setting |
{ |
loaded = MK_Setting_load( from_setting, 20 ); // timeout = 20 |
if( loaded != from_setting ) // Fehler beim laden - Datenverlust? |
{ |
//PKT_Message_P( *text, error, timeout, beep, clearscreen ) |
PKT_Message_P( strGet(ERROR_NODATA), true, 800, true, true ); // "Datenverlust!" (max. 8 Sekunden anzeigen) |
return 0; // 0 = Ende/Abbruch |
} |
} |
if( to_setting == 6 ) // von Setting 1..5 nach TMP speichern |
{ |
MKSettings_TMP_copy( 6, 10 ); |
return loaded; |
} |
// Anzeige "speichern..." |
lcd_frect( 0, (8*4), 128, (8*4), 0); // Anzeigebereich löschen |
lcdx_printp_center( 4, strGet(STR_SAVING), MNORMAL, 0,9); // Text zentriert; String in PROGMEM |
lcd_rect_round( 0, 37, 127, 14, 1, R2); // Rahmen |
if( from_setting == 6 ) // von TMP nach Setting 1..5 |
{ |
written = MKSettings_TMP_copy( to_setting, 30 ); |
return written; |
} |
if( to_setting <= 5 ) // 'echtes' MK Setting speichern |
{ |
written = MK_Setting_write( to_setting, 30 ); // Timeout = 40 |
return written; |
} |
} |
if( key == KEY_ESC ) // => "Nein" -> nicht kopieren |
{ |
lcd_cls(); |
redraw = true; |
} |
} //end: if( get_key_press(1 << KEY_ENTER) ) |
//------------------------------------------ |
// Pruefe PKT-Update oder andere PKT-Aktion |
//------------------------------------------ |
if( PKT_CtrlHook() ) // Update vom Updatetool angefordert? |
{ |
lcd_cls(); |
redraw = true; |
} |
} // end: while( true ) |
return 0; |
} |
//-------------------------------------------------------------- |
// ret = MKSettings_Menu() |
// |
// Rueckgabe: |
// 0 = Ende/Fehler/Abbruch |
// 1 = Refresh |
//-------------------------------------------------------------- |
uint8_t MKSettings_Menu( void ) |
{ |
uint8_t i; |
uint8_t active_setting; |
uint8_t setting; |
uint8_t wahl; |
uint8_t wahl2; |
uint8_t changed; |
//PKT_Message_P( *text, error, timeout, beep, clearscreen ) |
PKT_Message_P( strGet(MSG_LOADSETTINGS), false, 0, true, true ); // "lade Settings..." |
active_setting = MKSettings_read_Names(); |
if( !active_setting ) // Fehler: settings konnten nicht geladen werden... |
{ |
//PKT_Message_P( *text, error, timeout, beep, clearscreen ) |
PKT_Message_P( strGet(ERROR_NODATA), true, 800, true, true ); // "Datenverlust!" (max. 8 Sekunden anzeigen) |
return F_EXIT; // F_EXIT = Ende/Abbruch |
} |
//--------------- |
// Create |
//--------------- |
MenuCtrl_Create(); |
//--------------- |
// Einstellungen |
//--------------- |
MenuCtrl_SetTitleFromParentItem(); // "MK Settings" |
//MenuCtrl_SetTitle_P( PSTR("MK Settings") ); |
//MenuCtrl_SetCycle( false ); |
//MenuCtrl_SetShowBatt( true ); |
//--------------- |
// Menue-Punkte |
//--------------- |
for( i=0; i< ( MKSetting_TMP.paramset!=NULL ? 6 : 5); i++ ) |
{ |
MenuCtrl_Push( i+1, MENU_SUB, NOFUNC, mksettings_menu_names[i] ); // Setting 1..5 |
} |
MenuCtrl_ItemSelect( active_setting ); // Menucursor auf aktives Setting setzen |
MenuCtrl_ItemMark( active_setting, true); // aktives Setting markieren |
//--------------- |
// Control |
//--------------- |
while( true ) |
{ |
MenuCtrl_Control( MENUCTRL_EVENT ); |
if( MenuCtrl_GetKey() == KEY_ESC ) // Ende? |
{ |
break; // Ende |
} |
setting = MenuCtrl_GetItemId(); // welcher Menu-Punkt (ID) |
if( setting >=1 && setting <= 6 ) |
{ |
wahl = MKSettings_AskAction( setting ); |
//-------------- |
// bearbeiten |
//-------------- |
if( wahl == ID_EDIT ) |
{ |
// TODO: Fehler abfangen! |
MK_Setting_load( setting, 25 ); // timeout = 25 |
changed = MK_Parameters( setting, mksettings_menu_names[setting-1] ); |
if( changed && (setting!=6) ) |
{ |
wahl2 = MKSettings_AskSaveSetting( setting ); |
if( wahl2 == ID_SAVE ) |
{ |
lcd_frect( 0, (8*7), 128, 7, 0); // Keyline löschen |
lcdx_printp_center( 4, strGet(STR_SAVING), MNORMAL, 0,9); // Text zentriert; String in PROGMEM |
lcd_rect_round( 0, 37, 127, 14, 1, R2); // Rahmen |
setting = MK_Setting_write( setting, 50); |
if( !setting ) |
{ |
//PKT_Message_P( *text, error, timeout, beep, clearscreen ) |
PKT_Message_P( strGet(ERROR_NODATA), true, 800, true, true ); // FEHLER! nodata (max. 8 Sekunden anzeigen) |
//MenuCtrl_Destroy(); |
//return F_EXIT; // F_EXIT = Ende/Abbruch |
} |
} |
} |
} |
//-------------- |
// aktivieren |
//-------------- |
if( wahl == ID_ACTIVATE ) |
{ |
//PKT_Message_P( *text, error, timeout, beep, clearscreen ) |
PKT_Message_P( strGet(MSG_ACTIVATESETTING), false, 0, true, true ); // "aktiviere Setting..." |
active_setting = MK_Setting_change( setting ); |
if( !active_setting ) |
{ |
//PKT_Message_P( *text, error, timeout, beep, clearscreen ) |
PKT_Message_P( strGet(ERROR_NODATA), true, 800, true, true ); // FEHLER! nodata (max. 8 Sekunden anzeigen) |
//MenuCtrl_Destroy(); |
//return F_EXIT; // F_EXIT = Ende/Abbruch |
} |
else |
{ |
// neues Setting markieren |
for( i=1; i<=5; i++ ) MenuCtrl_ItemMark( i, false); // Markierungen loeschen |
MenuCtrl_ItemMark( active_setting, true); // aktives Setting markieren |
} |
} // end: if( wahl == ID_ACTIVATE ) |
//-------------- |
// kopieren |
//-------------- |
if( wahl == ID_COPY ) |
{ |
active_setting = MKSettings_Copy( setting ); |
if( !active_setting ) |
{ |
//PKT_Message_P( *text, error, timeout, beep, clearscreen ) |
PKT_Message_P( strGet(ERROR_NODATA), true, 800, true, true ); // FEHLER! nodata (max. 8 Sekunden anzeigen) |
//MenuCtrl_Destroy(); |
//return F_EXIT; // F_EXIT = Ende/Abbruch |
} |
if( active_setting != 99 ) // =99 bedeutet: User hat die Funktion abgebrochen... |
{ |
MenuCtrl_Destroy(); // ok, kein Abbruch durch den User -> Menue neu aufbauen |
return F_REFRESH; // da sich ggf. Settings-Namen geaendert haben |
} |
} // end: if( wahl == ID_COPY ) |
} |
} // end: while( true ) |
//--------------- |
// Destroy |
//--------------- |
MenuCtrl_Destroy(); |
return F_EXIT; |
} |
//############################################################################################# |
//# |
//############################################################################################# |
//-------------------------------------------------------------- |
// das muss ueberarbeitet werden.... |
//-------------------------------------------------------------- |
static uint8_t check_motorOff(void) |
{ |
NaviData_t *naviData; |
if( hardware == NC ) // Prüfung funktioniert nur mit NC |
{ |
SwitchToNC(); |
SendOutData( 'o', ADDRESS_NC, 1, 10, 1); |
mode = 'O'; |
rxd_buffer_locked = FALSE; |
timer = 200; |
while( !rxd_buffer_locked && timer>0 ); |
if( rxd_buffer_locked ) // naviData Ok? |
{ |
// timer = MK_TIMEOUT; |
Decode64(); |
naviData = (NaviData_t *) pRxData; |
if( naviData->FCStatusFlags & FC_STATUS_MOTOR_RUN ) |
return false; |
else |
return true; |
} |
return false; |
} |
return true; // hmm, wenn man nur eine FC hat dann wird hier immer gemeldet "Motoren sind aus" ? |
} |
//-------------------------------------------------------------- |
//-------------------------------------------------------------- |
void MK_Settings( void ) |
{ |
//MKSettings_TMP_Init(); |
//if( true ) |
if( !check_motorOff() ) |
{ |
//PKT_Message_P( *text, error, timeout, beep, clearscreen ) |
PKT_Message_P( strGet(STR_SWITCHMOTOROFF), false, 400, true, true ); // "Motoren ausschalten!" |
return; |
} |
while( MKSettings_Menu() == F_REFRESH ); |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/Transportables_Koptertool/PKT/trunk/mksettings/mksettings.h |
---|
0,0 → 1,55 |
/***************************************************************************** |
* Copyright (C) 2008 Thomas Kaiser, thomas@ft-fanpage.de * |
* Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net * |
* Copyright (C) 2012 Christian "Cebra" Brandtner, brandtner@brandtner.net * |
* Copyright (C) 2012 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 mksettings.h |
//# |
//# 19.02.2014 OG - NEU |
//# - add: MKSettings_TMP_Init(), MKSettings_TMP_Init0() |
//# |
//# 18.02.2014 OG - NEU |
//############################################################################ |
#ifndef _MKPARAMETERS_H |
#define _MKPARAMETERS_H |
//--------------------------- |
// exportierte Funktionen |
//--------------------------- |
void MK_Settings( void ); |
void MKSettings_TMP_Init0( void ); |
void MKSettings_TMP_Init( void ); |
#endif // _MKPARAMETERS_H |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/Transportables_Koptertool/PKT/trunk/mksettings/paramset.c |
---|
0,0 → 1,2583 |
/***************************************************************************** |
* 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 paramset.c |
//# |
//# 16.07.2015 Cebra (PKT385a) |
//# - add: unsigned char SingleWpControlChannel; (FC2.11a) |
//# unsigned char MenuKeyChannel; (FC2.11a) |
//# - add: paramset_106 (FC2.11a) |
//# |
//# 09.04.2015 Cebra (PKT384a) |
//# - add: unsigned char ServoFS_Pos[5] (FC 2.09i) |
//# - add: paramset_105 (FC2.09j) |
//# |
//# 19.03.2015 Cebra (PKT383a) |
//# - add: param_LandingPulse (FC 2.09d) |
//# |
//# 26.01.2015 Cebra |
//# - add: Function transform_ComingHomeOrientation |
//# Ändert die Bits 4+5 für ServoCompInvert |
//# in Konfigurationstabelle der paramSubID: param_ComingHomeOrientation neu |
//# |
//# 26.09.2014 Cebra |
//# - add: Parameterset Rev. 103 (FC 2.07f) |
//# - chg: param_Hoehe_GPS_Z zu param_Hoehe_Verstaerkung im Paramset 103 |
//# |
//# 14.05.2014 OG |
//# - chg: include "mkbase.h" geaendert auf "../mk/mkbase.h" |
//# |
//# 10.05.2014 OG |
//# - add: transform_CompassOffset_DisableDeclCalc() - transformiert true/false |
//# in das Byte von param_CompassOffset |
//# |
//# 09.05.2014 OG |
//# - chg: paramSet() - angepasst auf Transform-Funktionen |
//# - chg: paramGet() - angepasst auf Transform-Funktionen |
//# - add: eine neue Transformations-Zwischenschicht implementiert - abgebildet |
//# ueber die neue Tabelle paramTransform. |
//# Hier koennen Transform-Funktionen hinterlegt werden die einen |
//# ubyte8 Wert veraendern. |
//# Die Transformation wird von paramSet()/paramGet() aufgerufen. |
//# |
//# 17.04.2014 OG |
//# - FIX: _paramset_getsubitemid(): Pruefung von_Revision/bis_Revision |
//# korrigiert - fuehrte vorher ggf. zu falschen Anzeigen von SubItems! |
//# - chg: param_BitConfig_MotorOffLed1 auf bis_Revision 101 begrenzt |
//# - chg: param_BitConfig_MotorOffLed2 auf bis_Revision 101 begrenzt |
//# |
//# 09.04.2014 OG |
//# - chg: Rev. 101 auf param_DUMMY umgestellt um Platz zu sparen |
//# |
//# 08.04.2014 OG |
//# - add: Parameterset Rev. 102 (FC 2.05g) |
//# - fix: _paramset_getsubitemid() - Vergleich bzgl. von/bis_Revision umgedreht |
//# und equal zugefuegt |
//# |
//# 06.04.2014 OG |
//# - add: Parameterset Rev. 101 (FC 2.05f) |
//# -> param_Servo3OnValue, param_Servo3OffValue |
//# -> param_Servo4OnValue, param_Servo4OffValue |
//# |
//# 28.03.2014 OG |
//# - add: Parameterset Rev. 100 (FC 2.05e) |
//# (param_AutoPhotoDistance, param_AutoPhotoAtitudes, param_SingleWpSpeed) |
//# |
//# 26.03.2014 OG |
//# - add: param_CompassOffset_DisableDeclCalc (Sub-Item) |
//# |
//# 24.03.2014 OG |
//# - chg: _paramset_getsubitemid() erweitert Unterstuetzung von/bis FC-Revisionen |
//# - add: paramSubItem_t mit Unterstuetzung fuer von/bis FC-Revisionen |
//# |
//# 27.02.2014 OG |
//# - chg: die Revisions-Tabellen 90 bis 94 mittels param_DUMMY gekuerzt |
//# -> keine Parameter-Bearbeitung bei denen moeglich |
//# - add: vollstaendige Unterstuetzung von paramSubID's via paramGet(), paramSet() |
//# |
//# 26.02.2014 OG |
//# - add: paramSubItem[] - Zugriffstabelle auf Bit- und Bytefelder innerhalb |
//# einer paramID |
//# - chg: bei den paramset_nnn[] Tabellen 'const' ergaenzt |
//# - chg: paramsetTest() umbenannt zu paramsetDEBUG() |
//# |
//# 19.02.2014 OG |
//# - fix: paramsetInit() Parameter pData wurde nicht konsequent verwendet |
//# |
//# 14.02.2014 OG |
//# - add: diverse Zugriffsfunktionen fuer paramID's und paramSet's |
//# - add: Rev-Tabellen von FC v0.88e bis FC v2.03d |
//# |
//# 05.02.2014 OG - NEU |
//############################################################################ |
//############################################################################ |
//# INHALT |
//# |
//# 1a. Konfigurationtabellen fuer verschiedene FC-Revisionen |
//# 1b. Zuweisungstabelle: Revision -> paramset_xxx |
//# 2. Konfigurationstabelle der paramSubID's (Bit- und Bytefelder) |
//# 3a. interne Zugriffsfunktionen |
//# 3b. oeffentliche Zugriffsfunktionen fuer paramID / paramSubID Elemente |
//# 3c. oeffentliche Zugriffsfunktionen fuer das gesamte Paramset (Int usw.) |
//# x. TEST / DEBUG |
//############################################################################ |
#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 <avr/eeprom.h> |
#include <util/delay.h> |
#include <string.h> |
#include <util/atomic.h> |
#include "../main.h" |
#include "../lipo/lipo.h" |
#include "../lcd/lcd.h" |
#include "../uart/usart.h" |
#include "../uart/uart1.h" |
#include "../mk-data-structs.h" |
#include "../timer/timer.h" |
#include "../eeprom/eeprom.h" |
#include "../messages.h" |
#include "../utils/scrollbox.h" |
#include "../pkt/pkt.h" |
#include "../mk/mkbase.h" |
#include "paramset.h" |
//--------------------------- |
// fuer transform_... |
//--------------------------- |
#define GETVALUE 1 // Wert setzen |
#define SETVALUE 2 // Wert lesen |
paramRevItem_t *paramsetRevTable; // Zeiger auf aktive Revision-Table oder 0 wenn nicht gesetzt -> wird gesetzt druch paramsetInit() / paramset.c |
unsigned char *mkparamset; // nur temp. gueltig solange der PKT-RX-Buffer (pRxData) noch nicht wieder ueberschrieben -> wird gesetzt druch paramsetInit() / paramset.c |
//############################################################################################# |
//# 1a. Konfigurationtabellen fuer verschiedene FC-Revisionen |
//############################################################################################# |
//--------------------------------------------------------------------------------------- |
// die nachfolgenden Tabellen entsprechen der Struktur von paramRevItem_t aus paramset.h |
//--------------------------------------------------------------------------------------- |
//----------------------------------------------- |
// FC-Parameter Revision: 90 |
// |
// ab FC-Version: ab ??? bis ??? |
// gefunden in : 0.88e |
// |
// Tabelle ist definiert in der |
// nachfolgenden paramset_091 |
// |
// STRUKTUR-DIFF zu 0: |
// |
// DEFINE-DIFF zu 0: |
//----------------------------------------------- |
//----------------------------------------------- |
// FC-Parameter Revision: 91 |
// |
// ab FC-Version: ab ??? bis ??? |
// gefunden in : 0.88m, 0.88n |
// |
// STRUKTUR-DIFF zu 090: |
// - keine Aenderung der internen Datenstruktur erkennbar! |
// |
// DEFINE-DIFF zu 090: |
// - add: #define PID_SPEAK_HOTT_CFG |
// - add: #define CFG3_MOTOR_SWITCH_MODE |
// - add: #define CFG3_NO_GPSFIX_NO_START |
//----------------------------------------------- |
// |
// |
// + paramID (paramRevItem_t -> paramID) |
// | |
// | + size in Bytes (paramRevItem_t -> size) |
// | | |
// | | |
// | | |
paramRevItem_t const paramset_091[] PROGMEM = |
{ |
{ param_DUMMY , 111 }, // n-Bytes Fueller... keine Unterstuetzung fuer paramEdit |
{ param_Name , 12 }, // char Name[12]; |
{ param_DUMMY , 1 }, // n-Bytes Fueller... keine Unterstuetzung fuer paramEdit |
{ param_EOF , 0 } // END OF PARAM-LIST - MUST BE THE LAST!! |
}; // end: paramset_091[] |
//############################################################################################################################################################ |
//----------------------------------------------- |
// FC-Parameter Revision: 92 |
// |
// ab FC-Version: ab ??? bis ??? |
// gefunden in : 0.90d |
// |
// Tabelle ist definiert in der |
// nachfolgenden paramset_093 |
// |
// STRUKTUR-DIFF zu 091: |
// -add: param_NaviOut1Parameter |
//# |
// DEFINE-DIFF zu 091: |
// -add: #define CFG3_USE_NC_FOR_OUT1 0x20 |
// -add: #define CFG3_SPEAK_ALL |
// -add: #define SERVO_NICK_INV 0x01 |
// -add: #define SERVO_ROLL_INV 0x02 |
// -add: #define SERVO_RELATIVE 0x04 |
//----------------------------------------------- |
//----------------------------------------------- |
// FC-Parameter Revision: 93 |
// |
// ab FC-Version: ab ??? bis ??? |
// gefunden in : 0.90e, 0.90g, 0.90j |
// |
// STRUKTUR-DIFF zu 092: |
// - keine Aenderung der internen Datenstruktur erkennbar! |
// |
// DEFINE-DIFF zu 092: |
// - keine Aenderung erkennbar! |
//----------------------------------------------- |
paramRevItem_t const paramset_093[] PROGMEM = |
{ |
{ param_DUMMY , 112 }, // n-Bytes Fueller... keine Unterstuetzung fuer paramEdit |
{ param_Name , 12 }, // char Name[12]; |
{ param_DUMMY , 1 }, // n-Bytes Fueller... keine Unterstuetzung fuer paramEdit |
{ param_EOF , 0 } // END OF PARAM-LIST - MUST BE THE LAST!! |
}; // end: paramset_093[] |
//----------------------------------------------- |
// FC-Parameter Revision: 94 |
// |
// ab FC-Version: ab ??? bis ??? |
// gefunden in : 0.91a |
// |
// STRUKTUR-DIFF zu 093: |
// - add: param_StartLandChannel |
// - add: param_LandingSpeed |
// |
// DEFINE-DIFF zu 093: |
// etwas undurchsichtig... |
// - add: #define EE_DUMMY |
// - add: #define PID_HARDWARE_VERSION |
//----------------------------------------------- |
paramRevItem_t const paramset_094[] PROGMEM = |
{ |
{ param_DUMMY , 114 }, // n-Bytes Fueller... keine Unterstuetzung fuer paramEdit |
{ param_Name , 12 }, // char Name[12]; |
{ param_DUMMY , 1 }, // n-Bytes Fueller... keine Unterstuetzung fuer paramEdit |
{ param_EOF , 0 } // END OF PARAM-LIST - MUST BE THE LAST!! |
}; // end: paramset_094[] |
//----------------------------------------------- |
// FC-Parameter Revision: 95 |
// |
// ab FC-Version: ab ??? bis ??? |
// gefunden in : 0.90L, 2.00a, , 2.00e |
// |
// STRUKTUR-DIFF zu 094: |
// - rename: param_MaxHoehe -> param_HoeheChannel |
// - rename: param_NaviGpsModeControl -> param_NaviGpsModeChannel |
// - rename: param_NaviGpsACC -> param_NaviGpsA |
// - rename: param_CareFreeModeControl -> param_CareFreeChannel |
// |
// DEFINE-DIFF zu 094: |
// - keine Aenderung |
//----------------------------------------------- |
paramRevItem_t const paramset_095[] PROGMEM = |
{ |
{ param_Revision , 1 }, // unsigned char Revision; |
{ param_Kanalbelegung , 12 }, // unsigned char Kanalbelegung[12]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3 |
{ param_GlobalConfig , 1 }, // unsigned char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv |
{ param_Hoehe_MinGas , 1 }, // unsigned char Hoehe_MinGas; // Wert : 0-100 |
{ param_Luftdruck_D , 1 }, // unsigned char Luftdruck_D; // Wert : 0-250 |
{ param_HoeheChannel , 1 }, // unsigned char HoeheChannel; // Wert : 0-32 |
{ param_Hoehe_P , 1 }, // unsigned char Hoehe_P; // Wert : 0-32 |
{ param_Hoehe_Verstaerkung , 1 }, // unsigned char Hoehe_Verstaerkung; // Wert : 0-50 |
{ param_Hoehe_ACC_Wirkung , 1 }, // unsigned char Hoehe_ACC_Wirkung; // Wert : 0-250 |
{ param_Hoehe_HoverBand , 1 }, // unsigned char Hoehe_HoverBand; // Wert : 0-250 |
{ param_Hoehe_GPS_Z , 1 }, // unsigned char Hoehe_GPS_Z; // Wert : 0-250 |
{ param_Hoehe_StickNeutralPoint , 1 }, // unsigned char Hoehe_StickNeutralPoint;// Wert : 0-250 |
{ param_Stick_P , 1 }, // unsigned char Stick_P; // Wert : 1-6 |
{ param_Stick_D , 1 }, // unsigned char Stick_D; // Wert : 0-64 |
{ param_StickGier_P , 1 }, // unsigned char StickGier_P; // Wert : 1-20 |
{ param_Gas_Min , 1 }, // unsigned char Gas_Min; // Wert : 0-32 |
{ param_Gas_Max , 1 }, // unsigned char Gas_Max; // Wert : 33-250 |
{ param_GyroAccFaktor , 1 }, // unsigned char GyroAccFaktor; // Wert : 1-64 |
{ param_KompassWirkung , 1 }, // unsigned char KompassWirkung; // Wert : 0-32 |
{ param_Gyro_P , 1 }, // unsigned char Gyro_P; // Wert : 10-250 |
{ param_Gyro_I , 1 }, // unsigned char Gyro_I; // Wert : 0-250 |
{ param_Gyro_D , 1 }, // unsigned char Gyro_D; // Wert : 0-250 |
{ param_Gyro_Gier_P , 1 }, // unsigned char Gyro_Gier_P; // Wert : 10-250 |
{ param_Gyro_Gier_I , 1 }, // unsigned char Gyro_Gier_I; // Wert : 0-250 |
{ param_Gyro_Stability , 1 }, // unsigned char Gyro_Stability; // Wert : 0-16 |
{ param_UnterspannungsWarnung , 1 }, // unsigned char UnterspannungsWarnung; // Wert : 0-250 |
{ param_NotGas , 1 }, // unsigned char NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust |
{ param_NotGasZeit , 1 }, // unsigned char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen |
{ param_Receiver , 1 }, // unsigned char Receiver; // 0= Summensignal, 1= Spektrum, 2 =Jeti, 3=ACT DSL, 4=ACT S3D |
{ param_I_Faktor , 1 }, // unsigned char I_Faktor; // Wert : 0-250 |
{ param_UserParam1 , 1 }, // unsigned char UserParam1; // Wert : 0-250 |
{ param_UserParam2 , 1 }, // unsigned char UserParam2; // Wert : 0-250 |
{ param_UserParam3 , 1 }, // unsigned char UserParam3; // Wert : 0-250 |
{ param_UserParam4 , 1 }, // unsigned char UserParam4; // Wert : 0-250 |
{ param_ServoNickControl , 1 }, // unsigned char ServoNickControl; // Wert : 0-250 // Stellung des Servos |
{ param_ServoNickComp , 1 }, // unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
{ param_ServoNickMin , 1 }, // unsigned char ServoNickMin; // Wert : 0-250 // Anschlag |
{ param_ServoNickMax , 1 }, // unsigned char ServoNickMax; // Wert : 0-250 // Anschlag |
{ param_ServoRollControl , 1 }, // unsigned char ServoRollControl; // Wert : 0-250 // Stellung des Servos |
{ param_ServoRollComp , 1 }, // unsigned char ServoRollComp; // Wert : 0-250 |
{ param_ServoRollMin , 1 }, // unsigned char ServoRollMin; // Wert : 0-250 |
{ param_ServoRollMax , 1 }, // unsigned char ServoRollMax; // Wert : 0-250 |
{ param_ServoNickRefresh , 1 }, // unsigned char ServoNickRefresh; // Speed of the Servo |
{ param_ServoManualControlSpeed , 1 }, // unsigned char ServoManualControlSpeed;// |
{ param_CamOrientation , 1 }, // unsigned char CamOrientation; // |
{ param_Servo3 , 1 }, // unsigned char Servo3; // Value or mapping of the Servo Output |
{ param_Servo4 , 1 }, // unsigned char Servo4; // Value or mapping of the Servo Output |
{ param_Servo5 , 1 }, // unsigned char Servo5; // Value or mapping of the Servo Output |
{ param_LoopGasLimit , 1 }, // unsigned char LoopGasLimit; // Wert: 0-250 max. Gas während Looping |
{ param_LoopThreshold , 1 }, // unsigned char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag |
{ param_LoopHysterese , 1 }, // unsigned char LoopHysterese; // Wert: 0-250 Hysterese für Stickausschlag |
{ param_AchsKopplung1 , 1 }, // unsigned char AchsKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick koppelt (NickRollMitkopplung) |
{ param_AchsKopplung2 , 1 }, // unsigned char AchsKopplung2; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
{ param_CouplingYawCorrection , 1 }, // unsigned char CouplingYawCorrection; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
{ param_WinkelUmschlagNick , 1 }, // unsigned char WinkelUmschlagNick; // Wert: 0-250 180°-Punkt |
{ param_WinkelUmschlagRoll , 1 }, // unsigned char WinkelUmschlagRoll; // Wert: 0-250 180°-Punkt |
{ param_GyroAccAbgleich , 1 }, // unsigned char GyroAccAbgleich; // 1/k (Koppel_ACC_Wirkung) |
{ param_Driftkomp , 1 }, // unsigned char Driftkomp; |
{ param_DynamicStability , 1 }, // unsigned char DynamicStability; |
{ param_UserParam5 , 1 }, // unsigned char UserParam5; // Wert : 0-250 |
{ param_UserParam6 , 1 }, // unsigned char UserParam6; // Wert : 0-250 |
{ param_UserParam7 , 1 }, // unsigned char UserParam7; // Wert : 0-250 |
{ param_UserParam8 , 1 }, // unsigned char UserParam8; // Wert : 0-250 |
{ param_J16Bitmask , 1 }, // unsigned char J16Bitmask; // for the J16 Output |
{ param_J16Timing , 1 }, // unsigned char J16Timing; // for the J16 Output |
{ param_J17Bitmask , 1 }, // unsigned char J17Bitmask; // for the J17 Output |
{ param_J17Timing , 1 }, // unsigned char J17Timing; // for the J17 Output |
{ param_WARN_J16_Bitmask , 1 }, // unsigned char WARN_J16_Bitmask; // for the J16 Output |
{ param_WARN_J17_Bitmask , 1 }, // unsigned char WARN_J17_Bitmask; // for the J17 Output |
{ param_NaviOut1Parameter , 1 }, // unsigned char NaviOut1Parameter; // for the J16 Output |
{ param_NaviGpsModeChannel , 1 }, // unsigned char NaviGpsModeChannel; // Parameters for the Naviboard |
{ param_NaviGpsGain , 1 }, // unsigned char NaviGpsGain; |
{ param_NaviGpsP , 1 }, // unsigned char NaviGpsP; |
{ param_NaviGpsI , 1 }, // unsigned char NaviGpsI; |
{ param_NaviGpsD , 1 }, // unsigned char NaviGpsD; |
{ param_NaviGpsPLimit , 1 }, // unsigned char NaviGpsPLimit; |
{ param_NaviGpsILimit , 1 }, // unsigned char NaviGpsILimit; |
{ param_NaviGpsDLimit , 1 }, // unsigned char NaviGpsDLimit; |
{ param_NaviGpsA , 1 }, // unsigned char NaviGpsA; |
{ param_NaviGpsMinSat , 1 }, // unsigned char NaviGpsMinSat; |
{ param_NaviStickThreshold , 1 }, // unsigned char NaviStickThreshold; |
{ param_NaviWindCorrection , 1 }, // unsigned char NaviWindCorrection; |
{ param_NaviAccCompensation , 1 }, // unsigned char NaviAccCompensation; // New since 0.86 -> was: SpeedCompensation |
{ param_NaviOperatingRadius , 1 }, // unsigned char NaviOperatingRadius; |
{ param_NaviAngleLimitation , 1 }, // unsigned char NaviAngleLimitation; |
{ param_NaviPH_LoginTime , 1 }, // unsigned char NaviPH_LoginTime; |
{ param_ExternalControl , 1 }, // unsigned char ExternalControl; // for serial Control |
{ param_OrientationAngle , 1 }, // unsigned char OrientationAngle; // Where is the front-direction? |
{ param_CareFreeChannel , 1 }, // unsigned char CareFreeChannel; // switch for CareFree |
{ param_MotorSafetySwitch , 1 }, // unsigned char MotorSafetySwitch; |
{ param_MotorSmooth , 1 }, // unsigned char MotorSmooth; |
{ param_ComingHomeAltitude , 1 }, // unsigned char ComingHomeAltitude; |
{ param_FailSafeTime , 1 }, // unsigned char FailSafeTime; |
{ param_MaxAltitude , 1 }, // unsigned char MaxAltitude; |
{ param_FailsafeChannel , 1 }, // unsigned char FailsafeChannel; // if the value of this channel is > 100, the MK reports "RC-Lost" |
{ param_ServoFilterNick , 1 }, // unsigned char ServoFilterNick; |
{ param_ServoFilterRoll , 1 }, // unsigned char ServoFilterRoll; |
{ param_StartLandChannel , 1 }, // unsigned char StartLandChannel; |
{ param_LandingSpeed , 1 }, // unsigned char LandingSpeed; |
{ param_BitConfig , 1 }, // unsigned char BitConfig; // (war Loop-Cfg) Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
{ param_ServoCompInvert , 1 }, // unsigned char ServoCompInvert; // 0x01 = Nick, 0x02 = Roll, 0x04 = relative moving // WICHTIG!!! am Ende lassen |
{ param_ExtraConfig , 1 }, // unsigned char ExtraConfig; // bitcodiert |
{ param_GlobalConfig3 , 1 }, // unsigned char GlobalConfig3; // bitcodiert |
{ param_Name , 12 }, // char Name[12]; |
{ param_crc , 1 }, // unsigned char crc; // must be the last byte! |
{ param_EOF , 0 } // END OF PARAM-LIST - MUST BE THE LAST!! |
}; // end: paramset_095[] |
//----------------------------------------------- |
// FC-Parameter Revision: 96 |
// |
// ab FC-Version: ab ??? bis ??? |
// gefunden in: ??? |
// |
// STRUKTUR-DIFF zu 095: |
// - KEINE AENDERUNG der INTERNEN DATEN-STRUKTUR! |
// |
// DEFINE-DIFF zu 095: |
// GlobalConfig3 |
// - add: #define CFG3_SERVO_NICK_COMP_OFF 0x80 |
//----------------------------------------------- |
//----------------------------------------------- |
// FC-Parameter Revision: 97 |
// |
// ab FC-Version: ab ??? bis ??? |
// gefunden in: 2.02b |
// |
// STRUKTUR-DIFF zu 096: |
// - add: param_CompassOffset |
// - add: param_AutoLandingVoltage |
// |
// DEFINE-DIFF zu 096: |
// - keine Aenderung |
//----------------------------------------------- |
paramRevItem_t const paramset_097[] PROGMEM = |
{ |
{ param_Revision , 1 }, // unsigned char Revision; |
{ param_Kanalbelegung , 12 }, // unsigned char Kanalbelegung[12]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3 |
{ param_GlobalConfig , 1 }, // unsigned char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv |
{ param_Hoehe_MinGas , 1 }, // unsigned char Hoehe_MinGas; // Wert : 0-100 |
{ param_Luftdruck_D , 1 }, // unsigned char Luftdruck_D; // Wert : 0-250 |
{ param_HoeheChannel , 1 }, // unsigned char HoeheChannel; // Wert : 0-32 |
{ param_Hoehe_P , 1 }, // unsigned char Hoehe_P; // Wert : 0-32 |
{ param_Hoehe_Verstaerkung , 1 }, // unsigned char Hoehe_Verstaerkung; // Wert : 0-50 |
{ param_Hoehe_ACC_Wirkung , 1 }, // unsigned char Hoehe_ACC_Wirkung; // Wert : 0-250 |
{ param_Hoehe_HoverBand , 1 }, // unsigned char Hoehe_HoverBand; // Wert : 0-250 |
{ param_Hoehe_GPS_Z , 1 }, // unsigned char Hoehe_GPS_Z; // Wert : 0-250 |
{ param_Hoehe_StickNeutralPoint , 1 }, // unsigned char Hoehe_StickNeutralPoint;// Wert : 0-250 |
{ param_Stick_P , 1 }, // unsigned char Stick_P; // Wert : 1-6 |
{ param_Stick_D , 1 }, // unsigned char Stick_D; // Wert : 0-64 |
{ param_StickGier_P , 1 }, // unsigned char StickGier_P; // Wert : 1-20 |
{ param_Gas_Min , 1 }, // unsigned char Gas_Min; // Wert : 0-32 |
{ param_Gas_Max , 1 }, // unsigned char Gas_Max; // Wert : 33-250 |
{ param_GyroAccFaktor , 1 }, // unsigned char GyroAccFaktor; // Wert : 1-64 |
{ param_KompassWirkung , 1 }, // unsigned char KompassWirkung; // Wert : 0-32 |
{ param_Gyro_P , 1 }, // unsigned char Gyro_P; // Wert : 10-250 |
{ param_Gyro_I , 1 }, // unsigned char Gyro_I; // Wert : 0-250 |
{ param_Gyro_D , 1 }, // unsigned char Gyro_D; // Wert : 0-250 |
{ param_Gyro_Gier_P , 1 }, // unsigned char Gyro_Gier_P; // Wert : 10-250 |
{ param_Gyro_Gier_I , 1 }, // unsigned char Gyro_Gier_I; // Wert : 0-250 |
{ param_Gyro_Stability , 1 }, // unsigned char Gyro_Stability; // Wert : 0-16 |
{ param_UnterspannungsWarnung , 1 }, // unsigned char UnterspannungsWarnung; // Wert : 0-250 |
{ param_NotGas , 1 }, // unsigned char NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust |
{ param_NotGasZeit , 1 }, // unsigned char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen |
{ param_Receiver , 1 }, // unsigned char Receiver; // 0= Summensignal, 1= Spektrum, 2 =Jeti, 3=ACT DSL, 4=ACT S3D |
{ param_I_Faktor , 1 }, // unsigned char I_Faktor; // Wert : 0-250 |
{ param_UserParam1 , 1 }, // unsigned char UserParam1; // Wert : 0-250 |
{ param_UserParam2 , 1 }, // unsigned char UserParam2; // Wert : 0-250 |
{ param_UserParam3 , 1 }, // unsigned char UserParam3; // Wert : 0-250 |
{ param_UserParam4 , 1 }, // unsigned char UserParam4; // Wert : 0-250 |
{ param_ServoNickControl , 1 }, // unsigned char ServoNickControl; // Wert : 0-250 // Stellung des Servos |
{ param_ServoNickComp , 1 }, // unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
{ param_ServoNickMin , 1 }, // unsigned char ServoNickMin; // Wert : 0-250 // Anschlag |
{ param_ServoNickMax , 1 }, // unsigned char ServoNickMax; // Wert : 0-250 // Anschlag |
{ param_ServoRollControl , 1 }, // unsigned char ServoRollControl; // Wert : 0-250 // Stellung des Servos |
{ param_ServoRollComp , 1 }, // unsigned char ServoRollComp; // Wert : 0-250 |
{ param_ServoRollMin , 1 }, // unsigned char ServoRollMin; // Wert : 0-250 |
{ param_ServoRollMax , 1 }, // unsigned char ServoRollMax; // Wert : 0-250 |
{ param_ServoNickRefresh , 1 }, // unsigned char ServoNickRefresh; // Speed of the Servo |
{ param_ServoManualControlSpeed , 1 }, // unsigned char ServoManualControlSpeed;// |
{ param_CamOrientation , 1 }, // unsigned char CamOrientation; // |
{ param_Servo3 , 1 }, // unsigned char Servo3; // Value or mapping of the Servo Output |
{ param_Servo4 , 1 }, // unsigned char Servo4; // Value or mapping of the Servo Output |
{ param_Servo5 , 1 }, // unsigned char Servo5; // Value or mapping of the Servo Output |
{ param_LoopGasLimit , 1 }, // unsigned char LoopGasLimit; // Wert: 0-250 max. Gas während Looping |
{ param_LoopThreshold , 1 }, // unsigned char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag |
{ param_LoopHysterese , 1 }, // unsigned char LoopHysterese; // Wert: 0-250 Hysterese für Stickausschlag |
{ param_AchsKopplung1 , 1 }, // unsigned char AchsKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick koppelt (NickRollMitkopplung) |
{ param_AchsKopplung2 , 1 }, // unsigned char AchsKopplung2; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
{ param_CouplingYawCorrection , 1 }, // unsigned char CouplingYawCorrection; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
{ param_WinkelUmschlagNick , 1 }, // unsigned char WinkelUmschlagNick; // Wert: 0-250 180°-Punkt |
{ param_WinkelUmschlagRoll , 1 }, // unsigned char WinkelUmschlagRoll; // Wert: 0-250 180°-Punkt |
{ param_GyroAccAbgleich , 1 }, // unsigned char GyroAccAbgleich; // 1/k (Koppel_ACC_Wirkung) |
{ param_Driftkomp , 1 }, // unsigned char Driftkomp; |
{ param_DynamicStability , 1 }, // unsigned char DynamicStability; |
{ param_UserParam5 , 1 }, // unsigned char UserParam5; // Wert : 0-250 |
{ param_UserParam6 , 1 }, // unsigned char UserParam6; // Wert : 0-250 |
{ param_UserParam7 , 1 }, // unsigned char UserParam7; // Wert : 0-250 |
{ param_UserParam8 , 1 }, // unsigned char UserParam8; // Wert : 0-250 |
{ param_J16Bitmask , 1 }, // unsigned char J16Bitmask; // for the J16 Output |
{ param_J16Timing , 1 }, // unsigned char J16Timing; // for the J16 Output |
{ param_J17Bitmask , 1 }, // unsigned char J17Bitmask; // for the J17 Output |
{ param_J17Timing , 1 }, // unsigned char J17Timing; // for the J17 Output |
{ param_WARN_J16_Bitmask , 1 }, // unsigned char WARN_J16_Bitmask; // for the J16 Output |
{ param_WARN_J17_Bitmask , 1 }, // unsigned char WARN_J17_Bitmask; // for the J17 Output |
{ param_NaviOut1Parameter , 1 }, // unsigned char NaviOut1Parameter; // for the J16 Output |
{ param_NaviGpsModeChannel , 1 }, // unsigned char NaviGpsModeChannel; // Parameters for the Naviboard |
{ param_NaviGpsGain , 1 }, // unsigned char NaviGpsGain; |
{ param_NaviGpsP , 1 }, // unsigned char NaviGpsP; |
{ param_NaviGpsI , 1 }, // unsigned char NaviGpsI; |
{ param_NaviGpsD , 1 }, // unsigned char NaviGpsD; |
{ param_NaviGpsPLimit , 1 }, // unsigned char NaviGpsPLimit; |
{ param_NaviGpsILimit , 1 }, // unsigned char NaviGpsILimit; |
{ param_NaviGpsDLimit , 1 }, // unsigned char NaviGpsDLimit; |
{ param_NaviGpsA , 1 }, // unsigned char NaviGpsA; |
{ param_NaviGpsMinSat , 1 }, // unsigned char NaviGpsMinSat; |
{ param_NaviStickThreshold , 1 }, // unsigned char NaviStickThreshold; |
{ param_NaviWindCorrection , 1 }, // unsigned char NaviWindCorrection; |
{ param_NaviAccCompensation , 1 }, // unsigned char NaviAccCompensation; // New since 0.86 -> was: SpeedCompensation |
{ param_NaviOperatingRadius , 1 }, // unsigned char NaviOperatingRadius; |
{ param_NaviAngleLimitation , 1 }, // unsigned char NaviAngleLimitation; |
{ param_NaviPH_LoginTime , 1 }, // unsigned char NaviPH_LoginTime; |
{ param_ExternalControl , 1 }, // unsigned char ExternalControl; // for serial Control |
{ param_OrientationAngle , 1 }, // unsigned char OrientationAngle; // Where is the front-direction? |
{ param_CareFreeChannel , 1 }, // unsigned char CareFreeChannel; // switch for CareFree |
{ param_MotorSafetySwitch , 1 }, // unsigned char MotorSafetySwitch; |
{ param_MotorSmooth , 1 }, // unsigned char MotorSmooth; |
{ param_ComingHomeAltitude , 1 }, // unsigned char ComingHomeAltitude; |
{ param_FailSafeTime , 1 }, // unsigned char FailSafeTime; |
{ param_MaxAltitude , 1 }, // unsigned char MaxAltitude; |
{ param_FailsafeChannel , 1 }, // unsigned char FailsafeChannel; // if the value of this channel is > 100, the MK reports "RC-Lost" |
{ param_ServoFilterNick , 1 }, // unsigned char ServoFilterNick; |
{ param_ServoFilterRoll , 1 }, // unsigned char ServoFilterRoll; |
{ param_StartLandChannel , 1 }, // unsigned char StartLandChannel; |
{ param_LandingSpeed , 1 }, // unsigned char LandingSpeed; |
{ param_CompassOffset , 1 }, // unsigned char CompassOffset; |
{ param_AutoLandingVoltage , 1 }, // unsigned char AutoLandingVoltage; // in 0,1V 0 -> disabled |
{ param_BitConfig , 1 }, // unsigned char BitConfig; // (war Loop-Cfg) Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
{ param_ServoCompInvert , 1 }, // unsigned char ServoCompInvert; // 0x01 = Nick, 0x02 = Roll, 0x04 = relative moving // WICHTIG!!! am Ende lassen |
{ param_ExtraConfig , 1 }, // unsigned char ExtraConfig; // bitcodiert |
{ param_GlobalConfig3 , 1 }, // unsigned char GlobalConfig3; // bitcodiert |
{ param_Name , 12 }, // char Name[12]; |
{ param_crc , 1 }, // unsigned char crc; // must be the last byte! |
{ param_EOF , 0 } // END OF PARAM-LIST - MUST BE THE LAST!! |
}; // end: paramset_097[] |
//----------------------------------------------- |
// FC-Parameter Revision: 98 |
// |
// ab FC-Version: ab ??? bis ??? |
// gefunden in: 2.03d |
// |
// STRUKTUR-DIFF zu 097: |
// - add: param_ComingHomeVoltage |
// |
// DEFINE-DIFF zu 097: |
// - keine Aenderung |
//----------------------------------------------- |
paramRevItem_t const paramset_098[] PROGMEM = |
{ |
{ param_Revision , 1 }, // unsigned char Revision; |
{ param_Kanalbelegung , 12 }, // unsigned char Kanalbelegung[12]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3 |
{ param_GlobalConfig , 1 }, // unsigned char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv |
{ param_Hoehe_MinGas , 1 }, // unsigned char Hoehe_MinGas; // Wert : 0-100 |
{ param_Luftdruck_D , 1 }, // unsigned char Luftdruck_D; // Wert : 0-250 |
{ param_HoeheChannel , 1 }, // unsigned char HoeheChannel; // Wert : 0-32 |
{ param_Hoehe_P , 1 }, // unsigned char Hoehe_P; // Wert : 0-32 |
{ param_Hoehe_Verstaerkung , 1 }, // unsigned char Hoehe_Verstaerkung; // Wert : 0-50 |
{ param_Hoehe_ACC_Wirkung , 1 }, // unsigned char Hoehe_ACC_Wirkung; // Wert : 0-250 |
{ param_Hoehe_HoverBand , 1 }, // unsigned char Hoehe_HoverBand; // Wert : 0-250 |
{ param_Hoehe_GPS_Z , 1 }, // unsigned char Hoehe_GPS_Z; // Wert : 0-250 |
{ param_Hoehe_StickNeutralPoint , 1 }, // unsigned char Hoehe_StickNeutralPoint;// Wert : 0-250 |
{ param_Stick_P , 1 }, // unsigned char Stick_P; // Wert : 1-6 |
{ param_Stick_D , 1 }, // unsigned char Stick_D; // Wert : 0-64 |
{ param_StickGier_P , 1 }, // unsigned char StickGier_P; // Wert : 1-20 |
{ param_Gas_Min , 1 }, // unsigned char Gas_Min; // Wert : 0-32 |
{ param_Gas_Max , 1 }, // unsigned char Gas_Max; // Wert : 33-250 |
{ param_GyroAccFaktor , 1 }, // unsigned char GyroAccFaktor; // Wert : 1-64 |
{ param_KompassWirkung , 1 }, // unsigned char KompassWirkung; // Wert : 0-32 |
{ param_Gyro_P , 1 }, // unsigned char Gyro_P; // Wert : 10-250 |
{ param_Gyro_I , 1 }, // unsigned char Gyro_I; // Wert : 0-250 |
{ param_Gyro_D , 1 }, // unsigned char Gyro_D; // Wert : 0-250 |
{ param_Gyro_Gier_P , 1 }, // unsigned char Gyro_Gier_P; // Wert : 10-250 |
{ param_Gyro_Gier_I , 1 }, // unsigned char Gyro_Gier_I; // Wert : 0-250 |
{ param_Gyro_Stability , 1 }, // unsigned char Gyro_Stability; // Wert : 0-16 |
{ param_UnterspannungsWarnung , 1 }, // unsigned char UnterspannungsWarnung; // Wert : 0-250 |
{ param_NotGas , 1 }, // unsigned char NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust |
{ param_NotGasZeit , 1 }, // unsigned char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen |
{ param_Receiver , 1 }, // unsigned char Receiver; // 0= Summensignal, 1= Spektrum, 2 =Jeti, 3=ACT DSL, 4=ACT S3D |
{ param_I_Faktor , 1 }, // unsigned char I_Faktor; // Wert : 0-250 |
{ param_UserParam1 , 1 }, // unsigned char UserParam1; // Wert : 0-250 |
{ param_UserParam2 , 1 }, // unsigned char UserParam2; // Wert : 0-250 |
{ param_UserParam3 , 1 }, // unsigned char UserParam3; // Wert : 0-250 |
{ param_UserParam4 , 1 }, // unsigned char UserParam4; // Wert : 0-250 |
{ param_ServoNickControl , 1 }, // unsigned char ServoNickControl; // Wert : 0-250 // Stellung des Servos |
{ param_ServoNickComp , 1 }, // unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
{ param_ServoNickMin , 1 }, // unsigned char ServoNickMin; // Wert : 0-250 // Anschlag |
{ param_ServoNickMax , 1 }, // unsigned char ServoNickMax; // Wert : 0-250 // Anschlag |
{ param_ServoRollControl , 1 }, // unsigned char ServoRollControl; // Wert : 0-250 // Stellung des Servos |
{ param_ServoRollComp , 1 }, // unsigned char ServoRollComp; // Wert : 0-250 |
{ param_ServoRollMin , 1 }, // unsigned char ServoRollMin; // Wert : 0-250 |
{ param_ServoRollMax , 1 }, // unsigned char ServoRollMax; // Wert : 0-250 |
{ param_ServoNickRefresh , 1 }, // unsigned char ServoNickRefresh; // Speed of the Servo |
{ param_ServoManualControlSpeed , 1 }, // unsigned char ServoManualControlSpeed;// |
{ param_CamOrientation , 1 }, // unsigned char CamOrientation; // |
{ param_Servo3 , 1 }, // unsigned char Servo3; // Value or mapping of the Servo Output |
{ param_Servo4 , 1 }, // unsigned char Servo4; // Value or mapping of the Servo Output |
{ param_Servo5 , 1 }, // unsigned char Servo5; // Value or mapping of the Servo Output |
{ param_LoopGasLimit , 1 }, // unsigned char LoopGasLimit; // Wert: 0-250 max. Gas während Looping |
{ param_LoopThreshold , 1 }, // unsigned char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag |
{ param_LoopHysterese , 1 }, // unsigned char LoopHysterese; // Wert: 0-250 Hysterese für Stickausschlag |
{ param_AchsKopplung1 , 1 }, // unsigned char AchsKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick koppelt (NickRollMitkopplung) |
{ param_AchsKopplung2 , 1 }, // unsigned char AchsKopplung2; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
{ param_CouplingYawCorrection , 1 }, // unsigned char CouplingYawCorrection; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
{ param_WinkelUmschlagNick , 1 }, // unsigned char WinkelUmschlagNick; // Wert: 0-250 180°-Punkt |
{ param_WinkelUmschlagRoll , 1 }, // unsigned char WinkelUmschlagRoll; // Wert: 0-250 180°-Punkt |
{ param_GyroAccAbgleich , 1 }, // unsigned char GyroAccAbgleich; // 1/k (Koppel_ACC_Wirkung) |
{ param_Driftkomp , 1 }, // unsigned char Driftkomp; |
{ param_DynamicStability , 1 }, // unsigned char DynamicStability; |
{ param_UserParam5 , 1 }, // unsigned char UserParam5; // Wert : 0-250 |
{ param_UserParam6 , 1 }, // unsigned char UserParam6; // Wert : 0-250 |
{ param_UserParam7 , 1 }, // unsigned char UserParam7; // Wert : 0-250 |
{ param_UserParam8 , 1 }, // unsigned char UserParam8; // Wert : 0-250 |
{ param_J16Bitmask , 1 }, // unsigned char J16Bitmask; // for the J16 Output |
{ param_J16Timing , 1 }, // unsigned char J16Timing; // for the J16 Output |
{ param_J17Bitmask , 1 }, // unsigned char J17Bitmask; // for the J17 Output |
{ param_J17Timing , 1 }, // unsigned char J17Timing; // for the J17 Output |
{ param_WARN_J16_Bitmask , 1 }, // unsigned char WARN_J16_Bitmask; // for the J16 Output |
{ param_WARN_J17_Bitmask , 1 }, // unsigned char WARN_J17_Bitmask; // for the J17 Output |
{ param_NaviOut1Parameter , 1 }, // unsigned char NaviOut1Parameter; // for the J16 Output |
{ param_NaviGpsModeChannel , 1 }, // unsigned char NaviGpsModeChannel; // Parameters for the Naviboard |
{ param_NaviGpsGain , 1 }, // unsigned char NaviGpsGain; |
{ param_NaviGpsP , 1 }, // unsigned char NaviGpsP; |
{ param_NaviGpsI , 1 }, // unsigned char NaviGpsI; |
{ param_NaviGpsD , 1 }, // unsigned char NaviGpsD; |
{ param_NaviGpsPLimit , 1 }, // unsigned char NaviGpsPLimit; |
{ param_NaviGpsILimit , 1 }, // unsigned char NaviGpsILimit; |
{ param_NaviGpsDLimit , 1 }, // unsigned char NaviGpsDLimit; |
{ param_NaviGpsA , 1 }, // unsigned char NaviGpsA; |
{ param_NaviGpsMinSat , 1 }, // unsigned char NaviGpsMinSat; |
{ param_NaviStickThreshold , 1 }, // unsigned char NaviStickThreshold; |
{ param_NaviWindCorrection , 1 }, // unsigned char NaviWindCorrection; |
{ param_NaviAccCompensation , 1 }, // unsigned char NaviAccCompensation; // New since 0.86 -> was: SpeedCompensation |
{ param_NaviOperatingRadius , 1 }, // unsigned char NaviOperatingRadius; |
{ param_NaviAngleLimitation , 1 }, // unsigned char NaviAngleLimitation; |
{ param_NaviPH_LoginTime , 1 }, // unsigned char NaviPH_LoginTime; |
{ param_ExternalControl , 1 }, // unsigned char ExternalControl; // for serial Control |
{ param_OrientationAngle , 1 }, // unsigned char OrientationAngle; // Where is the front-direction? |
{ param_CareFreeChannel , 1 }, // unsigned char CareFreeChannel; // switch for CareFree |
{ param_MotorSafetySwitch , 1 }, // unsigned char MotorSafetySwitch; |
{ param_MotorSmooth , 1 }, // unsigned char MotorSmooth; |
{ param_ComingHomeAltitude , 1 }, // unsigned char ComingHomeAltitude; |
{ param_FailSafeTime , 1 }, // unsigned char FailSafeTime; |
{ param_MaxAltitude , 1 }, // unsigned char MaxAltitude; |
{ param_FailsafeChannel , 1 }, // unsigned char FailsafeChannel; // if the value of this channel is > 100, the MK reports "RC-Lost" |
{ param_ServoFilterNick , 1 }, // unsigned char ServoFilterNick; |
{ param_ServoFilterRoll , 1 }, // unsigned char ServoFilterRoll; |
{ param_StartLandChannel , 1 }, // unsigned char StartLandChannel; |
{ param_LandingSpeed , 1 }, // unsigned char LandingSpeed; |
{ param_CompassOffset , 1 }, // unsigned char CompassOffset; |
{ param_AutoLandingVoltage , 1 }, // unsigned char AutoLandingVoltage; // in 0,1V 0 -> disabled |
{ param_ComingHomeVoltage , 1 }, // unsigned char ComingHomeVoltage; // in 0,1V 0 -> disabled |
{ param_BitConfig , 1 }, // unsigned char BitConfig; // (war Loop-Cfg) Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
{ param_ServoCompInvert , 1 }, // unsigned char ServoCompInvert; // 0x01 = Nick, 0x02 = Roll, 0x04 = relative moving // WICHTIG!!! am Ende lassen |
{ param_ExtraConfig , 1 }, // unsigned char ExtraConfig; // bitcodiert |
{ param_GlobalConfig3 , 1 }, // unsigned char GlobalConfig3; // bitcodiert |
{ param_Name , 12 }, // char Name[12]; |
{ param_crc , 1 }, // unsigned char crc; // must be the last byte! |
{ param_EOF , 0 } // END OF PARAM-LIST - MUST BE THE LAST!! |
}; // end: paramset_098[] |
//----------------------------------------------- |
// FC-Parameter Revision: 99 |
// keine Inormationen zu Rev. 99 vorhanden. |
// |
// Kommentar dazu von Holger Buss: |
// "Die Revision 0.99 kannst Du ignorieren." |
//----------------------------------------------- |
//----------------------------------------------- |
// FC-Parameter Revision: 100 |
// |
// ab FC-Version: ab ??? bis 2.05e |
// gefunden in: 2.05e |
// |
// STRUKTUR-DIFF zu 098: |
// - del: NaviOut1Parameter |
// - add: AutoPhotoDistance (ersetzt NaviOut1Parameter) |
// - add: AutoPhotoAtitudes |
// - add: SingleWpSpeed |
// |
// DEFINE-DIFF zu 098: |
// - keine Aenderung |
// |
// ANMERKUNG OG 06.04.2014: |
// Die Tabelle kann ggf. demnaechst geloescht werden |
// da sie nur fuer eine kurze Zeit in Betaversionen |
// vorhanden war! |
//----------------------------------------------- |
paramRevItem_t const paramset_100[] PROGMEM = |
{ |
{ param_Revision , 1 }, // unsigned char Revision; |
{ param_Kanalbelegung , 12 }, // unsigned char char Kanalbelegung[12]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3 |
{ param_GlobalConfig , 1 }, // unsigned char char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv |
{ param_Hoehe_MinGas , 1 }, // unsigned char char Hoehe_MinGas; // Wert : 0-100 |
{ param_Luftdruck_D , 1 }, // unsigned char char Luftdruck_D; // Wert : 0-250 |
{ param_HoeheChannel , 1 }, // unsigned char char HoeheChannel; // Wert : 0-32 |
{ param_Hoehe_P , 1 }, // unsigned char char Hoehe_P; // Wert : 0-32 |
{ param_Hoehe_Verstaerkung , 1 }, // unsigned char char Hoehe_Verstaerkung; // Wert : 0-50 |
{ param_Hoehe_ACC_Wirkung , 1 }, // unsigned char char Hoehe_ACC_Wirkung; // Wert : 0-250 |
{ param_Hoehe_HoverBand , 1 }, // unsigned char char Hoehe_HoverBand; // Wert : 0-250 |
{ param_Hoehe_GPS_Z , 1 }, // unsigned char char Hoehe_GPS_Z; // Wert : 0-250 |
{ param_Hoehe_StickNeutralPoint , 1 }, // unsigned char char Hoehe_StickNeutralPoint; // Wert : 0-250 |
{ param_Stick_P , 1 }, // unsigned char char Stick_P; // Wert : 1-6 |
{ param_Stick_D , 1 }, // unsigned char char Stick_D; // Wert : 0-64 |
{ param_StickGier_P , 1 }, // unsigned char char StickGier_P; // Wert : 1-20 |
{ param_Gas_Min , 1 }, // unsigned char char Gas_Min; // Wert : 0-32 |
{ param_Gas_Max , 1 }, // unsigned char char Gas_Max; // Wert : 33-250 |
{ param_GyroAccFaktor , 1 }, // unsigned char char GyroAccFaktor; // Wert : 1-64 |
{ param_KompassWirkung , 1 }, // unsigned char char KompassWirkung; // Wert : 0-32 |
{ param_Gyro_P , 1 }, // unsigned char char Gyro_P; // Wert : 10-250 |
{ param_Gyro_I , 1 }, // unsigned char char Gyro_I; // Wert : 0-250 |
{ param_Gyro_D , 1 }, // unsigned char char Gyro_D; // Wert : 0-250 |
{ param_Gyro_Gier_P , 1 }, // unsigned char char Gyro_Gier_P; // Wert : 10-250 |
{ param_Gyro_Gier_I , 1 }, // unsigned char char Gyro_Gier_I; // Wert : 0-250 |
{ param_Gyro_Stability , 1 }, // unsigned char char Gyro_Stability; // Wert : 0-16 |
{ param_UnterspannungsWarnung , 1 }, // unsigned char char UnterspannungsWarnung; // Wert : 0-250 |
{ param_NotGas , 1 }, // unsigned char char NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust |
{ param_NotGasZeit , 1 }, // unsigned char char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen |
{ param_Receiver , 1 }, // unsigned char char Receiver; // 0= Summensignal, 1= Spektrum, 2 =Jeti, 3=ACT DSL, 4=ACT S3D |
{ param_I_Faktor , 1 }, // unsigned char char I_Faktor; // Wert : 0-250 |
{ param_UserParam1 , 1 }, // unsigned char char UserParam1; // Wert : 0-250 |
{ param_UserParam2 , 1 }, // unsigned char char UserParam2; // Wert : 0-250 |
{ param_UserParam3 , 1 }, // unsigned char char UserParam3; // Wert : 0-250 |
{ param_UserParam4 , 1 }, // unsigned char char UserParam4; // Wert : 0-250 |
{ param_ServoNickControl , 1 }, // unsigned char char ServoNickControl; // Wert : 0-250 // Stellung des Servos |
{ param_ServoNickComp , 1 }, // unsigned char char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
{ param_ServoNickMin , 1 }, // unsigned char char ServoNickMin; // Wert : 0-250 // Anschlag |
{ param_ServoNickMax , 1 }, // unsigned char char ServoNickMax; // Wert : 0-250 // Anschlag |
{ param_ServoRollControl , 1 }, // unsigned char char ServoRollControl; // Wert : 0-250 // Stellung des Servos |
{ param_ServoRollComp , 1 }, // unsigned char char ServoRollComp; // Wert : 0-250 |
{ param_ServoRollMin , 1 }, // unsigned char char ServoRollMin; // Wert : 0-250 |
{ param_ServoRollMax , 1 }, // unsigned char char ServoRollMax; // Wert : 0-250 |
{ param_ServoNickRefresh , 1 }, // unsigned char char ServoNickRefresh; // Speed of the Servo |
{ param_ServoManualControlSpeed , 1 }, // unsigned char char ServoManualControlSpeed; // |
{ param_CamOrientation , 1 }, // unsigned char char CamOrientation; // |
{ param_Servo3 , 1 }, // unsigned char char Servo3; // Value or mapping of the Servo Output |
{ param_Servo4 , 1 }, // unsigned char char Servo4; // Value or mapping of the Servo Output |
{ param_Servo5 , 1 }, // unsigned char char Servo5; // Value or mapping of the Servo Output |
{ param_LoopGasLimit , 1 }, // unsigned char char LoopGasLimit; // Wert: 0-250 max. Gas während Looping |
{ param_LoopThreshold , 1 }, // unsigned char char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag |
{ param_LoopHysterese , 1 }, // unsigned char char LoopHysterese; // Wert: 0-250 Hysterese für Stickausschlag |
{ param_AchsKopplung1 , 1 }, // unsigned char char AchsKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick koppelt (NickRollMitkopplung) |
{ param_AchsKopplung2 , 1 }, // unsigned char char AchsKopplung2; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
{ param_CouplingYawCorrection , 1 }, // unsigned char char CouplingYawCorrection; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
{ param_WinkelUmschlagNick , 1 }, // unsigned char char WinkelUmschlagNick; // Wert: 0-250 180°-Punkt |
{ param_WinkelUmschlagRoll , 1 }, // unsigned char char WinkelUmschlagRoll; // Wert: 0-250 180°-Punkt |
{ param_GyroAccAbgleich , 1 }, // unsigned char char GyroAccAbgleich; // 1/k (Koppel_ACC_Wirkung) |
{ param_Driftkomp , 1 }, // unsigned char char Driftkomp; |
{ param_DynamicStability , 1 }, // unsigned char char DynamicStability; |
{ param_UserParam5 , 1 }, // unsigned char char UserParam5; // Wert : 0-250 |
{ param_UserParam6 , 1 }, // unsigned char char UserParam6; // Wert : 0-250 |
{ param_UserParam7 , 1 }, // unsigned char char UserParam7; // Wert : 0-250 |
{ param_UserParam8 , 1 }, // unsigned char char UserParam8; // Wert : 0-250 |
{ param_J16Bitmask , 1 }, // unsigned char char J16Bitmask; // for the J16 Output |
{ param_J16Timing , 1 }, // unsigned char char J16Timing; // for the J16 Output |
{ param_J17Bitmask , 1 }, // unsigned char char J17Bitmask; // for the J17 Output |
{ param_J17Timing , 1 }, // unsigned char char J17Timing; // for the J17 Output |
{ param_WARN_J16_Bitmask , 1 }, // unsigned char char WARN_J16_Bitmask; // for the J16 Output |
{ param_WARN_J17_Bitmask , 1 }, // unsigned char char WARN_J17_Bitmask; // for the J17 Output |
{ param_AutoPhotoDistance , 1 }, // unsigned char char AutoPhotoDistance; // Auto Photo // ab Rev. 100 (ehemals NaviOut1Parameter) |
{ param_NaviGpsModeChannel , 1 }, // unsigned char char NaviGpsModeChannel; // Parameters for the Naviboard |
{ param_NaviGpsGain , 1 }, // unsigned char char NaviGpsGain; |
{ param_NaviGpsP , 1 }, // unsigned char char NaviGpsP; |
{ param_NaviGpsI , 1 }, // unsigned char char NaviGpsI; |
{ param_NaviGpsD , 1 }, // unsigned char char NaviGpsD; |
{ param_NaviGpsPLimit , 1 }, // unsigned char char NaviGpsPLimit; |
{ param_NaviGpsILimit , 1 }, // unsigned char char NaviGpsILimit; |
{ param_NaviGpsDLimit , 1 }, // unsigned char char NaviGpsDLimit; |
{ param_NaviGpsA , 1 }, // unsigned char char NaviGpsA; |
{ param_NaviGpsMinSat , 1 }, // unsigned char char NaviGpsMinSat; |
{ param_NaviStickThreshold , 1 }, // unsigned char char NaviStickThreshold; |
{ param_NaviWindCorrection , 1 }, // unsigned char char NaviWindCorrection; |
{ param_NaviAccCompensation , 1 }, // unsigned char char NaviAccCompensation; // New since 0.86 -> was: SpeedCompensation |
{ param_NaviOperatingRadius , 1 }, // unsigned char char NaviOperatingRadius; |
{ param_NaviAngleLimitation , 1 }, // unsigned char char NaviAngleLimitation; |
{ param_NaviPH_LoginTime , 1 }, // unsigned char char NaviPH_LoginTime; |
{ param_ExternalControl , 1 }, // unsigned char char ExternalControl; // for serial Control |
{ param_OrientationAngle , 1 }, // unsigned char char OrientationAngle; // Where is the front-direction? |
{ param_CareFreeChannel , 1 }, // unsigned char char CareFreeChannel; // switch for CareFree |
{ param_MotorSafetySwitch , 1 }, // unsigned char char MotorSafetySwitch; |
{ param_MotorSmooth , 1 }, // unsigned char char MotorSmooth; |
{ param_ComingHomeAltitude , 1 }, // unsigned char char ComingHomeAltitude; |
{ param_FailSafeTime , 1 }, // unsigned char char FailSafeTime; |
{ param_MaxAltitude , 1 }, // unsigned char char MaxAltitude; |
{ param_FailsafeChannel , 1 }, // unsigned char char FailsafeChannel; // if the value of this channel is > 100, the MK reports "RC-Lost" |
{ param_ServoFilterNick , 1 }, // unsigned char char ServoFilterNick; |
{ param_ServoFilterRoll , 1 }, // unsigned char char ServoFilterRoll; |
{ param_StartLandChannel , 1 }, // unsigned char char StartLandChannel; |
{ param_LandingSpeed , 1 }, // unsigned char char LandingSpeed; |
{ param_CompassOffset , 1 }, // unsigned char char CompassOffset; |
{ param_AutoLandingVoltage , 1 }, // unsigned char char AutoLandingVoltage; // in 0,1V 0 -> disabled |
{ param_ComingHomeVoltage , 1 }, // unsigned char char ComingHomeVoltage; // in 0,1V 0 -> disabled |
{ param_AutoPhotoAtitudes , 1 }, // unsigned char char AutoPhotoAtitudes; // ab Rev. 100 |
{ param_SingleWpSpeed , 1 }, // unsigned char char SingleWpSpeed; // ab Rev. 100 |
{ param_BitConfig , 1 }, // unsigned char char BitConfig; // (war Loop-Cfg) Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
{ param_ServoCompInvert , 1 }, // unsigned char char ServoCompInvert; // 0x01 = Nick, 0x02 = Roll, 0x04 = relative moving // WICHTIG!!! am Ende lassen |
{ param_ExtraConfig , 1 }, // unsigned char char ExtraConfig; // bitcodiert |
{ param_GlobalConfig3 , 1 }, // unsigned char char GlobalConfig3; // bitcodiert |
{ param_Name , 12 }, // char Name[12]; |
{ param_crc , 1 }, // unsigned char char crc; // must be the last byte! |
{ param_EOF , 0 } // END OF PARAM-LIST - MUST BE THE LAST!! |
}; // end: paramset_100[] |
//----------------------------------------------- |
// FC-Parameter Revision: 101 |
// |
// ab FC-Version: ab 2.05f bis 2.05f |
// gefunden in: 2.05f |
// |
// STRUKTUR-DIFF zu 100: |
// - add: Servo3OnValue |
// - add: Servo3OffValue |
// - add: Servo4OnValue |
// - add: Servo4OffValue |
// |
// DEFINE-DIFF zu 100: |
// - keine Aenderung |
// |
// ANMERKUNG OG 06.04.2014: |
// Die Tabelle kann ggf. demnaechst geloescht werden |
// da sie nur fuer eine einzige Betaversion |
// vorhanden war! |
//----------------------------------------------- |
paramRevItem_t const paramset_101[] PROGMEM = |
{ |
{ param_DUMMY , 123 }, // n-Bytes Fueller... keine Unterstuetzung fuer paramEdit |
{ param_Name , 12 }, // char Name[12]; |
{ param_DUMMY , 1 }, // n-Bytes Fueller... keine Unterstuetzung fuer paramEdit |
{ param_EOF , 0 } // END OF PARAM-LIST - MUST BE THE LAST!! |
}; // end: paramset_101[] |
//----------------------------------------------- |
// FC-Parameter Revision: 102 |
// |
// ab FC-Version: ab 2.05g bis ??? (min. 2.06b) |
// gefunden in: 2.05g, 2.06a |
// |
// STRUKTUR-DIFF zu 101: |
// - add: NaviMaxFlyingRange (ersetzt NaviOperatingRadius) |
// - add: NaviDescendRange |
// - del: NaviOperatingRadius |
// |
// DEFINE-DIFF zu 101: |
// - del: CFG3_DPH_MAX_RADIUS |
//----------------------------------------------- |
paramRevItem_t const paramset_102[] PROGMEM = |
{ |
{ param_Revision , 1 }, // unsigned char Revision; |
{ param_Kanalbelegung , 12 }, // unsigned char char Kanalbelegung[12]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3 |
{ param_GlobalConfig , 1 }, // unsigned char char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv |
{ param_Hoehe_MinGas , 1 }, // unsigned char char Hoehe_MinGas; // Wert : 0-100 |
{ param_Luftdruck_D , 1 }, // unsigned char char Luftdruck_D; // Wert : 0-250 |
{ param_HoeheChannel , 1 }, // unsigned char char HoeheChannel; // Wert : 0-32 |
{ param_Hoehe_P , 1 }, // unsigned char char Hoehe_P; // Wert : 0-32 |
{ param_Hoehe_Verstaerkung , 1 }, // unsigned char char Hoehe_Verstaerkung; // Wert : 0-50 |
{ param_Hoehe_ACC_Wirkung , 1 }, // unsigned char char Hoehe_ACC_Wirkung; // Wert : 0-250 |
{ param_Hoehe_HoverBand , 1 }, // unsigned char char Hoehe_HoverBand; // Wert : 0-250 |
{ param_Hoehe_GPS_Z , 1 }, // unsigned char char Hoehe_GPS_Z; // Wert : 0-250 |
{ param_Hoehe_StickNeutralPoint , 1 }, // unsigned char char Hoehe_StickNeutralPoint; // Wert : 0-250 |
{ param_Stick_P , 1 }, // unsigned char char Stick_P; // Wert : 1-6 |
{ param_Stick_D , 1 }, // unsigned char char Stick_D; // Wert : 0-64 |
{ param_StickGier_P , 1 }, // unsigned char char StickGier_P; // Wert : 1-20 |
{ param_Gas_Min , 1 }, // unsigned char char Gas_Min; // Wert : 0-32 |
{ param_Gas_Max , 1 }, // unsigned char char Gas_Max; // Wert : 33-250 |
{ param_GyroAccFaktor , 1 }, // unsigned char char GyroAccFaktor; // Wert : 1-64 |
{ param_KompassWirkung , 1 }, // unsigned char char KompassWirkung; // Wert : 0-32 |
{ param_Gyro_P , 1 }, // unsigned char char Gyro_P; // Wert : 10-250 |
{ param_Gyro_I , 1 }, // unsigned char char Gyro_I; // Wert : 0-250 |
{ param_Gyro_D , 1 }, // unsigned char char Gyro_D; // Wert : 0-250 |
{ param_Gyro_Gier_P , 1 }, // unsigned char char Gyro_Gier_P; // Wert : 10-250 |
{ param_Gyro_Gier_I , 1 }, // unsigned char char Gyro_Gier_I; // Wert : 0-250 |
{ param_Gyro_Stability , 1 }, // unsigned char char Gyro_Stability; // Wert : 0-16 |
{ param_UnterspannungsWarnung , 1 }, // unsigned char char UnterspannungsWarnung; // Wert : 0-250 |
{ param_NotGas , 1 }, // unsigned char char NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust |
{ param_NotGasZeit , 1 }, // unsigned char char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen |
{ param_Receiver , 1 }, // unsigned char char Receiver; // 0= Summensignal, 1= Spektrum, 2 =Jeti, 3=ACT DSL, 4=ACT S3D |
{ param_I_Faktor , 1 }, // unsigned char char I_Faktor; // Wert : 0-250 |
{ param_UserParam1 , 1 }, // unsigned char char UserParam1; // Wert : 0-250 |
{ param_UserParam2 , 1 }, // unsigned char char UserParam2; // Wert : 0-250 |
{ param_UserParam3 , 1 }, // unsigned char char UserParam3; // Wert : 0-250 |
{ param_UserParam4 , 1 }, // unsigned char char UserParam4; // Wert : 0-250 |
{ param_ServoNickControl , 1 }, // unsigned char char ServoNickControl; // Wert : 0-250 // Stellung des Servos |
{ param_ServoNickComp , 1 }, // unsigned char char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
{ param_ServoNickMin , 1 }, // unsigned char char ServoNickMin; // Wert : 0-250 // Anschlag |
{ param_ServoNickMax , 1 }, // unsigned char char ServoNickMax; // Wert : 0-250 // Anschlag |
{ param_ServoRollControl , 1 }, // unsigned char char ServoRollControl; // Wert : 0-250 // Stellung des Servos |
{ param_ServoRollComp , 1 }, // unsigned char char ServoRollComp; // Wert : 0-250 |
{ param_ServoRollMin , 1 }, // unsigned char char ServoRollMin; // Wert : 0-250 |
{ param_ServoRollMax , 1 }, // unsigned char char ServoRollMax; // Wert : 0-250 |
{ param_ServoNickRefresh , 1 }, // unsigned char char ServoNickRefresh; // Speed of the Servo |
{ param_ServoManualControlSpeed , 1 }, // unsigned char char ServoManualControlSpeed; // |
{ param_CamOrientation , 1 }, // unsigned char char CamOrientation; // |
{ param_Servo3 , 1 }, // unsigned char char Servo3; // Value or mapping of the Servo Output |
{ param_Servo4 , 1 }, // unsigned char char Servo4; // Value or mapping of the Servo Output |
{ param_Servo5 , 1 }, // unsigned char char Servo5; // Value or mapping of the Servo Output |
{ param_LoopGasLimit , 1 }, // unsigned char char LoopGasLimit; // Wert: 0-250 max. Gas während Looping |
{ param_LoopThreshold , 1 }, // unsigned char char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag |
{ param_LoopHysterese , 1 }, // unsigned char char LoopHysterese; // Wert: 0-250 Hysterese für Stickausschlag |
{ param_AchsKopplung1 , 1 }, // unsigned char char AchsKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick koppelt (NickRollMitkopplung) |
{ param_AchsKopplung2 , 1 }, // unsigned char char AchsKopplung2; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
{ param_CouplingYawCorrection , 1 }, // unsigned char char CouplingYawCorrection; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
{ param_WinkelUmschlagNick , 1 }, // unsigned char char WinkelUmschlagNick; // Wert: 0-250 180°-Punkt |
{ param_WinkelUmschlagRoll , 1 }, // unsigned char char WinkelUmschlagRoll; // Wert: 0-250 180°-Punkt |
{ param_GyroAccAbgleich , 1 }, // unsigned char char GyroAccAbgleich; // 1/k (Koppel_ACC_Wirkung) |
{ param_Driftkomp , 1 }, // unsigned char char Driftkomp; |
{ param_DynamicStability , 1 }, // unsigned char char DynamicStability; |
{ param_UserParam5 , 1 }, // unsigned char char UserParam5; // Wert : 0-250 |
{ param_UserParam6 , 1 }, // unsigned char char UserParam6; // Wert : 0-250 |
{ param_UserParam7 , 1 }, // unsigned char char UserParam7; // Wert : 0-250 |
{ param_UserParam8 , 1 }, // unsigned char char UserParam8; // Wert : 0-250 |
{ param_J16Bitmask , 1 }, // unsigned char char J16Bitmask; // for the J16 Output |
{ param_J16Timing , 1 }, // unsigned char char J16Timing; // for the J16 Output |
{ param_J17Bitmask , 1 }, // unsigned char char J17Bitmask; // for the J17 Output |
{ param_J17Timing , 1 }, // unsigned char char J17Timing; // for the J17 Output |
{ param_WARN_J16_Bitmask , 1 }, // unsigned char char WARN_J16_Bitmask; // for the J16 Output |
{ param_WARN_J17_Bitmask , 1 }, // unsigned char char WARN_J17_Bitmask; // for the J17 Output |
{ param_AutoPhotoDistance , 1 }, // unsigned char char AutoPhotoDistance; // Auto Photo // ab Rev. 100 (ehemals NaviOut1Parameter) |
{ param_NaviGpsModeChannel , 1 }, // unsigned char char NaviGpsModeChannel; // Parameters for the Naviboard |
{ param_NaviGpsGain , 1 }, // unsigned char char NaviGpsGain; |
{ param_NaviGpsP , 1 }, // unsigned char char NaviGpsP; |
{ param_NaviGpsI , 1 }, // unsigned char char NaviGpsI; |
{ param_NaviGpsD , 1 }, // unsigned char char NaviGpsD; |
{ param_NaviGpsPLimit , 1 }, // unsigned char char NaviGpsPLimit; |
{ param_NaviGpsILimit , 1 }, // unsigned char char NaviGpsILimit; |
{ param_NaviGpsDLimit , 1 }, // unsigned char char NaviGpsDLimit; |
{ param_NaviGpsA , 1 }, // unsigned char char NaviGpsA; |
{ param_NaviGpsMinSat , 1 }, // unsigned char char NaviGpsMinSat; |
{ param_NaviStickThreshold , 1 }, // unsigned char char NaviStickThreshold; |
{ param_NaviWindCorrection , 1 }, // unsigned char char NaviWindCorrection; |
{ param_NaviAccCompensation , 1 }, // unsigned char char NaviAccCompensation; // New since 0.86 -> was: SpeedCompensation |
{ param_NaviMaxFlyingRange , 1 }, // unsigned char char NaviMaxFlyingRange; // in 10m |
{ param_NaviAngleLimitation , 1 }, // unsigned char char NaviAngleLimitation; |
{ param_NaviPH_LoginTime , 1 }, // unsigned char char NaviPH_LoginTime; |
{ param_NaviDescendRange , 1 }, // unsigned char char NaviDescendRange; |
{ param_ExternalControl , 1 }, // unsigned char char ExternalControl; // for serial Control |
{ param_OrientationAngle , 1 }, // unsigned char char OrientationAngle; // Where is the front-direction? |
{ param_CareFreeChannel , 1 }, // unsigned char char CareFreeChannel; // switch for CareFree |
{ param_MotorSafetySwitch , 1 }, // unsigned char char MotorSafetySwitch; |
{ param_MotorSmooth , 1 }, // unsigned char char MotorSmooth; |
{ param_ComingHomeAltitude , 1 }, // unsigned char char ComingHomeAltitude; |
{ param_FailSafeTime , 1 }, // unsigned char char FailSafeTime; |
{ param_MaxAltitude , 1 }, // unsigned char char MaxAltitude; |
{ param_FailsafeChannel , 1 }, // unsigned char char FailsafeChannel; // if the value of this channel is > 100, the MK reports "RC-Lost" |
{ param_ServoFilterNick , 1 }, // unsigned char char ServoFilterNick; |
{ param_ServoFilterRoll , 1 }, // unsigned char char ServoFilterRoll; |
{ param_Servo3OnValue , 1 }, // unsigned char char Servo3OnValue; // ab Rev. 101 (FC 2.05f) |
{ param_Servo3OffValue , 1 }, // unsigned char char Servo3OffValue; // ab Rev. 101 (FC 2.05f) |
{ param_Servo4OnValue , 1 }, // unsigned char char Servo4OnValue; // ab Rev. 101 (FC 2.05f) |
{ param_Servo4OffValue , 1 }, // unsigned char char Servo4OffValue; // ab Rev. 101 (FC 2.05f) |
{ param_StartLandChannel , 1 }, // unsigned char char StartLandChannel; |
{ param_LandingSpeed , 1 }, // unsigned char char LandingSpeed; |
{ param_CompassOffset , 1 }, // unsigned char char CompassOffset; |
{ param_AutoLandingVoltage , 1 }, // unsigned char char AutoLandingVoltage; // in 0,1V 0 -> disabled |
{ param_ComingHomeVoltage , 1 }, // unsigned char char ComingHomeVoltage; // in 0,1V 0 -> disabled |
{ param_AutoPhotoAtitudes , 1 }, // unsigned char char AutoPhotoAtitudes; // ab Rev. 100 |
{ param_SingleWpSpeed , 1 }, // unsigned char char SingleWpSpeed; // ab Rev. 100 |
{ param_BitConfig , 1 }, // unsigned char char BitConfig; // (war Loop-Cfg) Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
{ param_ServoCompInvert , 1 }, // unsigned char char ServoCompInvert; // 0x01 = Nick, 0x02 = Roll, 0x04 = relative moving // WICHTIG!!! am Ende lassen |
{ param_ExtraConfig , 1 }, // unsigned char char ExtraConfig; // bitcodiert |
{ param_GlobalConfig3 , 1 }, // unsigned char char GlobalConfig3; // bitcodiert |
{ param_Name , 12 }, // char Name[12]; |
{ param_crc , 1 }, // unsigned char char crc; // must be the last byte! |
{ param_EOF , 0 } // END OF PARAM-LIST - MUST BE THE LAST!! |
}; // end: paramset_102[] |
//----------------------------------------------- |
// FC-Parameter Revision: 103 |
// |
// ab FC-Version: ab 2.07f bis ??? |
// gefunden in: 2.07f |
// |
// STRUKTUR-DIFF zu 102: |
// keine |
// |
// DEFINE-DIFF zu 102: |
// - chg: Hoehe_GPS_Z zu Hoehe_TiltCompensation |
//----------------------------------------------- |
paramRevItem_t const paramset_103[] PROGMEM = |
{ |
{ param_Revision , 1 }, // unsigned char Revision; |
{ param_Kanalbelegung , 12 }, // unsigned char char Kanalbelegung[12]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3 |
{ param_GlobalConfig , 1 }, // unsigned char char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv |
{ param_Hoehe_MinGas , 1 }, // unsigned char char Hoehe_MinGas; // Wert : 0-100 |
{ param_Luftdruck_D , 1 }, // unsigned char char Luftdruck_D; // Wert : 0-250 |
{ param_HoeheChannel , 1 }, // unsigned char char HoeheChannel; // Wert : 0-32 |
{ param_Hoehe_P , 1 }, // unsigned char char Hoehe_P; // Wert : 0-32 |
{ param_Hoehe_Verstaerkung , 1 }, // unsigned char char Hoehe_Verstaerkung; // Wert : 0-50 |
{ param_Hoehe_ACC_Wirkung , 1 }, // unsigned char char Hoehe_ACC_Wirkung; // Wert : 0-250 |
{ param_Hoehe_HoverBand , 1 }, // unsigned char char Hoehe_HoverBand; // Wert : 0-250 |
{ param_Hoehe_TiltCompensation , 1 }, // unsigned char char Hoehe_TiltCompensation; // Wert : 0-250 |
{ param_Hoehe_StickNeutralPoint , 1 }, // unsigned char char Hoehe_StickNeutralPoint; // Wert : 0-250 |
{ param_Stick_P , 1 }, // unsigned char char Stick_P; // Wert : 1-6 |
{ param_Stick_D , 1 }, // unsigned char char Stick_D; // Wert : 0-64 |
{ param_StickGier_P , 1 }, // unsigned char char StickGier_P; // Wert : 1-20 |
{ param_Gas_Min , 1 }, // unsigned char char Gas_Min; // Wert : 0-32 |
{ param_Gas_Max , 1 }, // unsigned char char Gas_Max; // Wert : 33-250 |
{ param_GyroAccFaktor , 1 }, // unsigned char char GyroAccFaktor; // Wert : 1-64 |
{ param_KompassWirkung , 1 }, // unsigned char char KompassWirkung; // Wert : 0-32 |
{ param_Gyro_P , 1 }, // unsigned char char Gyro_P; // Wert : 10-250 |
{ param_Gyro_I , 1 }, // unsigned char char Gyro_I; // Wert : 0-250 |
{ param_Gyro_D , 1 }, // unsigned char char Gyro_D; // Wert : 0-250 |
{ param_Gyro_Gier_P , 1 }, // unsigned char char Gyro_Gier_P; // Wert : 10-250 |
{ param_Gyro_Gier_I , 1 }, // unsigned char char Gyro_Gier_I; // Wert : 0-250 |
{ param_Gyro_Stability , 1 }, // unsigned char char Gyro_Stability; // Wert : 0-16 |
{ param_UnterspannungsWarnung , 1 }, // unsigned char char UnterspannungsWarnung; // Wert : 0-250 |
{ param_NotGas , 1 }, // unsigned char char NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust |
{ param_NotGasZeit , 1 }, // unsigned char char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen |
{ param_Receiver , 1 }, // unsigned char char Receiver; // 0= Summensignal, 1= Spektrum, 2 =Jeti, 3=ACT DSL, 4=ACT S3D |
{ param_I_Faktor , 1 }, // unsigned char char I_Faktor; // Wert : 0-250 |
{ param_UserParam1 , 1 }, // unsigned char char UserParam1; // Wert : 0-250 |
{ param_UserParam2 , 1 }, // unsigned char char UserParam2; // Wert : 0-250 |
{ param_UserParam3 , 1 }, // unsigned char char UserParam3; // Wert : 0-250 |
{ param_UserParam4 , 1 }, // unsigned char char UserParam4; // Wert : 0-250 |
{ param_ServoNickControl , 1 }, // unsigned char char ServoNickControl; // Wert : 0-250 // Stellung des Servos |
{ param_ServoNickComp , 1 }, // unsigned char char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
{ param_ServoNickMin , 1 }, // unsigned char char ServoNickMin; // Wert : 0-250 // Anschlag |
{ param_ServoNickMax , 1 }, // unsigned char char ServoNickMax; // Wert : 0-250 // Anschlag |
{ param_ServoRollControl , 1 }, // unsigned char char ServoRollControl; // Wert : 0-250 // Stellung des Servos |
{ param_ServoRollComp , 1 }, // unsigned char char ServoRollComp; // Wert : 0-250 |
{ param_ServoRollMin , 1 }, // unsigned char char ServoRollMin; // Wert : 0-250 |
{ param_ServoRollMax , 1 }, // unsigned char char ServoRollMax; // Wert : 0-250 |
{ param_ServoNickRefresh , 1 }, // unsigned char char ServoNickRefresh; // Speed of the Servo |
{ param_ServoManualControlSpeed , 1 }, // unsigned char char ServoManualControlSpeed; // |
{ param_CamOrientation , 1 }, // unsigned char char CamOrientation; // |
{ param_Servo3 , 1 }, // unsigned char char Servo3; // Value or mapping of the Servo Output |
{ param_Servo4 , 1 }, // unsigned char char Servo4; // Value or mapping of the Servo Output |
{ param_Servo5 , 1 }, // unsigned char char Servo5; // Value or mapping of the Servo Output |
{ param_LoopGasLimit , 1 }, // unsigned char char LoopGasLimit; // Wert: 0-250 max. Gas während Looping |
{ param_LoopThreshold , 1 }, // unsigned char char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag |
{ param_LoopHysterese , 1 }, // unsigned char char LoopHysterese; // Wert: 0-250 Hysterese für Stickausschlag |
{ param_AchsKopplung1 , 1 }, // unsigned char char AchsKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick koppelt (NickRollMitkopplung) |
{ param_AchsKopplung2 , 1 }, // unsigned char char AchsKopplung2; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
{ param_CouplingYawCorrection , 1 }, // unsigned char char CouplingYawCorrection; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
{ param_WinkelUmschlagNick , 1 }, // unsigned char char WinkelUmschlagNick; // Wert: 0-250 180°-Punkt |
{ param_WinkelUmschlagRoll , 1 }, // unsigned char char WinkelUmschlagRoll; // Wert: 0-250 180°-Punkt |
{ param_GyroAccAbgleich , 1 }, // unsigned char char GyroAccAbgleich; // 1/k (Koppel_ACC_Wirkung) |
{ param_Driftkomp , 1 }, // unsigned char char Driftkomp; |
{ param_DynamicStability , 1 }, // unsigned char char DynamicStability; |
{ param_UserParam5 , 1 }, // unsigned char char UserParam5; // Wert : 0-250 |
{ param_UserParam6 , 1 }, // unsigned char char UserParam6; // Wert : 0-250 |
{ param_UserParam7 , 1 }, // unsigned char char UserParam7; // Wert : 0-250 |
{ param_UserParam8 , 1 }, // unsigned char char UserParam8; // Wert : 0-250 |
{ param_J16Bitmask , 1 }, // unsigned char char J16Bitmask; // for the J16 Output |
{ param_J16Timing , 1 }, // unsigned char char J16Timing; // for the J16 Output |
{ param_J17Bitmask , 1 }, // unsigned char char J17Bitmask; // for the J17 Output |
{ param_J17Timing , 1 }, // unsigned char char J17Timing; // for the J17 Output |
{ param_WARN_J16_Bitmask , 1 }, // unsigned char char WARN_J16_Bitmask; // for the J16 Output |
{ param_WARN_J17_Bitmask , 1 }, // unsigned char char WARN_J17_Bitmask; // for the J17 Output |
{ param_AutoPhotoDistance , 1 }, // unsigned char char AutoPhotoDistance; // Auto Photo // ab Rev. 100 (ehemals NaviOut1Parameter) |
{ param_NaviGpsModeChannel , 1 }, // unsigned char char NaviGpsModeChannel; // Parameters for the Naviboard |
{ param_NaviGpsGain , 1 }, // unsigned char char NaviGpsGain; |
{ param_NaviGpsP , 1 }, // unsigned char char NaviGpsP; |
{ param_NaviGpsI , 1 }, // unsigned char char NaviGpsI; |
{ param_NaviGpsD , 1 }, // unsigned char char NaviGpsD; |
{ param_NaviGpsPLimit , 1 }, // unsigned char char NaviGpsPLimit; |
{ param_NaviGpsILimit , 1 }, // unsigned char char NaviGpsILimit; |
{ param_NaviGpsDLimit , 1 }, // unsigned char char NaviGpsDLimit; |
{ param_NaviGpsA , 1 }, // unsigned char char NaviGpsA; |
{ param_NaviGpsMinSat , 1 }, // unsigned char char NaviGpsMinSat; |
{ param_NaviStickThreshold , 1 }, // unsigned char char NaviStickThreshold; |
{ param_NaviWindCorrection , 1 }, // unsigned char char NaviWindCorrection; |
{ param_NaviAccCompensation , 1 }, // unsigned char char NaviAccCompensation; // New since 0.86 -> was: SpeedCompensation |
{ param_NaviMaxFlyingRange , 1 }, // unsigned char char NaviMaxFlyingRange; // in 10m |
{ param_NaviAngleLimitation , 1 }, // unsigned char char NaviAngleLimitation; |
{ param_NaviPH_LoginTime , 1 }, // unsigned char char NaviPH_LoginTime; |
{ param_NaviDescendRange , 1 }, // unsigned char char NaviDescendRange; |
{ param_ExternalControl , 1 }, // unsigned char char ExternalControl; // for serial Control |
{ param_OrientationAngle , 1 }, // unsigned char char OrientationAngle; // Where is the front-direction? |
{ param_CareFreeChannel , 1 }, // unsigned char char CareFreeChannel; // switch for CareFree |
{ param_MotorSafetySwitch , 1 }, // unsigned char char MotorSafetySwitch; |
{ param_MotorSmooth , 1 }, // unsigned char char MotorSmooth; |
{ param_ComingHomeAltitude , 1 }, // unsigned char char ComingHomeAltitude; |
{ param_FailSafeTime , 1 }, // unsigned char char FailSafeTime; |
{ param_MaxAltitude , 1 }, // unsigned char char MaxAltitude; |
{ param_FailsafeChannel , 1 }, // unsigned char char FailsafeChannel; // if the value of this channel is > 100, the MK reports "RC-Lost" |
{ param_ServoFilterNick , 1 }, // unsigned char char ServoFilterNick; |
{ param_ServoFilterRoll , 1 }, // unsigned char char ServoFilterRoll; |
{ param_Servo3OnValue , 1 }, // unsigned char char Servo3OnValue; // ab Rev. 101 (FC 2.05f) |
{ param_Servo3OffValue , 1 }, // unsigned char char Servo3OffValue; // ab Rev. 101 (FC 2.05f) |
{ param_Servo4OnValue , 1 }, // unsigned char char Servo4OnValue; // ab Rev. 101 (FC 2.05f) |
{ param_Servo4OffValue , 1 }, // unsigned char char Servo4OffValue; // ab Rev. 101 (FC 2.05f) |
{ param_StartLandChannel , 1 }, // unsigned char char StartLandChannel; |
{ param_LandingSpeed , 1 }, // unsigned char char LandingSpeed; |
{ param_CompassOffset , 1 }, // unsigned char char CompassOffset; |
{ param_AutoLandingVoltage , 1 }, // unsigned char char AutoLandingVoltage; // in 0,1V 0 -> disabled |
{ param_ComingHomeVoltage , 1 }, // unsigned char char ComingHomeVoltage; // in 0,1V 0 -> disabled |
{ param_AutoPhotoAtitudes , 1 }, // unsigned char char AutoPhotoAtitudes; // ab Rev. 100 |
{ param_SingleWpSpeed , 1 }, // unsigned char char SingleWpSpeed; // ab Rev. 100 |
{ param_BitConfig , 1 }, // unsigned char char BitConfig; // (war Loop-Cfg) Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
{ param_ServoCompInvert , 1 }, // unsigned char char ServoCompInvert; // 0x01 = Nick, 0x02 = Roll, 0x04 = relative moving // WICHTIG!!! am Ende lassen |
{ param_ExtraConfig , 1 }, // unsigned char char ExtraConfig; // bitcodiert |
{ param_GlobalConfig3 , 1 }, // unsigned char char GlobalConfig3; // bitcodiert |
{ param_Name , 12 }, // char Name[12]; |
{ param_crc , 1 }, // unsigned char char crc; // must be the last byte! |
{ param_EOF , 0 } // END OF PARAM-LIST - MUST BE THE LAST!! |
}; // end: paramset_103[] |
//----------------------------------------------- |
// FC-Parameter Revision: 104 |
// |
// ab FC-Version: ab 2.09d bis ??? |
// gefunden in: 2.09d |
// |
// STRUKTUR-DIFF zu 103: |
// add: LandingPulse |
// |
//----------------------------------------------- |
paramRevItem_t const paramset_104[] PROGMEM = |
{ |
{ param_Revision , 1 }, // unsigned char Revision; |
{ param_Kanalbelegung , 12 }, // unsigned char char Kanalbelegung[12]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3 |
{ param_GlobalConfig , 1 }, // unsigned char char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv |
{ param_Hoehe_MinGas , 1 }, // unsigned char char Hoehe_MinGas; // Wert : 0-100 |
{ param_Luftdruck_D , 1 }, // unsigned char char Luftdruck_D; // Wert : 0-250 |
{ param_HoeheChannel , 1 }, // unsigned char char HoeheChannel; // Wert : 0-32 |
{ param_Hoehe_P , 1 }, // unsigned char char Hoehe_P; // Wert : 0-32 |
{ param_Hoehe_Verstaerkung , 1 }, // unsigned char char Hoehe_Verstaerkung; // Wert : 0-50 |
{ param_Hoehe_ACC_Wirkung , 1 }, // unsigned char char Hoehe_ACC_Wirkung; // Wert : 0-250 |
{ param_Hoehe_HoverBand , 1 }, // unsigned char char Hoehe_HoverBand; // Wert : 0-250 |
{ param_Hoehe_TiltCompensation , 1 }, // unsigned char char Hoehe_TiltCompensation; // Wert : 0-250 |
{ param_Hoehe_StickNeutralPoint , 1 }, // unsigned char char Hoehe_StickNeutralPoint; // Wert : 0-250 |
{ param_Stick_P , 1 }, // unsigned char char Stick_P; // Wert : 1-6 |
{ param_Stick_D , 1 }, // unsigned char char Stick_D; // Wert : 0-64 |
{ param_StickGier_P , 1 }, // unsigned char char StickGier_P; // Wert : 1-20 |
{ param_Gas_Min , 1 }, // unsigned char char Gas_Min; // Wert : 0-32 |
{ param_Gas_Max , 1 }, // unsigned char char Gas_Max; // Wert : 33-250 |
{ param_GyroAccFaktor , 1 }, // unsigned char char GyroAccFaktor; // Wert : 1-64 |
{ param_KompassWirkung , 1 }, // unsigned char char KompassWirkung; // Wert : 0-32 |
{ param_Gyro_P , 1 }, // unsigned char char Gyro_P; // Wert : 10-250 |
{ param_Gyro_I , 1 }, // unsigned char char Gyro_I; // Wert : 0-250 |
{ param_Gyro_D , 1 }, // unsigned char char Gyro_D; // Wert : 0-250 |
{ param_Gyro_Gier_P , 1 }, // unsigned char char Gyro_Gier_P; // Wert : 10-250 |
{ param_Gyro_Gier_I , 1 }, // unsigned char char Gyro_Gier_I; // Wert : 0-250 |
{ param_Gyro_Stability , 1 }, // unsigned char char Gyro_Stability; // Wert : 0-16 |
{ param_UnterspannungsWarnung , 1 }, // unsigned char char UnterspannungsWarnung; // Wert : 0-250 |
{ param_NotGas , 1 }, // unsigned char char NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust |
{ param_NotGasZeit , 1 }, // unsigned char char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen |
{ param_Receiver , 1 }, // unsigned char char Receiver; // 0= Summensignal, 1= Spektrum, 2 =Jeti, 3=ACT DSL, 4=ACT S3D |
{ param_I_Faktor , 1 }, // unsigned char char I_Faktor; // Wert : 0-250 |
{ param_UserParam1 , 1 }, // unsigned char char UserParam1; // Wert : 0-250 |
{ param_UserParam2 , 1 }, // unsigned char char UserParam2; // Wert : 0-250 |
{ param_UserParam3 , 1 }, // unsigned char char UserParam3; // Wert : 0-250 |
{ param_UserParam4 , 1 }, // unsigned char char UserParam4; // Wert : 0-250 |
{ param_ServoNickControl , 1 }, // unsigned char char ServoNickControl; // Wert : 0-250 // Stellung des Servos |
{ param_ServoNickComp , 1 }, // unsigned char char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
{ param_ServoNickMin , 1 }, // unsigned char char ServoNickMin; // Wert : 0-250 // Anschlag |
{ param_ServoNickMax , 1 }, // unsigned char char ServoNickMax; // Wert : 0-250 // Anschlag |
{ param_ServoRollControl , 1 }, // unsigned char char ServoRollControl; // Wert : 0-250 // Stellung des Servos |
{ param_ServoRollComp , 1 }, // unsigned char char ServoRollComp; // Wert : 0-250 |
{ param_ServoRollMin , 1 }, // unsigned char char ServoRollMin; // Wert : 0-250 |
{ param_ServoRollMax , 1 }, // unsigned char char ServoRollMax; // Wert : 0-250 |
{ param_ServoNickRefresh , 1 }, // unsigned char char ServoNickRefresh; // Speed of the Servo |
{ param_ServoManualControlSpeed , 1 }, // unsigned char char ServoManualControlSpeed; // |
{ param_CamOrientation , 1 }, // unsigned char char CamOrientation; // |
{ param_Servo3 , 1 }, // unsigned char char Servo3; // Value or mapping of the Servo Output |
{ param_Servo4 , 1 }, // unsigned char char Servo4; // Value or mapping of the Servo Output |
{ param_Servo5 , 1 }, // unsigned char char Servo5; // Value or mapping of the Servo Output |
{ param_LoopGasLimit , 1 }, // unsigned char char LoopGasLimit; // Wert: 0-250 max. Gas während Looping |
{ param_LoopThreshold , 1 }, // unsigned char char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag |
{ param_LoopHysterese , 1 }, // unsigned char char LoopHysterese; // Wert: 0-250 Hysterese für Stickausschlag |
{ param_AchsKopplung1 , 1 }, // unsigned char char AchsKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick koppelt (NickRollMitkopplung) |
{ param_AchsKopplung2 , 1 }, // unsigned char char AchsKopplung2; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
{ param_CouplingYawCorrection , 1 }, // unsigned char char CouplingYawCorrection; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
{ param_WinkelUmschlagNick , 1 }, // unsigned char char WinkelUmschlagNick; // Wert: 0-250 180°-Punkt |
{ param_WinkelUmschlagRoll , 1 }, // unsigned char char WinkelUmschlagRoll; // Wert: 0-250 180°-Punkt |
{ param_GyroAccAbgleich , 1 }, // unsigned char char GyroAccAbgleich; // 1/k (Koppel_ACC_Wirkung) |
{ param_Driftkomp , 1 }, // unsigned char char Driftkomp; |
{ param_DynamicStability , 1 }, // unsigned char char DynamicStability; |
{ param_UserParam5 , 1 }, // unsigned char char UserParam5; // Wert : 0-250 |
{ param_UserParam6 , 1 }, // unsigned char char UserParam6; // Wert : 0-250 |
{ param_UserParam7 , 1 }, // unsigned char char UserParam7; // Wert : 0-250 |
{ param_UserParam8 , 1 }, // unsigned char char UserParam8; // Wert : 0-250 |
{ param_J16Bitmask , 1 }, // unsigned char char J16Bitmask; // for the J16 Output |
{ param_J16Timing , 1 }, // unsigned char char J16Timing; // for the J16 Output |
{ param_J17Bitmask , 1 }, // unsigned char char J17Bitmask; // for the J17 Output |
{ param_J17Timing , 1 }, // unsigned char char J17Timing; // for the J17 Output |
{ param_WARN_J16_Bitmask , 1 }, // unsigned char char WARN_J16_Bitmask; // for the J16 Output |
{ param_WARN_J17_Bitmask , 1 }, // unsigned char char WARN_J17_Bitmask; // for the J17 Output |
{ param_AutoPhotoDistance , 1 }, // unsigned char char AutoPhotoDistance; // Auto Photo // ab Rev. 100 (ehemals NaviOut1Parameter) |
{ param_NaviGpsModeChannel , 1 }, // unsigned char char NaviGpsModeChannel; // Parameters for the Naviboard |
{ param_NaviGpsGain , 1 }, // unsigned char char NaviGpsGain; |
{ param_NaviGpsP , 1 }, // unsigned char char NaviGpsP; |
{ param_NaviGpsI , 1 }, // unsigned char char NaviGpsI; |
{ param_NaviGpsD , 1 }, // unsigned char char NaviGpsD; |
{ param_NaviGpsPLimit , 1 }, // unsigned char char NaviGpsPLimit; |
{ param_NaviGpsILimit , 1 }, // unsigned char char NaviGpsILimit; |
{ param_NaviGpsDLimit , 1 }, // unsigned char char NaviGpsDLimit; |
{ param_NaviGpsA , 1 }, // unsigned char char NaviGpsA; |
{ param_NaviGpsMinSat , 1 }, // unsigned char char NaviGpsMinSat; |
{ param_NaviStickThreshold , 1 }, // unsigned char char NaviStickThreshold; |
{ param_NaviWindCorrection , 1 }, // unsigned char char NaviWindCorrection; |
{ param_NaviAccCompensation , 1 }, // unsigned char char NaviAccCompensation; // New since 0.86 -> was: SpeedCompensation |
{ param_NaviMaxFlyingRange , 1 }, // unsigned char char NaviMaxFlyingRange; // in 10m |
{ param_NaviAngleLimitation , 1 }, // unsigned char char NaviAngleLimitation; |
{ param_NaviPH_LoginTime , 1 }, // unsigned char char NaviPH_LoginTime; |
{ param_NaviDescendRange , 1 }, // unsigned char char NaviDescendRange; |
{ param_ExternalControl , 1 }, // unsigned char char ExternalControl; // for serial Control |
{ param_OrientationAngle , 1 }, // unsigned char char OrientationAngle; // Where is the front-direction? |
{ param_CareFreeChannel , 1 }, // unsigned char char CareFreeChannel; // switch for CareFree |
{ param_MotorSafetySwitch , 1 }, // unsigned char char MotorSafetySwitch; |
{ param_MotorSmooth , 1 }, // unsigned char char MotorSmooth; |
{ param_ComingHomeAltitude , 1 }, // unsigned char char ComingHomeAltitude; |
{ param_FailSafeTime , 1 }, // unsigned char char FailSafeTime; |
{ param_MaxAltitude , 1 }, // unsigned char char MaxAltitude; |
{ param_FailsafeChannel , 1 }, // unsigned char char FailsafeChannel; // if the value of this channel is > 100, the MK reports "RC-Lost" |
{ param_ServoFilterNick , 1 }, // unsigned char char ServoFilterNick; |
{ param_ServoFilterRoll , 1 }, // unsigned char char ServoFilterRoll; |
{ param_Servo3OnValue , 1 }, // unsigned char char Servo3OnValue; // ab Rev. 101 (FC 2.05f) |
{ param_Servo3OffValue , 1 }, // unsigned char char Servo3OffValue; // ab Rev. 101 (FC 2.05f) |
{ param_Servo4OnValue , 1 }, // unsigned char char Servo4OnValue; // ab Rev. 101 (FC 2.05f) |
{ param_Servo4OffValue , 1 }, // unsigned char char Servo4OffValue; // ab Rev. 101 (FC 2.05f) |
{ param_StartLandChannel , 1 }, // unsigned char char StartLandChannel; |
{ param_LandingSpeed , 1 }, // unsigned char char LandingSpeed; |
{ param_CompassOffset , 1 }, // unsigned char char CompassOffset; |
{ param_AutoLandingVoltage , 1 }, // unsigned char char AutoLandingVoltage; // in 0,1V 0 -> disabled |
{ param_ComingHomeVoltage , 1 }, // unsigned char char ComingHomeVoltage; // in 0,1V 0 -> disabled |
{ param_AutoPhotoAtitudes , 1 }, // unsigned char char AutoPhotoAtitudes; // ab Rev. 100 |
{ param_SingleWpSpeed , 1 }, // unsigned char char SingleWpSpeed; // ab Rev. 100 |
{ param_LandingPulse , 1 }, // unsigned char char LandingPulse; // ab Rev. 104 (FC 2.09d) |
{ param_BitConfig , 1 }, // unsigned char char BitConfig; // (war Loop-Cfg) Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
{ param_ServoCompInvert , 1 }, // unsigned char char ServoCompInvert; // 0x01 = Nick, 0x02 = Roll, 0x04 = relative moving // WICHTIG!!! am Ende lassen |
{ param_ExtraConfig , 1 }, // unsigned char char ExtraConfig; // bitcodiert |
{ param_GlobalConfig3 , 1 }, // unsigned char char GlobalConfig3; // bitcodiert |
{ param_Name , 12 }, // char Name[12]; |
{ param_crc , 1 }, // unsigned char char crc; // must be the last byte! |
{ param_EOF , 0 } // END OF PARAM-LIST - MUST BE THE LAST!! |
}; // end: paramset_104[] |
//----------------------------------------------- |
// FC-Parameter Revision: 105 |
// |
// ab FC-Version: ab 2.09j bis ??? |
// gefunden in: 2.09j |
// |
// STRUKTUR-DIFF zu 104: |
// add: unsigned char ServoFS_Pos[5]; |
// |
//----------------------------------------------- |
paramRevItem_t const paramset_105[] PROGMEM = |
{ |
{ param_Revision , 1 }, // unsigned char Revision; |
{ param_Kanalbelegung , 12 }, // unsigned char char Kanalbelegung[12]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3 |
{ param_GlobalConfig , 1 }, // unsigned char char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv |
{ param_Hoehe_MinGas , 1 }, // unsigned char char Hoehe_MinGas; // Wert : 0-100 |
{ param_Luftdruck_D , 1 }, // unsigned char char Luftdruck_D; // Wert : 0-250 |
{ param_HoeheChannel , 1 }, // unsigned char char HoeheChannel; // Wert : 0-32 |
{ param_Hoehe_P , 1 }, // unsigned char char Hoehe_P; // Wert : 0-32 |
{ param_Hoehe_Verstaerkung , 1 }, // unsigned char char Hoehe_Verstaerkung; // Wert : 0-50 |
{ param_Hoehe_ACC_Wirkung , 1 }, // unsigned char char Hoehe_ACC_Wirkung; // Wert : 0-250 |
{ param_Hoehe_HoverBand , 1 }, // unsigned char char Hoehe_HoverBand; // Wert : 0-250 |
{ param_Hoehe_TiltCompensation , 1 }, // unsigned char char Hoehe_TiltCompensation; // Wert : 0-250 |
{ param_Hoehe_StickNeutralPoint , 1 }, // unsigned char char Hoehe_StickNeutralPoint; // Wert : 0-250 |
{ param_Stick_P , 1 }, // unsigned char char Stick_P; // Wert : 1-6 |
{ param_Stick_D , 1 }, // unsigned char char Stick_D; // Wert : 0-64 |
{ param_StickGier_P , 1 }, // unsigned char char StickGier_P; // Wert : 1-20 |
{ param_Gas_Min , 1 }, // unsigned char char Gas_Min; // Wert : 0-32 |
{ param_Gas_Max , 1 }, // unsigned char char Gas_Max; // Wert : 33-250 |
{ param_GyroAccFaktor , 1 }, // unsigned char char GyroAccFaktor; // Wert : 1-64 |
{ param_KompassWirkung , 1 }, // unsigned char char KompassWirkung; // Wert : 0-32 |
{ param_Gyro_P , 1 }, // unsigned char char Gyro_P; // Wert : 10-250 |
{ param_Gyro_I , 1 }, // unsigned char char Gyro_I; // Wert : 0-250 |
{ param_Gyro_D , 1 }, // unsigned char char Gyro_D; // Wert : 0-250 |
{ param_Gyro_Gier_P , 1 }, // unsigned char char Gyro_Gier_P; // Wert : 10-250 |
{ param_Gyro_Gier_I , 1 }, // unsigned char char Gyro_Gier_I; // Wert : 0-250 |
{ param_Gyro_Stability , 1 }, // unsigned char char Gyro_Stability; // Wert : 0-16 |
{ param_UnterspannungsWarnung , 1 }, // unsigned char char UnterspannungsWarnung; // Wert : 0-250 |
{ param_NotGas , 1 }, // unsigned char char NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust |
{ param_NotGasZeit , 1 }, // unsigned char char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen |
{ param_Receiver , 1 }, // unsigned char char Receiver; // 0= Summensignal, 1= Spektrum, 2 =Jeti, 3=ACT DSL, 4=ACT S3D |
{ param_I_Faktor , 1 }, // unsigned char char I_Faktor; // Wert : 0-250 |
{ param_UserParam1 , 1 }, // unsigned char char UserParam1; // Wert : 0-250 |
{ param_UserParam2 , 1 }, // unsigned char char UserParam2; // Wert : 0-250 |
{ param_UserParam3 , 1 }, // unsigned char char UserParam3; // Wert : 0-250 |
{ param_UserParam4 , 1 }, // unsigned char char UserParam4; // Wert : 0-250 |
{ param_ServoNickControl , 1 }, // unsigned char char ServoNickControl; // Wert : 0-250 // Stellung des Servos |
{ param_ServoNickComp , 1 }, // unsigned char char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
{ param_ServoNickMin , 1 }, // unsigned char char ServoNickMin; // Wert : 0-250 // Anschlag |
{ param_ServoNickMax , 1 }, // unsigned char char ServoNickMax; // Wert : 0-250 // Anschlag |
{ param_ServoRollControl , 1 }, // unsigned char char ServoRollControl; // Wert : 0-250 // Stellung des Servos |
{ param_ServoRollComp , 1 }, // unsigned char char ServoRollComp; // Wert : 0-250 |
{ param_ServoRollMin , 1 }, // unsigned char char ServoRollMin; // Wert : 0-250 |
{ param_ServoRollMax , 1 }, // unsigned char char ServoRollMax; // Wert : 0-250 |
{ param_ServoNickRefresh , 1 }, // unsigned char char ServoNickRefresh; // Speed of the Servo |
{ param_ServoManualControlSpeed , 1 }, // unsigned char char ServoManualControlSpeed; // |
{ param_CamOrientation , 1 }, // unsigned char char CamOrientation; // |
{ param_Servo3 , 1 }, // unsigned char char Servo3; // Value or mapping of the Servo Output |
{ param_Servo4 , 1 }, // unsigned char char Servo4; // Value or mapping of the Servo Output |
{ param_Servo5 , 1 }, // unsigned char char Servo5; // Value or mapping of the Servo Output |
{ param_LoopGasLimit , 1 }, // unsigned char char LoopGasLimit; // Wert: 0-250 max. Gas während Looping |
{ param_LoopThreshold , 1 }, // unsigned char char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag |
{ param_LoopHysterese , 1 }, // unsigned char char LoopHysterese; // Wert: 0-250 Hysterese für Stickausschlag |
{ param_AchsKopplung1 , 1 }, // unsigned char char AchsKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick koppelt (NickRollMitkopplung) |
{ param_AchsKopplung2 , 1 }, // unsigned char char AchsKopplung2; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
{ param_CouplingYawCorrection , 1 }, // unsigned char char CouplingYawCorrection; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
{ param_WinkelUmschlagNick , 1 }, // unsigned char char WinkelUmschlagNick; // Wert: 0-250 180°-Punkt |
{ param_WinkelUmschlagRoll , 1 }, // unsigned char char WinkelUmschlagRoll; // Wert: 0-250 180°-Punkt |
{ param_GyroAccAbgleich , 1 }, // unsigned char char GyroAccAbgleich; // 1/k (Koppel_ACC_Wirkung) |
{ param_Driftkomp , 1 }, // unsigned char char Driftkomp; |
{ param_DynamicStability , 1 }, // unsigned char char DynamicStability; |
{ param_UserParam5 , 1 }, // unsigned char char UserParam5; // Wert : 0-250 |
{ param_UserParam6 , 1 }, // unsigned char char UserParam6; // Wert : 0-250 |
{ param_UserParam7 , 1 }, // unsigned char char UserParam7; // Wert : 0-250 |
{ param_UserParam8 , 1 }, // unsigned char char UserParam8; // Wert : 0-250 |
{ param_J16Bitmask , 1 }, // unsigned char char J16Bitmask; // for the J16 Output |
{ param_J16Timing , 1 }, // unsigned char char J16Timing; // for the J16 Output |
{ param_J17Bitmask , 1 }, // unsigned char char J17Bitmask; // for the J17 Output |
{ param_J17Timing , 1 }, // unsigned char char J17Timing; // for the J17 Output |
{ param_WARN_J16_Bitmask , 1 }, // unsigned char char WARN_J16_Bitmask; // for the J16 Output |
{ param_WARN_J17_Bitmask , 1 }, // unsigned char char WARN_J17_Bitmask; // for the J17 Output |
{ param_AutoPhotoDistance , 1 }, // unsigned char char AutoPhotoDistance; // Auto Photo // ab Rev. 100 (ehemals NaviOut1Parameter) |
{ param_NaviGpsModeChannel , 1 }, // unsigned char char NaviGpsModeChannel; // Parameters for the Naviboard |
{ param_NaviGpsGain , 1 }, // unsigned char char NaviGpsGain; |
{ param_NaviGpsP , 1 }, // unsigned char char NaviGpsP; |
{ param_NaviGpsI , 1 }, // unsigned char char NaviGpsI; |
{ param_NaviGpsD , 1 }, // unsigned char char NaviGpsD; |
{ param_NaviGpsPLimit , 1 }, // unsigned char char NaviGpsPLimit; |
{ param_NaviGpsILimit , 1 }, // unsigned char char NaviGpsILimit; |
{ param_NaviGpsDLimit , 1 }, // unsigned char char NaviGpsDLimit; |
{ param_NaviGpsA , 1 }, // unsigned char char NaviGpsA; |
{ param_NaviGpsMinSat , 1 }, // unsigned char char NaviGpsMinSat; |
{ param_NaviStickThreshold , 1 }, // unsigned char char NaviStickThreshold; |
{ param_NaviWindCorrection , 1 }, // unsigned char char NaviWindCorrection; |
{ param_NaviAccCompensation , 1 }, // unsigned char char NaviAccCompensation; // New since 0.86 -> was: SpeedCompensation |
{ param_NaviMaxFlyingRange , 1 }, // unsigned char char NaviMaxFlyingRange; // in 10m |
{ param_NaviAngleLimitation , 1 }, // unsigned char char NaviAngleLimitation; |
{ param_NaviPH_LoginTime , 1 }, // unsigned char char NaviPH_LoginTime; |
{ param_NaviDescendRange , 1 }, // unsigned char char NaviDescendRange; |
{ param_ExternalControl , 1 }, // unsigned char char ExternalControl; // for serial Control |
{ param_OrientationAngle , 1 }, // unsigned char char OrientationAngle; // Where is the front-direction? |
{ param_CareFreeChannel , 1 }, // unsigned char char CareFreeChannel; // switch for CareFree |
{ param_MotorSafetySwitch , 1 }, // unsigned char char MotorSafetySwitch; |
{ param_MotorSmooth , 1 }, // unsigned char char MotorSmooth; |
{ param_ComingHomeAltitude , 1 }, // unsigned char char ComingHomeAltitude; |
{ param_FailSafeTime , 1 }, // unsigned char char FailSafeTime; |
{ param_MaxAltitude , 1 }, // unsigned char char MaxAltitude; |
{ param_FailsafeChannel , 1 }, // unsigned char char FailsafeChannel; // if the value of this channel is > 100, the MK reports "RC-Lost" |
{ param_ServoFilterNick , 1 }, // unsigned char char ServoFilterNick; |
{ param_ServoFilterRoll , 1 }, // unsigned char char ServoFilterRoll; |
{ param_Servo3OnValue , 1 }, // unsigned char char Servo3OnValue; // ab Rev. 101 (FC 2.05f) |
{ param_Servo3OffValue , 1 }, // unsigned char char Servo3OffValue; // ab Rev. 101 (FC 2.05f) |
{ param_Servo4OnValue , 1 }, // unsigned char char Servo4OnValue; // ab Rev. 101 (FC 2.05f) |
{ param_Servo4OffValue , 1 }, // unsigned char char Servo4OffValue; // ab Rev. 101 (FC 2.05f) |
{ param_ServoFS_Pos , 5 }, // unsigned char ServoFS_Pos[5]; // ab Rev. 105 (FC 2.09i) |
{ param_StartLandChannel , 1 }, // unsigned char char StartLandChannel; |
{ param_LandingSpeed , 1 }, // unsigned char char LandingSpeed; |
{ param_CompassOffset , 1 }, // unsigned char char CompassOffset; |
{ param_AutoLandingVoltage , 1 }, // unsigned char char AutoLandingVoltage; // in 0,1V 0 -> disabled |
{ param_ComingHomeVoltage , 1 }, // unsigned char char ComingHomeVoltage; // in 0,1V 0 -> disabled |
{ param_AutoPhotoAtitudes , 1 }, // unsigned char char AutoPhotoAtitudes; // ab Rev. 100 |
{ param_SingleWpSpeed , 1 }, // unsigned char char SingleWpSpeed; // ab Rev. 100 |
{ param_LandingPulse , 1 }, // unsigned char char LandingPulse; // ab Rev. 104 (FC 2.09d) |
{ param_BitConfig , 1 }, // unsigned char char BitConfig; // (war Loop-Cfg) Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
{ param_ServoCompInvert , 1 }, // unsigned char char ServoCompInvert; // 0x01 = Nick, 0x02 = Roll, 0x04 = relative moving // WICHTIG!!! am Ende lassen |
{ param_ExtraConfig , 1 }, // unsigned char char ExtraConfig; // bitcodiert |
{ param_GlobalConfig3 , 1 }, // unsigned char char GlobalConfig3; // bitcodiert |
{ param_Name , 12 }, // char Name[12]; |
{ param_crc , 1 }, // unsigned char char crc; // must be the last byte! |
{ param_EOF , 0 } // END OF PARAM-LIST - MUST BE THE LAST!! |
}; // end: paramset_105[] |
//----------------------------------------------- |
// FC-Parameter Revision: 106 |
// |
// ab FC-Version: ab 2.11a bis ??? |
// gefunden in: 2.11a |
// |
// STRUKTUR-DIFF zu 105: |
// add: unsigned char SingleWpControlChannel; |
// unsigned char MenuKeyChannel; |
// |
//----------------------------------------------- |
paramRevItem_t const paramset_106[] PROGMEM = |
{ |
{ param_Revision , 1 }, // unsigned char Revision; |
{ param_Kanalbelegung , 12 }, // unsigned char char Kanalbelegung[12]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3 |
{ param_GlobalConfig , 1 }, // unsigned char char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv |
{ param_Hoehe_MinGas , 1 }, // unsigned char char Hoehe_MinGas; // Wert : 0-100 |
{ param_Luftdruck_D , 1 }, // unsigned char char Luftdruck_D; // Wert : 0-250 |
{ param_HoeheChannel , 1 }, // unsigned char char HoeheChannel; // Wert : 0-32 |
{ param_Hoehe_P , 1 }, // unsigned char char Hoehe_P; // Wert : 0-32 |
{ param_Hoehe_Verstaerkung , 1 }, // unsigned char char Hoehe_Verstaerkung; // Wert : 0-50 |
{ param_Hoehe_ACC_Wirkung , 1 }, // unsigned char char Hoehe_ACC_Wirkung; // Wert : 0-250 |
{ param_Hoehe_HoverBand , 1 }, // unsigned char char Hoehe_HoverBand; // Wert : 0-250 |
{ param_Hoehe_TiltCompensation , 1 }, // unsigned char char Hoehe_TiltCompensation; // Wert : 0-250 |
{ param_Hoehe_StickNeutralPoint , 1 }, // unsigned char char Hoehe_StickNeutralPoint; // Wert : 0-250 |
{ param_Stick_P , 1 }, // unsigned char char Stick_P; // Wert : 1-6 |
{ param_Stick_D , 1 }, // unsigned char char Stick_D; // Wert : 0-64 |
{ param_StickGier_P , 1 }, // unsigned char char StickGier_P; // Wert : 1-20 |
{ param_Gas_Min , 1 }, // unsigned char char Gas_Min; // Wert : 0-32 |
{ param_Gas_Max , 1 }, // unsigned char char Gas_Max; // Wert : 33-250 |
{ param_GyroAccFaktor , 1 }, // unsigned char char GyroAccFaktor; // Wert : 1-64 |
{ param_KompassWirkung , 1 }, // unsigned char char KompassWirkung; // Wert : 0-32 |
{ param_Gyro_P , 1 }, // unsigned char char Gyro_P; // Wert : 10-250 |
{ param_Gyro_I , 1 }, // unsigned char char Gyro_I; // Wert : 0-250 |
{ param_Gyro_D , 1 }, // unsigned char char Gyro_D; // Wert : 0-250 |
{ param_Gyro_Gier_P , 1 }, // unsigned char char Gyro_Gier_P; // Wert : 10-250 |
{ param_Gyro_Gier_I , 1 }, // unsigned char char Gyro_Gier_I; // Wert : 0-250 |
{ param_Gyro_Stability , 1 }, // unsigned char char Gyro_Stability; // Wert : 0-16 |
{ param_UnterspannungsWarnung , 1 }, // unsigned char char UnterspannungsWarnung; // Wert : 0-250 |
{ param_NotGas , 1 }, // unsigned char char NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust |
{ param_NotGasZeit , 1 }, // unsigned char char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen |
{ param_Receiver , 1 }, // unsigned char char Receiver; // 0= Summensignal, 1= Spektrum, 2 =Jeti, 3=ACT DSL, 4=ACT S3D |
{ param_I_Faktor , 1 }, // unsigned char char I_Faktor; // Wert : 0-250 |
{ param_UserParam1 , 1 }, // unsigned char char UserParam1; // Wert : 0-250 |
{ param_UserParam2 , 1 }, // unsigned char char UserParam2; // Wert : 0-250 |
{ param_UserParam3 , 1 }, // unsigned char char UserParam3; // Wert : 0-250 |
{ param_UserParam4 , 1 }, // unsigned char char UserParam4; // Wert : 0-250 |
{ param_ServoNickControl , 1 }, // unsigned char char ServoNickControl; // Wert : 0-250 // Stellung des Servos |
{ param_ServoNickComp , 1 }, // unsigned char char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
{ param_ServoNickMin , 1 }, // unsigned char char ServoNickMin; // Wert : 0-250 // Anschlag |
{ param_ServoNickMax , 1 }, // unsigned char char ServoNickMax; // Wert : 0-250 // Anschlag |
{ param_ServoRollControl , 1 }, // unsigned char char ServoRollControl; // Wert : 0-250 // Stellung des Servos |
{ param_ServoRollComp , 1 }, // unsigned char char ServoRollComp; // Wert : 0-250 |
{ param_ServoRollMin , 1 }, // unsigned char char ServoRollMin; // Wert : 0-250 |
{ param_ServoRollMax , 1 }, // unsigned char char ServoRollMax; // Wert : 0-250 |
{ param_ServoNickRefresh , 1 }, // unsigned char char ServoNickRefresh; // Speed of the Servo |
{ param_ServoManualControlSpeed , 1 }, // unsigned char char ServoManualControlSpeed; // |
{ param_CamOrientation , 1 }, // unsigned char char CamOrientation; // |
{ param_Servo3 , 1 }, // unsigned char char Servo3; // Value or mapping of the Servo Output |
{ param_Servo4 , 1 }, // unsigned char char Servo4; // Value or mapping of the Servo Output |
{ param_Servo5 , 1 }, // unsigned char char Servo5; // Value or mapping of the Servo Output |
{ param_LoopGasLimit , 1 }, // unsigned char char LoopGasLimit; // Wert: 0-250 max. Gas während Looping |
{ param_LoopThreshold , 1 }, // unsigned char char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag |
{ param_LoopHysterese , 1 }, // unsigned char char LoopHysterese; // Wert: 0-250 Hysterese für Stickausschlag |
{ param_AchsKopplung1 , 1 }, // unsigned char char AchsKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick koppelt (NickRollMitkopplung) |
{ param_AchsKopplung2 , 1 }, // unsigned char char AchsKopplung2; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
{ param_CouplingYawCorrection , 1 }, // unsigned char char CouplingYawCorrection; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
{ param_WinkelUmschlagNick , 1 }, // unsigned char char WinkelUmschlagNick; // Wert: 0-250 180°-Punkt |
{ param_WinkelUmschlagRoll , 1 }, // unsigned char char WinkelUmschlagRoll; // Wert: 0-250 180°-Punkt |
{ param_GyroAccAbgleich , 1 }, // unsigned char char GyroAccAbgleich; // 1/k (Koppel_ACC_Wirkung) |
{ param_Driftkomp , 1 }, // unsigned char char Driftkomp; |
{ param_DynamicStability , 1 }, // unsigned char char DynamicStability; |
{ param_UserParam5 , 1 }, // unsigned char char UserParam5; // Wert : 0-250 |
{ param_UserParam6 , 1 }, // unsigned char char UserParam6; // Wert : 0-250 |
{ param_UserParam7 , 1 }, // unsigned char char UserParam7; // Wert : 0-250 |
{ param_UserParam8 , 1 }, // unsigned char char UserParam8; // Wert : 0-250 |
{ param_J16Bitmask , 1 }, // unsigned char char J16Bitmask; // for the J16 Output |
{ param_J16Timing , 1 }, // unsigned char char J16Timing; // for the J16 Output |
{ param_J17Bitmask , 1 }, // unsigned char char J17Bitmask; // for the J17 Output |
{ param_J17Timing , 1 }, // unsigned char char J17Timing; // for the J17 Output |
{ param_WARN_J16_Bitmask , 1 }, // unsigned char char WARN_J16_Bitmask; // for the J16 Output |
{ param_WARN_J17_Bitmask , 1 }, // unsigned char char WARN_J17_Bitmask; // for the J17 Output |
{ param_AutoPhotoDistance , 1 }, // unsigned char char AutoPhotoDistance; // Auto Photo // ab Rev. 100 (ehemals NaviOut1Parameter) |
{ param_NaviGpsModeChannel , 1 }, // unsigned char char NaviGpsModeChannel; // Parameters for the Naviboard |
{ param_NaviGpsGain , 1 }, // unsigned char char NaviGpsGain; |
{ param_NaviGpsP , 1 }, // unsigned char char NaviGpsP; |
{ param_NaviGpsI , 1 }, // unsigned char char NaviGpsI; |
{ param_NaviGpsD , 1 }, // unsigned char char NaviGpsD; |
{ param_NaviGpsPLimit , 1 }, // unsigned char char NaviGpsPLimit; |
{ param_NaviGpsILimit , 1 }, // unsigned char char NaviGpsILimit; |
{ param_NaviGpsDLimit , 1 }, // unsigned char char NaviGpsDLimit; |
{ param_NaviGpsA , 1 }, // unsigned char char NaviGpsA; |
{ param_NaviGpsMinSat , 1 }, // unsigned char char NaviGpsMinSat; |
{ param_NaviStickThreshold , 1 }, // unsigned char char NaviStickThreshold; |
{ param_NaviWindCorrection , 1 }, // unsigned char char NaviWindCorrection; |
{ param_NaviAccCompensation , 1 }, // unsigned char char NaviAccCompensation; // New since 0.86 -> was: SpeedCompensation |
{ param_NaviMaxFlyingRange , 1 }, // unsigned char char NaviMaxFlyingRange; // in 10m |
{ param_NaviAngleLimitation , 1 }, // unsigned char char NaviAngleLimitation; |
{ param_NaviPH_LoginTime , 1 }, // unsigned char char NaviPH_LoginTime; |
{ param_NaviDescendRange , 1 }, // unsigned char char NaviDescendRange; |
{ param_ExternalControl , 1 }, // unsigned char char ExternalControl; // for serial Control |
{ param_OrientationAngle , 1 }, // unsigned char char OrientationAngle; // Where is the front-direction? |
{ param_CareFreeChannel , 1 }, // unsigned char char CareFreeChannel; // switch for CareFree |
{ param_MotorSafetySwitch , 1 }, // unsigned char char MotorSafetySwitch; |
{ param_MotorSmooth , 1 }, // unsigned char char MotorSmooth; |
{ param_ComingHomeAltitude , 1 }, // unsigned char char ComingHomeAltitude; |
{ param_FailSafeTime , 1 }, // unsigned char char FailSafeTime; |
{ param_MaxAltitude , 1 }, // unsigned char char MaxAltitude; |
{ param_FailsafeChannel , 1 }, // unsigned char char FailsafeChannel; // if the value of this channel is > 100, the MK reports "RC-Lost" |
{ param_ServoFilterNick , 1 }, // unsigned char char ServoFilterNick; |
{ param_ServoFilterRoll , 1 }, // unsigned char char ServoFilterRoll; |
{ param_Servo3OnValue , 1 }, // unsigned char char Servo3OnValue; // ab Rev. 101 (FC 2.05f) |
{ param_Servo3OffValue , 1 }, // unsigned char char Servo3OffValue; // ab Rev. 101 (FC 2.05f) |
{ param_Servo4OnValue , 1 }, // unsigned char char Servo4OnValue; // ab Rev. 101 (FC 2.05f) |
{ param_Servo4OffValue , 1 }, // unsigned char char Servo4OffValue; // ab Rev. 101 (FC 2.05f) |
{ param_ServoFS_Pos , 5 }, // unsigned char ServoFS_Pos[5]; // ab Rev. 105 (FC 2.09i) |
{ param_StartLandChannel , 1 }, // unsigned char char StartLandChannel; |
{ param_LandingSpeed , 1 }, // unsigned char char LandingSpeed; |
{ param_CompassOffset , 1 }, // unsigned char char CompassOffset; |
{ param_AutoLandingVoltage , 1 }, // unsigned char char AutoLandingVoltage; // in 0,1V 0 -> disabled |
{ param_ComingHomeVoltage , 1 }, // unsigned char char ComingHomeVoltage; // in 0,1V 0 -> disabled |
{ param_AutoPhotoAtitudes , 1 }, // unsigned char char AutoPhotoAtitudes; // ab Rev. 100 |
{ param_SingleWpSpeed , 1 }, // unsigned char char SingleWpSpeed; // ab Rev. 100 |
{ param_LandingPulse , 1 }, // unsigned char char LandingPulse; // ab Rev. 104 (FC 2.09d) |
{ param_SingleWpControlChannel , 1 }, // unsigned char SingleWpControlChannel; // ab Rev. 106 (FC2.11a) |
{ param_MenuKeyChannel , 1 }, // unsigned char MenuKeyChannel; // ab Rev. 106 (FC2.11a) |
{ param_BitConfig , 1 }, // unsigned char char BitConfig; // (war Loop-Cfg) Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
{ param_ServoCompInvert , 1 }, // unsigned char char ServoCompInvert; // 0x01 = Nick, 0x02 = Roll, 0x04 = relative moving // WICHTIG!!! am Ende lassen |
{ param_ExtraConfig , 1 }, // unsigned char char ExtraConfig; // bitcodiert |
{ param_GlobalConfig3 , 1 }, // unsigned char char GlobalConfig3; // bitcodiert |
{ param_Name , 12 }, // char Name[12]; |
{ param_crc , 1 }, // unsigned char char crc; // must be the last byte! |
{ param_EOF , 0 } // END OF PARAM-LIST - MUST BE THE LAST!! |
}; // end: paramset_106[] |
//############################################################################################# |
//# 1b. Zuweisungstabelle: Revision -> paramset_xxx |
//############################################################################################# |
typedef struct |
{ |
unsigned char Revision; |
const paramRevItem_t *RevisionTable; |
} paramsetRevMap_t; |
#define MAPEOF 255 |
//---------------------------------------------------------------- |
// Mappingtabelle zwischen FC-Revision und Paramset-Tabelle |
// |
// Anmerkung bzgl. Groesse: |
// Angenommen man wuerde die Rev 97 bis 90 weglassen, dann |
// wuerde man ca. 1 KByte sparen |
//---------------------------------------------------------------- |
paramsetRevMap_t paramsetRevMap[] = |
{ |
{ 106 , paramset_106 }, // 2.11a |
{ 105 , paramset_105 }, // 2.09j |
{ 104 , paramset_104 }, // 2.09d |
{ 103 , paramset_103 }, // 2.07f |
{ 102 , paramset_102 }, // 2.05g (bis min. 2.06b) |
{ 101 , paramset_101 }, // 2.05f (eingeschraenkte Unterstuetzung - ) nur in einer einzigen Betaversion vorhanden!) |
{ 100 , paramset_100 }, // 2.05e (Anmerkung OG 06.04.2014: ggf. spaeter loeschen um Platz zu sparen da diese Version nur in einigen wenigen Betaversionen vorhanden ist) |
// Rev. 99: nicht vorhanden; ignorieren |
{ 98 , paramset_098 }, // 2.03d |
{ 97 , paramset_097 }, // 2.02b |
{ 96 , paramset_095 }, // ??? (keine Struktur-Aenderung zu 095) |
{ 95 , paramset_095 }, // 0.90L, 2.00a, 2.00e |
{ 94 , paramset_094 }, // eingeschraenkte Unterstuetzung; 0.91a |
{ 93 , paramset_093 }, // eingeschraenkte Unterstuetzung; 0.90e, 0.90g, 0.90j |
{ 92 , paramset_093 }, // eingeschraenkte Unterstuetzung; 0.90d (keine Struktur-Aenderung zu 093) |
{ 91 , paramset_091 }, // eingeschraenkte Unterstuetzung; 0.88m, 0.88n |
{ 90 , paramset_091 }, // eingeschraenkte Unterstuetzung; 0.88e (keine Struktur-Aenderung zu 091) |
{ MAPEOF, 0 } // END OF LIST - MUST BE THE LAST!! |
}; |
//############################################################################################# |
//# 2. Konfigurationstabelle der paramSubID's (Bit- und Bytefelder) |
//############################################################################################# |
//--------------------------------------- |
// struct: einzelnes Parameter-SubItem |
//--------------------------------------- |
typedef struct |
{ |
unsigned char paramSubID; // groesser/gleich PARAMSUBITEMS |
unsigned char paramID; // -> mapping auf entsprechende paramID |
unsigned char subType; // SUBTYPE_BIT oder SUBTYPE_BYTE |
unsigned char subIndex; // bei SUBTYPE_BIT: Bitmask z.b. 0x02 |
// bei SUBTYPE_BYTE: index des Bytes (siehe param_Kanalbelegung) |
unsigned char von_Revision; // ab welcher FC-Revision ist das SubItem vorhanden (0=immer) |
unsigned char bis_Revision; // bis zu welcher FC-Revision ist das SubItem vorhanden (0=immer) |
} paramSubItem_t; |
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
// +- von_Revision |
// | |
// +- paramSubID +- gehoert zu? +- Bit/Byte? +- Bit/Byte der paramID | +- bis_Revision |
// | | | | | | |
//--|-----------------------------------------|----------------------|--------------|----------------------------------|--|---------------------------------------------- |
paramSubItem_t const paramSubItem[] PROGMEM = |
{ |
{ param_ServoCompInvert_SERVO_NICK_INV , param_ServoCompInvert, SUBTYPE_BIT, SERVO_NICK_INV , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: SVNick 0x01 |
{ param_ServoCompInvert_SERVO_ROLL_INV , param_ServoCompInvert, SUBTYPE_BIT, SERVO_ROLL_INV , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: SVRoll 0x02 |
{ param_ServoCompInvert_SERVO_RELATIVE , param_ServoCompInvert, SUBTYPE_BIT, SERVO_RELATIVE , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: SVRelMov 0x04 |
{ param_ExtraConfig_HeightLimit , param_ExtraConfig, SUBTYPE_BIT, CFG2_HEIGHT_LIMIT , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: CFG2_HEIGHT_LIMIT 0x01 |
{ param_ExtraConfig_HeightVario , param_ExtraConfig, SUBTYPE_BITN, CFG2_HEIGHT_LIMIT , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: CFG2_HEIGHT_LIMIT 0x01 negiert zu param_ExtraConfig_HeightLimit |
{ param_ExtraConfig_VarioBeep , param_ExtraConfig, SUBTYPE_BIT, CFG2_VARIO_BEEP , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: CFG2_VARIO_BEEP 0x02 |
{ param_ExtraConfig_SensitiveRc , param_ExtraConfig, SUBTYPE_BIT, CFG_SENSITIVE_RC , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: CFG_SENSITIVE_RC 0x04 |
{ param_ExtraConfig_33vReference , param_ExtraConfig, SUBTYPE_BIT, CFG_3_3V_REFERENCE , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: CFG_3_3V_REFERENCE 0x08 |
{ param_ExtraConfig_NoRcOffBeeping , param_ExtraConfig, SUBTYPE_BIT, CFG_NO_RCOFF_BEEPING , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: CFG_NO_RCOFF_BEEPING 0x10 |
{ param_ExtraConfig_GpsAid , param_ExtraConfig, SUBTYPE_BIT, CFG_GPS_AID , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: CFG_GPS_AID 0x20 |
{ param_ExtraConfig_LearnableCarefree , param_ExtraConfig, SUBTYPE_BIT, CFG_LEARNABLE_CAREFREE , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: CFG_LEARNABLE_CAREFREE 0x40 |
{ param_ExtraConfig_IgnoreMagErrAtStartup , param_ExtraConfig, SUBTYPE_BIT, CFG_IGNORE_MAG_ERR_AT_STARTUP , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: CFG_IGNORE_MAG_ERR_AT_STARTUP 0x80 |
{ param_BitConfig_LoopOben , param_BitConfig, SUBTYPE_BIT, CFG_LOOP_OBEN , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: CFG_LOOP_OBEN 0x01 |
{ param_BitConfig_LoopUnten , param_BitConfig, SUBTYPE_BIT, CFG_LOOP_UNTEN , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: CFG_LOOP_UNTEN 0x02 |
{ param_BitConfig_LoopLinks , param_BitConfig, SUBTYPE_BIT, CFG_LOOP_LINKS , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: CFG_LOOP_LINKS 0x04 |
{ param_BitConfig_LoopRechts , param_BitConfig, SUBTYPE_BIT, CFG_LOOP_RECHTS , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: CFG_LOOP_RECHTS 0x08 |
{ param_BitConfig_MotorBlink1 , param_BitConfig, SUBTYPE_BIT, CFG_MOTOR_BLINK1 , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: CFG_MOTOR_BLINK1 0x10 |
{ param_BitConfig_MotorOffLed1 , param_BitConfig, SUBTYPE_BIT, CFG_MOTOR_OFF_LED1 , 0,101}, // SUBTYPE_BIT - mk-data-structs.h: CFG_MOTOR_OFF_LED1 0x20 |
{ param_BitConfig_MotorOffLed2 , param_BitConfig, SUBTYPE_BIT, CFG_MOTOR_OFF_LED2 , 0,101}, // SUBTYPE_BIT - mk-data-structs.h: CFG_MOTOR_OFF_LED2 0x40 |
{ param_BitConfig_MotorBlink2 , param_BitConfig, SUBTYPE_BIT, CFG_MOTOR_BLINK2 , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: CFG_MOTOR_BLINK2 0x80 |
{ param_GlobalConfig3_NoSdCardNoStart , param_GlobalConfig3, SUBTYPE_BIT, CFG3_NO_SDCARD_NO_START , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: CFG3_NO_SDCARD_NO_START 0x01 |
{ param_GlobalConfig3_DphMaxRadius , param_GlobalConfig3, SUBTYPE_BIT, CFG3_DPH_MAX_RADIUS , 0,100}, // SUBTYPE_BIT - mk-data-structs.h: CFG3_DPH_MAX_RADIUS 0x02 |
{ param_GlobalConfig3_VarioFailsafe , param_GlobalConfig3, SUBTYPE_BIT, CFG3_VARIO_FAILSAFE , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: CFG3_VARIO_FAILSAFE 0x04 |
{ param_GlobalConfig3_MotorSwitchMode , param_GlobalConfig3, SUBTYPE_BIT, CFG3_MOTOR_SWITCH_MODE , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: CFG3_MOTOR_SWITCH_MODE 0x08 |
{ param_GlobalConfig3_NoGpsFixNoStart , param_GlobalConfig3, SUBTYPE_BIT, CFG3_NO_GPSFIX_NO_START , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: CFG3_NO_GPSFIX_NO_START 0x10 |
{ param_GlobalConfig3_UseNcForOut1 , param_GlobalConfig3, SUBTYPE_BIT, CFG3_USE_NC_FOR_OUT1 , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: CFG3_USE_NC_FOR_OUT1 0x20 |
{ param_GlobalConfig3_SpeakAll , param_GlobalConfig3, SUBTYPE_BIT, CFG3_SPEAK_ALL , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: CFG3_SPEAK_ALL 0x40 |
{ param_GlobalConfig3_ServoNickCompOff , param_GlobalConfig3, SUBTYPE_BIT, CFG3_SERVO_NICK_COMP_OFF , 96, 0}, // SUBTYPE_BIT - mk-data-structs.h: CFG3_SERVO_NICK_COMP_OFF 0x80 |
{ param_GlobalConfig_HoehenRegelung , param_GlobalConfig, SUBTYPE_BIT, CFG_HOEHENREGELUNG , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: CFG_HOEHENREGELUNG 0x01 |
{ param_GlobalConfig_HoehenSchalter , param_GlobalConfig, SUBTYPE_BIT, CFG_HOEHEN_SCHALTER , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: CFG_HOEHEN_SCHALTER 0x02 |
{ param_GlobalConfig_HeadingHold , param_GlobalConfig, SUBTYPE_BIT, CFG_HEADING_HOLD , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: CFG_HEADING_HOLD 0x04 |
{ param_GlobalConfig_KompassAktiv , param_GlobalConfig, SUBTYPE_BIT, CFG_KOMPASS_AKTIV , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: CFG_KOMPASS_AKTIV 0x08 |
{ param_GlobalConfig_KompassFix , param_GlobalConfig, SUBTYPE_BIT, CFG_KOMPASS_FIX , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: CFG_KOMPASS_FIX 0x10 |
{ param_GlobalConfig_GpsAktiv , param_GlobalConfig, SUBTYPE_BIT, CFG_GPS_AKTIV , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: CFG_GPS_AKTIV 0x20 |
{ param_GlobalConfig_AchsenkopplungAktiv , param_GlobalConfig, SUBTYPE_BIT, CFG_ACHSENKOPPLUNG_AKTIV , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: CFG_ACHSENKOPPLUNG_AKTIV 0x40 |
{ param_GlobalConfig_DrehratenBegrenzer , param_GlobalConfig, SUBTYPE_BIT, CFG_DREHRATEN_BEGRENZER , 0, 0}, // SUBTYPE_BIT - mk-data-structs.h: CFG_DREHRATEN_BEGRENZER 0x80 |
{ param_Kanalbelegung_Nick , param_Kanalbelegung, SUBTYPE_BYTE, 0 , 0, 0}, // -> Kanalbelegung[12] |
{ param_Kanalbelegung_Roll , param_Kanalbelegung, SUBTYPE_BYTE, 1 , 0, 0}, |
{ param_Kanalbelegung_Gas , param_Kanalbelegung, SUBTYPE_BYTE, 2 , 0, 0}, |
{ param_Kanalbelegung_Gear , param_Kanalbelegung, SUBTYPE_BYTE, 3 , 0, 0}, |
{ param_Kanalbelegung_Poti1 , param_Kanalbelegung, SUBTYPE_BYTE, 4 , 0, 0}, |
{ param_Kanalbelegung_Poti2 , param_Kanalbelegung, SUBTYPE_BYTE, 5 , 0, 0}, |
{ param_Kanalbelegung_Poti3 , param_Kanalbelegung, SUBTYPE_BYTE, 6 , 0, 0}, |
{ param_Kanalbelegung_Poti4 , param_Kanalbelegung, SUBTYPE_BYTE, 7 , 0, 0}, |
{ param_Kanalbelegung_Poti5 , param_Kanalbelegung, SUBTYPE_BYTE, 8 , 0, 0}, |
{ param_Kanalbelegung_Poti6 , param_Kanalbelegung, SUBTYPE_BYTE, 9 , 0, 0}, |
{ param_Kanalbelegung_Poti7 , param_Kanalbelegung, SUBTYPE_BYTE, 10 , 0, 0}, |
{ param_Kanalbelegung_Poti8 , param_Kanalbelegung, SUBTYPE_BYTE, 11 , 0, 0}, |
{ param_CompassOffset_DisableDeclCalc , param_CompassOffset, SUBTYPE_BYTE, 0 , 0, 0}, // ist in Bit 8 und 7 von CompassOffset kodiert |
{ param_ComingHomeOrientation , param_ServoCompInvert, SUBTYPE_BYTE, 0 , 0, 0}, // ist in Bit 5 und 4 von CervoCompInvert |
{ param_ServoNickFailsave , param_ServoFS_Pos, SUBTYPE_BYTE, 0 , 0, 0}, |
{ param_ServoRollFailsave , param_ServoFS_Pos, SUBTYPE_BYTE, 1 , 0, 0}, |
{ param_Servo3Failsave , param_ServoFS_Pos, SUBTYPE_BYTE, 2 , 0, 0}, |
{ param_Servo4Failsave , param_ServoFS_Pos, SUBTYPE_BYTE, 3 , 0, 0}, |
{ param_Servo5Failsave , param_ServoFS_Pos, SUBTYPE_BYTE, 4 , 0, 0}, |
{ param_EOF , 0,0,0,0,0 } // END - MUST BE THE LAST!! |
}; // end: paramSubItem[] |
//############################################################################################# |
//# 3a. Transformations-Tabelle |
//############################################################################################# |
//--------------------------------------- |
// struct: einzelnes Parameter-SubItem |
//--------------------------------------- |
typedef struct |
{ |
unsigned char paramID; // paramID oder paramSubID |
unsigned char (*transformfunc)( uint8_t cmd, unsigned char value, unsigned char newvalue ); // Edit-Funktion (z.B. editGeneric()); cmd = CMD_EDIT oder CMD_SHORTVALUE |
} paramTransform_t; |
//--------------------------------------- |
// forward Deklarationen fuer transform |
//--------------------------------------- |
unsigned char transform_CompassOffset_DisableDeclCalc( uint8_t cmd, unsigned char value, unsigned char newvalue ); |
unsigned char transform_ComingHomeOrientation( uint8_t cmd, unsigned char value, unsigned char newvalue ); |
//unsigned char transform_ValueACCZ( uint16_t cmd, uint16_t value, uint16_t newvalue ); |
//--------------------------------------- |
//--------------------------------------- |
paramTransform_t const paramTransform[] = |
{ |
{ param_CompassOffset_DisableDeclCalc , &transform_CompassOffset_DisableDeclCalc }, |
{ param_ComingHomeOrientation , &transform_ComingHomeOrientation }, |
// { param_LandingPulse, &transform_ValueACCZ}, |
{ param_EOF , NULL } // END - MUST BE THE LAST!! |
}; |
//############################################################################################# |
//# 3b. Transformations-Funktionen |
//############################################################################################# |
//--------------------------------------- |
// transform_CompassOffset_DisableDeclCalc() |
// |
// PARAMETER: |
// cmd : GETVALUE || SETVALUE |
// value : |
// newvalue: nur wenn cmd == SETVALUE |
// |
// Der true/false (Ja/Nein) Wert von param_CompassOffset_DisableDeclCalc |
// ist in dem Byte von param_CompassOffset in den Bits 7 & 8 einkodiert. |
//--------------------------------------- |
unsigned char transform_CompassOffset_DisableDeclCalc( uint8_t cmd, unsigned char value, unsigned char newvalue ) |
{ |
uint8_t bit7; |
uint8_t bit8; |
bit7 = ((value & 0x40) ? true : false); |
bit8 = ((value & 0x80) ? true : false); |
if( cmd == GETVALUE ) |
{ |
// Bit 8 == Bit 7: Disable dec. Calc AUS |
// Bit 8 != Bit 7: Disable dec. Calc AN |
value = ((bit8 == bit7) ? 0 : 1); |
} |
if( cmd == SETVALUE ) |
{ |
if( newvalue ) bit8 = !bit7; // Bit 8 != Bit 7: Disable dec. Calc AN |
else bit8 = bit7; // Bit 8 == Bit 7: Disable dec. Calc AUS |
if( bit8 ) value = (value | 0x80); // Bit 8 setzen |
else value = (value & (0x80 ^ 0xff)); // Bit 8 loeschen |
} |
//lcdx_printf_at_P( 0, 7, MINVERS, 0,0 , PSTR(" %d => %d "), value, newvalue ); |
return value; |
} |
//--------------------------------------- |
// transform_ComingHomeOrientation() |
// |
// PARAMETER: |
// cmd : GETVALUE || SETVALUE |
// value : |
// newvalue: nur wenn cmd == SETVALUE |
// |
// |
// ist in dem Byte von param_ServoCompInvert in den Bits 4 & 5 einkodiert, Bits 1-3 bleiben unverändert |
//--------------------------------------- |
uint8_t save =0; // globale Variable zum Sichern des alten Byte ServoCompInvert Wertes |
unsigned char transform_ComingHomeOrientation( uint8_t cmd, unsigned char value, unsigned char newvalue ) |
{ |
if( cmd == GETVALUE ) |
{ |
save = value; // altes "gemeinsames" Byte ServoCompInvert sichern |
value =((value & 0x18) >> 3); // CominghomeOrientation Bits nach rechts verschieben |
} |
if( cmd == SETVALUE ) |
{ |
value = ((newvalue << 3)|(save & 0x07)); // CominghomeOrientation Bits nach links verschieben und "alte" Bits 1-3 wieder dazufügen |
} |
//lcdx_printf_at_P( 0, 7, MINVERS, 0,0 , PSTR(" %d => %d "), value, newvalue ); |
return value; |
} |
// |
// |
////--------------------------------------- |
//// transform_ValueACCZ() |
//// |
//// PARAMETER: |
//// cmd : GETVALUE || SETVALUE |
//// value : |
//// newvalue: nur wenn cmd == SETVALUE |
//// |
//// |
//// ACC Z Landing Pulse Wert für die Anzeige x 4 |
////--------------------------------------- |
// |
// |
//unsigned char transform_ValueACCZ( uint16_t cmd, uint16_t value, unint16_t newvalue ) |
// |
//uint16_t save16 =0; // globale Variable zum Sichern des alten Byte ServoCompInvert Wertes |
// |
//{ |
// if( cmd == GETVALUE ) |
// { |
// save16 = value; // altes Byte ACC Z Landing Pulse sichern |
// value = (value * 4); // Wert x 4 |
// } |
// |
// if( cmd == SETVALUE ) |
// { |
// value = (newvalue / 4); // Neuer Wert ACC Z Landingpulse /4 |
// } |
// |
// |
// return value; |
//} |
//############################################################################################# |
//# 4a. interne Zugriffsfunktionen |
//############################################################################################# |
//-------------------------------------------------------------- |
// INTERN |
// |
// Parameter: |
// paramSubID: 'echter' Parameter zum Suchen in paramSubItem[] zum |
// nachfolgeden Parameter geben das Suchergebnis zurueck |
// und sind alle 0 wenn nichts gefunden wurde |
// |
// Rueckgabe: |
// true/false |
//-------------------------------------------------------------- |
unsigned char _paramset_getsubitemid( unsigned char paramSubID, unsigned char *paramID, unsigned char *subType, unsigned char *subIndex ) |
{ |
unsigned char id; |
unsigned char *p; |
unsigned char von_Revision; |
unsigned char bis_Revision; |
*paramID = 0; |
*subType = 0; |
*subIndex = 0; |
p = (unsigned char *) paramSubItem; |
while( true ) |
{ |
id = pgm_read_byte(p+0); // paramSubItem[..].paramSubID - die aktuelle paramSubID |
if( (id == paramSubID) ) // gefunden? |
{ |
von_Revision = pgm_read_byte(p+4); // paramSubItem[..].von_Revision; |
bis_Revision = pgm_read_byte(p+5); // paramSubItem[..].bis_Revision; |
// in aktueller FC-Revision vorhanden? |
if( von_Revision && (MKVersion.paramsetRevision < von_Revision) ) return false; // passt nicht zur aktuellen FC-Revision -> exit |
if( bis_Revision && (MKVersion.paramsetRevision > bis_Revision) ) return false; // passt nicht zur aktuellen FC-Revision -> exit |
*paramID = pgm_read_byte(p+1); // paramSubItem[..].paramID; |
*subType = pgm_read_byte(p+2); // paramSubItem[..].subType; |
*subIndex = pgm_read_byte(p+3); // paramSubItem[..].subIndex; |
return true; |
} |
if( id == param_EOF ) break; |
p += sizeof( paramSubItem_t ); |
} |
return false; |
} |
//-------------------------------------------------------------- |
// INTERN |
// |
// Parameter: |
// retItemSize: false = offset zurueckgeben (normaler Modus) |
// true = size von paramID zurueckgeben (fuer paramSize()) |
//-------------------------------------------------------------- |
unsigned char _paramset_getoffsetX( unsigned char paramID, unsigned char retItemSize, unsigned char *subType, unsigned char *subIndex ) |
{ |
unsigned char *p; |
unsigned char offset; |
unsigned char size; |
unsigned char this_paramID; |
unsigned char paramSubID; |
*subType = SUBTYPE_NO; // =0 |
*subIndex = 0; |
size = 0; |
offset = param_NOTFOUND; |
if( MKVersion.paramsetOK ) |
{ |
//----------------------- |
// eine paramSubID wurde uebergeben |
// -> ermittle zugehoerige paramID! |
//----------------------- |
if( (paramID >= param_SUBITEM) && (paramID != param_EOF) ) |
{ |
paramSubID = paramID; |
if( !_paramset_getsubitemid( paramSubID, ¶mID, subType, subIndex ) ) |
{ |
// keine paramID gefunden... |
if( retItemSize ) return size; // size == 0 |
else return offset; // offset == param_NOTFOUND |
} |
} |
//----------------------- |
// paramID suchen |
//----------------------- |
offset = 0; |
p = (unsigned char *) paramsetRevTable; |
while( true ) |
{ |
this_paramID = pgm_read_byte(p); // die aktuelle paramID |
size = pgm_read_byte(p+1); // size von paramID |
// gefunden oder Ende |
if( (this_paramID == paramID) || (this_paramID == param_EOF) ) |
{ |
break; |
} |
offset += size; |
p += sizeof( paramRevItem_t ); |
} |
// paramID nicht gefunden? |
if( (this_paramID == param_EOF) && (paramID != param_EOF) ) |
{ |
offset = param_NOTFOUND; |
size = 0; |
} |
} |
if( retItemSize ) return size; |
else return offset; |
} |
//-------------------------------------------------------------- |
// INTERN |
// |
// Parameter: |
// retItemSize == false: offset zurueckgeben (normaler Modus) |
// retItemSize == true : size von paramID zurueckgeben |
// --> fuer paramSize() |
//-------------------------------------------------------------- |
unsigned char _paramset_getoffset( unsigned char paramID, unsigned char retItemSize ) |
{ |
unsigned char subType; |
unsigned char subIndex; |
return _paramset_getoffsetX( paramID, retItemSize, &subType, &subIndex ); |
} |
//-------------------------------------------------------------- |
// INTERN |
// |
// sucht/prueft ob eine Transform-Funktion vorhanden ist |
// |
// RUECKGABE: |
// Index: (Num 0..n) auf paramTransform[] |
// => param_EOF (=255) wenn keine transform-Funktion vorhanden |
//-------------------------------------------------------------- |
unsigned char _paramset_gettransformIndex( unsigned char paramID ) |
{ |
unsigned char i; |
i = 0; |
while( paramTransform[i].paramID != param_EOF ) |
{ |
if( paramTransform[i].paramID == paramID ) return i; |
if( paramTransform[i].paramID == param_EOF ) return param_EOF; |
i++; |
} |
return param_EOF; |
} |
//############################################################################################# |
//# 4b. oeffentliche Zugriffsfunktionen fuer paramID / paramSubID Elemente |
//# |
//# Hier sind die Getter/Setter um auf die einzelnen Werte der paramset-Struktur zuzugreifen. |
//# Dazu muss vorher das richtige paramset initialisert worden sein! |
//# |
//# ACHTUNG! |
//# Fuer die Daten wird direkt auf den RX-Buffer vom PKT zugegriffen! |
//# ==> der Buffer darf NICHT durch andere Datenpakete bereits wieder ueberschrieben worden sein! |
//# |
//# Anmerkung: |
//# Das obige 'Achtung' koennte man aendern durch eine Kopie des RX-Buffers. Das verbraucht |
//# zusaetzlichen RAM-Speicher -> probieren wir es erstmal so... |
//############################################################################################# |
//-------------------------------------------------------------- |
// size = paramSize( paramID ) |
//-------------------------------------------------------------- |
unsigned char paramSize( unsigned char paramID ) |
{ |
return( _paramset_getoffset(paramID,true) ); // true = size (in Bytes) der paramID zurueckgeben (nicht offset) |
} |
//-------------------------------------------------------------- |
// exist = paramExist( paramID ) |
// |
// Rueckgabe: |
// true : die paramID existiert im aktuellen paramset |
// false : die paramID existiert nicht |
//-------------------------------------------------------------- |
unsigned char paramExist( unsigned char paramID ) |
{ |
return( (_paramset_getoffset(paramID,true) != 0) ); // true = size (in Bytes) der paramID zurueckgeben (nicht offset) |
} |
//-------------------------------------------------------------- |
// pointer = paramGet_p( paramID ) |
// |
// ACHTUNG! Nicht faehig fuer Transform! |
// |
// RUECKGABE: |
// pointer direkt auf~ein Byte im Parameterset |
// (paramSubID nicht moeglich!) |
//-------------------------------------------------------------- |
unsigned char *paramGet_p( unsigned char paramID ) |
{ |
unsigned char offset; |
offset = _paramset_getoffset( paramID, false ); // false = offset zurueckgeben |
if( offset != param_NOTFOUND ) |
{ |
return( (unsigned char *) (mkparamset + offset) ); // Rueckgabe: Pointer auf die Daten |
} |
return 0; |
} |
//-------------------------------------------------------------- |
// value = paramGet( paramID ) |
// |
// holt den Wert von paramID. paramSubID's werden dabei |
// unterstuetzt (Bit- und Bytefelder). |
// |
// Bei Bit-Feldern (z.B. GlobalConfig3) wird eine enstprechende |
// Bit-Maskierung automatisch durchgefuehrt |
// Ergebnis: true (=1) oder false (=0)false (=0) |
// |
// Bei Byte-Feldern (z.B. Kanalbelegung) wird der Wert des |
// entsprechenden Byte's zurueckgegeben |
// |
// Hinweis: anhand des Rueckgabewertes kann nicht ueberprueft |
// werden ob die paramID gefunden wurde bzw. existiert! |
// -> ggf. erst mit paramExist() pruefen ob der Wert existiert! |
//-------------------------------------------------------------- |
unsigned char paramGet( unsigned char paramID ) |
{ |
unsigned char offset; |
unsigned char subType; |
unsigned char subIndex; |
unsigned char value; |
unsigned char transformIdx; |
offset = _paramset_getoffsetX( paramID, false, &subType, &subIndex ); // false = offset zurueckgeben |
if( offset == param_NOTFOUND ) return false; // paramID nicht gefunden / nicht unterstuetzt |
value = (unsigned char) *(mkparamset + offset); // offset Inhalt lesen (paramID) |
//------------------- |
// subIndex: Bit |
//------------------- |
if( subType == SUBTYPE_BIT ) |
{ |
value = ((value & subIndex) ? true : false); // Rueckgabe: true/false des gewaehlten Bit's |
} |
//------------------- |
// subIndex: Bit negiert |
//------------------- |
if( subType == SUBTYPE_BITN ) |
{ |
value = ((value & subIndex) ? false : true); // Rueckgabe: true/false des gewaehlten Bit's (negiert) |
} |
//------------------- |
// subIndex: Byte |
//------------------- |
if( subType == SUBTYPE_BYTE ) |
{ |
value = (unsigned char) *(mkparamset + (offset+subIndex)); // subIndex Inhalt lesen |
} |
//------------------- |
// Transform |
//------------------- |
transformIdx = _paramset_gettransformIndex( paramID ); |
if( transformIdx != param_EOF ) |
{ |
value = paramTransform[transformIdx].transformfunc( GETVALUE, value, value); |
} |
return value; // ubyte zurueckgeben |
} |
//-------------------------------------------------------------- |
//-------------------------------------------------------------- |
unsigned char paramSet( unsigned char paramID, unsigned char newvalue ) |
{ |
unsigned char offset; |
unsigned char subOffset = 0; |
unsigned char subType; |
unsigned char subIndex; |
unsigned char byte; |
unsigned char value; |
unsigned char transformIdx; |
value = newvalue; |
offset = _paramset_getoffsetX( paramID, false, &subType, &subIndex ); // false = offset zurueckgeben |
if( offset == param_NOTFOUND ) return false; // paramID nicht gefunden / nicht unterstuetzt |
//------------------- |
// subIndex: Bit |
//------------------- |
if( (subType == SUBTYPE_BIT) || (subType == SUBTYPE_BITN) ) |
{ |
byte = (unsigned char) *(mkparamset + offset); // offset Inhalt lesen |
if( subType == SUBTYPE_BITN ) // SUBTYPE_BITN = negiertes BIT |
value = (value ? false : true); // negieren |
if(value) byte = byte | subIndex; // Bit setzen |
else byte = byte & (subIndex ^ 0xff); // Bit loeschen |
value = byte; // neues Value fuer das gesamte Byte (mit eingerechnetem BIT) |
} |
//------------------- |
// subIndex: Byte |
//------------------- |
if( subType == SUBTYPE_BYTE ) |
{ |
subOffset = subIndex; // das 'verschobene' Byte (hier nur den Offset verschieben) |
} |
//------------------- |
// Transform |
//------------------- |
transformIdx = _paramset_gettransformIndex( paramID ); |
if( transformIdx != param_EOF ) |
{ |
byte = (unsigned char) *(mkparamset + offset + subOffset); // offset Inhalt lesen |
value = paramTransform[transformIdx].transformfunc( SETVALUE, byte, newvalue); |
} |
//------------------- |
// Byte speichern |
//------------------- |
*(mkparamset + offset + subOffset) = value; |
return true; // OK |
} |
//############################################################################################# |
//# 4c. oeffentliche Zugriffsfunktionen fuer das gesamte Paramset (Int usw.) |
//# |
//# Init und Abfrage der Groesse in Bytes ddes gesamten Paramset's |
//############################################################################################# |
//-------------------------------------------------------------- |
// ok = paramsetInit( *pData ) |
// |
// Ermittelt zu einer empfangenen Revision die passende paramset-Tabelle |
// und setzt entsprechende Werte in MKVersion |
// |
// Wird von MK_load_setting() aufgerufen nach dem Einlesen der |
// MK-Parameter (Setting-Request 'q') |
// |
// Parameter: |
// *pData : Zeiger direkt auf den RX-Buffer des PKT |
// |
// Rueckgabe: |
// true : OK - Paramset ist initialisert; die aktuelle FC-Revision |
// steht in MKVersion.paramsetRevision |
// false : Fehler - keine passende paramset-Tabelle gefunden |
//-------------------------------------------------------------- |
unsigned char paramsetInit( unsigned char *pData ) |
{ |
unsigned char i; |
unsigned char *p; |
paramsetRevTable = 0; |
mkparamset = 0; |
MKVersion.paramsetOK = false; |
MKVersion.paramsetRevision = 0; |
MKVersion.mksetting = 0; |
MKVersion.mksettingName[0] = 0; |
//-------------------------------------------------- |
// pData == 0 -> nur 'reset' der Daten |
//-------------------------------------------------- |
if( pData == 0 ) |
{ |
return 0; |
} |
//-------------------------------------------------- |
// diese beiden Werte koennen in jedem Fall gesetzt werden |
// unabhaengig ob das gefundene Parameterset vom PKT |
// unterstuetzt wird oder nicht |
//-------------------------------------------------- |
MKVersion.mksetting = (unsigned char) *pData; |
MKVersion.paramsetRevision = (unsigned char) *(pData + 1); |
//-------------------------------------------------- |
// FC-Revision in paramsetRevMap suchen |
//-------------------------------------------------- |
i = 0; |
while( true ) |
{ |
if( (paramsetRevMap[i].Revision == MKVersion.paramsetRevision) || (paramsetRevMap[i].Revision == MAPEOF) ) |
break; |
i++; |
} |
//-------------------------------------- |
// Revision nicht gefunden -> return 0 |
//-------------------------------------- |
if( paramsetRevMap[i].Revision == MAPEOF ) |
{ |
return 0; |
} |
//-------------------------------------- |
// Revision gefunden |
//-------------------------------------- |
mkparamset = (unsigned char *) (pData + 1); |
paramsetRevTable = (paramRevItem_t *) paramsetRevMap[i].RevisionTable; |
MKVersion.paramsetOK = true; |
//-------------------------------------- |
// den aktuellen Setting-Namen kopieren |
// wird u.a. vom OSD verwendet |
//-------------------------------------- |
p = paramGet_p( param_Name ); |
if( p ) memcpy( MKVersion.mksettingName, p, 12 ); |
return MKVersion.paramsetOK; |
} |
//-------------------------------------------------------------- |
// size = paramsetSize() |
// |
// Gibt die Groesse des gesamten aktuellen Parameterset's |
// zurueck. Fuer Revision 098 z.B. 130 = 130 Bytes. |
// |
// Rueckgabe: |
// =0 : Fehler; nicht unterstuetzte FC-Revision oder nicht |
// initialisiert |
//-------------------------------------------------------------- |
unsigned char paramsetSize( void ) |
{ |
if( MKVersion.paramsetOK ) |
return _paramset_getoffset( param_EOF, false ); // false = offset zurueckgeben; der offset von param_EOF entspricht der Groesse des paramSet's! |
else |
return 0; |
} |
//############################################################################################# |
//# x. TEST / DEBUG |
//############################################################################################# |
//-------------------------------------------------------------- |
// TEST / DEBUG |
//-------------------------------------------------------------- |
#ifdef DEBUG_PARAMSET |
void paramsetDEBUG( void ) |
{ |
lcd_cls(); |
//lcdx_printp_at( 0, 0, PSTR("NEW PARAM TEST..."), MNORMAL, 0,0); |
lcd_printp_at(12, 7, strGet(ENDE), MNORMAL); // Keyline |
//memcpy( &MKVersion.NCVersion, (Version_t *) (pRxData), sizeof(MKVersion_t) ); |
/* |
typedef struct |
{ |
Version_t NCVersion; // |
Version_t FCVersion; // |
unsigned char paramsetRevision; // von der FC |
unsigned char paramsetOk; // true wenn Revision in paramset.c vorhanden |
} MKVersion_t; |
//------------------------------------- |
// zur Orientierung: Version_t |
//------------------------------------- |
//typedef struct |
//{ |
// unsigned char SWMajor; |
// unsigned char SWMinor; |
// unsigned char ProtoMajor; |
// unsigned char ProtoMinor; |
// unsigned char SWPatch; |
// unsigned char HardwareError[5]; |
//} __attribute__((packed)) Version_t; |
*/ |
//setting = MK_Setting_load( 0xff, 20); // aktuelles MK Setting ermitteln |
MK_Setting_load( 0xff, 20); // aktuelles MK Setting ermitteln |
//---------------------------------- |
// Anzeige: FC/NC Version |
//---------------------------------- |
lcdx_printp_at( 0, 0, PSTR("FC:"), MNORMAL, 0,0); |
MKVersion_print_at( 3, 0, FC, MNORMAL, 0,0); |
lcdx_printp_at( 13, 0, PSTR("NC:"), MNORMAL, 0,0); |
MKVersion_print_at( 16, 0, NC, MNORMAL, 0,0); |
//---------------------------------- |
// Anzeige: FC Revision |
//---------------------------------- |
lcd_printf_at_P( 0, 1, MNORMAL, PSTR("Rev: %03u"), MKVersion.paramsetRevision ); |
if( MKVersion.paramsetOK ) |
lcdx_printp_at( 8, 1, PSTR(" ok!"), MINVERS, 0,0); |
else |
lcdx_printp_at( 8, 1, PSTR(" err"), MINVERS, 0,0); |
// Size von paramset |
lcd_printf_at_P( 13, 1, MNORMAL, PSTR("Size=%3u"), paramsetSize() ); |
//---------------------------------- |
// Anzeige: aktuelles MK Setting |
//---------------------------------- |
//lcd_printf_at_P( 0, 2, MNORMAL, PSTR("Set:%2u %s"), MKVersion.mksetting, MKVersion.mksettingName ); |
/* |
unsigned char *p; |
p = paramGet_p( param_Name ); |
if( p ) |
{ |
lcd_printf_at_P( 0, 3, MNORMAL, PSTR("%c"), *p ); |
p++; |
lcd_printf_at_P( 1, 3, MNORMAL, PSTR("%c"), *p ); |
p++; |
lcd_printf_at_P( 2, 3, MNORMAL, PSTR("%c"), *p ); |
} |
*/ |
//---------------------------------- |
//---------------------------------- |
/* |
lcd_printf_at_P( 0, 3, MNORMAL, PSTR("Size Name:%3u"), paramSize(param_Name) ); |
lcd_printf_at_P( 0, 5, MNORMAL, PSTR("%c"), paramGet_UByte( param_Name ) ); |
paramSet_UByte( param_Name, 'x' ); |
lcd_printf_at_P( 3, 5, MNORMAL, PSTR("%c"), paramGet_UByte( param_Name ) ); |
*/ |
/* |
uint8_t v; |
v = MKVersion_Cmp( MKVersion.FCVer, 2,0,'f' ); |
lcd_printf_at_P( 0, 4, MNORMAL, PSTR("v:%3u"), v ); |
*/ |
/* |
unsigned char paramID = 1; |
unsigned char paramSubType = 1; |
unsigned char paramSubIndex =1; |
_paramset_getsubitemid( param_GlobalConfig_DrehratenBegrenzer, ¶mID, ¶mSubType, ¶mSubIndex ); |
//lcd_printf_at_P( 0, 4, MNORMAL, PSTR("ID:%u T:%u I:%u"), paramID, paramSubType, paramSubIndex ); |
*/ |
//#define param_ExtraConfig_NoRcOffBeeping 204 // SUBTYPE_BIT - mk-data-structs.h: CFG_NO_RCOFF_BEEPING 0x10 |
//#define param_ExtraConfig_GpsAid 205 // SUBTYPE_BIT - mk-data-structs.h: CFG_GPS_AID 0x20 |
//#define param_ExtraConfig_LearnableCarefree 206 // SUBTYPE_BIT - mk-data-structs.h: CFG_LEARNABLE_CAREFREE 0x40 |
//#define param_ExtraConfig_IgnoreMagErrAtStartup 207 // SUBTYPE_BIT - mk-data-structs.h: CFG_IGNORE_MAG_ERR_AT_STARTUP 0x80 |
//#define param_GlobalConfig3_NoSdCardNoStart 220 // SUBTYPE_BIT - mk-data-structs.h: CFG3_NO_SDCARD_NO_START 0x01 |
//#define param_GlobalConfig3_NoGpsFixNoStart 224 // SUBTYPE_BIT - mk-data-structs.h: CFG3_NO_GPSFIX_NO_START 0x10 |
//paramGet( unsigned char paramID ); |
//lcd_printf_at_P( 0, 5, MNORMAL, PSTR("%u %u %u"), paramGet(param_ExtraConfig_NoRcOffBeeping), paramGet(param_GlobalConfig3_NoSdCardNoStart), paramGet(param_GlobalConfig3_NoGpsFixNoStart) ); |
//#define param_Kanalbelegung_Gas 242 // SUBTYPE_BYTE - Kanalbelegung [2] (unsigned char) |
//#define param_Kanalbelegung_Gear 243 // SUBTYPE_BYTE - Kanalbelegung [3] (unsigned char) |
//#define param_Kanalbelegung_Nick 240 // SUBTYPE_BYTE - Kanalbelegung [0] (unsigned char) |
//#define param_Kanalbelegung_Roll 241 // SUBTYPE_BYTE - Kanalbelegung [1] (unsigned char) |
// lcd_printf_at_P( 0, 4, MNORMAL, PSTR("%u %u %u %u"), paramGet(param_Kanalbelegung_Gas), paramGet(param_Kanalbelegung_Gear), paramGet(param_Kanalbelegung_Nick), paramGet(param_Kanalbelegung_Roll) ); |
// lcd_printf_at_P( 0, 5, MNORMAL, PSTR("%u"), paramGet(param_Kanalbelegung) ); |
/* |
lcd_printf_at_P( 0, 4, MNORMAL, PSTR("%u %u %u"), paramGet(param_ExtraConfig_NoRcOffBeeping), paramGet(param_GlobalConfig3_NoSdCardNoStart), paramGet(param_GlobalConfig3_NoGpsFixNoStart) ); |
unsigned char v; |
v = paramGet(param_GlobalConfig3_NoSdCardNoStart); |
v = (v ? false : true); |
paramSet(param_GlobalConfig3_NoSdCardNoStart, v); |
lcd_printf_at_P( 0, 5, MNORMAL, PSTR("%u %u %u"), paramGet(param_ExtraConfig_NoRcOffBeeping), paramGet(param_GlobalConfig3_NoSdCardNoStart), paramGet(param_GlobalConfig3_NoGpsFixNoStart) ); |
v = paramGet(param_GlobalConfig3_NoSdCardNoStart); |
v = (v ? false : true); |
paramSet(param_GlobalConfig3_NoSdCardNoStart, v); |
lcd_printf_at_P( 0, 6, MNORMAL, PSTR("%u %u %u"), paramGet(param_ExtraConfig_NoRcOffBeeping), paramGet(param_GlobalConfig3_NoSdCardNoStart), paramGet(param_GlobalConfig3_NoGpsFixNoStart) ); |
*/ |
/* |
lcd_printf_at_P( 0, 3, MNORMAL, PSTR("%u %u"), |
paramGet( param_Kanalbelegung_Gas ), |
paramGet( param_Kanalbelegung_Gear ) |
); |
lcd_printf_at_P( 0, 4, MNORMAL, PSTR("%u %u %u %u"), |
paramGet( param_Kanalbelegung_Poti1 ), |
paramGet( param_Kanalbelegung_Poti2 ), |
paramGet( param_Kanalbelegung_Poti3 ), |
paramGet( param_Kanalbelegung_Poti4 ) |
); |
lcd_printf_at_P( 0, 5, MNORMAL, PSTR("%u %u %u %u"), |
paramGet( param_Kanalbelegung_Poti5 ), |
paramGet( param_Kanalbelegung_Poti6 ), |
paramGet( param_Kanalbelegung_Poti7 ), |
paramGet( param_Kanalbelegung_Poti8 ) |
); |
*/ |
// lcd_printf_at_P( 0, 3, MNORMAL, PSTR("HR:%u H-Limit:%u"), |
// paramGet( param_GlobalConfig_HoehenRegelung ), |
// paramGet( param_ExtraConfig_HeightLimit ) |
// ); |
// lcd_printf_at_P( 0, 5, MNORMAL, PSTR("Auto-S-L:%u"), |
// paramGet( param_StartLandChannel ) |
// ); |
lcd_printf_at_P( 0, 4, MNORMAL, PSTR("CH Orientation:%x"), paramGet( param_ServoCompInvert)); |
lcd_printf_at_P( 0, 5, MNORMAL, PSTR("ACC Land pulse:%x"), paramGet( param_LandingPulse)); |
; |
while( true ) |
{ |
PKT_CtrlHook(); |
if (get_key_press (1 << KEY_ESC)) |
{ |
break; |
} |
} |
} |
#endif // #ifdef DEBUG_PARAMSET |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/Transportables_Koptertool/PKT/trunk/mksettings/paramset.h |
---|
0,0 → 1,357 |
/***************************************************************************** |
* Copyright (C) 2008 Thomas Kaiser, thomas@ft-fanpage.de * |
* Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net * |
* Copyright (C) 2012 Christian "Cebra" Brandtner, brandtner@brandtner.net * |
* Copyright (C) 2012 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 paramset.h |
//# |
//# 16.07.2015 Cebra (PKT385a) |
//# - add: #define param_SingleWpControlChannel (FC2.11a) |
//# #define param_MenuKeyChannel (FC2.11a) |
//# |
//# 09.04.2015 Cebra |
//# - add: #define param_ServoNickFailsave, #define param_ServoRollFailsave, #define param_Servo3Failsave |
//# #define param_Servo4Failsave, #define param_Servo5Failsave |
//# |
//# 26.01.2015 Cebra |
//# - add: #define param_ComingHomeOrientation 241 ab FC 209a im Wert ServoCompInvert, Bit4 + Bit5 |
//# |
//# 26.09.2014 Cebra |
//# - add: paramID fuer Rev.103 (FC 2.07f) |
//# -> param_Hoehe_TiltCompensation |
//# |
//# 08.04.2014 OG |
//# - add: paramID's fuer Rev.102 (FC 2.05g) |
//# -> param_NaviMaxFlyingRange, param_NaviDescendRange |
//# |
//# 06.04.2014 OG |
//# - add: paramID's fuer Rev.101 |
//# -> param_Servo3OnValue, param_Servo3OffValue |
//# -> param_Servo4OnValue, param_Servo4OffValue |
//# |
//# 28.03.2014 OG |
//# - add: paramID's fuer Rev.100 |
//# -> param_AutoPhotoDistance, param_AutoPhotoAtitudes |
//# -> param_SingleWpSpeed |
//# |
//# 26.03.2014 OG |
//# - add: param_CompassOffset_DisableDeclCalc (Sub-Item) |
//# |
//# 27.02.2014 OG |
//# - del: paramID's fuer FC-Revisionen < 95 entfernt |
//# |
//# 27.02.2014 OG |
//# - chg: paramGet(), paramSet() - Unterstuetzen auch Bit- und Bytefelder |
//# |
//# 26.02.2014 OG |
//# - add: defines fuer die Unterstuetzung von paramSubID's ergaenzt |
//# paramSubItems bieten direkten Zugriff auf Bit- und Bytefelder |
//# von paramID's - die paramSubItems wurde in die defines der |
//# paramID's integriert indem sie am Ende gelistet werden (>=160) |
//# - chg: paramsetTest() umbenannt zu paramsetDEBUG() |
//# |
//# 25.02.2014 OG |
//# - add: defines zu param_Kanalbelegung_xyz (240 bis 251) |
//# |
//# 14.02.2014 OG |
//# - add: diverse Zugriffsfunktionen fuer paramID's und paramSet's |
//# |
//# 05.02.2014 OG - NEU |
//############################################################################ |
#ifndef _PARAMSET_H |
#define _PARAMSET_H |
//--------------------------- |
// Typ einer paramSubID |
//--------------------------- |
#define SUBTYPE_NO 0 // keine paramSubID |
#define SUBTYPE_BIT 1 // Bit-Feld (z.B. param_GlobalConfig) |
#define SUBTYPE_BITN 2 // Bit-Feld (z.B. param_GlobalConfig) negiert! |
#define SUBTYPE_BYTE 3 // Byte-Feld (z.B. Kanalbelegung) |
//######################################################################################################################################################## |
//---------------------------------------------------------------------------------------- |
// Die Reihenfolge ist egal - aber(!) darauf achten das keine ID doppelt vergeben wird! |
// Wenn neue Feleder hinzukommen an das Ende (vor EOF - keine ID 255!) hinzufuegen! |
// Bitte die Datentypen im Kommentar notieren! |
// |
// -> paramID |
//---------------------------------------------------------------------------------------- |
#define param_Revision 1 // unsigned char |
#define param_Kanalbelegung 2 // unsigned char [12] GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3 |
#define param_GlobalConfig 3 // unsigned char 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv |
#define param_Hoehe_MinGas 4 // unsigned char Wert : 0-100 |
#define param_Luftdruck_D 5 // unsigned char Wert : 0-250 |
#define param_HoeheChannel 6 // unsigned char Wert : 0-32 |
#define param_Hoehe_P 7 // unsigned char Wert : 0-32 |
#define param_Hoehe_Verstaerkung 8 // unsigned char Wert : 0-50 |
#define param_Hoehe_ACC_Wirkung 9 // unsigned char Wert : 0-250 |
#define param_Hoehe_HoverBand 10 // unsigned char Wert : 0-250 |
#define param_Hoehe_GPS_Z 11 // unsigned char Wert : 0-250 |
#define param_Hoehe_StickNeutralPoint 12 // unsigned char Wert : 0-250 |
#define param_Stick_P 13 // unsigned char WERT : 0..20 |
#define param_Stick_D 14 // unsigned char WERT : 0..20 |
#define param_StickGier_P 15 // unsigned char Wert : |
#define param_Gas_Min 16 // unsigned char Wert : 0-32 |
#define param_Gas_Max 17 // unsigned char Wert : 33-250 |
#define param_GyroAccFaktor 18 // unsigned char Wert : 1-64 |
#define param_KompassWirkung 19 // unsigned char Wert : 0-32 |
#define param_Gyro_P 20 // unsigned char Wert : 10-250 |
#define param_Gyro_I 21 // unsigned char Wert : 0-250 |
#define param_Gyro_D 22 // unsigned char Wert : 0-250 |
#define param_Gyro_Gier_P 23 // unsigned char Wert : 10-250 |
#define param_Gyro_Gier_I 24 // unsigned char Wert : 0-250 |
#define param_Gyro_Stability 25 // unsigned char Wert : 0-16 |
#define param_UnterspannungsWarnung 26 // unsigned char Wert : 0-250 |
#define param_NotGas 27 // unsigned char Wert : 0-250 //Gaswert bei Empängsverlust |
#define param_NotGasZeit 28 // unsigned char Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen |
#define param_Receiver 29 // unsigned char 0= Summensignal, 1= Spektrum, 2 =Jeti, 3=ACT DSL, 4=ACT S3D |
#define param_I_Faktor 30 // unsigned char Wert : 0-250 |
#define param_UserParam1 31 // unsigned char Wert : 0-250 |
#define param_UserParam2 32 // unsigned char Wert : 0-250 |
#define param_UserParam3 33 // unsigned char Wert : 0-250 |
#define param_UserParam4 34 // unsigned char Wert : 0-250 |
#define param_ServoNickControl 35 // unsigned char Wert : 0-250 // Stellung des Servos |
#define param_ServoNickComp 36 // unsigned char Wert : 0-250 // Einfluss Gyro/Servo |
#define param_ServoNickMin 37 // unsigned char Wert : 0-250 // Anschlag |
#define param_ServoNickMax 38 // unsigned char Wert : 0-250 // Anschlag |
#define param_ServoRollControl 39 // unsigned char Wert : 0-250 // Stellung des Servos |
#define param_ServoRollComp 40 // unsigned char Wert : 0-250 |
#define param_ServoRollMin 41 // unsigned char Wert : 0-250 |
#define param_ServoRollMax 42 // unsigned char Wert : 0-250 |
#define param_ServoNickRefresh 43 // unsigned char Speed of the Servo |
#define param_ServoManualControlSpeed 44 // unsigned char |
#define param_CamOrientation 45 // unsigned char |
#define param_Servo3 46 // unsigned char Value or mapping of the Servo Output |
#define param_Servo4 47 // unsigned char Value or mapping of the Servo Output |
#define param_Servo5 48 // unsigned char Value or mapping of the Servo Output |
#define param_LoopGasLimit 49 // unsigned char Wert: 0-250 max. Gas während Looping |
#define param_LoopThreshold 50 // unsigned char Wert: 0-250 Schwelle für Stickausschlag |
#define param_LoopHysterese 51 // unsigned char Wert: 0-250 Hysterese für Stickausschlag |
#define param_AchsKopplung1 52 // unsigned char Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick koppelt (NickRollMitkopplung) |
#define param_AchsKopplung2 53 // unsigned char Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
#define param_CouplingYawCorrection 54 // unsigned char Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
#define param_WinkelUmschlagNick 55 // unsigned char Wert: 0-250 180°-Punkt |
#define param_WinkelUmschlagRoll 56 // unsigned char Wert: 0-250 180°-Punkt |
#define param_GyroAccAbgleich 57 // unsigned char 1/k (Koppel_ACC_Wirkung) |
#define param_Driftkomp 58 // unsigned char |
#define param_DynamicStability 59 // unsigned char |
#define param_UserParam5 60 // unsigned char Wert : 0-250 |
#define param_UserParam6 61 // unsigned char Wert : 0-250 |
#define param_UserParam7 62 // unsigned char Wert : 0-250 |
#define param_UserParam8 63 // unsigned char Wert : 0-250 |
#define param_J16Bitmask 64 // unsigned char for the J16 Output |
#define param_J16Timing 65 // unsigned char for the J16 Output |
#define param_J17Bitmask 66 // unsigned char for the J17 Output |
#define param_J17Timing 67 // unsigned char for the J17 Output |
#define param_WARN_J16_Bitmask 68 // unsigned char for the J16 Output |
#define param_WARN_J17_Bitmask 69 // unsigned char for the J17 Output |
#define param_NaviOut1Parameter 70 // unsigned char for the J16 Output |
#define param_NaviGpsModeChannel 71 // unsigned char Parameters for the Naviboard |
#define param_NaviGpsGain 72 // unsigned char |
#define param_NaviGpsP 73 // unsigned char |
#define param_NaviGpsI 74 // unsigned char |
#define param_NaviGpsD 75 // unsigned char |
#define param_NaviGpsPLimit 76 // unsigned char |
#define param_NaviGpsILimit 77 // unsigned char |
#define param_NaviGpsDLimit 78 // unsigned char |
#define param_NaviGpsA 79 // unsigned char |
#define param_NaviGpsMinSat 80 // unsigned char |
#define param_NaviStickThreshold 81 // unsigned char |
#define param_NaviWindCorrection 82 // unsigned char |
#define param_NaviAccCompensation 83 // unsigned char New since 0.86 -> was: SpeedCompensation |
#define param_NaviOperatingRadius 84 // unsigned char bis Rev. 101 |
#define param_NaviAngleLimitation 85 // unsigned char |
#define param_NaviPH_LoginTime 86 // unsigned char |
#define param_ExternalControl 87 // unsigned char for serial Control |
#define param_OrientationAngle 88 // unsigned char Where is the front-direction? |
#define param_CareFreeChannel 89 // unsigned char switch for CareFree |
#define param_MotorSafetySwitch 90 // unsigned char |
#define param_MotorSmooth 91 // unsigned char |
#define param_ComingHomeAltitude 92 // unsigned char |
#define param_FailSafeTime 93 // unsigned char |
#define param_MaxAltitude 94 // unsigned char |
#define param_FailsafeChannel 95 // unsigned char if the value of this channel is > 100, the MK reports "RC-Lost" |
#define param_ServoFilterNick 96 // unsigned char |
#define param_ServoFilterRoll 97 // unsigned char |
#define param_StartLandChannel 98 // unsigned char |
#define param_LandingSpeed 99 // unsigned char |
#define param_CompassOffset 100 // unsigned char |
#define param_AutoLandingVoltage 101 // unsigned char in 0,1V 0 -> disabled |
#define param_ComingHomeVoltage 102 // unsigned char in 0,1V 0 -> disabled |
#define param_BitConfig 103 // unsigned char (war Loop-Cfg) Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
#define param_ServoCompInvert 104 // unsigned char 0x01 = Nick, 0x02 = Roll, 0x04 = relative moving // WICHTIG!!! am Ende lassen |
#define param_ExtraConfig 105 // unsigned char bitcodiert |
#define param_GlobalConfig3 106 // unsigned char bitcodiert |
#define param_Name 107 // char [12] Name vom Parameterset |
#define param_crc 108 // unsigned char |
#define param_AutoPhotoDistance 109 // unsigned char ab Rev. 100 (ersetzt NaviOut1Parameter) // Auto Photo |
#define param_AutoPhotoAtitudes 110 // unsigned char ab Rev. 100 |
#define param_SingleWpSpeed 111 // unsigned char ab Rev. 100 |
#define param_Servo3OnValue 112 // unsigned char ab Rev. 101 (FC 2.05f) |
#define param_Servo3OffValue 113 // unsigned char ab Rev. 101 (FC 2.05f) |
#define param_Servo4OnValue 114 // unsigned char ab Rev. 101 (FC 2.05f) |
#define param_Servo4OffValue 115 // unsigned char ab Rev. 101 (FC 2.05f) |
#define param_NaviMaxFlyingRange 116 // unsigned char ab Rev. 102 (FC 2.05g) (ersetzt NaviOperatingRadius) // in 10m |
#define param_NaviDescendRange 117 // unsigned char ab Rev. 102 (FC 2.05g) |
#define param_Hoehe_TiltCompensation 118 // unsigned char ab Rev. 103 (FC 2.07f) |
#define param_LandingPulse 119 // unsigned char ab Rev. 104 (FC 2.09d) |
#define param_ServoFS_Pos 120 // unsigned char [5] ServoNickFailsave[0],ServoRollFailsave[1],Servo3Failsave[2],Servo4Failsave[3],Servo5Failsave[4] ab Rev. 105 (FC 2.09i) |
#define param_SingleWpControlChannel 121 // unsigned char ab Rev. 106 (FC 2.11a) |
#define param_MenuKeyChannel 122 // unsigned char ab Rev. 106 (FC 2.11a) |
//------- ^^^ HIER NEUE paramID's einfuegen! ^^^ |
// ab hier sind Sub-Items zu einer paramID definiert |
// - einige paramID's werden nochmals untergliedert in Bit- oder Bytefelder |
// - die Zuordnung der Sub-Items zu paramID's erfolgt in paramset.c |
#define param_SUBITEM 160 // <- ab diesem Wert handelt es sich um ein paramSubID und nicht um eine paramID |
#define param_Kanalbelegung_Nick 170 // SUBTYPE_BYTE - Kanalbelegung [0] (unsigned char) |
#define param_Kanalbelegung_Roll 171 // SUBTYPE_BYTE - Kanalbelegung [1] (unsigned char) |
#define param_Kanalbelegung_Gas 172 // SUBTYPE_BYTE - Kanalbelegung [2] (unsigned char) |
#define param_Kanalbelegung_Gear 173 // SUBTYPE_BYTE - Kanalbelegung [3] (unsigned char) |
#define param_Kanalbelegung_Poti1 174 // SUBTYPE_BYTE - Kanalbelegung [4] (unsigned char) |
#define param_Kanalbelegung_Poti2 175 // SUBTYPE_BYTE - Kanalbelegung [5] (unsigned char) |
#define param_Kanalbelegung_Poti3 176 // SUBTYPE_BYTE - Kanalbelegung [6] (unsigned char) |
#define param_Kanalbelegung_Poti4 177 // SUBTYPE_BYTE - Kanalbelegung [7] (unsigned char) |
#define param_Kanalbelegung_Poti5 178 // SUBTYPE_BYTE - Kanalbelegung [8] (unsigned char) |
#define param_Kanalbelegung_Poti6 179 // SUBTYPE_BYTE - Kanalbelegung [9] (unsigned char) |
#define param_Kanalbelegung_Poti7 180 // SUBTYPE_BYTE - Kanalbelegung [10] (unsigned char) |
#define param_Kanalbelegung_Poti8 181 // SUBTYPE_BYTE - Kanalbelegung [11] (unsigned char) |
#define param_ServoCompInvert_SERVO_NICK_INV 190 // SUBTYPE_BIT - mk-data-structs.h: SVNick 0x01 |
#define param_ServoCompInvert_SERVO_ROLL_INV 191 // SUBTYPE_BIT - mk-data-structs.h: SVRoll 0x02 |
#define param_ServoCompInvert_SERVO_RELATIVE 192 // SUBTYPE_BIT - mk-data-structs.h: SVRelMov 0x04 |
#define param_ExtraConfig_HeightLimit 200 // SUBTYPE_BIT - mk-data-structs.h: CFG2_HEIGHT_LIMIT 0x01 |
#define param_ExtraConfig_HeightVario 201 // SUBTYPE_BIT - mk-data-structs.h: CFG2_HEIGHT_LIMIT 0x01 ist negiert zu param_ExtraConfig_HeightLimit |
#define param_ExtraConfig_VarioBeep 202 // SUBTYPE_BIT - mk-data-structs.h: CFG2_VARIO_BEEP 0x02 |
#define param_ExtraConfig_SensitiveRc 203 // SUBTYPE_BIT - mk-data-structs.h: CFG_SENSITIVE_RC 0x04 |
#define param_ExtraConfig_33vReference 204 // SUBTYPE_BIT - mk-data-structs.h: CFG_3_3V_REFERENCE 0x08 |
#define param_ExtraConfig_NoRcOffBeeping 205 // SUBTYPE_BIT - mk-data-structs.h: CFG_NO_RCOFF_BEEPING 0x10 |
#define param_ExtraConfig_GpsAid 206 // SUBTYPE_BIT - mk-data-structs.h: CFG_GPS_AID 0x20 |
#define param_ExtraConfig_LearnableCarefree 207 // SUBTYPE_BIT - mk-data-structs.h: CFG_LEARNABLE_CAREFREE 0x40 |
#define param_ExtraConfig_IgnoreMagErrAtStartup 208 // SUBTYPE_BIT - mk-data-structs.h: CFG_IGNORE_MAG_ERR_AT_STARTUP 0x80 |
#define param_BitConfig_LoopOben 210 // SUBTYPE_BIT - mk-data-structs.h: CFG_LOOP_OBEN 0x01 |
#define param_BitConfig_LoopUnten 211 // SUBTYPE_BIT - mk-data-structs.h: CFG_LOOP_UNTEN 0x02 |
#define param_BitConfig_LoopLinks 212 // SUBTYPE_BIT - mk-data-structs.h: CFG_LOOP_LINKS 0x04 |
#define param_BitConfig_LoopRechts 213 // SUBTYPE_BIT - mk-data-structs.h: CFG_LOOP_RECHTS 0x08 |
#define param_BitConfig_MotorBlink1 214 // SUBTYPE_BIT - mk-data-structs.h: CFG_MOTOR_BLINK1 0x10 |
#define param_BitConfig_MotorOffLed1 215 // SUBTYPE_BIT - mk-data-structs.h: CFG_MOTOR_OFF_LED1 0x20 |
#define param_BitConfig_MotorOffLed2 216 // SUBTYPE_BIT - mk-data-structs.h: CFG_MOTOR_OFF_LED2 0x40 |
#define param_BitConfig_MotorBlink2 217 // SUBTYPE_BIT - mk-data-structs.h: CFG_MOTOR_BLINK2 0x80 |
#define param_GlobalConfig3_NoSdCardNoStart 220 // SUBTYPE_BIT - mk-data-structs.h: CFG3_NO_SDCARD_NO_START 0x01 |
#define param_GlobalConfig3_DphMaxRadius 221 // SUBTYPE_BIT - mk-data-structs.h: CFG3_DPH_MAX_RADIUS 0x02 nur bis Rev 101 |
#define param_GlobalConfig3_VarioFailsafe 222 // SUBTYPE_BIT - mk-data-structs.h: CFG3_VARIO_FAILSAFE 0x04 |
#define param_GlobalConfig3_MotorSwitchMode 223 // SUBTYPE_BIT - mk-data-structs.h: CFG3_MOTOR_SWITCH_MODE 0x08 |
#define param_GlobalConfig3_NoGpsFixNoStart 224 // SUBTYPE_BIT - mk-data-structs.h: CFG3_NO_GPSFIX_NO_START 0x10 |
#define param_GlobalConfig3_UseNcForOut1 225 // SUBTYPE_BIT - mk-data-structs.h: CFG3_USE_NC_FOR_OUT1 0x20 |
#define param_GlobalConfig3_SpeakAll 226 // SUBTYPE_BIT - mk-data-structs.h: CFG3_SPEAK_ALL 0x40 |
#define param_GlobalConfig3_ServoNickCompOff 227 // SUBTYPE_BIT - mk-data-structs.h: CFG3_SERVO_NICK_COMP_OFF 0x80 |
#define param_GlobalConfig_HoehenRegelung 230 // SUBTYPE_BIT - mk-data-structs.h: CFG_HOEHENREGELUNG 0x01 |
#define param_GlobalConfig_HoehenSchalter 231 // SUBTYPE_BIT - mk-data-structs.h: CFG_HOEHEN_SCHALTER 0x02 |
#define param_GlobalConfig_HeadingHold 232 // SUBTYPE_BIT - mk-data-structs.h: CFG_HEADING_HOLD 0x04 |
#define param_GlobalConfig_KompassAktiv 233 // SUBTYPE_BIT - mk-data-structs.h: CFG_KOMPASS_AKTIV 0x08 |
#define param_GlobalConfig_KompassFix 234 // SUBTYPE_BIT - mk-data-structs.h: CFG_KOMPASS_FIX 0x10 |
#define param_GlobalConfig_GpsAktiv 235 // SUBTYPE_BIT - mk-data-structs.h: CFG_GPS_AKTIV 0x20 |
#define param_GlobalConfig_AchsenkopplungAktiv 236 // SUBTYPE_BIT - mk-data-structs.h: CFG_ACHSENKOPPLUNG_AKTIV 0x40 |
#define param_GlobalConfig_DrehratenBegrenzer 237 // SUBTYPE_BIT - mk-data-structs.h: CFG_DREHRATEN_BEGRENZER 0x80 |
#define param_ServoNickFailsave 238 // SUBTYPE_BYTE- mk-data-structs.h: ServoFS_Pos[0] ab FC 2.09j |
#define param_ServoRollFailsave 239 // SUBTYPE_BYTE- mk-data-structs.h: ServoFS_Pos[1] ab FC 2.09j |
#define param_Servo3Failsave 240 // SUBTYPE_BYTE- mk-data-structs.h: ServoFS_Pos[2] ab FC 2.09j |
#define param_Servo4Failsave 241 // SUBTYPE_BYTE- mk-data-structs.h: ServoFS_Pos[3] ab FC 2.09j |
#define param_Servo5Failsave 242 // SUBTYPE_BYTE- mk-data-structs.h: ServoFS_Pos[4] ab FC 2.09j |
// hier: spezielle Subitems |
#define param_CompassOffset_DisableDeclCalc 243 // wird gemappt auf: param_CompassOffset - der Wert ist dort in Bit 8 und 7 kodiert |
#define param_ComingHomeOrientation 244 // unsigned char 0x08, 0x10, Bits im Feld ServoCompInvert |
//--------------------------------------------------------------------------------------- |
// IMMER am Ende!! |
#define param_DUMMY 254 // DO NOT CHANGE! DUMMY => spacer werte |
#define param_EOF 255 // DO NOT CHANGE! EOF => markiert das Ende von paramID-Listen |
#define param_NOTFOUND 255 // DO NOT CHANGE! NOTFOUND => kein paramID gefunden |
//######################################################################################################################################################## |
//--------------------------- |
// struct: einzelnes Parameter-Item |
//--------------------------- |
typedef struct |
{ |
unsigned char paramID; |
unsigned char size; |
} paramRevItem_t; |
//--------------------------- |
// exportierte Funktionen |
//--------------------------- |
unsigned char paramsetInit( unsigned char *pData ); |
unsigned char paramsetSize( void ); |
unsigned char paramExist( unsigned char paramID ); |
unsigned char paramSize( unsigned char paramID ); |
unsigned char paramGet( unsigned char paramID ); |
unsigned char paramSet( unsigned char paramID, unsigned char newvalue ); |
unsigned char *paramGet_p( unsigned char paramID ); |
// TEST / DEBUG |
void paramsetDEBUG( void ); |
#endif // _PARAMSET_H |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/Transportables_Koptertool/PKT/trunk/mksettings/. |
---|
Property changes: |
Added: svn:ignore |
+_FC_eeprom_Versions_Archiv |
+ |
+_old_source |
+ |
+mkparameters.c_sic |