|
|
@ -26,9 +26,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
#include "Marlin.h"
|
|
|
|
#include "Marlin.h"
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef ENABLE_AUTO_BED_LEVELING
|
|
|
|
#ifdef ENABLE_AUTO_BED_COMPENSATION
|
|
|
|
#include "vector_3.h"
|
|
|
|
#include "vector_3.h"
|
|
|
|
#endif // ENABLE_AUTO_BED_LEVELING
|
|
|
|
#endif // ENABLE_AUTO_BED_COMPENSATION
|
|
|
|
|
|
|
|
|
|
|
|
// This struct is used when buffering the setup for each linear movement "nominal" values are as specified in
|
|
|
|
// This struct is used when buffering the setup for each linear movement "nominal" values are as specified in
|
|
|
|
// the source g-code and may never actually be reached if acceleration management is active.
|
|
|
|
// the source g-code and may never actually be reached if acceleration management is active.
|
|
|
@ -71,10 +71,10 @@ typedef struct {
|
|
|
|
volatile char busy;
|
|
|
|
volatile char busy;
|
|
|
|
} block_t;
|
|
|
|
} block_t;
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef ENABLE_AUTO_BED_LEVELING
|
|
|
|
#ifdef ENABLE_AUTO_BED_COMPENSATION
|
|
|
|
// this holds the required transform to compensate for bed level
|
|
|
|
// this holds the required transform to compensate for bed compensation
|
|
|
|
extern matrix_3x3 plan_bed_level_matrix;
|
|
|
|
extern matrix_3x3 plan_bed_compensation_matrix;
|
|
|
|
#endif // #ifdef ENABLE_AUTO_BED_LEVELING
|
|
|
|
#endif // #ifdef ENABLE_AUTO_BED_COMPENSATION
|
|
|
|
|
|
|
|
|
|
|
|
// Initialize the motion plan subsystem
|
|
|
|
// Initialize the motion plan subsystem
|
|
|
|
void plan_init();
|
|
|
|
void plan_init();
|
|
|
@ -82,21 +82,21 @@ void plan_init();
|
|
|
|
// Add a new linear movement to the buffer. x, y and z is the signed, absolute target position in
|
|
|
|
// Add a new linear movement to the buffer. x, y and z is the signed, absolute target position in
|
|
|
|
// millimaters. Feed rate specifies the speed of the motion.
|
|
|
|
// millimaters. Feed rate specifies the speed of the motion.
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef ENABLE_AUTO_BED_LEVELING
|
|
|
|
#ifdef ENABLE_AUTO_BED_COMPENSATION
|
|
|
|
void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate, const uint8_t &extruder);
|
|
|
|
void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate, const uint8_t &extruder);
|
|
|
|
|
|
|
|
|
|
|
|
// Get the position applying the bed level matrix if enabled
|
|
|
|
// Get the position applying the bed compensation matrix if enabled
|
|
|
|
vector_3 plan_get_position();
|
|
|
|
vector_3 plan_get_position();
|
|
|
|
#else
|
|
|
|
#else
|
|
|
|
void plan_buffer_line(const float &x, const float &y, const float &z, const float &e, float feed_rate, const uint8_t &extruder);
|
|
|
|
void plan_buffer_line(const float &x, const float &y, const float &z, const float &e, float feed_rate, const uint8_t &extruder);
|
|
|
|
#endif // ENABLE_AUTO_BED_LEVELING
|
|
|
|
#endif // ENABLE_AUTO_BED_COMPENSATION
|
|
|
|
|
|
|
|
|
|
|
|
// Set position. Used for G92 instructions.
|
|
|
|
// Set position. Used for G92 instructions.
|
|
|
|
#ifdef ENABLE_AUTO_BED_LEVELING
|
|
|
|
#ifdef ENABLE_AUTO_BED_COMPENSATION
|
|
|
|
void plan_set_position(float x, float y, float z, const float &e);
|
|
|
|
void plan_set_position(float x, float y, float z, const float &e);
|
|
|
|
#else
|
|
|
|
#else
|
|
|
|
void plan_set_position(const float &x, const float &y, const float &z, const float &e);
|
|
|
|
void plan_set_position(const float &x, const float &y, const float &z, const float &e);
|
|
|
|
#endif // ENABLE_AUTO_BED_LEVELING
|
|
|
|
#endif // ENABLE_AUTO_BED_COMPENSATION
|
|
|
|
|
|
|
|
|
|
|
|
void plan_set_e_position(const float &e);
|
|
|
|
void plan_set_e_position(const float &e);
|
|
|
|
|
|
|
|
|
|
|
|