Hopefully the last async eeprom write bug solved (missing wdt_reset)... Clear Mixes not working

This commit is contained in:
bsongis
2011-09-27 10:06:00 +00:00
parent 807e76f112
commit dc0b387b6e
11 changed files with 70 additions and 48 deletions
+23 -10
View File
@@ -96,6 +96,11 @@ void menuProcModelSelect(uint8_t event) // TODO lignes sur tout du long
int8_t subOld = m_posVert;
if (!check_submenu_simple(event, MAX_MODELS-1)) return;
#ifdef EEPROM_ASYNC_WRITE
// flush eeprom write so that it's possible to load model names
eeFlush();
#endif
lcd_puts_P( 9*FW, 0, PSTR("free"));
lcd_outdezAtt( 17*FW, 0, EeFsGetFree(),0);
@@ -104,8 +109,6 @@ void menuProcModelSelect(uint8_t event) // TODO lignes sur tout du long
int8_t sub = m_posVert;
static uint8_t sel_editMode;
eeCheck(true); // force writing of current model data before this is changed
switch(event)
{
//case EVT_KEY_FIRST(KEY_MENU):
@@ -114,6 +117,7 @@ void menuProcModelSelect(uint8_t event) // TODO lignes sur tout du long
sel_editMode = false;
beepKey();
killEvents(event);
eeCheck(true); // force writing of current model data before this is changed
eeLoadModel(g_eeGeneral.currModel = m_posVert);
STORE_GENERALVARS;
break;
@@ -125,6 +129,7 @@ void menuProcModelSelect(uint8_t event) // TODO lignes sur tout du long
{
killEvents(event);
g_eeGeneral.currModel = m_posVert;
eeCheck(true); // force writing of current model data before this is changed
eeLoadModel(g_eeGeneral.currModel);
STORE_GENERALVARS;
beepWarn1();
@@ -140,6 +145,7 @@ void menuProcModelSelect(uint8_t event) // TODO lignes sur tout du long
case EVT_KEY_LONG(KEY_MENU):
if(sel_editMode){
// message(PSTR("Duplicating model"));
eeCheck(true); // force writing of current model data before this is changed
if (eeDuplicateModel(sub)) {
beepKey();
sel_editMode = false;
@@ -152,10 +158,11 @@ void menuProcModelSelect(uint8_t event) // TODO lignes sur tout du long
case EVT_ENTRY:
sel_editMode = false;
m_posVert = g_eeGeneral.currModel;
m_posVert = sub = g_eeGeneral.currModel;
break;
}
if(sel_editMode && subOld!=sub){
eeCheck(true); // force writing of current model data before this is changed
#ifdef EEPROM_ASYNC_WRITE
s_sync_write = true;
#endif
@@ -269,9 +276,14 @@ void menuProcModel(uint8_t _event)
uint8_t event = (s_warning ? 0 : _event);
if (s_confirmation) {
EFile::rm(FILE_MODEL(g_eeGeneral.currModel)); // delete file
uint8_t i = g_eeGeneral.currModel;
#ifdef EEPROM_ASYNC_WRITE
// flush eeprom write
eeFlush();
#endif
EFile::rm(FILE_MODEL(i)); // delete file
uint8_t i = g_eeGeneral.currModel; // loop to find next available model
while (!EFile::exists(FILE_MODEL(i))) {
i--;
if (i>MAX_MODELS) i=MAX_MODELS-1;
@@ -285,6 +297,7 @@ void menuProcModel(uint8_t _event)
eeLoadModel(i); // load default values
s_confirmation = 0;
chainMenu(menuProcModelSelect);
return;
}
MENU("SETUP", menuTabModel, e_Model, 11, {0,sizeof(g_model.name)-1,3,3,0,0,0,1,6,3/*, 0*/});
@@ -1644,7 +1657,7 @@ void menuProcTelemetry(uint8_t event)
case EVT_KEY_BREAK(KEY_UP):
case EVT_KEY_BREAK(KEY_LEFT):
case EVT_KEY_BREAK(KEY_RIGHT):
if(s_editMode)
if(s_editMode) // only fr-sky alarm fields have an edit mode
FRSKY_setModelAlarms(); // update Fr-Sky module when edit mode exited
}
@@ -1732,7 +1745,7 @@ void menuProcTelemetry(uint8_t event)
#ifdef TEMPLATES
void menuProcTemplates(uint8_t event)
{
SIMPLE_MENU("TEMPLATES", menuTabModel, e_Templates, NUM_TEMPLATES+2);
SIMPLE_MENU("TEMPLATES", menuTabModel, e_Templates, 1+NUM_TEMPLATES+1);
uint8_t y = 0;
uint8_t k = 0;
@@ -1744,10 +1757,10 @@ void menuProcTemplates(uint8_t event)
killEvents(event);
//apply mixes or delete
s_noHi = NO_HI_LEN;
if(sub==NUM_TEMPLATES+1)
clearMixes();
else if((sub>=0) && (sub<(int8_t)NUM_TEMPLATES))
if (sub>=0 && sub<(int8_t)NUM_TEMPLATES)
applyTemplate(sub);
if (sub==NUM_TEMPLATES)
clearMixes();
beepWarn1();
break;
}