|
|
|
@ -195,7 +195,9 @@ void homeaxis(const AxisEnum axis);
|
|
|
|
|
// Macros
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
// Workspace offsets
|
|
|
|
|
/**
|
|
|
|
|
* Workspace offsets
|
|
|
|
|
*/
|
|
|
|
|
#if HAS_WORKSPACE_OFFSET
|
|
|
|
|
#if HAS_HOME_OFFSET
|
|
|
|
|
extern float home_offset[XYZ];
|
|
|
|
@ -203,36 +205,26 @@ void homeaxis(const AxisEnum axis);
|
|
|
|
|
#if HAS_POSITION_SHIFT
|
|
|
|
|
extern float position_shift[XYZ];
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#if HAS_HOME_OFFSET && HAS_POSITION_SHIFT
|
|
|
|
|
extern float workspace_offset[XYZ];
|
|
|
|
|
#define WORKSPACE_OFFSET(AXIS) workspace_offset[AXIS]
|
|
|
|
|
#elif HAS_HOME_OFFSET
|
|
|
|
|
#define WORKSPACE_OFFSET(AXIS) home_offset[AXIS]
|
|
|
|
|
#elif HAS_POSITION_SHIFT
|
|
|
|
|
#define WORKSPACE_OFFSET(AXIS) position_shift[AXIS]
|
|
|
|
|
#else
|
|
|
|
|
#define WORKSPACE_OFFSET(AXIS) 0
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#define NATIVE_TO_LOGICAL(POS, AXIS) ((POS) + WORKSPACE_OFFSET(AXIS))
|
|
|
|
|
#define LOGICAL_TO_NATIVE(POS, AXIS) ((POS) - WORKSPACE_OFFSET(AXIS))
|
|
|
|
|
|
|
|
|
|
#if HAS_POSITION_SHIFT || DISABLED(DELTA)
|
|
|
|
|
#define LOGICAL_X_POSITION(POS) NATIVE_TO_LOGICAL(POS, X_AXIS)
|
|
|
|
|
#define LOGICAL_Y_POSITION(POS) NATIVE_TO_LOGICAL(POS, Y_AXIS)
|
|
|
|
|
#define RAW_X_POSITION(POS) LOGICAL_TO_NATIVE(POS, X_AXIS)
|
|
|
|
|
#define RAW_Y_POSITION(POS) LOGICAL_TO_NATIVE(POS, Y_AXIS)
|
|
|
|
|
#if HAS_HOME_OFFSET && HAS_POSITION_SHIFT
|
|
|
|
|
extern float workspace_offset[XYZ];
|
|
|
|
|
#define WORKSPACE_OFFSET(AXIS) workspace_offset[AXIS]
|
|
|
|
|
#elif HAS_HOME_OFFSET
|
|
|
|
|
#define WORKSPACE_OFFSET(AXIS) home_offset[AXIS]
|
|
|
|
|
#elif HAS_POSITION_SHIFT
|
|
|
|
|
#define WORKSPACE_OFFSET(AXIS) position_shift[AXIS]
|
|
|
|
|
#endif
|
|
|
|
|
#define NATIVE_TO_LOGICAL(POS, AXIS) ((POS) + WORKSPACE_OFFSET(AXIS))
|
|
|
|
|
#define LOGICAL_TO_NATIVE(POS, AXIS) ((POS) - WORKSPACE_OFFSET(AXIS))
|
|
|
|
|
#else
|
|
|
|
|
#define LOGICAL_X_POSITION(POS) (POS)
|
|
|
|
|
#define LOGICAL_Y_POSITION(POS) (POS)
|
|
|
|
|
#define RAW_X_POSITION(POS) (POS)
|
|
|
|
|
#define RAW_Y_POSITION(POS) (POS)
|
|
|
|
|
#define NATIVE_TO_LOGICAL(POS, AXIS) (POS)
|
|
|
|
|
#define LOGICAL_TO_NATIVE(POS, AXIS) (POS)
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#define LOGICAL_Z_POSITION(POS) NATIVE_TO_LOGICAL(POS, Z_AXIS)
|
|
|
|
|
#define RAW_Z_POSITION(POS) LOGICAL_TO_NATIVE(POS, Z_AXIS)
|
|
|
|
|
#define LOGICAL_X_POSITION(POS) NATIVE_TO_LOGICAL(POS, X_AXIS)
|
|
|
|
|
#define LOGICAL_Y_POSITION(POS) NATIVE_TO_LOGICAL(POS, Y_AXIS)
|
|
|
|
|
#define LOGICAL_Z_POSITION(POS) NATIVE_TO_LOGICAL(POS, Z_AXIS)
|
|
|
|
|
#define RAW_X_POSITION(POS) LOGICAL_TO_NATIVE(POS, X_AXIS)
|
|
|
|
|
#define RAW_Y_POSITION(POS) LOGICAL_TO_NATIVE(POS, Y_AXIS)
|
|
|
|
|
#define RAW_Z_POSITION(POS) LOGICAL_TO_NATIVE(POS, Z_AXIS)
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* position_is_reachable family of functions
|
|
|
|
|