Add reporting to M290 (#15376)

This commit is contained in:
InsanityAutomation 2019-09-28 17:58:48 -04:00 committed by Scott Lahteine
parent e942b352c6
commit 0ca6abce72
3 changed files with 60 additions and 28 deletions

View file

@ -36,13 +36,10 @@
Babystep babystep; Babystep babystep;
volatile int16_t Babystep::steps[BS_TODO_AXIS(Z_AXIS) + 1]; volatile int16_t Babystep::steps[BS_TODO_AXIS(Z_AXIS) + 1];
#if ENABLED(BABYSTEP_DISPLAY_TOTAL)
#if HAS_LCD_MENU || ENABLED(EXTENSIBLE_UI) int16_t Babystep::axis_total[BS_TOTAL_AXIS(Z_AXIS) + 1];
int16_t Babystep::accum;
#if ENABLED(BABYSTEP_DISPLAY_TOTAL)
int16_t Babystep::axis_total[BS_TOTAL_AXIS(Z_AXIS) + 1];
#endif
#endif #endif
int16_t Babystep::accum;
void Babystep::step_axis(const AxisEnum axis) { void Babystep::step_axis(const AxisEnum axis) {
const int16_t curTodo = steps[BS_TODO_AXIS(axis)]; // get rid of volatile for performance const int16_t curTodo = steps[BS_TODO_AXIS(axis)]; // get rid of volatile for performance
@ -75,11 +72,9 @@ void Babystep::add_steps(const AxisEnum axis, const int16_t distance) {
if (!CAN_BABYSTEP(axis)) return; if (!CAN_BABYSTEP(axis)) return;
#if HAS_LCD_MENU || ENABLED(EXTENSIBLE_UI) accum += distance; // Count up babysteps for the UI
accum += distance; // Count up babysteps for the UI #if ENABLED(BABYSTEP_DISPLAY_TOTAL)
#if ENABLED(BABYSTEP_DISPLAY_TOTAL) axis_total[BS_TOTAL_AXIS(axis)] += distance;
axis_total[BS_TOTAL_AXIS(axis)] += distance;
#endif
#endif #endif
#if ENABLED(BABYSTEP_ALWAYS_AVAILABLE) #if ENABLED(BABYSTEP_ALWAYS_AVAILABLE)

View file

@ -29,7 +29,7 @@
#define BS_TODO_AXIS(A) 0 #define BS_TODO_AXIS(A) 0
#endif #endif
#if (HAS_LCD_MENU || ENABLED(EXTENSIBLE_UI)) && ENABLED(BABYSTEP_DISPLAY_TOTAL) #if ENABLED(BABYSTEP_DISPLAY_TOTAL)
#if ENABLED(BABYSTEP_XY) #if ENABLED(BABYSTEP_XY)
#define BS_TOTAL_AXIS(A) A #define BS_TOTAL_AXIS(A) A
#else #else
@ -40,22 +40,17 @@
class Babystep { class Babystep {
public: public:
static volatile int16_t steps[BS_TODO_AXIS(Z_AXIS) + 1]; static volatile int16_t steps[BS_TODO_AXIS(Z_AXIS) + 1];
static int16_t accum; // Total babysteps in current edit
#if HAS_LCD_MENU || ENABLED(EXTENSIBLE_UI) #if ENABLED(BABYSTEP_DISPLAY_TOTAL)
static int16_t axis_total[BS_TOTAL_AXIS(Z_AXIS) + 1]; // Total babysteps since G28
static int16_t accum; // Total babysteps in current edit static inline void reset_total(const AxisEnum axis) {
if (true
#if ENABLED(BABYSTEP_DISPLAY_TOTAL) #if ENABLED(BABYSTEP_XY)
static int16_t axis_total[BS_TOTAL_AXIS(Z_AXIS) + 1]; // Total babysteps since G28 && axis == Z_AXIS
static inline void reset_total(const AxisEnum axis) { #endif
if (true ) axis_total[BS_TOTAL_AXIS(axis)] = 0;
#if ENABLED(BABYSTEP_XY) }
&& axis == Z_AXIS
#endif
) axis_total[BS_TOTAL_AXIS(axis)] = 0;
}
#endif
#endif #endif
static void add_steps(const AxisEnum axis, const int16_t distance); static void add_steps(const AxisEnum axis, const int16_t distance);

View file

@ -34,6 +34,10 @@
#include "../../core/serial.h" #include "../../core/serial.h"
#endif #endif
#if ENABLED(MESH_BED_LEVELING)
#include "../../feature/bedlevel/bedlevel.h"
#endif
#if ENABLED(BABYSTEP_ZPROBE_OFFSET) #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
FORCE_INLINE void mod_zprobe_zoffset(const float &offs) { FORCE_INLINE void mod_zprobe_zoffset(const float &offs) {
@ -60,13 +64,15 @@
/** /**
* M290: Babystepping * M290: Babystepping
* *
* Send 'R' or no parameters for a report.
*
* X<linear> - Distance to step X * X<linear> - Distance to step X
* Y<linear> - Distance to step Y * Y<linear> - Distance to step Y
* Z<linear> - Distance to step Z * Z<linear> - Distance to step Z
* S<linear> - Distance to step Z (alias for Z) * S<linear> - Distance to step Z (alias for Z)
* *
* With BABYSTEP_ZPROBE_OFFSET: * With BABYSTEP_ZPROBE_OFFSET:
* P0 - Don't adjust the Z probe offset. * P0 - Don't adjust the Z probe offset
*/ */
void GcodeSuite::M290() { void GcodeSuite::M290() {
#if ENABLED(BABYSTEP_XY) #if ENABLED(BABYSTEP_XY)
@ -87,6 +93,42 @@ void GcodeSuite::M290() {
#endif #endif
} }
#endif #endif
if (!parser.seen("XYZ") || parser.seen('R')) {
SERIAL_ECHO_START();
#if ENABLED(BABYSTEP_ZPROBE_OFFSET)
SERIAL_ECHOLNPAIR(MSG_PROBE_OFFSET " " MSG_Z, probe_offset[Z_AXIS]);
#endif
#if ENABLED(BABYSTEP_HOTEND_Z_OFFSET)
{
SERIAL_ECHOLNPAIR("Hotend ", int(active_extruder), "Offset"
#if ENABLED(BABYSTEP_XY)
" X", hotend_offset[X_AXIS][active_extruder],
" Y", hotend_offset[Y_AXIS][active_extruder],
#endif
" Z", hotend_offset[Z_AXIS][active_extruder]
);
}
#endif
#if ENABLED(MESH_BED_LEVELING)
SERIAL_ECHOLNPAIR("MBL Adjust Z", mbl.z_offset);
#endif
#if ENABLED(BABYSTEP_DISPLAY_TOTAL)
{
SERIAL_ECHOLNPAIR("Babystep"
#if ENABLED(BABYSTEP_XY)
" X", babystep.axis_total[X_AXIS],
" Y", babystep.axis_total[Y_AXIS],
#endif
" Z", babystep.axis_total[Z_AXIS]
);
}
#endif
}
} }
#endif // BABYSTEPPING #endif // BABYSTEPPING