Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 1916 → Rev 1917

/Transportables_Koptertool/branch/test2/GPL_PKT_V3_6_7f_FC090b/main.h
0,0 → 1,119
/*****************************************************************************
* 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*
*****************************************************************************/
/**
* @Author Cebra
*
* ${tags}
*/
//**
// *
// *
// *
//
/*
* File name: $HeadURL: http://mikrokopter.de/mikrosvn/Projects/Transportables_Koptertool/branch/GPL_PKT_V3_5_8a_FC086/main.h $
* Revision: $Revision: 1496 $
* Last modified: $Date: 2012-01-15 21:31:25 +0100 (So, 15 Jan 2012) $
* Last modified by: $Author: $
* $Id: main.h 1496 2012-01-15 20:31:25Z $
*/
#ifndef _MAIN_H
#define _MAIN_H
 
//#define MKVERSION088n
#define MKVERSION090b
 
// Version der Software
#define PKTSWVersion "3.6.7f" // PKT Version
 
//#define IgnoreFCVersion
//#define DEBUG
//#define analognames // Anzeige Analognames
 
 
// Fusebits für Hardware 1.2 D7 DC FC
// Fusebits für Hardware 1.3 D7 DC FC
// Fusebits für Hardware 3.x D7 DC FC
// avrdude -pm1284p -cavr109 -P/dev/ttyUSB1 -b115200 -V -Uflash:w:Dateiname.hex:a
 
 
// hier die entsprechende Hardwareversion der Leiterplatte einstellen
 
//#define HWVERSION1_2 // Hardware sebseb7
//#define HWVERSION1_2W // Hardware sebseb7 mit Wi232 Support
//#define HWVERSION1_3 // Hardware sebseb7
//#define HWVERSION1_3W // Hardware sebseb7 mit Wi232 Support
 
#define HWVERSION3_9 // Hardware Cebra Oktober 2011 ATmega1284P
 
 
#if defined HWVERSION1_2W || defined HWVERSION1_2
#include "HAL_HW1_2.h"
#endif
 
#if defined HWVERSION1_3W || defined HWVERSION1_3
#include "HAL_HW1_3.h"
#endif
 
#ifdef HWVERSION3_9
#include "HAL_HW3_9.h"
#endif
 
#define NO 0
#define NC 1
#define FC 2
#define MK3MAG 3
#define MKGPS 4
#define Wi232 5
 
#define ENABLE_PWM
 
 
// Baud Rate
#define Baud_2400 0
#define Baud_9600 1
#define Baud_19200 2
#define Baud_38400 3
#define Baud_57600 4
#define Baud_115200 5
#define Baud_4800 6
 
 
 
extern volatile uint8_t mode;
extern uint8_t hardware;
extern uint8_t current_hardware;
extern uint8_t searchMK(void);
 
 
#endif
Property changes:
Added: svn:mime-type
+text/plain
\ No newline at end of property
/Transportables_Koptertool/branch/test2/GPL_PKT_V3_6_7f_FC090b/menu.c
0,0 → 1,778
/*****************************************************************************
* Copyright (C) 2008 Thomas Kaiser, thomas@ft-fanpage.de *
* Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net *
* Copyright (C) 2011 Christian "Cebra" Brandtner, brandtner@brandtner.net *
* Copyright (C) 2011 Harald Bongartz *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
* *
* *
* Credits to: *
* Holger Buss & Ingo Busker from mikrokopter.de for the MK project + SVN *
* http://www.mikrokopter.de *
* Gregor "killagreg" Stobrawa for his version of the MK code *
* Thomas Kaiser "thkais" for the original project. See *
* http://www.ft-fanpage.de/mikrokopter/ *
* http://forum.mikrokopter.de/topic-4061-1.html *
* Claas Anders "CaScAdE" Rathje for providing the font and his C-OSD code *
* http://www.mylifesucks.de/oss/c-osd/ *
* Harald Bongartz "HaraldB" for providing his Ideas and Code for usibility*
*****************************************************************************/
//############################################################################
//# HISTORY menu.c
//#
//# 10.03.2013 Cebra
//# - add: menu_select, gemeinsame Routine für alle Setupmenüs
//############################################################################
 
#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 "main.h"
#include "lcd/lcd.h"
#include "parameter.h"
#include "menu.h"
#include "display.h"
#include "debug.h"
#include "timer/timer.h"
#include "osd/osd.h"
#include "motortest/motortest.h"
#include "gps/gps.h"
#include "eeprom/eeprom.h"
#include "setup/setup.h"
#include "uart/uart1.h"
#include "mk-data-structs.h"
#include "wi232/Wi232.h"
#include "tracking/servo.h"
#include "tools.h"
#include "connect.h"
#include "lipo/lipo.h"
#include "messages.h"
#include "bluetooth/bluetooth.h"
#include "followme/followme.h"
#include "tracking/ng_servo.h"
#include "tracking/tracking.h"
#include "stick/stick.h"
 
 
//// Variablen für die Menüsteuerung
uint8_t ii = 0;
uint8_t offset = 0;
uint8_t size = 0;
uint8_t dmode = 0;
uint8_t target_pos = 1;
uint8_t val;
 
 
 
 
 
#define ITEMS_NC 9
 
const prog_char param_menuitems_nc[ITEMS_NC][NUM_LANG][18]= // zeilen,zeichen+1
 
 
// German, English, French, Netherlands
{
{"OSD ","OSD ","OSD "},
{"MK Display ","MK Display ","MK Display "},
{"Tracking ","Tracking ","Tracking "},
{"Parameter \x1d","Parameter \x1d","Parameters \x1d"},
{"Debug Data ","Debug Data ","Debug Data "},
{"GPS Info ","GPS Info ","GPS Info "},
{"Follow Me ","Follow Me ","Follow Me "},
{"Joystick ","Joystick ","Joystick "},
{"PKT Tools \x1d","PKT Tools \x1d","PKT Tools \x1d"},
};
 
 
#define ITEMS_FC 5
 
const prog_char param_menuitems_fc[ITEMS_FC][NUM_LANG][18]= // zeilen,zeichen+1
{
{"Joystick ","Joystick ","Joystick "}, // MartinR
{"MK Display ","MK Display ","MK Display "},
{"Parameter \x1d","Parameter \x1d","Parameter \x1d"},
{"Debug Data ","Debug Data ","Debug Data "},
{"PKT Tools \x1d","PKT Tools \x1d","PKT Tools \x1d"},
};
 
 
#define ITEMS_NO 6
 
const prog_char param_menuitems_no[ITEMS_NO][NUM_LANG][18]= // zeilen,zeichen+1
{
 
 
{"Suche Mikrokopter","search Mikrokopt ","search Mikrokopt "},
{"BL-Ctrl. Tester ","BL-Ctrl. Tester ","BL-Ctrl. Tester "},
{"PC BT > Kopter ","PC BT > Kopter ","PC BT > Kopter "},
{"PC USB > Kopter ","PC USB > Kopter ","PC USB > Kopter "},
{"PKT Setup \x1d","PKT Setup \x1d","PKT Setup \x1d"},
{"PKT Version ","PKT Version ","PKT Versie "},
};
 
 
#define ITEMS_CR 12
 
const prog_char param_copyright[ITEMS_CR][22]= // zeilen,zeichen+1
{
" ",
"(C) GNU GPL License ",
" NO WARRANTY ",
" ",
"2008 Thomas Kaiser ",
"2009-2010 Peter Mack ",
"2010 Sebastian Boehm ",
"2012 Chr. Brandtner &",
" Harald Bongartz ",
"2012 gebad ",
"2012 Martin Runkel ",
"2013 Oliver Gemesi "
};
 
uint8_t menu_select(const char menuitem[][NUM_LANG][18],uint8_t size, uint8_t targetpos)
{
 
ii = 0;
offset = 0;
dmode = 0;
uint8_t target_pos = targetpos;
target_pos = targetpos;
val = 0;
 
while(2)
{
ii = 0;
if(offset > 0)
{
lcd_printp_at(1,1, PSTR("\x12"), 0);
}
for(ii = 0;ii < 6 ; ii++)
{
if((ii+offset) < size)
{
lcd_printp_at(3,ii+1,menuitem[ii+offset][Config.DisplayLanguage], 0);
}
if((ii == 5)&&(ii+offset < (size-1)))
{
lcd_printp_at(1,6, PSTR("\x13"), 0);
}
}
if(dmode == 0)
{
if(offset == 0)
{
if(size > 6)
{
val = menu_choose2 (1, 5, target_pos,0,1);
}
else
{
val = menu_choose2 (1, size, target_pos,0,0);
}
}
else
{
val = menu_choose2 (2, 5, target_pos,1,1);
}
}
if(dmode == 1)
{
if(offset+7 > size)
{
val = menu_choose2 (2, 6, target_pos,1,0);
}
else
{
val = menu_choose2 (2, 5, target_pos,1,1);
}
}
if(val == 254)
{
offset++;
dmode = 1;
target_pos = 5;
}
else if(val == 253)
{
offset--;
dmode = 0;
target_pos = 2;
}
else if(val == 255)
{
break;
}
else
{
break;
}
 
}
 
 
return val;
 
}
 
//--------------------------------------------------------------
// print cursor
void menu_set_cursor (uint8_t before, uint8_t line, uint8_t pos)
{
lcd_printp_at (pos, before, PSTR(" "), 0);
lcd_printp_at (pos, line, PSTR("\x1d"), 0);
}
 
 
// F�r Seting-Auswahl ------------------------------------------
//
uint8_t menu_choose (uint8_t min, uint8_t max, uint8_t pos, uint8_t start)
{
uint8_t line = start;
uint8_t before = start;
 
uint8_t k;
 
menu_set_cursor (line, line, pos);
 
do
{
if (get_key_press (1 << KEY_PLUS) | get_key_long_rpt_sp ((1 << KEY_PLUS), 1))
{
if (line < max)
line ++;
else
line = max;
// line = min; // Wenn wiederholen soll
}
 
if (get_key_press (1 << KEY_MINUS) | get_key_long_rpt_sp ((1 << KEY_MINUS), 1))
{
if (line > min)
line --;
else
line = min;
// line = max; // Wenn wiederholen soll
}
 
if (line != before)
{
menu_set_cursor (before, line, pos);
before = line;
}
}
while (!(k = get_key_press ((1 << KEY_ENTER) | (1 << KEY_ESC))));
 
if (k & (1 << KEY_ESC))
line = 255;
 
return line;
}
 
// F�r Setup und Parameter ------------------------------------------
//
uint8_t menu_choose2 (uint8_t min, uint8_t max, uint8_t start, uint8_t return_at_start, uint8_t return_at_end)
{
uint8_t pos = 1;
uint8_t line = start;
uint8_t before = start;
 
uint8_t k;
 
menu_set_cursor (line, line, pos);
 
do
{
if (get_key_press (1 << KEY_PLUS) | get_key_long_rpt_sp ((1 << KEY_PLUS), 1))
{
if (line < max)
line ++;
else
{
if(return_at_end == 1)
return 254;
else
line = max;
// line = min; // Wenn wiederholen soll
}
}
 
if (get_key_press (1 << KEY_MINUS) | get_key_long_rpt_sp ((1 << KEY_MINUS), 1))
{
if (line > min)
line --;
else
{
if(return_at_start == 1)
return 253;
else
line = min;
// line = max; // Wenn wiederholen soll
}
}
 
if (line != before)
{
menu_set_cursor (before, line, pos);
before = line;
}
}
while (!(k = get_key_press ((1 << KEY_ENTER) | (1 << KEY_ESC))));
 
if (k & (1 << KEY_ESC))
line = 255;
 
return line;
}
 
// F�r das Hauptmenue ------------------------------------------
//
uint8_t menu_choose3 (uint8_t min, uint8_t max,uint8_t start, uint8_t return_at_start, uint8_t return_at_end)
{
uint8_t pos = 1;
uint8_t line = start;
uint8_t before = start;
 
menu_set_cursor (line, line, pos);
 
do
{
 
if (get_key_press (1 << KEY_PLUS) | get_key_long_rpt_sp ((1 << KEY_PLUS), 1))
{
if (line < max)
line ++;
else
{
if(return_at_end == 1)
return 254;
else
line = max;
// line = min; // Wenn wiederholen soll
}
}
 
if (get_key_press (1 << KEY_MINUS) | get_key_long_rpt_sp ((1 << KEY_MINUS), 1))
{
if (line > min)
line --;
else
{
if(return_at_start == 1)
return 253;
else
line = min;
// line = max; // Wenn wiederholen soll
}
}
 
if (get_key_long (1 << KEY_ESC))
{
get_key_press(KEY_ALL);
return 250;
}
 
if(get_key_long (1 << KEY_ENTER))
{
get_key_press(KEY_ALL);
return 251;
}
 
if (get_key_short (1 << KEY_ESC))
{
get_key_press(KEY_ALL);
return 252;
}
 
if (line != before)
{
menu_set_cursor (before, line, pos);
before = line;
}
#ifdef HWVERSION3_9
show_Lipo();
#endif
}
while (!(get_key_short (1 << KEY_ENTER)));
 
return line;
}
 
//--------------------------------------------------------------
//
void main_menu (void)
{
uint8_t ii = 0;
uint8_t offset = 0;
uint8_t size = 0;
uint8_t Save_hardware = 0;
uint8_t dmode = 0;
uint8_t target_pos = 1;
uint8_t val =0;
 
Save_hardware = hardware;
 
get_key_press(KEY_ALL);
 
while(1)
{
if (Config.Debug==1)
hardware = NC;
if (Config.Debug==0)
hardware = Save_hardware;
if(hardware == NO)
size = ITEMS_NO ;
if(hardware == NC)
size = ITEMS_NC ;
if(hardware == FC)
size = ITEMS_FC ;
 
lcd_cls ();
lcd_printp_at (0, 0, PSTR("PKT-Tool FC "), 2);
lcd_printp_at (12, 0, PSTR(FC_Version), 2);
lcd_puts_at(0, 7, strGet(KEYLINE1), 0);
lcd_puts_at(12, 7, strGet(OFF), 0);
 
 
while(2)
{
 
ii = 0;
if(offset > 0)
lcd_printp_at(1,1, PSTR("\x12"), 0);
 
for(ii = 0;ii < 6 ; ii++)
{
if((ii+offset) < size)
{
if(hardware == NC)
lcd_printp_at(3,ii+1,param_menuitems_nc[ii+offset][Config.DisplayLanguage], 0);
else if(hardware == FC)
lcd_printp_at(3,ii+1,param_menuitems_fc[ii+offset][Config.DisplayLanguage], 0);
else
lcd_printp_at(3,ii+1,param_menuitems_no[ii+offset][Config.DisplayLanguage], 0);
}
 
if((ii == 5)&&(ii+offset < (size-1)))
lcd_printp_at(1,6, PSTR("\x13"), 0);
 
show_Lipo();
 
}
 
if(dmode == 0)
{
if(offset == 0)
{
if(size > 6)
val = menu_choose3 (1, 5, target_pos,0,1); //menu_choose3 (min, max, start, return_at_start, return_at_end)
else
val = menu_choose3 (1, size, target_pos,0,0);
}
else
val = menu_choose3 (2, 5, target_pos,1,1);
}
 
if(dmode == 1)
{
if(offset+7 > size)
val = menu_choose3 (2, 6, target_pos,1,0);
else
val = menu_choose3 (2, 5, target_pos,1,1);
}
 
if(val == 254)
{
offset++;
dmode = 1;
target_pos = 5;
}
else if(val == 253)
{
offset--;
dmode = 0;
target_pos = 2;
}
 
else if(val == 252)
{
 
lcd_cls();
// lcd_printp_at (0, 2, PSTR(" PKT ausschalten?"),0);
lcd_puts_at(0, 2, strGet(SHUTDOWN), 0);
// lcd_printp_at (12, 7, PSTR("Nein Ja"),0);
lcd_puts_at(12, 7, strGet(YESNO), 0);
while(1)
{
if (get_key_press (1 << KEY_ENTER))
{
WriteParameter(); // am Ende alle Parameter sichern
clr_V_On(); // Spannung abschalten
}
 
if (get_key_short (1 << KEY_ESC))
{
get_key_press(KEY_ALL);
lcd_cls();
lcd_printp_at (0, 0, PSTR("PKT-Tool FC "), 2);
lcd_printp_at (12, 0,PSTR(FC_Version), 2);
// show_Lipo();
// lcd_printp_at (0, 7, PSTR(KEY_LINE_1), 0);
lcd_puts_at(0, 7, strGet(KEYLINE1), 0);
// lcd_printp_at (12, 7, PSTR("Aus "), 0);
lcd_puts_at(12, 7, strGet(OFF), 0);
break;
}
}
}
else if(val == 251)
{
PC_Fast_Connect();
return;
}
 
else if(val == 250)
{
// Test_HB();
// Test_Language();
return;
}
else
break;
}
 
target_pos = val;
 
 
if(hardware == NC)
{
if((val+offset) == 1 )
osd(OSD_Mode);
if((val+offset) == 2 )
display_data();
if((val+offset) == 3 )
PKT_tracking();
if((val+offset) == 4 )
edit_parameter();
#ifdef HWVERSION3_9
if((val+offset) == 5 )
 
#ifdef analognames
display_debug();
#else
{
copy_line(7);
lcd_printp_at (0, 7, PSTR(" not possible "),0);
_delay_ms(1000);
paste_line(7);
}
#endif
if((val+offset) == 6 )
gps();
#endif
 
if((val+offset) == 7 )
FollowMe();
 
if((val+offset) == 8 )
joystick();
if((val+offset) == 9 )
PKT_Tools();
 
}
 
 
if(hardware == FC)
{
if((val+offset) == 1 )
joystick();
if((val+offset) == 2 )
display_data();
if((val+offset) == 3 )
edit_parameter();
if((val+offset) == 4 )
#ifdef analognames
display_debug();
#else
{
copy_line(7);
lcd_printp_at (0, 7, PSTR(" not possible "),0);
_delay_ms(1000);
paste_line(7);
}
#endif
 
if((val+offset) == 4 )
PKT_Tools();
 
}
 
 
if(hardware == NO)
{
if((val+offset) == 1 )
if (searchMK()){
Save_hardware = hardware;
continue;
}
 
if((val+offset) == 2 )
motor_test(FC_Mode);
 
#ifdef HWVERSION3_9
if (Config.U02SV2 == 0)
{
if((val+offset) == 3 )
Port_BT2Wi();
if((val+offset) == 4 )
Port_USB2Wi();
}
else if (Config.U02SV2 == 1)
{
if((val+offset) == 3 )
Port_BT2FC();
if((val+offset) == 4 )
Port_USB2FC();
}
#else
if((val+offset) == 3 )
Show_Error_HW();
if((val+offset) == 4 )
Show_Error_HW();
#endif
if((val+offset) == 5 )
PKT_Setup();
if((val+offset) == 6 )
Show_Version();
 
}
 
 
}
}
 
 
//--------------------------------------------------------------
//
void Update_PKT (void)
{
lcd_cls();
lcd_printp_at (0, 0, PSTR(" PKT Update "),2);
lcd_puts_at(0, 1, strGet(UPDATE1), 0);
lcd_puts_at(0, 2, strGet(UPDATE2), 0);
lcd_printp_at (0, 3, PSTR("Start avrdude.exe "),0);
lcd_printp_at (0, 4, PSTR("-pm1284p -cavr109 "),0);
lcd_printp_at (0, 5, PSTR("-Pcom? -b115200 "),0);
lcd_printp_at (0, 6, PSTR("-Uflash:w:FILE.hex:a "),0);
lcd_puts_at(0, 7, strGet(ENDSTART), 0);
 
do
{
if (get_key_press (1 << KEY_ESC))
{
get_key_press(KEY_ALL);
return;
}
}
while (!(get_key_press (1 << KEY_ENTER)));
{
 
// start bootloader with Reset, Hold KEY_ENTER*/
wdt_enable( WDTO_250MS );
while (1)
{;}
}
}
 
 
//--------------------------------------------------------------
//
void Show_Error_HW (void)
{
lcd_cls ();
lcd_printp_at (0, 2, PSTR(" Mit dieser Hardware"), 0);
lcd_printp_at (0, 3, PSTR(" nicht möglich!"), 0);
lcd_printp_at (12, 7, PSTR("Ende"), 0);
 
while (!get_key_press (1 << KEY_ESC));
get_key_press(KEY_ALL);
return;
}
 
 
//--------------------------------------------------------------
//
void Show_Version (void)
{
uint8_t ii = 0;
uint8_t size = ITEMS_CR;
uint8_t page = 0;
 
lcd_cls ();
 
lcd_printp_at (0, 0, PSTR("PKT Tool V. "), 2);
lcd_printp_at (13,0, PSTR(PKTSWVersion),2);
lcd_printp_at (0, 1, PSTR(" "), 2); //um die ganze Zeile schwarz zu füllen.
lcd_puts_at(0, 1, strGet(START_MSG2), 2);
lcd_puts_at(0, 7, strGet(KEYLINE1), 0);
 
while(1)
{
for(ii = 0;ii < 3 ; ii++)
if((ii + page) < size)
lcd_printp_at(0,ii + 3,param_copyright[ii + page], 0);
 
if (page == 0)
{
lcd_printp_at (0, 2, PSTR(" "), 0);
lcd_printp_at (0, 6, PSTR("\x13"), 0);
}
 
if (page > 0 && page < (size - 3))
{
lcd_printp_at (0, 2, PSTR("\x12"), 0);
lcd_printp_at (0, 6, PSTR("\x13"), 0);
}
 
if (page >= (size - 3))
{
lcd_printp_at (0, 2, PSTR("\x12"), 0);
lcd_printp_at (0, 6, PSTR(" "), 0);
}
 
 
if (get_key_press (1 << KEY_PLUS))
if (page < size - 3)
page++;
 
if (get_key_press (1 << KEY_MINUS))
if (page > 0)
page--;
 
if (get_key_press (1 << KEY_ESC) || get_key_press (1 << KEY_ENTER))
{
get_key_press(KEY_ALL);
return;
}
}
}
 
 
Property changes:
Added: svn:mime-type
+text/plain
\ No newline at end of property
/Transportables_Koptertool/branch/test2/GPL_PKT_V3_6_7f_FC090b/menu.h
0,0 → 1,66
/*****************************************************************************
* 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*
*****************************************************************************/
 
 
#ifndef MENU_H
#define MENU_H
 
