From 8ccfdaca028c89d0047175d0030153a487f93c12 Mon Sep 17 00:00:00 2001 From: lukasmatena <33929324+lukasmatena@users.noreply.github.com> Date: Tue, 26 Nov 2019 10:34:18 +0100 Subject: [PATCH] Add M220 B/R with PRUSA_MMU2 (#15739) --- Marlin/src/gcode/config/M220.cpp | 18 +++++++++++++++--- Marlin/src/gcode/gcode.h | 1 + 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/Marlin/src/gcode/config/M220.cpp b/Marlin/src/gcode/config/M220.cpp index 50939b279b..3710a30ab9 100644 --- a/Marlin/src/gcode/config/M220.cpp +++ b/Marlin/src/gcode/config/M220.cpp @@ -24,11 +24,23 @@ #include "../../module/motion.h" /** - * M220: Set speed percentage factor, aka "Feed Rate" (M220 S95) + * M220: Set speed percentage factor, aka "Feed Rate" + * + * Parameters + * S : Set the feed rate percentage factor + * + * With PRUSA_MMU2... + * B : Flag to back up the current factor + * R : Flag to restore the last-saved factor */ void GcodeSuite::M220() { - if (parser.seenval('S')) - feedrate_percentage = parser.value_int(); + #if ENABLED(PRUSA_MMU2) + static int16_t backup_feedrate_percentage = 100; + if (parser.seen('B')) backup_feedrate_percentage = feedrate_percentage; + if (parser.seen('R')) feedrate_percentage = backup_feedrate_percentage; + #endif + + if (parser.seenval('S')) feedrate_percentage = parser.value_int(); } diff --git a/Marlin/src/gcode/gcode.h b/Marlin/src/gcode/gcode.h index 8ec414404b..9f4675291f 100644 --- a/Marlin/src/gcode/gcode.h +++ b/Marlin/src/gcode/gcode.h @@ -177,6 +177,7 @@ * M217 - Set filament swap parameters: "M217 S P R". (Requires SINGLENOZZLE) * M218 - Set/get a tool offset: "M218 T X Y". (Requires 2 or more extruders) * M220 - Set Feedrate Percentage: "M220 S" (i.e., "FR" on the LCD) + * Use "M220 B" to back up the Feedrate Percentage and "M220 R" to restore it. (Requires PRUSA_MMU2) * M221 - Set Flow Percentage: "M221 S" * M226 - Wait until a pin is in a given state: "M226 P S" * M240 - Trigger a camera to take a photograph. (Requires PHOTO_GCODE)