From 56e531d40a1c81aff1004ab3fd3f8b1b8519718c Mon Sep 17 00:00:00 2001 From: Yuri D'Elia Date: Thu, 24 Jun 2021 17:35:55 +0200 Subject: [PATCH] Improve/fix D23 for M2.5/S printers - Move D23 into it's own function inside Dcodes - Correctly include a break in the switch statement - Show the dumper status (enabled/disabled) after toggling - Allow to generate an immediate dump via g-code using D23 E for symmetry with D20 E --- Firmware/Dcodes.cpp | 12 ++++++++++++ Firmware/Dcodes.h | 3 ++- Firmware/Marlin_main.cpp | 6 ++++-- 3 files changed, 18 insertions(+), 3 deletions(-) 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