diff --git a/Marlin/src/module/configuration_store.cpp b/Marlin/src/module/configuration_store.cpp index a766d91b6e..ceab713813 100644 --- a/Marlin/src/module/configuration_store.cpp +++ b/Marlin/src/module/configuration_store.cpp @@ -37,7 +37,7 @@ */ // Change EEPROM version if the structure changes -#define EEPROM_VERSION "V64" +#define EEPROM_VERSION "V65" #define EEPROM_OFFSET 100 // Check the integrity of data offsets. @@ -90,6 +90,10 @@ #include "../feature/pause.h" +#if HAS_FILAMENT_SENSOR + #include "../feature/runout.h" +#endif + #if ENABLED(EXTRA_LIN_ADVANCE_K) extern float saved_extruder_advance_K[EXTRUDERS]; #endif @@ -141,6 +145,11 @@ typedef struct SettingsDataStruct { float hotend_offset[XYZ][HOTENDS - 1]; // M218 XYZ #endif + // + // FILAMENT_RUNOUT_SENSOR + // + bool runout_sensor_enabled; // M412 S + // // ENABLE_LEVELING_FADE_HEIGHT // @@ -291,6 +300,8 @@ typedef struct SettingsDataStruct { } SettingsData; +//static_assert(sizeof(SettingsData) <= E2END + 1, "EEPROM too small to contain SettingsData!"); + MarlinSettings settings; uint16_t MarlinSettings::datasize() { return sizeof(SettingsData); } @@ -512,6 +523,18 @@ void MarlinSettings::postprocess() { #endif } + // + // Filament Runout Sensor + // + { + #if HAS_FILAMENT_SENSOR + EEPROM_WRITE(runout.enabled); + #else + const bool runout_sensor_enabled = true; + EEPROM_WRITE(runout_sensor_enabled); + #endif + } + // // Global Leveling // @@ -1237,6 +1260,19 @@ void MarlinSettings::postprocess() { #endif } + // + // Filament Runout Sensor + // + { + _FIELD_TEST(runout_sensor_enabled); + #if HAS_FILAMENT_SENSOR + EEPROM_READ(runout.enabled); + #else + bool runout_sensor_enabled; + EEPROM_READ(runout_sensor_enabled); + #endif + } + // // Global Leveling // @@ -2047,6 +2083,19 @@ void MarlinSettings::reset() { reset_hotend_offsets(); #endif + // + // Filament Runout Sensor + // + + #if HAS_FILAMENT_SENSOR + runout.enabled = true; + runout.reset(); + #endif + + // + // Tool-change Settings + // + #if EXTRUDERS > 1 #if ENABLED(TOOLCHANGE_FILAMENT_SWAP) toolchange_settings.swap_length = TOOLCHANGE_FIL_SWAP_LENGTH; @@ -2059,6 +2108,10 @@ void MarlinSettings::reset() { toolchange_settings.z_raise = TOOLCHANGE_ZRAISE; #endif + // + // Magnetic Parking Extruder + // + #if ENABLED(MAGNETIC_PARKING_EXTRUDER) mpe_settings_init(); #endif @@ -2540,6 +2593,12 @@ void MarlinSettings::reset() { } #endif + #if HAS_FILAMENT_SENSOR + CONFIG_ECHO_HEADING("Filament Runout Sensor:"); + CONFIG_ECHO_START(); + SERIAL_ECHOLNPAIR(" M412 S", int(runout.enabled)); + #endif + /** * Bed Leveling */