Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 1197 → Rev 1198

/NGVideo5_8/tags/v1.21/menue.h
0,0 → 1,123
 
/****************************************************************/
/* */
/* NG-Video 5,8GHz */
/* */
/* Copyright (C) 2011 - gebad */
/* */
/* This code is distributed under the GNU Public License */
/* which can be found at http://www.gnu.org/licenses/gpl.txt */
/* */
/****************************************************************/
 
#ifndef _MENUE_H_
#define _MENUE_H_
 
#define SCROLL_MAIN_MAX 9 // index array Scroll_Menu scr_main_menu[] = {....} Anzahl-1, da Beginn bei 0
#define SCROLL_SERVO_MAX 4 // index array Scroll_Menu scr_servo_menu[] = {....} Anzahl-1, da Beginn bei 0
 
/* bei Change_Value(....) */
#define ZLE_VAL 1 // DOGM Zeile des zu ändernten Wertes, einfache generelle bessere Gestaltung
 
#define C_REPEAT 0 // konstante repeat Geschwindigkeit
#define V_REPEAT 1 // sich ändernte repeat Geschwindigkeit
#define CHRLS 0 // Flag überladener Zeichensatz lcdSpecialChrLs
#define CHRRS 1 // Flag überladener Zeichensatz lcdSpecialChrRs
 
typedef struct
{
const char *menu_nr; // Stringzeiger auf Befehlsnamen
void (*fp)(void); // Zeiger auf auszuführende Funktion
} command_table_t;
void Menu_Main (void);
void Menu_AV_Source (void);
void Menu_RX_Channel (void);
void Menu_RSSI_Calibr (void);
void Menu_RSSI_min (void);
void Menu_RSSI_min_all (void);
void Menu_RSSI_max (void);
void Menu_Language (void);
void Menu_Servo_Calibr (void);
void Menu_Servo_Steps (void);
void Menu_Servo1 (void);
void Menu_Servo2 (void);
void Menu_Servo1_rev (void);
void Menu_Servo1_left (void);
void Menu_Servo1_right (void);
void Menu_Servo1_middle (void);
void Menu_Servo2_rev (void);
void Menu_Servo2_left (void);
void Menu_Servo2_right (void);
void Menu_Servo2_middle (void);
void Menu_Servo_Test (void);
void Menu_Test_Frame (void);
void Menu_Test_ServoNr (void);
void Menu_Test_PulseWidth (void);
void Menu_Test_Continuous (void);
void Menu_Test_SingleStep (void);
void Menu_Test_Repeat (void);
void Menu_Test_Pause (void);
void Menu_Test_Pause_Step (void);
void Menu_Test_Start (void);
void Menu_lcd (void);
void Menu_lcd_Contrast (void);
void Menu_lcd_Backgr_Light (void);
void Menu_Battery (void);
void Menu_Low_U_Setup (void);
void Menu_U_Offset (void);
void Menu_MK_Battery (void);
void Menu_MK_BatteryNr (void);
void Menu_MK_BatteryCapacity(void);
void Menu_MK_I_Offset (void);
void Menu_MK_I_Faktor (void);
void Menu_MK_W_Faktor (void);
void Menu_Tracking_Ant (void);
void Menu_Tracking_Option (void);
void Menu_GPS_Display (void);
void Menu_GPS_Display_FLAG (void);
void Menu_GPS_Displ_RX_Time (void);
 
char pmenu[6] = {"0"}; // Zuordnung Menü Programmgliederung zu hinterlegten Funktionen
char tmp_pmenu[6];
 
uint8_t ch_stored; // Flag zur Speicherung, wenn Wert im Hauptdisplay geändert
uint8_t coldstart; // Flag erstmaliger MK-Start(Motore) nur nach GPS-Fix
 
void Displ_Main_Disp(void);
void Displ_AV_Mark(uint8_t p, char marker);
void Displ_Str_mid(char *str, uint8_t zle);
void Displ_RX_Time(void);
void Menu_MK_BatteryChangeNr(void);
 
#define RIGHT 0 // Servopostionen, welche vom Einbau abhängig sind
#define LEFT 1
#define MIDDLE 2
 
typedef struct
{
uint16_t min; // entspricht Servopostionen, welche vom Einbau abhängig sind
uint16_t max;
} servo_limit_t;
 
servo_limit_t servo_limit[2][3] = {{{SERVO_I0_RIGHT_MIN, SERVO_I0_RIGHT_MAX},\
{SERVO_I0_LEFT_MIN, SERVO_I0_LEFT_MAX},\
{SERVO_I0_MIDDLE_MIN, SERVO_I0_MIDDLE_MAX}},\
{{SERVO_I1_RIGHT_MIN, SERVO_I1_RIGHT_MAX},\
{SERVO_I1_LEFT_MIN, SERVO_I1_LEFT_MAX},\
{SERVO_I1_MIDDLE_MIN, SERVO_I1_MIDDLE_MAX}}};
typedef struct
{
uint16_t min; // entspricht Servopostionen, welche vom Einbau abhängig sind
uint16_t max;
uint16_t mid;
} steps_pw_t;
 
// Servopositionen für 950µs, 2,05ms und 1,5ms ==> Ergebnis Schritte. Da Zeit in µs ist F_CPU*e-1
const steps_pw_t steps_pw[2] = {{(uint64_t)950*F_CPU*1e-6/SERVO_PRESCALER + 0.5, (uint64_t)2050*F_CPU*1e-6/SERVO_PRESCALER + 0.5, (uint64_t)1500*F_CPU*1e-6/SERVO_PRESCALER + 0.5},\
{(uint64_t)950*4*F_CPU*1e-6/SERVO_PRESCALER + 0.5, (uint64_t)2050*4*F_CPU*1e-6/SERVO_PRESCALER + 0.5, (uint64_t)1500*4*F_CPU*1e-6/SERVO_PRESCALER + 0.5}};
 
# define POSIDX_MAX 4
const uint8_t PosIdx[POSIDX_MAX] = {1, 0, 1, 2 }; // anzufahrende Servopositionen 0=MIN, 1=MID, 2=MAX
 
#endif /* _MENUE_H */