Prevent extra settings.load on boot (#14499)
This commit is contained in:
parent
dc02d0720d
commit
8873c583d3
3 changed files with 13 additions and 9 deletions
|
@ -941,7 +941,7 @@ void setup() {
|
||||||
|
|
||||||
// Load data from EEPROM if available (or use defaults)
|
// Load data from EEPROM if available (or use defaults)
|
||||||
// This also updates variables in the planner, elsewhere
|
// This also updates variables in the planner, elsewhere
|
||||||
(void)settings.load();
|
settings.first_load();
|
||||||
|
|
||||||
#if HAS_M206_COMMAND
|
#if HAS_M206_COMMAND
|
||||||
// Initialize current position based on home_offset
|
// Initialize current position based on home_offset
|
||||||
|
|
|
@ -29,8 +29,6 @@
|
||||||
|
|
||||||
class MarlinSettings {
|
class MarlinSettings {
|
||||||
public:
|
public:
|
||||||
MarlinSettings() { }
|
|
||||||
|
|
||||||
static uint16_t datasize();
|
static uint16_t datasize();
|
||||||
|
|
||||||
static void reset();
|
static void reset();
|
||||||
|
@ -55,9 +53,15 @@ class MarlinSettings {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ENABLED(EEPROM_SETTINGS)
|
#if ENABLED(EEPROM_SETTINGS)
|
||||||
|
|
||||||
static bool load(); // Return 'true' if data was loaded ok
|
static bool load(); // Return 'true' if data was loaded ok
|
||||||
static bool validate(); // Return 'true' if EEPROM data is 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
|
#if ENABLED(AUTO_BED_LEVELING_UBL) // Eventually make these available if any leveling system
|
||||||
// That can store is enabled
|
// That can store is enabled
|
||||||
static uint16_t meshes_start_index();
|
static uint16_t meshes_start_index();
|
||||||
|
@ -73,6 +77,8 @@ class MarlinSettings {
|
||||||
#else
|
#else
|
||||||
FORCE_INLINE
|
FORCE_INLINE
|
||||||
static bool load() { reset(); report(); return true; }
|
static bool load() { reset(); report(); return true; }
|
||||||
|
FORCE_INLINE
|
||||||
|
static void first_load() { (void)load(); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if DISABLED(DISABLE_M503)
|
#if DISABLED(DISABLE_M503)
|
||||||
|
|
|
@ -353,8 +353,8 @@ void CardReader::initsd() {
|
||||||
else {
|
else {
|
||||||
flag.detected = true;
|
flag.detected = true;
|
||||||
SERIAL_ECHO_MSG(MSG_SD_CARD_OK);
|
SERIAL_ECHO_MSG(MSG_SD_CARD_OK);
|
||||||
#if ENABLED(EEPROM_SETTINGS) && DISABLED(FLASH_EEPROM_EMULATION)
|
#if ENABLED(EEPROM_SETTINGS) && NONE(FLASH_EEPROM_EMULATION, SPI_EEPROM, I2C_EEPROM)
|
||||||
(void)settings.load();
|
settings.first_load();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
setroot();
|
setroot();
|
||||||
|
@ -560,10 +560,8 @@ void CardReader::checkautostart() {
|
||||||
if (autostart_index < 0 || flag.sdprinting) return;
|
if (autostart_index < 0 || flag.sdprinting) return;
|
||||||
|
|
||||||
if (!isDetected()) initsd();
|
if (!isDetected()) initsd();
|
||||||
|
#if ENABLED(EEPROM_SETTINGS) && NONE(FLASH_EEPROM_EMULATION, SPI_EEPROM, I2C_EEPROM)
|
||||||
#if ENABLED(EEPROM_SETTINGS) && DISABLED(FLASH_EEPROM_EMULATION)
|
else settings.first_load();
|
||||||
SERIAL_ECHOLNPGM("Loading settings from SD");
|
|
||||||
(void)settings.load();
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (isDetected()
|
if (isDetected()
|
||||||
|
|
Reference in a new issue