Subversion Repositories Projects

Rev

Rev 832 | Rev 902 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
346 cascade 1
/****************************************************************************
728 cascade 2
 *   Copyright (C) 2009-2010 by Claas Anders "CaScAdE" Rathje               *
346 cascade 3
 *   admiralcascade@gmail.com                                               *
4
 *   Project-URL: http://www.mylifesucks.de/oss/c-osd/                      *
5
 *                                                                          *
6
 *   This program is free software; you can redistribute it and/or modify   *
7
 *   it under the terms of the GNU General Public License as published by   *
8
 *   the Free Software Foundation; either version 2 of the License.         *
9
 *                                                                          *
10
 *   This program is distributed in the hope that it will be useful,        *
11
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of         *
12
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          *
13
 *   GNU General Public License for more details.                           *
14
 *                                                                          *
15
 *   You should have received a copy of the GNU General Public License      *
16
 *   along with this program; if not, write to the                          *
17
 *   Free Software Foundation, Inc.,                                        *
18
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.              *
19
 ****************************************************************************/
20
 
762 - 21
#ifndef _MAIN_H
22
#define _MAIN_H
23
 
800 - 24
#ifndef MCU
25
#define MCU atmega162
26
#endif
27
 
28
#ifndef __AVR_ATmega162__
29
#define __AVR_ATmega162__
30
#endif
31
 
32
 
497 cascade 33
#include <avr/pgmspace.h>
34
#include "mk-data-structs.h"
35
 
346 cascade 36
/* ##########################################################################
37
 * Debugging and general purpose definitions
38
 * ##########################################################################*/
459 cascade 39
#ifndef BUILDDATE
40
#define BUILDDATE "DEVEL-BUILD" // build date, this is testing...
41
#endif
346 cascade 42
 
459 cascade 43
#define ALLCHARSDEBUG 0         // set to 1 and flash firmware to see all chars
44
 
45
#ifndef WRITECHARS              // if WRITECHARS not set via makefile
514 cascade 46
#define WRITECHARS -1           // set to 1 and flash firmware to write all chars
346 cascade 47
#endif
48
 
459 cascade 49
#ifndef NTSC                    // if NTSC is not thet via makefile
50
#define NTSC 0                  // set to 1 for NTSC mode + lifts the bottom line
346 cascade 51
#endif
52
 
459 cascade 53
#ifndef FCONLY
460 cascade 54
#define FCONLY 0                // set to 1 if you do NOT have a NaviCtrl and the OSD is
753 cascade 55
#endif                          // connected to the FC directly
459 cascade 56
 
826 - 57
#define HUD 1                    // set to 0 to disable HUD by default
346 cascade 58
#define ARTHORIZON 0            // set to 1 to enable roll&nick artificial horizon by default
800 - 59
#define BIGVARIO 0              // set to 1 to enable the big vario bar on right side
60
#define STATS 1                 // set to 1 to enable statistics during motor off by default
61
#define WARNINGS 1              // set to 1 to display battery+rc warning even if HUD is disabled
346 cascade 62
 
453 cascade 63
//#define UBAT_WRN  94          // voltage for blinking warning, like FC settings (deprecated)
64
//#define UBAT_MAX 114          // maximal battery voltage for battery-sign (deprecated)
65
#define CELL_VOLT_MAX 37        // max voltage per battery cell (37 for LiPo)
66
#define CELL_VOLT_MIN 32        // min voltage per battery cell (maybe 32 for LiPo?)
800 - 67
#define CELL_NUM -1             // -1 for auto, 3 for 3s1p and 4 for 4s1p
346 cascade 68
#define RCLVL_WRN 100           // make the RC level blink if below this number
69
 
70
// ### read datasheet before changing stuff below this line :)
736 cascade 71
#define BLINK   0b01001111      // attribute byte for blinking characters
72
#define INVERT  0b00101111      // attribute byte for inverted characters
73
#define BLACKBG 0b10001111      // attribute byte for _black background_ on characters
346 cascade 74
 
757 cascade 75
// ### constants
76
#define MtoFT 32808399 // 3,2808399
77
 
772 - 78
// ### Antenna Tracking
79
//#define ANTENNATRACKTEST 1
80
 
346 cascade 81
/* ##########################################################################
471 cascade 82
 * FLAGS usable during runtime that get saved
346 cascade 83
 * ##########################################################################*/
523 cascade 84
#define COSD_FLAG_HUD                     1
800 - 85
#define COSD_FLAG_ARTHORIZON              2
523 cascade 86
#define COSD_FLAG_BIGVARIO                4
87
#define COSD_FLAG_STATS                   8
88
#define COSD_FLAG_WARNINGS               16
89
#define COSD_FLAG_STROMVOLT              32
728 cascade 90
#define COSD_FLAG_FCCURRENT              64
800 - 91
#define COSD_FLAG_AGGRHORIZON           128
523 cascade 92
 
