Save RAM: Allocate eeFs only for MAX_MODELS (#462)
* allocate eeFs only for MAX_MODELS, * keep old EEProm alignment
This commit is contained in:
@@ -164,7 +164,7 @@ void storageFormat()
|
||||
|
||||
memclear(&eeFs, sizeof(eeFs));
|
||||
eeFs.version = EEFS_VERS;
|
||||
eeFs.mySize = sizeof(eeFs);
|
||||
eeFs.mySize = sizeof(EeFsOld);
|
||||
eeFs.freeList = 0;
|
||||
eeFs.bs = BS;
|
||||
for (blkid_t i=FIRSTBLK; i<BLOCKS-1; i++) {
|
||||
@@ -186,12 +186,12 @@ bool eepromOpen()
|
||||
if (eeFs.version != EEFS_VERS) {
|
||||
TRACE("bad eeFs.version (%d instead of %d)", eeFs.version, EEFS_VERS);
|
||||
}
|
||||
if (eeFs.mySize != sizeof(eeFs)) {
|
||||
TRACE("bad eeFs.mySize (%d instead of %d)", (int)eeFs.mySize, (int)sizeof(eeFs));
|
||||
if (eeFs.mySize != sizeof(EeFsOld)) {
|
||||
TRACE("bad eeFs.mySize (%d instead of %d)", (int)eeFs.mySize, (int)sizeof(EeFsOld));
|
||||
}
|
||||
#endif
|
||||
|
||||
if (eeFs.version != EEFS_VERS || eeFs.mySize != sizeof(eeFs)) {
|
||||
if (eeFs.version != EEFS_VERS || eeFs.mySize != sizeof(EeFsOld)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
#define blkid_t uint16_t
|
||||
#define EEFS_VERS 5
|
||||
#define MAXFILES 62
|
||||
#define MAXFILES 16 + 2 // 62 -> 18, MAX_MODELS + 1 (FILE_GENERAL) + 1 (FILE_TMP)
|
||||
#define BS 64
|
||||
|
||||
PACK(struct DirEnt {
|
||||
@@ -45,6 +45,15 @@ PACK(struct EeFs {
|
||||
DirEnt files[MAXFILES];
|
||||
});
|
||||
|
||||
PACK(struct EeFsOld {
|
||||
uint8_t version;
|
||||
blkid_t mySize;
|
||||
blkid_t freeList;
|
||||
uint8_t bs;
|
||||
EEFS_EXTRA_FIELDS
|
||||
DirEnt files[62];
|
||||
});
|
||||
|
||||
extern EeFs eeFs;
|
||||
|
||||
#define FILE_TYP_GENERAL 1
|
||||
@@ -56,7 +65,8 @@ extern EeFs eeFs;
|
||||
#define FILE_MODEL(n) (1+(n))
|
||||
#define FILE_TMP (1+MAX_MODELS)
|
||||
|
||||
#define RESV sizeof(EeFs) //reserv for eeprom header with directory (eeFs)
|
||||
// Align to previous size of EeFs to keep eeprom data intact
|
||||
#define RESV sizeof(EeFsOld) //reserv for eeprom header with directory (eeFs)
|
||||
|
||||
#define FIRSTBLK 1
|
||||
#define BLOCKS (1+(EEPROM_SIZE-RESV)/BS)
|
||||
@@ -201,7 +211,7 @@ inline bool isEepromStart(const void * buffer)
|
||||
// OpenTX EEPROM
|
||||
{
|
||||
const EeFs * eeprom = (const EeFs *)buffer;
|
||||
if (eeprom->version==EEFS_VERS && eeprom->mySize==sizeof(eeFs) && eeprom->bs==BS)
|
||||
if (eeprom->version==EEFS_VERS && eeprom->mySize==sizeof(EeFsOld) && eeprom->bs==BS)
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user