Implement M0/M1 for EMERGENCY_PARSER
This commit is contained in:
parent
786d1afb72
commit
c5fa70809b
|
@ -266,6 +266,10 @@ extern bool axis_known_position[XYZ]; // axis[n].is_known
|
||||||
extern bool axis_homed[XYZ]; // axis[n].is_homed
|
extern bool axis_homed[XYZ]; // axis[n].is_homed
|
||||||
extern volatile bool wait_for_heatup;
|
extern volatile bool wait_for_heatup;
|
||||||
|
|
||||||
|
#if ENABLED(EMERGENCY_PARSER) && DISABLED(ULTIPANEL)
|
||||||
|
extern volatile bool wait_for_user;
|
||||||
|
#endif
|
||||||
|
|
||||||
extern float current_position[NUM_AXIS];
|
extern float current_position[NUM_AXIS];
|
||||||
extern float position_shift[XYZ];
|
extern float position_shift[XYZ];
|
||||||
extern float home_offset[XYZ];
|
extern float home_offset[XYZ];
|
||||||
|
|
|
@ -509,6 +509,9 @@ MarlinSerial customizedSerial;
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case state_M108:
|
case state_M108:
|
||||||
wait_for_heatup = false;
|
wait_for_heatup = false;
|
||||||
|
#if DISABLED(ULTIPANEL)
|
||||||
|
wait_for_user = false;
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
case state_M112:
|
case state_M112:
|
||||||
kill(PSTR(MSG_KILLED));
|
kill(PSTR(MSG_KILLED));
|
||||||
|
|
|
@ -351,6 +351,10 @@ static bool relative_mode = false;
|
||||||
|
|
||||||
volatile bool wait_for_heatup = true;
|
volatile bool wait_for_heatup = true;
|
||||||
|
|
||||||
|
#if ENABLED(EMERGENCY_PARSER) && DISABLED(ULTIPANEL)
|
||||||
|
wait_for_user = false;
|
||||||
|
#endif
|
||||||
|
|
||||||
const char errormagic[] PROGMEM = "Error:";
|
const char errormagic[] PROGMEM = "Error:";
|
||||||
const char echomagic[] PROGMEM = "echo:";
|
const char echomagic[] PROGMEM = "echo:";
|
||||||
const char axis_codes[NUM_AXIS] = {'X', 'Y', 'Z', 'E'};
|
const char axis_codes[NUM_AXIS] = {'X', 'Y', 'Z', 'E'};
|
||||||
|
@ -3815,7 +3819,7 @@ inline void gcode_G92() {
|
||||||
sync_plan_position_e();
|
sync_plan_position_e();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLED(ULTIPANEL)
|
#if ENABLED(ULTIPANEL) || ENABLED(EMERGENCY_PARSER)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* M0: Unconditional stop - Wait for user button press on LCD
|
* M0: Unconditional stop - Wait for user button press on LCD
|
||||||
|
@ -3835,38 +3839,68 @@ inline void gcode_G92() {
|
||||||
hasS = codenum > 0;
|
hasS = codenum > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!hasP && !hasS && *args != '\0')
|
#if ENABLED(ULTIPANEL)
|
||||||
lcd_setstatus(args, true);
|
|
||||||
else {
|
if (!hasP && !hasS && *args != '\0')
|
||||||
LCD_MESSAGEPGM(MSG_USERWAIT);
|
lcd_setstatus(args, true);
|
||||||
#if ENABLED(LCD_PROGRESS_BAR) && PROGRESS_MSG_EXPIRE > 0
|
else {
|
||||||
dontExpireStatus();
|
LCD_MESSAGEPGM(MSG_USERWAIT);
|
||||||
#endif
|
#if ENABLED(LCD_PROGRESS_BAR) && PROGRESS_MSG_EXPIRE > 0
|
||||||
}
|
dontExpireStatus();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
lcd_ignore_click();
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
if (!hasP && !hasS && *args != '\0') {
|
||||||
|
SERIAL_ECHO_START;
|
||||||
|
SERIAL_ECHOLN(args);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
lcd_ignore_click();
|
|
||||||
stepper.synchronize();
|
stepper.synchronize();
|
||||||
refresh_cmd_timeout();
|
refresh_cmd_timeout();
|
||||||
if (codenum > 0) {
|
|
||||||
codenum += previous_cmd_ms; // wait until this time for a click
|
#if ENABLED(ULTIPANEL)
|
||||||
|
|
||||||
|
if (codenum > 0) {
|
||||||
|
codenum += previous_cmd_ms; // wait until this time for a click
|
||||||
|
KEEPALIVE_STATE(PAUSED_FOR_USER);
|
||||||
|
while (PENDING(millis(), codenum) && !lcd_clicked()) idle();
|
||||||
|
lcd_ignore_click(false);
|
||||||
|
}
|
||||||
|
else if (lcd_detected()) {
|
||||||
|
KEEPALIVE_STATE(PAUSED_FOR_USER);
|
||||||
|
while (!lcd_clicked()) idle();
|
||||||
|
}
|
||||||
|
else return;
|
||||||
|
|
||||||
|
if (IS_SD_PRINTING)
|
||||||
|
LCD_MESSAGEPGM(MSG_RESUMING);
|
||||||
|
else
|
||||||
|
LCD_MESSAGEPGM(WELCOME_MSG);
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
KEEPALIVE_STATE(PAUSED_FOR_USER);
|
KEEPALIVE_STATE(PAUSED_FOR_USER);
|
||||||
while (PENDING(millis(), codenum) && !lcd_clicked()) idle();
|
wait_for_user = true;
|
||||||
KEEPALIVE_STATE(IN_HANDLER);
|
|
||||||
lcd_ignore_click(false);
|
if (codenum > 0) {
|
||||||
}
|
codenum += previous_cmd_ms; // wait until this time for an M108
|
||||||
else {
|
while (PENDING(millis(), codenum) && wait_for_user) idle();
|
||||||
if (!lcd_detected()) return;
|
}
|
||||||
KEEPALIVE_STATE(PAUSED_FOR_USER);
|
else while (wait_for_user) idle();
|
||||||
while (!lcd_clicked()) idle();
|
|
||||||
KEEPALIVE_STATE(IN_HANDLER);
|
wait_for_user = false;
|
||||||
}
|
|
||||||
if (IS_SD_PRINTING)
|
#endif
|
||||||
LCD_MESSAGEPGM(MSG_RESUMING);
|
|
||||||
else
|
KEEPALIVE_STATE(IN_HANDLER);
|
||||||
LCD_MESSAGEPGM(WELCOME_MSG);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // ULTIPANEL
|
#endif // ULTIPANEL || EMERGENCY_PARSER
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* M17: Enable power on all stepper motors
|
* M17: Enable power on all stepper motors
|
||||||
|
|
Loading…
Reference in a new issue