From 108d0df56532e4eb30467d36b0fb2aa5bf4f50be Mon Sep 17 00:00:00 2001 From: Tanguy Pruvot Date: Mon, 1 Jul 2019 16:10:17 +0200 Subject: [PATCH] Sort out settings.load with SD EEPROM emulation (#14458) --- .../HAL/HAL_ESP32/persistent_store_spiffs.cpp | 4 ++-- .../HAL/HAL_STM32F1/persistent_store_sdcard.cpp | 2 +- Marlin/src/Marlin.cpp | 17 ++++++++++++++--- Marlin/src/inc/Conditionals_post.h | 4 ++++ Marlin/src/lcd/ultralcd.cpp | 11 ++++++++++- Marlin/src/sd/cardreader.cpp | 8 -------- 6 files changed, 31 insertions(+), 15 deletions(-) diff --git a/Marlin/src/HAL/HAL_ESP32/persistent_store_spiffs.cpp b/Marlin/src/HAL/HAL_ESP32/persistent_store_spiffs.cpp index 5227da3568..0ba5fff650 100644 --- a/Marlin/src/HAL/HAL_ESP32/persistent_store_spiffs.cpp +++ b/Marlin/src/HAL/HAL_ESP32/persistent_store_spiffs.cpp @@ -24,7 +24,7 @@ #include "../../inc/MarlinConfig.h" -#if ENABLED(EEPROM_SETTINGS) && DISABLED(FLASH_EEPROM_EMULATION) +#if ENABLED(SD_EEPROM_EMULATION) #include "../shared/persistent_store_api.h" @@ -102,5 +102,5 @@ bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t size_t PersistentStore::capacity() { return HAL_ESP32_EEPROM_SIZE; } -#endif // EEPROM_SETTINGS +#endif // SD_EEPROM_EMULATION #endif // ARDUINO_ARCH_ESP32 diff --git a/Marlin/src/HAL/HAL_STM32F1/persistent_store_sdcard.cpp b/Marlin/src/HAL/HAL_STM32F1/persistent_store_sdcard.cpp index 3244093577..08bc201502 100644 --- a/Marlin/src/HAL/HAL_STM32F1/persistent_store_sdcard.cpp +++ b/Marlin/src/HAL/HAL_STM32F1/persistent_store_sdcard.cpp @@ -28,7 +28,7 @@ #include "../../inc/MarlinConfig.h" -#if ENABLED(EEPROM_SETTINGS) && NONE(FLASH_EEPROM_EMULATION, SPI_EEPROM, I2C_EEPROM) +#if ENABLED(SD_EEPROM_EMULATION) #include "../shared/persistent_store_api.h" diff --git a/Marlin/src/Marlin.cpp b/Marlin/src/Marlin.cpp index e73066fabf..bbc0499425 100644 --- a/Marlin/src/Marlin.cpp +++ b/Marlin/src/Marlin.cpp @@ -941,7 +941,9 @@ void setup() { // Load data from EEPROM if available (or use defaults) // This also updates variables in the planner, elsewhere - (void)settings.load(); + #if DISABLED(SD_EEPROM_EMULATION) + (void)settings.load(); + #endif #if HAS_M206_COMMAND // Initialize current position based on home_offset @@ -1094,8 +1096,17 @@ void setup() { init_closedloop(); #endif - #if ENABLED(INIT_SDCARD_ON_BOOT) && !HAS_SPI_LCD - card.beginautostart(); + #if !HAS_SPI_LCD + + #if ENABLED(SD_EEPROM_EMULATION) + SERIAL_ECHOLNPGM("Loading settings from SD"); + (void)settings.load(); + #endif + + #if ENABLED(INIT_SDCARD_ON_BOOT) + card.beginautostart(); + #endif + #endif #if HAS_TRINAMIC && DISABLED(PS_DEFAULT_OFF) diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index 1a17addbd2..f6dac7ce49 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -1734,3 +1734,7 @@ #define INIT_SDCARD_ON_BOOT #endif #endif + +#if ENABLED(EEPROM_SETTINGS) && NONE(FLASH_EEPROM_EMULATION, SPI_EEPROM, I2C_EEPROM) + #define SD_EEPROM_EMULATION +#endif diff --git a/Marlin/src/lcd/ultralcd.cpp b/Marlin/src/lcd/ultralcd.cpp index 77a56f8482..37e63cdae8 100644 --- a/Marlin/src/lcd/ultralcd.cpp +++ b/Marlin/src/lcd/ultralcd.cpp @@ -81,6 +81,10 @@ #include "../Marlin.h" +#if ENABLED(SD_EEPROM_EMULATION) + #include "../module/configuration_store.h" +#endif + #if ENABLED(POWER_LOSS_RECOVERY) #include "../feature/power_loss_recovery.h" #endif @@ -783,8 +787,13 @@ void MarlinUI::update() { if (sd_status) { safe_delay(500); // Some boards need a delay to get settled card.initsd(); - if (old_sd_status == 2) + if (old_sd_status == 2) { + #if ENABLED(SD_EEPROM_EMULATION) + SERIAL_ECHOLNPGM("Loading settings from SD"); + (void)settings.load(); + #endif card.beginautostart(); // Initial boot + } else set_status_P(PSTR(MSG_SD_INSERTED)); } diff --git a/Marlin/src/sd/cardreader.cpp b/Marlin/src/sd/cardreader.cpp index efd955259d..a8574569d2 100644 --- a/Marlin/src/sd/cardreader.cpp +++ b/Marlin/src/sd/cardreader.cpp @@ -353,9 +353,6 @@ 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(); - #endif } setroot(); @@ -561,11 +558,6 @@ void CardReader::checkautostart() { if (!isDetected()) initsd(); - #if ENABLED(EEPROM_SETTINGS) && DISABLED(FLASH_EEPROM_EMULATION) - SERIAL_ECHOLNPGM("Loading settings from SD"); - (void)settings.load(); - #endif - if (isDetected() #if ENABLED(POWER_LOSS_RECOVERY) && !recovery.valid() // Don't run auto#.g when a resume file exists