From c885de275511dbe3524bf780f717c75c60a2b318 Mon Sep 17 00:00:00 2001 From: The-Force Date: Mon, 28 Oct 2019 16:38:20 +0000 Subject: [PATCH 1/4] Volumetric Extrusion To PLR Added volumetric extrusion recover to the POWER_LOSS_RECOVERY feature. --- Marlin/src/feature/power_loss_recovery.cpp | 31 ++++++++++++++++++++++ Marlin/src/feature/power_loss_recovery.h | 9 +++++++ 2 files changed, 40 insertions(+) diff --git a/Marlin/src/feature/power_loss_recovery.cpp b/Marlin/src/feature/power_loss_recovery.cpp index c438dffa361e..c8204aec791c 100644 --- a/Marlin/src/feature/power_loss_recovery.cpp +++ b/Marlin/src/feature/power_loss_recovery.cpp @@ -183,6 +183,15 @@ void PrintJobRecovery::save(const bool force/*=false*/, const bool save_queue/*= info.active_extruder = active_extruder; #endif + #if DISABLED(NO_VOLUMETRICS) + info.volumetric_enabled = parser.volumetric_enabled; + #if EXTRUDERS > 1 + for (int8_t e = 0; e < EXTRUDERS; e++) info.filament_size[e] = planner.filament_size[e] + #else + if (parser.volumetric_enabled) info.filament_size = planner.filament_size[active_extruder]; + #endif + #endif + #if EXTRUDERS HOTEND_LOOP() info.target_temperature[e] = thermalManager.temp_hotend[e].target; #endif @@ -291,6 +300,28 @@ void PrintJobRecovery::resume() { gcode.process_subcommands_now(cmd); #endif + // Recover volumetric exstrusion + #if DISABLED(NO_VOLUMETRICS) + #if EXTRUDERS > 1 + for (int8_t e = 0; e < EXTRUDERS; e++){ + dtostrf(info.filament_size[e], 1, 3, str_1); + sprintf_P(cmd, PSTR("M200 T%i D%s"), e, str_1); + gcode.process_subcommands_now(cmd); + } + if (!info.volumetric_enabled){ + sprintf_P(cmd, PSTR("M200 T%i D0"), info.active_extruder); + gcode.process_subcommands_now(cmd); + } + #else + if (info.volumetric_enabled){ + dtostrf(info.filament_size, 1, 3, str_1); + sprintf_P(cmd, PSTR("M200 D%s"), str_1); + gcode.process_subcommands_now(cmd); + } + #endif + + #endif + #if HAS_HEATED_BED const int16_t bt = info.target_temperature_bed; if (bt) { diff --git a/Marlin/src/feature/power_loss_recovery.h b/Marlin/src/feature/power_loss_recovery.h index 9f947701e30e..20248a2e44b9 100644 --- a/Marlin/src/feature/power_loss_recovery.h +++ b/Marlin/src/feature/power_loss_recovery.h @@ -59,6 +59,15 @@ typedef struct { uint8_t active_extruder; #endif + #if DISABLED(NO_VOLUMETRICS) + bool volumetric_enabled; + #if EXTRUDERS > 1 + float filament_size[EXTRUDERS]; + #else + float filament_size; + #endif + #endif + #if HOTENDS int16_t target_temperature[HOTENDS]; #endif From 6f72f38edd2503b30f0c19b31679f484c1aeafce Mon Sep 17 00:00:00 2001 From: The-Force Date: Wed, 30 Oct 2019 18:14:37 +0000 Subject: [PATCH 2/4] missing semicolon missing semicolon --- Marlin/src/feature/power_loss_recovery.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/feature/power_loss_recovery.cpp b/Marlin/src/feature/power_loss_recovery.cpp index c8204aec791c..14c1859013dd 100644 --- a/Marlin/src/feature/power_loss_recovery.cpp +++ b/Marlin/src/feature/power_loss_recovery.cpp @@ -186,7 +186,7 @@ void PrintJobRecovery::save(const bool force/*=false*/, const bool save_queue/*= #if DISABLED(NO_VOLUMETRICS) info.volumetric_enabled = parser.volumetric_enabled; #if EXTRUDERS > 1 - for (int8_t e = 0; e < EXTRUDERS; e++) info.filament_size[e] = planner.filament_size[e] + for (int8_t e = 0; e < EXTRUDERS; e++) info.filament_size[e] = planner.filament_size[e]; #else if (parser.volumetric_enabled) info.filament_size = planner.filament_size[active_extruder]; #endif From d3be7466ab59817c989e54207b03147722accd85 Mon Sep 17 00:00:00 2001 From: The-Force Date: Wed, 30 Oct 2019 21:16:00 +0000 Subject: [PATCH 3/4] comment --- Marlin/src/feature/power_loss_recovery.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Marlin/src/feature/power_loss_recovery.cpp b/Marlin/src/feature/power_loss_recovery.cpp index 14c1859013dd..0cf855246726 100644 --- a/Marlin/src/feature/power_loss_recovery.cpp +++ b/Marlin/src/feature/power_loss_recovery.cpp @@ -300,7 +300,7 @@ void PrintJobRecovery::resume() { gcode.process_subcommands_now(cmd); #endif - // Recover volumetric exstrusion + // Recover volumetric exstrusion state #if DISABLED(NO_VOLUMETRICS) #if EXTRUDERS > 1 for (int8_t e = 0; e < EXTRUDERS; e++){ @@ -319,7 +319,6 @@ void PrintJobRecovery::resume() { gcode.process_subcommands_now(cmd); } #endif - #endif #if HAS_HEATED_BED From 6aecfef29c27572513ff12efdedd43947966d237 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 31 Oct 2019 14:07:57 -0500 Subject: [PATCH 4/4] Update power_loss_recovery.cpp --- Marlin/src/feature/power_loss_recovery.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Marlin/src/feature/power_loss_recovery.cpp b/Marlin/src/feature/power_loss_recovery.cpp index 0cf855246726..1cea125dfe46 100644 --- a/Marlin/src/feature/power_loss_recovery.cpp +++ b/Marlin/src/feature/power_loss_recovery.cpp @@ -300,20 +300,20 @@ void PrintJobRecovery::resume() { gcode.process_subcommands_now(cmd); #endif - // Recover volumetric exstrusion state + // Recover volumetric extrusion state #if DISABLED(NO_VOLUMETRICS) #if EXTRUDERS > 1 - for (int8_t e = 0; e < EXTRUDERS; e++){ + for (int8_t e = 0; e < EXTRUDERS; e++) { dtostrf(info.filament_size[e], 1, 3, str_1); sprintf_P(cmd, PSTR("M200 T%i D%s"), e, str_1); gcode.process_subcommands_now(cmd); } - if (!info.volumetric_enabled){ + if (!info.volumetric_enabled) { sprintf_P(cmd, PSTR("M200 T%i D0"), info.active_extruder); gcode.process_subcommands_now(cmd); } #else - if (info.volumetric_enabled){ + if (info.volumetric_enabled) { dtostrf(info.filament_size, 1, 3, str_1); sprintf_P(cmd, PSTR("M200 D%s"), str_1); gcode.process_subcommands_now(cmd);