mirror of
https://github.com/MarlinFirmware/Marlin.git
synced 2024-11-30 15:26:18 +00:00
🚸 Emergency Parse M524 (#24761)
This commit is contained in:
parent
aa28358267
commit
2fc97aa240
@ -33,6 +33,9 @@
|
||||
// Static data members
|
||||
bool EmergencyParser::killed_by_M112, // = false
|
||||
EmergencyParser::quickstop_by_M410,
|
||||
#if ENABLED(SDSUPPORT)
|
||||
EmergencyParser::sd_abort_by_M524,
|
||||
#endif
|
||||
EmergencyParser::enabled;
|
||||
|
||||
#if ENABLED(HOST_PROMPT_SUPPORT)
|
||||
|
@ -49,7 +49,7 @@ class EmergencyParser {
|
||||
|
||||
public:
|
||||
|
||||
// Currently looking for: M108, M112, M410, M876 S[0-9], S000, P000, R000
|
||||
// Currently looking for: M108, M112, M410, M524, M876 S[0-9], S000, P000, R000
|
||||
enum State : uint8_t {
|
||||
EP_RESET,
|
||||
EP_N,
|
||||
@ -58,6 +58,9 @@ public:
|
||||
EP_M10, EP_M108,
|
||||
EP_M11, EP_M112,
|
||||
EP_M4, EP_M41, EP_M410,
|
||||
#if ENABLED(SDSUPPORT)
|
||||
EP_M5, EP_M52, EP_M524,
|
||||
#endif
|
||||
#if ENABLED(HOST_PROMPT_SUPPORT)
|
||||
EP_M8, EP_M87, EP_M876, EP_M876S, EP_M876SN,
|
||||
#endif
|
||||
@ -76,6 +79,10 @@ public:
|
||||
static bool killed_by_M112;
|
||||
static bool quickstop_by_M410;
|
||||
|
||||
#if ENABLED(SDSUPPORT)
|
||||
static bool sd_abort_by_M524;
|
||||
#endif
|
||||
|
||||
#if ENABLED(HOST_PROMPT_SUPPORT)
|
||||
static uint8_t M876_reason;
|
||||
#endif
|
||||
@ -145,6 +152,9 @@ public:
|
||||
case ' ': break;
|
||||
case '1': state = EP_M1; break;
|
||||
case '4': state = EP_M4; break;
|
||||
#if ENABLED(SDSUPPORT)
|
||||
case '5': state = EP_M5; break;
|
||||
#endif
|
||||
#if ENABLED(HOST_PROMPT_SUPPORT)
|
||||
case '8': state = EP_M8; break;
|
||||
#endif
|
||||
@ -165,6 +175,11 @@ public:
|
||||
case EP_M4: state = (c == '1') ? EP_M41 : EP_IGNORE; break;
|
||||
case EP_M41: state = (c == '0') ? EP_M410 : EP_IGNORE; break;
|
||||
|
||||
#if ENABLED(SDSUPPORT)
|
||||
case EP_M5: state = (c == '2') ? EP_M52 : EP_IGNORE; break;
|
||||
case EP_M52: state = (c == '4') ? EP_M524 : EP_IGNORE; break;
|
||||
#endif
|
||||
|
||||
#if ENABLED(HOST_PROMPT_SUPPORT)
|
||||
|
||||
case EP_M8: state = (c == '7') ? EP_M87 : EP_IGNORE; break;
|
||||
@ -200,6 +215,9 @@ public:
|
||||
case EP_M108: wait_for_user = wait_for_heatup = false; break;
|
||||
case EP_M112: killed_by_M112 = true; break;
|
||||
case EP_M410: quickstop_by_M410 = true; break;
|
||||
#if ENABLED(SDSUPPORT)
|
||||
case EP_M524: sd_abort_by_M524 = true; break;
|
||||
#endif
|
||||
#if ENABLED(HOST_PROMPT_SUPPORT)
|
||||
case EP_M876SN: hostui.handle_response(M876_reason); break;
|
||||
#endif
|
||||
|
@ -1848,6 +1848,12 @@ void Temperature::task() {
|
||||
emergency_parser.quickstop_by_M410 = false; // quickstop_stepper may call idle so clear this now!
|
||||
quickstop_stepper();
|
||||
}
|
||||
|
||||
if (emergency_parser.sd_abort_by_M524) { // abort SD print immediately
|
||||
emergency_parser.sd_abort_by_M524 = false;
|
||||
card.flag.abort_sd_printing = true;
|
||||
gcode.process_subcommands_now(F("M524"));
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!updateTemperaturesIfReady()) return; // Will also reset the watchdog if temperatures are ready
|
||||
|
Loading…
Reference in New Issue
Block a user