|
|
@ -47,20 +47,13 @@ inline void echo_not_entered(const char c) { SERIAL_CHAR(c); SERIAL_PROTOCOLLNPG
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* Parameters With MESH_BED_LEVELING:
|
|
|
|
* Parameters With MESH_BED_LEVELING:
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* S0 Produce a mesh report
|
|
|
|
* S0 Report the current mesh values
|
|
|
|
* S1 Start probing mesh points
|
|
|
|
* S1 Start probing mesh points
|
|
|
|
* S2 Probe the next mesh point
|
|
|
|
* S2 Probe the next mesh point
|
|
|
|
* S3 Xn Yn Zn.nn Manually modify a single point
|
|
|
|
* S3 In Jn Zn.nn Manually modify a single point
|
|
|
|
* S4 Zn.nn Set z offset. Positive away from bed, negative closer to bed.
|
|
|
|
* S4 Zn.nn Set z offset. Positive away from bed, negative closer to bed.
|
|
|
|
* S5 Reset and disable mesh
|
|
|
|
* S5 Reset and disable mesh
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* The S0 report the points as below
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* +----> X-axis 1-n
|
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
|
* v Y-axis 1-n
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
void GcodeSuite::G29() {
|
|
|
|
void GcodeSuite::G29() {
|
|
|
|
|
|
|
|
|
|
|
@ -75,7 +68,7 @@ void GcodeSuite::G29() {
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int8_t px, py;
|
|
|
|
int8_t ix, iy;
|
|
|
|
|
|
|
|
|
|
|
|
switch (state) {
|
|
|
|
switch (state) {
|
|
|
|
case MeshReport:
|
|
|
|
case MeshReport:
|
|
|
@ -126,8 +119,8 @@ void GcodeSuite::G29() {
|
|
|
|
soft_endstops_enabled = false;
|
|
|
|
soft_endstops_enabled = false;
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
mbl.zigzag(mbl_probe_index++, px, py);
|
|
|
|
mbl.zigzag(mbl_probe_index++, ix, iy);
|
|
|
|
_manual_goto_xy(mbl.index_to_xpos[px], mbl.index_to_ypos[py]);
|
|
|
|
_manual_goto_xy(mbl.index_to_xpos[ix], mbl.index_to_ypos[iy]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
else {
|
|
|
|
// One last "return to the bed" (as originally coded) at completion
|
|
|
|
// One last "return to the bed" (as originally coded) at completion
|
|
|
@ -158,30 +151,30 @@ void GcodeSuite::G29() {
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case MeshSet:
|
|
|
|
case MeshSet:
|
|
|
|
if (parser.seenval('X')) {
|
|
|
|
if (parser.seenval('I')) {
|
|
|
|
px = parser.value_int() - 1;
|
|
|
|
ix = parser.value_int();
|
|
|
|
if (!WITHIN(px, 0, GRID_MAX_POINTS_X - 1)) {
|
|
|
|
if (!WITHIN(ix, 0, GRID_MAX_POINTS_X - 1)) {
|
|
|
|
SERIAL_PROTOCOLPAIR("X out of range (0-", int(GRID_MAX_POINTS_X));
|
|
|
|
SERIAL_PROTOCOLPAIR("I out of range (0-", int(GRID_MAX_POINTS_X - 1));
|
|
|
|
SERIAL_PROTOCOLLNPGM(")");
|
|
|
|
SERIAL_PROTOCOLLNPGM(")");
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
return echo_not_entered('X');
|
|
|
|
return echo_not_entered('J');
|
|
|
|
|
|
|
|
|
|
|
|
if (parser.seenval('Y')) {
|
|
|
|
if (parser.seenval('J')) {
|
|
|
|
py = parser.value_int() - 1;
|
|
|
|
iy = parser.value_int();
|
|
|
|
if (!WITHIN(py, 0, GRID_MAX_POINTS_Y - 1)) {
|
|
|
|
if (!WITHIN(iy, 0, GRID_MAX_POINTS_Y - 1)) {
|
|
|
|
SERIAL_PROTOCOLPAIR("Y out of range (0-", int(GRID_MAX_POINTS_Y));
|
|
|
|
SERIAL_PROTOCOLPAIR("J out of range (0-", int(GRID_MAX_POINTS_Y - 1));
|
|
|
|
SERIAL_PROTOCOLLNPGM(")");
|
|
|
|
SERIAL_PROTOCOLLNPGM(")");
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
return echo_not_entered('Y');
|
|
|
|
return echo_not_entered('J');
|
|
|
|
|
|
|
|
|
|
|
|
if (parser.seenval('Z'))
|
|
|
|
if (parser.seenval('Z'))
|
|
|
|
mbl.z_values[px][py] = parser.value_linear_units();
|
|
|
|
mbl.z_values[ix][iy] = parser.value_linear_units();
|
|
|
|
else
|
|
|
|
else
|
|
|
|
return echo_not_entered('Z');
|
|
|
|
return echo_not_entered('Z');
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|