728 cascade 93
 
407 cascade 94
#define COSD_FLAG_NTSC                    1
523 cascade 95
#define COSD_FLAG_GPSHEIGHT               2
96
#define COSD_FLAG_FCMODE                  4
757 cascade 97
#define COSD_FLAG_FEET                    8
826 - 98
#define COSD_FLAG_PASSIVE                16
837 - 99
#define COSD_FLAG_SHOW_SCOPE             32
346 cascade 100
 
471 cascade 101
/* ##########################################################################
102
 * FLAGS only usable during runtime (not saved)
103
 * ##########################################################################*/
465 cascade 104
#define COSD_FLAG_STROMREC                1
471 cascade 105
#define COSD_ICONS_WRITTEN                2
106
#define COSD_WASFLYING                    4
826 - 107
#define COSD_DATARECEIVED                 8
465 cascade 108
 
346 cascade 109
/* ##########################################################################
110
 * LED controll
111
 * ##########################################################################*/
112
#define LED1_ON                 PORTC |=  (1 << PC0);
113
#define LED1_OFF                PORTC &= ~(1 << PC0);
114
#define LED2_ON                 PORTC |=  (1 << PC1);
115
#define LED2_OFF                PORTC &= ~(1 << PC1);
116
#define LED3_ON                 PORTC |=  (1 << PC2);
117
#define LED3_OFF                PORTC &= ~(1 << PC2);
118
#define LED4_ON                 PORTC |=  (1 << PC3);
119
#define LED4_OFF                PORTC &= ~(1 << PC3);
120
 
121
/* ##########################################################################
122
 * switch controll
123
 * ##########################################################################*/
124
#define S1_PRESSED              !(PINC & (1<<PC5))
125
#define S2_PRESSED              !(PINC & (1<<PC4))
126
 
762 - 127
 
471 cascade 128
/* ##########################################################################
129
 * extern spi controlled vars
130
 * ##########################################################################*/
131
extern volatile uint16_t icnt;
132
extern volatile unsigned char * iptr;
507 cascade 133
extern volatile uint8_t spi_cmd_buffer[];
471 cascade 134
extern volatile uint8_t spi_ready;
507 cascade 135
extern int16_t ampere, max_ampere, s_volt;
471 cascade 136
extern int32_t ampere_wasted;
137
 
497 cascade 138
/* ##########################################################################
139
 * struct for displaymodes
140
 * ##########################################################################*/
141
typedef struct {
761 - 142
    int (*dfun)(void); // function pointer
143
    char *desc; // description text
497 cascade 144
} displaymode_t;
145
 
146
const displaymode_t ncdisplaymodes[2];
685 cascade 147
const displaymode_t fcdisplaymodes[2];
497 cascade 148
 
149
int (*osd_ncmode)(void);
150
int (*osd_fcmode)(void);
151
 
152
/* ##########################################################################
153
 * vars used by other parts as well
154
 * ##########################################################################*/
155
volatile uint16_t setsReceived;
156
 
157
volatile NaviData_t naviData;
783 - 158
volatile str_DebugOut debugData;
497 cascade 159
 
160
// cache old vars for blinking attribute, checkup is faster than full
161
// attribute write each time
162
volatile uint8_t last_UBat;
163
volatile uint8_t last_RC_Quality;
164
 
165
// 16bit should be enough, normal LiPos don't last that long
166
volatile uint16_t uptime;
167
volatile uint16_t timer;
685 cascade 168
volatile uint16_t flytime_fc;
734 cascade 169
volatile uint16_t wasted_ampere_offset;
497 cascade 170
 
171
// remember last time data was received
172
volatile uint8_t seconds_since_last_data;
173
 
174
// general PAL|NTSC distingiusch stuff
175
uint8_t top_line;
176
uint8_t bottom_line;
177
 
178
// battery voltages
179
uint8_t min_voltage;
180
uint8_t max_voltage;
181
 
837 - 182
// scope for 2nd camera field of view
183
uint8_t scope[8];
184
 
497 cascade 185
// Flags
523 cascade 186
uint8_t COSD_FLAGS_MODES, COSD_FLAGS_CONFIG, COSD_FLAGS_RUNTIME, COSD_DISPLAYMODE;
497 cascade 187
 
188
// stats for after flight
523 cascade 189
int16_t max_Altimeter, altimeter_offset;
497 cascade 190
uint8_t min_UBat;
191
 
192
uint16_t max_GroundSpeed;
193
int16_t max_Distance;
194
uint16_t max_FlyingTime;
195
 
196
// flags from last round to check for changes
197
uint8_t old_MKFlags;
832 - 198
uint8_t old_NCFlags;
497 cascade 199
 
200
const char *directions[8];
499 cascade 201
const char *stats_item_pointers[8];
762 - 202
 
203
#endif