Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 453 → Rev 454

/C-OSD/trunk/CHANGE.LOG
18,6 → 18,9
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
****************************************************************************/
 
20090512-2100
+some FCONLY basics (set FCONLY to 1 in main.h to use it)
20090511-2345
*battery voltages now calculated according to CELL_VOLT_MIN CELL_VOLT_MAX and CELL_NUM
*CELL_NUM -1 causes a rough auto detection of cell number
/C-OSD/trunk/main.c
259,8 → 259,16
config_menu_doclick(chosen, menu);
break;
case 6: // re-request OSD data
// request OSD Data from NC every 100ms
usart1_request_mk_data(1, 'o', 100);
#if FCONLY
// request data ever 100ms from FC;
usart1_request_mk_data(0, 'd', 100);
#else
// request OSD Data from NC every 100ms
usart1_request_mk_data(1, 'o', 100);
 
// and disable debug...
usart1_request_mk_data(0, 'd', 0);
#endif
config_menu_doclick(chosen, menu);
break;
case 7: // disable debug data
399,15 → 407,16
//usart1_puts("\x1B[2J\x1B[H");
//usart1_puts("hello world!\r\n");
 
 
#if FCONLY
// request data ever 100ms from FC;
//usart1_request_mk_data(0, 'd', 100);
 
usart1_request_mk_data(0, 'd', 100);
#else
// request OSD Data from NC every 100ms
usart1_request_mk_data(1, 'o', 100);
 
// and disable debug...
usart1_request_mk_data(0, 'd', 0);
#endif
 
// stats for after flight
int16_t max_Altimeter = 0;
425,6 → 434,13
while (1) {
// write icons at init or after menu/mode-switch
if (!(COSD_FLAGS & COSD_ICONS_WRITTEN) && (COSD_FLAGS & COSD_FLAG_HUD)) {
#if FCONLY
// FC Mode ICONS
write_char_xy(10, top_line, 0xCA); // RC-transmitter
write_char_xy(27, top_line, 0xCC); // small meters m height
write_char_xy(7, bottom_line, 0x9E); // small v
#else
// NAVI Mode ICONS
write_char_xy(5, top_line, 0xCB); // km/h
write_char_xy(10, top_line, 0xCA); // RC-transmitter
write_char_xy(16, top_line, 0xD0); // degree symbol
438,22 → 454,59
write_char_xy(26, bottom_line, 0xC8); // sat1
write_char_xy(27, bottom_line, 0xC9); // sat2
COSD_FLAGS |= COSD_ICONS_WRITTEN;
#endif
}
if (rxd_buffer_locked) {
if (COSD_FLAGS & COSD_FLAG_HUD) {
#if FCONLY
if (rxd_buffer[2] == 'D') { // FC Data
/*Decode64();
Decode64();
debugData = *((DebugOut_t*) pRxData);
write_number_s(12, 2, RxDataLen);
write_number_s(20, 2, setsReceived++);
write_number_s(12, 3, debugData.Analog[0]); // AngleNick
write_number_s(12, 4, debugData.Analog[1]); // AngleRoll
write_number_s(12, 5, debugData.Analog[5]); // Height
write_number_s(12, 6, debugData.Analog[9]); // Voltage
write_number_s(12, 7, debugData.Analog[10]);// RC Signal
write_number_s(12, 8, debugData.Analog[11]);// Gyro compass
seconds_since_last_data = 0;*/
} else if (rxd_buffer[2] == 'O') { // NC OSD Data
write_ascii_string(2, 2, "FCONLY MODE");
 
write_ndigit_number_u(7, top_line, debugData.Analog[10], 100, 0);
if (debugData.Analog[10] <= RCLVL_WRN && last_RC_Quality > RCLVL_WRN) {
for (uint8_t x = 0; x < 4; x++)
write_char_att_xy(7 + x, top_line, BLINK);
} else if (debugData.Analog[10] > RCLVL_WRN && last_RC_Quality <= RCLVL_WRN) {
for (uint8_t x = 0; x < 4; x++)
write_char_att_xy(7 + x, top_line, 0);
}
last_RC_Quality = debugData.Analog[10];
 
 
if (debugData.Analog[5] > 300 || debugData.Analog[5] < -300) {
// above 10m only write full meters
write_ndigit_number_s(23, top_line, debugData.Analog[5] / 30, 1000, 0);
} else {
// up to 10m write meters.dm
write_ndigit_number_s_10th(23, top_line, debugData.Analog[5] / 3, 100, 0);
}
 
draw_battery(2, bottom_line, min_voltage, debugData.Analog[9], max_voltage);
write_ndigit_number_u_10th(3, bottom_line, debugData.Analog[9], 100, 0);
if (debugData.Analog[9] <= min_voltage && last_UBat > min_voltage) {
for (uint8_t x = 2; x < 8; x++)
write_char_att_xy(x, bottom_line, BLINK);
} else if (debugData.Analog[9] > min_voltage && last_UBat < min_voltage) {
for (uint8_t x = 2; x < 8; x++)
write_char_att_xy(x, bottom_line, 0);
}
// remember last values
last_UBat = debugData.Analog[9];
 
/*
debugData.Analog[0]); // AngleNick
debugData.Analog[1]); // AngleRoll
debugData.Analog[5]); // Height
debugData.Analog[9]); // Voltage
debugData.Analog[10]);// RC Signal
debugData.Analog[11]);// Gyro compass
*/
seconds_since_last_data = 0;
}
#else
if (rxd_buffer[2] == 'O') { // NC OSD Data
Decode64();
naviData = *((NaviData_t*) pRxData);
624,6 → 677,7
old_MKFlags = naviData.MKFlags;
seconds_since_last_data = 0;
}
#endif
}
rxd_buffer_locked = 0;
}
632,9 → 686,16
config_menu();
}
if (seconds_since_last_data > 2) {
#if FCONLY
// request data ever 100ms from FC;
usart1_request_mk_data(0, 'd', 100);
#else
// request OSD Data from NC every 100ms
usart1_request_mk_data(1, 'o', 100);
seconds_since_last_data = 0;
 
// and disable debug...
usart1_request_mk_data(0, 'd', 0);
#endif
}
}
#endif
/C-OSD/trunk/main.h
35,6 → 35,8
#define NTSC 0 // set to 1 for NTSC mode + lifts the bottom line
#endif
 
#define FCONLY 0 // set to 1 if you do NOT have a NaviCtrl and the OSD is
// connected to the FC directly
#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