#include "messages.h"
 
#define CURSOR_COL 1 // column where the menu cursor is displayed
#define MENU_LINE 1 // starting line of menu
#define MENU_COL 3 // column where the menu starts
#define OSD_Mode 1 // OSD Anzeige als OSD
#define THREE_D_Mode 3 // OSD Anzeige in 3D Position
 
void main_menu (void);
void Show_Version (void);
void Show_Error_HW (void);
void Update_PKT (void);
void PC_Fast_Connect (void);
 
//// Variablen für die Menüsteuerung
extern uint8_t ii;
extern uint8_t offset;
extern uint8_t size;
extern uint8_t dmode;
extern uint8_t target_pos;
extern uint8_t val;
 
 
uint8_t menu_select(const char menuitem[][NUM_LANG][18],uint8_t size, uint8_t targetpos);
uint8_t menu_choose (uint8_t min, uint8_t max, uint8_t pos, uint8_t start);
uint8_t menu_choose2 (uint8_t min, uint8_t max, uint8_t start, uint8_t return_at_start, uint8_t return_at_end);
uint8_t menu_choose3 (uint8_t min, uint8_t max, uint8_t start, uint8_t return_at_start, uint8_t return_at_end);
 
#endif
Property changes:
Added: svn:mime-type
+text/plain
\ No newline at end of property
/Transportables_Koptertool/branch/test2/GPL_PKT_V3_6_7f_FC090b/messages.c
0,0 → 1,2204
/****************************************************************************************
* Copyright (C) 2011 Christian "Cebra" Brandtner, brandtner@brandtner.net *
* *
* 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. *
* *
* *
* Languagesupport: *
* http://www.netrino.com/Embedded-Systems/How-To/Firmware-Internationalization *
* Nigel Jones *
****************************************************************************************/
 
 
#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 "main.h"
#include "lcd/lcd.h"
#include "timer/timer.h"
#include "eeprom/eeprom.h"
#include "messages.h"
 
 
 
 
typedef enum
{
GERMAN,
ENGLISH,
NETHERLAND,
LAST_LANGUAGE,
 
} LANGUAGE;
 
 
 
typedef struct PROGMEM
{
/*
* Maximum length
*/
int const len;
 
/*
* Array of pointers to language-specific string
*/
char const * const text[LAST_LANGUAGE];
 
} STRING ;
 
 
//--------------------------------------------------------------------------------------------------------------------
// Typdefinitionen für alle verwendeten Strings, LAST_STR muss am Ende stehen bleiben
//typedef enum
//TESTSTRING, KEYLINE1, KEYLINE2, KEYLINE3, KEYLINE4, KEYLINE5, BOOT1, BOOT2, BOOT_WI1, BOOT_WI2, BOOT_SV, START_MSG1, START_MSG2, GNU_GPL, ATMEGA644,
//ATMEGA644P, ATMEGA1284P, HW12, HW12W, HW13, HW13W, HW39, START_LASTPOS, START_LASTPOS1, START_LASTPOS2, START_LASTPOS3, START_LASTPOSDEL,
//START_SEARCHFC, ENDE, OK, FEHLER, AKTIV, START_FCNOTFOUND, START_FCFOUND, START_FCFOUND1, START_FCFOUND2, START_FCFOUND3, START_VERSIONCHECK,
//START_VERSIONCHECK1, START_VERSIONCHECK2, START_VERSIONCHECK3, START_VERSIONCHECK4, START_VERSIONCHECK5, ON, OFF, ESC, SHUTDOWN, YESNO,
//UPDATE1, UPDATE2, ENDSTART, TOOLS1, CONNECT1, CONNECT2, CONNECT4, CONNECT5, CONNECT6, CONNECT7, CONNECT8, CONNECT9, CONNECT10, CONNECT11, CONNECT12,
//CONNECT13, CONNECT14, CONNECT15, CONNECT16, CONNECT17, CONNECT18, CONNECT19, CONNECT20, CONNECT21, CONNECT22, CONNECT23, CONNECT24, CONNECT25,
//CONNECT26, CONNECT27, CONNECT28, CONNECT29, CONNECT30, CONNECT31, KABEL, SLAVE, NORMAL, REVERSE, ENDOK, EEPROM1, EEPROM2, DEUTSCH, ENGLISCH, FRANCE,
//NETHERL, DISPLAY1, DISPLAY2, DISPLAY3, DISPLAY4, DISPLAY5, DISPLAY6, DISPLAY7, DISPLAY8, DISPLAY9, DEBUGPKT, WITXRX, WINETWG, WINETWM, WITIMEOUT,
//WIUART, WI2321, WI2322, WI2323, YES, NOO, BT1, BT2, BT3, BT4, LIPO1, LIPO2, LIPO3, LIPO4, LIPO5, LIPO6, LOWBAT, OSD_3D_V, OSD_3D_H, OSD_3D_L,
//OSD_3D_R, OSD_3D_NICK, OSD_3D_ROLL, OSD_3D_COMPASS, OSD_ERROR, OSD_POS1, OSD_POS2, PARA_SETTINGS, PARA_CHANGE, PARA_AKTIVI, PARA_AKTIV,
//PARA_SAVESETT, PARA_SETTSAVED, PARA_COPY, PARA_FROMTO, PARA_ENDE, PARA_COPYQ, PARA_COPYACTIV, PARA_CHANGESETT, PARA_SELECT, PARA_SEITE,
//PARA_SELSETT, GPS1, GPS2, GPS3, STATS_ITEM_0, STATS_ITEM_1, STATS_ITEM_2, STATS_ITEM_3, STATS_ITEM_4, STATS_ITEM_5, STATS_ITEM_6, STATS_ITEM_7,
//STATS_ITEM_8, ONLY_NC, NO_SETTINGS, OSD_ALTI_0, OSD_ALTI_1, OSD_VARIO_0, OSD_VARIO_1, OSD_CARE_FREE_0, OSD_CARE_FREE_1, OSD_LED0, OSD_LED1, OSD_LED2,
//OSD_NAVI_MODE_0, OSD_NAVI_MODE_1, OSD_NAVI_MODE_2, OSD_FLAGS_0, OSD_FLAGS_1, OSD_FLAGS_2, OSD_FLAGS_3, OSD_FLAGS_4, OSD_FLAGS_5, OSD_FLAGS_6,
//OSD_Screen, OSD_Invert_Out, OSD_LED_Form, OSD_Send_OSD, LAST_STR,
 
 
 
