Merge pull request #6764 from thinkyhead/bf_cleanups_tuesday

Prevent home_all_axes picking up XYZ parameters from command
This commit is contained in:
Scott Lahteine 2017-05-16 19:13:15 -05:00 committed by GitHub
commit 455a24f6ff
8 changed files with 35 additions and 43 deletions

View File

@ -3713,7 +3713,7 @@ inline void gcode_G4() {
* Z Home to the Z endstop * Z Home to the Z endstop
* *
*/ */
inline void gcode_G28() { inline void gcode_G28(const bool always_home_all) {
#if ENABLED(DEBUG_LEVELING_FEATURE) #if ENABLED(DEBUG_LEVELING_FEATURE)
if (DEBUGGING(LEVELING)) { if (DEBUGGING(LEVELING)) {
@ -3760,14 +3760,16 @@ inline void gcode_G28() {
#else // NOT DELTA #else // NOT DELTA
const bool homeX = code_seen('X'), homeY = code_seen('Y'), homeZ = code_seen('Z'), const bool homeX = always_home_all || code_seen('X'),
home_all_axis = (!homeX && !homeY && !homeZ) || (homeX && homeY && homeZ); homeY = always_home_all || code_seen('Y'),
homeZ = always_home_all || code_seen('Z'),
home_all = (!homeX && !homeY && !homeZ) || (homeX && homeY && homeZ);
set_destination_to_current(); set_destination_to_current();
#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 || homeZ) { if (home_all || homeZ) {
HOMEAXIS(Z); HOMEAXIS(Z);
#if ENABLED(DEBUG_LEVELING_FEATURE) #if ENABLED(DEBUG_LEVELING_FEATURE)
if (DEBUGGING(LEVELING)) DEBUG_POS("> HOMEAXIS(Z)", current_position); if (DEBUGGING(LEVELING)) DEBUG_POS("> HOMEAXIS(Z)", current_position);
@ -3776,7 +3778,7 @@ inline void gcode_G28() {
#else #else
if (home_all_axis || homeX || homeY) { if (home_all || homeX || homeY) {
// Raise Z before homing any other axes and z is not already high enough (never lower z) // Raise Z before homing any other axes and z is not already high enough (never lower z)
destination[Z_AXIS] = LOGICAL_Z_POSITION(Z_HOMING_HEIGHT); destination[Z_AXIS] = LOGICAL_Z_POSITION(Z_HOMING_HEIGHT);
if (destination[Z_AXIS] > current_position[Z_AXIS]) { if (destination[Z_AXIS] > current_position[Z_AXIS]) {
@ -3794,14 +3796,14 @@ inline void gcode_G28() {
#if ENABLED(QUICK_HOME) #if ENABLED(QUICK_HOME)
if (home_all_axis || (homeX && homeY)) quick_home_xy(); if (home_all || (homeX && homeY)) quick_home_xy();
#endif #endif
#if ENABLED(HOME_Y_BEFORE_X) #if ENABLED(HOME_Y_BEFORE_X)
// Home Y // Home Y
if (home_all_axis || homeY) { if (home_all || homeY) {
HOMEAXIS(Y); HOMEAXIS(Y);
#if ENABLED(DEBUG_LEVELING_FEATURE) #if ENABLED(DEBUG_LEVELING_FEATURE)
if (DEBUGGING(LEVELING)) DEBUG_POS("> homeY", current_position); if (DEBUGGING(LEVELING)) DEBUG_POS("> homeY", current_position);
@ -3811,7 +3813,7 @@ inline void gcode_G28() {
#endif #endif
// Home X // Home X
if (home_all_axis || homeX) { if (home_all || homeX) {
#if ENABLED(DUAL_X_CARRIAGE) #if ENABLED(DUAL_X_CARRIAGE)
@ -3844,7 +3846,7 @@ inline void gcode_G28() {
#if DISABLED(HOME_Y_BEFORE_X) #if DISABLED(HOME_Y_BEFORE_X)
// Home Y // Home Y
if (home_all_axis || homeY) { if (home_all || homeY) {
HOMEAXIS(Y); HOMEAXIS(Y);
#if ENABLED(DEBUG_LEVELING_FEATURE) #if ENABLED(DEBUG_LEVELING_FEATURE)
if (DEBUGGING(LEVELING)) DEBUG_POS("> homeY", current_position); if (DEBUGGING(LEVELING)) DEBUG_POS("> homeY", current_position);
@ -3854,16 +3856,16 @@ inline void gcode_G28() {
// Home Z last if homing towards the bed // Home Z last if homing towards the bed
#if Z_HOME_DIR < 0 #if Z_HOME_DIR < 0
if (home_all_axis || homeZ) { if (home_all || homeZ) {
#if ENABLED(Z_SAFE_HOMING) #if ENABLED(Z_SAFE_HOMING)
home_z_safely(); home_z_safely();
#else #else
HOMEAXIS(Z); HOMEAXIS(Z);
#endif #endif
#if ENABLED(DEBUG_LEVELING_FEATURE) #if ENABLED(DEBUG_LEVELING_FEATURE)
if (DEBUGGING(LEVELING)) DEBUG_POS("> (home_all_axis || homeZ) > final", current_position); if (DEBUGGING(LEVELING)) DEBUG_POS("> (home_all || homeZ) > final", current_position);
#endif #endif
} // home_all_axis || homeZ } // home_all || homeZ
#endif // Z_HOME_DIR < 0 #endif // Z_HOME_DIR < 0
SYNC_PLAN_POSITION_KINEMATIC(); SYNC_PLAN_POSITION_KINEMATIC();
@ -3895,7 +3897,7 @@ inline void gcode_G28() {
#endif #endif
} // G28 } // G28
void home_all_axes() { gcode_G28(); } void home_all_axes() { gcode_G28(true); }
#if HAS_PROBING_PROCEDURE #if HAS_PROBING_PROCEDURE
@ -9858,7 +9860,7 @@ void process_next_command() {
#endif // NOZZLE_PARK_FEATURE #endif // NOZZLE_PARK_FEATURE
case 28: // G28: Home all axes, one at a time case 28: // G28: Home all axes, one at a time
gcode_G28(); gcode_G28(false);
break; break;
#if HAS_LEVELING #if HAS_LEVELING

View File

@ -324,15 +324,13 @@
if (axis_unhomed_error()) { if (axis_unhomed_error()) {
if (code_seen('J')) if (code_seen('J'))
home_all_axes(); home_all_axes();
else else if (code_seen('P')) {
if (code_seen('P')) { if (code_has_value()) {
int p_val; const int p_val = code_value_int();
if (code_has_value()) { if (p_val == 1 || p_val == 2 || p_val == 4)
p_val = code_value_int(); home_all_axes();
if ( p_val==1 || p_val==2 || p_val==4 )
home_all_axes();
}
} }
}
} }
if (g29_parameter_parsing()) return; // abort if parsing the simple parameters causes a problem, if (g29_parameter_parsing()) return; // abort if parsing the simple parameters causes a problem,
@ -1341,15 +1339,7 @@
// Also for round beds, there are grid points outside the bed that nozzle can't reach. // Also for round beds, there are grid points outside the bed that nozzle can't reach.
// Prune them from the list and ignore them till the next Phase (manual nozzle probing). // Prune them from the list and ignore them till the next Phase (manual nozzle probing).
// if ((probe_as_reference && position_is_reachable_by_probe_raw_xy(mx, my)) || position_is_reachable_raw_xy(mx, my)) if ( ! (probe_as_reference ? position_is_reachable_by_probe_raw_xy(mx, my) : position_is_reachable_raw_xy(mx, my)) )
// continue;
//
// THE ABOVE CODE IS NOT A REPLACEMENT FOR THE CODE BELOW!!!!!!!
//
bool reachable = probe_as_reference ?
position_is_reachable_by_probe_raw_xy( mx, my ) :
position_is_reachable_raw_xy( mx, my );
if ( ! reachable )
continue; continue;
// Reachable. Check if it's the closest location to the nozzle. // Reachable. Check if it's the closest location to the nozzle.