Add M207/8/9 reporting (#21335)
This commit is contained in:
		@@ -36,6 +36,8 @@ FWRetract fwretract; // Single instance - this calls the constructor
 | 
				
			|||||||
#include "../module/planner.h"
 | 
					#include "../module/planner.h"
 | 
				
			||||||
#include "../module/stepper.h"
 | 
					#include "../module/stepper.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "../gcode/parser.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if ENABLED(RETRACT_SYNC_MIXING)
 | 
					#if ENABLED(RETRACT_SYNC_MIXING)
 | 
				
			||||||
  #include "mixing.h"
 | 
					  #include "mixing.h"
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -198,4 +200,78 @@ void FWRetract::retract(const bool retracting
 | 
				
			|||||||
  //*/
 | 
					  //*/
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//extern const char SP_Z_STR[];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * M207: Set firmware retraction values
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   S[+units]    retract_length
 | 
				
			||||||
 | 
					 *   W[+units]    swap_retract_length (multi-extruder)
 | 
				
			||||||
 | 
					 *   F[units/min] retract_feedrate_mm_s
 | 
				
			||||||
 | 
					 *   Z[units]     retract_zraise
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					void FWRetract::M207() {
 | 
				
			||||||
 | 
					  if (!parser.seen("FSWZ")) return M207_report();
 | 
				
			||||||
 | 
					  if (parser.seen('S')) settings.retract_length = parser.value_axis_units(E_AXIS);
 | 
				
			||||||
 | 
					  if (parser.seen('F')) settings.retract_feedrate_mm_s = MMM_TO_MMS(parser.value_axis_units(E_AXIS));
 | 
				
			||||||
 | 
					  if (parser.seen('Z')) settings.retract_zraise = parser.value_linear_units();
 | 
				
			||||||
 | 
					  if (parser.seen('W')) settings.swap_retract_length = parser.value_axis_units(E_AXIS);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void FWRetract::M207_report(const bool forReplay/*=false*/) {
 | 
				
			||||||
 | 
					  if (!forReplay) { SERIAL_ECHO_MSG("; Retract: S<length> F<units/m> Z<lift>"); SERIAL_ECHO_START(); }
 | 
				
			||||||
 | 
					  SERIAL_ECHOLNPAIR_P(
 | 
				
			||||||
 | 
					      PSTR("  M207 S"), LINEAR_UNIT(settings.retract_length)
 | 
				
			||||||
 | 
					    , PSTR(" W"), LINEAR_UNIT(settings.swap_retract_length)
 | 
				
			||||||
 | 
					    , PSTR(" F"), LINEAR_UNIT(MMS_TO_MMM(settings.retract_feedrate_mm_s))
 | 
				
			||||||
 | 
					    , SP_Z_STR, LINEAR_UNIT(settings.retract_zraise)
 | 
				
			||||||
 | 
					  );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * M208: Set firmware un-retraction values
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   S[+units]    retract_recover_extra (in addition to M207 S*)
 | 
				
			||||||
 | 
					 *   W[+units]    swap_retract_recover_extra (multi-extruder)
 | 
				
			||||||
 | 
					 *   F[units/min] retract_recover_feedrate_mm_s
 | 
				
			||||||
 | 
					 *   R[units/min] swap_retract_recover_feedrate_mm_s
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					void FWRetract::M208() {
 | 
				
			||||||
 | 
					  if (!parser.seen("FSRW")) return M208_report();
 | 
				
			||||||
 | 
					  if (parser.seen('S')) settings.retract_recover_extra = parser.value_axis_units(E_AXIS);
 | 
				
			||||||
 | 
					  if (parser.seen('F')) settings.retract_recover_feedrate_mm_s = MMM_TO_MMS(parser.value_axis_units(E_AXIS));
 | 
				
			||||||
 | 
					  if (parser.seen('R')) settings.swap_retract_recover_feedrate_mm_s = MMM_TO_MMS(parser.value_axis_units(E_AXIS));
 | 
				
			||||||
 | 
					  if (parser.seen('W')) settings.swap_retract_recover_extra = parser.value_axis_units(E_AXIS);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void FWRetract::M208_report(const bool forReplay/*=false*/) {
 | 
				
			||||||
 | 
					  if (!forReplay) { SERIAL_ECHO_MSG("; Recover: S<length> F<units/m>"); SERIAL_ECHO_START(); }
 | 
				
			||||||
 | 
					  SERIAL_ECHOLNPAIR(
 | 
				
			||||||
 | 
					      "  M208 S", LINEAR_UNIT(settings.retract_recover_extra)
 | 
				
			||||||
 | 
					    , " W", LINEAR_UNIT(settings.swap_retract_recover_extra)
 | 
				
			||||||
 | 
					    , " F", LINEAR_UNIT(MMS_TO_MMM(settings.retract_recover_feedrate_mm_s))
 | 
				
			||||||
 | 
					  );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if ENABLED(FWRETRACT_AUTORETRACT)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * M209: Enable automatic retract (M209 S1)
 | 
				
			||||||
 | 
					   *   For slicers that don't support G10/11, reversed extrude-only
 | 
				
			||||||
 | 
					   *   moves will be classified as retraction.
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  void FWRetract::M209() {
 | 
				
			||||||
 | 
					    if (!parser.seen('S')) return M209_report();
 | 
				
			||||||
 | 
					    if (MIN_AUTORETRACT <= MAX_AUTORETRACT)
 | 
				
			||||||
 | 
					      enable_autoretract(parser.value_bool());
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void FWRetract::M209_report(const bool forReplay/*=false*/) {
 | 
				
			||||||
 | 
					    if (!forReplay) { SERIAL_ECHO_MSG("; Auto-Retract: S=0 to disable, 1 to interpret E-only moves as retract/recover"); SERIAL_ECHO_START(); }
 | 
				
			||||||
 | 
					    SERIAL_ECHOLNPAIR("  M209 S", autoretract_enabled);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // FWRETRACT_AUTORETRACT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // FWRETRACT
 | 
					#endif // FWRETRACT
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -79,6 +79,15 @@ public:
 | 
				
			|||||||
      , bool swapping = false
 | 
					      , bool swapping = false
 | 
				
			||||||
    #endif
 | 
					    #endif
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  static void M207();
 | 
				
			||||||
 | 
					  static void M207_report(const bool forReplay=false);
 | 
				
			||||||
 | 
					  static void M208();
 | 
				
			||||||
 | 
					  static void M208_report(const bool forReplay=false);
 | 
				
			||||||
 | 
					  #if ENABLED(FWRETRACT_AUTORETRACT)
 | 
				
			||||||
 | 
					    static void M209();
 | 
				
			||||||
 | 
					    static void M209_report(const bool forReplay=false);
 | 
				
			||||||
 | 
					  #endif
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern FWRetract fwretract;
 | 
					extern FWRetract fwretract;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,46 +29,24 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * M207: Set firmware retraction values
 | 
					 * M207: Set firmware retraction values
 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 *   S[+units]    retract_length
 | 
					 | 
				
			||||||
 *   W[+units]    swap_retract_length (multi-extruder)
 | 
					 | 
				
			||||||
 *   F[units/min] retract_feedrate_mm_s
 | 
					 | 
				
			||||||
 *   Z[units]     retract_zraise
 | 
					 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
void GcodeSuite::M207() {
 | 
					void GcodeSuite::M207() { fwretract.M207(); }
 | 
				
			||||||
  if (parser.seen('S')) fwretract.settings.retract_length = parser.value_axis_units(E_AXIS);
 | 
					 | 
				
			||||||
  if (parser.seen('F')) fwretract.settings.retract_feedrate_mm_s = MMM_TO_MMS(parser.value_axis_units(E_AXIS));
 | 
					 | 
				
			||||||
  if (parser.seen('Z')) fwretract.settings.retract_zraise = parser.value_linear_units();
 | 
					 | 
				
			||||||
  if (parser.seen('W')) fwretract.settings.swap_retract_length = parser.value_axis_units(E_AXIS);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * M208: Set firmware un-retraction values
 | 
					 * M208: Set firmware un-retraction values
 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 *   S[+units]    retract_recover_extra (in addition to M207 S*)
 | 
					 | 
				
			||||||
 *   W[+units]    swap_retract_recover_extra (multi-extruder)
 | 
					 | 
				
			||||||
 *   F[units/min] retract_recover_feedrate_mm_s
 | 
					 | 
				
			||||||
 *   R[units/min] swap_retract_recover_feedrate_mm_s
 | 
					 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
void GcodeSuite::M208() {
 | 
					void GcodeSuite::M208() { fwretract.M208(); }
 | 
				
			||||||
  if (parser.seen('S')) fwretract.settings.retract_recover_extra = parser.value_axis_units(E_AXIS);
 | 
					 | 
				
			||||||
  if (parser.seen('F')) fwretract.settings.retract_recover_feedrate_mm_s = MMM_TO_MMS(parser.value_axis_units(E_AXIS));
 | 
					 | 
				
			||||||
  if (parser.seen('R')) fwretract.settings.swap_retract_recover_feedrate_mm_s = MMM_TO_MMS(parser.value_axis_units(E_AXIS));
 | 
					 | 
				
			||||||
  if (parser.seen('W')) fwretract.settings.swap_retract_recover_extra = parser.value_axis_units(E_AXIS);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if ENABLED(FWRETRACT_AUTORETRACT)
 | 
					#if ENABLED(FWRETRACT_AUTORETRACT)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * M209: Enable automatic retract (M209 S1)
 | 
					   * M209: Enable automatic retract (M209 S1)
 | 
				
			||||||
   *   For slicers that don't support G10/11, reversed extrude-only
 | 
					   *
 | 
				
			||||||
   *   moves will be classified as retraction.
 | 
					   *   For slicers that don't support G10/11, reversed
 | 
				
			||||||
 | 
					   *   extruder-only moves can be classified as retraction.
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  void GcodeSuite::M209() {
 | 
					  void GcodeSuite::M209() { fwretract.M209(); }
 | 
				
			||||||
    if (MIN_AUTORETRACT <= MAX_AUTORETRACT && parser.seen('S'))
 | 
					 | 
				
			||||||
      fwretract.enable_autoretract(parser.value_bool());
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // FWRETRACT_AUTORETRACT
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // FWRETRACT
 | 
					#endif // FWRETRACT
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -30,7 +30,7 @@
 | 
				
			|||||||
#include "../../libs/buzzer.h"
 | 
					#include "../../libs/buzzer.h"
 | 
				
			||||||
#include "../../MarlinCore.h"
 | 
					#include "../../MarlinCore.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void m206_report() {
 | 
					void M206_report() {
 | 
				
			||||||
  SERIAL_ECHOLNPAIR_P(PSTR("M206 X"), home_offset.x, SP_Y_STR, home_offset.y, SP_Z_STR, home_offset.z);
 | 
					  SERIAL_ECHOLNPAIR_P(PSTR("M206 X"), home_offset.x, SP_Y_STR, home_offset.y, SP_Z_STR, home_offset.z);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -52,7 +52,7 @@ void GcodeSuite::M206() {
 | 
				
			|||||||
  #endif
 | 
					  #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (!parser.seen("XYZ"))
 | 
					  if (!parser.seen("XYZ"))
 | 
				
			||||||
    m206_report();
 | 
					    M206_report();
 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
    report_current_position();
 | 
					    report_current_position();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3466,30 +3466,11 @@ void MarlinSettings::reset() {
 | 
				
			|||||||
    #endif
 | 
					    #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    #if ENABLED(FWRETRACT)
 | 
					    #if ENABLED(FWRETRACT)
 | 
				
			||||||
 | 
					      fwretract.M207_report(forReplay);
 | 
				
			||||||
      CONFIG_ECHO_HEADING("Retract: S<length> F<units/m> Z<lift>");
 | 
					      fwretract.M208_report(forReplay);
 | 
				
			||||||
      CONFIG_ECHO_START();
 | 
					      TERN_(FWRETRACT_AUTORETRACT, fwretract.M209_report(forReplay));
 | 
				
			||||||
      SERIAL_ECHOLNPAIR_P(
 | 
					 | 
				
			||||||
          PSTR("  M207 S"), LINEAR_UNIT(fwretract.settings.retract_length)
 | 
					 | 
				
			||||||
        , PSTR(" W"), LINEAR_UNIT(fwretract.settings.swap_retract_length)
 | 
					 | 
				
			||||||
        , PSTR(" F"), LINEAR_UNIT(MMS_TO_MMM(fwretract.settings.retract_feedrate_mm_s))
 | 
					 | 
				
			||||||
        , SP_Z_STR, LINEAR_UNIT(fwretract.settings.retract_zraise)
 | 
					 | 
				
			||||||
      );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      CONFIG_ECHO_HEADING("Recover: S<length> F<units/m>");
 | 
					 | 
				
			||||||
      CONFIG_ECHO_MSG(
 | 
					 | 
				
			||||||
          "  M208 S", LINEAR_UNIT(fwretract.settings.retract_recover_extra)
 | 
					 | 
				
			||||||
        , " W", LINEAR_UNIT(fwretract.settings.swap_retract_recover_extra)
 | 
					 | 
				
			||||||
        , " F", LINEAR_UNIT(MMS_TO_MMM(fwretract.settings.retract_recover_feedrate_mm_s))
 | 
					 | 
				
			||||||
      );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      #if ENABLED(FWRETRACT_AUTORETRACT)
 | 
					 | 
				
			||||||
        CONFIG_ECHO_HEADING("Auto-Retract: S=0 to disable, 1 to interpret E-only moves as retract/recover");
 | 
					 | 
				
			||||||
        CONFIG_ECHO_MSG("  M209 S", fwretract.autoretract_enabled);
 | 
					 | 
				
			||||||
    #endif
 | 
					    #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    #endif // FWRETRACT
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Probe Offset
 | 
					     * Probe Offset
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user