| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -590,7 +590,7 @@
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      g26_bed_temp = parser.value_celsius();
 | 
					 | 
					 | 
					 | 
					      g26_bed_temp = parser.value_celsius();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if (!WITHIN(g26_bed_temp, 15, 140)) {
 | 
					 | 
					 | 
					 | 
					      if (!WITHIN(g26_bed_temp, 15, 140)) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        SERIAL_PROTOCOLLNPGM("?Specified bed temperature not plausible.");
 | 
					 | 
					 | 
					 | 
					        SERIAL_PROTOCOLLNPGM("?Specified bed temperature not plausible.");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        return G26_ERR;
 | 
					 | 
					 | 
					 | 
					        return;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -598,7 +598,7 @@
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      g26_layer_height = parser.value_linear_units();
 | 
					 | 
					 | 
					 | 
					      g26_layer_height = parser.value_linear_units();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if (!WITHIN(g26_layer_height, 0.0, 2.0)) {
 | 
					 | 
					 | 
					 | 
					      if (!WITHIN(g26_layer_height, 0.0, 2.0)) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        SERIAL_PROTOCOLLNPGM("?Specified layer height not plausible.");
 | 
					 | 
					 | 
					 | 
					        SERIAL_PROTOCOLLNPGM("?Specified layer height not plausible.");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        return G26_ERR;
 | 
					 | 
					 | 
					 | 
					        return;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -607,12 +607,12 @@
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        g26_retraction_multiplier = parser.value_float();
 | 
					 | 
					 | 
					 | 
					        g26_retraction_multiplier = parser.value_float();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if (!WITHIN(g26_retraction_multiplier, 0.05, 15.0)) {
 | 
					 | 
					 | 
					 | 
					        if (!WITHIN(g26_retraction_multiplier, 0.05, 15.0)) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          SERIAL_PROTOCOLLNPGM("?Specified Retraction Multiplier not plausible.");
 | 
					 | 
					 | 
					 | 
					          SERIAL_PROTOCOLLNPGM("?Specified Retraction Multiplier not plausible.");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          return G26_ERR;
 | 
					 | 
					 | 
					 | 
					          return;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        }
 | 
					 | 
					 | 
					 | 
					        }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      else {
 | 
					 | 
					 | 
					 | 
					      else {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        SERIAL_PROTOCOLLNPGM("?Retraction Multiplier must be specified.");
 | 
					 | 
					 | 
					 | 
					        SERIAL_PROTOCOLLNPGM("?Retraction Multiplier must be specified.");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        return G26_ERR;
 | 
					 | 
					 | 
					 | 
					        return;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -620,7 +620,7 @@
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      g26_nozzle = parser.value_float();
 | 
					 | 
					 | 
					 | 
					      g26_nozzle = parser.value_float();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if (!WITHIN(g26_nozzle, 0.1, 1.0)) {
 | 
					 | 
					 | 
					 | 
					      if (!WITHIN(g26_nozzle, 0.1, 1.0)) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        SERIAL_PROTOCOLLNPGM("?Specified nozzle size not plausible.");
 | 
					 | 
					 | 
					 | 
					        SERIAL_PROTOCOLLNPGM("?Specified nozzle size not plausible.");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        return G26_ERR;
 | 
					 | 
					 | 
					 | 
					        return;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -630,7 +630,7 @@
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          g26_prime_flag = -1;
 | 
					 | 
					 | 
					 | 
					          g26_prime_flag = -1;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        #else
 | 
					 | 
					 | 
					 | 
					        #else
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          SERIAL_PROTOCOLLNPGM("?Prime length must be specified when not using an LCD.");
 | 
					 | 
					 | 
					 | 
					          SERIAL_PROTOCOLLNPGM("?Prime length must be specified when not using an LCD.");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          return G26_ERR;
 | 
					 | 
					 | 
					 | 
					          return;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        #endif
 | 
					 | 
					 | 
					 | 
					        #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      else {
 | 
					 | 
					 | 
					 | 
					      else {
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -638,7 +638,7 @@
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        g26_prime_length = parser.value_linear_units();
 | 
					 | 
					 | 
					 | 
					        g26_prime_length = parser.value_linear_units();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if (!WITHIN(g26_prime_length, 0.0, 25.0)) {
 | 
					 | 
					 | 
					 | 
					        if (!WITHIN(g26_prime_length, 0.0, 25.0)) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          SERIAL_PROTOCOLLNPGM("?Specified prime length not plausible.");
 | 
					 | 
					 | 
					 | 
					          SERIAL_PROTOCOLLNPGM("?Specified prime length not plausible.");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          return G26_ERR;
 | 
					 | 
					 | 
					 | 
					          return;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        }
 | 
					 | 
					 | 
					 | 
					        }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -647,7 +647,7 @@
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      g26_filament_diameter = parser.value_linear_units();
 | 
					 | 
					 | 
					 | 
					      g26_filament_diameter = parser.value_linear_units();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if (!WITHIN(g26_filament_diameter, 1.0, 4.0)) {
 | 
					 | 
					 | 
					 | 
					      if (!WITHIN(g26_filament_diameter, 1.0, 4.0)) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        SERIAL_PROTOCOLLNPGM("?Specified filament size not plausible.");
 | 
					 | 
					 | 
					 | 
					        SERIAL_PROTOCOLLNPGM("?Specified filament size not plausible.");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        return G26_ERR;
 | 
					 | 
					 | 
					 | 
					        return;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    g26_extrusion_multiplier *= sq(1.75) / sq(g26_filament_diameter); // If we aren't using 1.75mm filament, we need to
 | 
					 | 
					 | 
					 | 
					    g26_extrusion_multiplier *= sq(1.75) / sq(g26_filament_diameter); // If we aren't using 1.75mm filament, we need to
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -660,7 +660,7 @@
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      g26_hotend_temp = parser.value_celsius();
 | 
					 | 
					 | 
					 | 
					      g26_hotend_temp = parser.value_celsius();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if (!WITHIN(g26_hotend_temp, 165, 280)) {
 | 
					 | 
					 | 
					 | 
					      if (!WITHIN(g26_hotend_temp, 165, 280)) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        SERIAL_PROTOCOLLNPGM("?Specified nozzle temperature not plausible.");
 | 
					 | 
					 | 
					 | 
					        SERIAL_PROTOCOLLNPGM("?Specified nozzle temperature not plausible.");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        return G26_ERR;
 | 
					 | 
					 | 
					 | 
					        return;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -676,21 +676,21 @@
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #else
 | 
					 | 
					 | 
					 | 
					    #else
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if (!parser.seen('R')) {
 | 
					 | 
					 | 
					 | 
					      if (!parser.seen('R')) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        SERIAL_PROTOCOLLNPGM("?(R)epeat must be specified when not using an LCD.");
 | 
					 | 
					 | 
					 | 
					        SERIAL_PROTOCOLLNPGM("?(R)epeat must be specified when not using an LCD.");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        return G26_ERR;
 | 
					 | 
					 | 
					 | 
					        return;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      else
 | 
					 | 
					 | 
					 | 
					      else
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        g26_repeats = parser.has_value() ? parser.value_int() : GRID_MAX_POINTS + 1;
 | 
					 | 
					 | 
					 | 
					        g26_repeats = parser.has_value() ? parser.value_int() : GRID_MAX_POINTS + 1;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #endif
 | 
					 | 
					 | 
					 | 
					    #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (g26_repeats < 1) {
 | 
					 | 
					 | 
					 | 
					    if (g26_repeats < 1) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      SERIAL_PROTOCOLLNPGM("?(R)epeat value not plausible; must be at least 1.");
 | 
					 | 
					 | 
					 | 
					      SERIAL_PROTOCOLLNPGM("?(R)epeat value not plausible; must be at least 1.");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      return G26_ERR;
 | 
					 | 
					 | 
					 | 
					      return;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    g26_x_pos = parser.seenval('X') ? RAW_X_POSITION(parser.value_linear_units()) : current_position[X_AXIS];
 | 
					 | 
					 | 
					 | 
					    g26_x_pos = parser.seenval('X') ? RAW_X_POSITION(parser.value_linear_units()) : current_position[X_AXIS];
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    g26_y_pos = parser.seenval('Y') ? RAW_Y_POSITION(parser.value_linear_units()) : current_position[Y_AXIS];
 | 
					 | 
					 | 
					 | 
					    g26_y_pos = parser.seenval('Y') ? RAW_Y_POSITION(parser.value_linear_units()) : current_position[Y_AXIS];
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (!position_is_reachable(g26_x_pos, g26_y_pos)) {
 | 
					 | 
					 | 
					 | 
					    if (!position_is_reachable(g26_x_pos, g26_y_pos)) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      SERIAL_PROTOCOLLNPGM("?Specified X,Y coordinate out of bounds.");
 | 
					 | 
					 | 
					 | 
					      SERIAL_PROTOCOLLNPGM("?Specified X,Y coordinate out of bounds.");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      return G26_ERR;
 | 
					 | 
					 | 
					 | 
					      return;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    /**
 | 
					 | 
					 | 
					 | 
					    /**
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
 
 |