Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 1009 → Rev 1010

/Transportables_Koptertool/tags/V3.2/setup.c
0,0 → 1,215
/*****************************************************************************
* Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net *
* Copyright (C) 2011 Christian 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. *
* *
* Einstellen der Variablen Parameter des P-MKTool *
* *
*****************************************************************************/
 
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <string.h>
 
#include "main.h"
#include "setup.h"
#include "lcd.h"
#include "eeprom.h"
#include "timer.h"
 
 
uint8_t spalte;
uint8_t mmode;
uint8_t zeile;
uint8_t edit;
uint8_t MenuItems;
//
 
 
void PMK_Setup (void)
{
 
lcd_cls ();
mmode = 0;
edit=0;
zeile = 1;
MenuItems =2;
 
 
lcd_printp (PSTR("P-MKTool Setup"), 0);
 
lcd_printpns_at (2, zeile, PSTR("LowBat Warn : "), 0);
// write_ndigit_number_u (16, 2, MK_LipoCell, 3, 0);
write_ndigit_number_u_10th (16, zeile,MK_LowBat, 3, 0);
lcd_putc (20, zeile, 'V', 0);
 
 
if (DisplayTimeout == 0)
lcd_printpns_at (2, zeile+1, PSTR("Displ.Timeout: no"), 0);
else
{
lcd_printpns_at (2, zeile+1, PSTR("Displ.Timeout: "), 0);
write_ndigit_number_u (17, zeile+1, DisplayTimeout, 3, 0);
}
 
lcd_printpns_at (2, zeile+2, PSTR("Language :"), 0);
 
 
switch (DisplayLanguage)
{
case 0x0 :lcd_printpns_at (18, zeile+2, PSTR("DE "), 0);break;
case 0x1 :lcd_printpns_at (18, zeile+2, PSTR("FR "), 0);break;
case 0x2 :lcd_printpns_at (18, zeile+2, PSTR("EN "), 0);break;
break;
}
lcd_printpns_at (2, zeile+3, PSTR("Wi TX/RX Chan:"), 0);
write_ndigit_number_u (17, zeile+3, WiTXRXChannel, 3, 0);
lcd_printpns_at (2, zeile+4, PSTR("Wi NetW. Grp.:"), 0);
write_ndigit_number_u (17, zeile+4, WiNetworkGroup, 3, 0);
lcd_printpns_at (0, 7, PSTR(" \x18 \x19 Back \x0c"), 0);
// lcd_printpns_at (0, 7, PSTR("\x15 \x16 \x17 Back"), 0); //x0C
lcd_printp_at (0, zeile, PSTR("\x1D"), 0);
 
 
do
{
// Min Bat Voltage einstellen min. 3,3V(1S) max 16,5V(5S)
if ((zeile == 1) && (get_key_press (1 << KEY_PLUS) || get_key_rpt (1 << KEY_PLUS)) && (MK_LowBat < 170))
{
edit=1;
MK_LowBat++;
// write_ndigit_number_u (16, zeile, MK_LipoCell, 3, 0);
write_ndigit_number_u_10th (16, zeile,MK_LowBat, 3, 0);
lcd_putc (20, 1, 'V', 0);
}
if ((zeile == 1) && (get_key_press (1 << KEY_MINUS) || get_key_rpt (1 << KEY_MINUS)) && (MK_LowBat > 33))
{
edit=1;
MK_LowBat--;
// write_ndigit_number_u (16, zeile, MK_LipoCell, 3, 0);
write_ndigit_number_u_10th (16, zeile,MK_LowBat, 3, 0);
lcd_putc (20, 1, 'V', 0);
}
// Displaytimeout einstellen
if ((zeile == 2) && (get_key_press (1 << KEY_PLUS) || get_key_rpt (1 << KEY_PLUS)) && (DisplayTimeout < 100))
{
edit=1;
DisplayTimeout++;
write_ndigit_number_u (17, zeile, DisplayTimeout, 3, 0);
 
}
if ((zeile == 2) && (get_key_press (1 << KEY_MINUS) || get_key_rpt (1 << KEY_MINUS)) && (DisplayTimeout > 0))
{
edit=1;
DisplayTimeout--;
if (DisplayTimeout == 0)
lcd_printpns_at (2, zeile, PSTR("Displ.Timeout: no"), 0);
else
write_ndigit_number_u (17, zeile, DisplayTimeout, 3, 0);
 
}
 
// DisplayLanguage einstellen
if ((zeile == 3) && (get_key_press (1 << KEY_PLUS) || get_key_rpt (1 << KEY_PLUS)) && (DisplayLanguage < 2))
{
edit=1;
DisplayLanguage++;
switch (DisplayLanguage)
{
case 0x0 :lcd_printpns_at (18, zeile, PSTR("DE "), 0); break;
case 0x1 :lcd_printpns_at (18, zeile, PSTR("FR "), 0); break;
case 0x2 :lcd_printpns_at (18, zeile, PSTR("EN "), 0); break;
}
 
}
if ((zeile == 3) && (get_key_press (1 << KEY_MINUS) || get_key_rpt (1 << KEY_MINUS)) && (DisplayLanguage >0))
{
edit=1;
DisplayLanguage--;
switch (DisplayLanguage)
{
case 0x0 :lcd_printpns_at (18, zeile, PSTR("DE "), 0);break;
case 0x1 :lcd_printpns_at (18, zeile, PSTR("FR "), 0);break;
case 0x2 :lcd_printpns_at (18, zeile, PSTR("EN "), 0);break;
 
}
 
}
// RX/TX Channel Wi.232 einstellen
if ((zeile == 4) && (get_key_press (1 << KEY_PLUS) || get_key_rpt (1 << KEY_PLUS)) && (WiTXRXChannel < 0x79))
{
edit=1;
WiTXRXChannel++;
write_ndigit_number_u (17, zeile, WiTXRXChannel, 3, 0);
 
}
if ((zeile == 4) && (get_key_press (1 << KEY_MINUS) || get_key_rpt (1 << KEY_MINUS)) && (WiTXRXChannel >0))
{
edit=1;
WiTXRXChannel--;
write_ndigit_number_u (17, zeile, WiTXRXChannel, 3, 0);
 
}
// Networkgroup Wi.232 einstellen
if ((zeile == 5) && (get_key_press (1 << KEY_PLUS) || get_key_rpt (1 << KEY_PLUS)) && (WiNetworkGroup < 0x79))
{
edit=1;
WiNetworkGroup++;
write_ndigit_number_u (17, zeile, WiNetworkGroup, 3, 0);
 
}
if ((zeile == 5) && (get_key_press (1 << KEY_MINUS) || get_key_rpt (1 << KEY_MINUS)) && (WiNetworkGroup >0))
{
edit=1;
WiNetworkGroup--;
write_ndigit_number_u (17, zeile, WiNetworkGroup, 3, 0);
 
}
 
 
 
 
if (get_key_press (1 << KEY_ENTER))
{
lcd_printp_at (0, zeile, PSTR(" "), 0);
if (zeile ==5)
{
zeile = 1;
lcd_printp_at (0, zeile, PSTR("\x1D"), 0);
}
else
{
zeile++;
lcd_printp_at (0, zeile, PSTR("\x1D"), 0);
}
 
 
 
}
 
}
while (!get_key_press (1 << KEY_ESC));
if (edit==1)
{
 
WriteParameter();
 
}
 
 
 
}