static const STRING strings[LAST_STR] PROGMEM =
{
{ /*TESTSTRING*/
21,
{
"Not format hardisk C?", /* German */
"Not format hardisk C?", /* English*/
"Not format hardisk C?", /* Dutch */
 
}
},
 
{ /*KEYLINE1*/
21,
{
" \x1a \x1b Ende OK", /* German */
" \x1a \x1b end OK", /* English*/
" \x1a \x1b Einde OK", /* Dutch */
 
}
},
 
{ /*KEYLINE2*/
21,
{
" \x18 \x19 Ende OK", /* German */
" \x18 \x19 end OK", /* English*/
" \x18 \x19 Einde OK", /* Dutch */
 
}
},
 
{ /*KEYLINE3*/
21,
{
" \x18 \x19 Ende ", /* German */
" \x18 \x19 end ", /* English*/
" \x18 \x19 Einde", /* Dutch */
 
}
},
 
{ /*KEYLINE4*/
21,
{
"Ende OK", /* German */
"end OK", /* English*/
"Einde OK", /* Dutch */
 
}
},
 
{ /*KEYLINE5*/
21,
{
"Ende Info", /* German */
"end info", /* English*/
"Eind Info", /* Dutch */
 
}
},
 
{ /*BOOT1*/
21,
{
"Taste 1 Sekunde", /* German */
"Keep the button", /* English*/
"Houd de knop ", /* Dutch */
 
}
},
 
{ /* BOOT2*/
21,
{
"lang festhalten.", /* German */
"pressed for 1 second", /* English*/
"1 seconde ingedrukt.", /* Dutch */
}
},
 
{ /*BOOT_WI1*/
21,
{
"Verbindung zum MK ist", /* German */
"Connection to MK is", /* English*/
"Verbinding met MK is", /* Dutch */
 
}
},
 
{ /* BOOT_WI2*/
21,
{
"auf Wi232 eingestellt", /* German */
"set to Wi232", /* English*/
"ingesteld op Wi232", /* Dutch */
}
},
 
{ /*BOOTSV1*/
21,
{
"auf Kabel eingestellt", /* German */
"set to kabel on SV2", /* English*/
"via kabelverbinding", /* Dutch */
 
}
},
 
{ /*START_MSG1 */
21,
{
"Portables Kopter Tool", /* German */
"Portable Kopter Tool ", /* English*/
"Portable Kopter Tool ", /* Dutch */
 
}
},
 
{ /*START_MSG2 */
21,
{
"für FC Ver "FC_Version, /* German */
"for FC Ver "FC_Version, /* English*/
"Voor FC Ver "FC_Version, /* Dutch */
}
},
 
{ /* GNU/GPL */
21,
{
"GNU GPL License", /* German */
"GNU GPL License", /* English*/
"GNU GPL License", /* Dutch */
}
},
 
{ /**/
21,
{
"ATmega 644", /* German */
"ATmega 644", /* English*/
"ATmega 644", /* Dutch */
}
},
 
{ /**/
21,
{
"ATmega 644P", /* German */
"ATmega 644P", /* English*/
"ATmega 644P", /* Dutch */
}
},
 
{ /**/
21,
{
"ATmega 1284P", /* German */
"ATmega 1284P", /* English*/
"ATmega 1284P", /* Dutch */
}
},
 
{ /**/
21,
{
"Hardware 1.2", /* German */
"Hardware 1.2", /* English*/
"Hardware 1.2", /* Dutch */
}
},
 
{ /**/
21,
{
"Hardware 1.2W", /* German */
"Hardware 1.2W", /* English*/
"Hardware 1.2W", /* Dutch */
}
},
 
{ /**/
21,
{
"Hardware 1.3", /* German */
"Hardware 1.3", /* English*/
"Hardware 1.3", /* Dutch */
}
},
 
{ /**/
21,
{
"Hardware 1.3W", /* German */
"Hardware 1.3W", /* English*/
"Hardware 1.3W", /* Dutch */
}
},
 
{ /**/
21,
{
"Hardware 3.9", /* German */
"Hardware 3.9", /* English*/
"Hardware 3.9", /* Dutch */
}
},
 
{ /*START_LASTPOS*/
21,
{
" Letzte Position ", /* German */
" last position ", /* English*/
" Laatste positie ", /* Dutch */
}
},
 
{ /*START_LASTPOS1*/
21,
{
" Breitengr Längengr ", /* German */
" latitude longitude ", /* English*/
"breedtegr. lengtegr. ", /* Dutch */
}
},
 
{ /*START_LASTPOS2*/
21,
{
"löschen weiter", /* German */
"delete exit ", /* English*/
"wissen verder", /* Dutch */
}
},
 
{ /*START_LASTPOS3*/
21,
{
" Google Eingabe ", /* German */
" Google Input ", /* English*/
" Google Input ", /* Dutch */
}
},
 
{ /*START_LASTPOSDEL*/
21,
{
" gelöscht ", /* German */
" deleted ", /* English*/
" gewist ", /* Dutch */
}
},
 
{ /*START_SEARCHFC*/
21,
{
"Suche FC... ", /* German */
"searching FC...", /* English*/
"zoek FC... ", /* Dutch */
}
},
 
{ /*ENDE*/
21,
{
"Ende ", /* German */
"end ", /* English*/
"Einde", /* Dutch */
}
},
 
{ /*OK*/
21,
{
"Ok ", /* German */
"ok ", /* English*/
"gued", /* Dutch */
}
},
 
{ /*FEHLER*/
21,
{
"Fehler ", /* German */
"error ", /* English*/
"fout ", /* Dutch */
}
},
 
{ /*AKTIV*/
21,
{
"aktiv ", /* German */
"activ ", /* English*/
"actief", /* Dutch */
}
},
 
 
{ /*START_FCNOTFOUND*/
21,
{
"FC nicht gefunden!", /* German */
"FC not found!", /* English*/
"FC niet gevonden!", /* Dutch */
}
},
 
{ /*START_FCFOUND*/
21,
{
"PKT-Tool GNU GPL", /* German */
"PKT-Tool GNU GPL", /* English*/
"PKT-Tool GNU GPL", /* Dutch */
}
},
 
{ /*START_FCFOUND1*/
21,
{
"gefunden: ", /* German */
"found: ", /* English*/
"gevonden: ", /* Dutch */
}
},
 
{ /*START_FCFOUND2*/
21,
{
"Flight-Ctrl", /* German */
"Flight-Ctrl", /* English*/
"Flight-Ctrl", /* Dutch */
}
},
 
{ /*START_FCFOUND3*/
21,
{
"Navi-Ctrl", /* German */
"Navi-Ctrl", /* English*/
"Navi-Ctrl", /* Dutch */
}
},
 
{ /*START_VERSIONCHECK*/
21,
{
"Version: ", /* German */
"Version: ", /* English*/
"Versie: ", /* Dutch */
}
},
 
{ /*START_VERSIONCHECK1*/
21,
{
"erwartet", /* German */
"expected", /* English*/
"verwacht", /* Dutch */
}
},
 
{ /*START_VERSIONCHECK2*/
21,
{
"gefunden", /* German */
"found ", /* English*/
"gevonden", /* Dutch */
}
},
 
{ /*START_VERSIONCHECK3*/
21,
{
"PKT-Tool nur mit", /* German */
"PKT-Tool only with", /* English*/
"PKT-Tool alleen met", /* Dutch */
}
},
 
{ /*START_VERSIONCHECK4*/
21,
{
"FC Software ", /* German */
"FC Software ", /* English*/
"FC Software ", /* Dutch */
}
},
 
{ /*START_VERSIONCHECK5*/
21,
{
"kompatibel", /* German */
"compatible", /* English*/
"compatibel", /* Dutch */
}
},
 
{ /*ON*/
21,
{
"Ein ", /* German */
"On ", /* English*/
"Aan ", /* Dutch */
}
},
 
{ /*AUS*/
21,
{
"Aus ", /* German */
"Off ", /* English*/
"Uit ", /* Dutch */
}
},
 
{ /*ESC*/
21,
{
"ESC", /* German */
"ESC", /* English*/
"ESC", /* Dutch */
}
},
 
{ /*SHUTDOWN*/
21,
{
" PKT ausschalten?", /* German */
" shutdown PKT ?", /* English*/
" PKT uitschakelen ?", /* Dutch */
}
},
 
{ /*YES NO*/
21,
{
"Nein Ja", /* German */
"no yes", /* English*/
"Nee Ja", /* Dutch */
}
},
 
{ /*UPDATE1*/
21,
{
"Verbinde PC mit PKT ", /* German */
"Connect PC to PKT-USB", /* English*/
"Verbind PC met PKT ", /* Dutch */
}
},
 
{ /*UPDATE2*/
21,
{
"Drücke 'Start' am PKT", /* German */
"Press 'Start' on PKT ", /* English*/
"Druk 'Start' op PKT ", /* Dutch */
}
},
 
{ /*ENDSTART*/
21,
{
" Ende Start", /* German */
" End Start", /* English*/
" Einde Start", /* Dutch */
}
},
 
{ /*TOOLS1*/
21,
{
" PC-Quick-Verbindung ", /* German */
" PC-Quick-Connection ", /* English*/
" Snelle PC-verbinding", /* Dutch */
}
},
 
{ /*CONNECT1,*/
21,
{
"Verbinde das PKT mit", /* German */
"Connect PKT with MK", /* English*/
"Verbind PKT ", /* Dutch */
}
},
 
{ /*CONNECT2*/
21,
{
"dem MK über:", /* German */
" over :", /* English*/
" met :", /* Dutch */
}
},
 
{ /*CONNECT4,*/
21,
{
"dem MK über: Kabel, ", /* German */
"over: Kabel", /* English*/
"MK via: kabel ", /* Dutch */
}
},
 
{ /*CONNECT5*/
21,
{
"es ist kein Wi.232", /* German */
"there is no Wi.232", /* English*/
"er is geen wi.232 ", /* Dutch */
}
},
 
{ /*CONNECT6*/
21,
{
"Modul eingebaut.", /* German */
"built in.", /* English*/
"module ingebouwd.", /* Dutch */
}
},
 
{ /*CONNECT7,*/
21,
{
"Wenn doch, dann bitte", /* German */
"if yes, then first", /* English*/
"zo ja, dan aub eerst", /* Dutch */
}
},
 
{ /*CONNECT8*/
21,
{
"das Modul zuerst im ", /* German */
"activate modul in", /* English*/
"de module aktiveren", /* Dutch */
}
},
 
{ /*CONNECT9*/
21,
{
"Setupmenü aktivieren.", /* German */
"Setupmenu", /* English*/
"in het Setupmenu.", /* Dutch */
}
},
 
{ /*CONNECT10*/
21,
{
"Sie müssen das PKT", /* German */
"You have to", /* English*/
"U moet de PKT", /* Dutch */
}
},
 
{ /*CONNECT11*/
21,
{
"jetzt neu starten!", /* German */
"restart PKT", /* English*/
"nu opnieuw starten!", /* Dutch */
}
},
 
{ /*CONNECT12*/
21,
{
"Es ist kein BTM-222", /* German */
"There is no BTM-222", /* English*/
"Er is geen BTM-222", /* Dutch */
}
},
 
{ /*CONNECT13*/
21,
{
"Modul eingebaut", /* German */
"Modul built in", /* English*/
"module ingebouwd.", /* Dutch */
}
},
 
{ /*CONNECT14*/
21,
{
" MK-USB Funktion ", /* German */
" MK-USB Function ", /* English*/
" MK-USB Functie ", /* Dutch */
}
},
 
{ /*CONNECT15*/
21,
{
" BT --> Kabel an FC ", /* German */
" BT --> Kabel to FC ", /* English*/
" BT --> kabel naar FC", /* Dutch */
}
},
 
{ /*CONNECT16*/
21,
{
"PC mit BT verb.", /* German */
"connect PC with BT", /* English*/
"PC via BT verbonden.", /* Dutch */
}
},
 
{ /*CONNECT17*/
21,
{
"PKT-Kabel an FC", /* German */
"PKT-Kabel to FC", /* English*/
"PKT-kabel naar FC", /* Dutch */
}
},
 
{ /*CONNECT18*/
21,
{
" BT --> Wi.232 ", /* German */
" BT --> Wi.232 ", /* English*/
" BT --> Wi.232 ", /* Dutch */
}
},
 
{ /*CONNECT19*/
21,
{
"Wi.232 an FC ", /* German */
"Wi.232 to FC ", /* English*/
"Wi.232 naar FC ", /* Dutch */
}
},
 
{ /*CONNECT20*/
21,
{
" USB --> Kabel an FC ", /* German */
" USB --> cable to FC ", /* English*/
"USB --> kabel naar FC", /* Dutch */
}
},
 
{ /*CONNECT21*/
21,
{
"PC mit USB verbinden ", /* German */
"connect PC with USB ", /* English*/
"Verbind PC met USB ", /* Dutch */
}
},
 
{ /*CONNECT22*/
21,
{
" USB --> Wi.232 ", /* German */
" USB --> Wi.232 ", /* English*/
" USB --> Wi.232 ", /* Dutch */
}
},
 
{ /*CONNECT23*/
21,
{
"MK-Tool starten", /* German */
"start MK-Tool", /* English*/
"start MK-Tool", /* Dutch */
}
},
 
{ /*CONNECT24*/
21,
{
" Wi.232 Konfigurieren", /* German */
" Wi.232 Configuration", /* English*/
" Wi.232 Configuratie ", /* Dutch */
}
},
 
{ /*CONNECT25*/
21,
{
"Programm starten. ", /* German */
"start program ", /* English*/
"start programma.", /* Dutch */
}
},
 
{ /*CONNECT26*/
21,
{
"BTM-222 Konfigurieren", /* German */
"BTM-222 configuration", /* English*/
"BTM-222 configuratie", /* Dutch */
}
},
 
{ /*CONNECT27*/
21,
{
"FC > MK-USB > BTM-222", /* German */
"FC > MK-USB > BTM-222", /* English*/
"FC > MK-USB > BTM-222", /* Dutch */
}
},
 
{ /*CONNECT28*/
21,
{
"MK-USB an PC anschl. ", /* German */
"connect PC to MK-USB ", /* English*/
"Verbind PC met MK-USB", /* Dutch */
}
},
 
{ /*CONNECT29*/
21,
{
"Zwischen MK-USB und ", /* German */
"connect crossed cable", /* English*/
"Tussen MK-USB en PKT ", /* Dutch */
}
},
 
{ /*CONNECT30*/
21,
{
"PKT ein gekreuztes ", /* German */
"between MK-USB and ", /* English*/
"een gekruiste kabel ", /* Dutch */
}
},
 
{ /*CONNECT31*/
21,
{
"Kabel anschliessen. ", /* German */
"PKT SV2", /* English*/
"aansluiten.", /* Dutch */
}
},
 
{ /*Kabel*/
21,
{
"Kabel", /* German */
"cable", /* English*/
"Kabel", /* Dutch */
}
},
 
{ /*SLAVE*/
21,
{
"Slave ", /* German */
"Slave ", /* English*/
"Slave ", /* Dutch */
}
},
 
{ /*NORMAL*/
21,
{
"Normal ", /* German */
"Normal ", /* English*/
"Norm. ", /* Dutch */
}
},
 
{ /*Reverse*/
21,
{
"Reverse", /* German */
"inverse", /* English*/
"geinver", /* Dutch */
}
},
 
{ /*ENDOK*/
21,
{
"Ende OK", /* German */
"End OK", /* English*/
"Eind OK", /* Dutch */
}
},
 
{ /*EEPROM1*/
21,
{
" EEProm wirklich", /* German */
" Realy delete", /* English*/
" Eeprom werkelijk", /* Dutch */
}
},
 
{ /*EEPROM2*/
21,
{
" löschen?", /* German */
" EEprom?", /* English*/
" wissen?", /* Dutch */
}
},
 
{ /*DEUTSCH*/
21,
{
"deutsch ", /* German */
"german ", /* English*/
"duits ", /* Dutch */
}
},
 
{ /*ENGLISCH*/
21,
{
"englisch ", /* German */
"english ", /* English*/
"engels ", /* Dutch */
}
},
 
{ /*FRANCE*/
21,
{
"französisch", /* German */
"french " , /* English*/
"frans ", /* Dutch */
}
},
 
{ /*NETHERL*/
21,
{
"holländisch", /* German */
"dutch ", /* English*/
"nederlands ", /* Dutch */
}
},
 
{ /*DISPLAY1*/
21,
{
"Anzeige Einstellungen", /* German */
" Display Setup ", /* English*/
"Display instellingen ", /* Dutch */
}
},
 
{ /*DISPLAY2*/
21,
{
"Infos bei Start:", /* German */
"Info at startup ", /* English*/
"Info bij opstart", /* Dutch */
}
},
 
{ /*DISPLAY3*/
21,
{
"Sprache : ", /* German */
"Language: ", /* English*/
"Taal: ", /* Dutch */
}
},
 
{ /*DISPLAY4*/
21,
{
"Licht aus nach:", /* German */
"Light off after:", /* English*/
"Licht uit na: ", /* Dutch */
}
},
 
{ /*DISPLAY5*/
21,
{
"LCD Helligk.:", /* German */
" Brightness :", /* English*/
" intensiteit:", /* Dutch */
}
},
 
{ /*DISPLAY6*/
21,
{
"LCD Kontrast:", /* German */
"LCD contrast:", /* English*/
"LCD contrast:", /* Dutch */
}
},
 
{ /*DISPLAY7*/
21,
{
"LCD Norm/Inv: ", /* German */
"LCD Norm/Inv: ", /* English*/
"LCD Norm/Inv: ", /* Dutch */
}
},
 
{ /*DISPLAY8*/
21,
{
"LCD Orient.: ", /* German */
"LCD Orient.: ", /* English*/
"LCD Orient.: ", /* Dutch */
}
},
 
{ /*DISPLAY9*/
21,
{
"RC Fehlerpiep :", /* German */
"RC Errorbeep :", /* English*/
"RC Errorbeep :", /* Dutch */
}
},
 
{ /*DEBUGPKT*/
21,
{
"Debug PKT", /* German */
"Debug PKT", /* English*/
"Debug PKT", /* Dutch */
}
},
 
{ /*WITXRX*/
21,
{
"Wi TX/RX Chan:", /* German */
"Wi TX/RX Chan:", /* English*/
"Wi TX/RX Chan:", /* Dutch */
}
},
 
{ /*WINETG*/
21,
{
"Wi NetW. Grp.:", /* German */
"Wi NetW. Grp.:", /* English*/
"Wi NetW. Grp.:", /* Dutch */
}
},
 
{ /*WINETM*/
21,
{
"Wi NetW. Mode:", /* German */
"Wi NetW. Mode:", /* English*/
"Wi NetW. Mode:", /* Dutch */
}
},
 
 
{ /*WITIMEOUT*/
21,
{
"Wi TX Timeout:", /* German */
"Wi TX Timeout:", /* English*/
"Wi TX Timeout:", /* Dutch */
}
},
 
{ /*WIUART*/
21,
{
"Wi UART MTU :", /* German */
"Wi UART MTU :", /* English*/
"Wi UART MTU :", /* Dutch */
}
},
 
{ /*WI2321*/
21,
{
"Wi.232 eingebaut:", /* German */
"Wi.232 built in :", /* English*/
"Wi.232 ingebouwd:", /* Dutch */
}
},
 
{ /*WI2322*/
21,
{
"Ist ein Wi.232-Modul ", /* German */
"Is Wi232 modul", /* English*/
"Is er een Wi.232", /* Dutch */
}
},
 
{ /*WI2323*/
21,
{
"eingebaut?", /* German */
"built in?", /* English*/
"module ingebouwd?", /* Dutch */
}
},
 
{ /*YES*/
21,
{
"Ja ", /* German */
"yes ", /* English*/
"Ja ", /* Dutch */
}
},
 
{ /*NO*/
21,
{
"Nein", /* German */
"no ", /* English*/
"Nee ", /* Dutch */
}
},
 
{ /*BT1*/
21,
{
" BTM222 Einstellungen", /* German */
" BTM-222 settings ", /* English*/
" BTM-222 settings ", /* Dutch */
}
},
 
{ /*BT2*/
21,
{
"Ist ein BTM-222-Modul", /* German */
"Is BTM-222 Modul", /* English*/
"Is er een BTM-222", /* Dutch */
}
},
 
{ /*BT3*/
21,
{
"eingebaut?", /* German */
"built in?", /* English*/
"module ingebouwd?", /* Dutch */
}
},
 
{ /*BT4*/
21,
{
"BTM222 eingebaut:", /* German */
"BTM222 built in :", /* English*/
"BTM222 ingebouwd:", /* Dutch */
}
},
 
 
{ /*LIPO1*/
21,
{
" PKT Akku Einstellung", /* German */
" PKT Accu Setup ", /* English*/
" PKT Accu Setup ", /* Dutch */
}
},
 
{ /*LIPO2*/
21,
{
"PKT Akkutyp: ", /* German */
"PKT Accutyp: ", /* English*/
"PKT Accutype: ", /* Dutch */
}
},
 
{ /*LIPO3*/
21,
{
"Akku U Offset: ", /* German */
"Accu U Offset: ", /* English*/
"Accu U Offset: ", /* Dutch */
}
},
 
{ /*LIPO4*/
21,
{
"PKT Akkutyp: ", /* German */
"PKT Accutyp: ", /* English*/
"PKT Accutype: ", /* Dutch */
}
},
 
{ /*LIPO5*/
21,
{
"Offset verstellen bis", /* German */
"adjust offset until", /* English*/
"Offset afregelen tot", /* Dutch */
}
},
 
{ /*LIPO6*/
21,
{
"die Spannung passt", /* German */
"voltage fits", /* English*/
"de spanning juist is.", /* Dutch */
}
},
 
{ /*LOWBAT*/
21,
{
"LowBat Warn V:", /* German */
"LowBat Warn V:", /* English*/
"LowBat alarm :", /* Dutch */
}
},
 
{ /*OSD_3D_V, vorne*/
21,
{
"V", /* German */
"F", /* English*/
"F", /* Dutch */
}
},
 
{ /*OSD_3D_H, hinten*/
21,
{
"H", /* German */
"B", /* English*/
"A", /* Dutch */
}
},
 
{ /*OSD_3D_L, links*/
21,
{
"L", /* German */
"L", /* English*/
"L", /* Dutch */
}
},
 
{ /*OSD_3D_R, rechts*/
21,
{
"R", /* German */
"R", /* English*/
"R", /* Dutch */
}
},
 
{ /*OSD_3D_NICK, Ni*/
21,
{
"Ni", /* German */
"Ni", /* English*/
"Ni", /* Dutch */
}
},
 
{ /*OSD_3D_ROLL, Ro*/
21,
{
"Ro", /* German */
"Ro", /* English*/
"Ro", /* Dutch */
}
},
 
{ /*OSD_3D_COMPASS, Ko*/
21,
{
"Ko", /* German */
"Co", /* English*/
"Co", /* Dutch */
}
},
 
{ /*OSD_ERROR*/
21,
{
"FEHLER: Datenverlust ", /* German */
"ERROR: Data lost", /* English*/
"verbinding verbroken ", /* Dutch */
}
},
 
{ /*OSD_POS1*/
21,
{
"Letzte bekannte", /* German */
"Last known ", /* English*/
"Laatst bekende", /* Dutch */
}
},
 
{ /*OSD_POS2*/
21,
{
"Position ", /* German */
"position ", /* English*/
"positie ", /* Dutch */
}
},
 
{ /*PARA_SETTINGS*/
21,
{
" Einstellungen ", /* German */
" Setting ", /* English*/
" Instellingen ", /* Dutch */
}
},
 
{ /*PARA_CHANGE*/
21,
{
"ändern", /* German */
"change", /* English*/
"verandering", /* Dutch */
}
},
 
{ /*PARA_AKTIVI*/
21,
{
"aktivieren", /* German */
"activate", /* English*/
"activeren", /* Dutch */
}
},
 
{ /*PARA_AKTIV*/
21,
{
"aktiviert", /* German */
"activated", /* English*/
"geactiveerd", /* Dutch */
}
},
 
{ /*PARA_SAVESETT*/
21,
{
" Setting x speichern?", /* German */
" store setting?", /* English*/
" instell.op te slaan?", /* Dutch */
}
},
 
{ /*PARA_SETTSAVED*/
21,
{
"Gespeichert und", /* German */
"stored and", /* English*/
"opgeslagen en", /* Dutch */
}
},
 
{ /*PARA_COPY*/
21,
{
"Kopiere Setting", /* German */
"copy settings", /* English*/
"kopieer instel.", /* Dutch */
}
},
 
{ /*PARA_FROMTO*/
21,
{
" von x nach y", /* German */
" from x to y", /* English*/
" van x na y", /* Dutch */
}
},
 
{ /*PARA_ENDE*/
21,
{
"von nach Ende OK", /* German */
"from to end OK", /* English*/
"van na einde OK", /* Dutch */
}
},
 
{ /*PARA_COPYQ*/
21,
{
"Wirklich kopieren?", /* German */
"really copy?", /* English*/
"echt kopie?", /* Dutch */
}
},
 
{ /*PARA_COPYACTIV*/
21,
{
"Kopiert und aktiviert", /* German */
"copied and activated ", /* English*/
"Kopieën en actief", /* Dutch */
}
},
 
{ /*PARA_CHANGESETT*/
21,
{
"Ändere Einstellungen ", /* German */
" change settings ", /* English*/
"instellingen wijzigen", /* Dutch */
}
},
 
{ /*PARA_SELECT*/
21,
{
" Wähle Parameter ", /* German */
" select parameters ", /* English*/
"Selecteer Parameters ", /* Dutch */
}
},
 
{ /*PARA_SEITE*/
21,
{
" Wähle Seite ", /* German */
" select page ", /* English*/
" Selecteer pagina ", /* Dutch */
}
},
 
{ /*PARA_SELSETT*/
21,
{
" Wähle Setting: ", /* German */
" select setting ", /* English*/
" Selecteer setting ", /* Dutch */
}
},
 
{ /*GPS1*/
21,
{
" GPS Einstellungen ", /* German */
" GPS settings ", /* English*/
" GPS settings ", /* Dutch */
}
},
 
{ /*GPS2*/
21,
{
"gewähltes GPS Gerät ", /* German */
"selected GPS device ", /* English*/
"selected GPS device ", /* Dutch */
}
},
 
{ /*GPS3*/
21,
{
"GPS Empf.einschalten?", /* German */
"receive GPS on? ", /* English*/
"receive GPS on? ", /* Dutch */
}
},
 
{ /*STATS_ITEM_0*/
21,
{
"max Höhe :", /* German */
"max Altitude:", /* English*/
"max Altitude:", /* Dutch */
}
},
 
{ /*STATS_ITEM_1*/
21,
{
"max Geschw. :", /* German */
"max Speed :", /* English*/
"max Speed :", /* Dutch */
}
},
 
{ /*STATS_ITEM_2*/
21,
{
"max Entfern.:", /* German */
"max Distance:", /* English*/
"max Distance:", /* Dutch */
}
},
 
{ /*STATS_ITEM_3*/
21,
{
"min Spannung:", /* German */
"min Voltage :", /* English*/
"min Voltage :", /* Dutch */
}
},
 
{ /*STATS_ITEM_4*/
21,
{
"max Zeit :", /* German */
"max Time :", /* English*/
"max Time :", /* Dutch */
}
},
 
{ /*STATS_ITEM_5*/
21,
{
"max Strom :", /* German */
"max Current :", /* English*/
"max Current :", /* Dutch */
}
},
 
{ /*STATS_ITEM_6*/
21,
{
"Ent.Kapazit.:", /* German */
"UsedCapacity:", /* English*/
"UsedCapacity:", /* Dutch */
}
},
 
{ /*STATS_ITEM_7*/
21,
{
"Long. :", /* German */
"Long. :", /* English*/
"Long. :", /* Dutch */
}
},
 
{ /*STATS_ITEM_8*/
21,
{
"Lat. :", /* German */
"Lat. :", /* English*/
"Lat. :", /* Dutch */
}
},
 
{ /*ONLY_NC*/
21,
{
"Nur mit NC ! ", /* German */
"Only with NC !", /* English*/
"Only with NC !", /* Dutch */
}
},
 
{ /*NO_SETTINGS*/
21,
{
"Keine Setings !! " , /* German */
"No settings read!!" , /* English*/
"No settings read!!" , /* Dutch */
}
},
 
{ /*OSD_ALTI_0*/
21,
{
"Höhe aus ", /* German */
"Alti. off ", /* English*/
"Alti. off ", /* Dutch */
}
},
 
{ /*OSD_ALTI_1*/
21,
{
"Höhe begr.", /* German */
"Alti.Limit", /* English*/
"Alti.Limit", /* Dutch */
}
},
 
{ /*OSD_VARIO_0*/
21,
{
"Vario aus ", /* German */
"Vario off ", /* English*/
"Vario off ", /* Dutch */
}
},
 
{ /*OSD_VARIO_1*/
21,
{
"Vario Höhe", /* German */
"Vario Alt.", /* English*/
"Vario Alt.", /* Dutch */
}
},
 
{ /*OSD_CARE_FREE_0*/
21,
{
" ", /* German */
" ", /* English*/
" ", /* Dutch */
}
},
 
{ /*OSD_CARE_FREE_1*/
21,
{
"Care Free", /* German */
"Care Free", /* English*/
"Care Free", /* Dutch */
}
},
 
{ /*OSD_LED0*/
21,
{
" ", /* German */
" ", /* English*/
" ", /* Dutch */
}
},
 
{ /*OSD_LED1*/
21,
{
"LED1", /* German */
"LED1", /* English*/
"LED1", /* Dutch */
}
},
 
{ /*OSD_LED2*/
21,
{
"LED2", /* German */
"LED2", /* English*/
"LED2", /* Dutch */
}
},
 
{ /*OSD_NAVI_MODE_0*/
21,
{
"Navi aus ", /* German */
"Navi off ", /* English*/
"Navi off ", /* Dutch */
}
},
 
{ /*OSD_NAVI_MODE_1*/
21,
{
"Pos. halten", /* German */
"Pos. Hold ", /* English*/
"Pos. Hold ", /* Dutch */
}
},
 
{ /*OSD_NAVI_MODE_2*/
21,
{
"Coming Home", /* German */
"Coming Home", /* English*/
"Coming Home", /* Dutch */
}
},
 
{ /*OSD_FLAGS_0*/
21,
{
" ", /* German */
" ", /* English*/
" ", /* Dutch */
}
},
 
{ /*OSD_FLAGS_1*/
21,
{
"Justieren", /* German */
"Calibrate", /* English*/
"Calibrate", /* Dutch */
}
},
 
{ /*OSD_FLAGS_2*/
21,
{
"Start ", /* German */
"Start ", /* English*/
"Start ", /* Dutch */
}
},
 
{ /*OSD_FLAGS_3*/
21,
{
"Betrieb ", /* German */
"Run ", /* English*/
"Run ", /* Dutch */
}
},
 
{ /*OSD_FLAGS_4*/
21,
{
"Fliegen ", /* German */
"Fly ", /* English*/
"Fly ", /* Dutch */
}
},
 
{ /*OSD_FLAGS_5*/
21,
{
"Landung ", /* German */
"Landing ", /* English*/
"Landing ", /* Dutch */
}
},
 
{ /*OSD_FLAGS_6*/
21,
{
"Akku leer", /* German */
"Low Bat. ", /* English*/
"Low Bat ", /* Dutch */
}
},
 
{ /*OSD_Screen*/
21,
{
" OSD Anzeige Setup ", /* German */
" OSD screen setup ", /* English*/
" OSD screen setup ", /* Dutch */
}
},
 
{ /*OSD_Invert_Out*/
21,
{
"Out1/2 negiert :", /* German */
"Out1/2 inverted:", /* English*/
"Out1/2 inverted:", /* Dutch */
}
},
 
{ /*OSD_LED_Form*/
21,
{
"Out1/2 Format:", /* German */
"Out1/2 format:", /* English*/
"Out1/2 format:", /* Dutch */
}
},
 
{ /*OSD_Send_OSD*/
21,
{
"Navidata an SV2:", /* German */
"Navidata to SV2:", /* English*/
"Navidata to SV2:", /* Dutch */
 
}
},
{ /*OSD_Fallspeed*/
21,
{
"m. Sinkrate m/s:", /* German */
"m.fallspeed m/s:", /* English*/
"m.fallspeed m/s:", /* Dutch */
}
},
{ /*OSD_VARIOBEEP*/
21,
{
"Variometer Beep:", /* German */
"variometer beep:", /* English*/
"variometer beep:", /* Dutch */
}
},
{ /*OSD_HOMEMKVIEW*/
21,
{
"Homesicht von MK:", /* German */
"homeview from MK:", /* English*/
"homeview from MK:", /* Dutch */
}
},
{ /*OSD_MAHWARNING*/
21,
{
"mAh Warnung > :", /* German */
"mAh warning > :", /* English*/
"mAh warning > :", /* Dutch */
}
},
{ /*OSD_SCREENMODE*/
21,
{
"OSD Anzeigevar:", /* German */
"OSD screenmode:", /* English*/
"OSD screenmode:", /* Dutch */
}
},
{ /*OSD_LIPOBAR*/
21,
{
"MK Volt Balken:", /* German */
"MK volt bargraph:", /* English*/
"MK volt bargraph:", /* Dutch */
 
}
},
{ /*PKT_BAUDRATE*/
21,
{
"Baud Wi232/BT:", /* German */
"Baud Wi232/BT:", /* English*/
"Baud Wi232/BT:", /* Dutch */
 
}
},
{ /*FOLLOWME_0*/
21,
{
" Follow Me Setup ", /* German */
" Follow Me Setup ", /* English*/
" Follow Me Setup ", /* Dutch */
 
}
 
},
{ /*FOLLOWME_1*/
21,
{
" Refresh :", /* German */
" Refresh :", /* English*/
" Refresh :", /* Dutch */
 
}
 
},
{ /*FOLLOWME_2*/
21,
{
"Geschwindigkeit:", /* German */
" Speed :", /* English*/
" Speed :", /* Dutch */
 
}
 
},
{ /*FOLLOWME_3*/
21,
{
"Toleranz Radius:", /* German */
"Toleranz Radius:", /* English*/
"Toleranz Radius:", /* Dutch */
 
}
 
},
{ /*HWSOUND*/
21,
{
"Tonausgabe Erw.:", /* German */
"sound extension:", /* English*/
"sound extension:", /* Dutch */
 
}
 
},
{ /*HWBEEPER*/
21,
{
"Hardware Pieper:", /* German */
"hardware beep :", /* English*/
"hardware beep :", /* Dutch */
 
}
 
},
{ /*VOLUME*/
21,
{
"Lautstärke :", /* German */
"volume :", /* English*/
"volume :", /* Dutch */
 
}
 
},
{ /*SERCHAN_0*/
21,
{
"serielle Kanäle Setup", /* German */
"serial channel setup", /* English*/
"serial channel setup", /* Dutch */
 
}
 
},
{ /*SERCHAN_1*/
21,
{
"serielle Kanäle Setup", /* German */
"serial channel setup", /* English*/
"serial channel setup", /* Dutch */
 
}
 
},
{ /*SERCHAN_2*/
21,
{
"Lipo Messung:", /* German */
"Lipo check :", /* English*/
"Lipo check :", /* Dutch */
 
}
 
},
{ /*SERCHAN_3*/
21,
{
"Kanal ", /* German */
"Channel ", /* English*/
"Channel ", /* Dutch */
 
}
 
},
{ /*SERVOSTEPS*/
21,
{
"Servoschritte: ", /* German */
"servosteps : ", /* English*/
"servosteps : ", /* Dutch */
 
}
 
},
{ /*SERVO1_TEXT*/
21,
{
" Servo 1 ", /* German */
" servo 1 ", /* English*/
" servo 1 ", /* Dutch */
 
}
},
{ /*SERVO2_TEXT*/
21,
{
" Servo 2 ", /* German */
" servo 2 ", /* English*/
" servo 2 ", /* Dutch */
 
}
},
{ /*SERVO_REVERSE*/
21,
{
"Reverse:", /* German */
"Reverse:", /* English*/
"Reverse:", /* Dutch */
 
}
},
{ /*SERVO_LEFT*/
21,
{
"Links:", /* German */
"lefth:", /* English*/
"lefth:", /* Dutch */
 
}
},
{ /*SERVO_RIGHT*/
21,
{
"Rechts:", /* German */
"right:", /* English*/
"right:", /* Dutch */
 
}
},
{ /*SERVO_MIDDLE*/
21,
{
"Mitte:", /* German */
"middle:", /* English*/
"middle:", /* Dutch */
 
}
},
{ /*SERVO_TEST1*/
21,
{
"Test Pulslänge ", /* German */
"test framewidth ", /* English*/
"test framewidth ", /* Dutch */
 
}
},
{ /*SV_TEST2*/
21,
{
" Servo zum Testen ", /* German */
" servo to test ", /* English*/
" servo to test ", /* Dutch */
 
}
},
{ /*SV_TEST3*/
21,
{
" Periode ", /* German */
" frame ", /* English*/
" frame ", /* Dutch */
 
}
},
{ /*SV_TESTCONT*/
21,
{
"Test fortlaufend ", /* German */
"test continues ", /* English*/
"test continues ", /* Dutch */
 
}
},
{ /*SV_SINGLESTEP*/
21,
{
"Einzelschritt ", /* German */
"single step ", /* English*/
"single step ", /* Dutch */
 
}
},
{ /*SV_COUNTTEST*/
21,
{
"Anzahl ", /* German */
"test count ", /* English*/
"test count ", /* Dutch */
 
}
},
{ /*SV_PAUSEEND*/
21,
{
"Pause Endposition ", /* German */
"pause endposition ", /* English*/
"pause endposition ", /* Dutch */
 
}
},
{ /*SV_PAUSEINC*/
21,
{
"Pause pro Inc. ", /* German */
"Pause pro Inc. ", /* English*/
"Pause pro Inc. ", /* Dutch */
 
}
},
{ /*GPS_MOUSETYP*/
21,
{
"GPS Maus :", /* German */
"GPS mouse:", /* English*/
"GPS mouse:", /* Dutch */
 
}
},
{ /*GPS_MOUSE1*/
21,
{
"GPS BT Mouse 1 ", /* German */
"GPS BT Mouse 1 ", /* English*/
"GPS BT Mouse 1 ", /* Dutch */
 
}
},
{ /*GPS_MK*/
21,
{
"GPS Pos. vom MK ", /* German */
"GPS pos. from MK ", /* English*/
"GPS pos. from MK ", /* Dutch */
 
}
},
{ /*STICK_MIN*/
21,
{
"Stick min. Wert: ", /* German */
"stick min. value: ", /* English*/
"stick min. value: ", /* Dutch */
 
}
},
{ /*STICK_MAX*/
21,
{
"Stick max. Wert: ", /* German */
"stick max. value: ", /* English*/
"stick max. value: ", /* Dutch */
 
}
},
{ /*STICK_DIR*/
21,
{
"Richtung: ", /* German */
"direction: ", /* English*/
"direction: ", /* Dutch */
 
}
},
{ /*STICK_TYPE*/
21,
{
"Sticktype: ", /* German */
"sticktype: ", /* English*/
"sticktype: ", /* Dutch */
 
}
},
{ /*STICK_NEUTRAL*/
21,
{
"Neutralisierend:", /* German */
"neutralizing:", /* English*/
"neutralizing:", /* Dutch */
 
}
},
{ /*LIPO_MESSUNG*/
21,
{
"Lipo Messung: ", /* German */
"Lipo measurement: ", /* English*/
"Lipo measurement: ", /* Dutch */
 
}
},
{ /*POTI*/
21,
{
"Poti ", /* German */
"poti ", /* English*/
"poti ", /* Dutch */
 
}
},
{ /*TASTER*/
21,
{
"Taster", /* German */
"switch", /* English*/
"switch", /* Dutch */
 
}
}
 
};
 
 
char const * strGet(int str_no)
{
return (char*)pgm_read_word(&strings[str_no].text[Config.DisplayLanguage]);
}
 
 
//void Test_Language (void) // bleibt für Tests
//{
// lcd_cls();
// lcd_puts_at(12, 7, strGet(YESNO),0);
//
// do
// {
// lcd_puts_at(0, 2, strGet(TESTSTRING), 0);
// }
// while(!get_key_press (1 << KEY_ESC));
// get_key_press(KEY_ALL);
// return;
//}
 
 
Property changes:
Added: svn:mime-type
+text/plain
\ No newline at end of property
/Transportables_Koptertool/branch/test2/GPL_PKT_V3_6_7f_FC090b/messages.h
0,0 → 1,58
/****************************************************************************************
* Copyright (C) 2011 Christian "Cebra" Brandtner, brandtner@brandtner.net *
* *
* 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. *
* *
* *
* Languagesupport: *
* http://www.netrino.com/Embedded-Systems/How-To/Firmware-Internationalization *
* Nigel Jones *
****************************************************************************************/
 
