Consolidate pause, apply to M125, M600, M24
This commit is contained in:
		| @@ -125,6 +125,9 @@ | ||||
|   #include "feature/tmc2130.h" | ||||
| #endif | ||||
|  | ||||
| #if ENABLED(ADVANCED_PAUSE_FEATURE) && ENABLED(PAUSE_PARK_NO_STEPPER_TIMEOUT) | ||||
|   #include "feature/pause.h" | ||||
| #endif | ||||
|  | ||||
| bool Running = true; | ||||
|  | ||||
| @@ -357,11 +360,6 @@ void suicide() { | ||||
|  ***************** GCode Handlers ***************** | ||||
|  **************************************************/ | ||||
|  | ||||
| #if ENABLED(ADVANCED_PAUSE_FEATURE) | ||||
|   // For M125, M600, M24 | ||||
|   #include "gcode/feature/pause/common.h" | ||||
| #endif | ||||
|  | ||||
| #if ENABLED(SDSUPPORT) | ||||
|   #include "gcode/sdcard/M20.h"           // M20  - List SD card. (Requires SDSUPPORT) | ||||
|   #include "gcode/sdcard/M21.h"           // M21  - Init SD card. (Requires SDSUPPORT) | ||||
| @@ -508,10 +506,6 @@ static bool pin_is_protected(const int8_t pin) { | ||||
|  | ||||
| #include "gcode/control/M120_M121.h" | ||||
|  | ||||
| #if ENABLED(PARK_HEAD_ON_PAUSE) | ||||
|   #include "gcode/feature/pause/M125.h" | ||||
| #endif | ||||
|  | ||||
| #if HAS_COLOR_LEDS | ||||
|   #include "gcode/feature/leds/M150.h" | ||||
| #endif | ||||
| @@ -612,10 +606,6 @@ void quickstop_stepper() { | ||||
|   #include "gcode/config/M540.h" | ||||
| #endif | ||||
|  | ||||
| #if ENABLED(ADVANCED_PAUSE_FEATURE) | ||||
|   #include "gcode/feature/pause/M600.h" | ||||
| #endif | ||||
|  | ||||
| #if ENABLED(MK2_MULTIPLEXER) | ||||
|   #include "gcode/feature/snmm/M702.h" | ||||
| #endif | ||||
|   | ||||
| @@ -21,21 +21,34 @@ | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  * feature/pause/common.h - Merge this with its G-codes in the refactor | ||||
|  * feature/pause.cpp - Pause feature support functions | ||||
|  * This may be combined with related G-codes if features are consolidated. | ||||
|  */ | ||||
| 
 | ||||
| #ifndef PAUSE_COMMON_H | ||||
| #define PAUSE_COMMON_H | ||||
| #include "../inc/MarlinConfig.h" | ||||
| 
 | ||||
| #if IS_KINEMATIC | ||||
|   #define RUNPLAN(RATE_MM_S) planner.buffer_line_kinematic(destination, RATE_MM_S, active_extruder) | ||||
| #else | ||||
|   #define RUNPLAN(RATE_MM_S) line_to_destination(RATE_MM_S) | ||||
| #if ENABLED(ADVANCED_PAUSE_FEATURE) || ENABLED(PARK_HEAD_ON_PAUSE) | ||||
| 
 | ||||
| #include "../Marlin.h" | ||||
| #include "../gcode/gcode.h" | ||||
| #include "../module/motion.h" | ||||
| #include "../module/planner.h" | ||||
| #include "../module/stepper.h" | ||||
| #include "../module/printcounter.h" | ||||
| #include "../module/temperature.h" | ||||
| 
 | ||||
| #if ENABLED(ULTIPANEL) | ||||
|   #include "../lcd/ultralcd.h" | ||||
| #endif | ||||
| 
 | ||||
| #include "../libs/buzzer.h" | ||||
| 
 | ||||
| // private:
 | ||||
| 
 | ||||
| static float resume_position[XYZE]; | ||||
| static bool move_away_flag = false; | ||||
| 
 | ||||
| #if ENABLED(SDSUPPORT) | ||||
|   #include "../sd/cardreader.h" | ||||
|   static bool sd_print_paused = false; | ||||
| #endif | ||||
| 
 | ||||
| @@ -74,8 +87,18 @@ static void ensure_safe_temperature() { | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| static bool pause_print(const float &retract, const float &z_lift, const float &x_pos, const float &y_pos, | ||||
|                         const float &unload_length = 0 , const int8_t max_beep_count = 0, const bool show_lcd = false | ||||
| // public:
 | ||||
| 
 | ||||
| bool move_away_flag = false; | ||||
| 
 | ||||
| #if IS_KINEMATIC | ||||
|   #define RUNPLAN(RATE_MM_S) planner.buffer_line_kinematic(destination, RATE_MM_S, active_extruder) | ||||
| #else | ||||
|   #define RUNPLAN(RATE_MM_S) line_to_destination(RATE_MM_S) | ||||
| #endif | ||||
| 
 | ||||
| bool pause_print(const float &retract, const float &z_lift, const float &x_pos, const float &y_pos, | ||||
|                         const float &unload_length/*=0*/ , const int8_t max_beep_count/*=0*/, const bool show_lcd/*=false*/ | ||||
| ) { | ||||
|   if (move_away_flag) return false; // already paused
 | ||||
| 
 | ||||
| @@ -172,7 +195,7 @@ static bool pause_print(const float &retract, const float &z_lift, const float & | ||||
|   return true; | ||||
| } | ||||
| 
 | ||||
| static void wait_for_filament_reload(const int8_t max_beep_count = 0) { | ||||
| void wait_for_filament_reload(const int8_t max_beep_count/*=0*/) { | ||||
|   bool nozzle_timed_out = false; | ||||
| 
 | ||||
|   // Wait for filament insert by user and press button
 | ||||
| @@ -226,7 +249,7 @@ static void wait_for_filament_reload(const int8_t max_beep_count = 0) { | ||||
|   KEEPALIVE_STATE(IN_HANDLER); | ||||
| } | ||||
| 
 | ||||
| static void resume_print(const float &load_length = 0, const float &initial_extrude_length = 0, const int8_t max_beep_count = 0) { | ||||
| void resume_print(const float &load_length/*=0*/, const float &initial_extrude_length/*=0*/, const int8_t max_beep_count/*=0*/) { | ||||
|   bool nozzle_timed_out = false; | ||||
| 
 | ||||
|   if (!move_away_flag) return; | ||||
| @@ -332,4 +355,4 @@ static void resume_print(const float &load_length = 0, const float &initial_extr | ||||
|   move_away_flag = false; | ||||
| } | ||||
| 
 | ||||
| #endif // PAUSE_COMMON_H
 | ||||
| #endif // ADVANCED_PAUSE_FEATURE || PARK_HEAD_ON_PAUSE
 | ||||
							
								
								
									
										41
									
								
								Marlin/src/feature/pause.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								Marlin/src/feature/pause.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,41 @@ | ||||
| /** | ||||
|  * Marlin 3D Printer Firmware | ||||
|  * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] | ||||
|  * | ||||
|  * Based on Sprinter and grbl. | ||||
|  * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 3 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * feature/pause.h - Pause feature support functions | ||||
|  * This may be combined with related G-codes if features are consolidated. | ||||
|  */ | ||||
|  | ||||
| #ifndef _PAUSE_H_ | ||||
| #define _PAUSE_H_ | ||||
|  | ||||
| extern bool move_away_flag; | ||||
|  | ||||
| bool pause_print(const float &retract, const float &z_lift, const float &x_pos, const float &y_pos, | ||||
|                         const float &unload_length=0 , const int8_t max_beep_count=0, const bool show_lcd=false | ||||
| ); | ||||
|  | ||||
| void wait_for_filament_reload(const int8_t max_beep_count=0); | ||||
|  | ||||
| void resume_print(const float &load_length=0, const float &initial_extrude_length=0, const int8_t max_beep_count=0); | ||||
|  | ||||
| #endif // _PAUSE_H_ | ||||
| @@ -20,7 +20,13 @@ | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| #include "common.h" | ||||
| #include "../../../inc/MarlinConfig.h" | ||||
| 
 | ||||
| #if ENABLED(PARK_HEAD_ON_PAUSE) | ||||
| 
 | ||||
| #include "../../gcode.h" | ||||
| #include "../../parser.h" | ||||
| #include "../../../feature/pause.h" | ||||
| 
 | ||||
| /**
 | ||||
|  * M125: Store current position and move to filament change position. | ||||
| @@ -37,7 +43,7 @@ | ||||
|  *    Y = override Y | ||||
|  *    Z = override Z raise | ||||
|  */ | ||||
| void gcode_M125() { | ||||
| void GcodeSuite::M125() { | ||||
| 
 | ||||
|   // Initial retract before move to filament change position
 | ||||
|   const float retract = parser.seen('L') ? parser.value_axis_units(E_AXIS) : 0 | ||||
| @@ -87,3 +93,5 @@ void gcode_M125() { | ||||
|     #endif | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| #endif // PARK_HEAD_ON_PAUSE
 | ||||
| @@ -20,7 +20,16 @@ | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| #include "common.h" | ||||
| #include "../../../inc/MarlinConfig.h" | ||||
| 
 | ||||
| #if ENABLED(ADVANCED_PAUSE_FEATURE) | ||||
| 
 | ||||
| #include "../../../feature/pause.h" | ||||
| 
 | ||||
| #include "../../gcode.h" | ||||
| #include "../../parser.h" | ||||
| 
 | ||||
| #include "../../../module/printcounter.h" | ||||
| 
 | ||||
| /**
 | ||||
|  * M600: Pause for filament change | ||||
| @@ -36,7 +45,7 @@ | ||||
|  *  Default values are used for omitted arguments. | ||||
|  * | ||||
|  */ | ||||
| void gcode_M600() { | ||||
| void GcodeSuite::M600() { | ||||
| 
 | ||||
|   #if ENABLED(HOME_BEFORE_FILAMENT_CHANGE) | ||||
|     // Don't allow filament change without homing first
 | ||||
| @@ -101,3 +110,5 @@ void gcode_M600() { | ||||
|   // Resume the print job timer if it was running
 | ||||
|   if (job_running) print_job_timer.start(); | ||||
| } | ||||
| 
 | ||||
| #endif // ADVANCED_PAUSE_FEATURE
 | ||||
| @@ -121,7 +121,6 @@ extern void gcode_M20(); | ||||
| extern void gcode_M21(); | ||||
| extern void gcode_M22(); | ||||
| extern void gcode_M23(); | ||||
| extern void gcode_M24(); | ||||
| extern void gcode_M25(); | ||||
| extern void gcode_M26(); | ||||
| extern void gcode_M27(); | ||||
| @@ -212,7 +211,6 @@ extern void gcode_M501(); | ||||
| extern void gcode_M502(); | ||||
| extern void gcode_M503(); | ||||
| extern void gcode_M540(); | ||||
| extern void gcode_M600(); | ||||
| extern void gcode_M605(); | ||||
| extern void gcode_M665(); | ||||
| extern void gcode_M666(); | ||||
| @@ -434,7 +432,7 @@ void GcodeSuite::process_next_command() { | ||||
|         case 23: // M23: Select file | ||||
|           gcode_M23(); break; | ||||
|         case 24: // M24: Start SD print | ||||
|           gcode_M24(); break; | ||||
|           M24(); break; | ||||
|         case 25: // M25: Pause SD print | ||||
|           gcode_M25(); break; | ||||
|         case 26: // M26: Set SD index | ||||
| @@ -570,7 +568,7 @@ void GcodeSuite::process_next_command() { | ||||
|  | ||||
|       #if ENABLED(PARK_HEAD_ON_PAUSE) | ||||
|         case 125: // M125: Store current position and move to filament change position | ||||
|           gcode_M125(); break; | ||||
|           M125(); break; | ||||
|       #endif | ||||
|  | ||||
|       #if ENABLED(BARICUDA) | ||||
| @@ -911,7 +909,7 @@ void GcodeSuite::process_next_command() { | ||||
|  | ||||
|       #if ENABLED(ADVANCED_PAUSE_FEATURE) | ||||
|         case 600: // M600: Pause for filament change | ||||
|           gcode_M600(); | ||||
|           M600(); | ||||
|           break; | ||||
|       #endif // ADVANCED_PAUSE_FEATURE | ||||
|  | ||||
|   | ||||
| @@ -20,14 +20,22 @@ | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| #include "../../inc/MarlinConfig.h" | ||||
| 
 | ||||
| #if ENABLED(SDSUPPORT) | ||||
| 
 | ||||
| #include "../gcode.h" | ||||
| #include "../../sd/cardreader.h" | ||||
| #include "../../module/printcounter.h" | ||||
| 
 | ||||
| #if ENABLED(PARK_HEAD_ON_PAUSE) | ||||
|   #include "../feature/pause/common.h" | ||||
|   #include "../../feature/pause.h" | ||||
| #endif | ||||
| 
 | ||||
| /**
 | ||||
|  * M24: Start or Resume SD Print | ||||
|  */ | ||||
| void gcode_M24() { | ||||
| void GcodeSuite::M24() { | ||||
|   #if ENABLED(PARK_HEAD_ON_PAUSE) | ||||
|     resume_print(); | ||||
|   #endif | ||||
| @@ -35,3 +43,5 @@ void gcode_M24() { | ||||
|   card.startFileprint(); | ||||
|   print_job_timer.start(); | ||||
| } | ||||
| 
 | ||||
| #endif // SDSUPPORT
 | ||||
		Reference in New Issue
	
	Block a user