Prevent extra settings.load on boot (#14499)

This commit is contained in:
Tanguy Pruvot 2019-07-06 05:25:59 +02:00 committed by Scott Lahteine
parent dc02d0720d
commit 8873c583d3
3 changed files with 13 additions and 9 deletions

View File

@ -941,7 +941,7 @@ void setup() {
// Load data from EEPROM if available (or use defaults)
// This also updates variables in the planner, elsewhere
(void)settings.load();
settings.first_load();
#if HAS_M206_COMMAND
// Initialize current position based on home_offset

View File

@ -29,8 +29,6 @@
class MarlinSettings {
public:
MarlinSettings() { }
static uint16_t datasize();
static void reset();
@ -55,9 +53,15 @@ class MarlinSettings {
#endif
#if ENABLED(EEPROM_SETTINGS)
static bool load(); // Return 'true' if data was loaded ok
static bool validate(); // Return 'true' if EEPROM data is ok
static inline void first_load() {
static bool loaded = false;
if (!loaded && load()) loaded = true;
}
#if ENABLED(AUTO_BED_LEVELING_UBL) // Eventually make these available if any leveling system
// That can store is enabled
static uint16_t meshes_start_index();
@ -73,6 +77,8 @@ class MarlinSettings {
#else
FORCE_INLINE
static bool load() { reset(); report(); return true; }
FORCE_INLINE
static void first_load() { (void)load(); }
#endif
#if DISABLED(DISABLE_M503)

View File

@ -353,8 +353,8 @@ void CardReader::initsd() {
else {
flag.detected = true;
SERIAL_ECHO_MSG(MSG_SD_CARD_OK);
#if ENABLED(EEPROM_SETTINGS) && DISABLED(FLASH_EEPROM_EMULATION)
(void)settings.load();
#if ENABLED(EEPROM_SETTINGS) && NONE(FLASH_EEPROM_EMULATION, SPI_EEPROM, I2C_EEPROM)
settings.first_load();
#endif
}
setroot();
@ -560,10 +560,8 @@ void CardReader::checkautostart() {
if (autostart_index < 0 || flag.sdprinting) return;
if (!isDetected()) initsd();
#if ENABLED(EEPROM_SETTINGS) && DISABLED(FLASH_EEPROM_EMULATION)
SERIAL_ECHOLNPGM("Loading settings from SD");
(void)settings.load();
#if ENABLED(EEPROM_SETTINGS) && NONE(FLASH_EEPROM_EMULATION, SPI_EEPROM, I2C_EEPROM)
else settings.first_load();
#endif
if (isDetected()