#ifndef MESSAGES_H
#define MESSAGES_H
 
 
//---------------------------------------------------------------------------------------------------------------------
// Typdefinitionen für alle verwendeten Strings, LAST_STR muss am Ende stehen bleiben
typedef enum
{
TESTSTRING, KEYLINE1, KEYLINE2, KEYLINE3, KEYLINE4, KEYLINE5, BOOT1, BOOT2, BOOT_WI1, BOOT_WI2, BOOT_SV, START_MSG1, START_MSG2, GNU_GPL, ATMEGA644,
ATMEGA644P, ATMEGA1284P, HW12, HW12W, HW13, HW13W, HW39, START_LASTPOS, START_LASTPOS1, START_LASTPOS2, START_LASTPOS3, START_LASTPOSDEL,
START_SEARCHFC, ENDE, OK, FEHLER, AKTIV, START_FCNOTFOUND, START_FCFOUND, START_FCFOUND1, START_FCFOUND2, START_FCFOUND3, START_VERSIONCHECK,
START_VERSIONCHECK1, START_VERSIONCHECK2, START_VERSIONCHECK3, START_VERSIONCHECK4, START_VERSIONCHECK5, ON, OFF, ESC, SHUTDOWN, YESNO,
UPDATE1, UPDATE2, ENDSTART, TOOLS1, CONNECT1, CONNECT2, CONNECT4, CONNECT5, CONNECT6, CONNECT7, CONNECT8, CONNECT9, CONNECT10, CONNECT11, CONNECT12,
CONNECT13, CONNECT14, CONNECT15, CONNECT16, CONNECT17, CONNECT18, CONNECT19, CONNECT20, CONNECT21, CONNECT22, CONNECT23, CONNECT24, CONNECT25,
CONNECT26, CONNECT27, CONNECT28, CONNECT29, CONNECT30, CONNECT31, KABEL, SLAVE, NORMAL, REVERSE, ENDOK, EEPROM1, EEPROM2, DEUTSCH, ENGLISCH, FRANCE,
NETHERL, DISPLAY1, DISPLAY2, DISPLAY3, DISPLAY4, DISPLAY5, DISPLAY6, DISPLAY7, DISPLAY8, DISPLAY9, DEBUGPKT, WITXRX, WINETWG, WINETWM, WITIMEOUT,
WIUART, WI2321, WI2322, WI2323, YES, NOO, BT1, BT2, BT3, BT4, LIPO1, LIPO2, LIPO3, LIPO4, LIPO5, LIPO6, LOWBAT, OSD_3D_V, OSD_3D_H, OSD_3D_L,
OSD_3D_R, OSD_3D_NICK, OSD_3D_ROLL, OSD_3D_COMPASS, OSD_ERROR, OSD_POS1, OSD_POS2, PARA_SETTINGS, PARA_CHANGE, PARA_AKTIVI, PARA_AKTIV,
PARA_SAVESETT, PARA_SETTSAVED, PARA_COPY, PARA_FROMTO, PARA_ENDE, PARA_COPYQ, PARA_COPYACTIV, PARA_CHANGESETT, PARA_SELECT, PARA_SEITE,
PARA_SELSETT, GPS1, GPS2, GPS3, STATS_ITEM_0, STATS_ITEM_1, STATS_ITEM_2, STATS_ITEM_3, STATS_ITEM_4, STATS_ITEM_5, STATS_ITEM_6, STATS_ITEM_7,
STATS_ITEM_8, ONLY_NC, NO_SETTINGS, OSD_ALTI_0, OSD_ALTI_1, OSD_VARIO_0, OSD_VARIO_1, OSD_CARE_FREE_0, OSD_CARE_FREE_1, OSD_LED0, OSD_LED1, OSD_LED2,
OSD_NAVI_MODE_0, OSD_NAVI_MODE_1, OSD_NAVI_MODE_2, OSD_FLAGS_0, OSD_FLAGS_1, OSD_FLAGS_2, OSD_FLAGS_3, OSD_FLAGS_4, OSD_FLAGS_5, OSD_FLAGS_6,
OSD_Screen, OSD_Invert_Out, OSD_LED_Form, OSD_Send_OSD,FALLSPEED,OSD_VARIOBEEP,OSD_HOMEMKVIEW,OSD_MAHWARNING,OSD_SCREENMODE,OSD_LIPOBAR,PKT_BAUDRATE,
FOLLOWME_0, FOLLOWME_1,FOLLOWME_2,FOLLOWME_3, HWSOUND, HWBEEPER, VOLUME, SERCHAN_0, SERCHAN_1, SERCHAN_2, SERCHAN_3, SERVOSTEPS,SERVO1_TEXT, SERVO2_TEXT,
SERVO_REVERSE, SERVO_LEFT, SERVO_RIGTH, SERVO_MID, SERVO_TEST1, SV_TEST2, SV_TEST3, SV_TESTCONT, SV_SINGLESTEP, SV_COUNTTEST, SV_PAUSEEND,
SV_PAUSEINC,GPS_MOUSETYP,GPS_MOUSE1,GPS_MK,STICK_MIN, STICK_MAX, STICK_DIR, STICK_TYPE, STICK_NEUTRAL, LIPO_MESSUNG,POTI,TASTER, LAST_STR,
} STR;
 
#define NUM_LANG 3 // German, English,Netherlands
 
char const * strGet(int str_no);
void Test_Language (void); // bleibt für Tests
 
 
#endif /* _MESSAGES_H_ */
Property changes:
Added: svn:mime-type
+text/plain
\ No newline at end of property
/Transportables_Koptertool/branch/test2/GPL_PKT_V3_6_7f_FC090b/mk-data-structs.h
0,0 → 1,491
/*****************************************************************************
* 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*
*****************************************************************************/
 
 
#ifndef _MK_DATA_STRUCTS_H
#define _MK_DATA_STRUCTS_H
 
#include "main.h"
 
//--------------------------------------------------------------------------------
#ifdef MKVERSION088n
// FC Version 0.88m
#define EEProm_Version 91 // FC EEProm Revision / Struktur FC 0.87
#define FC_Version "0.88n" //Softwareversion der FC
 
#define VERSION_MAJOR 0
#define VERSION_MINOR 88
#define VERSION_PATCH 12
#define VERSION_SERIAL_MAJOR 11 // Serial Protocol
#define VERSION_SERIAL_MINOR 0 // Serial Protocol
#define NC_SPI_COMPATIBLE 51 // Navi-Kompatibilität
#warning "FC-Version 0.88n"
#endif
//--------------------------------------------------------------------------------
#ifdef MKVERSION090b
// FC Version 0.89b
#define EEProm_Version 92 // FC EEProm Revision / Struktur FC 0.87
#define FC_Version "0.90b" //Softwareversion der FC
 
#define VERSION_MAJOR 0
#define VERSION_MINOR 89
#define VERSION_PATCH 2
#define VERSION_SERIAL_MAJOR 11 // Serial Protocol
#define VERSION_SERIAL_MINOR 0 // Serial Protocol
#define NC_SPI_COMPATIBLE 52 // Navi-Kompatibilität
#warning "FC-Version 0.90b"
#endif
//--------------------------------------------------------------------------------
 
 
 
 
#define u8 uint8_t
#define s8 int8_t
#define u16 uint16_t
#define s16 int16_t
#define u32 uint32_t
#define s32 int32_t
 
#define NUMBER_OF_DEBUG_DATAS 32
#define ANALOG_NAME_LENGTH 16
 
// Version of supported serial protocol
#define MIN_VERSION 7
#define MAX_VERSION 10
 
// Setting index
#define SETTING_1 1
#define SETTING_2 2
#define SETTING_3 3
#define SETTING_4 4
#define SETTING_5 5
#define SETTING_CURRENT 0xff
 
 
// MikroKopter defines
// taken from
// FC Software eeprom.h
//
 
//GlobalConfig3 aus FC/eeprom.h
#define CFG3_NO_SDCARD_NO_START 0x01
#define CFG3_DPH_MAX_RADIUS 0x02
#define CFG3_VARIO_FAILSAFE 0x04
#define CFG3_MOTOR_SWITCH_MODE 0x08 //FC0.88L 7.5.12
#define CFG3_NO_GPSFIX_NO_START 0x10 //FC0.88L 7.5.12
#ifdef MKVERSION090b
#define CFG3_USE_NC_FOR_OUT1 0x20
#define CFG3_SPEAK_ALL 0x40
#endif
 
//GlobalConfig
#define CFG_HOEHENREGELUNG 0x01
#define CFG_HOEHEN_SCHALTER 0x02
#define CFG_HEADING_HOLD 0x04
#define CFG_KOMPASS_AKTIV 0x08
#define CFG_KOMPASS_FIX 0x10
#define CFG_GPS_AKTIV 0x20
#define CFG_ACHSENKOPPLUNG_AKTIV 0x40
#define CFG_DREHRATEN_BEGRENZER 0x80
 
//Bitconfig MAsk
#define CFG_LOOP_OBEN 0x01
#define CFG_LOOP_UNTEN 0x02
#define CFG_LOOP_LINKS 0x04
#define CFG_LOOP_RECHTS 0x08
#define CFG_MOTOR_BLINK1 0x10
#define CFG_MOTOR_OFF_LED1 0x20
#define CFG_MOTOR_OFF_LED2 0x40
#define CFG_MOTOR_BLINK2 0x80
 
// ServoCompInvert, FC0.89
 
#define SVNick 0x01
#define SVRoll 0x02
#define SVRelMov 0x04
 
// ExtraConfig
#define CFG2_HEIGHT_LIMIT 0x01
#define CFG2_VARIO_BEEP 0x02
#define CFG_SENSITIVE_RC 0x04
#define CFG_3_3V_REFERENCE 0x08
#define CFG_NO_RCOFF_BEEPING 0x10
#define CFG_GPS_AID 0x20
#define CFG_LEARNABLE_CAREFREE 0x40
#define CFG_IGNORE_MAG_ERR_AT_STARTUP 0x80
 
// bit mask for ParamSet.Config0
#define CFG0_AIRPRESS_SENSOR 0x01
#define CFG0_HEIGHT_SWITCH 0x02
#define CFG0_HEADING_HOLD 0x04
#define CFG0_COMPASS_ACTIVE 0x08
#define CFG0_COMPASS_FIX 0x10
#define CFG0_GPS_ACTIVE 0x20
#define CFG0_AXIS_COUPLING_ACTIVE 0x40
#define CFG0_ROTARY_RATE_LIMITER 0x80
 
// defines for the receiver selection
#define RECEIVER_PPM 0
#define RECEIVER_SPEKTRUM 1
#define RECEIVER_SPEKTRUM_HI_RES 2
#define RECEIVER_SPEKTRUM_LOW_RES 3
#define RECEIVER_JETI 4
#define RECEIVER_ACT_DSL 5
#define RECEIVER_HOTT 6
#define RECEIVER_SBUS 7
#define RECEIVER_USER 8
#define RECEIVER_UNKNOWN 0xFF
 
// MikroKopter Flags
// taken from
// http://svn.mikrokopter.de/mikrowebsvn/filedetails.php?repname=FlightCtrl&path=%2Ftags%2FV0.73d%2Ffc.h
//alt 0.86
//#define FCFLAG_MOTOR_RUN 0x01
//#define FCFLAG_FLY 0x02
//#define FCFLAG_CALIBRATE 0x04
//#define FCFLAG_START 0x08
//#define FCFLAG_NOTLANDUNG 0x10
//#define FCFLAG_LOWBAT 0x20
//#define FCFLAG_SPI_RX_ERR 0x40
//#define FCFLAG_I2CERR 0x80
// FC_StatusFlags 0.88
#define FC_STATUS_MOTOR_RUN 0x01
#define FC_STATUS_FLY 0x02
#define FC_STATUS_CALIBRATE 0x04
#define FC_STATUS_START 0x08
#define FC_STATUS_EMERGENCY_LANDING 0x10
#define FC_STATUS_LOWBAT 0x20
#define FC_STATUS_VARIO_TRIM_UP 0x40
#define FC_STATUS_VARIO_TRIM_DOWN 0x80
 
// FC_StatusFlags2
#define FC_STATUS2_CAREFREE 0x01
#define FC_STATUS2_ALTITUDE_CONTROL 0x02
#define FC_STATUS2_RC_FAILSAVE_ACTIVE 0x04
#define FC_STATUS2_OUT1_ACTIVE 0x08
#define FC_STATUS2_OUT2_ACTIVE 0x10
 
// NaviCtrl Flags
// taken from
// http://mikrocontroller.cco-ev.de/mikrowebsvn/filedetails.php?repname=NaviCtrl&path=%2Ftags%2FV0.15c%2Fuart1.h
//
#define NC_FLAG_FREE 0x01
#define NC_FLAG_PH 0x02
#define NC_FLAG_CH 0x04
#define NC_FLAG_RANGE_LIMIT 0x08
#define NC_FLAG_NOSERIALLINK 0x10
#define NC_FLAG_TARGET_REACHED 0x20
#define NC_FLAG_MANUAL_CONTROL 0x40
#define NC_FLAG_GPS_OK 0x80
 
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;
 
 
// FC Debug Struct
// portions taken and adapted from
// http://svn.mikrokopter.de/mikrowebsvn/filedetails.php?repname=FlightCtrl&path=%2Ftags%2FV0.72p%2Fuart.h
//
typedef struct // 0.86
{
uint8_t Digital[2];
// NC: unsigned; FC: signed !!!!
int16_t Analog[32]; // Debugvalues
} __attribute__((packed)) DebugData_t;
 
//******************************************************************
// uart1.h NC 0.87, zur Zeit hier nicht verwendet 28.01.2012 CB
 
#define AMPEL_FC 0x01
#define AMPEL_BL 0x02
#define AMPEL_NC 0x04
#define AMPEL_COMPASS 0x08
 
 
typedef struct //0.87
{
u8 StatusGreen;
u8 StatusRed;
u16 Analog[32]; // Debugwerte
} __attribute__((packed)) DebugOut_t;
//******************************************************************
 
 
// NaviCtrl OSD Structs
// portions taken and adapted from
// http://svn.mikrokopter.de/mikrowebsvn/filedetails.php?repname=NaviCtrl&path=%2Ftags%2FV0.15c%2Fuart1.h
//
 
typedef struct //NC uart1.h
{
s16 AngleNick; // in 0.1 deg
s16 AngleRoll; // in 0.1 deg
s16 Heading; // in 0.1 deg
u8 StickNick;
u8 StickRoll;
u8 StickYaw;
u8 StickGas;
u8 reserve[4];
} __attribute__((packed)) Data3D_t;
 
 
 
