/C-OSD/trunk/CHANGE.LOG |
---|
17,11 → 17,6 |
* Free Software Foundation, Inc., * |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
****************************************************************************/ |
20090418-1235 |
+big vario for testing purpose |
(Character Set 192 needs to be flashed) |
20090418-0100 |
*variometer uses more steps (9 instead of 5) |
*home-arrow is now home-clock using more steps (22,5° resolution) |
/C-OSD/trunk/README.TXT |
---|
25,9 → 25,6 |
Simple way: |
- Flash C-OSD-characters* (wait till all chars appear on screen before flashing next) |
- Flash C-OSD-*-(pal|ntsc) acording to your needs |
If you already have flashed a specific character file (or more) and you just want to |
update the software itself, you do not need to flash the character files again. |
Instructions: |
Connect the "To FC" port from EPi-OSD to the Debug port of the NaviCtrl. |
/C-OSD/trunk/c-osd.mcm |
---|
12287,42 → 12287,6 |
01010101 |
01010101 |
01010101 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
01010101 |
01010101 |
01010101 |
12332,14 → 12296,48 |
01010101 |
01010101 |
01010101 |
01101010 |
10101010 |
10101010 |
01010101 |
01011001 |
01010101 |
01010101 |
01011001 |
01010101 |
01011010 |
10101010 |
10101001 |
01011001 |
01011001 |
01011001 |
01011001 |
01011001 |
01011001 |
01011010 |
10101010 |
10101001 |
01011001 |
01011001 |
01011001 |
01011001 |
01011001 |
01011001 |
01101010 |
10101010 |
10101010 |
01011001 |
01010101 |
01011001 |
01011001 |
01010101 |
01011001 |
01011001 |
01010101 |
01011001 |
01011001 |
01010101 |
01101001 |
01010101 |
01010101 |
01010101 |
12351,24 → 12349,6 |
01010101 |
01010101 |
01010101 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
01010101 |
01010101 |
01010101 |
12381,23 → 12361,47 |
01010101 |
01010101 |
01010101 |
01011001 |
01010101 |
01010110 |
01011001 |
01010101 |
01010110 |
01011001 |
01010101 |
01010110 |
10101010 |
10101001 |
01011001 |
01011001 |
01010101 |
01100101 |
01011001 |
01010101 |
01010101 |
01011001 |
01010101 |
01010101 |
01011001 |
01010101 |
01010110 |
10101010 |
10100101 |
01010101 |
01011001 |
01010101 |
01010101 |
01011001 |
01010101 |
01010101 |
01011001 |
01010101 |
01010101 |
01011001 |
01010101 |
01101010 |
10101010 |
10101010 |
01010101 |
01010101 |
01010101 |
12420,55 → 12424,48 |
01010101 |
01010101 |
01010101 |
01011010 |
10101010 |
10101001 |
01011001 |
01010101 |
01011001 |
01011001 |
01010101 |
01011001 |
01011010 |
10101010 |
10101001 |
01011001 |
01010101 |
01011001 |
01011001 |
01010101 |
01011001 |
01011010 |
10101010 |
10101001 |
01010101 |
01011001 |
01010101 |
01010101 |
01011001 |
01010101 |
01101010 |
10101010 |
10101010 |
01010101 |
01011001 |
01010101 |
01010101 |
01011001 |
01010101 |
01010101 |
01011001 |
01010101 |
01010101 |
01011001 |
01010101 |
00000000 |
00000000 |
00000000 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
01010101 |
01010101 |
01010101 |
12479,39 → 12476,6 |
01010101 |
01010101 |
01010101 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
00000000 |
00000000 |
00000000 |
01010101 |
01010101 |
01010101 |
12522,19 → 12486,50 |
01010101 |
01010101 |
01010101 |
01011001 |
01010101 |
01011001 |
01011001 |
01011001 |
01010110 |
01011001 |
01100101 |
01010101 |
01100101 |
01010101 |
01011010 |
10101010 |
10101001 |
01010101 |
01100110 |
01010101 |
01101010 |
10101010 |
10101010 |
01010101 |
10010101 |
10010101 |
01010110 |
01010101 |
01100101 |
01011001 |
01101010 |
01011001 |
01100101 |
01010110 |
01010110 |
01010101 |
10101010 |
01010101 |
01010101 |
10010101 |
01010101 |
01010101 |
10010101 |
01100101 |
01010101 |
10101010 |
10100101 |
01010101 |
01010101 |
01010101 |
12558,16 → 12553,47 |
01010101 |
01010101 |
01010101 |
10101010 |
10101001 |
01010101 |
01010101 |
01010101 |
01010110 |
10101010 |
10101010 |
01010110 |
01010101 |
01010110 |
01010110 |
10101010 |
10101010 |
01010110 |
01010101 |
01010101 |
01010110 |
01010101 |
10010101 |
01010110 |
01101010 |
10101010 |
01010110 |
01010101 |
10010101 |
01010110 |
01010101 |
10010101 |
01010110 |
01010101 |
10010101 |
01010110 |
01010110 |
01100101 |
01011001 |
01011001 |
01011001 |
01100101 |
01100101 |
01010110 |
01010101 |
01010101 |
01010101 |
12579,24 → 12605,6 |
01010101 |
01010101 |
01010101 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
01010101 |
01010101 |
01010101 |
12608,59 → 12616,48 |
01010101 |
01010101 |
01010101 |
01010110 |
01010101 |
01010101 |
01010110 |
01010101 |
01010101 |
01010110 |
10101010 |
10101001 |
01011001 |
01010110 |
01010101 |
01100101 |
01010110 |
01010101 |
01010110 |
10101010 |
10101001 |
01010110 |
01010110 |
01010101 |
01010110 |
01010110 |
01010101 |
01010110 |
01010110 |
01010101 |
01101010 |
10101010 |
10101010 |
01010101 |
01010110 |
01010101 |
01010101 |
01010110 |
01010101 |
01010101 |
01010110 |
01010101 |
01010101 |
01010110 |
01010101 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
10101010 |
01010101 |
01010101 |
01010101 |
12683,6 → 12680,9 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01011010 |
10101010 |
10101001 |
16382,4 → 16382,4 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
/C-OSD/trunk/characters.c |
---|
98,14 → 98,14 |
0x01, 0x21, 0x55, 0x55, 0x21, 0x55, 0x55, 0x21, |
0x55, 0x55, 0x21, 0x55, 0x55, 0x45}; |
learn_char(128, c81); |
learn_char(129, c82); |
learn_char(130, c83); |
learn_char(131, c84); |
learn_char(132, c85); |
learn_char(133, c86); |
learn_char(134, c87); |
learn_char(135, c88); |
learn_char(128, c80); |
learn_char(129, c81); |
learn_char(130, c82); |
learn_char(131, c83); |
learn_char(132, c84); |
learn_char(133, c85); |
learn_char(134, c86); |
learn_char(135, c87); |
#endif |
#if WRITECHARS == 136 |
667,6 → 667,7 |
0x00, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x50, |
0x28, 0x05, 0x52, 0xaa, 0x85, 0x54, 0xaa, 0x15, |
0x55, 0x28, 0x55, 0x55, 0x41, 0x55}; |
learn_char(184, cb8); |
learn_char(185, cb9); |
learn_char(186, cba); |
677,69 → 678,6 |
learn_char(191, cbf); |
#endif |
#if WRITECHARS == 192 |
// 2/3 down block |
unsigned char cc0[54] ={0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, |
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, |
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, |
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, |
0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, |
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, |
0x55, 0x55, 0x55, 0x55, 0x55, 0x55}; |
// 1/3 down block |
unsigned char cc1[54] ={0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, |
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, |
0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, |
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, |
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, |
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, |
0x55, 0x55, 0x55, 0x55, 0x55, 0x55}; |
// middle-down block |
unsigned char cc2[54] ={0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, |
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, |
0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, |
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, |
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, |
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, |
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa}; |
// middle-up block |
unsigned char cc3[54] ={0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, |
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, |
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, |
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, |
0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, |
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, |
0x55, 0x55, 0x55, 0x55, 0x55, 0x55}; |
// 1/3 up block |
unsigned char cc4[54] ={0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, |
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, |
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, |
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, |
0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, |
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, |
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa}; |
// 2/3 up block |
unsigned char cc5[54] ={0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, |
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, |
0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, |
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, |
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, |
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, |
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa}; |
learn_char(192, cc0); |
learn_char(193, cc1); |
learn_char(194, cc2); |
learn_char(195, cc3); |
learn_char(196, cc4); |
learn_char(197, cc5); |
#endif |
#if WRITECHARS == 200 |
// GPS |
unsigned char cc8[54] = {0x55, 0x50, 0x55, 0x55, 0x4a, 0x15, 0x55, 0x2a, |
/C-OSD/trunk/main.c |
---|
69,34 → 69,12 |
char stats_item_2[] PROGMEM = "max Distance:"; |
char stats_item_3[] PROGMEM = "min voltage :"; |
char stats_item_4[] PROGMEM = "max time :"; |
char* stats_item_pointers[] PROGMEM = {stats_item_0, stats_item_1, stats_item_2, |
stats_item_3, stats_item_4}; |
char* stats_item_pointers[] PROGMEM = {stats_item_0, stats_item_1, stats_item_2, stats_item_3, stats_item_4}; |
// store more fixed strings in progmen |
char ON[] PROGMEM = "ON "; |
char ON[] PROGMEM = "ON "; |
char OFF[] PROGMEM = "OFF"; |
// big vario arrays |
char vario_00[5] PROGMEM = {0x00, 0x00, 0xc2, 0xff, 0xff}; |
char vario_01[5] PROGMEM = {0x00, 0x00, 0xc2, 0xff, 0xc0}; |
char vario_02[5] PROGMEM = {0x00, 0x00, 0xc2, 0xff, 0xc1}; |
char vario_03[5] PROGMEM = {0x00, 0x00, 0xc2, 0xff, 0x00}; |
char vario_04[5] PROGMEM = {0x00, 0x00, 0xc2, 0xc0, 0x00}; |
char vario_05[5] PROGMEM = {0x00, 0x00, 0xc2, 0xc1, 0x00}; |
char vario_06[5] PROGMEM = {0x00, 0x00, 0xc2, 0x00, 0x00}; |
char vario_07[5] PROGMEM = {0x00, 0x00, 0xbb, 0x00, 0x00}; |
char vario_08[5] PROGMEM = {0x00, 0x00, 0xc3, 0x00, 0x00}; |
char vario_09[5] PROGMEM = {0x00, 0xc4, 0xc3, 0x00, 0x00}; |
char vario_10[5] PROGMEM = {0x00, 0xc5, 0xc3, 0x00, 0x00}; |
char vario_11[5] PROGMEM = {0x00, 0xff, 0xc3, 0x00, 0x00}; |
char vario_12[5] PROGMEM = {0xc4, 0xff, 0xc3, 0x00, 0x00}; |
char vario_13[5] PROGMEM = {0xc5, 0xff, 0xc3, 0x00, 0x00}; |
char vario_14[5] PROGMEM = {0xff, 0xff, 0xc3, 0x00, 0x00}; |
char* vario_pnt[15] PROGMEM = {vario_00, vario_01, vario_02, vario_03, vario_04, |
vario_05, vario_06, vario_07, vario_08, |
vario_09, vario_10, vario_11, vario_12, |
vario_13, vario_14}; |
#endif // ends !(ALLCHARSDEBUG|(WRITECHARS != -1)) |
// general PAL|NTSC distingiusch stuff |
225,9 → 203,6 |
//write_ndigit_number_u(x, y-1, percent * 13 / 100, 100, 0); |
} |
/* ########################################################################## |
* variometer |
* ##########################################################################*/ |
/** |
* draw variometer arrows at <x>/<y> according to <variometer> |
*/ |
265,49 → 240,6 |
} |
} |
/** |
* draw a bigger vario with middle at <x>/<y> acording to <variometer> |
*/ |
void draw_big_variometer(uint8_t x, uint8_t y, int16_t variometer) { |
int16_t index = 7 + variometer; |
if (index > 14) index = 14; |
else if (index < 0) index = 0; |
// TODO: why does write_string_pgm_down(x, y-2, vario_pnt[index], 5); |
// not work??? WTF?! |
switch (index) { |
case 0: write_string_pgm_down(x, y-2, vario_pnt[0], 5); |
break; |
case 1: write_string_pgm_down(x, y-2, vario_pnt[1], 5); |
break; |
case 2: write_string_pgm_down(x, y-2, vario_pnt[2], 5); |
break; |
case 3: write_string_pgm_down(x, y-2, vario_pnt[3], 5); |
break; |
case 4: write_string_pgm_down(x, y-2, vario_pnt[4], 5); |
break; |
case 5: write_string_pgm_down(x, y-2, vario_pnt[5], 5); |
break; |
case 6: write_string_pgm_down(x, y-2, vario_pnt[6], 5); |
break; |
case 7: write_string_pgm_down(x, y-2, vario_pnt[7], 5); |
break; |
case 8: write_string_pgm_down(x, y-2, vario_pnt[8], 5); |
break; |
case 9: write_string_pgm_down(x, y-2, vario_pnt[9], 5); |
break; |
case 10: write_string_pgm_down(x, y-2, vario_pnt[10], 5); |
break; |
case 11: write_string_pgm_down(x, y-2, vario_pnt[11], 5); |
break; |
case 12: write_string_pgm_down(x, y-2, vario_pnt[12], 5); |
break; |
case 13: write_string_pgm_down(x, y-2, vario_pnt[13], 5); |
break; |
default: write_string_pgm_down(x, y-2, vario_pnt[14], 5); |
} |
} |
/* ########################################################################## |
* artificial horizon |
* ##########################################################################*/ |
706,8 → 638,6 |
Decode64(); |
naviData = *((NaviData_t*) pRxData); |
draw_big_variometer(27, 8, naviData.Variometer); |
// first line |
write_ndigit_number_u(2, top_line, (uint16_t) (((uint32_t) naviData.GroundSpeed * (uint32_t)9) / (uint32_t)250), 100, 0); |
/C-OSD/trunk/main.h |
---|
28,7 → 28,7 |
// enables the allchars as well to see results |
// currently in use: |
// 128, 136, 144, 152, 160, 168, 176, 184 |
// 192, 200, 208, 216, 224, 232 |
// 200, 208, 216, 224, 232 |
#endif |
#ifndef NTSC // if NTSC is not thet via makefile |
/C-OSD/trunk/max7456_software_spi.c |
---|
147,14 → 147,6 |
} |
/** |
* write an <string> from progmen at <x>/<y> downwards to MAX7456 display memory |
*/ |
void write_string_pgm_down(uint8_t x, uint8_t y, char *string, uint8_t length) { |
while (length--) |
write_char((x+(y++ * 30)), pgm_read_byte(string++)); |
} |
/** |
* Write only some digits of a unsigned <number> at <x>/<y> to MAX7456 display memory |
* <num> represents the largest multiple of 10 that will still be displayable as |
* the first digit, so num = 10 will be 0-99 and so on |
/C-OSD/trunk/max7456_software_spi.h |
---|
84,11 → 84,6 |
void write_ascii_string_pgm(uint8_t, uint8_t, char*); |
/** |
* write an <string> from progmen at <x>/<y> downwards to MAX7456 display memory |
*/ |
void write_string_pgm_down(uint8_t, uint8_t, char*, uint8_t); |
/** |
* Write only some digits of a unsigned <number> at <x>/<y> to MAX7456 display memory |
* <num> represents the largest multiple of 10 that will still be displayable as |
* the first digit, so num = 10 will be 0-99 and so on |