Strip auto-retract for impossible M(IN|AX)_AUTORETRACT combo

This commit is contained in:
Scott Lahteine 2017-07-23 18:56:56 -05:00
parent 9fc72422e4
commit 14482d2f2a
2 changed files with 19 additions and 15 deletions

View file

@ -3350,6 +3350,7 @@ inline void gcode_G0_G1(
gcode_get_destination(); // For X Y Z E F
#if ENABLED(FWRETRACT)
if (MIN_AUTORETRACT <= MAX_AUTORETRACT) {
// When M209 Autoretract is enabled, convert E-only moves to firmware retract/recover moves
if (autoretract_enabled && parser.seen('E') && !(parser.seen('X') || parser.seen('Y') || parser.seen('Z'))) {
const float echange = destination[E_AXIS] - current_position[E_AXIS];
@ -3360,6 +3361,7 @@ inline void gcode_G0_G1(
return retract(echange < 0.0); // Firmware-based retract/recover (double-retract ignored)
}
}
}
#endif // FWRETRACT
#if IS_SCARA
@ -8584,9 +8586,11 @@ inline void gcode_M205() {
* moves will be classified as retraction.
*/
inline void gcode_M209() {
if (MIN_AUTORETRACT <= MAX_AUTORETRACT) {
if (parser.seen('S')) {
autoretract_enabled = parser.value_bool();
for (int i = 0; i < EXTRUDERS; i++) retracted[i] = false;
for (uint8_t i = 0; i < EXTRUDERS; i++) retracted[i] = false;
}
}
}
@ -11051,7 +11055,7 @@ void process_next_command() {
gcode_M208();
break;
case 209: // M209: Turn Automatic Retract Detection on/off
gcode_M209();
if (MIN_AUTORETRACT <= MAX_AUTORETRACT) gcode_M209();
break;
#endif // FWRETRACT

View file

@ -1762,7 +1762,7 @@ void MarlinSettings::reset() {
if (!forReplay) {
CONFIG_ECHO_START;
SERIAL_ECHOLNPGM("Auto-Retract: S=0 to disable, 1 to interpret extrude-only moves as retracts or recoveries");
SERIAL_ECHOLNPGM("Auto-Retract: S=0 to disable, 1 to interpret E-only moves as retract/recover");
}
CONFIG_ECHO_START;
SERIAL_ECHOLNPAIR(" M209 S", autoretract_enabled ? 1 : 0);