typedef struct
{
s32 Longitude; // in 1E-7 deg
s32 Latitude; // in 1E-7 deg
s32 Altitude; // in mm
u8 Status; // validity of data
} __attribute__((packed)) GPS_Pos_t;
 
 
typedef struct
{
u16 Distance; // distance to target in cm
s16 Bearing; // course to target in deg
} __attribute__((packed)) GPS_PosDev_t;
 
 
// aus NC waypoint.h
typedef struct
{
GPS_Pos_t Position; // the gps position of the waypoint, see ubx.h for details
s16 Heading; // orientation, 0 no action, 1...360 fix heading, neg. = Index to POI in WP List
u8 ToleranceRadius; // in meters, if the MK is within that range around the target, then the next target is triggered
u8 HoldTime; // in seconds, if the was once in the tolerance area around a WP, this time defines the delay before the next WP is triggered
u8 Event_Flag; // future implementation
u8 Index; // to indentify different waypoints, workaround for bad communications PC <-> NC
u8 Type; // typeof Waypoint
u8 WP_EventChannelValue; //
u8 AltitudeRate; // rate to change the setpoint
u8 Speed; // rate to change the Position
u8 CamAngle; // Camera servo angle
u8 reserve[6]; // reserve
} __attribute__((packed)) Point_t;
 
 
// NaviCtrl struct
// taken from
// http://mikrocontroller.cco-ev.de/mikrowebsvn/filedetails.php?repname=NaviCtrl&path=%2Ftags%2FV0.15c%2Fuart1.h
//
#define NAVIDATA_VERSION 5
 
typedef struct
{
u8 Version; // version of the data structure
GPS_Pos_t CurrentPosition; // see ubx.h for details
GPS_Pos_t TargetPosition;
GPS_PosDev_t TargetPositionDeviation;
GPS_Pos_t HomePosition;
GPS_PosDev_t HomePositionDeviation;
u8 WaypointIndex; // index of current waypoints running from 0 to WaypointNumber-1
u8 WaypointNumber; // number of stored waypoints
u8 SatsInUse; // number of satellites used for position solution
s16 Altimeter; // hight according to air pressure
s16 Variometer; // climb(+) and sink(-) rate
u16 FlyingTime; // in seconds
u8 UBat; // Battery Voltage in 0.1 Volts
u16 GroundSpeed; // speed over ground in cm/s (2D)
s16 Heading; // current flight direction in ° as angle to north
s16 CompassHeading; // current compass value in
s8 AngleNick; // current Nick angle in 1
s8 AngleRoll; // current Roll angle in 1
u8 RC_Quality; // RC_Quality
u8 FCStatusFlags; // Flags from FC
u8 NCFlags; // Flags from NC
u8 Errorcode; // 0 --> okay
u8 OperatingRadius; // current operation radius around the Home Position in m
s16 TopSpeed; // velocity in vertical direction in cm/s
u8 TargetHoldTime; // time in s to stay at the given target, counts down to 0 if target has been reached
u8 FCStatusFlags2; // StatusFlags2 (since version 5 added)
s16 SetpointAltitude; // setpoint for altitude
u8 Gas; // for future use
u16 Current; // actual current in 0.1A steps
u16 UsedCapacity; // used capacity in mAh
} __attribute__((packed)) NaviData_t;
 
 
typedef struct
{
uint8_t Version; // the version of the BL (0 = old)
uint8_t SetPoint; // written by attitude controller
uint8_t SetPointLowerBits; // for higher Resolution of new BLs
uint8_t State; // 7 bit for I2C error counter, highest bit indicates if motor is present
uint8_t ReadMode; // select data to read
// the following bytes must be exactly in that order!
uint8_t Current; // in 0.1 A steps, read back from BL
uint8_t MaxPWM; // read back from BL -> is less than 255 if BL is in current limit, not running (250) or starting (40)
int8_t Temperature; // old BL-Ctrl will return a 255 here, the new version the temp. in �C
} __attribute__((packed)) MotorData_t;
 
typedef struct
{
uint8_t Revision; // must be BL_REVISION
uint8_t SetMask; // settings mask
uint8_t PwmScaling; // maximum value of control pwm, acts like a thrust limit
uint8_t CurrentLimit; // current limit in A
uint8_t TempLimit; // in �C
uint8_t CurrentScaling; // scaling factor for current measurement
uint8_t BitConfig; // see defines above
uint8_t crc; // checksum
} __attribute__((packed)) BLConfig_t;
 
 
// Aus FC eeprom.h
//
typedef struct
{
unsigned char Revision;
unsigned char Kanalbelegung[12]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3
unsigned char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv
unsigned char Hoehe_MinGas; // Wert : 0-100
unsigned char Luftdruck_D; // Wert : 0-250
unsigned char MaxHoehe; // Wert : 0-32
unsigned char Hoehe_P; // Wert : 0-32
unsigned char Hoehe_Verstaerkung; // Wert : 0-50
unsigned char Hoehe_ACC_Wirkung; // Wert : 0-250
unsigned char Hoehe_HoverBand; // Wert : 0-250
unsigned char Hoehe_GPS_Z; // Wert : 0-250
unsigned char Hoehe_StickNeutralPoint;// Wert : 0-250
unsigned char Stick_P; // Wert : 1-6
unsigned char Stick_D; // Wert : 0-64
unsigned char StickGier_P; // Wert : 1-20
unsigned char Gas_Min; // Wert : 0-32
unsigned char Gas_Max; // Wert : 33-250
unsigned char GyroAccFaktor; // Wert : 1-64
unsigned char KompassWirkung; // Wert : 0-32
unsigned char Gyro_P; // Wert : 10-250
unsigned char Gyro_I; // Wert : 0-250
unsigned char Gyro_D; // Wert : 0-250
unsigned char Gyro_Gier_P; // Wert : 10-250
unsigned char Gyro_Gier_I; // Wert : 0-250
unsigned char Gyro_Stability; // Wert : 0-16
unsigned char UnterspannungsWarnung; // Wert : 0-250
unsigned char NotGas; // Wert : 0-250 //Gaswert bei EmpÀngsverlust
unsigned char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen
unsigned char Receiver; // 0= Summensignal, 1= Spektrum, 2 =Jeti, 3=ACT DSL, 4=ACT S3D
unsigned char I_Faktor; // Wert : 0-250
unsigned char UserParam1; // Wert : 0-250
unsigned char UserParam2; // Wert : 0-250
unsigned char UserParam3; // Wert : 0-250
unsigned char UserParam4; // Wert : 0-250
unsigned char ServoNickControl; // Wert : 0-250 // Stellung des Servos
unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo
unsigned char ServoNickMin; // Wert : 0-250 // Anschlag
unsigned char ServoNickMax; // Wert : 0-250 // Anschlag
//--- Seit V0.75
unsigned char ServoRollControl; // Wert : 0-250 // Stellung des Servos
unsigned char ServoRollComp; // Wert : 0-250
unsigned char ServoRollMin; // Wert : 0-250
unsigned char ServoRollMax; // Wert : 0-250
//---
unsigned char ServoNickRefresh; // Speed of the Servo
unsigned char ServoManualControlSpeed;//
unsigned char CamOrientation; //
unsigned char Servo3; // Value or mapping of the Servo Output
unsigned char Servo4; // Value or mapping of the Servo Output
unsigned char Servo5; // Value or mapping of the Servo Output
unsigned char LoopGasLimit; // Wert: 0-250 max. Gas wÀhrend Looping
unsigned char LoopThreshold; // Wert: 0-250 Schwelle fÃŒr Stickausschlag
unsigned char LoopHysterese; // Wert: 0-250 Hysterese fÃŒr Stickausschlag
unsigned char AchsKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick koppelt (NickRollMitkopplung)
unsigned char AchsKopplung2; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden
unsigned char CouplingYawCorrection; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden
unsigned char WinkelUmschlagNick; // Wert: 0-250 180°-Punkt
unsigned char WinkelUmschlagRoll; // Wert: 0-250 180°-Punkt
unsigned char GyroAccAbgleich; // 1/k (Koppel_ACC_Wirkung)
unsigned char Driftkomp;
unsigned char DynamicStability;
unsigned char UserParam5; // Wert : 0-250
unsigned char UserParam6; // Wert : 0-250
unsigned char UserParam7; // Wert : 0-250
unsigned char UserParam8; // Wert : 0-250
//---Output ---------------------------------------------
unsigned char J16Bitmask; // for the J16 Output
unsigned char J16Timing; // for the J16 Output
unsigned char J17Bitmask; // for the J17 Output
unsigned char J17Timing; // for the J17 Output
// seit version V0.75c
unsigned char WARN_J16_Bitmask; // for the J16 Output
unsigned char WARN_J17_Bitmask; // for the J17 Output
//---NaviCtrl---------------------------------------------
#ifdef MKVERSION090b
unsigned char NaviOut1Parameter; // for the J16 Output
#endif
unsigned char NaviGpsModeControl; // Parameters for the Naviboard
unsigned char NaviGpsGain;
unsigned char NaviGpsP;
unsigned char NaviGpsI;
unsigned char NaviGpsD;
unsigned char NaviGpsPLimit;
unsigned char NaviGpsILimit;
unsigned char NaviGpsDLimit;
unsigned char NaviGpsACC;
unsigned char NaviGpsMinSat;
unsigned char NaviStickThreshold;
unsigned char NaviWindCorrection;
unsigned char NaviAccCompensation; // New since 0.86 -> was: SpeedCompensation
unsigned char NaviOperatingRadius;
unsigned char NaviAngleLimitation;
unsigned char NaviPH_LoginTime;
//---Ext.Ctrl---------------------------------------------
unsigned char ExternalControl; // for serial Control
//---CareFree---------------------------------------------
unsigned char OrientationAngle; // Where is the front-direction?
unsigned char CareFreeModeControl; // switch for CareFree
unsigned char MotorSafetySwitch;
unsigned char MotorSmooth;
unsigned char ComingHomeAltitude;
unsigned char FailSafeTime;
unsigned char MaxAltitude;
unsigned char FailsafeChannel; // if the value of this channel is > 100, the MK reports "RC-Lost"
unsigned char ServoFilterNick;
unsigned char ServoFilterRoll;
//------------------------------------------------
unsigned char BitConfig; // (war Loop-Cfg) Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt
unsigned char ServoCompInvert; // // 0x01 = Nick, 0x02 = Roll 0x04 = relative moving // WICHTIG!!! am Ende lassen
unsigned char ExtraConfig; // bitcodiert
unsigned char GlobalConfig3; // bitcodiert
char Name[12];
unsigned char crc; // must be the last byte! // MUST BE THE LAST BYTE!
} __attribute__((packed)) mk_param_struct_t;
 
#endif
Property changes:
Added: svn:mime-type
+text/plain
\ No newline at end of property
/Transportables_Koptertool/branch/test2/GPL_PKT_V3_6_7f_FC090b/parameter.c
0,0 → 1,1449
/*****************************************************************************
* 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*
*****************************************************************************/
 
 
#include "cpu.h"
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <util/delay.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
#include "lcd/lcd.h"
#include "timer/timer.h"
#include "uart/usart.h"
#include "mk-data-structs.h"
#include "parameter.h"
#include "menu.h"
#include "eeprom/eeprom.h"
#include "parameter_names.h"
#include "messages.h"
#include "menu.h"
 
#define TIMEOUT 500 // 5 sec
 
uint8_t display_settings_menu (void);
uint8_t display_param_menu (uint8_t);
uint8_t load_setting (uint8_t);
uint8_t write_setting (uint8_t);
uint8_t display_section_menu(void);
void edit_param(uint8_t);
void copy_setting(void);
 
 
mk_param_struct_t *mk_param_struct;
 
 
 
//uint8_t ii;
//volatile uint8_t offset = 0;
//volatile uint8_t dmode = 0;
//volatile uint8_t target_pos = 1;
volatile uint8_t offset2 = 0;
volatile uint8_t pmode = 0;
volatile uint8_t target_pos2 = 1;
volatile uint8_t setting = 0;
uint8_t changes = 0;
 
#define OFFSETOF(type, field) ((unsigned int) &(((type *) 0)->field))
 
#define MKOSO(field) (uint8_t)OFFSETOF(mk_param_struct_t, field)
 
 
 
//--------------------------------------------------------------
// Typ == (0 ohne Poti, 1 mit Poti, 2 bitfield, 3 serCh, 4 LEDmask, 5 Angle, 6 Empfaenger),
// |||
// Group, Typ, Min, Max, Struct-Name(Value), Default1, Default2, Default3+4+5,
// 0 1 2 3 4 5 6 7
// | | | | | | | |
// | | | / | | | /
// | | | / | | | /
// | | | / | | | /
// | | / / | | | /
// | | / / | | | /
// | / / / | | / /
// | / / / | | / /
// | / / / | | / /
// | / / / | | / /
// | / / / | | / /
// | | / / | | / /
// | | | | | | / /
// | | | | | | / /
// | | | | | | | /
// | | | | | | | /
// | | | | | | | |
// | | | | | | | |
// 0,0,1,12, MKOSO(Kanalbelegung)+2 , 1,1,1, // gas
 
 
 
prog_uchar param_config[8*PARAM_COUNT]=
{
// group 0 (kanaele) 1-15
 
0,0,1,12, MKOSO(Kanalbelegung)+2 , 1,1,1, // gas
0,0,1,12, MKOSO(Kanalbelegung)+3 , 4,4,4, // gier
0,0,1,12, MKOSO(Kanalbelegung)+0 , 3,3,3, // nick
0,0,1,12, MKOSO(Kanalbelegung)+1 , 2,2,2, // roll
0,3,1,25, MKOSO(Kanalbelegung)+4 , 5,5,5, // poti1
0,3,1,25, MKOSO(Kanalbelegung)+5 , 6,6,6, // poti2
0,3,1,25, MKOSO(Kanalbelegung)+6 , 7,7,7, // poti3
0,3,1,25, MKOSO(Kanalbelegung)+7 , 8,8,8, // poti4
0,3,1,25, MKOSO(Kanalbelegung)+8 , 9,9,9, // poti5
0,3,1,25, MKOSO(Kanalbelegung)+9 , 10,10,10, // poti6
0,3,1,25, MKOSO(Kanalbelegung)+10, 11,11,11, // poti7
0,3,1,25, MKOSO(Kanalbelegung)+11, 12,12,12, // poti8
0,0,0,12, MKOSO(MotorSafetySwitch), 0,0,0, // Motor Sicherungsswitch
0,2,0,CFG3_MOTOR_SWITCH_MODE , MKOSO(GlobalConfig3), 0,0,0, // kein Start ohne GPS Fix
0,2,0,CFG_SENSITIVE_RC, MKOSO(ExtraConfig), 0,0,0, // erweiterte signal pruefung
0,6,0,6, MKOSO(Receiver), 1,1,1,
#ifdef MKVERSION090b
0,2,0,CFG3_SPEAK_ALL , MKOSO(GlobalConfig3), 0,0,0, // Telemetry Speak all Events
#endif
 
// group 1 (main) 16-23
 
1,2,0,CFG_HOEHENREGELUNG, MKOSO(GlobalConfig), 0,0,0, // hoehenregler
1,2,0,CFG_GPS_AKTIV, MKOSO(GlobalConfig), 1,1,1, // gps
1,2,0,CFG_KOMPASS_AKTIV, MKOSO(GlobalConfig), 1,1,1, // kompass
1,2,0,CFG_KOMPASS_FIX, MKOSO(GlobalConfig), 0,0,0, // feste ausrichtung
1,2,0,CFG_SENSITIVE_RC, MKOSO(ExtraConfig), 0,0,0, // erweiterte signal pruefung
1,2,0,CFG_ACHSENKOPPLUNG_AKTIV, MKOSO(GlobalConfig), 1,1,1, // achsentkopplung
1,2,0,CFG_DREHRATEN_BEGRENZER, MKOSO(GlobalConfig), 0,0,0, // drehratenbregrenzung
1,2,0,CFG_HEADING_HOLD, MKOSO(GlobalConfig), 0,0,0, // heading hold
 
 
 
// group 2 (stick) 24-27
 
2,0,0,20, MKOSO(Stick_P), 10,8,6,
2,0,0,20, MKOSO(Stick_D), 16,16,10,
2,1,0,255, MKOSO(StickGier_P), 6,6,4,
2,1,0,255, MKOSO(ExternalControl), 0,0,0,
 
 
// group3 : looping 28-36
 
3,2,0,CFG_LOOP_OBEN, MKOSO(BitConfig), 0,0,0, // oben
3,2,0,CFG_LOOP_UNTEN, MKOSO(BitConfig), 0,0,0, // unten
3,2,0,CFG_LOOP_LINKS, MKOSO(BitConfig), 0,0,0, // links
3,2,0,CFG_LOOP_RECHTS, MKOSO(BitConfig), 0,0,0, // rechts
3,1,0,255, MKOSO(LoopGasLimit), 50,50,50,
3,0,0,247, MKOSO(LoopThreshold), 90,90,90,
3,0,0,247, MKOSO(LoopHysterese), 50,50,50,
3,0,0,247, MKOSO(WinkelUmschlagNick), 78,78,78,
3,0,0,247, MKOSO(WinkelUmschlagRoll), 78,78,78,
 
 
// group 4 (hoehe) 37-50
 
4,2,0,CFG_HOEHENREGELUNG, MKOSO(GlobalConfig), 0,0,0, // hoehenrelger
4,2,0,CFG2_HEIGHT_LIMIT, MKOSO(ExtraConfig), 0,0,0, // vario oder hoeenbergenzung
4,2,0,CFG_HOEHEN_SCHALTER, MKOSO(GlobalConfig), 1,1,1, // hoehenschalter
4,2,0,CFG2_VARIO_BEEP, MKOSO(ExtraConfig), 1,1,1, // variobeep
4,1,0,255, MKOSO(MaxHoehe), 255,255,255,
4,0,0,247, MKOSO(Hoehe_MinGas), 30,30,30,
4,1,0,255, MKOSO(Hoehe_P), 15,15,15,
4,1,0,255, MKOSO(Luftdruck_D), 30,30,30,
4,1,0,255, MKOSO(Hoehe_ACC_Wirkung), 0,0,0,
4,1,0,255, MKOSO(MaxAltitude), 150,150,150,
4,0,0,247, MKOSO(Hoehe_Verstaerkung), 15,15,15,
4,0,0,247, MKOSO(Hoehe_HoverBand), 8,8,8,
4,1,0,255, MKOSO(Hoehe_GPS_Z), 64,64,64,
4,0,0,160, MKOSO(Hoehe_StickNeutralPoint), 0,0,0,
 
 
// group 5 : kamera 51-68
 
5,1,0,255, MKOSO(ServoNickControl), 128,128,128,
5,0,0,247, MKOSO(ServoNickComp), 50,50,50,
5,2,0,SVNick, MKOSO(ServoCompInvert), 0,0,0, // nick
#ifdef MKVERSION090b
5,2,0,SVRelMov, MKOSO(ServoCompInvert), 0,0,0, // nick Servo relative
#endif
 
5,0,0,247, MKOSO(ServoNickMin), 15,15,15,
5,0,0,247, MKOSO(ServoNickMax), 230,230,230,
5,0,0,25, MKOSO(ServoFilterNick), 0,0,0, //FC0.87
5,1,0,255, MKOSO(ServoRollControl), 128,128,128,
5,0,0,247, MKOSO(ServoRollComp), 85,85,85,
5,2,0,SVRoll, MKOSO(ServoCompInvert), 0,0,0, // roll
5,0,0,247, MKOSO(ServoRollMin), 70,70,70,
5,0,0,247, MKOSO(ServoRollMax), 220,220,220,
5,0,0,25, MKOSO(ServoFilterRoll), 0,0,0, //FC0.87
5,0,2,8, MKOSO(ServoNickRefresh), 4,4,4,
5,0,0,247, MKOSO(ServoManualControlSpeed), 60,60,60,
5,5,0,247, MKOSO(CamOrientation), 0,0,0,
5,1,0,255, MKOSO(Servo3), 125,125,125,
5,1,0,255, MKOSO(Servo4), 125,125,125,
5,1,0,255, MKOSO(Servo5), 125,125,125,
 
 
// group 6 : navictrl 67-85
 
6,2,0,0x20, MKOSO(GlobalConfig), 1,1,1, // gps
6,1,0,255, MKOSO(NaviGpsModeControl), 254,254,254,
6,1,0,255, MKOSO(NaviGpsGain), 100,100,100,
6,0,0,247, MKOSO(NaviStickThreshold), 8,8,8,
6,0,0,247, MKOSO(NaviGpsMinSat), 6,6,6,
6,1,0,255, MKOSO(NaviGpsP), 90,90,90,
6,1,0,255, MKOSO(NaviGpsI), 90,90,90,
6,1,0,255, MKOSO(NaviGpsD), 90,90,90,
6,1,0,255, MKOSO(NaviGpsPLimit), 75,75,75,
6,1,0,255, MKOSO(NaviGpsILimit), 85,85,85,
6,1,0,255, MKOSO(NaviGpsDLimit), 75,75,75,
6,1,0,255, MKOSO(NaviGpsACC), 0,0,0,
6,1,0,255, MKOSO(NaviWindCorrection), 90,90,90,
6,1,0,255, MKOSO(NaviAccCompensation), 42,42,42,
6,1,0,255, MKOSO(NaviOperatingRadius), 245,245,245,
6,1,0,255, MKOSO(NaviAngleLimitation), 140,140,140,
6,0,0,247, MKOSO(NaviPH_LoginTime), 5,5,5,
6,2,0,CFG_GPS_AID, MKOSO(ExtraConfig), 0,0,0, // FC0.87dynamic ph
6,2,0,CFG3_DPH_MAX_RADIUS , MKOSO(GlobalConfig3), 0,0,0, // FC0.87
6,0,0,247, MKOSO(ComingHomeAltitude), 0,0,0,
 
 
// group 7 : ausgaenge 86-95
 
7,4,0,255, MKOSO(J16Bitmask), 95,95,95,
7,1,0,255, MKOSO(J16Timing), 20,20,20,
7,2,0,CFG_MOTOR_OFF_LED1, MKOSO(BitConfig), 0,0,0, // Motor_Off_Led1
7,2,0,CFG_MOTOR_BLINK1, MKOSO(BitConfig), 1,1,1, // Motor_Blink1
#ifdef MKVERSION090b
7,2,0,CFG3_USE_NC_FOR_OUT1, MKOSO(GlobalConfig3), 0,0,0, // combine with WP-WEvent
7,1,0,255, MKOSO(NaviOut1Parameter), 0,0,0,
#endif
7,4,0,255, MKOSO(J17Bitmask), 243,243,243,
7,1,0,255, MKOSO(J17Timing), 20,20,20,
7,2,0,CFG_MOTOR_OFF_LED2, MKOSO(BitConfig), 0,0,0, // Motor_Off_Led2
7,2,0,CFG_MOTOR_BLINK2, MKOSO(BitConfig), 1,1,1, // Motor_Blink2
7,4,0,255, MKOSO(WARN_J16_Bitmask), 170,170,170,
7,4,0,255, MKOSO(WARN_J17_Bitmask), 170,170,170,
 
 
// group 8 : versch. 96-107
 
8,0,0,247, MKOSO(Gas_Min), 8,8,8,
8,0,0,247, MKOSO(Gas_Max), 230,230,230,
8,1,0,255, MKOSO(KompassWirkung), 64,64,64,
8,1,0,255, MKOSO(CareFreeModeControl), 0,0,0, // Carefree
8,2,0,CFG_LEARNABLE_CAREFREE, MKOSO(ExtraConfig), 0,0,0, // teachable Carefree
8,0,0,247, MKOSO(UnterspannungsWarnung), 33,33,33,
8,2,0,CFG_3_3V_REFERENCE, MKOSO(ExtraConfig), 0,0,0, // Voltage referenz
8,0,0,247, MKOSO(NotGasZeit), 90,90,90,
8,0,0,247, MKOSO(NotGas), 45,45,45,
8,0,0,247, MKOSO(FailSafeTime), 0,0,0, // Failsavetime
8,0,0,12, MKOSO(FailsafeChannel), 0,0,0, // FC0.87 Failsave Channel
8,2,0,CFG_NO_RCOFF_BEEPING, MKOSO(ExtraConfig), 0,0,0, // Kein Summer ohne Sender beim Start
8,2,0,CFG3_VARIO_FAILSAFE, MKOSO(GlobalConfig3), 0,0,0, //use vario Control for failsafe altitude
8,2,0,CFG_IGNORE_MAG_ERR_AT_STARTUP, MKOSO(ExtraConfig), 0,0,0, // Ignore Compass Error
8,2,0,CFG3_NO_SDCARD_NO_START , MKOSO(GlobalConfig3), 0,0,0, // nicht starten ohne SD Karte
8,2,0,CFG3_NO_GPSFIX_NO_START , MKOSO(GlobalConfig3), 0,0,0, // kein Start ohne GPS Fix
 
 
// group 9 : gyro 108-120
 
9,1,0,255, MKOSO(Gyro_P), 90,100,100,
9,1,0,255, MKOSO(Gyro_I), 120,120,120,
9,1,0,255, MKOSO(Gyro_D), 10,10,10,
9,1,0,255, MKOSO(Gyro_Gier_P), 90,100,100,
9,1,0,255, MKOSO(Gyro_Gier_I), 120,120,120,
9,1,0,255, MKOSO(DynamicStability), 70,70,70,
9,2,0,CFG_DREHRATEN_BEGRENZER, MKOSO(GlobalConfig), 0,0,0, // drehratenbregrenzung
9,0,0,247, MKOSO(GyroAccFaktor), 27,27,27,
9,0,0,247, MKOSO(GyroAccAbgleich), 32,32,32,
9,1,0,255, MKOSO(I_Faktor), 16,16,16,
9,0,0,247, MKOSO(Driftkomp), 0,0,0,
9,0,0,16, MKOSO(Gyro_Stability), 6,6,6,
9,0,0,247, MKOSO(MotorSmooth), 0,0,0,
 
 
// group 10: benutzer 121-128
 
10,1,0,255, MKOSO(UserParam1), 0,0,0,
10,1,0,255, MKOSO(UserParam2), 0,0,0,
10,1,0,255, MKOSO(UserParam3), 0,0,0,
10,1,0,255, MKOSO(UserParam4), 0,0,0,
10,1,0,255, MKOSO(UserParam5), 0,0,0,
10,1,0,255, MKOSO(UserParam6), 0,0,0,
10,1,0,255, MKOSO(UserParam7), 0,0,0,
10,1,0,255, MKOSO(UserParam8), 0,0,0,
 
 
// group 11: achskoppl 129-132
 
11,2,0,CFG_ACHSENKOPPLUNG_AKTIV, MKOSO(GlobalConfig), 0,0,0, // achsentkopplung
11,1,0,255, MKOSO(AchsKopplung1), 90,90,90,
11,1,0,255, MKOSO(AchsKopplung2), 55,55,55,
11,1,0,255, MKOSO(CouplingYawCorrection), 70,70,70,
 
 
// group 12: mixer 133
 
12,5,0,23,MKOSO(OrientationAngle), 0,0,0,
 
// group 13 (easy-setup) 134-144
 
13,2,0,0x01, MKOSO(GlobalConfig), 0,0,0, // hoehenrelger
13,1,0,255, MKOSO(MaxHoehe), 255,255,255,
13,0,0,160, MKOSO(Hoehe_StickNeutralPoint), 0,0,0,
13,2,0,0x20, MKOSO(GlobalConfig), 1,1,1, // gps
13,1,0,255, MKOSO(NaviGpsModeControl), 254,254,254,
13,2,0,0x20, MKOSO(ExtraConfig), 0,0,0, // dynamic ph
13,0,0,247, MKOSO(ComingHomeAltitude), 0,0,0,
13,1,0,255, MKOSO(CareFreeModeControl), 0,0,0, // Carefree
13,2,0,0x40, MKOSO(ExtraConfig), 0,0,0, // teachable Carefree
13,0,0,12, MKOSO(MotorSafetySwitch), 0,0,0, // Motor Sicherungsswitch
13,5,0,23, MKOSO(OrientationAngle), 0,0,0,
 
};
 
 
//--------------------------------------------------------------
#define ITEMS_RX 9
 
