40,6 → 40,7 |
uint16_t EEMEM ee_cal_ampere = 512; |
uint8_t EEMEM ee_sensor = 50; |
uint8_t EEMEM ee_COSD_FLAGS; |
uint8_t EEMEM ee_COSD_DISPLAYMODE = 0; |
|
// store init strings in progmem |
const char init_0[] PROGMEM = "C-OSD Initialisation"; |
68,12 → 69,14 |
const char menu_item5[] PROGMEM = "Warnings"; // TODO: do it! |
const char menu_item6[] PROGMEM = "Reset uptime"; |
const char menu_item7[] PROGMEM = "Request OSD-data"; |
const char menu_item8[] PROGMEM = "Disable Debug-data"; |
const char menu_item8[] PROGMEM = "Display Mode"; |
const char menu_item9[] PROGMEM = "Save config"; |
const char menu_item10[] PROGMEM = "EXIT"; |
const char* menu[] = {menu_item0, menu_item1, menu_item2, menu_item3, menu_item4, |
menu_item5, menu_item6, menu_item7, menu_item8, menu_item9, menu_item10}; |
|
const displaymode_t * mode; |
|
/** |
* read data saved in eeprom, print out message if <verbose> is set |
*/ |
81,6 → 84,8 |
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 |
COSD_FLAGS = eeprom_read_byte(&ee_COSD_FLAGS); |
COSD_DISPLAYMODE = eeprom_read_byte(&ee_COSD_DISPLAYMODE); |
//if (verbose) write_ndigit_number_u(23, 11, COSD_DISPLAYMODE, 10, 0); |
} else { |
if (verbose) write_ascii_string_pgm(2, 9, ee_msg[1]); // No data found |
} |
93,6 → 98,7 |
eeprom_write_byte(&ee_checkbyte1, CHECKBYTE1); |
eeprom_write_byte(&ee_checkbyte2, CHECKBYTE2); |
eeprom_write_byte(&ee_COSD_FLAGS, COSD_FLAGS); |
eeprom_write_byte(&ee_COSD_DISPLAYMODE, COSD_DISPLAYMODE); |
} |
|
/** |
142,6 → 148,19 |
write_ascii_string_pgm(23, 2, VM_PAL); |
} |
|
|
#if FCONLY |
COSD_DISPLAYMODE %= (sizeof(fcdisplaymodes) / sizeof(displaymode_t)); |
mode = fcdisplaymodes; |
mode += COSD_DISPLAYMODE; |
osd_fcmode = (int(*)(void)) pgm_read_word(&mode->dfun); |
#else |
COSD_DISPLAYMODE %= (sizeof(ncdisplaymodes) / sizeof(displaymode_t)); |
mode = ncdisplaymodes; |
mode += COSD_DISPLAYMODE; |
osd_ncmode = (int(*)(void)) pgm_read_word(&mode->dfun); |
#endif |
|
_delay_ms(200); |
clear(); |
// update flags to paint display again because of clear |
192,6 → 211,9 |
} else { |
write_ascii_string_pgm(23, 7, OFF); |
} |
//write_ndigit_number_u(23, 10, COSD_DISPLAYMODE, 10, 0); |
write_ascii_string_pgm(18, 10, (const char *) (pgm_read_word(&(mode->desc)))); |
|
} |
|
/** |
295,11 → 317,19 |
#endif |
config_menu_doclick(chosen, menu); |
break; |
case 8: // 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); |
case 8: // change mode |
#if FCONLY |
COSD_DISPLAYMODE = (COSD_DISPLAYMODE + 1) % (sizeof(fcdisplaymodes) / sizeof(displaymode_t)); |
mode = fcdisplaymodes; |
mode += COSD_DISPLAYMODE; |
osd_fcmode = (int(*)(void)) pgm_read_word(&mode->dfun); |
#else |
COSD_DISPLAYMODE = (COSD_DISPLAYMODE + 1) % (sizeof(ncdisplaymodes) / sizeof(displaymode_t)); |
mode = ncdisplaymodes; |
mode += COSD_DISPLAYMODE; |
osd_ncmode = (int(*)(void)) pgm_read_word(&mode->dfun); |
#endif |
config_menu_drawings(chosen); |
break; |
case 9: // save |
save_eeprom(); |