Browse Source

Touch UI "Leveling" menu, misc. fixes (#19349)

Marcio T 3 years ago
parent
commit
872516f9f9
No account linked to committer's email address

+ 3
- 0
Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp View File

@@ -736,6 +736,7 @@
736 736
       uint8_t count = GRID_MAX_POINTS;
737 737
 
738 738
       mesh_index_pair best;
739
+      TERN_(EXTENSIBLE_UI, ExtUI::onMeshUpdate(best.pos, ExtUI::MESH_START));
739 740
       do {
740 741
         if (do_ubl_mesh_map) display_map(g29_map_type);
741 742
 
@@ -775,6 +776,8 @@
775 776
 
776 777
       } while (best.pos.x >= 0 && --count);
777 778
 
779
+      TERN_(EXTENSIBLE_UI, ExtUI::onMeshUpdate(best.pos, ExtUI::MESH_FINISH));
780
+
778 781
       // Release UI during stow to allow for PAUSE_BEFORE_DEPLOY_STOW
779 782
       TERN_(HAS_LCD_MENU, ui.release());
780 783
       probe.stow();

+ 26
- 15
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/ftdi_eve_lib/extras/poly_ui.h View File

@@ -16,7 +16,7 @@
16 16
  *   GNU General Public License for more details.                           *
17 17
  *                                                                          *
18 18
  *   To view a copy of the GNU General Public License, go to the following  *
19
- *   location: <https://www.gnu.org/licenses/>.                              *
19
+ *   location: <https://www.gnu.org/licenses/>.                             *
20 20
  ****************************************************************************/
21 21
 
22 22
 #pragma once
@@ -36,7 +36,7 @@
36 36
  *
37 37
  *   PolyReader r(data, N_ELEMENTS(data));
38 38
  *
39
- *   for(r.start();r.has_more(); r.next()) {
39
+ *   for (r.start();r.has_more(); r.next()) {
40 40
  *     uint16_t x = r.x;
41 41
  *     uint16_t y = r.y;
42 42
  *
@@ -107,8 +107,8 @@ class PolyReader {
107 107
       }
108 108
     }
109 109
 
110
-    bool has_more()       {return p != NULL;}
111
-    bool end_of_loop()    {return start_x == eol;}
110
+    bool has_more()       { return p != NULL; }
111
+    bool end_of_loop()    { return start_x == eol; }
112 112
 };
113 113
 
114 114
 /**
@@ -129,7 +129,7 @@ class TransformedPolyReader : public PolyReader {
129 129
      */
130 130
     static constexpr uint8_t fract_bits = 5;
131 131
     typedef int16_t fix_t;
132
-    fix_t makefix(float f) {return f * (1 << fract_bits);}
132
+    fix_t makefix(float f) { return f * (1 << fract_bits); }
133 133
 
134 134
     // First two rows of 3x3 transformation matrix
135 135
     fix_t a, b, c;
@@ -254,6 +254,13 @@ class GenericPolyUI {
254 254
     draw_mode_t mode;
255 255
 
256 256
   public:
257
+    enum ButtonStyle : uint8_t {
258
+      FILL    = 1,
259
+      STROKE  = 2,
260
+      SHADOW  = 4,
261
+      REGULAR = 7
262
+    };
263
+
257 264
     typedef POLY_READER poly_reader_t;
258 265
 
259 266
     GenericPolyUI(CommandProcessor &c, draw_mode_t what = BOTH) : cmd(c), mode(what) {}
@@ -276,7 +283,7 @@ class GenericPolyUI {
276 283
       Polygon p(cmd);
277 284
       p.begin_fill();
278 285
       p.begin_loop();
279
-      for(r.start();r.has_more();r.next()) {
286
+      for (r.start();r.has_more();r.next()) {
280 287
         p(r.x * 16, r.y * 16);
281 288
         if (r.end_of_loop()) {
282 289
           p.end_loop();
@@ -306,7 +313,7 @@ class GenericPolyUI {
306 313
       Polygon p(cmd);
307 314
       p.begin_stroke();
308 315
       p.begin_loop();
309
-      for(r.start();r.has_more(); r.next()) {
316
+      for (r.start();r.has_more(); r.next()) {
310 317
         p(r.x * 16, r.y * 16);
311 318
         if (r.end_of_loop()) {
312 319
           p.end_loop();
@@ -323,7 +330,7 @@ class GenericPolyUI {
323 330
       int16_t y_min = INT16_MAX;
324 331
       int16_t x_max = INT16_MIN;
325 332
       int16_t y_max = INT16_MIN;
326
-      for(r.start(); r.has_more(); r.next()) {
333
+      for (r.start(); r.has_more(); r.next()) {
327 334
         x_min = min(x_min, int16_t(r.x));
328 335
         x_max = max(x_max, int16_t(r.x));
329 336
         y_min = min(y_min, int16_t(r.y));
@@ -355,11 +362,11 @@ class GenericPolyUI {
355 362
       btn_shadow_depth = depth;
356 363
     }
357 364
 
358
-    void button(const uint8_t tag, poly_reader_t r) {
365
+    void button(const uint8_t tag, poly_reader_t r, uint8_t style = REGULAR) {
359 366
       using namespace FTDI;
360 367
       // Draw the shadow
361 368
       #if FTDI_API_LEVEL >= 810
362
-      if (mode & BACKGROUND) {
369
+      if (mode & BACKGROUND && style & SHADOW) {
363 370
         cmd.cmd(SAVE_CONTEXT());
364 371
         cmd.cmd(TAG(tag));
365 372
         cmd.cmd(VERTEX_TRANSLATE_X(btn_shadow_depth * 16));
@@ -381,11 +388,15 @@ class GenericPolyUI {
381 388
         #endif
382 389
         // Draw the fill and stroke
383 390
         cmd.cmd(TAG(tag));
384
-        cmd.cmd(COLOR_RGB(btn_fill_color));
385
-        fill(r, false);
386
-        cmd.cmd(COLOR_RGB(btn_stroke_color));
387
-        cmd.cmd(LINE_WIDTH(btn_stroke_width));
388
-        stroke(r);
391
+        if (style & FILL) {
392
+          cmd.cmd(COLOR_RGB(btn_fill_color));
393
+          fill(r, false);
394
+        }
395
+        if (style & STROKE) {
396
+          cmd.cmd(COLOR_RGB(btn_stroke_color));
397
+          cmd.cmd(LINE_WIDTH(btn_stroke_width));
398
+          stroke(r);
399
+        }
389 400
         cmd.cmd(RESTORE_CONTEXT());
390 401
       }
391 402
     }

+ 2
- 1
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/language/language_en.h View File

@@ -145,7 +145,8 @@ namespace Language_en {
145 145
   PROGMEM Language_Str MSG_TOUCH_CALIBRATION_PROMPT = u8"Touch the dots to calibrate";
146 146
   PROGMEM Language_Str MSG_AUTOLEVEL_X_AXIS         = u8"Level X Axis";
147 147
   PROGMEM Language_Str MSG_BED_MAPPING_DONE         = u8"Bed mapping finished";
148
-  PROGMEM Language_Str MSG_RESET_BLTOUCH            = u8"Reset BLTouch";
148
+  PROGMEM Language_Str MSG_LEVELING                 = u8"Leveling";
149
+  PROGMEM Language_Str MSG_SHOW_MESH                = u8"Show Bed Mesh";
149 150
 
150 151
   #ifdef TOUCH_UI_LULZBOT_BIO
151 152
     PROGMEM Language_Str MSG_MOVE_TO_HOME           = u8"Move to Home";

+ 8
- 12
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/advanced_settings_menu.cpp View File

@@ -55,11 +55,11 @@ void AdvancedSettingsMenu::onRedraw(draw_mode_t what) {
55 55
       #define ACCELERATION_POS        BTN_POS(2,5), BTN_SIZE(1,1)
56 56
       #define ENDSTOPS_POS            BTN_POS(1,6), BTN_SIZE(1,1)
57 57
       #define JERK_POS                BTN_POS(2,6), BTN_SIZE(1,1)
58
-      #define OFFSETS_POS             BTN_POS(1,7), BTN_SIZE(1,1)
58
+      #define CASE_LIGHT_POS          BTN_POS(1,7), BTN_SIZE(1,1)
59 59
       #define BACKLASH_POS            BTN_POS(2,7), BTN_SIZE(1,1)
60
-      #define CASE_LIGHT_POS          BTN_POS(1,8), BTN_SIZE(1,1)
60
+      #define OFFSETS_POS             BTN_POS(1,8), BTN_SIZE(1,1)
61 61
       #define TMC_HOMING_THRS_POS     BTN_POS(2,8), BTN_SIZE(1,1)
62
-      #if EITHER(CASE_LIGHT_ENABLE, SENSORLESS_HOMING)
62
+      #if EITHER(HAS_MULTI_HOTEND, SENSORLESS_HOMING)
63 63
         #define BACK_POS              BTN_POS(1,9), BTN_SIZE(2,1)
64 64
       #else
65 65
         #define BACK_POS              BTN_POS(1,8), BTN_SIZE(2,1)
@@ -98,8 +98,8 @@ void AdvancedSettingsMenu::onRedraw(draw_mode_t what) {
98 98
       .tag(13).button( TMC_CURRENT_POS,        GET_TEXT_F(MSG_TMC_CURRENT))
99 99
       .enabled(ENABLED(SENSORLESS_HOMING))
100 100
       .tag(14).button( TMC_HOMING_THRS_POS,    GET_TEXT_F(MSG_TMC_HOMING_THRS))
101
-      .enabled(EITHER(HAS_MULTI_HOTEND, BLTOUCH))
102
-      .tag(4) .button( OFFSETS_POS,            GET_TEXT_F(TERN(HAS_MULTI_HOTEND, MSG_OFFSETS_MENU, MSG_RESET_BLTOUCH)))
101
+      .enabled(ENABLED(HAS_MULTI_HOTEND))
102
+      .tag(4) .button( OFFSETS_POS,            GET_TEXT_F(MSG_OFFSETS_MENU))
103 103
       .enabled(EITHER(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR))
104 104
       .tag(11).button( FILAMENT_POS,           GET_TEXT_F(MSG_FILAMENT))
105 105
       .tag(12).button( ENDSTOPS_POS,           GET_TEXT_F(MSG_LCD_ENDSTOPS))
@@ -123,13 +123,9 @@ bool AdvancedSettingsMenu::onTouchEnd(uint8_t tag) {
123 123
     case  2: GOTO_SCREEN(ZOffsetScreen);              break;
124 124
     #endif
125 125
     case  3: GOTO_SCREEN(StepsScreen);                break;
126
-    case  4:
127
-      #if HAS_MULTI_HOTEND
128
-        GOTO_SCREEN(NozzleOffsetScreen);
129
-      #elif ENABLED(BLTOUCH)
130
-        injectCommands_P(PSTR("M280 P0 S60"));
131
-      #endif
132
-      break;
126
+    #if ENABLED(HAS_MULTI_HOTEND)
127
+    case  4: GOTO_SCREEN(NozzleOffsetScreen);         break;
128
+    #endif
133 129
     case  5: GOTO_SCREEN(MaxVelocityScreen);          break;
134 130
     case  6: GOTO_SCREEN(DefaultAccelerationScreen);  break;
135 131
     case  7: GOTO_SCREEN(TERN(HAS_JUNCTION_DEVIATION, JunctionDeviationScreen, JerkScreen)); break;

+ 31
- 12
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/bed_mesh_screen.cpp View File

@@ -222,7 +222,8 @@ bool BedMeshScreen::tagToPoint(uint8_t tag, uint8_t &x, uint8_t &y) {
222 222
 
223 223
 void BedMeshScreen::onEntry() {
224 224
   screen_data.BedMeshScreen.highlightedTag = 0;
225
-  screen_data.BedMeshScreen.count = 0;
225
+  screen_data.BedMeshScreen.count = GRID_MAX_POINTS;
226
+  screen_data.BedMeshScreen.showMappingDone = false;
226 227
   BaseScreen::onEntry();
227 228
 }
228 229
 
@@ -251,6 +252,10 @@ void BedMeshScreen::drawHighlightedPointValue() {
251 252
      .colors(action_btn)
252 253
      .tag(1).button( OKAY_POS, GET_TEXT_F(MSG_BUTTON_OKAY))
253 254
      .tag(0);
255
+
256
+  if (screen_data.BedMeshScreen.showMappingDone) {
257
+    cmd.text(MESSAGE_POS, GET_TEXT_F(MSG_BED_MAPPING_DONE));
258
+  }
254 259
 }
255 260
 
256 261
 void BedMeshScreen::onRedraw(draw_mode_t what) {
@@ -270,17 +275,13 @@ void BedMeshScreen::onRedraw(draw_mode_t what) {
270 275
 
271 276
   if (what & FOREGROUND) {
272 277
     constexpr float autoscale_max_amplitude = 0.03;
273
-    const bool levelingFinished = screen_data.BedMeshScreen.count >= GRID_MAX_POINTS;
274
-    const float levelingProgress = sq(float(screen_data.BedMeshScreen.count) / GRID_MAX_POINTS);
275
-    if (levelingFinished) {
278
+    const bool gotAllPoints = screen_data.BedMeshScreen.count >= GRID_MAX_POINTS;
279
+    if (gotAllPoints) {
276 280
       drawHighlightedPointValue();
277
-      CommandProcessor cmd;
278
-      cmd.font(Theme::font_medium)
279
-         .text(MESSAGE_POS, GET_TEXT_F(MSG_BED_MAPPING_DONE));
280 281
     }
281
-
282
+    const float levelingProgress = sq(float(screen_data.BedMeshScreen.count) / GRID_MAX_POINTS);
282 283
     BedMeshScreen::drawMesh(INSET_POS(MESH_POS), ExtUI::getMeshArray(),
283
-      USE_POINTS | USE_HIGHLIGHT | USE_AUTOSCALE | (levelingFinished ? USE_COLORS : 0),
284
+      USE_POINTS | USE_HIGHLIGHT | USE_AUTOSCALE | (gotAllPoints ? USE_COLORS : 0),
284 285
       autoscale_max_amplitude * levelingProgress
285 286
     );
286 287
   }
@@ -307,11 +308,29 @@ void BedMeshScreen::onMeshUpdate(const int8_t, const int8_t, const float) {
307 308
 }
308 309
 
309 310
 void BedMeshScreen::onMeshUpdate(const int8_t x, const int8_t y, const ExtUI::probe_state_t state) {
310
-  if (state == ExtUI::PROBE_FINISH) {
311
-    screen_data.BedMeshScreen.highlightedTag = pointToTag(x, y);
312
-    screen_data.BedMeshScreen.count++;
311
+  switch(state) {
312
+    case ExtUI::MESH_START:
313
+      screen_data.BedMeshScreen.count = 0;
314
+      screen_data.BedMeshScreen.showMappingDone = false;
315
+      break;
316
+    case ExtUI::MESH_FINISH:
317
+      screen_data.BedMeshScreen.count = GRID_MAX_POINTS;
318
+      screen_data.BedMeshScreen.showMappingDone = true;
319
+      break;
320
+    case ExtUI::PROBE_START:
321
+      screen_data.BedMeshScreen.highlightedTag = pointToTag(x, y);
322
+      break;
323
+    case ExtUI::PROBE_FINISH:
324
+      screen_data.BedMeshScreen.count++;
325
+      break;
313 326
   }
314 327
   BedMeshScreen::onMeshUpdate(x, y, 0);
315 328
 }
316 329
 
330
+void BedMeshScreen::startMeshProbe() {
331
+  GOTO_SCREEN(BedMeshScreen);
332
+  screen_data.BedMeshScreen.count = 0;
333
+  injectCommands_P(PSTR(BED_LEVELING_COMMANDS));
334
+}
335
+
317 336
 #endif // TOUCH_UI_FTDI_EVE && HAS_MESH

+ 20
- 15
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/bio_status_screen.cpp View File

@@ -29,7 +29,9 @@
29 29
 
30 30
 #include "../ftdi_eve_lib/extras/poly_ui.h"
31 31
 
32
-#ifdef TOUCH_UI_PORTRAIT
32
+#if ENABLED(TOUCH_UI_COCOA_PRESS)
33
+  #include "cocoa_press_ui.h"
34
+#elif ENABLED(TOUCH_UI_PORTRAIT)
33 35
   #include "bio_printer_ui_portrait.h"
34 36
 #else
35 37
   #include "bio_printer_ui_landscape.h"
@@ -100,7 +102,7 @@ void StatusScreen::draw_temperature(draw_mode_t what) {
100 102
       // heating zones, but has no bed temperature
101 103
 
102 104
       cmd.cmd(COLOR_RGB(bg_text_enabled));
103
-      cmd.font(font_medium);
105
+      cmd.font(font_xsmall);
104 106
 
105 107
       ui.bounds(POLY(h0_label), x, y, h, v);
106 108
       cmd.text(x, y, h, v, GET_TEXT_F(MSG_ZONE_1));
@@ -221,7 +223,7 @@ void StatusScreen::draw_syringe(draw_mode_t what) {
221 223
     ui.color(syringe_rgb);
222 224
     ui.fill(POLY(syringe_outline));
223 225
 
224
-    ui.color(fill_rgb);
226
+    ui.color(fluid_rgb);
225 227
     ui.bounds(POLY(syringe_fluid), x, y, h, v);
226 228
     cmd.cmd(SAVE_CONTEXT());
227 229
     cmd.cmd(SCISSOR_XY(x,y + v * (1.0 - fill_level)));
@@ -245,23 +247,25 @@ void StatusScreen::draw_arrows(draw_mode_t what) {
245 247
   ui.button_stroke(stroke_rgb, 28);
246 248
   ui.button_shadow(shadow_rgb, shadow_depth);
247 249
 
250
+  constexpr uint8_t style = TERN(TOUCH_UI_COCOA_PRESS, PolyUI::FILL | PolyUI::SHADOW, PolyUI::REGULAR);
251
+
248 252
   if ((what & BACKGROUND) || jog_xy) {
249
-    ui.button(1, POLY(x_neg));
250
-    ui.button(2, POLY(x_pos));
251
-    ui.button(3, POLY(y_neg));
252
-    ui.button(4, POLY(y_pos));
253
+    ui.button(1, POLY(x_neg), style);
254
+    ui.button(2, POLY(x_pos), style);
255
+    ui.button(3, POLY(y_neg), style);
256
+    ui.button(4, POLY(y_pos), style);
253 257
   }
254 258
 
255 259
   if ((what & BACKGROUND) || z_homed) {
256
-    ui.button(5, POLY(z_neg));
257
-    ui.button(6, POLY(z_pos));
260
+    ui.button(5, POLY(z_neg), style);
261
+    ui.button(6, POLY(z_pos), style);
258 262
   }
259 263
 
260 264
   if ((what & BACKGROUND) || e_homed) {
261 265
     #if DISABLED(TOUCH_UI_COCOA_PRESS)
262
-      ui.button(7, POLY(e_neg));
266
+      ui.button(7, POLY(e_neg), style);
263 267
     #endif
264
-    ui.button(8, POLY(e_pos));
268
+    ui.button(8, POLY(e_pos), style);
265 269
   }
266 270
 }
267 271
 
@@ -300,13 +304,14 @@ void StatusScreen::draw_overlay_icons(draw_mode_t what) {
300 304
   PolyUI ui(cmd, what);
301 305
 
302 306
   if (what & FOREGROUND) {
303
-    ui.button_fill  (fill_rgb);
307
+    ui.button_fill  (TERN(TOUCH_UI_COCOA_PRESS, stroke_rgb, fill_rgb);
304 308
     ui.button_stroke(stroke_rgb, 28);
305 309
     ui.button_shadow(shadow_rgb, shadow_depth);
306 310
 
307
-    if (!jog_xy)  ui.button(12, POLY(padlock));
308
-    if (!e_homed) ui.button(13, POLY(home_e));
309
-    if (!z_homed) ui.button(14, POLY(home_z));
311
+    constexpr uint8_t style = TERN(TOUCH_UI_COCOA_PRESS, PolyUI::FILL | PolyUI::SHADOW, PolyUI::REGULAR);
312
+    if (!jog_xy)  ui.button(12, POLY(padlock), style);
313
+    if (!e_homed) ui.button(13, POLY(home_e), style);
314
+    if (!z_homed) ui.button(14, POLY(home_z), style);
310 315
   }
311 316
 }
312 317
 

+ 24
- 41
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/filament_menu.cpp View File

@@ -30,6 +30,22 @@ using namespace FTDI;
30 30
 using namespace ExtUI;
31 31
 using namespace Theme;
32 32
 
33
+#ifdef TOUCH_UI_PORTRAIT
34
+  #define GRID_ROWS 9
35
+  #define GRID_COLS 2
36
+  #define TITLE_POS          BTN_POS(1,1), BTN_SIZE(2,1)
37
+  #define RUNOUT_SENSOR_POS  BTN_POS(1,2), BTN_SIZE(2,1)
38
+  #define LIN_ADVANCE_POS    BTN_POS(1,3), BTN_SIZE(2,1)
39
+  #define BACK_POS           BTN_POS(1,9), BTN_SIZE(2,1)
40
+#else
41
+  #define GRID_ROWS 6
42
+  #define GRID_COLS 2
43
+  #define TITLE_POS          BTN_POS(1,1), BTN_SIZE(2,1)
44
+  #define RUNOUT_SENSOR_POS  BTN_POS(1,2), BTN_SIZE(2,1)
45
+  #define LIN_ADVANCE_POS    BTN_POS(1,3), BTN_SIZE(2,1)
46
+  #define BACK_POS           BTN_POS(1,6), BTN_SIZE(2,1)
47
+#endif
48
+
33 49
 void FilamentMenu::onRedraw(draw_mode_t what) {
34 50
   if (what & BACKGROUND) {
35 51
     CommandProcessor cmd;
@@ -41,47 +57,14 @@ void FilamentMenu::onRedraw(draw_mode_t what) {
41 57
   if (what & FOREGROUND) {
42 58
     CommandProcessor cmd;
43 59
     cmd.font(font_large)
44
-    #ifdef TOUCH_UI_PORTRAIT
45
-      #define GRID_ROWS 9
46
-      #define GRID_COLS 2
47
-         .text  ( BTN_POS(1,1),      BTN_SIZE(2,1), GET_TEXT_F(MSG_FILAMENT))
48
-         .font(font_medium).colors(normal_btn)
49
-         .enabled(
50
-           #if ENABLED(FILAMENT_RUNOUT_SENSOR)
51
-             1
52
-           #endif
53
-         )
54
-      .tag(2).button( BTN_POS(1,2),  BTN_SIZE(2,1), GET_TEXT_F(MSG_RUNOUT_SENSOR))
55
-      .enabled(
56
-        #if ENABLED(LIN_ADVANCE)
57
-          1
58
-        #endif
59
-      )
60
-      .tag(3).button( BTN_POS(1,3),  BTN_SIZE(2,1), GET_TEXT_F(MSG_LINEAR_ADVANCE))
61
-      .colors(action_btn)
62
-      .tag(1) .button( BTN_POS(1,9), BTN_SIZE(2,1), GET_TEXT_F(MSG_BACK));
63
-      #undef GRID_COLS
64
-      #undef GRID_ROWS
65
-    #else
66
-      #define GRID_ROWS 6
67
-      #define GRID_COLS 3
68
-         .text  ( BTN_POS(1,1),      BTN_SIZE(3,1), GET_TEXT_F(MSG_FILAMENT))
69
-         .font(font_medium).colors(normal_btn)
70
-         .enabled(
71
-           #if ENABLED(FILAMENT_RUNOUT_SENSOR)
72
-             1
73
-           #endif
74
-         )
75
-      .tag(2).button( BTN_POS(1,2),  BTN_SIZE(3,1), GET_TEXT_F(MSG_RUNOUT_SENSOR))
76
-      .enabled(
77
-        #if ENABLED(LIN_ADVANCE)
78
-          1
79
-        #endif
80
-      )
81
-      .tag(3).button( BTN_POS(1,3),  BTN_SIZE(3,1), GET_TEXT_F(MSG_LINEAR_ADVANCE))
82
-      .colors(action_btn)
83
-      .tag(1) .button( BTN_POS(1,6), BTN_SIZE(3,1), GET_TEXT_F(MSG_BACK));
84
-    #endif
60
+       .text(TITLE_POS, GET_TEXT_F(MSG_FILAMENT))
61
+       .font(font_medium).colors(normal_btn)
62
+       .enabled(ENABLED(FILAMENT_RUNOUT_SENSOR))
63
+       .tag(2).button(RUNOUT_SENSOR_POS, GET_TEXT_F(MSG_RUNOUT_SENSOR))
64
+       .enabled(ENABLED(LIN_ADVANCE))
65
+       .tag(3).button(LIN_ADVANCE_POS, GET_TEXT_F(MSG_LINEAR_ADVANCE))
66
+       .colors(action_btn)
67
+       .tag(1).button(BACK_POS, GET_TEXT_F(MSG_BACK));
85 68
   }
86 69
 }
87 70
 

+ 1
- 1
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/files_screen.cpp View File

@@ -22,7 +22,7 @@
22 22
 
23 23
 #include "../config.h"
24 24
 
25
-#if ENABLED(TOUCH_UI_FTDI_EVE)
25
+#if BOTH(TOUCH_UI_FTDI_EVE, SDSUPPORT)
26 26
 
27 27
 #include "screens.h"
28 28
 #include "screen_data.h"

+ 13
- 39
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/main_menu.cpp View File

@@ -44,15 +44,14 @@ void MainMenu::onRedraw(draw_mode_t what) {
44 44
     #define ADVANCED_SETTINGS_POS BTN_POS(1,2), BTN_SIZE(2,1)
45 45
     #define FILAMENTCHANGE_POS    BTN_POS(1,3), BTN_SIZE(2,1)
46 46
     #define TEMPERATURE_POS       BTN_POS(1,4), BTN_SIZE(2,1)
47
-    #define MOVE_AXIS_POS         BTN_POS(1,5), BTN_SIZE(1,1)
48
-    #define DISABLE_STEPPERS_POS  BTN_POS(2,5), BTN_SIZE(1,1)
49
-    #define AUTO_HOME_POS         BTN_POS(1,6), BTN_SIZE(1,1)
50
-    #define CLEAN_NOZZLE_POS      BTN_POS(2,6), BTN_SIZE(1,1)
51
-    #define LEVEL_BED_POS         BTN_POS(1,7), BTN_SIZE(1,1)
52
-    #define LEVEL_AXIS_POS        BTN_POS(2,7), BTN_SIZE(1,1)
47
+    #define DISABLE_STEPPERS_POS  BTN_POS(1,5), BTN_SIZE(2,1)
48
+    #define MOVE_AXIS_POS         BTN_POS(1,6), BTN_SIZE(1,1)
49
+    #define LEVELING_POS          BTN_POS(2,6), BTN_SIZE(1,1)
50
+    #define AUTO_HOME_POS         BTN_POS(1,7), BTN_SIZE(1,1)
51
+    #define CLEAN_NOZZLE_POS      BTN_POS(2,7), BTN_SIZE(1,1)
53 52
     #define BACK_POS              BTN_POS(1,8), BTN_SIZE(2,1)
54 53
   #else
55
-    #define GRID_ROWS 6
54
+    #define GRID_ROWS 5
56 55
     #define GRID_COLS 2
57 56
     #define ADVANCED_SETTINGS_POS BTN_POS(1,1), BTN_SIZE(1,1)
58 57
     #define ABOUT_PRINTER_POS     BTN_POS(2,1), BTN_SIZE(1,1)
@@ -62,9 +61,8 @@ void MainMenu::onRedraw(draw_mode_t what) {
62 61
     #define DISABLE_STEPPERS_POS  BTN_POS(2,3), BTN_SIZE(1,1)
63 62
     #define TEMPERATURE_POS       BTN_POS(1,4), BTN_SIZE(1,1)
64 63
     #define FILAMENTCHANGE_POS    BTN_POS(2,4), BTN_SIZE(1,1)
65
-    #define LEVEL_BED_POS         BTN_POS(1,5), BTN_SIZE(1,1)
66
-    #define LEVEL_AXIS_POS        BTN_POS(2,5), BTN_SIZE(1,1)
67
-    #define BACK_POS              BTN_POS(1,6), BTN_SIZE(2,1)
64
+    #define LEVELING_POS          BTN_POS(1,5), BTN_SIZE(1,1)
65
+    #define BACK_POS              BTN_POS(2,5), BTN_SIZE(1,1)
68 66
   #endif
69 67
 
70 68
   if (what & FOREGROUND) {
@@ -101,23 +99,12 @@ void MainMenu::onRedraw(draw_mode_t what) {
101 99
         ))
102 100
        .tag(8).button( ADVANCED_SETTINGS_POS, GET_TEXT_F(MSG_ADVANCED_SETTINGS))
103 101
        .enabled(
104
-         #ifdef PRINTCOUNTER
105
-           1
106
-         #endif
107
-        )
108
-       .enabled(
109
-         #ifdef AXIS_LEVELING_COMMANDS
110
-           1
111
-         #endif
112
-        )
113
-       .tag(9).button( LEVEL_AXIS_POS, GET_TEXT_F(MSG_AUTOLEVEL_X_AXIS))
114
-       .enabled(
115 102
          #ifdef HAS_LEVELING
116 103
            1
117 104
          #endif
118 105
         )
119
-       .tag(10).button( LEVEL_BED_POS, GET_TEXT_F(MSG_LEVEL_BED))
120
-       .tag(11).button( ABOUT_PRINTER_POS, GET_TEXT_F(MSG_INFO_MENU))
106
+       .tag(9).button( LEVELING_POS, GET_TEXT_F(MSG_LEVELING))
107
+       .tag(10).button( ABOUT_PRINTER_POS, GET_TEXT_F(MSG_INFO_MENU))
121 108
        .colors(action_btn)
122 109
        .tag(1).button( BACK_POS, GET_TEXT_F(MSG_BACK));
123 110
   }
@@ -143,23 +130,10 @@ bool MainMenu::onTouchEnd(uint8_t tag) {
143 130
     case 7:  GOTO_SCREEN(ChangeFilamentScreen);                       break;
144 131
     #endif
145 132
     case 8:  GOTO_SCREEN(AdvancedSettingsMenu);                       break;
146
-    #ifdef AXIS_LEVELING_COMMANDS
147
-    case 9: SpinnerDialogBox::enqueueAndWait_P(F(AXIS_LEVELING_COMMANDS)); break;
148
-    #endif
149
-    #if HAS_LEVELING
150
-      case 10:
151
-        #ifndef BED_LEVELING_COMMANDS
152
-          #define BED_LEVELING_COMMANDS "G29"
153
-        #endif
154
-        #if HAS_MESH
155
-          GOTO_SCREEN(BedMeshScreen);
156
-          injectCommands_P(PSTR(BED_LEVELING_COMMANDS));
157
-        #else
158
-          SpinnerDialogBox::enqueueAndWait_P(F(BED_LEVELING_COMMANDS));
159
-        #endif
160
-        break;
133
+    #ifdef HAS_LEVELING
134
+    case 9: GOTO_SCREEN(LevelingMenu);                                break;
161 135
     #endif
162
-    case 11: GOTO_SCREEN(AboutScreen);                                break;
136
+    case 10: GOTO_SCREEN(AboutScreen);                                break;
163 137
     default:
164 138
       return false;
165 139
   }

+ 1
- 0
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/screen_data.h View File

@@ -62,6 +62,7 @@ union screen_data_t {
62 62
   } MoveAxisScreen;
63 63
 #if HAS_MESH
64 64
   struct {
65
+    bool    showMappingDone;
65 66
     uint8_t count;
66 67
     uint8_t highlightedTag;
67 68
   } BedMeshScreen;

+ 10
- 5
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/screens.cpp View File

@@ -56,17 +56,20 @@ SCREEN_TABLE {
56 56
 #if ENABLED(BABYSTEPPING)
57 57
   DECL_SCREEN(NudgeNozzleScreen),
58 58
 #endif
59
-#if HAS_MESH
60
-  DECL_SCREEN(BedMeshScreen),
61
-#endif
62 59
   DECL_SCREEN(MoveAxisScreen),
63 60
   DECL_SCREEN(StepsScreen),
64 61
 #if HAS_TRINAMIC_CONFIG
65 62
   DECL_SCREEN(StepperCurrentScreen),
66 63
   DECL_SCREEN(StepperBumpSensitivityScreen),
67 64
 #endif
68
-#if HAS_BED_PROBE
69
-  DECL_SCREEN(ZOffsetScreen),
65
+#if HAS_LEVELING
66
+  DECL_SCREEN(LevelingMenu),
67
+  #if HAS_BED_PROBE
68
+    DECL_SCREEN(ZOffsetScreen),
69
+  #endif
70
+  #if HAS_MESH
71
+    DECL_SCREEN(BedMeshScreen),
72
+  #endif
70 73
 #endif
71 74
 #if HAS_MULTI_HOTEND
72 75
   DECL_SCREEN(NozzleOffsetScreen),
@@ -100,7 +103,9 @@ SCREEN_TABLE {
100 103
   DECL_SCREEN(InterfaceSettingsScreen),
101 104
   DECL_SCREEN(InterfaceSoundsScreen),
102 105
   DECL_SCREEN(LockScreen),
106
+#if ENABLED(SDSUPPORT)
103 107
   DECL_SCREEN(FilesScreen),
108
+#endif
104 109
   DECL_SCREEN(EndstopStatesScreen),
105 110
 #if ENABLED(TOUCH_UI_LULZBOT_BIO)
106 111
   DECL_SCREEN(BioPrintingDialogBox),

+ 102
- 75
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/screens.h View File

@@ -39,24 +39,37 @@ enum {
39 39
   STATUS_SCREEN_CACHE,
40 40
   MENU_SCREEN_CACHE,
41 41
   TUNE_SCREEN_CACHE,
42
-  ADJUST_OFFSETS_SCREEN_CACHE,
43 42
   ALERT_BOX_CACHE,
44 43
   SPINNER_CACHE,
45 44
   ADVANCED_SETTINGS_SCREEN_CACHE,
46 45
   MOVE_AXIS_SCREEN_CACHE,
47 46
   TEMPERATURE_SCREEN_CACHE,
48 47
   STEPS_SCREEN_CACHE,
49
-  STEPPER_CURRENT_SCREEN_CACHE,
50
-  STEPPER_BUMP_SENSITIVITY_SCREEN_CACHE,
51
-  ZOFFSET_SCREEN_CACHE,
52
-  NOZZLE_OFFSET_SCREEN_CACHE,
53
-  BACKLASH_COMPENSATION_SCREEN_CACHE,
54 48
   MAX_FEEDRATE_SCREEN_CACHE,
55 49
   MAX_VELOCITY_SCREEN_CACHE,
56 50
   MAX_ACCELERATION_SCREEN_CACHE,
57 51
   DEFAULT_ACCELERATION_SCREEN_CACHE,
58
-#if HAS_MESH
59
-  BED_MESH_SCREEN_CACHE,
52
+#if HAS_LEVELING
53
+  LEVELING_SCREEN_CACHE,
54
+  #if HAS_BED_PROBE
55
+    ZOFFSET_SCREEN_CACHE,
56
+  #endif
57
+  #if HAS_MESH
58
+    BED_MESH_SCREEN_CACHE,
59
+  #endif
60
+#endif
61
+#if ENABLED(BABYSTEPPING)
62
+  ADJUST_OFFSETS_SCREEN_CACHE,
63
+#endif
64
+#if HAS_TRINAMIC_CONFIG
65
+  STEPPER_CURRENT_SCREEN_CACHE,
66
+  STEPPER_BUMP_SENSITIVITY_SCREEN_CACHE,
67
+#endif
68
+#if HAS_MULTI_HOTEND
69
+  NOZZLE_OFFSET_SCREEN_CACHE,
70
+#endif
71
+#if ENABLED(BACKLASH_GCODE)
72
+  BACKLASH_COMPENSATION_SCREEN_CACHE,
60 73
 #endif
61 74
 #if HAS_JUNCTION_DEVIATION
62 75
   JUNC_DEV_SCREEN_CACHE,
@@ -82,11 +95,13 @@ enum {
82 95
   PREHEAT_MENU_CACHE,
83 96
   PREHEAT_TIMER_SCREEN_CACHE,
84 97
 #endif
98
+#if ENABLED(SDSUPPORT)
99
+  FILES_SCREEN_CACHE,
100
+#endif
85 101
   CHANGE_FILAMENT_SCREEN_CACHE,
86 102
   INTERFACE_SETTINGS_SCREEN_CACHE,
87 103
   INTERFACE_SOUNDS_SCREEN_CACHE,
88 104
   LOCK_SCREEN_CACHE,
89
-  FILES_SCREEN_CACHE,
90 105
   DISPLAY_TIMINGS_SCREEN_CACHE
91 106
 };
92 107
 
@@ -133,33 +148,6 @@ class AboutScreen : public BaseScreen, public UncachedScreen {
133 148
     static bool onTouchEnd(uint8_t tag);
134 149
 };
135 150
 
136
-#if HAS_MESH
137
-class BedMeshScreen : public BaseScreen, public CachedScreen<BED_MESH_SCREEN_CACHE> {
138
-  private:
139
-    enum MeshOpts {
140
-      USE_POINTS    = 0x01,
141
-      USE_COLORS    = 0x02,
142
-      USE_TAGS      = 0x04,
143
-      USE_HIGHLIGHT = 0x08,
144
-      USE_AUTOSCALE = 0x10
145
-    };
146
-
147
-    static uint8_t pointToTag(uint8_t x, uint8_t y);
148
-    static bool tagToPoint(uint8_t tag, uint8_t &x, uint8_t &y);
149
-    static float getHightlightedValue();
150
-    static void drawHighlightedPointValue();
151
-    static void drawMesh(int16_t x, int16_t y, int16_t w, int16_t h, ExtUI::bed_mesh_t data, uint8_t opts, float autoscale_max = 0.1);
152
-
153
-  public:
154
-    static void onMeshUpdate(const int8_t x, const int8_t y, const float val);
155
-    static void onMeshUpdate(const int8_t x, const int8_t y, const ExtUI::probe_state_t);
156
-    static void onEntry();
157
-    static void onRedraw(draw_mode_t);
158
-    static bool onTouchStart(uint8_t tag);
159
-    static bool onTouchEnd(uint8_t tag);
160
-};
161
-#endif
162
-
163 151
 #if ENABLED(PRINTCOUNTER)
164 152
   class StatisticsScreen : public BaseScreen, public UncachedScreen {
165 153
     public:
@@ -505,21 +493,58 @@ class StepsScreen : public BaseNumericAdjustmentScreen, public CachedScreen<STEP
505 493
   };
506 494
 #endif
507 495
 
508
-#if HAS_BED_PROBE
509
-  class ZOffsetScreen : public BaseNumericAdjustmentScreen, public CachedScreen<ZOFFSET_SCREEN_CACHE> {
496
+#if HAS_MULTI_HOTEND
497
+  class NozzleOffsetScreen : public BaseNumericAdjustmentScreen, public CachedScreen<NOZZLE_OFFSET_SCREEN_CACHE> {
510 498
     public:
499
+      static void onEntry();
511 500
       static void onRedraw(draw_mode_t);
512 501
       static bool onTouchHeld(uint8_t tag);
513 502
   };
514 503
 #endif
515 504
 
516
-#if HAS_MULTI_HOTEND
517
-  class NozzleOffsetScreen : public BaseNumericAdjustmentScreen, public CachedScreen<NOZZLE_OFFSET_SCREEN_CACHE> {
505
+#if HAS_LEVELING
506
+  class LevelingMenu : public BaseScreen, public CachedScreen<LEVELING_SCREEN_CACHE> {
507
+    public:
508
+      static void onRedraw(draw_mode_t);
509
+      static bool onTouchEnd(uint8_t tag);
510
+  };
511
+
512
+  #if HAS_BED_PROBE
513
+    class ZOffsetScreen : public BaseNumericAdjustmentScreen, public CachedScreen<ZOFFSET_SCREEN_CACHE> {
514
+      public:
515
+        static void onRedraw(draw_mode_t);
516
+        static bool onTouchHeld(uint8_t tag);
517
+    };
518
+  #endif
519
+
520
+  #if HAS_MESH
521
+  class BedMeshScreen : public BaseScreen, public CachedScreen<BED_MESH_SCREEN_CACHE> {
522
+    private:
523
+      enum MeshOpts {
524
+        USE_POINTS    = 0x01,
525
+        USE_COLORS    = 0x02,
526
+        USE_TAGS      = 0x04,
527
+        USE_HIGHLIGHT = 0x08,
528
+        USE_AUTOSCALE = 0x10
529
+      };
530
+
531
+      static uint8_t pointToTag(uint8_t x, uint8_t y);
532
+      static bool tagToPoint(uint8_t tag, uint8_t &x, uint8_t &y);
533
+      static float getHightlightedValue();
534
+      static void drawHighlightedPointValue();
535
+      static void drawMesh(int16_t x, int16_t y, int16_t w, int16_t h, ExtUI::bed_mesh_t data, uint8_t opts, float autoscale_max = 0.1);
536
+
518 537
     public:
538
+      static void onMeshUpdate(const int8_t x, const int8_t y, const float val);
539
+      static void onMeshUpdate(const int8_t x, const int8_t y, const ExtUI::probe_state_t);
519 540
       static void onEntry();
520 541
       static void onRedraw(draw_mode_t);
521
-      static bool onTouchHeld(uint8_t tag);
542
+      static bool onTouchStart(uint8_t tag);
543
+      static bool onTouchEnd(uint8_t tag);
544
+
545
+      static void startMeshProbe();
522 546
   };
547
+  #endif
523 548
 #endif
524 549
 
525 550
 #if ENABLED(BABYSTEPPING)
@@ -707,40 +732,42 @@ class LockScreen : public BaseScreen, public CachedScreen<LOCK_SCREEN_CACHE> {
707 732
     static bool onTouchEnd(uint8_t tag);
708 733
 };
709 734
 
710
-class FilesScreen : public BaseScreen, public CachedScreen<FILES_SCREEN_CACHE, FILE_SCREEN_DL_SIZE> {
711
-  private:
712
-    #ifdef TOUCH_UI_PORTRAIT
713
-      static constexpr uint8_t header_h       = 2;
714
-      static constexpr uint8_t footer_h       = 2;
715
-      static constexpr uint8_t files_per_page = 11;
716
-    #else
717
-      static constexpr uint8_t header_h       = 1;
718
-      static constexpr uint8_t footer_h       = 1;
719
-      static constexpr uint8_t files_per_page = 6;
720
-    #endif
721
-
722
-    static uint8_t  getTagForLine(uint8_t line) {return line + 2;}
723
-    static uint8_t  getLineForTag(uint8_t tag)  {return  tag - 2;}
724
-    static uint16_t getFileForTag(uint8_t tag);
725
-    static uint16_t getSelectedFileIndex();
726
-
727
-    inline static const char *getSelectedShortFilename() {return getSelectedFilename(false);}
728
-    inline static const char *getSelectedLongFilename()  {return getSelectedFilename(true);}
729
-    static const char *getSelectedFilename(bool longName);
730
-
731
-    static void drawFileButton(const char* filename, uint8_t tag, bool is_dir, bool is_highlighted);
732
-    static void drawFileList();
733
-    static void drawHeader();
734
-    static void drawFooter();
735
-    static void drawSelectedFile();
736
-
737
-    static void gotoPage(uint8_t);
738
-  public:
739
-    static void onEntry();
740
-    static void onRedraw(draw_mode_t);
741
-    static bool onTouchEnd(uint8_t tag);
742
-    static void onIdle();
743
-};
735
+#if ENABLED(SDSUPPORT)
736
+  class FilesScreen : public BaseScreen, public CachedScreen<FILES_SCREEN_CACHE, FILE_SCREEN_DL_SIZE> {
737
+    private:
738
+      #ifdef TOUCH_UI_PORTRAIT
739
+        static constexpr uint8_t header_h       = 2;
740
+        static constexpr uint8_t footer_h       = 2;
741
+        static constexpr uint8_t files_per_page = 11;
742
+      #else
743
+        static constexpr uint8_t header_h       = 1;
744
+        static constexpr uint8_t footer_h       = 1;
745
+        static constexpr uint8_t files_per_page = 6;
746
+      #endif
747
+
748
+      static uint8_t  getTagForLine(uint8_t line) {return line + 2;}
749
+      static uint8_t  getLineForTag(uint8_t tag)  {return  tag - 2;}
750
+      static uint16_t getFileForTag(uint8_t tag);
751
+      static uint16_t getSelectedFileIndex();
752
+
753
+      inline static const char *getSelectedShortFilename() {return getSelectedFilename(false);}
754
+      inline static const char *getSelectedLongFilename()  {return getSelectedFilename(true);}
755
+      static const char *getSelectedFilename(bool longName);
756
+
757
+      static void drawFileButton(const char* filename, uint8_t tag, bool is_dir, bool is_highlighted);
758
+      static void drawFileList();
759
+      static void drawHeader();
760
+      static void drawFooter();
761
+      static void drawSelectedFile();
762
+
763
+      static void gotoPage(uint8_t);
764
+    public:
765
+      static void onEntry();
766
+      static void onRedraw(draw_mode_t);
767
+      static bool onTouchEnd(uint8_t tag);
768
+      static void onIdle();
769
+  };
770
+#endif
744 771
 
745 772
 class EndstopStatesScreen : public BaseScreen, public UncachedScreen {
746 773
   public:

+ 7
- 1
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/theme/colors.h View File

@@ -124,7 +124,13 @@ namespace Theme {
124 124
   constexpr uint32_t shadow_rgb             = gray_color_6;
125 125
   constexpr uint32_t stroke_rgb             = accent_color_1;
126 126
   constexpr uint32_t fill_rgb               = accent_color_3;
127
-  constexpr uint32_t syringe_rgb            = accent_color_5;
127
+  #if ENABLED(TOUCH_UI_COCOA_PRESS)
128
+    constexpr uint32_t syringe_rgb          = 0xFFFFFF;
129
+    constexpr uint32_t fluid_rgb            = accent_color_5;
130
+  #else                                    
131
+    constexpr uint32_t syringe_rgb          = accent_color_5;
132
+    constexpr uint32_t fluid_rgb            = accent_color_3;
133
+  #endif
128 134
 
129 135
   #if ENABLED(TOUCH_UI_ROYAL_THEME)
130 136
     constexpr uint32_t x_axis               = hsl_to_rgb(0,   1.00, 0.26);

+ 4
- 0
Marlin/src/lcd/extui/ui_api.cpp View File

@@ -544,11 +544,13 @@ namespace ExtUI {
544 544
 
545 545
   void setAxisSteps_per_mm(const float value, const axis_t axis) {
546 546
     planner.settings.axis_steps_per_mm[axis] = value;
547
+    planner.refresh_positioning();
547 548
   }
548 549
 
549 550
   void setAxisSteps_per_mm(const float value, const extruder_t extruder) {
550 551
     UNUSED_E(extruder);
551 552
     planner.settings.axis_steps_per_mm[E_AXIS_N(extruder - E0)] = value;
553
+    planner.refresh_positioning();
552 554
   }
553 555
 
554 556
   feedRate_t getAxisMaxFeedrate_mm_s(const axis_t axis) {
@@ -580,11 +582,13 @@ namespace ExtUI {
580 582
 
581 583
   void setAxisMaxAcceleration_mm_s2(const float value, const axis_t axis) {
582 584
     planner.set_max_acceleration(axis, value);
585
+    planner.reset_acceleration_rates();
583 586
   }
584 587
 
585 588
   void setAxisMaxAcceleration_mm_s2(const float value, const extruder_t extruder) {
586 589
     UNUSED_E(extruder);
587 590
     planner.set_max_acceleration(E_AXIS_N(extruder - E0), value);
591
+    planner.reset_acceleration_rates();
588 592
   }
589 593
 
590 594
   #if HAS_FILAMENT_SENSOR

+ 6
- 1
Marlin/src/lcd/extui/ui_api.h View File

@@ -143,7 +143,12 @@ namespace ExtUI {
143 143
       void onMeshUpdate(const int8_t xpos, const int8_t ypos, const float zval);
144 144
       inline void onMeshUpdate(const xy_int8_t &pos, const float zval) { onMeshUpdate(pos.x, pos.y, zval); }
145 145
 
146
-      typedef enum : unsigned char { PROBE_START, PROBE_FINISH } probe_state_t;
146
+      typedef enum : unsigned char {
147
+        MESH_START,    // Prior to start of probe
148
+        MESH_FINISH,   // Following probe of all points
149
+        PROBE_START,   // Beginning probe of grid location
150
+        PROBE_FINISH   // Finished probe of grid location
151
+      } probe_state_t;
147 152
       void onMeshUpdate(const int8_t xpos, const int8_t ypos, probe_state_t state);
148 153
       inline void onMeshUpdate(const xy_int8_t &pos, probe_state_t state) { onMeshUpdate(pos.x, pos.y, state); }
149 154
     #endif

Loading…
Cancel
Save