diff --git a/Firmware/Dcodes.cpp b/Firmware/Dcodes.cpp index 8bd019e69..f9f3c5895 100644 --- a/Firmware/Dcodes.cpp +++ b/Firmware/Dcodes.cpp @@ -974,6 +974,18 @@ void dcode_22() bool emergency_serial_dump = false; +void dcode_23() +{ + if(code_seen('E')) + serial_dump_and_reset(dump_crash_reason::manual); + else + { + emergency_serial_dump = !code_seen('R'); + SERIAL_ECHOPGM("serial dump "); + SERIAL_ECHOLNRPGM(emergency_serial_dump? _N("enabled"): _N("disabled")); + } +} + void __attribute__((noinline)) serial_dump_and_reset(dump_crash_reason reason) { uint16_t sp; diff --git a/Firmware/Dcodes.h b/Firmware/Dcodes.h index c4b470e4b..964f6d748 100644 --- a/Firmware/Dcodes.h +++ b/Firmware/Dcodes.h @@ -37,7 +37,8 @@ extern void dcode_22(); //D22 - Clear crash dump state #ifdef EMERGENCY_SERIAL_DUMP #include "xflash_dump.h" -extern bool emergency_serial_dump; +extern void dcode_23(); //D23 - Request/generate an online serial crash dump +extern bool emergency_serial_dump; //emergency dump enabled flag extern void serial_dump_and_reset(dump_crash_reason); #endif diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 5aca69bdc..d1bc83a15 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -9382,12 +9382,14 @@ Sigma_Exit: When online dumps are enabled, the FW will dump memory on the serial before resetting. #### Usage - D23 [R] + D23 [E] [R] #### Parameters + - `E` - Perform an emergency crash dump (resets the printer). - `R` - Disable online dumps. */ case 23: { - emergency_serial_dump = !code_seen('R'); + dcode_23(); + break; }; #endif