Subversion Repositories Projects

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

/*****************************************************************************
 *   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();

        }



}