[2.0.x] Automatically reset stepper timeout (#10179)

* Automatically reset stepper timeout in manage_inactivity

Any code that adds moves to the planner can skip resetting the stepper timeout. We can let `idle` / `manage_inactivity` reset the timer whenever it detects any moves in the planner.

* blocks_queued => has_blocks_queued
This commit is contained in:
Scott Lahteine
2018-03-21 19:30:06 -05:00
committed by GitHub
parent 97e8a6ebd9
commit 1cb810ff1c
16 changed files with 47 additions and 62 deletions

View File

@ -43,7 +43,7 @@ GcodeSuite gcode;
#include "../Marlin.h" // for idle() and suspend_auto_report
uint8_t GcodeSuite::target_extruder;
millis_t GcodeSuite::previous_cmd_ms;
millis_t GcodeSuite::previous_move_ms;
bool GcodeSuite::axis_relative_modes[] = AXIS_RELATIVE_MODES;
@ -121,8 +121,7 @@ void GcodeSuite::get_destination_from_command() {
* Dwell waits immediately. It does not synchronize. Use M400 instead of G4
*/
void GcodeSuite::dwell(millis_t time) {
refresh_cmd_timeout();
time += previous_cmd_ms;
time += millis();
while (PENDING(millis(), time)) idle();
}
@ -735,6 +734,8 @@ void GcodeSuite::process_next_command() {
#endif
}
reset_stepper_timeout(); // Keep steppers powered
// Parse the next command in the queue
parser.parse(current_command);
process_parsed_command();