From 4776415c14dcfc82704f4c09cc3ce9c8ff398cdb Mon Sep 17 00:00:00 2001 From: bsongis Date: Sat, 28 Jan 2012 15:32:08 +0000 Subject: [PATCH] Problem with invalid EEPROMS --- src/pers.cpp | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/src/pers.cpp b/src/pers.cpp index adb4c5ff5..3b4e0af05 100644 --- a/src/pers.cpp +++ b/src/pers.cpp @@ -47,20 +47,16 @@ void generalDefault() bool eeLoadGeneral() { theFile.openRlc(FILE_GENERAL); - uint8_t sz = 0; - - if (theFile.readRlc((uint8_t*)&g_eeGeneral, 1) == 1) { + if (theFile.readRlc((uint8_t*)&g_eeGeneral, 1) == 1 && g_eeGeneral.myVers == EEPROM_VER) { theFile.openRlc(FILE_GENERAL); // TODO include this openRlc inside readRlc - if (g_eeGeneral.myVers == EEPROM_VER) { - sz = theFile.readRlc((uint8_t*)&g_eeGeneral, sizeof(g_eeGeneral)); + if (theFile.readRlc((uint8_t*)&g_eeGeneral, sizeof(g_eeGeneral)) <= sizeof(EEGeneral)) { + uint16_t sum=0; + for (int i=0; i<12;i++) sum += g_eeGeneral.calibMid[i]; + if (g_eeGeneral.chkSum == sum) { + return true; + } } } - - if (sz <= sizeof(EEGeneral)) { - uint16_t sum=0; - for(int i=0; i<12;i++) sum+=g_eeGeneral.calibMid[i]; - return g_eeGeneral.chkSum == sum; - } return false; } @@ -173,8 +169,7 @@ void eeReadAll() { if(!EeFsOpen() || EeFsck() < 0 || - !eeLoadGeneral() - ) + !eeLoadGeneral()) { alert(STR_BADEEPROMDATA, true); message(STR_EEPROMFORMATTING);