prog_char param_items_rx[ITEMS_RX][17]= // zeilen,zeichen+1
{
"PPM ",
"Spektrum ",
"Spektrum HiRes ",
"Spektrum LoRes ",
"Jeti ",
"ACT DSL ",
"HOTT ",
"Futuba SBUS ",
"User ",
};
 
 
 
 
 
//--------------------------------------------------------------
void edit_parameter(void)
{
SwitchToFC();
 
 
// uint8_t setting;
 
 
setting = display_settings_menu();
 
if(setting == 255)
return;
 
if(setting == 6)
{
copy_setting();
return;
}
 
lcd_cls();
// lcd_printp_at (0, 0, PSTR(" Setting x "), 2);
lcd_puts_at(0, 0, strGet(PARA_SETTINGS), 2);
lcd_putc (15, 0, (setting + 48), 2); // ASCII ab 48 (hex 30) beginnt 0 - 9
// lcd_printp_at (3, 2, PSTR("ändern"), 0);
// lcd_printp_at (3, 3, PSTR("aktivieren"), 0);
lcd_puts_at(3, 2, strGet(PARA_CHANGE), 0);
lcd_puts_at(3, 3, strGet(PARA_AKTIVI), 0);
// lcd_printp_at (0, 7, PSTR(KEY_LINE_1), 0);
lcd_puts_at(0, 7, strGet(KEYLINE1), 0);
uint8_t val = menu_choose2 (2, 3, 2, 0, 0);
if (val == 255)
return;
if(val == 3)
{
load_setting(setting);
uint8_t setting_written = write_setting(setting);
if(setting_written == setting)
{
lcd_cls_line (0,2,21);
lcd_cls_line (0,3,21);
// lcd_printp_at (11, 0, PSTR("aktiviert"), 0);
lcd_puts_at(5, 2, strGet(PARA_AKTIV), 0);
}
else
{
lcd_cls_line (0,2,21);
lcd_cls_line (0,3,21);
// lcd_printp_at (0, 4, PSTR("Error"), 0);
lcd_puts_at(0, 4, strGet(FEHLER), 0);
}
_delay_ms(2000);
return;
}
 
if(setting == 255)
return;
 
uint8_t setting_loaded = load_setting(setting);
if(setting_loaded == 255)
return;
 
offset = 0;
dmode = 0;
target_pos = 1;
changes =0;
uint8_t group =0;
 
do
{
group = display_section_menu();
if(group != 255)
{
offset2 = 0;
pmode = 0;
target_pos2 = 1;
uint8_t param;
do
{
param = display_param_menu(group);
if(param != 255)
{
edit_param(param);
}
}
while(param != 255);
}
}
while(group != 255);
 
if(changes == 1)
{
lcd_cls();
// lcd_printp_at (0, 0, PSTR(" Setting x speichern?"), 2);
lcd_puts_at(0, 0, strGet(PARA_SAVESETT), 2);
lcd_putc (9, 0, (setting + 48), 2); // ASCII ab 48 (hex 30) beginnt 0 - 9
write_ndigit_number_u(9, 0, setting, 1, 0,0);
// lcd_printp_at (3, 2, PSTR("Ja"), 0);
// lcd_printp_at (3, 3, PSTR("Nein"), 0);
 
lcd_puts_at(3, 2, strGet(YES), 0);
lcd_puts_at(3, 3, strGet(NOO), 0);
// lcd_printp_at (0, 7, PSTR(KEY_LINE_1), 0);
lcd_puts_at(0, 7, strGet(KEYLINE1), 0);
uint8_t val = menu_choose2 (2, 3, 2, 0, 0);
if(val == 2)
{
uint8_t setting_written = write_setting(setting);
if(setting_written == setting)
{
// lcd_printp_at (3, 4, PSTR("Gespeichert und"), 0);
lcd_puts_at(3, 4, strGet(PARA_SETTSAVED), 0);
// lcd_printp_at (3, 5, PSTR("Aktiviert"), 0);
lcd_puts_at(3, 5, strGet(PARA_AKTIV), 0);
}
else
{
// lcd_printp_at (0, 4, PSTR("Error"), 0);
lcd_puts_at(0, 4, strGet(FEHLER), 0);
}
timer = 100;
while (timer > 0);
 
}
}
}
 
 
//--------------------------------------------------------------
void copy_setting(void)
{
uint8_t fromsetting = 3;
uint8_t tosetting = 5;
 
lcd_cls();
 
// lcd_printp_at (0, 1, PSTR("Kopiere Setting"), 0);
// lcd_printp_at (0, 3, PSTR("von x nach y"), 0);
// lcd_printp_at (0, 7, PSTR("von nach Ende OK"), 0);
 
lcd_puts_at(0, 1, strGet(PARA_COPY), 0);
lcd_puts_at(0, 3, strGet(PARA_FROMTO), 0);
lcd_puts_at(0, 7, strGet(PARA_ENDE), 0);
 
do
{
write_ndigit_number_u(5,3,fromsetting, 1,0,0);
write_ndigit_number_u(14,3,tosetting, 1,0,0);
 
if(get_key_press (1 << KEY_MINUS))
{
fromsetting++;
if(fromsetting == 6) fromsetting = 1;
}
if(get_key_press (1 << KEY_PLUS))
{
tosetting++;
if(tosetting == 6) tosetting = 1;
}
if(get_key_press (1 << KEY_ENTER))
{
lcd_printp_at (0, 5, PSTR("Wirklich Kopieren?"), 0);
lcd_puts_at(0, 5, strGet(PARA_COPYQ), 0);
// lcd_printp_at (0, 7, PSTR(" Ende OK"), 0);
lcd_puts_at(12, 7, strGet(KEYLINE4), 0);
do
{
if(get_key_press (1 << KEY_ENTER))
{
uint8_t loaded = load_setting(fromsetting);
if(loaded == fromsetting)
{
uint8_t written = write_setting(tosetting);
if(written == tosetting)
{
lcd_printp_at (0, 5, PSTR("Kopiert und Aktiviert"), 0);
lcd_puts_at(0, 5, strGet(PARA_COPYACTIV), 0);
}
else
{
// lcd_printp_at (0, 5, PSTR("Fehler"), 0);
lcd_puts_at(0, 5, strGet(FEHLER), 0);
lcd_cls_line (6, 5, 14);
}
}
else
{
// lcd_printp_at (0, 5, PSTR("Fehler"), 0);
lcd_puts_at(0, 5, strGet(FEHLER), 0);
lcd_cls_line (6, 5, 14);
}
timer = 100;
while (timer > 0);
return;
}
}
while (!get_key_press (1 << KEY_ESC));
get_key_press(KEY_ALL);
lcd_cls_line (0, 5, 21);
// lcd_printp_at (0, 7, PSTR("von nach Ende OK"), 0);
lcd_puts_at(0, 7, strGet(PARA_ENDE), 0);
}
}
while (!get_key_press (1 << KEY_ESC));
get_key_press(KEY_ALL);
}
 
 
//--------------------------------------------------------------
void edit_param(uint8_t param)
{
lcd_cls();
uint8_t type = pgm_read_byte(param_config+(8*param)+1);
// lcd_printp_at (0, 0, PSTR(" Ändere Setting: "), 2);
lcd_puts_at(0, 0, strGet(PARA_CHANGESETT), 2);
// lcd_printp_at (0, 7, PSTR(KEY_LINE_1), 0);
lcd_puts_at(0, 7, strGet(KEYLINE1), 0);
 
if(type != 6)
lcd_printp_at(0,2,param_names[param][Config.DisplayLanguage], 0);
 
 
//-------------------------------------------------------
if(type == 0) // ohne poti
{
lcd_printp_at (4, 4, PSTR("( - ) (d: )"), 0);
lcd_printp_at (12, 6, PSTR("Std."), 0);
// lcd_printp_at (0, 7, PSTR(KEY_LINE_2), 0);
lcd_puts_at(0, 7, strGet(KEYLINE2), 0);
 
uint8_t min = pgm_read_byte(param_config+(8*param)+2);
uint8_t max = pgm_read_byte(param_config+(8*param)+3);
uint8_t value = *(((uint8_t*)mk_param_struct) + pgm_read_byte(param_config+(8*param)+4));
uint8_t defaultvalue = pgm_read_byte(param_config+(8*param)+4 + setting ); // 5 - 7
uint8_t newvalue = value;
 
write_ndigit_number_u (5, 4, min, 3, 0,0);
write_ndigit_number_u (9, 4, max, 3, 0,0);
write_ndigit_number_u (17, 4, defaultvalue, 3, 0,0);
 
do
{
write_ndigit_number_u (0, 4, newvalue, 3, 0,0);
lcd_frect ((8*0), (8*5), (newvalue * (16*8) / max), 6, 1);
 
if(max >= 50)
{
if(get_key_press (1 << KEY_PLUS) | get_key_long_rpt_sp ((1 << KEY_PLUS), 3))
{
if((newvalue+1) <= max)
newvalue++;
}
 
if(get_key_press (1 << KEY_MINUS) | get_key_long_rpt_sp ((1 << KEY_MINUS), 3))
{
if((newvalue-1) >= min)
{
lcd_frect (((newvalue - 1) * (16*8) / max), (8*5), (16*8), 6, 0);
// lcd_frect ((newvalue * (16*8) / max), (8*5), ((16*8) / max), 6, 0);
newvalue--;
}
}
}
else
{
if(get_key_press (1 << KEY_PLUS) | get_key_long_rpt_sp ((1 << KEY_PLUS), 2))
{
if((newvalue+1) <= max)
newvalue++;
}
 
if(get_key_press (1 << KEY_MINUS) | get_key_long_rpt_sp ((1 << KEY_MINUS), 2))
{
if((newvalue-1) >= min)
{
lcd_frect (((newvalue - 1) * (16*8) / max), (8*5), (16*8), 6, 0);
// lcd_frect ((newvalue * (16*8) / max), (8*5), ((16*8) / max), 6, 0);
newvalue--;
}
}
}
 
if(get_key_long (1 << KEY_ESC))
{
lcd_frect ((8*0), (8*5), (16*8), 6, 0);
newvalue = defaultvalue;
}
 
if(get_key_short (1 << KEY_ENTER))
{
if(newvalue != value)
{
*(((uint8_t*)mk_param_struct) + pgm_read_byte(param_config+(8*param)+4)) = newvalue;
changes=1;
}
break;
}
 
}
while (!get_key_short (1 << KEY_ESC));
get_key_press(KEY_ALL);
}
 
//-------------------------------------------------------
if(type == 1) // mit poti
{
lcd_printp_at (4, 4, PSTR("(0-247-P8)(d:Po )"), 0);
lcd_printp_at (12, 6, PSTR("Std."), 0);
// lcd_printp_at (0, 7, PSTR(KEY_LINE_2), 0);
lcd_puts_at(0, 7, strGet(KEYLINE2), 0);
 
uint8_t min = pgm_read_byte(param_config+(8*param)+2);
uint8_t max = pgm_read_byte(param_config+(8*param)+3);
uint8_t value = *(((uint8_t*)mk_param_struct) + pgm_read_byte(param_config+(8*param)+4));
uint8_t defaultvalue = pgm_read_byte(param_config+(8*param)+4 + setting ); // 5 - 7
uint8_t newvalue = value;
uint8_t mode = 0;
 
if(defaultvalue > 247)
{
lcd_printp_at (17, 4, PSTR("Po )"), 0);
write_ndigit_number_u (19, 4, 256-defaultvalue, 1, 0,0);
}
else
write_ndigit_number_u (17, 4, defaultvalue, 3, 0,0);
 
if(value > 247)
mode = 1;
 
do
{
if(newvalue > 247)
mode = 1;
else
mode = 0;
 
if(mode == 0)
{
write_ndigit_number_u (0, 4, newvalue, 3, 0,0);
lcd_frect ((8*0), (8*5), (newvalue * (16*8) / max), 6, 1);
 
if(get_key_press (1 << KEY_PLUS) | get_key_long_rpt_sp ((1 << KEY_PLUS), 3))
{
if((newvalue+1) <= max)
newvalue++;
 
if(newvalue > 247)
{
lcd_frect ((8*0), (8*5), (16*8), 6, 0);
newvalue = 255;
}
}
 
if(get_key_press (1 << KEY_MINUS) | get_key_long_rpt_sp ((1 << KEY_MINUS), 3))
{
if((newvalue-1)>=min)
{
lcd_frect (((newvalue - 1) * (16*8) / max), (8*5), (16*8), 6, 0);
// lcd_frect ((newvalue * (16*8) / max), (8*5), ((16*8) / max), 6, 0);
newvalue--;
}
}
}
else
{
lcd_printp_at (0, 4, PSTR("Po"), 0);
write_ndigit_number_u (2, 4, 256 - newvalue, 1, 0,0);
lcd_frect ((8*0), (8*5), ((256 - newvalue) * (16*8) / 8), 6, 1);
 
if(get_key_press (1 << KEY_PLUS) | get_key_long_rpt_sp ((1 << KEY_PLUS), 1))
{
if(newvalue - 1 > 247)
{
newvalue--;
}
}
 
if(get_key_press (1 << KEY_MINUS) | get_key_long_rpt_sp ((1 << KEY_MINUS), 1))
{
lcd_frect (((255 - newvalue) * (16*8) / 8), (8*5), (16*8), 6, 0);
// lcd_frect (((255 - newvalue) * (16*8) / 8), (8*5), ((16*8) / 8), 6, 0);
newvalue++;
 
if(newvalue == 0)
{
lcd_frect ((8*0), (8*5), (16*8), 6, 0); // balken löschen
newvalue = 247;
}
}
}
 
if(get_key_long (1 << KEY_ESC))
{
lcd_frect ((8*0), (8*5), (16*8), 6, 0);
newvalue = defaultvalue;
}
 
if(get_key_short (1 << KEY_ENTER))
{
if(newvalue != value)
{
*(((uint8_t*)mk_param_struct) + pgm_read_byte(param_config+(8*param)+4)) = newvalue;
changes=1;
}
break;
}
}
while (!get_key_short (1 << KEY_ESC));
get_key_press(KEY_ALL);
}
 
//-------------------------------------------------------
if(type == 2) // ja/nein
{
// lcd_printp_at (3, 4, PSTR("Ja"), 0);
// lcd_printp_at (3, 5, PSTR("Nein"), 0);
lcd_puts_at(3, 4, strGet(YES), 0);
lcd_puts_at(3, 5, strGet(NOO), 0);
// lcd_printp_at (0, 7, PSTR(KEY_LINE_1), 0);
lcd_puts_at(0, 7, strGet(KEYLINE1), 0);
 
uint8_t bitmap = pgm_read_byte(param_config+(8*param)+3);
uint8_t value = *(((uint8_t*)mk_param_struct) + pgm_read_byte(param_config+(8*param)+4));
uint8_t defaultvalue = pgm_read_byte(param_config+(8*param)+4 + setting ); // 5 - 7
uint8_t newvalue = value;
 
if(defaultvalue == 1)
lcd_printp_at (8, 4, PSTR("*"), 0);
if(defaultvalue == 0)
lcd_printp_at (8, 5, PSTR("*"), 0);
 
do
{
if(newvalue & bitmap)
{
lcd_printp_at (1, 4, PSTR("\x1d"), 0);
lcd_printp_at (1, 5, PSTR(" "), 0);
}
else
{
lcd_printp_at (1, 4, PSTR(" "), 0);
lcd_printp_at (1, 5, PSTR("\x1d"), 0);
}
 
if((get_key_press (1 << KEY_MINUS)) && (!(newvalue & bitmap)))
newvalue ^= bitmap;
 
if((get_key_press (1 << KEY_PLUS)) && (newvalue & bitmap))
newvalue ^= bitmap;
 
if(get_key_press (1 << KEY_ENTER))
{
if(newvalue != value)
{
*(((uint8_t*)mk_param_struct) + pgm_read_byte(param_config+(8*param)+4)) = newvalue;
changes=1;
}
break;
}
}
while (!get_key_short (1 << KEY_ESC));
get_key_press(KEY_ALL);
}
 
//-------------------------------------------------------
if(type == 3) // serCH
{
lcd_printp_at (4, 4, PSTR("(1-S12/W) (d: )"), 0);
lcd_printp_at (12, 6, PSTR("Std."), 0);
// lcd_printp_at (0, 7, PSTR(KEY_LINE_2), 0);
lcd_puts_at(0, 7, strGet(KEYLINE2), 0);
 
uint8_t min = pgm_read_byte(param_config+(8*param)+2);
uint8_t max = pgm_read_byte(param_config+(8*param)+3);
uint8_t value = *(((uint8_t*)mk_param_struct) + pgm_read_byte(param_config+(8*param)+4));
uint8_t defaultvalue = pgm_read_byte(param_config+(8*param)+4 + setting ); // 5 - 7
uint8_t newvalue = value;
 
write_ndigit_number_u (17, 4, defaultvalue, 3, 0,0);
 
do
{
if (newvalue<=(max-13))
write_ndigit_number_u (0, 4, newvalue, 3, 0,0);
else
{
if (newvalue<=(max-1))
{
lcd_printp_at (0, 4, PSTR("S"), 0);
write_ndigit_number_u (1, 4, (newvalue-12), 2, 0,0);
}
}
if (newvalue==max)
lcd_printp_at (0, 4, PSTR("WPE"), 0);
 
lcd_frect ((8*0), (8*5), (newvalue * (16*8)) / max, 6, 1);
 
 
if(get_key_press (1 << KEY_PLUS) | get_key_long_rpt_sp ((1 << KEY_PLUS), 2))
{
if((newvalue+1) <= max)
newvalue++;
}
 
if(get_key_press (1 << KEY_MINUS) | get_key_long_rpt_sp ((1 << KEY_MINUS), 2))
{
if((newvalue-1)>=min)
{
lcd_frect (((newvalue - 1) * (16*8) / max), (8*5), (16*8), 6, 0);
newvalue--;
}
}
 
if(get_key_long (1 << KEY_ESC))
{
lcd_frect ((8*0), (8*5), (16*8), 6, 0);
newvalue = defaultvalue;
}
 
if(get_key_short (1 << KEY_ENTER))
{
if(newvalue != value)
{
*(((uint8_t*)mk_param_struct) + pgm_read_byte(param_config+(8*param)+4)) = newvalue;
changes=1;
}
break;
}
}
while (!get_key_short (1 << KEY_ESC));
get_key_press(KEY_ALL);
}
 
//-------------------------------------------------------
if(type == 4) // led bitfeld
{
// TODO: Übersetzung
lcd_printp_at (0, 7, PSTR(" \x19 0\x11I Ende OK"), 0);
 
if (param == 93 || param == 94)
// lcd_printp_at (5, 6, PSTR("aktiv"), 0);
lcd_puts_at(5, 6, strGet(AKTIV), 0);
 
uint8_t value = *(((uint8_t*)mk_param_struct) + pgm_read_byte(param_config+(8*param)+4));
uint8_t newvalue = value;
uint8_t pos = 0;
 
do
{
 
for(ii = 0; ii < 8; ii++)
{
if(newvalue & (1 << ii))
lcd_printp_at (8-ii, 4,PSTR("1"),0);
else
lcd_printp_at (8-ii, 4,PSTR("0"),0);
}
lcd_printp_at (pos+1, 5,PSTR("\x12"),0);
 
if(get_key_press (1 << KEY_MINUS))
{
lcd_printp_at (pos+1, 5,PSTR(" "),0);
pos++;
if(pos == 8)
pos = 0;
}
 
if (param == 93 || param == 94)
{
if(get_key_long (1 << KEY_PLUS))
{
if (newvalue != 0)
newvalue = 0;
else
newvalue = 170;
}
}
 
if(get_key_short (1 << KEY_PLUS))
newvalue ^= (1<<(7-pos));
 
if(get_key_short (1 << KEY_ENTER))
{
if(newvalue != value)
{
*(((uint8_t*)mk_param_struct) + pgm_read_byte(param_config+(8*param)+4)) = newvalue;
changes = 1;
}
break;
}
}
while (!get_key_short (1 << KEY_ESC));
get_key_press(KEY_ALL);
}
 
//-------------------------------------------------------
if(type == 5) // Angle
{
// lcd_printp_at (0, 7, PSTR(KEY_LINE_2), 0);
lcd_puts_at(0, 7, strGet(KEYLINE2), 0);
uint8_t value = *(((uint8_t*)mk_param_struct) + pgm_read_byte(param_config+(8*param)+4));
 
lcd_ecircle(102, 35, 16, 1);
 
uint8_t newvalue = value;
uint8_t oldvalue = newvalue;
do
{
 
if(oldvalue != newvalue) lcd_ecirc_line (102, 35, 15, oldvalue*15, 0);
oldvalue = newvalue;
lcd_ecirc_line (102, 35, 15, newvalue*15, 1);
 
 
if(get_key_press (1 << KEY_PLUS) | get_key_long_rpt_sp ((1 << KEY_PLUS), 1))
{
newvalue++;
if(newvalue == 24)
newvalue = 0;
}
if(get_key_press (1 << KEY_MINUS) | get_key_long_rpt_sp ((1 << KEY_MINUS), 1))
{
if(newvalue == 0)
newvalue = 24;
newvalue--;
}
if(get_key_short (1 << KEY_ENTER))
{
if(newvalue != value)
{
*(((uint8_t*)mk_param_struct) + pgm_read_byte(param_config+(8*param)+4)) = newvalue;
changes=1;
}
break;
}
}
while (!get_key_short (1 << KEY_ESC));
get_key_press(KEY_ALL);
}
 
//-------------------------------------------------------
if(type == 6) // receiver
{
uint8_t value = *(((uint8_t*)mk_param_struct) + pgm_read_byte(param_config+(8*param)+4));
 
uint8_t newvalue = value + 1;
uint8_t val =0;
uint8_t ii = 0;
uint8_t offset = 0;
uint8_t dmode = 0;
uint8_t target_pos = 1;
 
uint8_t size = ITEMS_RX;
 
// lcd_printp_at (0, 7, PSTR(KEY_LINE_1), 0);
lcd_puts_at(0, 7, strGet(KEYLINE1), 0);
 
while(1)
{
ii = 0;
if(offset > 0)
lcd_printp_at(1,1, PSTR("\x12"), 0);
 
for(ii = 0;ii < 6 ; ii++)
{
if((ii+offset) < size)
lcd_printp_at(3,ii+1,param_items_rx[ii+offset], 0);
 
if((ii == 5)&&(ii+offset < (size-1)))
lcd_printp_at(1,6, PSTR("\x13"), 0);
}
 
if(dmode == 0)
{
if(offset == 0)
{
if(size > 6)
val = menu_choose3 (1, 5, target_pos,0,1); //menu_choose3 (min, max, start, return_at_start, return_at_end)
else
val = menu_choose3 (1, size, target_pos,0,0);
}
else
val = menu_choose3 (2, 5, target_pos,1,1);
}
 
if(dmode == 1)
{
if(offset+7 > size)
val = menu_choose3 (2, 6, target_pos,1,0);
else
val = menu_choose3 (2, 5, target_pos,1,1);
}
if(val == 254) // überlauf unten
{
offset++;
dmode = 1;
target_pos = 5;
}
else if(val == 253) // überlauf oben
{
offset--;
dmode = 0;
target_pos = 2;
}
else if(val == 252) // ESC
return;
else if(val <= size)
{
newvalue = val + offset - 1;
*(((uint8_t*)mk_param_struct) + pgm_read_byte(param_config+(8*param)+4)) = newvalue;
changes=1;
return;
}
}
}
}
 
 
//--------------------------------------------------------------
uint8_t display_param_menu(uint8_t group)
{
uint8_t items[20];
 
uint8_t size=0;
for(ii = 0;ii < PARAM_COUNT; ii++)
{
if(pgm_read_byte(param_config+(8*ii)) == (group-1))
{
items[size] = ii;
size++;
}
}
 
uint8_t val =0 ;
 
while(1)
{
lcd_cls ();
// lcd_printp_at (0, 0, PSTR(" Wähle Parameter: "), 2);
lcd_puts_at(0, 0, strGet(PARA_SELECT), 2);
// lcd_printp_at (0, 7, PSTR(KEY_LINE_1), 0);
lcd_puts_at(0, 7, strGet(KEYLINE1), 0);
 
ii = 0;
if(offset2 > 0)
lcd_printp_at(1,1, PSTR("\x12"), 0);
 
for(ii = 0;ii < 6 ; ii++)
{
if((ii+offset2) < size)
{
lcd_printp_at(3,ii+1,param_names[items[ii+offset2]][Config.DisplayLanguage], 0);
// this reads the the offset in the struct from the pgm configuration table and then reads the value from the struct
 
uint8_t type = pgm_read_byte(param_config+(8*items[ii+offset2])+1);
 
if(type == 0)
{
write_ndigit_number_u (18, ii+1, *(((uint8_t*)mk_param_struct) + pgm_read_byte(param_config+(8*items[ii+offset2])+4)), 3, 0,0);
if (group == 9) // % Anzeige für Notgas wenn Variohöhe für Notgas verwendet wird
{
if (ii+offset2 == 8)
{
uint8_t value = *(((uint8_t*)mk_param_struct) + pgm_read_byte(param_config+(8*items[(ii+offset2)+4])+4)); // Abfrage Variohöhe Notgas
uint8_t bitmap = pgm_read_byte(param_config+(8*items[(ii+offset2)+4])+3); // Abfrage Variohöhe Notgas
if(value & bitmap)
lcd_printp_at(17,ii+1,PSTR("%"), 0);
else
lcd_printp_at(17,ii+1,PSTR(" "), 0);
}
}
}
if(type == 1)
{
uint8_t value = *(((uint8_t*)mk_param_struct) + pgm_read_byte(param_config+(8*items[ii+offset2])+4));
 
if(value < 248)
write_ndigit_number_u (18, ii+1, value, 3, 0,0);
 
if(value >= 248)
{
lcd_printp_at (18, ii+1, PSTR(" P"), 0);
write_ndigit_number_u (20, ii+1, 256-value, 1, 0,0);
}
}
 
if(type == 2)
{
 
uint8_t value = *(((uint8_t*)mk_param_struct) + pgm_read_byte(param_config+(8*items[ii+offset2])+4));
uint8_t bitmap = pgm_read_byte(param_config+(8*items[ii+offset2])+3);
if(value & bitmap)
lcd_printp_at (18, ii+1, PSTR(" J"), 0);
else
lcd_printp_at (18, ii+1, PSTR(" N"), 0);
 
}
 
if(type == 3)
{
uint8_t value = *(((uint8_t*)mk_param_struct) + pgm_read_byte(param_config+(8*items[ii+offset2])+4));
if (value<=12)
write_ndigit_number_u (18, ii+1, value, 3, 0,0);
else
if (value<=(24))
{
lcd_printp_at (18, ii+1, PSTR("S"), 0);
write_ndigit_number_u (19, ii+1, (value-12), 2, 0,0);
}
 
if (value==25)
lcd_printp_at (18, ii+1, PSTR("WPE"), 0);
 
}
 
if(type == 4)
write_ndigit_number_u (18, ii+1, *(((uint8_t*)mk_param_struct) + pgm_read_byte(param_config+(8*items[ii+offset2])+4)), 3, 0,0);
 
if(type == 5)
write_ndigit_number_u (18, ii+1, (*(((uint8_t*)mk_param_struct) + pgm_read_byte(param_config+(8*items[ii+offset2])+4)))*15, 3, 0,0);
 
if(type == 6) // Empfänger Typ
{
uint8_t value = *(((uint8_t*)mk_param_struct) + pgm_read_byte(param_config+(8*items[ii+offset2])+4));
 
if(value == 0)
lcd_printp_at (18, ii+1, PSTR("PPM"), 0);
else if(value == 1)
lcd_printp_at (18, ii+1, PSTR("Spe"), 0);
else if(value == 2)
lcd_printp_at (18, ii+1, PSTR("SpH"), 0);
else if(value == 3)
lcd_printp_at (18, ii+1, PSTR("SpL"), 0);
else if(value == 4)
lcd_printp_at (18, ii+1, PSTR("Jet"), 0);
else if(value == 5)
lcd_printp_at (18, ii+1, PSTR("ACT"), 0);
else if(value == 6)
lcd_printp_at (18, ii+1, PSTR("HoT"), 0);
else if(value == 7)
lcd_printp_at (18, ii+1, PSTR("SBU"), 0);
else if(value == 8)
lcd_printp_at (18, ii+1, PSTR("USR"), 0);
else
write_ndigit_number_u (18, ii+1, *(((uint8_t*)mk_param_struct) + pgm_read_byte(param_config+(8*items[ii+offset2])+4)), 3, 0,0);
 
}
}
 
if((ii == 5)&&(ii+offset2 < (size-1)))
lcd_printp_at(1,6, PSTR("\x13"), 0);
 
}
 
if(pmode == 0)
{
if(offset2 == 0)
{
if(size > 6)
val = menu_choose2 (1, 5, target_pos2,0,1);
else
val = menu_choose2 (1, size, target_pos2,0,0);
 
}
else
val = menu_choose2 (2, 5, target_pos2,1,1);
 
}
if(pmode == 1)
{
if(offset2+7 > size)
val = menu_choose2 (2, 6, target_pos2,1,0);
else
val = menu_choose2 (2, 5, target_pos2,1,1);
 
}
 
if(val == 254)
{
offset2++;
pmode = 1;
target_pos2 = 5;
}
else if(val == 253)
{
offset2--;
pmode = 0;
target_pos2 = 2;
}
else
break;
 
}
 
if(val != 255)
{
target_pos2=val;
return items[val+offset2-1];
}
else
return val;
 
}
 
 
//--------------------------------------------------------------
uint8_t display_section_menu(void)
{
uint8_t size = PAGES;
 
uint8_t val =0;
 
 
while(1)
{
lcd_cls ();
// lcd_printp_at (0, 0, PSTR(" Wähle Seite: "), 2);
lcd_puts_at(0, 0, strGet(PARA_SEITE),2);
// lcd_printp_at (0, 7, PSTR(KEY_LINE_1), 0);
lcd_puts_at(0, 7, strGet(KEYLINE1), 0);
 
ii = 0;
if(offset > 0)
lcd_printp_at(1,1, PSTR("\x12"), 0);
 
for(ii = 0;ii < 6 ; ii++)
{
if((ii+offset) < size)
lcd_printp_at(3,ii+1,param_pages[ii+offset][Config.DisplayLanguage], 0);
 
if((ii == 5)&&(ii+offset < (size-1)))
lcd_printp_at(1,6, PSTR("\x13"), 0);
 
}
 
 
 
if(dmode == 0)
{
if(offset == 0)
{
if(size > 6)
val = menu_choose2 (1, 5, target_pos,0,1);
else
val = menu_choose2 (1, size, target_pos,0,0);
 
}
else
val = menu_choose2 (2, 5, target_pos,1,1);
 
}
if(dmode == 1)
{
if(offset+7 > size)
val = menu_choose2 (2, 6, target_pos,1,0);
else
val = menu_choose2 (2, 5, target_pos,1,1);
 
}
 
 
if(val == 254)
{
offset++;
dmode = 1;
target_pos = 5;
}
else if(val == 253)
{
offset--;
dmode = 0;
target_pos = 2;
}
else
break;
 
}
 
if(val != 255)
{
target_pos=val;
return val+offset;
}
else
return val;
 
}
 
 
//--------------------------------------------------------------
uint8_t display_settings_menu (void)
{
uint8_t status;
 
lcd_cls ();
 
// lcd_printp_at (0, 0, PSTR(" Wähle Setting: "), 2);
lcd_puts_at(0, 0, strGet(PARA_SELSETT), 2);
// lcd_printp_at (0, 7, PSTR(KEY_LINE_1), 0);
lcd_puts_at(0, 7, strGet(KEYLINE1), 0);
 
 
for(setting=1;setting<6;setting++)
{
status = load_setting(setting);
if(status == 255)
return 255;
 
write_ndigit_number_u (3, setting, status, 1, 0,0);
lcd_print_at (5,setting,(uint8_t*)mk_param_struct->Name, 0);
}
// lcd_printp_at (3, 6, PSTR("Kopiere Setting"), 0);
lcd_puts_at(3, 6, strGet(PARA_COPY), 0);
 
status = load_setting(0xff);
if(status == 255)
return 255;
 
setting = menu_choose (1, 6, 1,status);
 
return setting;
}
 
 
//--------------------------------------------------------------
uint8_t load_setting(uint8_t setting)
{
mode = 'Q'; // Settings
uint8_t timeout = 50;
rxd_buffer_locked = FALSE;
 
while (!rxd_buffer_locked && timeout)
{
SendOutData ('q', ADDRESS_FC, 1, &setting, 1);
// _delay_ms(50);
timer = 20;
while (timer > 0);
timeout--;
}
 
if (timeout != 0)
{
Decode64 ();
setting = *pRxData;
mk_param_struct = (mk_param_struct_t *) (pRxData + 1) ;
 
 
 
}
else
{ // timeout occured
// lcd_printp_at (0, 2, PSTR("Fehler: keine Daten"), 0);
lcd_puts_at(0, 2, strGet(OSD_ERROR), 0);
timer = 100;
while (timer > 0);
setting = 255;
}
return setting;
}
 
 
//--------------------------------------------------------------
uint8_t write_setting(uint8_t setting)
{
mode = 'S'; // Settings
uint8_t timeout = 50;
 
rxd_buffer_locked = FALSE;
 
while (!rxd_buffer_locked && timeout)
{
SendOutData ('s', ADDRESS_FC, 2, &setting, 1, mk_param_struct, sizeof(mk_param_struct_t));
 
// _delay_ms(50);
timer = 20;
while (timer > 0);
timeout--;
}
 
if (timeout != 0)
{
Decode64 ();
setting = *pRxData;
}
else // timeout occured
{
// lcd_printp_at (0, 2, PSTR("Fehler: keine Daten"), 0);
lcd_puts_at(0, 2, strGet(OSD_ERROR), 0);
timer = 100;
while (timer > 0);
setting = 255;
}
 
return setting;
}
 
 
Property changes:
Added: svn:mime-type
+text/plain
\ No newline at end of property
/Transportables_Koptertool/branch/test2/GPL_PKT_V3_6_7f_FC090b/parameter.h
0,0 → 1,46
/*****************************************************************************
* 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*
*****************************************************************************/
 
 
 
