Subversion Repositories Projects

Rev

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

Rev Author Line No. Line
902 - 1
/****************************************************************************
2039 - 2
 *   Copyright (C) 2009-2014 by Claas Anders "CaScAdE" Rathje               *
902 - 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
 
21
#ifndef _MAIN_H
22
#define _MAIN_H
23
 
24
#ifndef MCU
25
#define MCU atmega162
26
#endif
27
 
28
#ifndef __AVR_ATmega162__
29
#define __AVR_ATmega162__
30
#endif
31
 
32
 
33
#include <avr/pgmspace.h>
34
#include "mk-data-structs.h"
35
 
36
/* ##########################################################################
37
 * Debugging and general purpose definitions
38
 * ##########################################################################*/
1771 - 39
#ifndef BUILDOSDBUILDDATE
40
#define BUILDOSDBUILDDATE "DEV "__DATE__ // build date, this is testing...
902 - 41
#endif
42
 
43
#define ALLCHARSDEBUG 0         // set to 1 and flash firmware to see all chars
44
 
45
#ifndef WRITECHARS              // if WRITECHARS not set via makefile
46
#define WRITECHARS -1           // set to 1 and flash firmware to write all chars
47
#endif
48
 
49
#ifndef NTSC                    // if NTSC is not thet via makefile
50
#define NTSC 0                  // set to 1 for NTSC mode + lifts the bottom line
51
#endif
52
 
53
#ifndef FCONLY
54
#define FCONLY 0                // set to 1 if you do NOT have a NaviCtrl and the OSD is
55
#endif                          // connected to the FC directly
56
 
954 - 57
//#define ACT_RSSI_FROM_LCD 1     // set to 1 to get the ACT RSSI from the FC-LCD in FC-Only mode... Really dirty!
58
 
902 - 59
#define HUD 1                    // set to 0 to disable HUD by default
60
#define ARTHORIZON 0		// set to 1 to enable roll&nick artificial horizon by default
61
#define BIGVARIO 0		// set to 1 to enable the big vario bar on right side
62
#define STATS 1			// set to 1 to enable statistics during motor off by default
63
#define WARNINGS 1		// set to 1 to display battery+rc warning even if HUD is disabled
64
 
65
//#define UBAT_WRN  94		// voltage for blinking warning, like FC settings (deprecated)
66
//#define UBAT_MAX 114		// maximal battery voltage for battery-sign (deprecated)
67
#define CELL_VOLT_MAX 37	// max voltage per battery cell (37 for LiPo)
68
#define CELL_VOLT_MIN 32	// min voltage per battery cell (maybe 32 for LiPo?)
69
#define CELL_NUM -1		// -1 for auto, 3 for 3s1p and 4 for 4s1p
70
#define RCLVL_WRN 100		// make the RC level blink if below this number
71
 
72
// ### read datasheet before changing stuff below this line :)
73
#define BLINK	0b01001111	// attribute byte for blinking characters
74
#define INVERT	0b00101111	// attribute byte for inverted characters
75
#define BLACKBG	0b10001111	// attribute byte for _black background_ on characters
76
 
77
// ### constants
78
#define MtoFT 32808399 // 3,2808399
79
 
80
// ### Antenna Tracking
81
//#define ANTENNATRACKTEST 1
82
 
932 - 83
// ### serial output of stuff sent to MAX7456
84
//#define SERIALDEBUGDRAW 1
85
 
902 - 86
/* ##########################################################################
87
 * FLAGS usable during runtime that get saved
88
 * ##########################################################################*/
89
#define COSD_FLAG_HUD			  1
90
#define COSD_FLAG_ARTHORIZON              2
91
#define COSD_FLAG_BIGVARIO		  4
92
#define COSD_FLAG_STATS			  8
93
#define COSD_FLAG_WARNINGS		 16
94
#define COSD_FLAG_STROMVOLT		 32
95
#define COSD_FLAG_FCCURRENT		 64
96
#define COSD_FLAG_AGGRHORIZON           128
97
 
98
 
99
#define COSD_FLAG_NTSC			  1
100
#define COSD_FLAG_GPSHEIGHT		  2
101
#define COSD_FLAG_FCMODE		  4
102
#define COSD_FLAG_FEET			  8
103
#define COSD_FLAG_PASSIVE		 16
104
#define COSD_FLAG_SHOW_SCOPE             32
105
#define COSD_FLAG_SHOW_COORDS            64
106
#define COSD_FLAG_BIGSPEED		128
107
 
