/C-OSD/trunk/CHANGE.LOG |
---|
18,10 → 18,18 |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
****************************************************************************/ |
20090418-2015 |
*fixed bug in Character Set 128 (reflash it if you already flashed it!) |
+another set of vario chars |
*changed vario to use new characters |
*moved vario/home-bearing positions |
*big vario now enabled via menu or BIGVARIO |
(Character Set 112 needs to be flashed) |
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/c-osd.mcm |
---|
7176,55 → 7176,51 |
01010101 |
01010101 |
01010101 |
01010110 |
01010101 |
01010101 |
01010110 |
01010101 |
01010101 |
01010110 |
01010101 |
10101010 |
01010110 |
10101010 |
01010110 |
01101010 |
10010101 |
01011001 |
01010101 |
10010101 |
01011001 |
01010101 |
10010101 |
10100101 |
01010101 |
01100101 |
01010101 |
01010101 |
01100101 |
01010101 |
01010101 |
01100101 |
01010101 |
01010101 |
01100101 |
01010101 |
01010101 |
01100101 |
01010101 |
01010101 |
01011001 |
01010101 |
01010101 |
01011001 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01000001 |
01010101 |
01010101 |
00101000 |
01010101 |
01010100 |
10101010 |
00010101 |
01010010 |
10101010 |
10000101 |
01001010 |
10101010 |
10100001 |
00101010 |
10101010 |
10101000 |
00000000 |
00000000 |
00000000 |
01010101 |
01010101 |
01010101 |
7246,42 → 7242,49 |
01010101 |
01010101 |
01010101 |
01010110 |
10101010 |
10010101 |
01010101 |
01010101 |
10010101 |
01010101 |
01010101 |
10010101 |
01010101 |
01000001 |
01010101 |
10010101 |
01010101 |
00101000 |
01010101 |
10010101 |
01010100 |
10101010 |
00010101 |
01010010 |
10101010 |
10000101 |
01001010 |
10101010 |
10100001 |
00101010 |
10101010 |
10101000 |
00000000 |
00000000 |
00000000 |
01010101 |
00101000 |
01010101 |
10010101 |
01010101 |
01010101 |
10010101 |
01010101 |
01010101 |
10010101 |
01010101 |
01010101 |
10010101 |
01010101 |
01010101 |
10010101 |
01010101 |
01010101 |
10010101 |
01101010 |
01010100 |
10101010 |
00010101 |
01010010 |
10101010 |
10000101 |
01001010 |
10101010 |
10100001 |
00101010 |
10101010 |
10101000 |
00000000 |
00000000 |
00000000 |
01010101 |
01010101 |
01010101 |
7293,121 → 7296,123 |
01010101 |
01010101 |
01010101 |
00101000 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010110 |
01010100 |
10101010 |
10101001 |
01010101 |
01010101 |
01011001 |
01010101 |
01010101 |
01011001 |
01010101 |
01010101 |
01011001 |
01010101 |
01010101 |
01011001 |
01010101 |
00010101 |
01010010 |
10101010 |
10101001 |
01010101 |
01010101 |
01011001 |
01010101 |
01010101 |
01011001 |
01010101 |
01010101 |
01011001 |
01010101 |
01010101 |
01011001 |
01010101 |
01010101 |
01011001 |
01010110 |
10000101 |
01001010 |
10101010 |
10101001 |
10100001 |
00101010 |
10101010 |
10101000 |
00000000 |
00000000 |
00000000 |
01010101 |
00101000 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01011010 |
01010100 |
10101010 |
10100101 |
00010101 |
01010010 |
10101010 |
10000101 |
01001010 |
10101010 |
10100001 |
00101010 |
10101010 |
10101000 |
00000000 |
00000000 |
00000000 |
01010101 |
00101000 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01101010 |
01010100 |
10101010 |
10101001 |
00010101 |
01010010 |
10101010 |
10000101 |
01001010 |
10101010 |
10100001 |
00101010 |
10101010 |
10101000 |
00000000 |
00000000 |
00000000 |
01010101 |
01010101 |
01011001 |
01010101 |
01010101 |
01011001 |
01010101 |
01010101 |
01011001 |
01010101 |
01010101 |
01100101 |
01010101 |
01010101 |
01100101 |
01010101 |
00000000 |
01010101 |
10010101 |
01010100 |
00000000 |
00010101 |
01010000 |
00000000 |
00000101 |
01000000 |
00000000 |
00000001 |
00000000 |
00000000 |
00000000 |
00000000 |
00000000 |
00000000 |
01010101 |
01011010 |
00000000 |
01010101 |
01010100 |
00000000 |
00010101 |
01010000 |
00000000 |
00000101 |
01000000 |
00000000 |
00000001 |
00000000 |
00000000 |
00000000 |
00000000 |
00000000 |
00000000 |
01010101 |
10100101 |
00000000 |
01010101 |
01011010 |
01010100 |
00000000 |
00010101 |
01010000 |
00000000 |
00000101 |
01000000 |
00000000 |
00000001 |
00000000 |
00000000 |
00000000 |
00000000 |
00000000 |
00000000 |
01010101 |
01010101 |
01010101 |
7418,11 → 7423,59 |
01010101 |
01010101 |
01010101 |
00000000 |
00000000 |
00000000 |
00000000 |
00000000 |
00000000 |
01000000 |
00000000 |
00000001 |
01010000 |
00000000 |
00000101 |
01010100 |
00000000 |
00010101 |
01010101 |
00000000 |
01010101 |
00000000 |
00000000 |
00000000 |
00000000 |
00000000 |
00000000 |
01000000 |
00000000 |
00000001 |
01010000 |
00000000 |
00000101 |
01010100 |
00000000 |
00010101 |
01010101 |
00000000 |
01010101 |
00000000 |
00000000 |
00000000 |
00000000 |
00000000 |
00000000 |
01000000 |
00000000 |
00000001 |
01010000 |
00000000 |
00000101 |
01010100 |
00000000 |
00010101 |
01010101 |
00000000 |
01010101 |
01010101 |
01010101 |
7434,46 → 7487,108 |
01010101 |
01010101 |
01010101 |
01100101 |
01011001 |
00000000 |
00000000 |
00000000 |
00101010 |
10101010 |
10101000 |
01001010 |
10101010 |
10100001 |
01010010 |
10101010 |
10000101 |
01010100 |
10101010 |
00010101 |
01010101 |
01100101 |
01011001 |
00101000 |
01010101 |
01100101 |
01011001 |
00000000 |
00000000 |
00000000 |
00101010 |
10101010 |
10101000 |
01001010 |
10101010 |
10100001 |
01010010 |
10101010 |
10000101 |
01010100 |
10101010 |
00010101 |
01010101 |
01100101 |
01011001 |
00101000 |
01010101 |
01100101 |
01011001 |
00000000 |
00000000 |
00000000 |
00101010 |
10101010 |
10101000 |
01001010 |
10101010 |
10100001 |
01010010 |
10101010 |
10000101 |
01010100 |
10101010 |
00010101 |
01010101 |
01100101 |
00101000 |
01010101 |
01010101 |
01100101 |
01010101 |
01010101 |
01100101 |
01010101 |
01010101 |
10010101 |
01010101 |
01010101 |
10010101 |
01010101 |
01010101 |
10010101 |
01010101 |
01010110 |
00000000 |
00000000 |
00000000 |
00101010 |
10101010 |
10101000 |
01001010 |
10101010 |
10100001 |
01010010 |
10101010 |
10000101 |
01010100 |
10101010 |
00010101 |
01010101 |
00101000 |
01010101 |
01011001 |
00000000 |
00000000 |
00000000 |
00101010 |
10101010 |
10101000 |
01001010 |
10101010 |
10100001 |
01010010 |
10101010 |
10000101 |
01010100 |
10101010 |
00010101 |
01010101 |
00101000 |
01010101 |
10100101 |
01010101 |
01000001 |
01010101 |
01010101 |
01010101 |
7500,43 → 7615,30 |
01010101 |
01010101 |
01010101 |
01011001 |
00000000 |
00000000 |
00000000 |
00101010 |
10101010 |
10101000 |
01001010 |
10101010 |
10100001 |
01010010 |
10101010 |
10000101 |
01010100 |
10101010 |
00010101 |
01010101 |
01010110 |
01011001 |
00101000 |
01010101 |
01010110 |
01011001 |
01010101 |
01010110 |
01011001 |
01000001 |
01010101 |
01010110 |
01011001 |
01010101 |
01010110 |
01011001 |
01010101 |
01010110 |
01011001 |
01010101 |
01010110 |
01011001 |
01010110 |
01010110 |
01011001 |
01010110 |
01010110 |
01011001 |
01011001 |
01011001 |
01011001 |
01100101 |
01011001 |
01011001 |
10010101 |
01100101 |
01011010 |
01010101 |
01010101 |
01010101 |
7563,44 → 7665,24 |
01010101 |
01010101 |
01010101 |
01011001 |
01010101 |
01010101 |
01011001 |
01010101 |
01010101 |
01011001 |
01010101 |
01010101 |
01011001 |
01010101 |
01010101 |
01011001 |
01010101 |
01010101 |
01011001 |
01010101 |
01010101 |
01011001 |
01010101 |
01011001 |
01011001 |
01010101 |
01011001 |
01011001 |
01010101 |
01100101 |
01011001 |
01010101 |
10010101 |
01011001 |
01010110 |
01010101 |
01011001 |
01101001 |
01010101 |
01011010 |
10010101 |
01010101 |
01010101 |
01010101 |
7612,24 → 7694,6 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01101010 |
10101010 |
10101001 |
7645,77 → 7709,13 |
01100101 |
01010101 |
01011001 |
01100101 |
01010101 |
01011001 |
01100101 |
01010101 |
01011001 |
01100101 |
01010101 |
01011001 |
01100101 |
01010101 |
01011001 |
01100101 |
01010101 |
01011001 |
01100101 |
01010101 |
01011001 |
01101010 |
10101010 |
10101001 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01010101 |
01101010 |
10101010 |
10101001 |
01100101 |
01010101 |
01011001 |
01100101 |
01010101 |
01011001 |
01100101 |
01010101 |
01011001 |
01100101 |
01010101 |
01011001 |
01010101 |
01010101 |
01011001 |
01010101 |
01010101 |
01011001 |
01010101 |
01010101 |
01100101 |
01010101 |
/C-OSD/trunk/characters.c |
---|
25,6 → 25,89 |
// flashing more than 8 chars per time is not proven to be safe |
// so take care |
#if WRITECHARS == 112 |
// one arrow up |
unsigned char c70[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, 0x41, 0x55, 0x55, 0x28, 0x55, 0x54, |
0xaa, 0x15, 0x52, 0xaa, 0x85, 0x4a, 0xaa, 0xa1, |
0x2a, 0xaa, 0xa8, 0x00, 0x00, 0x00}; |
// two arrows up |
unsigned char c71[54] ={0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, |
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, |
0x41, 0x55, 0x55, 0x28, 0x55, 0x54, 0xaa, 0x15, |
0x52, 0xaa, 0x85, 0x4a, 0xaa, 0xa1, 0x2a, 0xaa, |
0xa8, 0x00, 0x00, 0x00, 0x55, 0x28, 0x55, 0x54, |
0xaa, 0x15, 0x52, 0xaa, 0x85, 0x4a, 0xaa, 0xa1, |
0x2a, 0xaa, 0xa8, 0x00, 0x00, 0x00}; |
// three arrows up |
unsigned char c72[54] ={0x55, 0x28, 0x55, 0x54, 0xaa, 0x15, 0x52, 0xaa, |
0x85, 0x4a, 0xaa, 0xa1, 0x2a, 0xaa, 0xa8, 0x00, |
0x00, 0x00, 0x55, 0x28, 0x55, 0x54, 0xaa, 0x15, |
0x52, 0xaa, 0x85, 0x4a, 0xaa, 0xa1, 0x2a, 0xaa, |
0xa8, 0x00, 0x00, 0x00, 0x55, 0x28, 0x55, 0x54, |
0xaa, 0x15, 0x52, 0xaa, 0x85, 0x4a, 0xaa, 0xa1, |
0x2a, 0xaa, 0xa8, 0x00, 0x00, 0x00}; |
// three black arrows up |
unsigned char c73[54] ={0x55, 0x00, 0x55, 0x54, 0x00, 0x15, 0x50, 0x00, |
0x05, 0x40, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, |
0x00, 0x00, 0x55, 0x00, 0x55, 0x54, 0x00, 0x15, |
0x50, 0x00, 0x05, 0x40, 0x00, 0x01, 0x00, 0x00, |
0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x55, 0x54, |
0x00, 0x15, 0x50, 0x00, 0x05, 0x40, 0x00, 0x01, |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; |
// three black arrows down |
unsigned char c74[54] ={0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, |
0x01, 0x50, 0x00, 0x05, 0x54, 0x00, 0x15, 0x55, |
0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
0x40, 0x00, 0x01, 0x50, 0x00, 0x05, 0x54, 0x00, |
0x15, 0x55, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, |
0x00, 0x00, 0x40, 0x00, 0x01, 0x50, 0x00, 0x05, |
0x54, 0x00, 0x15, 0x55, 0x00, 0x55}; |
// three arrows down |
unsigned char c75[54] ={0x00, 0x00, 0x00, 0x2a, 0xaa, 0xa8, 0x4a, 0xaa, |
0xa1, 0x52, 0xaa, 0x85, 0x54, 0xaa, 0x15, 0x55, |
0x28, 0x55, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xa8, |
0x4a, 0xaa, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0xaa, |
0x15, 0x55, 0x28, 0x55, 0x00, 0x00, 0x00, 0x2a, |
0xaa, 0xa8, 0x4a, 0xaa, 0xa1, 0x52, 0xaa, 0x85, |
0x54, 0xaa, 0x15, 0x55, 0x28, 0x55}; |
// two arrows down |
unsigned char c76[54] ={0x00, 0x00, 0x00, 0x2a, 0xaa, 0xa8, 0x4a, 0xaa, |
0xa1, 0x52, 0xaa, 0x85, 0x54, 0xaa, 0x15, 0x55, |
0x28, 0x55, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xa8, |
0x4a, 0xaa, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0xaa, |
0x15, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55, 0x55, |
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, |
0x55, 0x55, 0x55, 0x55, 0x55, 0x55}; |
// one arrow down |
unsigned char c77[54] ={0x00, 0x00, 0x00, 0x2a, 0xaa, 0xa8, 0x4a, 0xaa, |
0xa1, 0x52, 0xaa, 0x85, 0x54, 0xaa, 0x15, 0x55, |
0x28, 0x55, 0x55, 0x41, 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}; |
learn_char(112, c70); |
learn_char(113, c71); |
learn_char(114, c72); |
learn_char(115, c73); |
learn_char(116, c74); |
learn_char(117, c75); |
learn_char(118, c76); |
learn_char(119, c77); |
#endif |
#if WRITECHARS == 128 |
// kph |
unsigned char c80[54] = {0x55, 0x55, 0x55, 0x45, 0x55, 0x55, 0x21, 0x55, |
98,14 → 181,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 |
/C-OSD/trunk/main.c |
---|
237,30 → 237,38 |
} else if (variometer > 0) { // gain height |
switch (variometer / 5){ |
case 0: |
write_char_xy(x, y, 0xba); // smallest arrow up |
//write_char_xy(x, y, 0xba); // smallest arrow up |
write_char_xy(x, y, 0x70); // one arrow up |
break; |
case 1: |
write_char_xy(x, y, 0xb9); // small arrow up |
//write_char_xy(x, y, 0xb9); // small arrow up |
write_char_xy(x, y, 0x71); // two arrows up |
break; |
case 2: |
write_char_xy(x, y, 0xb8); // large arrow up |
//write_char_xy(x, y, 0xb8); // large arrow up |
write_char_xy(x, y, 0x72); // three arrows up |
break; |
default: |
write_char_xy(x, y, 0xb7); // largest arrow up |
//write_char_xy(x, y, 0xb7); // largest arrow up |
write_char_xy(x, y, 0x73); // three black arrows up |
} |
} else { // sink |
switch (variometer / -5){ |
case 0: |
write_char_xy(x, y, 0xbc); // smallest arrow down |
//write_char_xy(x, y, 0xbc); // smallest arrow down |
write_char_xy(x, y, 0x77); // one arrow down |
break; |
case 1: |
write_char_xy(x, y, 0xbd); // small arrow down |
//write_char_xy(x, y, 0xbd); // small arrow down |
write_char_xy(x, y, 0x76); // two arrows down |
break; |
case 2: |
write_char_xy(x, y, 0xbe); // large arrow down |
//write_char_xy(x, y, 0xbe); // large arrow down |
write_char_xy(x, y, 0x75); // three arrows down |
break; |
default: |
write_char_xy(x, y, 0xbf); // largest arrow down |
//write_char_xy(x, y, 0xbf); // largest arrow down |
write_char_xy(x, y, 0x74); // three black arrows down |
} |
} |
} |
384,18 → 392,23 |
*/ |
void config_menu_drawings(uint8_t chosen) { |
// clear prevoius _cursor_ |
write_ascii_string(3, (chosen + 6) % 7, " "); |
write_ascii_string(3, (chosen + 5) % 8, " "); |
// draw current _cursor_ |
write_ascii_string(3, chosen + 6, ">"); |
write_ascii_string(3, chosen + 5, ">"); |
if (COSD_FLAGS & COSD_FLAG_HUD) { |
write_ascii_string_pgm(23, 5, ON); |
} else { |
write_ascii_string_pgm(23, 5, OFF); |
} |
if (COSD_FLAGS & COSD_FLAG_ARTHORIZON) { |
write_ascii_string_pgm(23, 6, ON); |
} else { |
write_ascii_string_pgm(23, 6, OFF); |
write_ascii_string_pgm(23, 6, OFF); |
} |
if (COSD_FLAGS & COSD_FLAG_ARTHORIZON) { |
if (COSD_FLAGS & COSD_FLAG_BIGVARIO) { |
write_ascii_string_pgm(23, 7, ON); |
} else { |
write_ascii_string_pgm(23, 7, OFF); |
write_ascii_string_pgm(23, 7, OFF); |
} |
if (COSD_FLAGS & COSD_FLAG_STATS) { |
write_ascii_string_pgm(23, 8, ON); |
413,9 → 426,9 |
* some sort of clicking response in the menu |
*/ |
void config_menu_doclick(uint8_t chosen, char** menu) { |
write_ascii_string(4, chosen + 6, "DONE "); |
write_ascii_string(4, chosen + 5, "DONE "); |
_delay_ms(1000); |
write_ascii_string(4, chosen + 6, menu[chosen]); |
write_ascii_string(4, chosen + 5, menu[chosen]); |
} |
/** |
428,8 → 441,9 |
// clear screen |
clear(); |
char* menu[8] = {"Full HUD", |
char* menu[9] = {"Full HUD", |
"Art.Horizon in HUD", |
"Big Vario bar", |
"Statistics", |
"Warnings", // TODO: do it! |
"Reset uptime", |
444,22 → 458,23 |
// wait a bit before doing stuff so user has chance to release button |
_delay_ms(250); |
write_ascii_string(4, 6, menu[0]); |
write_ascii_string(4, 7, menu[1]); |
write_ascii_string(4, 8, menu[2]); |
write_ascii_string(4, 9, menu[3]); |
write_ascii_string(4, 10, menu[4]); |
write_ascii_string(4, 11, menu[5]); |
write_ascii_string(4, 12, menu[6]); |
write_ascii_string(4, 13, menu[7]); |
write_ascii_string(4, 5, menu[0]); |
write_ascii_string(4, 6, menu[1]); |
write_ascii_string(4, 7, menu[2]); |
write_ascii_string(4, 8, menu[3]); |
write_ascii_string(4, 9, menu[4]); |
write_ascii_string(4, 10, menu[5]); |
write_ascii_string(4, 11, menu[6]); |
write_ascii_string(4, 12, menu[7]); |
write_ascii_string(4, 13, menu[8]); |
config_menu_drawings(chosen); |
while (inmenu) { |
if (s2_pressed()) { |
write_ascii_string(3, chosen+6, " "); |
chosen = (chosen + 1) % 8; |
write_ascii_string(3, chosen+6, ">"); |
write_ascii_string(3, chosen+5, " "); |
chosen = (chosen + 1) % 9; |
write_ascii_string(3, chosen+5, ">"); |
_delay_ms(500); |
} else if (s1_pressed()) { |
switch (chosen) { |
471,30 → 486,34 |
COSD_FLAGS ^= COSD_FLAG_ARTHORIZON; |
config_menu_drawings(chosen); |
break; |
case 2: // statistics |
case 2: // big vario |
COSD_FLAGS ^= COSD_FLAG_BIGVARIO; |
config_menu_drawings(chosen); |
break; |
case 3: // statistics |
COSD_FLAGS ^= COSD_FLAG_STATS; |
config_menu_drawings(chosen); |
break; |
case 3: // warnings |
case 4: // warnings |
COSD_FLAGS ^= COSD_FLAG_WARNINGS; |
config_menu_drawings(chosen); |
break; |
case 4: // reset uptime |
case 5: // reset uptime |
uptime = 0; |
config_menu_doclick(chosen, menu); |
break; |
case 5: // re-request OSD data |
case 6: // re-request OSD data |
// request OSD Data from NC every 100ms |
usart1_request_mk_data(1, 'o', 100); |
config_menu_doclick(chosen, menu); |
break; |
case 6: // disable debug data |
case 7: // disable debug data |
// disable sending of debug data |
// may result in smoother ddata display |
usart1_request_mk_data(0, 'd', 0); |
config_menu_doclick(chosen, menu); |
break; |
case 7: // exit |
case 8: // exit |
inmenu = 0; |
break; |
} |
521,8 → 540,9 |
COSD_FLAGS = (NTSC << 0); |
COSD_FLAGS |= (HUD << 1); |
COSD_FLAGS |= (ARTHORIZON << 2); |
COSD_FLAGS |= (STATS << 3); |
COSD_FLAGS |= (WARNINGS << 4); |
COSD_FLAGS |= (BIGVARIO << 3); |
COSD_FLAGS |= (STATS << 4); |
COSD_FLAGS |= (WARNINGS << 5); |
// set up Atmega162 Ports |
DDRA |= (1 << PA1); // PA1 output (/CS) |
681,7 → 701,10 |
write_char_xy(5, top_line, 203); // km/h |
write_char_xy(10, top_line, 202); // RC-transmitter |
write_char_xy(16, top_line, 208); // degree symbol |
write_char_xy(27, top_line, 204); // small meters m |
write_char_xy(27, top_line, 204); // small meters m height |
write_char_xy(20, top_line+1, 0xb0); // left circle |
write_char_xy(22, top_line+1, 0xb2); // right circle |
write_char_xy(27, top_line+1, 204); // small meters m home |
//write_ascii_string(6, bottom_line, "V"); // voltage |
write_char_xy(14, bottom_line, 209); // on clock |
write_char_xy(22, bottom_line, 210); // fly clock |
705,9 → 728,7 |
} else if (rxd_buffer[2] == 'O') { // NC OSD Data |
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); |
725,7 → 746,7 |
write_ascii_string(17, top_line, directions[heading_conv(naviData.CompassHeading)]); |
draw_variometer(20, top_line, naviData.Variometer); |
draw_variometer(21, top_line, naviData.Variometer); |
//note:lephisto:according to several sources it's /30 |
if (naviData.Altimeter > 300 || naviData.Altimeter < -300) { |
742,9 → 763,9 |
// TODO: verify correctness |
uint16_t heading_home = (naviData.HomePositionDeviation.Bearing + 360 - naviData.CompassHeading) % 360; |
//write_char_xy(27, top_line + 1, arrowdir[heading_conv(heading_home)]); |
//write_char_xy(21, top_line + 1, arrowdir[heading_conv(heading_home)]); |
// finer resolution, 0xa0 is first character and we add the index 0 <= index < 16 |
write_char_xy(27, top_line + 1, 0xa0 + heading_fine_conv(heading_home)); |
write_char_xy(21, top_line + 1, 0xa0 + heading_fine_conv(heading_home)); |
write_ndigit_number_u(24, top_line + 1, naviData.HomePositionDeviation.Distance / 10, 100, 0); |
780,6 → 801,9 |
draw_artificial_horizon(top_line + 2, bottom_line - 1, naviData.AngleNick, naviData.AngleRoll); |
} |
} |
if (COSD_FLAGS & COSD_FLAG_BIGVARIO) { |
draw_big_variometer(27, 8, naviData.Variometer); |
} |
// bottom line |
write_ndigit_number_u_10th(2, bottom_line, naviData.UBat, 100, 0); |
/C-OSD/trunk/main.h |
---|
27,7 → 27,7 |
#define WRITECHARS -1 // set to XXX and flash firmware to write new char |
// enables the allchars as well to see results |
// currently in use: |
// 128, 136, 144, 152, 160, 168, 176, 184 |
// 112, 128, 136, 144, 152, 160, 168, 176, 184 |
// 192, 200, 208, 216, 224, 232 |
#endif |
37,6 → 37,7 |
#define HUD 1 // set to 0 to disable HUD by default |
#define ARTHORIZON 0 // set to 1 to enable roll&nick artificial horizon by default |
#define BIGVARIO 0 // set to 1 to enable the big vario bar on right side |
#define STATS 1 // set to 1 to enable statistics during motor off by default |
#define WARNINGS 1 // set to 1 to display battery+rc warning even if HUD is disabled |
53,9 → 54,10 |
#define COSD_FLAG_NTSC 1 |
#define COSD_FLAG_HUD 2 |
#define COSD_FLAG_ARTHORIZON 4 |
#define COSD_FLAG_STATS 8 |
#define COSD_FLAG_WARNINGS 16 |
#define COSD_ICONS_WRITTEN 32 |
#define COSD_FLAG_BIGVARIO 8 |
#define COSD_FLAG_STATS 16 |
#define COSD_FLAG_WARNINGS 32 |
#define COSD_ICONS_WRITTEN 64 |
/* ########################################################################## |
* LED controll |