From 49de8b245078f497b07ea1c514ed43eef49760b2 Mon Sep 17 00:00:00 2001 From: Sophist <3001893+Sophist-UK@users.noreply.github.com> Date: Thu, 14 Mar 2024 17:20:13 +0000 Subject: [PATCH 1/9] Enhance M115 with additional capabilities and a temperature report --- Marlin/Configuration_adv.h | 1 + Marlin/src/gcode/host/M115.cpp | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 299c6418f3..b3320abee7 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -3919,6 +3919,7 @@ #define EXTENDED_CAPABILITIES_REPORT #if ENABLED(EXTENDED_CAPABILITIES_REPORT) //#define M115_GEOMETRY_REPORT + //#define M115_TEMPERATURE_REPORT #endif #endif diff --git a/Marlin/src/gcode/host/M115.cpp b/Marlin/src/gcode/host/M115.cpp index 0d38d3147b..386c416eea 100644 --- a/Marlin/src/gcode/host/M115.cpp +++ b/Marlin/src/gcode/host/M115.cpp @@ -245,6 +245,21 @@ void GcodeSuite::M115() { // CONFIG_EXPORT cap_line(F("CONFIG_EXPORT"), ENABLED(CONFIGURATION_EMBEDDING)); + // FSR_PROBING + cap_line(F("FSR_PROBING"), ENABLED(HAS_FSR) || ENABLED(HAS_Z_MIN_ADC)); + + // SINGLE_NOZZLE + cap_line(F("SINGLE_NOZZLE"), ENABLED(SINGLENOZZLE)); + + // DIRECT_DRIVE + cap_line(F("DIRECT_DRIVE"), ENABLED(ADVANCED_PAUSE_FEATURE) && FILAMENT_CHANGE_UNLOAD_LENGTH < 100); + + // HEATED_BED + cap_line(F("HEATED_BED"), ENABLED(HAS_HEATED_BED)); + + // DELTA + cap_line(F("DELTA"), ENABLED(DELTA)); + // Machine Geometry #if ENABLED(M115_GEOMETRY_REPORT) constexpr xyz_pos_t bmin{0}, @@ -295,6 +310,21 @@ void GcodeSuite::M115() { ); #endif + // Temperatures + #if ENABLED(M115_TEMPERATURE_REPORT) + SERIAL_ECHOLNPGM( + "temperatures:{" + "t0:{min:", HEATER_0_MINTEMP, ",max:", HEATER_0_MAXTEMP, "}" + #if TEMP_SENSOR_1 + ",t1:{min:", HEATER_1_MINTEMP, ",max:", HEATER_1_MAXTEMP, "}" + #endif + #if TEMP_SENSOR_BED + ",bed:{min:", BED_MINTEMP, ",max:", BED_MAXTEMP, "}" + #endif + "}" + ); + #endif + #endif // EXTENDED_CAPABILITIES_REPORT } From 8573bbb33d7c259cf11cd0c401f8057922a2ee26 Mon Sep 17 00:00:00 2001 From: Sophist <3001893+Sophist-UK@users.noreply.github.com> Date: Thu, 14 Mar 2024 17:56:51 +0000 Subject: [PATCH 2/9] Fix bug if FILAMENT_CHANGE_UNLOAD_LENGTH not defined. --- Marlin/src/gcode/host/M115.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/gcode/host/M115.cpp b/Marlin/src/gcode/host/M115.cpp index 386c416eea..0d645a75f1 100644 --- a/Marlin/src/gcode/host/M115.cpp +++ b/Marlin/src/gcode/host/M115.cpp @@ -252,7 +252,7 @@ void GcodeSuite::M115() { cap_line(F("SINGLE_NOZZLE"), ENABLED(SINGLENOZZLE)); // DIRECT_DRIVE - cap_line(F("DIRECT_DRIVE"), ENABLED(ADVANCED_PAUSE_FEATURE) && FILAMENT_CHANGE_UNLOAD_LENGTH < 100); + cap_line(F("DIRECT_DRIVE"), ENABLED(ADVANCED_PAUSE_FEATURE) && ENABLED(FILAMENT_CHANGE_UNLOAD_LENGTH) && FILAMENT_CHANGE_UNLOAD_LENGTH < 100); // HEATED_BED cap_line(F("HEATED_BED"), ENABLED(HAS_HEATED_BED)); From bcdb0a441507909113d1fa4b60e816561dd5e732 Mon Sep 17 00:00:00 2001 From: Sophist <3001893+Sophist-UK@users.noreply.github.com> Date: Thu, 14 Mar 2024 17:59:58 +0000 Subject: [PATCH 3/9] Remove DIRECT_DRIVE report --- Marlin/src/gcode/host/M115.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/Marlin/src/gcode/host/M115.cpp b/Marlin/src/gcode/host/M115.cpp index 0d645a75f1..0680086516 100644 --- a/Marlin/src/gcode/host/M115.cpp +++ b/Marlin/src/gcode/host/M115.cpp @@ -251,9 +251,6 @@ void GcodeSuite::M115() { // SINGLE_NOZZLE cap_line(F("SINGLE_NOZZLE"), ENABLED(SINGLENOZZLE)); - // DIRECT_DRIVE - cap_line(F("DIRECT_DRIVE"), ENABLED(ADVANCED_PAUSE_FEATURE) && ENABLED(FILAMENT_CHANGE_UNLOAD_LENGTH) && FILAMENT_CHANGE_UNLOAD_LENGTH < 100); - // HEATED_BED cap_line(F("HEATED_BED"), ENABLED(HAS_HEATED_BED)); From e8a80485b3648d277101d10af30e0a2452937623 Mon Sep 17 00:00:00 2001 From: Sophist <3001893+Sophist-UK@users.noreply.github.com> Date: Thu, 14 Mar 2024 18:31:53 +0000 Subject: [PATCH 4/9] Remove duplicate DELTA info, and FSR_PROBING (which is a Dagoma specific enhancement). --- Marlin/src/gcode/host/M115.cpp | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Marlin/src/gcode/host/M115.cpp b/Marlin/src/gcode/host/M115.cpp index 0680086516..c5ffba4534 100644 --- a/Marlin/src/gcode/host/M115.cpp +++ b/Marlin/src/gcode/host/M115.cpp @@ -245,18 +245,12 @@ void GcodeSuite::M115() { // CONFIG_EXPORT cap_line(F("CONFIG_EXPORT"), ENABLED(CONFIGURATION_EMBEDDING)); - // FSR_PROBING - cap_line(F("FSR_PROBING"), ENABLED(HAS_FSR) || ENABLED(HAS_Z_MIN_ADC)); - // SINGLE_NOZZLE cap_line(F("SINGLE_NOZZLE"), ENABLED(SINGLENOZZLE)); // HEATED_BED cap_line(F("HEATED_BED"), ENABLED(HAS_HEATED_BED)); - // DELTA - cap_line(F("DELTA"), ENABLED(DELTA)); - // Machine Geometry #if ENABLED(M115_GEOMETRY_REPORT) constexpr xyz_pos_t bmin{0}, From db615bc9421f286e6793f9f8800cfbbd8ec8672c Mon Sep 17 00:00:00 2001 From: Sophist <3001893+Sophist-UK@users.noreply.github.com> Date: Thu, 14 Mar 2024 18:36:30 +0000 Subject: [PATCH 5/9] Support up to 8 hotends --- Marlin/src/gcode/host/M115.cpp | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/Marlin/src/gcode/host/M115.cpp b/Marlin/src/gcode/host/M115.cpp index c5ffba4534..da3b534fdb 100644 --- a/Marlin/src/gcode/host/M115.cpp +++ b/Marlin/src/gcode/host/M115.cpp @@ -307,10 +307,28 @@ void GcodeSuite::M115() { "temperatures:{" "t0:{min:", HEATER_0_MINTEMP, ",max:", HEATER_0_MAXTEMP, "}" #if TEMP_SENSOR_1 - ",t1:{min:", HEATER_1_MINTEMP, ",max:", HEATER_1_MAXTEMP, "}" + ",t1:{min:", HEATER_1_MINTEMP, ",max:", HEATER_1_MAXTEMP, "}" + #endif + #if TEMP_SENSOR_2 + ",t2:{min:", HEATER_2_MINTEMP, ",max:", HEATER_2_MAXTEMP, "}" + #endif + #if TEMP_SENSOR_3 + ",t3:{min:", HEATER_3_MINTEMP, ",max:", HEATER_3_MAXTEMP, "}" + #endif + #if TEMP_SENSOR_4 + ",t4:{min:", HEATER_4_MINTEMP, ",max:", HEATER_4_MAXTEMP, "}" + #endif + #if TEMP_SENSOR_5 + ",t5:{min:", HEATER_5_MINTEMP, ",max:", HEATER_5_MAXTEMP, "}" + #endif + #if TEMP_SENSOR_6 + ",t6:{min:", HEATER_6_MINTEMP, ",max:", HEATER_6_MAXTEMP, "}" + #endif + #if TEMP_SENSOR_7 + ",t7:{min:", HEATER_7_MINTEMP, ",max:", HEATER_7_MAXTEMP, "}" #endif #if TEMP_SENSOR_BED - ",bed:{min:", BED_MINTEMP, ",max:", BED_MAXTEMP, "}" + ",bed:{min:", BED_MINTEMP, ",max:", BED_MAXTEMP, "}" #endif "}" ); From 7323ff21bd2e32497bde3fcb8d45bddbf822814f Mon Sep 17 00:00:00 2001 From: Sophist <3001893+Sophist-UK@users.noreply.github.com> Date: Thu, 14 Mar 2024 20:02:06 +0000 Subject: [PATCH 6/9] Add temp reports for other sensors --- Marlin/src/gcode/host/M115.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Marlin/src/gcode/host/M115.cpp b/Marlin/src/gcode/host/M115.cpp index da3b534fdb..cd361a2839 100644 --- a/Marlin/src/gcode/host/M115.cpp +++ b/Marlin/src/gcode/host/M115.cpp @@ -330,6 +330,21 @@ void GcodeSuite::M115() { #if TEMP_SENSOR_BED ",bed:{min:", BED_MINTEMP, ",max:", BED_MAXTEMP, "}" #endif + #if TEMP_SENSOR_CHAMBER + ",chamber:{min:", CHAMBER_MINTEMP, ",max:", CHAMBER_MAXTEMP, "}" + #endif + #if TEMP_SENSOR_COOLER + ",cooler:{min:", COOLER_MINTEMP, ",max:", COOLER_MAXTEMP, "}" + #endif + #if TEMP_SENSOR_BOARD + ",board:{min:", BOARD_MINTEMP, ",max:", BOARD_MAXTEMP, "}" + #endif + #if TEMP_SENSOR_PROBE + ",probe:{min:", PROBE_MINTEMP, ",max:", PROBE_MAXTEMP, "}" + #endif + #if TEMP_SENSOR_SOC + ",soc:{max:", SOC_MAXTEMP, "}" + #endif "}" ); #endif From ff491b9e6b70be400f7d2623835819b3ff4eb69e Mon Sep 17 00:00:00 2001 From: Sophist <3001893+Sophist-UK@users.noreply.github.com> Date: Thu, 14 Mar 2024 20:04:12 +0000 Subject: [PATCH 7/9] Remove SENSOR probe which has neither min nor max. --- Marlin/src/gcode/host/M115.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Marlin/src/gcode/host/M115.cpp b/Marlin/src/gcode/host/M115.cpp index cd361a2839..5dbc9b246e 100644 --- a/Marlin/src/gcode/host/M115.cpp +++ b/Marlin/src/gcode/host/M115.cpp @@ -248,6 +248,9 @@ void GcodeSuite::M115() { // SINGLE_NOZZLE cap_line(F("SINGLE_NOZZLE"), ENABLED(SINGLENOZZLE)); + // DIRECT_DRIVE + cap_line(F("DIRECT_DRIVE"), ENABLED(ADVANCED_PAUSE_FEATURE) && TERN(FILAMENT_CHANGE_UNLOAD_LENGTH < 100); + // HEATED_BED cap_line(F("HEATED_BED"), ENABLED(HAS_HEATED_BED)); @@ -339,9 +342,6 @@ void GcodeSuite::M115() { #if TEMP_SENSOR_BOARD ",board:{min:", BOARD_MINTEMP, ",max:", BOARD_MAXTEMP, "}" #endif - #if TEMP_SENSOR_PROBE - ",probe:{min:", PROBE_MINTEMP, ",max:", PROBE_MAXTEMP, "}" - #endif #if TEMP_SENSOR_SOC ",soc:{max:", SOC_MAXTEMP, "}" #endif From c8b46e9e30a8b85d03f06658499c5f05f5df5448 Mon Sep 17 00:00:00 2001 From: Sophist <3001893+Sophist-UK@users.noreply.github.com> Date: Thu, 14 Mar 2024 22:06:48 +0000 Subject: [PATCH 8/9] Remove DIRECT_DRIVE again. Grrrrr. --- Marlin/src/gcode/host/M115.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/Marlin/src/gcode/host/M115.cpp b/Marlin/src/gcode/host/M115.cpp index 5dbc9b246e..e96b34cafe 100644 --- a/Marlin/src/gcode/host/M115.cpp +++ b/Marlin/src/gcode/host/M115.cpp @@ -248,9 +248,6 @@ void GcodeSuite::M115() { // SINGLE_NOZZLE cap_line(F("SINGLE_NOZZLE"), ENABLED(SINGLENOZZLE)); - // DIRECT_DRIVE - cap_line(F("DIRECT_DRIVE"), ENABLED(ADVANCED_PAUSE_FEATURE) && TERN(FILAMENT_CHANGE_UNLOAD_LENGTH < 100); - // HEATED_BED cap_line(F("HEATED_BED"), ENABLED(HAS_HEATED_BED)); From ae35bf4f193fc0716585b5e7eee58abcab01d887 Mon Sep 17 00:00:00 2001 From: Sophist <3001893+Sophist-UK@users.noreply.github.com> Date: Tue, 20 May 2025 22:41:24 +0100 Subject: [PATCH 9/9] Add more capability reports --- Marlin/Configuration_adv.h | 1 + Marlin/src/gcode/host/M115.cpp | 39 ++++++++++++++++++++++++++++++---- 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 1e6d3f00bd..08fe9774f8 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -3986,6 +3986,7 @@ // Include capabilities in M115 output #define EXTENDED_CAPABILITIES_REPORT #if ENABLED(EXTENDED_CAPABILITIES_REPORT) + //#define MINIMAL_CAP_LINES // Don't mention disabled capabilities //#define M115_GEOMETRY_REPORT //#define M115_TEMPERATURE_REPORT #endif diff --git a/Marlin/src/gcode/host/M115.cpp b/Marlin/src/gcode/host/M115.cpp index 0ff52a2e28..fd61ebf19b 100644 --- a/Marlin/src/gcode/host/M115.cpp +++ b/Marlin/src/gcode/host/M115.cpp @@ -39,8 +39,6 @@ #include "../../libs/hex_print.h" #endif -//#define MINIMAL_CAP_LINES // Don't even mention the disabled capabilities - #if ENABLED(EXTENDED_CAPABILITIES_REPORT) inline void cap_line(FSTR_P const name, const bool ena=true) { #if ENABLED(MINIMAL_CAP_LINES) @@ -122,10 +120,10 @@ void GcodeSuite::M115() { serial_index_t port = queue.ring_buffer.command_port(); // PAREN_COMMENTS - TERN_(PAREN_COMMENTS, cap_line(F("PAREN_COMMENTS"))); + cap_line(F("PAREN_COMMENTS"), ENABLED(PAREN_COMMENTS)); // QUOTED_STRINGS - TERN_(GCODE_QUOTED_STRINGS, cap_line(F("QUOTED_STRINGS"))); + cap_line(F("QUOTED_STRINGS"), ENABLED(GCODE_QUOTED_STRINGS)); // SERIAL_XON_XOFF cap_line(F("SERIAL_XON_XOFF"), ENABLED(SERIAL_XON_XOFF)); @@ -186,6 +184,9 @@ void GcodeSuite::M115() { // HOST ACTION COMMANDS (paused, resume, resumed, cancel, etc.) cap_line(F("HOST_ACTION_COMMANDS"), ENABLED(HOST_ACTION_COMMANDS)); + // HAS_DISPLAY + cap_line(F("DISPLAY"), ENABLED(HAS_DISPLAY)); + // PROMPT SUPPORT (M876) cap_line(F("PROMPT_SUPPORT"), ENABLED(HOST_PROMPT_SUPPORT)); @@ -227,6 +228,9 @@ void GcodeSuite::M115() { // ARC_SUPPORT (G2-G3) cap_line(F("ARCS"), ENABLED(ARC_SUPPORT)); + // BEZIER_CURVE_SUPPORT (G5) + cap_line(F("BEZIERS"), ENABLED(BEZIER_CURVE_SUPPORT)); + // BABYSTEPPING (M290) cap_line(F("BABYSTEPPING"), ENABLED(BABYSTEPPING)); @@ -251,6 +255,33 @@ void GcodeSuite::M115() { // HEATED_BED cap_line(F("HEATED_BED"), ENABLED(HAS_HEATED_BED)); + // MIXING_EXTRUDER + cap_line(F("MIXING_EXTRUDER"), ENABLED(MIXING_EXTRUDER)); + + // DUAL_X_CARRIAGE + cap_line(F("DUAL_X_CARRIAGE"), ENABLED(DUAL_X_CARRIAGE)); + + // NOZZLE_PARK_FEATURE + cap_line(F("NOZZLE_PARKING"), ENABLED(NOZZLE_PARK_FEATURE)); + + // NOZZLE_CLEAN_FEATURE + cap_line(F("NOZZLE_CLEANING"), ENABLED(NOZZLE_CLEAN_FEATURE)); + + // INPUT_SHAPING + cap_line(F("INPUT_SHAPING"), ANY(INPUT_SHAPING_X, INPUT_SHAPING_Y)); + + // LIN_ADVANCE + cap_line(F("LINEAR_ADVANCE"), ENABLED(LIN_ADVANCE)); + + // FIRMWARE_RETRACT + cap_line(F("FIRMWARE_RETRACT"), ENABLED(FWRETRACT)); + + // POWER_LOSS_RECOVERY + cap_line(F("POWER_LOSS_RECOVERY"), ENABLED(POWER_LOSS_RECOVERY)); + + // DIRECT_STEPPING + cap_line(F("DIRECT_STEPPING"), ENABLED(DIRECT_STEPPING)); + // Machine Geometry #if ENABLED(M115_GEOMETRY_REPORT) constexpr xyz_pos_t bmin{0},