Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 762 → Rev 783

/C-OSD/trunk/config.c
43,8 → 43,8
 
const displaymode_t * mode;
 
const char ee_message0[] PROGMEM = "Loading Data from EEPROM";
const char ee_message1[] PROGMEM = "No saved Data in EEPROM";
const char ee_message0[] PROGMEM = "Loading from EEPROM";
const char ee_message1[] PROGMEM = "No Data in EEPROM";
const char* ee_msg[] PROGMEM = {ee_message0, ee_message1};
 
/**
52,13 → 52,13
*/
void get_eeprom(uint8_t verbose) {
if (eeprom_read_byte(&ee_checkbyte1) == CHECKBYTE1 && eeprom_read_byte(&ee_checkbyte2) == CHECKBYTE2) {
if (verbose) write_ascii_string_pgm(2, 9, ee_msg[0]); // Loading data
if (verbose) write_ascii_string_pgm(2, 2, ee_msg[0]); // Loading data
COSD_FLAGS_MODES = eeprom_read_byte(&ee_COSD_FLAGS_MODES);
COSD_FLAGS_CONFIG = eeprom_read_byte(&ee_COSD_FLAGS_CONFIG);
COSD_DISPLAYMODE = eeprom_read_byte(&ee_COSD_DISPLAYMODE);
//if (verbose) write_ndigit_number_u(23, 11, COSD_DISPLAYMODE, 2, 0);
} else {
if (verbose) write_ascii_string_pgm(2, 9, ee_msg[1]); // Loading data
if (verbose) write_ascii_string_pgm(2, 2, ee_msg[1]); // Loading data
}
}
 
79,58 → 79,82
*/
void init_cosd(uint8_t UBat) {
clear();
write_ascii_string_pgm(2, 1, PSTR("C-OSD Initialisation")); // C-OSD Initialisation
write_ascii_string_pgm(2, 1, PSTR("C-OSD Init"));
write_ascii_string_pgm(2, 4, PSTR(BUILDDATE));
 
#if FCONLY
write_ascii_string_pgm(2, 2, PSTR("FC only Mode")); // FC only mode
write_ascii_string_pgm(2, 3, PSTR("FC only Mode"));
#else
write_ascii_string_pgm(2, 2, PSTR("NaviCtrl Mode")); // NaviCtrl Mode
write_ascii_string_pgm(2, 3, PSTR("NaviCtrl Mode"));
 
usart1_EnableTXD();
usart1_puts_pgm(PSTR(REQUEST_UART_TO_FC));
usart1_DisableTXD();
#endif
write_ascii_string_pgm(2, 3, PSTR(BUILDDATE));
uint8_t cellnum = 0;
if (CELL_NUM == -1) {
write_ascii_string_pgm(2, 4, PSTR("Guessing Number of Cells")); // Guessing Number of Cells
do {
cellnum++;
} while (UBat > ((cellnum * CELL_VOLT_MAX) + 23));
 
 
usart1_request_blocking('Q', PSTR(REQUEST_CURRENT_SETTING));
 
//write_ascii_char(4 + 12 * 30, rxd_buffer[2]);
 
paramset_serial setting;
setting = *((paramset_serial*)pRxData);
 
write_ascii_string_pgm(2, 6, PSTR("Setting: "));
write_ndigit_number_u(11, 6, setting.SettingsIndex, 1, 1);
write_ascii_string_len(13, 6, setting.param.Name, 12);
 
uint8_t cells = 0;
write_ascii_string_pgm(2, 8, PSTR("Battery:")); // Guessing Number of Cells
if (CELL_NUM == -1) {
#define MAX_CELL_VOLTAGE 43 // max cell volatage for LiPO
if (setting.param.UnterspannungsWarnung < 50) {
// up to 6s LiPo, less than 2s is technical impossible
for(cells = 2; cells < 7; cells++) {
if(UBat < cells * MAX_CELL_VOLTAGE) break;
}
 
min_voltage = cells * setting.param.UnterspannungsWarnung;
} else {
min_voltage = setting.param.UnterspannungsWarnung;
cells = min_voltage / CELL_VOLT_MIN;
}
//write_ndigit_number_u(10, 13, setting.param.UnterspannungsWarnung, 3, 1);
} else {
cellnum = CELL_NUM;
cells = CELL_NUM;
min_voltage = cells * CELL_VOLT_MIN;
}
min_voltage = cellnum * CELL_VOLT_MIN;
max_voltage = cellnum * CELL_VOLT_MAX;
write_ascii_string_pgm(2, 5, PSTR("Number of Cells:")); // Number of Cells
write_ndigit_number_u(21, 5, cellnum, 1, 0);
write_ascii_string_pgm(2, 6, PSTR("Warn Voltage :")); // Warn Voltage
write_ndigit_number_s_10th(20, 6, min_voltage, 3, 0);
write_ascii_string_pgm(2, 7, PSTR("Max Voltage :")); // Max Voltage
write_ndigit_number_s_10th(20, 7, max_voltage, 3, 0);
max_voltage = cells * CELL_VOLT_MAX;
 
write_ndigit_number_u(11, 8, cells, 1, 0);
write_ascii_string_pgm(13, 8, PSTR("Cells")); // Number of Cells
write_ascii_string_pgm(2, 9, PSTR("Warn:")); // Warn Voltage
write_ndigit_number_s_10th(8, 9, min_voltage, 3, 0);
write_ascii_string_pgm(14, 9, PSTR("Max:")); // Max Voltage
write_ndigit_number_s_10th(20, 9, max_voltage, 3, 0);
 
get_eeprom(1);
 
//write_ascii_string_pgm(23, 2, vm[COSD_FLAGS & COSD_FLAG_NTSC]);
if (COSD_FLAGS_CONFIG & COSD_FLAG_NTSC) {
write_ascii_string_pgm(23, 2, VM_NTSC);
write_ascii_string_pgm(23, 1, VM_NTSC);
} else {
write_ascii_string_pgm(23, 2, VM_PAL);
write_ascii_string_pgm(23, 1, VM_PAL);
}
 
// request version from board
rxd_buffer_locked = 0;
usart1_EnableTXD();
#if FCONLY
//usart1_request_mk_data(0, 'v', 0);
write_ascii_string_pgm(2, 11, PSTR("FC VERSION: ........"));
usart1_puts_pgm(PSTR(REQUEST_FC_VERSION));
usart1_request_blocking('V', PSTR(REQUEST_FC_VERSION));
#else
usart1_request_nc_uart();
//usart1_request_mk_data(1, 'v', 0);
usart1_puts_pgm(PSTR(REQUEST_NC_VERSION));
write_ascii_string_pgm(2, 11, PSTR("NC VERSION: ........"));
usart1_request_blocking('V', PSTR(REQUEST_NC_VERSION));
#endif
usart1_DisableTXD();
// wait for response
while (rxd_buffer_locked == 0) {
asm("nop");
}
Decode64();
str_VersionInfo VersionInfo;
VersionInfo = *((str_VersionInfo*)pRxData);
 
140,6 → 164,8
// end version request
 
 
 
 
#if FCONLY
COSD_DISPLAYMODE %= (sizeof (fcdisplaymodes) / sizeof (displaymode_t));
mode = fcdisplaymodes;
156,7 → 182,7
//usart1_request_mk_data(1, 'o', 100);
#endif
 
_delay_ms(3000);
_delay_ms(5000);
clear();
// update flags to paint display again because of clear
COSD_FLAGS_RUNTIME &= ~COSD_ICONS_WRITTEN;