Subversion Repositories Projects

Rev

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


/****************************************************************/
/* Setup für die Sticks                                         */
/* 2013 Cebra                                                   */
/****************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "../cpu.h"
#include <util/delay.h>
#include <avr/pgmspace.h>
#include <avr/interrupt.h>
#include "../main.h"
#include "../timer/timer.h"
#include "stick_setup.h"
#include "../lcd/lcd.h"
#include "../timer/timer.h"
#include "../menu.h"
#include "../messages.h"
#include "../mk-data-structs.h"
#include "../eeprom/eeprom.h"
#include "../setup/setup.h"


//--------------------------------------------------------------
#define ITEMS_STICKS 7

const prog_char stick_menuitems[ITEMS_STICKS][NUM_LANG][18]= // Zeilen,Zeichen+1
{
       {"Übersicht        ","summary        ","summary         "},
       {"Stick 1         \x1d","stick 1         \x1d","stick 1         \x1d"},
       {"Stick 2         \x1d","stick 2         \x1d","stick 2         \x1d"},
       {"Stick 3         \x1d","stick 3         \x1d","stick 3         \x1d"},
       {"Stick 4         \x1d","stick 4         \x1d","stick 4         \x1d"},
       {"Stick 5         \x1d","stick 5         \x1d","stick 5         \x1d"},
       {"PKT Lipomessung  ","PKT Lipo measure.","PKT Lipo measure."},

};

//--------------------------------------------------------------

#define ITEMS_STICK 5

const prog_char sticks_menuitems[ITEMS_STICK][NUM_LANG][18]= // Zeilen,Zeichen+1
{
       {"Minimal Wert  ","minimal value ","minimal value "},
       {"Maximal Wert  ","maximal value ","maximal value "},
       {"Type          ","type          ","type          "},
       {"Richtung      ","direction     ","direction     "},
       {"Neutralisiered","neutralizing  ","neutralizing  "},
};

//--------------------------------------------------------------


void Joysticks_Uebersicht(void)
{
    lcd_cls ();
    lcd_printpns_at(0, 0, PSTR("   Joystick Setup    "), 2);
    lcd_printpns_at(0, 1, PSTR("S Min Max Typ  Dir  N"), 0);

    for (uint8_t i = 0; i < 5; i++) {

        write_ndigit_number_u (0, 2+i,i+1, 1, 0,0);
        write_ndigit_number_u (2, 2+i,Config.stick_min[i], 3, 0,0);
        write_ndigit_number_u (6, 2+i,Config.stick_max[i], 3, 0,0);
        if (Config.stick_typ[i] == 0) lcd_printpns_at(10, 2+i, PSTR("Poti"), 0); else lcd_printpns_at(10, 2+i, PSTR("Tast"), 0);
          //if (Config.stick_typ[i] == 0) // MartinR: geändert
            //{
                if (Config.stick_dir[i] == 0) lcd_printpns_at(15, 2+i, PSTR("Norm"), 0); else lcd_printpns_at(15, 2+i, PSTR("Rev"), 0);
            if (Config.stick_neutral[i] == 0) lcd_printpns_at(20, 2+i, PSTR("N"), 0); else lcd_printpns_at(20, 2+i, PSTR("Y"), 0);
            //}
        if (i == 1) if (Config.Lipomessung == true) lcd_printpns_at(3, 2+i, PSTR("PKT Lipomessung   "), 0);

      }


    lcd_printp_at (18, 7, PSTR("OK"), 0);

    do{}
      while (!(get_key_press (1 << KEY_ENTER)));


}



//--------------------------------------------------------------

void Joysticks_Setup(void)
{
        size = ITEMS_STICKS;
//      uint8_t ii = 0;
//      uint8_t Offset = 0;
//      uint8_t dmode = 0;
        uint8_t target_pos = 1;
//      uint8_t val = 0;
        edit =0;
       
        while(1)
        {
                size = ITEMS_STICKS;
                lcd_cls ();
                lcd_printpns_at(0, 0, PSTR("   Joystick Setup    "), 2);
//              lcd_printp_at (0, 7, PSTR(KEY_LINE_1), 0);
                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,stick_menuitems[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)
//                      {
//                          if (edit == 1)
//                               {
//                                 WriteParameter();
//                                 edit = 0;
//                                 return;
//                                }
//                            return;
//                      }
//                      else
//                      {
//                              break;
//                      }
//              }
                val = menu_select(stick_menuitems,size,target_pos);
                if (val==255) break;
                target_pos = val;

                if((val + offset)== 1 ) Joysticks_Uebersicht();
                if((val + offset)== 2 ) stick_menu(0);           //Stick 1
                if((val + offset)== 3 ) {
                                          if (Config.Lipomessung == true) {
                                              lcd_cls ();
                                              lcd_puts_at(0, 3, strGet(LIPO_MESSUNG), 2);
                                              _delay_ms(1000);
                                          }
                                           else  stick_menu(1);           //Stick 2
                                        }
                if((val + offset)== 4 ) stick_menu(2);           //Stick 3
                if((val + offset)== 5 ) stick_menu(3);           //Stick 4
                if((val + offset)== 6 ) stick_menu(4);           //Stick 5
                if((val + offset)== 7 ) Config.Lipomessung = Edit_generic(Config.Lipomessung,0,1,LIPO_MESSUNG,YesNo);
        }
}


//--------------------------------------------------------------

void stick_menu(uint8_t stick)
{

//        uint8_t ii = 0;
//        uint8_t Offset = 0;
//        uint8_t dmode = 0;
        uint8_t target_pos = 1;
//        uint8_t val = 0;
        edit =0;

        while(1)
        {
                size = ITEMS_STICK;
                lcd_cls ();
                lcd_printpns_at(0, 0, PSTR("Joystick           "), 2);
                write_ndigit_number_u (9, 0,stick+1, 1, 0,2);
//              lcd_printp_at (0, 7, PSTR(KEY_LINE_1), 0);
                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,sticks_menuitems[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)
//                        {
//                            if (edit == 1)
//                               {
//                                 WriteParameter();
//                                 edit = 0;
//                                 return;
//                                }
//                            return;
//                        }
//                        else
//                        {
//                                break;
//                        }
//                }
                val = menu_select(sticks_menuitems,size,target_pos);
                if (val==255) break;
                target_pos = val;

                if((val + offset) == 1 ) Config.stick_min[stick]= Edit_generic(Config.stick_min[stick],0,300,STICK_MIN,Show_uint3);
                if((val + offset) == 2 ) Config.stick_max[stick]= Edit_generic(Config.stick_max[stick],0,300,STICK_MAX,Show_uint3);
                if((val + offset) == 3 ) Config.stick_typ[stick]= Edit_generic(Config.stick_typ[stick],0,1,STICK_TYPE,Sticktype);
                if((val + offset) == 4 ) Config.stick_dir[stick]= Edit_generic(Config.stick_dir[stick],0,1,STICK_DIR,NormRev);
                if((val + offset) == 5 ) Config.stick_neutral[stick]= Edit_generic(Config.stick_neutral[stick],0,1,STICK_NEUTRAL,YesNo);
        }
}