#ifndef _PARAMETER_H
#define _PARAMETER_H
#include "main.h"
 
 
void edit_parameter (void);
uint8_t load_setting(uint8_t setting);
 
 
 
#endif
Property changes:
Added: svn:mime-type
+text/plain
\ No newline at end of property
/Transportables_Koptertool/branch/test2/GPL_PKT_V3_6_7f_FC090b/parameter_names.h
0,0 → 1,293
/*****************************************************************************
* 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*
*****************************************************************************/
 
 
 
#define PAGES 14
#ifdef MKVERSION088n
#define PARAM_COUNT 152 //152 FC088L
#endif
 
#ifdef MKVERSION090b
#define PARAM_COUNT 156 //156 FC090b
#endif
 
#define PARAM_LENGTH 15
#define PARAM_NUM_LANG 3
 
// German Englisch Holländisch
 
prog_char param_pages[PAGES][PARAM_NUM_LANG][PARAM_LENGTH]= // zeilen,zeichen+1
{
{"Kanäle ","Channel ","Kanaal "},
{"Konfiguration ","main ","Configuratie "},
{"Stick ","stick ","Stick "},
{"Looping ","Looping ","Looping "},
{"Höhe ","Altitude ","Hoogte "},
{"Kamera ","Camera ","Camera "},
{"NaviCtrl ","NaviCtrl ","NaviCtrl "},
{"Ausgänge ","Outputs ","Uitgangen "},
{"Verschiedenes ","Divers ","Diversen "},
{"Gyro ","Gyro ","Gyro "},
{"Benutzer ","User ","Gebruiker "},
{"Achskopplung ","Coupl Axes ","Koppeling Ass "},
{"Mixer-Setup ","Config Mix ","Config. Mixer "},
{"Easy Setup ","Config Easy ","Config. easy "},
 
 
 
};
 
 
//Namen
prog_char param_names[PARAM_COUNT][PARAM_NUM_LANG][PARAM_LENGTH]=
{
// group 0 (kanaele) 1-15
 
{"Gas ","Throttle ","Gas "},
{"Gier ","Gier ","Gier "},
{"Nick ","Nick ","Nick "},
{"Roll ","Roll ","Roll "},
{"Poti 1 ","Poti 1 ","Poti 1 "},
{"Poti 2 ","Poti 2 ","Poti 2 "},
{"Poti 3 ","Poti 3 ","Poti 3 "},
{"Poti 4 ","Poti 4 ","Poti 4 "},
{"Poti 5 ","Poti 5 ","Poti 5 "},
{"Poti 6 ","Poti 6 ","Poti 6 "},
{"Poti 7 ","Poti 7 ","Poti 7 "},
{"Poti 8 ","Poti 8 ","Poti 8 "},
{"Motor Sich.Sch","Mot.Safety Sw.","Mot.saf.schak."},
{"Motor Swi.Mode","Motor Swi.Mode","Motor Swi.Mode"},
{"Erw. Sig. Pr. ","Enh. Sig.Check","Uitg.Sig.Check"},
{"Empfänger Typ ","Receiver Type ","Ontvang. Type "},
#ifdef MKVERSION090b
{"Spk all Events","Spk all Events","Spk all Events"},
#endif
 
// group 1 (main) 16-23
 
{"Höhenregeler ","Ctrl Altitude ","Ctrl Hoogte "},
{"GPS ","GPS ","GPS "},
{"Kompass ","Compass ","Kompas "},
{"KompFest Ausr.","CompOrient.Fix","Kompas vast "},
{"Erw. Sig. Pr. ","Sens.RcvSigVal","ExtRec Signaal"},
{"Achs(e.)koppl.","Axis Couping ","As koppeling "},
{"Drehratenbegr.","RotRate limit.","RotRate limit."},
{"Heading Hold ","Nick/Roll ","Koers vast "},
 
 
// group 2 (stick) 24-27
 
{"Nick/Roll P ","Nick/Roll P ","Nick/Roll P "},
{"Nick/Roll D ","Nick/Roll D ","Nick/Roll D "},
{"Gier P ","Gier P ","Gier P "},
{"Externe Kontr.","Extern Ctrl ","Extern Control"},
 
 
// group3 : (looping) 28-36
 
{"Looping oben ","Looping up ","Looping omhoog"},
{"Looping unten ","Looping down ","Looping bened."},
{"Looping links ","Looping left ","Looping links "},
{"Looping rechts","Looping right ","Looping rechts"},
{"Gas Limit ","Throttle Limit","Gas Limiet "},
{"Ansprechschw. ","Resp. Thresh. ","Drempelwaarde "},
{"Hysterese ","Hysteresis ","Hysterese "},
{"Umkehrp. Nick ","Turnover Nick ","Nick geinvert."},
{"Umkehrp. Roll ","Turnover Roll ","Roll geinvert."},
 
 
// group 4 (hoehe) 37-50
 
{"Höhenregelung ","Altitude Ctrl ","Hoogte Control"},
{"J:HBeg,N:Vario","Y:LimH,N:Vario","Y:LimH,N:Vario"},
{"Schalter f. H.","use Sw. f.Setp","Schak. Hoogte "},
{"akust. Vario ","acoustic Vario","Akoest. Vario "},
{"Sollhöhe ","Setpoint ","Gewenste hoogt"},
{"Min. Gas ","min. throttle ","Minimaal gas "},
{"Höhe P ","Altitude P ","Hoogte P "},
{"Luftdruck D ","Barometric D ","Barometr. D "},
{"Z-ACC ","ACC Z ","ACC Z "},
{"Max. Höhe ","Max. Altitude ","Max. hoogte "},
{"Verstärkung/R ","gain/rate ","Verst./rate "},
{"Schwebegas +/-","hoover varia. ","hoover varia. "},
{"GPS Z ","GPS Z ","GPS Z "},
{"Stick Neutr. P","stick neutr. P","stick neutr. P"},
 
 
// group 5 : (kamera) 51-68
 
{"Nick S. Anst. ","nick serv ctrl","nick serv ctrl"},
{"Nick Kompens. ","nick compens. ","nick compens. "},
{"Nick Umkehren ","nick inv. dir.","nick inv.rich."},
#ifdef MKVERSION090b
{"Nick Servo rel","nick servo rel","nick servo rel"},
#endif
{"Nick Servo min","nick servo min","nick servo min"},
{"Nick Servo max","nick servo max","nick servo max"},
{"Nick Serv Filt","Nick Serv Filt","Nick Serv Filt"}, //FC0.87
 
{"Roll S. Anst. ","roll serv ctrl","roll serv ctrl"},
{"Roll Kompens. ","roll compens. ","roll compens. "},
{"Roll Umkehren ","roll inv. dir.","roll omkeren "},
{"Roll Servo min","roll servo min","roll servo min"},
{"Roll Servo max","roll servo max","roll servo max"},
{"Roll Serv Filt","Roll Serv Filt","Roll Serv Filt"}, //FC0.87
 
{"Anst. Geschw. ","servo refresh ","Servo refresh "},
{"Manuelle Gesch","manuell Speed ","Snelh.handbed."},
{"Cam Richtung ","Cam Orient ","Camera richt. "},
{"Servo 3 ","Servo 3 ","Servo 3 "},
{"Servo 4 ","Servo 4 ","Servo 4 "},
{"Servo 5 ","Servo 5 ","Servo 5 "},
 
// group 6 : (navictrl) 69-88 "CH Hoogte "
 
{"GPS ","enable GPS ","enable GPS "},
{"GPS Modus St. ","GPS mode contr","GPS mode contr"},
{"GPS Verstärk. ","GPS Gain ","GPS versterk. "},
{"GPS St. Schw. ","GPS stick thre","GPS st. dremp."},
{"Min. Sat. ","Min. Sat. ","Min. Sat. "},
{"GPS-P ","GPS-P ","GPS-P "},
{"GPS-I ","GPS-I ","GPS-I "},
{"GPS-D ","GPS-D ","GPS-D "},
{"P Limit ","Limit P ","Limiet P "},
{"I Limit ","Limit I ","Limiet I "},
{"D Limit ","Limit D ","Limiet D "},
{"GPS Acc ","GPS Acc ","GPS Acc "},
{"GPS Windkorr. ","GPS Wind Corr.","GPS Wind Corr."},
{"Bremswirkung ","Speed compens.","Remwerking "},
{"GPS max. Rad. ","GPS max.radius","GPS max.radius"},
{"GPS Winkel Li.","GPS angl.limit","GPS hoek lim. "},
{"PH Login time ","PH login time ","PH login tijd "},
{"Dynamic PH ","Dynamic PH ","Dynamische PH "},
{"GPS m. Rad dPH","GPS m. Rad dPH","GPS m. Rad dPH"}, //FC0.87
{"CH Höhe ","CH Altitude ","CH Hoogte "},
 
 
// group 7 : (ausgaenge) 89-98
 
{"LED1 Bitmaske ","Out1 Bitmask ","Uitg1 Bitpatr."},
{" Timing ","Out1 Timing ","Uitg1 Timing "},
{" sofort an","Activ ","Direct aan "},
{" n.m.Motor","Act. wi. Motor","Akt. motor uit"},
#ifdef MKVERSION090b
{"mit WP-Event ","comb. WP-Event","comb. WP-Event"},
{"AutoTr. m/Poti","AutoTr. m/poti","AutoTr. m/poti"},
#endif
{"LED2 Bitmaske ","Out2 Bitmask ","Uitg2 Bitpatr."},
{" Timing ","Out2 Timing ","Uitg2 Timing "},
{" sofort an","Activ ","Direct aan "},
{" n.m.Motor","Act. wi. Motor","Akt. motor uit"},
{"Out1 Vmin.Warn","Out1 undervolt","Uitg1 ondersp."},
{"Out2 Vmin.Warn","Out2 undervolt","Uitg2 ondersp."},
 
 
// group 8 : (verschiedenes) 99-11
 
{"Min. Gas ","min. throttle ","minimaal gas "},
{"Max. Gas ","max. throttle ","maximaal gas "},
{"Kompasswirkung","compass effect","Kompas effect "},
{"Carefree St. ","Carefree Ctrl ","Carefree Ctrl "},
{"Teachable Care","Teachable Care","Teachable Care"},
{"Unterspannung ","undervoltage ","Onderspanning "},
{"Volt Referenz ","Volt Referenz ","Ref. spanning "},
{"Not Gas Zeit ","Emerg.Thr.Time","Nood gas tijd "},
{"Not Gas ","Emerg.Throttle","Nood gas "},
{"Fails. CH Time","Fails. CH Time","Fails. CH Tijd"},
{"Fails. Channel","Fails. Channel","Fails. Channel"}, //FC 0.87
{"k.Summer o Sen","n beep act TX ","n beep act TX "}, // Pos Change FC0.87
{"Vario fail Alt","Vario fail Alt","Vario fail Alt"}, //FC 0.87
{"Compass Error ","Compass Error ","Kompas Error "},
{"k.Start o.SD-K","n st. wtho SD ","n st. wtho SD "}, //FC 0.87
{"k.Start o.GPS ","n st. wtho GPS","n st. wtho GPS"}, //FC 0.88L
 
// group 9 : (gyro) 114-126
 
{"Gyro P ","Gyro P ","Gyro P "},
{"Gyro I ","Gyro I ","Gyro I "},
{"Gyro D ","Gyro D ","Gyro D "},
{"Gier P ","Lacet P ","Gier P "},
{"Gier I ","Lacet I ","Gier I "},
{"Dynamische St.","dynamic stabi.","Dynamis. stab."},
{"Drehratenbeg. ","RotRate limit.","Toerental lim."},
{"ACC/Gyro Fak. ","ACC/Gyro Fact ","ACC/Gyro Fact "},
{"ACC/Gyro Komp.","Comp ACC/Gyro ","Comp ACC/Gyro "},
{"Hauptregler I ","Main I ","Hoofdregel. I "},
{"Drifkompensat.","drift Compens.","Drift compens."},
{"Gyro stab. ","Gyro stability","Gyro stabilit."},
{"Motor smooth ","Motor smooth ","Motor smooth "},
 
 
// group 10: (benutzer) 127-134
 
{"Parameter 1 ","Parameter 1 ","Parameter 1 "},
{"Parameter 2 ","Parameter 2 ","Parameter 2 "},
{"Parameter 3 ","Parameter 3 ","Parameter 3 "},
{"Parameter 4 ","Parameter 4 ","Parameter 4 "},
{"Parameter 5 ","Parameter 5 ","Parameter 5 "},
{"Parameter 6 ","Parameter 6 ","Parameter 6 "},
{"Parameter 7 ","Parameter 7 ","Parameter 7 "},
{"Parameter 8 ","Parameter 8 ","Parameter 8 "},
 
 
// group 11: (achskopplung) 135-13
 
{"Achs(e.)koppl.","(De)Coupl Axes","As koppeling "},
{"Gier pos. Kopp","Retroac lacet ","Gier pos. kop."},
{"Nick/Roll Kopp","Retro roul/tan","Nick/Roll kop."},
{"Gier Korrektur","Correct lacet ","Gier correctie"},
 
 
// group 12: (mixer) 139
 
{"Orientierung ","Orientierung ","Orientation "},
 
 
// group 13 (easy) 140-150
 
{"Höhenregelung ","Altitude Ctrl ","Hoogte Contr. "},
{"Sollhöhe ","Setpoint ","Gewenst.hoogte"},
{"Stick Neutr. P","stick neutr. P","Stick neutr. P"},
{"GPS ","enable GPS ","Enable GPS "},
{"GPS Modus St. ","GPS mode contr","GPS mode contr"},
{"Dynamic PH ","Dynamic PH ","Dynamic PH "},
{"CH Höhe ","CH High ","CH hoogte "},
{"Carefree St. ","Carefree Ctrl ","Carefree Ctrl "},
{"Teachable Care","Teachable Care","Teachable Care"},
{"Motor Sich.Sch","Mot.Safety Sw.","Mot.saf.schak."},
{"Orientierung ","Orientation ","Orientatie "},
 
};
 
