Add custom types for position (#15204)
This commit is contained in:
@@ -169,7 +169,7 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = {
|
||||
VPHELPER(VP_T_E1_Is, &thermalManager.temp_hotend[0].celsius, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<0>),
|
||||
VPHELPER(VP_T_E1_Set, &thermalManager.temp_hotend[0].target, DGUSScreenVariableHandler::HandleTemperatureChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay),
|
||||
VPHELPER(VP_Flowrate_E1, nullptr, DGUSScreenVariableHandler::HandleFlowRateChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay),
|
||||
VPHELPER(VP_EPos, &destination[3], nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<2>),
|
||||
VPHELPER(VP_EPos, &destination.e, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<2>),
|
||||
VPHELPER(VP_MOVE_E1, nullptr, &DGUSScreenVariableHandler::HandleManualExtrude, nullptr),
|
||||
#endif
|
||||
#if HOTENDS >= 2
|
||||
@@ -195,9 +195,9 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = {
|
||||
VPHELPER(VP_Feedrate_Percentage, &feedrate_percentage, DGUSScreenVariableHandler::DGUSLCD_SetValueDirectly<int16_t>, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay ),
|
||||
|
||||
// Position Data.
|
||||
VPHELPER(VP_XPos, ¤t_position[0], nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<2>),
|
||||
VPHELPER(VP_YPos, ¤t_position[1], nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<2>),
|
||||
VPHELPER(VP_ZPos, ¤t_position[2], nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<2>),
|
||||
VPHELPER(VP_XPos, ¤t_position.x, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<2>),
|
||||
VPHELPER(VP_YPos, ¤t_position.y, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<2>),
|
||||
VPHELPER(VP_ZPos, ¤t_position.z, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<2>),
|
||||
|
||||
// Print Progress.
|
||||
VPHELPER(VP_PrintProgress_Percentage, &ui.progress_bar_percent, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay ),
|
||||
|
@@ -258,22 +258,22 @@ bool StatusScreen::onTouchStart(uint8_t) {
|
||||
|
||||
bool StatusScreen::onTouchEnd(uint8_t tag) {
|
||||
switch (tag) {
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
case 12:
|
||||
if (!jog_xy) {
|
||||
jog_xy = true;
|
||||
injectCommands_P(PSTR("M17"));
|
||||
}
|
||||
jog(0, 0, 0);
|
||||
jog({ 0, 0, 0 });
|
||||
break;
|
||||
case 5:
|
||||
case 6:
|
||||
jog(0, 0, 0);
|
||||
case 5:
|
||||
case 6:
|
||||
jog({ 0, 0, 0 });
|
||||
break;
|
||||
case 9: GOTO_SCREEN(FilesScreen); break;
|
||||
case 9: GOTO_SCREEN(FilesScreen); break;
|
||||
case 10: GOTO_SCREEN(MainMenu); break;
|
||||
case 13: SpinnerDialogBox::enqueueAndWait_P(F("G112")); break;
|
||||
case 14: SpinnerDialogBox::enqueueAndWait_P(F("G28 Z")); break;
|
||||
@@ -291,14 +291,13 @@ bool StatusScreen::onTouchHeld(uint8_t tag) {
|
||||
if (tag >= 1 && tag <= 4 && !jog_xy) return false;
|
||||
const float s = min_speed + (fine_motion ? 0 : (max_speed - min_speed) * sq(increment));
|
||||
switch (tag) {
|
||||
case 1: jog(-s, 0, 0); break;
|
||||
case 2: jog( s, 0, 0); break;
|
||||
case 4: jog( 0, -s, 0); break; // NOTE: Y directions inverted because bed rather than needle moves
|
||||
case 3: jog( 0, s, 0); break;
|
||||
case 5: jog( 0, 0, -s); break;
|
||||
case 6: jog( 0, 0, s); break;
|
||||
case 7:
|
||||
case 8:
|
||||
case 1: jog({-s, 0, 0}); break;
|
||||
case 2: jog({ s, 0, 0}); break;
|
||||
case 4: jog({ 0, -s, 0}); break; // NOTE: Y directions inverted because bed rather than needle moves
|
||||
case 3: jog({ 0, s, 0}); break;
|
||||
case 5: jog({ 0, 0, -s}); break;
|
||||
case 6: jog({ 0, 0, s}); break;
|
||||
case 7: case 8:
|
||||
{
|
||||
if (ExtUI::isMoving()) return false;
|
||||
const feedRate_t feedrate = emin_speed + (fine_motion ? 0 : (emax_speed - emin_speed) * sq(increment));
|
||||
|
@@ -305,8 +305,8 @@ bool ChangeFilamentScreen::onTouchEnd(uint8_t tag) {
|
||||
bool ChangeFilamentScreen::onTouchHeld(uint8_t tag) {
|
||||
if (ExtUI::isMoving()) return false; // Don't allow moves to accumulate
|
||||
constexpr float increment = 1;
|
||||
#define UI_INCREMENT_AXIS(axis) MoveAxisScreen::setManualFeedrate(axis, increment); UI_INCREMENT(AxisPosition_mm, axis);
|
||||
#define UI_DECREMENT_AXIS(axis) MoveAxisScreen::setManualFeedrate(axis, increment); UI_DECREMENT(AxisPosition_mm, axis);
|
||||
#define UI_INCREMENT_AXIS(axis) UI_INCREMENT(AxisPosition_mm, axis);
|
||||
#define UI_DECREMENT_AXIS(axis) UI_DECREMENT(AxisPosition_mm, axis);
|
||||
switch (tag) {
|
||||
case 5: case 7: UI_DECREMENT_AXIS(getExtruder()); break;
|
||||
case 6: case 8: UI_INCREMENT_AXIS(getExtruder()); break;
|
||||
|
@@ -110,8 +110,8 @@ float MoveAxisScreen::getManualFeedrate(uint8_t axis, float increment_mm) {
|
||||
// Compute feedrate so that the tool lags the adjuster when it is
|
||||
// being held down, this allows enough margin for the planner to
|
||||
// connect segments and even out the motion.
|
||||
constexpr float manual_feedrate[XYZE] = MANUAL_FEEDRATE;
|
||||
return min(manual_feedrate[axis] / 60.0f, abs(increment_mm * (TOUCH_REPEATS_PER_SECOND) * 0.80f));
|
||||
constexpr xyze_feedrate_t max_manual_feedrate = MANUAL_FEEDRATE;
|
||||
return min(max_manual_feedrate[axis] / 60.0f, abs(increment_mm * (TOUCH_REPEATS_PER_SECOND) * 0.80f));
|
||||
}
|
||||
|
||||
void MoveAxisScreen::setManualFeedrate(ExtUI::axis_t axis, float increment_mm) {
|
||||
|
@@ -36,9 +36,8 @@ void NudgeNozzleScreen::onEntry() {
|
||||
#if EXTRUDERS > 1
|
||||
screen_data.NudgeNozzleScreen.link_nozzles = true;
|
||||
#endif
|
||||
LOOP_XYZ(i) {
|
||||
screen_data.NudgeNozzleScreen.rel[i] = 0;
|
||||
}
|
||||
screen_data.NudgeNozzleScreen.rel.reset();
|
||||
|
||||
BaseNumericAdjustmentScreen::onEntry();
|
||||
}
|
||||
|
||||
@@ -48,10 +47,10 @@ void NudgeNozzleScreen::onRedraw(draw_mode_t what) {
|
||||
|
||||
w.heading( GET_TEXTF(NUDGE_NOZZLE));
|
||||
#if ENABLED(BABYSTEP_XY)
|
||||
w.color(x_axis).adjuster(2, GET_TEXTF(AXIS_X), screen_data.NudgeNozzleScreen.rel[0] / getAxisSteps_per_mm(X));
|
||||
w.color(y_axis).adjuster(4, GET_TEXTF(AXIS_Y), screen_data.NudgeNozzleScreen.rel[1] / getAxisSteps_per_mm(Y));
|
||||
w.color(x_axis).adjuster(2, GET_TEXTF(AXIS_X), screen_data.NudgeNozzleScreen.rel.x / getAxisSteps_per_mm(X));
|
||||
w.color(y_axis).adjuster(4, GET_TEXTF(AXIS_Y), screen_data.NudgeNozzleScreen.rel.y / getAxisSteps_per_mm(Y));
|
||||
#endif
|
||||
w.color(z_axis).adjuster(6, GET_TEXTF(AXIS_Z), screen_data.NudgeNozzleScreen.rel[2] / getAxisSteps_per_mm(Z));
|
||||
w.color(z_axis).adjuster(6, GET_TEXTF(AXIS_Z), screen_data.NudgeNozzleScreen.rel.z / getAxisSteps_per_mm(Z));
|
||||
w.increments();
|
||||
#if EXTRUDERS > 1
|
||||
w.toggle (8, GET_TEXTF(ADJUST_BOTH_NOZZLES), screen_data.NudgeNozzleScreen.link_nozzles);
|
||||
@@ -90,12 +89,12 @@ bool NudgeNozzleScreen::onTouchHeld(uint8_t tag) {
|
||||
#endif
|
||||
int16_t steps;
|
||||
switch (tag) {
|
||||
case 2: steps = mmToWholeSteps(inc, X); smartAdjustAxis_steps(-steps, X, link); screen_data.NudgeNozzleScreen.rel[0] -= steps; break;
|
||||
case 3: steps = mmToWholeSteps(inc, X); smartAdjustAxis_steps( steps, X, link); screen_data.NudgeNozzleScreen.rel[0] += steps; break;
|
||||
case 4: steps = mmToWholeSteps(inc, Y); smartAdjustAxis_steps(-steps, Y, link); screen_data.NudgeNozzleScreen.rel[1] -= steps; break;
|
||||
case 5: steps = mmToWholeSteps(inc, Y); smartAdjustAxis_steps( steps, Y, link); screen_data.NudgeNozzleScreen.rel[1] += steps; break;
|
||||
case 6: steps = mmToWholeSteps(inc, Z); smartAdjustAxis_steps(-steps, Z, link); screen_data.NudgeNozzleScreen.rel[2] -= steps; break;
|
||||
case 7: steps = mmToWholeSteps(inc, Z); smartAdjustAxis_steps( steps, Z, link); screen_data.NudgeNozzleScreen.rel[2] += steps; break;
|
||||
case 2: steps = mmToWholeSteps(inc, X); smartAdjustAxis_steps(-steps, X, link); screen_data.NudgeNozzleScreen.rel.x -= steps; break;
|
||||
case 3: steps = mmToWholeSteps(inc, X); smartAdjustAxis_steps( steps, X, link); screen_data.NudgeNozzleScreen.rel.x += steps; break;
|
||||
case 4: steps = mmToWholeSteps(inc, Y); smartAdjustAxis_steps(-steps, Y, link); screen_data.NudgeNozzleScreen.rel.y -= steps; break;
|
||||
case 5: steps = mmToWholeSteps(inc, Y); smartAdjustAxis_steps( steps, Y, link); screen_data.NudgeNozzleScreen.rel.y += steps; break;
|
||||
case 6: steps = mmToWholeSteps(inc, Z); smartAdjustAxis_steps(-steps, Z, link); screen_data.NudgeNozzleScreen.rel.z -= steps; break;
|
||||
case 7: steps = mmToWholeSteps(inc, Z); smartAdjustAxis_steps( steps, Z, link); screen_data.NudgeNozzleScreen.rel.z += steps; break;
|
||||
#if EXTRUDERS > 1
|
||||
case 8: screen_data.NudgeNozzleScreen.link_nozzles = !link; break;
|
||||
#endif
|
||||
|
@@ -65,7 +65,7 @@ union screen_data_t {
|
||||
#if ENABLED(BABYSTEPPING)
|
||||
struct {
|
||||
struct base_numeric_adjustment_t placeholder;
|
||||
int16_t rel[XYZ];
|
||||
xyz_int_t rel;
|
||||
#if EXTRUDERS > 1
|
||||
bool link_nozzles;
|
||||
#endif
|
||||
|
@@ -204,33 +204,29 @@ namespace ExtUI {
|
||||
* The axis will continue to jog until this function is
|
||||
* called with all zeros.
|
||||
*/
|
||||
void jog(float dx, float dy, float dz) {
|
||||
void jog(const xyz_float_t &dir) {
|
||||
// The "destination" variable is used as a scratchpad in
|
||||
// Marlin by GCODE routines, but should remain untouched
|
||||
// during manual jogging, allowing us to reuse the space
|
||||
// for our direction vector.
|
||||
destination[X] = dx;
|
||||
destination[Y] = dy;
|
||||
destination[Z] = dz;
|
||||
flags.jogging = !NEAR_ZERO(dx) || !NEAR_ZERO(dy) || !NEAR_ZERO(dz);
|
||||
destination = dir;
|
||||
flags.jogging = !NEAR_ZERO(dir.x) || !NEAR_ZERO(dir.y) || !NEAR_ZERO(dir.z);
|
||||
}
|
||||
|
||||
// Called by the polling routine in "joystick.cpp"
|
||||
void _joystick_update(float (&norm_jog)[XYZ]) {
|
||||
void _joystick_update(xyz_float_t &norm_jog) {
|
||||
if (flags.jogging) {
|
||||
#define OUT_OF_RANGE(VALUE) (VALUE < -1.0f || VALUE > 1.0f)
|
||||
|
||||
if (OUT_OF_RANGE(destination[X_AXIS]) || OUT_OF_RANGE(destination[Y_AXIS]) || OUT_OF_RANGE(destination[Z_AXIS])) {
|
||||
// If destination[] on any axis is out of range, it
|
||||
if (OUT_OF_RANGE(destination.x) || OUT_OF_RANGE(destination.y) || OUT_OF_RANGE(destination.z)) {
|
||||
// If destination on any axis is out of range, it
|
||||
// probably means the UI forgot to stop jogging and
|
||||
// ran GCODE that wrote a position to destination[].
|
||||
// ran GCODE that wrote a position to destination.
|
||||
// To prevent a disaster, stop jogging.
|
||||
flags.jogging = false;
|
||||
return;
|
||||
}
|
||||
norm_jog[X_AXIS] = destination[X_AXIS];
|
||||
norm_jog[Y_AXIS] = destination[Y_AXIS];
|
||||
norm_jog[Z_AXIS] = destination[Z_AXIS];
|
||||
norm_jog = destination;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -328,18 +324,16 @@ namespace ExtUI {
|
||||
float getAxisPosition_mm(const extruder_t extruder) {
|
||||
const extruder_t old_tool = getActiveTool();
|
||||
setActiveTool(extruder, true);
|
||||
const float pos = (
|
||||
const float epos = (
|
||||
#if ENABLED(JOYSTICK)
|
||||
flags.jogging ? destination[E_AXIS] :
|
||||
flags.jogging ? destination.e :
|
||||
#endif
|
||||
current_position[E_AXIS]
|
||||
current_position.e
|
||||
);
|
||||
setActiveTool(old_tool, true);
|
||||
return pos;
|
||||
return epos;
|
||||
}
|
||||
|
||||
constexpr feedRate_t manual_feedrate_mm_m[XYZE] = MANUAL_FEEDRATE;
|
||||
|
||||
void setAxisPosition_mm(const float position, const axis_t axis) {
|
||||
// Start with no limits to movement
|
||||
float min = current_position[axis] - 1000,
|
||||
@@ -350,26 +344,26 @@ namespace ExtUI {
|
||||
if (soft_endstops_enabled) switch (axis) {
|
||||
case X_AXIS:
|
||||
#if ENABLED(MIN_SOFTWARE_ENDSTOP_X)
|
||||
min = soft_endstop[X_AXIS].min;
|
||||
min = soft_endstop.min.x;
|
||||
#endif
|
||||
#if ENABLED(MAX_SOFTWARE_ENDSTOP_X)
|
||||
max = soft_endstop[X_AXIS].max;
|
||||
max = soft_endstop.max.x;
|
||||
#endif
|
||||
break;
|
||||
case Y_AXIS:
|
||||
#if ENABLED(MIN_SOFTWARE_ENDSTOP_Y)
|
||||
min = soft_endstop[Y_AXIS].min;
|
||||
min = soft_endstop.min.y;
|
||||
#endif
|
||||
#if ENABLED(MAX_SOFTWARE_ENDSTOP_Y)
|
||||
max = soft_endstop[Y_AXIS].max;
|
||||
max = soft_endstop.max.y;
|
||||
#endif
|
||||
break;
|
||||
case Z_AXIS:
|
||||
#if ENABLED(MIN_SOFTWARE_ENDSTOP_Z)
|
||||
min = soft_endstop[Z_AXIS].min;
|
||||
min = soft_endstop.min.z;
|
||||
#endif
|
||||
#if ENABLED(MAX_SOFTWARE_ENDSTOP_Z)
|
||||
max = soft_endstop[Z_AXIS].max;
|
||||
max = soft_endstop.max.z;
|
||||
#endif
|
||||
default: break;
|
||||
}
|
||||
@@ -391,8 +385,8 @@ namespace ExtUI {
|
||||
void setAxisPosition_mm(const float position, const extruder_t extruder) {
|
||||
setActiveTool(extruder, true);
|
||||
|
||||
current_position[E_AXIS] = position;
|
||||
line_to_current_position(MMM_TO_MMS(manual_feedrate_mm_m[E_AXIS]));
|
||||
current_position.e = position;
|
||||
line_to_current_position(MMM_TO_MMS(manual_feedrate_mm_m.e));
|
||||
}
|
||||
|
||||
void setActiveTool(const extruder_t extruder, bool no_move) {
|
||||
@@ -652,7 +646,7 @@ namespace ExtUI {
|
||||
}
|
||||
|
||||
float getAxisMaxJerk_mm_s(const extruder_t) {
|
||||
return planner.max_jerk[E_AXIS];
|
||||
return planner.max_jerk.e;
|
||||
}
|
||||
|
||||
void setAxisMaxJerk_mm_s(const float value, const axis_t axis) {
|
||||
@@ -660,7 +654,7 @@ namespace ExtUI {
|
||||
}
|
||||
|
||||
void setAxisMaxJerk_mm_s(const float value, const extruder_t) {
|
||||
planner.max_jerk[E_AXIS] = value;
|
||||
planner.max_jerk.e = value;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -710,7 +704,7 @@ namespace ExtUI {
|
||||
#if EXTRUDERS > 1
|
||||
&& (linked_nozzles || active_extruder == 0)
|
||||
#endif
|
||||
) probe_offset[Z_AXIS] += mm;
|
||||
) probe_offset.z += mm;
|
||||
#else
|
||||
UNUSED(mm);
|
||||
#endif
|
||||
@@ -724,7 +718,7 @@ namespace ExtUI {
|
||||
if (!linked_nozzles) {
|
||||
HOTEND_LOOP()
|
||||
if (e != active_extruder)
|
||||
hotend_offset[axis][e] += mm;
|
||||
hotend_offset[e][axis] += mm;
|
||||
|
||||
normalizeNozzleOffset(X);
|
||||
normalizeNozzleOffset(Y);
|
||||
@@ -748,7 +742,7 @@ namespace ExtUI {
|
||||
|
||||
float getZOffset_mm() {
|
||||
#if HAS_BED_PROBE
|
||||
return probe_offset[Z_AXIS];
|
||||
return probe_offset.z;
|
||||
#elif ENABLED(BABYSTEP_DISPLAY_TOTAL)
|
||||
return babystep.axis_total[BS_TOTAL_AXIS(Z_AXIS) + 1];
|
||||
#else
|
||||
@@ -759,7 +753,7 @@ namespace ExtUI {
|
||||
void setZOffset_mm(const float value) {
|
||||
#if HAS_BED_PROBE
|
||||
if (WITHIN(value, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX))
|
||||
probe_offset[Z_AXIS] = value;
|
||||
probe_offset.z = value;
|
||||
#elif ENABLED(BABYSTEP_DISPLAY_TOTAL)
|
||||
babystep.add_mm(Z_AXIS, (value - babystep.axis_total[BS_TOTAL_AXIS(Z_AXIS) + 1]));
|
||||
#else
|
||||
@@ -771,12 +765,12 @@ namespace ExtUI {
|
||||
|
||||
float getNozzleOffset_mm(const axis_t axis, const extruder_t extruder) {
|
||||
if (extruder - E0 >= HOTENDS) return 0;
|
||||
return hotend_offset[axis][extruder - E0];
|
||||
return hotend_offset[extruder - E0][axis];
|
||||
}
|
||||
|
||||
void setNozzleOffset_mm(const float value, const axis_t axis, const extruder_t extruder) {
|
||||
if (extruder - E0 >= HOTENDS) return;
|
||||
hotend_offset[axis][extruder - E0] = value;
|
||||
hotend_offset[extruder - E0][axis] = value;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -785,8 +779,8 @@ namespace ExtUI {
|
||||
* user to edit the offset the first nozzle).
|
||||
*/
|
||||
void normalizeNozzleOffset(const axis_t axis) {
|
||||
const float offs = hotend_offset[axis][0];
|
||||
HOTEND_LOOP() hotend_offset[axis][e] -= offs;
|
||||
const float offs = hotend_offset[0][axis];
|
||||
HOTEND_LOOP() hotend_offset[e][axis] -= offs;
|
||||
}
|
||||
|
||||
#endif // HAS_HOTEND_OFFSET
|
||||
@@ -820,10 +814,10 @@ namespace ExtUI {
|
||||
bool getMeshValid() { return leveling_is_valid(); }
|
||||
#if HAS_MESH
|
||||
bed_mesh_t& getMeshArray() { return Z_VALUES_ARR; }
|
||||
float getMeshPoint(const uint8_t xpos, const uint8_t ypos) { return Z_VALUES(xpos,ypos); }
|
||||
void setMeshPoint(const uint8_t xpos, const uint8_t ypos, const float zoff) {
|
||||
if (WITHIN(xpos, 0, GRID_MAX_POINTS_X) && WITHIN(ypos, 0, GRID_MAX_POINTS_Y)) {
|
||||
Z_VALUES(xpos, ypos) = zoff;
|
||||
float getMeshPoint(const xy_uint8_t &pos) { return Z_VALUES(pos.x, pos.y); }
|
||||
void setMeshPoint(const xy_uint8_t &pos, const float zoff) {
|
||||
if (WITHIN(pos.x, 0, GRID_MAX_POINTS_X) && WITHIN(pos.y, 0, GRID_MAX_POINTS_Y)) {
|
||||
Z_VALUES(pos.x, pos.y) = zoff;
|
||||
#if ENABLED(ABL_BILINEAR_SUBDIVISION)
|
||||
bed_level_virt_interpolate();
|
||||
#endif
|
||||
|
@@ -81,8 +81,8 @@ namespace ExtUI {
|
||||
void enableHeater(const extruder_t);
|
||||
|
||||
#if ENABLED(JOYSTICK)
|
||||
void jog(float dx, float dy, float dz);
|
||||
void _joystick_update(float (&norm_jog)[XYZ]);
|
||||
void jog(const xyz_float_t &dir);
|
||||
void _joystick_update(xyz_float_t &norm_jog);
|
||||
#endif
|
||||
|
||||
/**
|
||||
@@ -135,9 +135,10 @@ namespace ExtUI {
|
||||
bool getMeshValid();
|
||||
#if HAS_MESH
|
||||
bed_mesh_t& getMeshArray();
|
||||
float getMeshPoint(const uint8_t xpos, const uint8_t ypos);
|
||||
void setMeshPoint(const uint8_t xpos, const uint8_t ypos, const float zval);
|
||||
float getMeshPoint(const xy_uint8_t &pos);
|
||||
void setMeshPoint(const xy_uint8_t &pos, const float zval);
|
||||
void onMeshUpdate(const uint8_t xpos, const uint8_t ypos, const float zval);
|
||||
inline void onMeshUpdate(const xy_uint8_t &pos, const float zval) { setMeshPoint(pos, zval); }
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
Reference in New Issue
Block a user