Subversion Repositories Projects

Rev

Blame | Last modification | View Log | RSS feed

/*****************************************************************************
 *   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
//}