108
/* ##########################################################################
109
 * FLAGS only usable during runtime (not saved)
110
 * ##########################################################################*/
111
#define COSD_FLAG_STROMREC		  1
112
#define COSD_ICONS_WRITTEN		  2
113
#define COSD_WASFLYING			  4
114
#define COSD_DATARECEIVED                 8
942 - 115
#define COSD_BLANKBYSJ                   16
2041 - 116
#define COSD_OSD_STARTED                128
902 - 117
 
118
/* ##########################################################################
119
 * LED controll
120
 * ##########################################################################*/
121
#define LED1_ON			PORTC |=  (1 << PC0);
122
#define LED1_OFF		PORTC &= ~(1 << PC0);
123
#define LED2_ON			PORTC |=  (1 << PC1);
124
#define LED2_OFF		PORTC &= ~(1 << PC1);
125
#define LED3_ON			PORTC |=  (1 << PC2);
126
#define LED3_OFF		PORTC &= ~(1 << PC2);
127
#define LED4_ON			PORTC |=  (1 << PC3);
128
#define LED4_OFF		PORTC &= ~(1 << PC3);
129
 
130
/* ##########################################################################
131
 * switch controll
132
 * ##########################################################################*/
133
#define S1_PRESSED		!(PINC & (1<<PC5))
134
#define S2_PRESSED		!(PINC & (1<<PC4))
135
 
942 - 136
/* ##########################################################################
137
 * solder jumpers
138
 * ##########################################################################*/
902 - 139
 
942 - 140
#define SJ1_CLOSED		!(PINC & (1<<PC6))
141
#define SJ2_CLOSED		!(PINC & (1<<PC7))
142
 
143
 
902 - 144
/* ##########################################################################
145
 * extern spi controlled vars
146
 * ##########################################################################*/
147
extern volatile uint16_t icnt;
148
extern volatile unsigned char * iptr;
149
extern volatile uint8_t spi_cmd_buffer[];
150
extern volatile uint8_t spi_ready;
151
extern int16_t ampere, max_ampere, s_volt;
152
extern int32_t ampere_wasted;
153
 
154
/* ##########################################################################
155
 * struct for displaymodes
156
 * ##########################################################################*/
157
typedef struct {
158
    int (*dfun)(void); // function pointer
159
    char *desc; // description text
160
} displaymode_t;
161
 
162
const displaymode_t ncdisplaymodes[2];
163
const displaymode_t fcdisplaymodes[2];
164
 
165
int (*osd_ncmode)(void);
166
int (*osd_fcmode)(void);
167
 
168
/* ##########################################################################
169
 * vars used by other parts as well
170
 * ##########################################################################*/
171
volatile uint16_t setsReceived;
172
 
1197 - 173
#if FCONLY
174
volatile str_DebugOut debugData;
175
#else
1801 - 176
volatile NaviData_t naviData;
177
volatile Data3D_t data3d;
1197 - 178
#endif
902 - 179
 
180
// cache old vars for blinking attribute, checkup is faster than full
181
// attribute write each time
182
volatile uint8_t last_UBat;
183
volatile uint8_t last_RC_Quality;
184
 
185
// 16bit should be enough, normal LiPos don't last that long
186
volatile uint16_t uptime;
187
volatile uint16_t timer;
188
volatile uint16_t flytime_fc;
189
volatile uint16_t wasted_ampere_offset;
190
 
191
// remember last time data was received
192
volatile uint8_t seconds_since_last_data;
193
 
194
// general PAL|NTSC distingiusch stuff
195
uint8_t top_line;
196
uint8_t bottom_line;
197
 
198
// battery voltages
199
uint8_t min_voltage;
200
uint8_t max_voltage;
201
 
202
// scope for 2nd camera field of view
203
uint8_t scope[12];
204
 
205
// Flags
206
uint8_t COSD_FLAGS_MODES, COSD_FLAGS_CONFIG, COSD_FLAGS_RUNTIME, COSD_DISPLAYMODE;
207
 
208
// stats for after flight
209
int16_t max_Altimeter, altimeter_offset;
210
uint8_t min_UBat;
211
 
212
uint16_t max_GroundSpeed;
213
int16_t max_Distance;
214
uint16_t max_FlyingTime;
215
 
216
// flags from last round to check for changes
217
uint8_t old_MKFlags;
218
uint8_t old_NCFlags;
219
 
1197 - 220
char *directions[8];
902 - 221
 
222
#endif