From 773a894209f17c81c7960e0ee80582e8dff89fb1 Mon Sep 17 00:00:00 2001 From: InsanityAutomation Date: Sun, 26 Mar 2023 19:21:35 -0400 Subject: [PATCH] Add IS and Runout Mode ExtUI Hooks --- Marlin/src/lcd/extui/ui_api.cpp | 33 ++++++++++++++++++++++++++++++++- Marlin/src/lcd/extui/ui_api.h | 9 +++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/Marlin/src/lcd/extui/ui_api.cpp b/Marlin/src/lcd/extui/ui_api.cpp index 15f776e870..8e5ad560ac 100644 --- a/Marlin/src/lcd/extui/ui_api.cpp +++ b/Marlin/src/lcd/extui/ui_api.cpp @@ -683,12 +683,23 @@ namespace ExtUI { } #if HAS_FILAMENT_SENSOR - bool getFilamentRunoutEnabled(const extruder_t extruder/*=E0*/) { return runout.enabled[extruder]; } + bool getFilamentRunoutEnabled(const extruder_t extruder/*=E0*/) { return (runout.enabled[extruder] && (runout.mode[extruder]!=0)); } void setFilamentRunoutEnabled(const bool value, const extruder_t extruder/*=E0*/) { runout.enabled[extruder] = value; } bool getFilamentRunoutState() { return runout.filament_ran_out; } void setFilamentRunoutState(const bool value) { runout.filament_ran_out = value; } float getFilamentRunoutDistance_mm() { return runout.runout_distance(); } void setFilamentRunoutDistance_mm(const_float_t value) { runout.set_runout_distance(constrain(value, 0, 999)); } + int getRunoutMode(const extruder_t extruder/*=E0*/){ + return (int)runout.mode[extruder]; + } + void setRunoutMode(const int mode, const extruder_t extruder/*=E0*/){ + if((mode >= 0 && mode <=2) || mode==7) { + runout.mode[extruder] = (RunoutMode)mode; + runout.setup(); + } + } + + #endif #if ENABLED(CASE_LIGHT_ENABLE) @@ -723,6 +734,26 @@ namespace ExtUI { } #endif + #if HAS_SHAPING + float getShapingZeta(const axis_t axis) { + return stepper.get_shaping_damping_ratio(AxisEnum(axis)); + } + void setShapingZeta(const float zeta, const axis_t axis) { + if (WITHIN(zeta, 0, 1)) { + stepper.set_shaping_damping_ratio(AxisEnum(axis), zeta); + } + } + float getShapingFrequency(const axis_t axis) { + return stepper.get_shaping_frequency(AxisEnum(axis)); + } + void setShapingFrequency(const float freq, const axis_t axis) { + constexpr float min_freq = float(uint32_t(STEPPER_TIMER_RATE) / 2) / shaping_time_t(-2); + if (freq == 0.0f || freq > min_freq) { + stepper.set_shaping_frequency(AxisEnum(axis), freq); + } + } + #endif + #if HAS_JUNCTION_DEVIATION float getJunctionDeviation_mm() { return planner.junction_deviation_mm; } diff --git a/Marlin/src/lcd/extui/ui_api.h b/Marlin/src/lcd/extui/ui_api.h index 530138c707..d2ecda9c2f 100644 --- a/Marlin/src/lcd/extui/ui_api.h +++ b/Marlin/src/lcd/extui/ui_api.h @@ -250,6 +250,13 @@ namespace ExtUI { void setLinearAdvance_mm_mm_s(const_float_t, const extruder_t); #endif + #if HAS_SHAPING + float getShapingZeta(const axis_t); + void setShapingZeta(const float, const axis_t); + float getShapingFrequency(const axis_t); + void setShapingFrequency(const float, const axis_t); + #endif + #if HAS_JUNCTION_DEVIATION float getJunctionDeviation_mm(); void setJunctionDeviation_mm(const_float_t); @@ -306,6 +313,8 @@ namespace ExtUI { void setFilamentRunoutState(const bool); float getFilamentRunoutDistance_mm(); void setFilamentRunoutDistance_mm(const_float_t); + int getRunoutMode(const extruder_t extruder=E0); + void setRunoutMode(const int, const extruder_t extruder=E0); #endif #if ENABLED(CASE_LIGHT_ENABLE)