| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -340,11 +340,6 @@
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  #include "ubl.h"
 | 
					 | 
					 | 
					 | 
					  #include "ubl.h"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  extern bool defer_return_to_status;
 | 
					 | 
					 | 
					 | 
					  extern bool defer_return_to_status;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  unified_bed_leveling ubl;
 | 
					 | 
					 | 
					 | 
					  unified_bed_leveling ubl;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  #define UBL_MESH_VALID !( ( ubl.z_values[0][0] == ubl.z_values[0][1] && ubl.z_values[0][1] == ubl.z_values[0][2] \
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                           && ubl.z_values[1][0] == ubl.z_values[1][1] && ubl.z_values[1][1] == ubl.z_values[1][2] \
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                           && ubl.z_values[2][0] == ubl.z_values[2][1] && ubl.z_values[2][1] == ubl.z_values[2][2] \
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                           && ubl.z_values[0][0] == 0 && ubl.z_values[1][0] == 0 && ubl.z_values[2][0] == 0 )  \
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                           || isnan(ubl.z_values[0][0]))
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#endif
 | 
					 | 
					 | 
					 | 
					#endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#if ENABLED(CNC_COORDINATE_SYSTEMS)
 | 
					 | 
					 | 
					 | 
					#if ENABLED(CNC_COORDINATE_SYSTEMS)
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -2490,10 +2485,7 @@ static void clean_up_after_endstop_or_probe_move() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      planner.set_z_fade_height(zfh);
 | 
					 | 
					 | 
					 | 
					      planner.set_z_fade_height(zfh);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if (level_active) {
 | 
					 | 
					 | 
					 | 
					      if (level_active) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        const float oldpos[XYZE] = {
 | 
					 | 
					 | 
					 | 
					        const float oldpos[] = { current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS] };
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          current_position[X_AXIS], current_position[Y_AXIS],
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          current_position[Z_AXIS], current_position[E_AXIS]
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        };
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        #if ENABLED(AUTO_BED_LEVELING_UBL)
 | 
					 | 
					 | 
					 | 
					        #if ENABLED(AUTO_BED_LEVELING_UBL)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          set_bed_leveling_enabled(true);  // turn back on after changing fade height
 | 
					 | 
					 | 
					 | 
					          set_bed_leveling_enabled(true);  // turn back on after changing fade height
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        #else
 | 
					 | 
					 | 
					 | 
					        #else
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -9616,6 +9608,8 @@ void quickstop_stepper() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					   */
 | 
					 | 
					 | 
					 | 
					   */
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  inline void gcode_M420() {
 | 
					 | 
					 | 
					 | 
					  inline void gcode_M420() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    const float oldpos[] = { current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS] };
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #if ENABLED(AUTO_BED_LEVELING_UBL)
 | 
					 | 
					 | 
					 | 
					    #if ENABLED(AUTO_BED_LEVELING_UBL)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      // L to load a mesh from the EEPROM
 | 
					 | 
					 | 
					 | 
					      // L to load a mesh from the EEPROM
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -9650,7 +9644,7 @@ void quickstop_stepper() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      // L to load a mesh from the EEPROM
 | 
					 | 
					 | 
					 | 
					      // L to load a mesh from the EEPROM
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if (parser.seen('L') || parser.seen('V')) {
 | 
					 | 
					 | 
					 | 
					      if (parser.seen('L') || parser.seen('V')) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        ubl.display_map(0);  // Currently only supports one map type
 | 
					 | 
					 | 
					 | 
					        ubl.display_map(0);  // Currently only supports one map type
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        SERIAL_ECHOLNPAIR("UBL_MESH_VALID = ", UBL_MESH_VALID);
 | 
					 | 
					 | 
					 | 
					        SERIAL_ECHOLNPAIR("ubl.mesh_is_valid = ", ubl.mesh_is_valid());
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        SERIAL_ECHOLNPAIR("ubl.storage_slot = ", ubl.storage_slot);
 | 
					 | 
					 | 
					 | 
					        SERIAL_ECHOLNPAIR("ubl.storage_slot = ", ubl.storage_slot);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -9675,14 +9669,16 @@ void quickstop_stepper() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #endif
 | 
					 | 
					 | 
					 | 
					      #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    const bool to_enable = parser.boolval('S');
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (parser.seen('S'))
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      set_bed_leveling_enabled(to_enable);
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
 | 
					 | 
					 | 
					 | 
					    #if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if (parser.seen('Z')) set_z_fade_height(parser.value_linear_units(), false);
 | 
					 | 
					 | 
					 | 
					      if (parser.seen('Z')) set_z_fade_height(parser.value_linear_units(), false);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #endif
 | 
					 | 
					 | 
					 | 
					    #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    bool to_enable = false;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    if (parser.seen('S')) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      to_enable = parser.value_bool();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      set_bed_leveling_enabled(to_enable);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    const bool new_status = planner.leveling_active;
 | 
					 | 
					 | 
					 | 
					    const bool new_status = planner.leveling_active;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (to_enable && !new_status) {
 | 
					 | 
					 | 
					 | 
					    if (to_enable && !new_status) {
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -9701,6 +9697,10 @@ void quickstop_stepper() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      else
 | 
					 | 
					 | 
					 | 
					      else
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        SERIAL_ECHOLNPGM(MSG_OFF);
 | 
					 | 
					 | 
					 | 
					        SERIAL_ECHOLNPGM(MSG_OFF);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #endif
 | 
					 | 
					 | 
					 | 
					    #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    // Report change in position
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    if (memcmp(oldpos, current_position, sizeof(oldpos)))
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      report_current_position();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  }
 | 
					 | 
					 | 
					 | 
					  }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#endif
 | 
					 | 
					 | 
					 | 
					#endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
 
 |