Property changes:
Added: svn:mime-type
+text/plain
\ No newline at end of property
/Transportables_Koptertool/branch/test2/GPL_PKT_V3_6_7f_FC090b/tools.c
0,0 → 1,356
/*****************************************************************************
* 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*
*****************************************************************************/
 
 
#include "cpu.h"
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
#include <util/delay.h>
#include "main.h"
#include "setup/setup.h"
#include "lcd/lcd.h"
#include "menu.h"
#include "tracking/servo.h"
#include "motortest/motortest.h"
#include "eeprom/eeprom.h"
#include "timer/timer.h"
#include "connect.h"
#ifdef HWVERSION3_9
#include "HAL_HW3_9.h"
#endif
#ifdef HWVERSION1_3
#include "HAL_HW1_3.h"
#endif
//#include "voltmeter.h"
#include "lipo/lipo.h"
#include "messages.h"
#include "menu.h"
 
//--------------------------------------------------------------
 
#define ITEMS_TOOLS 6
 
 
 
 
const prog_char tools_menuitems_pkt[ITEMS_TOOLS][NUM_LANG][18]= // zeilen,zeichen+1
// German, English, French, Netherlands
{
{"Motor Tester ","Motor Tester ","Motor Tester "},
{"Servo Tester ","Servo Tester ","Servo Tester "},
{"PC BT > Kopter ","PC BT > Kopter ","PC BT > Kopter "},
{"PC USB > Kopter ","PC USB > Kopter ","PC USB > Kopter "},
{"PKT Setup \x1d","PKT Setup \x1d","PKT Setup \x1d"},
{"PKT Version ","PKT Version ","PKT Version "},
};
 
 
 
 
//--------------------------------------------------------------
void PKT_Tools (void)
{
// ii = 0;
// offset = 0;
// size = 0;
// size = ITEMS_PKT ;
// dmode = 0;
target_pos = 1;
// val = 0;
 
 
// uint8_t ii = 0;
// uint8_t offset = 0;
// uint8_t size = 0;
//
// uint8_t dmode = 0;
// uint8_t target_pos = 1;
// uint8_t val;
 
while(1)
{
size = ITEMS_TOOLS ;
lcd_cls ();
lcd_printp_at (0, 0, PSTR(" PKT-Tools "), 2);
lcd_puts_at(0, 7, strGet(KEYLINE1), 0);
 
// while(2)
// {
// ii = 0;
// if(offset > 0)
// {
// lcd_printp_at(1,1, PSTR("\x12"), 0);
// }
// for(ii = 0;ii < 6 ; ii++)
// {
// if((ii+offset) < size)
// {
// lcd_printp_at(3,ii+1,tools_menuitems_pkt[ii+offset][Config.DisplayLanguage], 0);
// }
// if((ii == 5)&&(ii+offset < (size-1)))
// {
// lcd_printp_at(1,6, PSTR("\x13"), 0);
// }
// }
// if(dmode == 0)
// {
// if(offset == 0)
// {
// if(size > 6)
// {
// val = menu_choose2 (1, 5, target_pos,0,1);
// }
// else
// {
// val = menu_choose2 (1, size, target_pos,0,0);
// }
// }
// else
// {
// val = menu_choose2 (2, 5, target_pos,1,1);
// }
// }
// if(dmode == 1)
// {
// if(offset+7 > size)
// {
// val = menu_choose2 (2, 6, target_pos,1,0);
// }
// else
// {
// val = menu_choose2 (2, 5, target_pos,1,1);
// }
// }
// if(val == 254)
// {
// offset++;
// dmode = 1;
// target_pos = 5;
// }
// else if(val == 253)
// {
// offset--;
// dmode = 0;
// target_pos = 2;
// }
// else if(val == 255)
// {
// return;
// }
// else
// {
// break;
// }
//
// }
 
val = menu_select(tools_menuitems_pkt,size,target_pos);
if (val==255) break;
target_pos = val;
 
if((val+offset) == 1 )
motor_test(FC_Mode);
if((val+offset) == 2 )
servo_test();
#ifdef HWVERSION3_9
if(Config.U02SV2 == 0)
{
if((val+offset) == 3 )
Port_BT2Wi();
 
if((val+offset) == 4 )
Port_USB2Wi();
}
else if(Config.U02SV2 == 1)
{
if((val+offset) == 3 )
Port_BT2FC();
 
if((val+offset) == 4 )
Port_USB2FC();
}
#else
if((val+offset) == 3 )
Show_Error_HW();
if((val+offset) == 4 )
Show_Error_HW();
#endif
if((val+offset) == 5)
PKT_Setup();
if((val+offset) == 6)
Show_Version();
}
}
 
 
//--------------------------------------------------------------
//
void PC_Fast_Connect (void)
 
{
uint8_t value = 1;
 
while(1)
{
 
lcd_cls();
// lcd_printp_at (0, 0, PSTR(" PC-Quick-Verbindung "), 2);
lcd_puts_at(0, 8, strGet(TOOLS1), 2);
lcd_printp_at (3, 3, PSTR("PC BT > Kopter"), 0);
lcd_printp_at (3, 4, PSTR("PC USB > Kopter"), 0);
// lcd_printp_at (0, 7, PSTR(KEY_LINE_1), 0);
lcd_puts_at(0, 7, strGet(KEYLINE1), 0);
// lcd_puts_at(0, 7, strGet(KEYLINE1), 0);
 
while(2)
{
if(value == 1)
{
lcd_printp_at (1, 3, PSTR("\x1d"), 0);
lcd_printp_at (1, 4, PSTR(" "), 0);
}
else
{
lcd_printp_at (1, 3, PSTR(" "), 0);
lcd_printp_at (1, 4, PSTR("\x1d"), 0);
}
 
if(get_key_press (1 << KEY_MINUS))
value = 1;
 
if(get_key_press (1 << KEY_PLUS))
value = 2;
 
 
if(get_key_short (1 << KEY_ENTER))
 
{
#ifdef HWVERSION3_9
if(Config.U02SV2 == 0)
{
if(value == 1)
Port_BT2Wi();
if(value == 2)
Port_USB2Wi();
}
else if(Config.U02SV2 == 1)
{
if(value == 1)
Port_BT2FC();
if(value == 2)
Port_USB2FC();
}
#else
if(value == 1)
Show_Error_HW();
if(value == 2)
Show_Error_HW();
#endif
break;
}
 
if(get_key_press (1 << KEY_ESC))
{
get_key_press(KEY_ALL);
return;
}
 
}
}
}
 
 
//void Test_HB (void) // bleibt für Tests
//{
//#ifdef HWVERSION3_9
//// ADC_Init();
////
//// uint16_t volt_avg = 0;
////// uint64_t volt_tmp = 0;
//// uint16_t Balken = 0;
//
//
// lcd_cls();
// lcd_printp_at(12, 7, PSTR("Ende"), 0);
//
//// lcd_rect(104, 0, 23, 8, 1); // Rahmen
//
// do
// {
////
////
// if(samples>4095)
// {
//// write_ndigit_number_u(0, 4, accumulator, 5, 0);
// oversampled();
// volt_avg = Vin;
// }
//// // write_ndigit_number_u(0, 3, samples, 5, 0);
////
////// write_ndigit_number_u(0, 1, Vin, 5, 0);
//// _delay_ms(50);
//
// show_Lipo();
//
// write_ndigit_number_u_100th(5, 5, volt_avg, 0, 0);
// lcd_printp_at(10, 5, PSTR("Volt"), 0);
////
////
////
// write_ndigit_number_u(0, 6, Config.Lipo_UOffset, 5, 0,0);
//// write_ndigit_number_u(15, 6, WarnCount, 4, 0);
////// write_ndigit_number_u(10, 5, Vcorr, 4, 0);
//
//
// if (get_key_press (1 << KEY_PLUS) | get_key_long_rpt_sp ((1 << KEY_PLUS), 3))
// {
// Config.Lipo_UOffset = Config.Lipo_UOffset +10;
// }
//
// if (get_key_press (1 << KEY_MINUS) | get_key_long_rpt_sp ((1 << KEY_MINUS),3))
// {
// Config.Lipo_UOffset = Config.Lipo_UOffset -10;
// }
////
// }
//
//
// while(!get_key_press (1 << KEY_ESC));
// get_key_press(KEY_ALL);
// return;
//#endif
//}
Property changes:
Added: svn:mime-type
+text/plain
\ No newline at end of property
/Transportables_Koptertool/branch/test2/GPL_PKT_V3_6_7f_FC090b/tools.h
0,0 → 1,41
/*****************************************************************************
* 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*
*****************************************************************************/
 
 
#ifndef _tools_H
#define _tools_H
 
void PKT_Tools (void);
void Test_HB (void); // TestTool für Softwareentwicklung
 
#endif
Property changes:
Added: svn:mime-type
+text/plain
\ No newline at end of property