_buffer_line => buffer_segment
This commit is contained in:
parent
db204c13f2
commit
8244284116
@ -1354,7 +1354,7 @@ void Planner::_buffer_steps(const int32_t (&target)[XYZE], float fr_mm_s, const
|
|||||||
} // _buffer_steps()
|
} // _buffer_steps()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Planner::_buffer_line
|
* Planner::buffer_segment
|
||||||
*
|
*
|
||||||
* Add a new linear movement to the buffer in axis units.
|
* Add a new linear movement to the buffer in axis units.
|
||||||
*
|
*
|
||||||
@ -1364,7 +1364,7 @@ void Planner::_buffer_steps(const int32_t (&target)[XYZE], float fr_mm_s, const
|
|||||||
* fr_mm_s - (target) speed of the move
|
* fr_mm_s - (target) speed of the move
|
||||||
* extruder - target extruder
|
* extruder - target extruder
|
||||||
*/
|
*/
|
||||||
void Planner::_buffer_line(const float &a, const float &b, const float &c, const float &e, const float &fr_mm_s, const uint8_t extruder) {
|
void Planner::buffer_segment(const float &a, const float &b, const float &c, const float &e, const float &fr_mm_s, const uint8_t extruder) {
|
||||||
// When changing extruders recalculate steps corresponding to the E position
|
// When changing extruders recalculate steps corresponding to the E position
|
||||||
#if ENABLED(DISTINCT_E_FACTORS)
|
#if ENABLED(DISTINCT_E_FACTORS)
|
||||||
if (last_extruder != extruder && axis_steps_per_mm[E_AXIS_N] != axis_steps_per_mm[E_AXIS + last_extruder]) {
|
if (last_extruder != extruder && axis_steps_per_mm[E_AXIS_N] != axis_steps_per_mm[E_AXIS + last_extruder]) {
|
||||||
@ -1383,7 +1383,7 @@ void Planner::_buffer_line(const float &a, const float &b, const float &c, const
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* <-- add a slash to enable
|
/* <-- add a slash to enable
|
||||||
SERIAL_ECHOPAIR(" _buffer_line FR:", fr_mm_s);
|
SERIAL_ECHOPAIR(" buffer_segment FR:", fr_mm_s);
|
||||||
#if IS_KINEMATIC
|
#if IS_KINEMATIC
|
||||||
SERIAL_ECHOPAIR(" A:", a);
|
SERIAL_ECHOPAIR(" A:", a);
|
||||||
SERIAL_ECHOPAIR(" (", position[A_AXIS]);
|
SERIAL_ECHOPAIR(" (", position[A_AXIS]);
|
||||||
@ -1430,7 +1430,7 @@ void Planner::_buffer_line(const float &a, const float &b, const float &c, const
|
|||||||
|
|
||||||
stepper.wake_up();
|
stepper.wake_up();
|
||||||
|
|
||||||
} // _buffer_line()
|
} // buffer_segment()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Directly set the planner XYZ position (and stepper positions)
|
* Directly set the planner XYZ position (and stepper positions)
|
||||||
|
@ -142,7 +142,7 @@ class Planner {
|
|||||||
* head!=tail : blocks are in the buffer
|
* head!=tail : blocks are in the buffer
|
||||||
* head==(tail-1)%size : the buffer is full
|
* head==(tail-1)%size : the buffer is full
|
||||||
*
|
*
|
||||||
* Writer of head is Planner::_buffer_line().
|
* Writer of head is Planner::buffer_segment().
|
||||||
* Reader of tail is Stepper::isr(). Always consider tail busy / read-only
|
* Reader of tail is Stepper::isr(). Always consider tail busy / read-only
|
||||||
*/
|
*/
|
||||||
static block_t block_buffer[BLOCK_BUFFER_SIZE];
|
static block_t block_buffer[BLOCK_BUFFER_SIZE];
|
||||||
@ -375,7 +375,7 @@ class Planner {
|
|||||||
static void _buffer_steps(const int32_t (&target)[XYZE], float fr_mm_s, const uint8_t extruder);
|
static void _buffer_steps(const int32_t (&target)[XYZE], float fr_mm_s, const uint8_t extruder);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Planner::_buffer_line
|
* Planner::buffer_segment
|
||||||
*
|
*
|
||||||
* Add a new linear movement to the buffer in axis units.
|
* Add a new linear movement to the buffer in axis units.
|
||||||
*
|
*
|
||||||
@ -385,7 +385,7 @@ class Planner {
|
|||||||
* fr_mm_s - (target) speed of the move
|
* fr_mm_s - (target) speed of the move
|
||||||
* extruder - target extruder
|
* extruder - target extruder
|
||||||
*/
|
*/
|
||||||
static void _buffer_line(const float &a, const float &b, const float &c, const float &e, const float &fr_mm_s, const uint8_t extruder);
|
static void buffer_segment(const float &a, const float &b, const float &c, const float &e, const float &fr_mm_s, const uint8_t extruder);
|
||||||
|
|
||||||
static void _set_position_mm(const float &a, const float &b, const float &c, const float &e);
|
static void _set_position_mm(const float &a, const float &b, const float &c, const float &e);
|
||||||
|
|
||||||
@ -405,7 +405,7 @@ class Planner {
|
|||||||
#if PLANNER_LEVELING && IS_CARTESIAN
|
#if PLANNER_LEVELING && IS_CARTESIAN
|
||||||
apply_leveling(rx, ry, rz);
|
apply_leveling(rx, ry, rz);
|
||||||
#endif
|
#endif
|
||||||
_buffer_line(rx, ry, rz, e, fr_mm_s, extruder);
|
buffer_segment(rx, ry, rz, e, fr_mm_s, extruder);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -426,9 +426,9 @@ class Planner {
|
|||||||
#endif
|
#endif
|
||||||
#if IS_KINEMATIC
|
#if IS_KINEMATIC
|
||||||
inverse_kinematics(raw);
|
inverse_kinematics(raw);
|
||||||
_buffer_line(delta[A_AXIS], delta[B_AXIS], delta[C_AXIS], cart[E_AXIS], fr_mm_s, extruder);
|
buffer_segment(delta[A_AXIS], delta[B_AXIS], delta[C_AXIS], cart[E_AXIS], fr_mm_s, extruder);
|
||||||
#else
|
#else
|
||||||
_buffer_line(raw[X_AXIS], raw[Y_AXIS], raw[Z_AXIS], cart[E_AXIS], fr_mm_s, extruder);
|
buffer_segment(raw[X_AXIS], raw[Y_AXIS], raw[Z_AXIS], cart[E_AXIS], fr_mm_s, extruder);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,7 +134,7 @@
|
|||||||
// Note: There is no Z Correction in this case. We are off the grid and don't know what
|
// Note: There is no Z Correction in this case. We are off the grid and don't know what
|
||||||
// a reasonable correction would be.
|
// a reasonable correction would be.
|
||||||
|
|
||||||
planner._buffer_line(end[X_AXIS], end[Y_AXIS], end[Z_AXIS], end[E_AXIS], feed_rate, extruder);
|
planner.buffer_segment(end[X_AXIS], end[Y_AXIS], end[Z_AXIS], end[E_AXIS], feed_rate, extruder);
|
||||||
set_current_from_destination();
|
set_current_from_destination();
|
||||||
|
|
||||||
if (g26_debug_flag)
|
if (g26_debug_flag)
|
||||||
@ -178,7 +178,7 @@
|
|||||||
*/
|
*/
|
||||||
if (isnan(z0)) z0 = 0.0;
|
if (isnan(z0)) z0 = 0.0;
|
||||||
|
|
||||||
planner._buffer_line(end[X_AXIS], end[Y_AXIS], end[Z_AXIS] + z0, end[E_AXIS], feed_rate, extruder);
|
planner.buffer_segment(end[X_AXIS], end[Y_AXIS], end[Z_AXIS] + z0, end[E_AXIS], feed_rate, extruder);
|
||||||
|
|
||||||
if (g26_debug_flag)
|
if (g26_debug_flag)
|
||||||
debug_current_and_destination(PSTR("FINAL_MOVE in ubl.line_to_destination()"));
|
debug_current_and_destination(PSTR("FINAL_MOVE in ubl.line_to_destination()"));
|
||||||
@ -269,7 +269,7 @@
|
|||||||
* Without this check, it is possible for the algorithm to generate a zero length move in the case
|
* Without this check, it is possible for the algorithm to generate a zero length move in the case
|
||||||
* where the line is heading down and it is starting right on a Mesh Line boundary. For how often that
|
* where the line is heading down and it is starting right on a Mesh Line boundary. For how often that
|
||||||
* happens, it might be best to remove the check and always 'schedule' the move because
|
* happens, it might be best to remove the check and always 'schedule' the move because
|
||||||
* the planner._buffer_line() routine will filter it if that happens.
|
* the planner.buffer_segment() routine will filter it if that happens.
|
||||||
*/
|
*/
|
||||||
if (ry != start[Y_AXIS]) {
|
if (ry != start[Y_AXIS]) {
|
||||||
if (!inf_normalized_flag) {
|
if (!inf_normalized_flag) {
|
||||||
@ -282,7 +282,7 @@
|
|||||||
z_position = end[Z_AXIS];
|
z_position = end[Z_AXIS];
|
||||||
}
|
}
|
||||||
|
|
||||||
planner._buffer_line(rx, ry, z_position + z0, e_position, feed_rate, extruder);
|
planner.buffer_segment(rx, ry, z_position + z0, e_position, feed_rate, extruder);
|
||||||
} //else printf("FIRST MOVE PRUNED ");
|
} //else printf("FIRST MOVE PRUNED ");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -333,7 +333,7 @@
|
|||||||
* Without this check, it is possible for the algorithm to generate a zero length move in the case
|
* Without this check, it is possible for the algorithm to generate a zero length move in the case
|
||||||
* where the line is heading left and it is starting right on a Mesh Line boundary. For how often
|
* where the line is heading left and it is starting right on a Mesh Line boundary. For how often
|
||||||
* that happens, it might be best to remove the check and always 'schedule' the move because
|
* that happens, it might be best to remove the check and always 'schedule' the move because
|
||||||
* the planner._buffer_line() routine will filter it if that happens.
|
* the planner.buffer_segment() routine will filter it if that happens.
|
||||||
*/
|
*/
|
||||||
if (rx != start[X_AXIS]) {
|
if (rx != start[X_AXIS]) {
|
||||||
if (!inf_normalized_flag) {
|
if (!inf_normalized_flag) {
|
||||||
@ -346,7 +346,7 @@
|
|||||||
z_position = end[Z_AXIS];
|
z_position = end[Z_AXIS];
|
||||||
}
|
}
|
||||||
|
|
||||||
planner._buffer_line(rx, ry, z_position + z0, e_position, feed_rate, extruder);
|
planner.buffer_segment(rx, ry, z_position + z0, e_position, feed_rate, extruder);
|
||||||
} //else printf("FIRST MOVE PRUNED ");
|
} //else printf("FIRST MOVE PRUNED ");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -408,7 +408,7 @@
|
|||||||
e_position = end[E_AXIS];
|
e_position = end[E_AXIS];
|
||||||
z_position = end[Z_AXIS];
|
z_position = end[Z_AXIS];
|
||||||
}
|
}
|
||||||
planner._buffer_line(rx, next_mesh_line_y, z_position + z0, e_position, feed_rate, extruder);
|
planner.buffer_segment(rx, next_mesh_line_y, z_position + z0, e_position, feed_rate, extruder);
|
||||||
current_yi += dyi;
|
current_yi += dyi;
|
||||||
yi_cnt--;
|
yi_cnt--;
|
||||||
}
|
}
|
||||||
@ -436,7 +436,7 @@
|
|||||||
z_position = end[Z_AXIS];
|
z_position = end[Z_AXIS];
|
||||||
}
|
}
|
||||||
|
|
||||||
planner._buffer_line(next_mesh_line_x, ry, z_position + z0, e_position, feed_rate, extruder);
|
planner.buffer_segment(next_mesh_line_x, ry, z_position + z0, e_position, feed_rate, extruder);
|
||||||
current_xi += dxi;
|
current_xi += dxi;
|
||||||
xi_cnt--;
|
xi_cnt--;
|
||||||
}
|
}
|
||||||
@ -468,14 +468,14 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// We don't want additional apply_leveling() performed by regular buffer_line or buffer_line_kinematic,
|
// We don't want additional apply_leveling() performed by regular buffer_line or buffer_line_kinematic,
|
||||||
// so we call _buffer_line directly here. Per-segmented leveling and kinematics performed first.
|
// so we call buffer_segment directly here. Per-segmented leveling and kinematics performed first.
|
||||||
|
|
||||||
inline void _O2 ubl_buffer_segment_raw(const float raw[XYZE], const float &fr) {
|
inline void _O2 ubl_buffer_segment_raw(const float raw[XYZE], const float &fr) {
|
||||||
|
|
||||||
#if ENABLED(DELTA) // apply delta inverse_kinematics
|
#if ENABLED(DELTA) // apply delta inverse_kinematics
|
||||||
|
|
||||||
DELTA_RAW_IK();
|
DELTA_RAW_IK();
|
||||||
planner._buffer_line(delta[A_AXIS], delta[B_AXIS], delta[C_AXIS], raw[E_AXIS], fr, active_extruder);
|
planner.buffer_segment(delta[A_AXIS], delta[B_AXIS], delta[C_AXIS], raw[E_AXIS], fr, active_extruder);
|
||||||
|
|
||||||
#elif IS_SCARA // apply scara inverse_kinematics (should be changed to save raw->logical->raw)
|
#elif IS_SCARA // apply scara inverse_kinematics (should be changed to save raw->logical->raw)
|
||||||
|
|
||||||
@ -488,11 +488,11 @@
|
|||||||
scara_oldB = delta[B_AXIS];
|
scara_oldB = delta[B_AXIS];
|
||||||
float s_feedrate = max(adiff, bdiff) * scara_feed_factor;
|
float s_feedrate = max(adiff, bdiff) * scara_feed_factor;
|
||||||
|
|
||||||
planner._buffer_line(delta[A_AXIS], delta[B_AXIS], delta[C_AXIS], raw[E_AXIS], s_feedrate, active_extruder);
|
planner.buffer_segment(delta[A_AXIS], delta[B_AXIS], delta[C_AXIS], raw[E_AXIS], s_feedrate, active_extruder);
|
||||||
|
|
||||||
#else // CARTESIAN
|
#else // CARTESIAN
|
||||||
|
|
||||||
planner._buffer_line(raw[X_AXIS], raw[Y_AXIS], raw[Z_AXIS], raw[E_AXIS], fr, active_extruder);
|
planner.buffer_segment(raw[X_AXIS], raw[Y_AXIS], raw[Z_AXIS], raw[E_AXIS], fr, active_extruder);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -511,7 +511,7 @@
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Prepare a segmented linear move for DELTA/SCARA/CARTESIAN with UBL and FADE semantics.
|
* Prepare a segmented linear move for DELTA/SCARA/CARTESIAN with UBL and FADE semantics.
|
||||||
* This calls planner._buffer_line multiple times for small incremental moves.
|
* This calls planner.buffer_segment multiple times for small incremental moves.
|
||||||
* Returns true if did NOT move, false if moved (requires current_position update).
|
* Returns true if did NOT move, false if moved (requires current_position update).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user