Fix G90, G91, M82, M83 rel/abs modes (#15218)

This commit is contained in:
Scott Lahteine
2019-09-11 01:29:33 -05:00
committed by GitHub
parent 41a3fbceac
commit 6091e6300a
6 changed files with 39 additions and 27 deletions

View File

@@ -283,12 +283,31 @@
#include "../feature/I2CPositionEncoder.h"
#endif
enum AxisRelative : uint8_t { REL_X, REL_Y, REL_Z, REL_E, E_MODE_ABS, E_MODE_REL };
class GcodeSuite {
public:
GcodeSuite() {}
static uint8_t axis_relative;
static bool axis_relative_modes[];
static inline bool axis_is_relative(const AxisEnum a) {
if (a == E_AXIS) {
if (TEST(axis_relative, E_MODE_REL)) return true;
if (TEST(axis_relative, E_MODE_ABS)) return false;
}
return TEST(axis_relative, a);
}
static inline void set_relative_mode(const bool rel) {
axis_relative = rel ? _BV(REL_X) | _BV(REL_Y) | _BV(REL_Z) | _BV(REL_E) : 0;
}
static inline void set_e_relative() {
CBI(axis_relative, E_MODE_ABS);
SBI(axis_relative, E_MODE_REL);
}
static inline void set_e_absolute() {
CBI(axis_relative, E_MODE_REL);
SBI(axis_relative, E_MODE_ABS);
}
#if ENABLED(CNC_WORKSPACE_PLANES)
/**