committed by
Scott Lahteine
parent
c36efd3106
commit
0fff79c24b
@ -61,11 +61,6 @@ bool GcodeSuite::axis_relative_modes[] = AXIS_RELATIVE_MODES;
|
||||
float GcodeSuite::coordinate_system[MAX_COORDINATE_SYSTEMS][XYZ];
|
||||
#endif
|
||||
|
||||
#if HAS_LEVELING && ENABLED(G29_RETRY_AND_RECOVER)
|
||||
#include "../feature/bedlevel/bedlevel.h"
|
||||
#include "../module/planner.h"
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Set target_extruder from the T parameter or the active_extruder
|
||||
*
|
||||
@ -136,34 +131,37 @@ void GcodeSuite::dwell(millis_t time) {
|
||||
*/
|
||||
#if HAS_LEVELING && ENABLED(G29_RETRY_AND_RECOVER)
|
||||
|
||||
#ifndef G29_MAX_RETRIES
|
||||
#define G29_MAX_RETRIES 0
|
||||
#endif
|
||||
|
||||
void GcodeSuite::G29_with_retry() {
|
||||
set_bed_leveling_enabled(false);
|
||||
for (uint8_t retries_left = G29_MAX_RETRIES;;) {
|
||||
G29();
|
||||
if (planner.leveling_active || !retries_left--) break;
|
||||
#ifdef G29_ACTION_ON_RECOVER
|
||||
SERIAL_ECHOLNPGM("//action:" G29_ACTION_ON_RECOVER);
|
||||
#endif
|
||||
#ifdef G29_RECOVER_COMMANDS
|
||||
process_subcommands_now_P(PSTR(G29_RECOVER_COMMANDS));
|
||||
#endif
|
||||
}
|
||||
if (planner.leveling_active) {
|
||||
#ifdef G29_SUCCESS_COMMANDS
|
||||
process_subcommands_now_P(PSTR(G29_SUCCESS_COMMANDS));
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
#ifdef G29_FAILURE_COMMANDS
|
||||
process_subcommands_now_P(PSTR(G29_FAILURE_COMMANDS));
|
||||
#endif
|
||||
#ifdef G29_ACTION_ON_FAILURE
|
||||
SERIAL_ECHOLNPGM("//action:" G29_ACTION_ON_FAILURE);
|
||||
#endif
|
||||
#if ENABLED(G29_HALT_ON_FAILURE)
|
||||
kill(PSTR(MSG_ERR_PROBING_FAILED));
|
||||
#endif
|
||||
uint8_t retries = G29_MAX_RETRIES;
|
||||
while (G29()) { // G29 should return true for failed probes ONLY
|
||||
if (retries--) {
|
||||
#ifdef G29_ACTION_ON_RECOVER
|
||||
SERIAL_ECHOLNPGM("//action:" G29_ACTION_ON_RECOVER);
|
||||
#endif
|
||||
#ifdef G29_RECOVER_COMMANDS
|
||||
process_subcommands_now_P(PSTR(G29_RECOVER_COMMANDS));
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
#ifdef G29_FAILURE_COMMANDS
|
||||
process_subcommands_now_P(PSTR(G29_FAILURE_COMMANDS));
|
||||
#endif
|
||||
#ifdef G29_ACTION_ON_FAILURE
|
||||
SERIAL_ECHOLNPGM("//action:" G29_ACTION_ON_FAILURE);
|
||||
#endif
|
||||
#if ENABLED(G29_HALT_ON_FAILURE)
|
||||
kill(PSTR(MSG_ERR_PROBING_FAILED));
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
}
|
||||
#ifdef G29_SUCCESS_COMMANDS
|
||||
process_subcommands_now_P(PSTR(G29_SUCCESS_COMMANDS));
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif // HAS_LEVELING && G29_RETRY_AND_RECOVER
|
||||
|
Reference in New Issue
Block a user