| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -76,7 +76,7 @@
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// G10 - retract filament according to settings of M207
 | 
					 | 
					 | 
					 | 
					// G10 - retract filament according to settings of M207
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// G11 - retract recover filament according to settings of M208
 | 
					 | 
					 | 
					 | 
					// G11 - retract recover filament according to settings of M208
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// G28 - Home all Axis
 | 
					 | 
					 | 
					 | 
					// G28 - Home all Axis
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// G29 - Detailed Z-Probe, probes the bed at 3 points.  You must de at the home position for this to work correctly.
 | 
					 | 
					 | 
					 | 
					// G29 - Detailed Z-Probe, probes the bed at 3 or more points.  Will fail if you haven't homed yet.
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// G30 - Single Z Probe, probes bed at current XY location.
 | 
					 | 
					 | 
					 | 
					// G30 - Single Z Probe, probes bed at current XY location.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// G90 - Use Absolute Coordinates
 | 
					 | 
					 | 
					 | 
					// G90 - Use Absolute Coordinates
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// G91 - Use Relative Coordinates
 | 
					 | 
					 | 
					 | 
					// G91 - Use Relative Coordinates
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1241,7 +1241,7 @@ void process_commands()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#else // NOT DELTA
 | 
					 | 
					 | 
					 | 
					#else // NOT DELTA
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      home_all_axis = !((code_seen(axis_codes[0])) || (code_seen(axis_codes[1])) || (code_seen(axis_codes[2])));
 | 
					 | 
					 | 
					 | 
					      home_all_axis = !((code_seen(axis_codes[X_AXIS])) || (code_seen(axis_codes[Y_AXIS])) || (code_seen(axis_codes[Z_AXIS])));
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #if Z_HOME_DIR > 0                      // If homing away from BED do Z first
 | 
					 | 
					 | 
					 | 
					      #if Z_HOME_DIR > 0                      // If homing away from BED do Z first
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if((home_all_axis) || (code_seen(axis_codes[Z_AXIS]))) {
 | 
					 | 
					 | 
					 | 
					      if((home_all_axis) || (code_seen(axis_codes[Z_AXIS]))) {
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1409,6 +1409,15 @@ void process_commands()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            #error "You must have a Z_MIN endstop in order to enable Auto Bed Leveling feature!!! Z_MIN_PIN must point to a valid hardware pin."
 | 
					 | 
					 | 
					 | 
					            #error "You must have a Z_MIN endstop in order to enable Auto Bed Leveling feature!!! Z_MIN_PIN must point to a valid hardware pin."
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            #endif
 | 
					 | 
					 | 
					 | 
					            #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            // Prevent user from running a G29 without first homing in X and Y
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            if (! (axis_known_position[X_AXIS] && axis_known_position[Y_AXIS]) )
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                LCD_MESSAGEPGM(MSG_POSITION_UNKNOWN);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                SERIAL_ECHO_START;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                SERIAL_ECHOLNPGM(MSG_POSITION_UNKNOWN);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                break; // abort G29, since we don't know where we are
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            st_synchronize();
 | 
					 | 
					 | 
					 | 
					            st_synchronize();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            // make sure the bed_level_rotation_matrix is identity or the planner will get it incorectly
 | 
					 | 
					 | 
					 | 
					            // make sure the bed_level_rotation_matrix is identity or the planner will get it incorectly
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            //vector_3 corrected_position = plan_get_position_mm();
 | 
					 | 
					 | 
					 | 
					            //vector_3 corrected_position = plan_get_position_mm();
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -2088,7 +2097,7 @@ void process_commands()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      else
 | 
					 | 
					 | 
					 | 
					      else
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      {
 | 
					 | 
					 | 
					 | 
					      {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        bool all_axis = !((code_seen(axis_codes[0])) || (code_seen(axis_codes[1])) || (code_seen(axis_codes[2]))|| (code_seen(axis_codes[3])));
 | 
					 | 
					 | 
					 | 
					        bool all_axis = !((code_seen(axis_codes[X_AXIS])) || (code_seen(axis_codes[Y_AXIS])) || (code_seen(axis_codes[Z_AXIS]))|| (code_seen(axis_codes[E_AXIS])));
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if(all_axis)
 | 
					 | 
					 | 
					 | 
					        if(all_axis)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        {
 | 
					 | 
					 | 
					 | 
					        {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          st_synchronize();
 | 
					 | 
					 | 
					 | 
					          st_synchronize();
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
 
 |