From b117f00e91dad214d17b494c4c979f644ceb3897 Mon Sep 17 00:00:00 2001 From: Dano Pernis Date: Mon, 22 Jul 2024 13:09:39 +0200 Subject: [PATCH] Add dev menu items for manipulating IS wizard results Especially on XL, it is quite annoying to test various input shaper calibration behaviours when doing factory reset. This should be reverted if we ever need more FLASH memory and/or after product managers stop rapidly changing specs. --- src/gui/MItem_input_shaper.cpp | 11 +++++++++ src/gui/MItem_input_shaper.hpp | 35 ++++++++++++++++++++++++++++ src/gui/screen_menu_input_shaper.hpp | 4 ++++ src/marlin_stubs/M1959.cpp | 11 +++++++++ 4 files changed, 61 insertions(+) diff --git a/src/gui/MItem_input_shaper.cpp b/src/gui/MItem_input_shaper.cpp index ad766e9a15..ba55eb4c24 100644 --- a/src/gui/MItem_input_shaper.cpp +++ b/src/gui/MItem_input_shaper.cpp @@ -115,6 +115,17 @@ MI_IS_CALIB::MI_IS_CALIB() void MI_IS_CALIB::click([[maybe_unused]] IWindowMenu &window_menu) { marlin_client::gcode("M1959"); } + +// dev item, no need to translate +MI_IS_CALIB_RESULT::MI_IS_CALIB_RESULT(const char *label, const char *gcode) + : IWindowMenuItem { _(label), nullptr, is_enabled_t::yes, is_hidden_t::dev } + , gcode { gcode } { +} + +void MI_IS_CALIB_RESULT::click(IWindowMenu &) { + marlin_client::gcode(gcode); +} + #endif MI_IS_RESTORE_DEFAULTS::MI_IS_RESTORE_DEFAULTS() diff --git a/src/gui/MItem_input_shaper.hpp b/src/gui/MItem_input_shaper.hpp index b9ab466bc0..74ec6b1cca 100644 --- a/src/gui/MItem_input_shaper.hpp +++ b/src/gui/MItem_input_shaper.hpp @@ -109,4 +109,39 @@ class MI_IS_CALIB : public IWindowMenuItem { protected: virtual void click(IWindowMenu &window_menu) override; }; + +class MI_IS_CALIB_RESULT : public IWindowMenuItem { +private: + const char *gcode; + +protected: + MI_IS_CALIB_RESULT(const char *label, const char *gcode); + + virtual void click(IWindowMenu &) final; +}; + +class MI_IS_CALIB_RESULT_UNKNOWN final : public MI_IS_CALIB_RESULT { +public: + MI_IS_CALIB_RESULT_UNKNOWN() + : MI_IS_CALIB_RESULT("Set Result Unknown", "M1959 W0") {} +}; + +class MI_IS_CALIB_RESULT_SKIPPED final : public MI_IS_CALIB_RESULT { +public: + MI_IS_CALIB_RESULT_SKIPPED() + : MI_IS_CALIB_RESULT("Set Result Skipped", "M1959 W1") {} +}; + +class MI_IS_CALIB_RESULT_PASSED final : public MI_IS_CALIB_RESULT { +public: + MI_IS_CALIB_RESULT_PASSED() + : MI_IS_CALIB_RESULT("Set Result Passed", "M1959 W2") {} +}; + +class MI_IS_CALIB_RESULT_FAILED final : public MI_IS_CALIB_RESULT { +public: + MI_IS_CALIB_RESULT_FAILED() + : MI_IS_CALIB_RESULT("Set Result Failed", "M1959 W3") {} +}; + #endif diff --git a/src/gui/screen_menu_input_shaper.hpp b/src/gui/screen_menu_input_shaper.hpp index d4583ce274..b001b643ad 100644 --- a/src/gui/screen_menu_input_shaper.hpp +++ b/src/gui/screen_menu_input_shaper.hpp @@ -16,6 +16,10 @@ using ScreenMenuInputShaper = ScreenMenu< MI_RETURN, #if HAS_INPUT_SHAPER_CALIBRATION() MI_IS_CALIB, + MI_IS_CALIB_RESULT_UNKNOWN, + MI_IS_CALIB_RESULT_SKIPPED, + MI_IS_CALIB_RESULT_PASSED, + MI_IS_CALIB_RESULT_FAILED, #endif MI_IS_ENABLE_EDITING, MI_IS_X_ONOFF, diff --git a/src/marlin_stubs/M1959.cpp b/src/marlin_stubs/M1959.cpp index aa06030829..029cddfee0 100644 --- a/src/marlin_stubs/M1959.cpp +++ b/src/marlin_stubs/M1959.cpp @@ -585,6 +585,17 @@ static void M1959_internal(PhasesInputShaperCalibration phase) { namespace PrusaGcodeSuite { void M1959() { + if (parser.seen('W')) { + switch (const uint8_t w = parser.value_byte()) { + case 0: + case 1: + case 2: + case 3: + set_test_result(static_cast(w)); + } + return; + } + switch (get_test_result()) { case TestResult_Unknown: // Do not run calibration on the initial wizard after factory reset,