/*
|
|
|
|
EEPROM MODULE
|
|
|
|
*/
|
|
|
|
#include <EEPROM_Rotate.h>
|
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
bool eepromBackup() {
|
|
DEBUG_MSG_P(PSTR("[EEPROM] Backing up data to last sector\n"));
|
|
return EEPROMr.backup();
|
|
}
|
|
|
|
String eepromSectors() {
|
|
String response;
|
|
for (uint32_t i = 0; i < EEPROMr.pool(); i++) {
|
|
if (i > 0) response = response + String(", ");
|
|
response = response + String(EEPROMr.base() - i);
|
|
}
|
|
return response;
|
|
}
|
|
|
|
#if TERMINAL_SUPPORT
|
|
|
|
void _eepromInitCommands() {
|
|
|
|
settingsRegisterCommand(F("EEPROM.DUMP"), [](Embedis* e) {
|
|
EEPROMr.dump(settingsSerial());
|
|
DEBUG_MSG_P(PSTR("\n+OK\n"));
|
|
});
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
void eepromSetup() {
|
|
|
|
#ifdef EEPROM_ROTATE_SECTORS
|
|
EEPROMr.pool(EEPROM_ROTATE_SECTORS);
|
|
#else
|
|
uint8_t sectors = 0;
|
|
if (EEPROMr.last() > 1000) { // 4Mb boards
|
|
sectors = 4;
|
|
} else if (EEPROMr.last() > 250) { // 1Mb boards
|
|
sectors = 2;
|
|
} else {
|
|
sectors = 1;
|
|
}
|
|
EEPROMr.pool(sectors);
|
|
#endif
|
|
|
|
EEPROMr.offset(EEPROM_ROTATE_DATA);
|
|
EEPROMr.begin(EEPROM_SIZE);
|
|
|
|
#if TERMINAL_SUPPORT
|
|
_eepromInitCommands();
|
|
#endif
|
|
|
|
}
|