From 827e1e2b43fa271e19637579a4fab4c8a118018b Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Wed, 11 Mar 2015 19:14:12 +0400 Subject: [PATCH] Factory reset function (manual EEPROM format) --- radio/src/eeprom_common.h | 1 + radio/src/eeprom_rlc.cpp | 29 ++++++++++--------- .../src/gui/Taranis/menu_general_version.cpp | 13 ++++++++- radio/src/translations.cpp | 2 ++ radio/src/translations.h | 2 ++ radio/src/translations/cz.h.txt | 2 ++ radio/src/translations/de.h.txt | 2 ++ radio/src/translations/en.h.txt | 2 ++ radio/src/translations/es.h.txt | 2 ++ radio/src/translations/fi.h.txt | 4 ++- radio/src/translations/fr.h.txt | 2 ++ radio/src/translations/it.h.txt | 2 ++ radio/src/translations/pl.h.txt | 2 ++ radio/src/translations/pt.h.txt | 2 ++ radio/src/translations/se.h.txt | 2 ++ 15 files changed, 54 insertions(+), 15 deletions(-) diff --git a/radio/src/eeprom_common.h b/radio/src/eeprom_common.h index 9f0b36433..ffb1c74e9 100644 --- a/radio/src/eeprom_common.h +++ b/radio/src/eeprom_common.h @@ -58,6 +58,7 @@ bool eeModelExists(uint8_t id); void eeLoadModelName(uint8_t id, char *name); void eeLoadModel(uint8_t id); bool eeConvert(); +void eeErase(bool warn); void ConvertModel(int id, int version); uint8_t eeFindEmptyModel(uint8_t id, bool down); void selectModel(uint8_t sub); diff --git a/radio/src/eeprom_rlc.cpp b/radio/src/eeprom_rlc.cpp index 2887d1fc4..af85d5810 100644 --- a/radio/src/eeprom_rlc.cpp +++ b/radio/src/eeprom_rlc.cpp @@ -1016,6 +1016,21 @@ void eeLoadModel(uint8_t id) } } +void eeErase(bool warn) +{ + generalDefault(); + + if (warn) { + ALERT(STR_EEPROMWARN, STR_BADEEPROMDATA, AU_BAD_EEPROM); + } + + MESSAGE(STR_EEPROMWARN, STR_EEPROMFORMATTING, NULL, AU_EEPROM_FORMATTING); + EeFsFormat(); + theFile.writeRlc(FILE_GENERAL, FILE_TYP_GENERAL, (uint8_t*)&g_eeGeneral, sizeof(EEGeneral), true); + modelDefault(0); + theFile.writeRlc(FILE_MODEL(0), FILE_TYP_MODEL, (uint8_t*)&g_model, sizeof(g_model), true); +} + // TODO merge this code with eeprom_arm.cpp one void eeReadAll() { @@ -1023,19 +1038,7 @@ void eeReadAll() EeFsck() < 0 || !eeLoadGeneral()) { - generalDefault(); - - ALERT(STR_EEPROMWARN, STR_BADEEPROMDATA, AU_BAD_EEPROM); - - MESSAGE(STR_EEPROMWARN, STR_EEPROMFORMATTING, NULL, AU_EEPROM_FORMATTING); - - EeFsFormat(); - - theFile.writeRlc(FILE_GENERAL, FILE_TYP_GENERAL, (uint8_t*)&g_eeGeneral, sizeof(EEGeneral), true); - - modelDefault(0); - - theFile.writeRlc(FILE_MODEL(0), FILE_TYP_MODEL, (uint8_t*)&g_model, sizeof(g_model), true); + eeErase(true); } else { eeLoadModelHeaders(); diff --git a/radio/src/gui/Taranis/menu_general_version.cpp b/radio/src/gui/Taranis/menu_general_version.cpp index 2248b40d7..fe2bfca2d 100755 --- a/radio/src/gui/Taranis/menu_general_version.cpp +++ b/radio/src/gui/Taranis/menu_general_version.cpp @@ -88,12 +88,23 @@ void backupEeprom() void menuGeneralVersion(uint8_t event) { + if (s_warning_result) { + s_warning_result = 0; + displayPopup(STR_EEPROMFORMATTING); + eeErase(false); + NVIC_SystemReset(); + } + SIMPLE_MENU(STR_MENUVERSION, menuTabGeneral, e_Vers, 1); lcd_putsLeft(MENU_HEADER_HEIGHT+FH, vers_stamp); - lcd_putsLeft(MENU_HEADER_HEIGHT+6*FH, STR_EEBACKUP); + lcd_putsLeft(MENU_HEADER_HEIGHT+5*FH, STR_EEBACKUP); + lcd_putsLeft(MENU_HEADER_HEIGHT+6*FH, STR_FACTORYRESET); if (event == EVT_KEY_LONG(KEY_ENTER)) { backupEeprom(); } + else if (event == EVT_KEY_LONG(KEY_MENU)) { + POPUP_CONFIRMATION(STR_CONFIRMRESET); + } } diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 48ce9ee21..2e1b445f0 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -499,6 +499,8 @@ const pm_char STR_FLASH_EXTERNAL_DEVICE[] PROGMEM = TR_FLASH_EXTERNAL_DEVICE; const pm_char STR_WRITING[] PROGMEM = TR_WRITING; const pm_char STR_CONFIRM_FORMAT[] PROGMEM = TR_CONFIRM_FORMAT; const pm_char STR_EEBACKUP[] PROGMEM = TR_EEBACKUP; +const pm_char STR_FACTORYRESET[] PROGMEM = TR_FACTORYRESET; +const pm_char STR_CONFIRMRESET[] PROGMEM = TR_CONFIRMRESET; const pm_char STR_TOO_MANY_LUA_SCRIPTS[] PROGMEM = TR_TO_MANY_LUA_SCRIPTS; const pm_char STR_BLCOLOR[] PROGMEM = TR_BLCOLOR; diff --git a/radio/src/translations.h b/radio/src/translations.h index 8f9cdbcda..0c180c29c 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -669,6 +669,8 @@ extern const pm_char STR_FLASH_INTERNAL_MODULE[]; extern const pm_char STR_WRITING[]; extern const pm_char STR_CONFIRM_FORMAT[]; extern const pm_char STR_EEBACKUP[]; +extern const pm_char STR_FACTORYRESET[]; +extern const pm_char STR_CONFIRMRESET[]; extern const pm_char STR_TOO_MANY_LUA_SCRIPTS[]; extern const pm_char STR_BLCOLOR[]; diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 493015f33..01eb0cb1b 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -926,6 +926,8 @@ #define TR_INPUTS "Vstupy" #define TR_OUTPUTS "Výstupy" #define TR_EEBACKUP "\010[dlouze ENTER] zálohuje EEPROM" +#define TR_FACTORYRESET "\012[MENU Long]: Factory reset" +#define TR_CONFIRMRESET "Erase ALL models and settings?" #define TR_TO_MANY_LUA_SCRIPTS "Příliš mnoho skriptů!" #if defined(MAVLINK) diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index b47d7ab97..746ace09b 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -925,6 +925,8 @@ #define TR_INPUTS "Inputs" #define TR_OUTPUTS "Outputs" #define TR_EEBACKUP "\002[ENTER Long] Backup EEPROM->SD-Karte" +#define TR_FACTORYRESET "\012[MENU Long]: Factory reset" +#define TR_CONFIRMRESET "Erase ALL models and settings?" #define TR_TO_MANY_LUA_SCRIPTS "Zu viele Lua-Scripten!!" #if defined(MAVLINK) diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 4d403c78d..d0ab60f95 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -925,6 +925,8 @@ #define TR_INPUTS "Inputs" #define TR_OUTPUTS "Outputs" #define TR_EEBACKUP "\004[ENTER Long] to backup the EEPROM" +#define TR_FACTORYRESET "\012[MENU Long]: Factory reset" +#define TR_CONFIRMRESET "Erase ALL models and settings?" #define TR_TO_MANY_LUA_SCRIPTS "Too many Lua scripts!" #if defined(MAVLINK) diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index de3d0fb45..9d4b0d24c 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -861,6 +861,8 @@ #define TR_INPUTS "Inputs" #define TR_OUTPUTS "Outputs" #define TR_EEBACKUP "\004[ENTER Long] to backup the EEPROM" +#define TR_FACTORYRESET "\012[MENU Long]: Factory reset" +#define TR_CONFIRMRESET "Erase ALL models and settings?" #define TR_TO_MANY_LUA_SCRIPTS "Too many Lua scripts!" #if defined(MAVLINK) diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 3cc4f2746..939ba26fa 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -1,4 +1,4 @@ -/* +/* * Authors (alphabetical order) * - Bertrand Songis * - Bernet Andre @@ -861,6 +861,8 @@ #define TR_INPUTS "Inputs" #define TR_OUTPUTS "Outputs" #define TR_EEBACKUP "\004[ENTER Long] to backup the EEPROM" +#define TR_FACTORYRESET "\012[MENU Long]: Factory reset" +#define TR_CONFIRMRESET "Erase ALL models and settings?" #define TR_TO_MANY_LUA_SCRIPTS "Too many Lua scripts!" #if defined(MAVLINK) diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 4ad9984f3..48494beac 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -921,6 +921,8 @@ #define TR_INPUTS "Entrées" #define TR_OUTPUTS "Sorties" #define TR_EEBACKUP "\004[ENTER Long]: Sauvegarder l'EEPROM" +#define TR_FACTORYRESET "\016[MENU Long]: RAZ d'usine" +#define TR_CONFIRMRESET "Effacer TOUS modèles/réglages?" #define TR_TO_MANY_LUA_SCRIPTS "Too many Lua scripts!" #if defined(MAVLINK) diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index f310e17ee..25349d34d 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -861,6 +861,8 @@ #define TR_INPUTS "Ingresso" #define TR_OUTPUTS "Uscita" #define TR_EEBACKUP "\004[ENTER Lungo] per copiare la EEPROM" +#define TR_FACTORYRESET "\012[MENU Long]: Factory reset" +#define TR_CONFIRMRESET "Erase ALL models and settings?" #define TR_TO_MANY_LUA_SCRIPTS "Troppi Scripts Lua!" #if defined(MAVLINK) diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index a45e0c107..b5ddf9060 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -859,6 +859,8 @@ #define TR_INPUTS "Wejścia" #define TR_OUTPUTS "Wyjścia" #define TR_EEBACKUP "\004[ENTER Długo] Backupowanie EEPROMu" +#define TR_FACTORYRESET "\012[MENU Long]: Factory reset" +#define TR_CONFIRMRESET "Erase ALL models and settings?" #define TR_TO_MANY_LUA_SCRIPTS "Za dużo skryptów Lua!" #if defined(MAVLINK) diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 0e10202e9..b14b60d85 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -861,6 +861,8 @@ #define TR_INPUTS "Inputs" #define TR_OUTPUTS "Outputs" #define TR_EEBACKUP "\004[ENTER Long] to backup the EEPROM" +#define TR_FACTORYRESET "\012[MENU Long]: Factory reset" +#define TR_CONFIRMRESET "Erase ALL models and settings?" #define TR_TO_MANY_LUA_SCRIPTS "Too many Lua scripts!" #if defined(MAVLINK) diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index c235ae993..1a550134e 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -861,6 +861,8 @@ #define TR_INPUTS "Input" #define TR_OUTPUTS "Outputs" #define TR_EEBACKUP "\004[ENTER Lång] säkerhetskopiera EEPROM" +#define TR_FACTORYRESET "\012[MENU Long]: Factory reset" +#define TR_CONFIRMRESET "Erase ALL models and settings?" #define TR_TO_MANY_LUA_SCRIPTS "För många Lua-scripts!" #if defined(MAVLINK)