Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 378 → Rev 379

/C-OSD/trunk/CHANGE.LOG
17,6 → 17,11
* 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,6 → 25,9
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,6 → 12287,42
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
12296,48 → 12332,14
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
12349,6 → 12351,24
01010101
01010101
01010101
10101010
10101010
10101010
10101010
10101010
10101010
10101010
10101010
10101010
10101010
10101010
10101010
10101010
10101010
10101010
10101010
10101010
10101010
01010101
01010101
01010101
12361,47 → 12381,23
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
12424,48 → 12420,55
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
12476,6 → 12479,39
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
12486,50 → 12522,19
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
12553,47 → 12558,16
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
12605,6 → 12579,24
01010101
01010101
01010101
10101010
10101010
10101010
10101010
10101010
10101010
10101010
10101010
10101010
10101010
10101010
10101010
10101010
10101010
10101010
10101010
10101010
10101010
01010101
01010101
01010101
12616,48 → 12608,59
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
12680,9 → 12683,6
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, 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);
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);
#endif
 
#if WRITECHARS == 136
667,7 → 667,6
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);
678,6 → 677,69
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,12 → 69,34
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
203,6 → 225,9
//write_ndigit_number_u(x, y-1, percent * 13 / 100, 100, 0);
}
 
/* ##########################################################################
* variometer
* ##########################################################################*/
/**
* draw variometer arrows at <x>/<y> according to <variometer>
*/
240,6 → 265,49
}
}
 
/**
* 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
* ##########################################################################*/
638,6 → 706,8
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
// 200, 208, 216, 224, 232
// 192, 200, 208, 216, 224, 232
#endif
 
#ifndef NTSC // if NTSC is not thet via makefile
/C-OSD/trunk/max7456_software_spi.c
147,6 → 147,14
}
 
/**
* 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,6 → 84,11
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