Просмотр исходного кода

♻️ Consolidate DGUSScreenHandler class (#24067)

Scott Lahteine 2 лет назад
Родитель
Сommit
ac4fefa49a
Аккаунт пользователя с таким Email не найден

+ 0
- 6
Marlin/src/lcd/extui/dgus/DGUSDisplay.cpp Просмотреть файл

109
   WriteVariable(adr, static_cast<const void*>(&value), sizeof(int8_t));
109
   WriteVariable(adr, static_cast<const void*>(&value), sizeof(int8_t));
110
 }
110
 }
111
 
111
 
112
-#if ENABLED(DGUS_LCD_UI_MKS)
113
-  void DGUSDisplay::MKS_WriteVariable(uint16_t adr, uint8_t value) {
114
-    WriteVariable(adr, static_cast<const void *>(&value), sizeof(uint8_t));
115
-  }
116
-#endif
117
-
118
 void DGUSDisplay::WriteVariable(uint16_t adr, long value) {
112
 void DGUSDisplay::WriteVariable(uint16_t adr, long value) {
119
   union { long l; char lb[4]; } endian;
113
   union { long l; char lb[4]; } endian;
120
   char tmp[4];
114
   char tmp[4];

+ 2
- 3
Marlin/src/lcd/extui/dgus/DGUSDisplay.h Просмотреть файл

50
   DGUS_WAIT_TELEGRAM,  //< LEN received, Waiting for to receive all bytes.
50
   DGUS_WAIT_TELEGRAM,  //< LEN received, Waiting for to receive all bytes.
51
 } rx_datagram_state_t;
51
 } rx_datagram_state_t;
52
 
52
 
53
+constexpr uint16_t swap16(const uint16_t value) { return (value & 0xFFU) << 8U | (value >> 8U); }
54
+
53
 // Low-Level access to the display.
55
 // Low-Level access to the display.
54
 class DGUSDisplay {
56
 class DGUSDisplay {
55
 public:
57
 public:
66
   static void WriteVariable(uint16_t adr, uint8_t value);
68
   static void WriteVariable(uint16_t adr, uint8_t value);
67
   static void WriteVariable(uint16_t adr, int8_t value);
69
   static void WriteVariable(uint16_t adr, int8_t value);
68
   static void WriteVariable(uint16_t adr, long value);
70
   static void WriteVariable(uint16_t adr, long value);
69
-  static void MKS_WriteVariable(uint16_t adr, uint8_t value);
70
-
71
 
71
 
72
   // Utility functions for bridging ui_api and dbus
72
   // Utility functions for bridging ui_api and dbus
73
   template<typename T, float(*Getter)(const T), T selector, typename WireType=uint16_t>
73
   template<typename T, float(*Getter)(const T), T selector, typename WireType=uint16_t>
105
   static void WritePGM(const char str[], uint8_t len);
105
   static void WritePGM(const char str[], uint8_t len);
106
   static void ProcessRx();
106
   static void ProcessRx();
107
 
107
 
108
-  static uint16_t swap16(const uint16_t value) { return (value & 0xFFU) << 8U | (value >> 8U); }
109
   static rx_datagram_state_t rx_datagram_state;
108
   static rx_datagram_state_t rx_datagram_state;
110
   static uint8_t rx_datagram_len;
109
   static uint8_t rx_datagram_len;
111
   static bool Initialized, no_reentrance;
110
   static bool Initialized, no_reentrance;

+ 1
- 1
Marlin/src/lcd/extui/dgus/DGUSScreenHandler.cpp Просмотреть файл

40
   #include "../../../feature/powerloss.h"
40
   #include "../../../feature/powerloss.h"
41
 #endif
41
 #endif
42
 
42
 
43
-DGUSScreenHandler ScreenHandler;
43
+DGUSScreenHandlerClass ScreenHandler;
44
 
44
 
45
 uint16_t DGUSScreenHandler::ConfirmVP;
45
 uint16_t DGUSScreenHandler::ConfirmVP;
46
 
46
 

+ 1
- 4
Marlin/src/lcd/extui/dgus/DGUSScreenHandler.h Просмотреть файл

42
 
42
 
43
 #endif
43
 #endif
44
 
44
 
45
-// endianness swap
46
-inline uint16_t swap16(const uint16_t value) { return (value & 0xFFU) << 8U | (value >> 8U); }
47
-
48
 #if ENABLED(DGUS_LCD_UI_ORIGIN)
45
 #if ENABLED(DGUS_LCD_UI_ORIGIN)
49
   #include "origin/DGUSScreenHandler.h"
46
   #include "origin/DGUSScreenHandler.h"
50
 #elif ENABLED(DGUS_LCD_UI_MKS)
47
 #elif ENABLED(DGUS_LCD_UI_MKS)
55
   #include "hiprecy/DGUSScreenHandler.h"
52
   #include "hiprecy/DGUSScreenHandler.h"
56
 #endif
53
 #endif
57
 
54
 
58
-extern DGUSScreenHandler ScreenHandler;
55
+extern DGUSScreenHandlerClass ScreenHandler;
59
 
56
 
60
 // Helper to define a DGUS_VP_Variable for common use-cases.
57
 // Helper to define a DGUS_VP_Variable for common use-cases.
61
 #define VPHELPER(VPADR, VPADRVAR, RXFPTR, TXFPTR) { \
58
 #define VPHELPER(VPADR, VPADRVAR, RXFPTR, TXFPTR) { \

+ 241
- 0
Marlin/src/lcd/extui/dgus/DGUSScreenHandlerBase.h Просмотреть файл

1
+/**
2
+ * Marlin 3D Printer Firmware
3
+ * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
4
+ *
5
+ * Based on Sprinter and grbl.
6
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
7
+ *
8
+ * This program is free software: you can redistribute it and/or modify
9
+ * it under the terms of the GNU General Public License as published by
10
+ * the Free Software Foundation, either version 3 of the License, or
11
+ * (at your option) any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
+ * GNU General Public License for more details.
17
+ *
18
+ * You should have received a copy of the GNU General Public License
19
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
20
+ *
21
+ */
22
+#pragma once
23
+
24
+#include "DGUSDisplay.h"
25
+#include "DGUSVPVariable.h"
26
+#include "DGUSDisplayDef.h"
27
+
28
+#include "../../../inc/MarlinConfig.h"
29
+
30
+enum DGUSLCD_Screens : uint8_t;
31
+
32
+class DGUSScreenHandler {
33
+public:
34
+  DGUSScreenHandler() = default;
35
+
36
+  static bool loop();
37
+
38
+  // Send all 4 strings that are displayed on the infoscreen, confirmation screen and kill screen
39
+  // The bools specifying whether the strings are in RAM or FLASH.
40
+  static void sendinfoscreen(PGM_P const line1, PGM_P const line2, PGM_P const line3, PGM_P const line4, bool l1inflash, bool l2inflash, bool l3inflash, bool liinflash);
41
+  static void sendinfoscreen(FSTR_P const line1, FSTR_P const line2, PGM_P const line3, PGM_P const line4, bool l1inflash, bool l2inflash, bool l3inflash, bool liinflash) {
42
+    sendinfoscreen(FTOP(line1), FTOP(line2), line3, line4, l1inflash, l2inflash, l3inflash, liinflash);
43
+  }
44
+  static void sendinfoscreen(FSTR_P const line1, FSTR_P const line2, FSTR_P const line3, FSTR_P const line4, bool l1inflash, bool l2inflash, bool l3inflash, bool liinflash) {
45
+    sendinfoscreen(FTOP(line1), FTOP(line2), FTOP(line3), FTOP(line4), l1inflash, l2inflash, l3inflash, liinflash);
46
+  }
47
+
48
+  static void HandleUserConfirmationPopUp(uint16_t ConfirmVP, PGM_P const line1, PGM_P const line2, PGM_P const line3, PGM_P const line4, bool l1inflash, bool l2inflash, bool l3inflash, bool liinflash);
49
+
50
+  // "M117" Message -- msg is a RAM ptr.
51
+  static void setstatusmessage(const char *msg);
52
+  // The same for messages from Flash
53
+  static void setstatusmessagePGM(PGM_P const msg);
54
+  // Callback for VP "Display wants to change screen on idle printer"
55
+  static void ScreenChangeHookIfIdle(DGUS_VP_Variable &var, void *val_ptr);
56
+  // Callback for VP "Screen has been changed"
57
+  static void ScreenChangeHook(DGUS_VP_Variable &var, void *val_ptr);
58
+
59
+  // Callback for VP "All Heaters Off"
60
+  static void HandleAllHeatersOff(DGUS_VP_Variable &var, void *val_ptr);
61
+  // Hook for "Change this temperature"
62
+  static void HandleTemperatureChanged(DGUS_VP_Variable &var, void *val_ptr);
63
+  // Hook for "Change Flowrate"
64
+  static void HandleFlowRateChanged(DGUS_VP_Variable &var, void *val_ptr);
65
+  #if ENABLED(DGUS_UI_MOVE_DIS_OPTION)
66
+    // Hook for manual move option
67
+    static void HandleManualMoveOption(DGUS_VP_Variable &var, void *val_ptr);
68
+  #endif
69
+
70
+  // Hook for manual move.
71
+  static void HandleManualMove(DGUS_VP_Variable &var, void *val_ptr);
72
+  // Hook for manual extrude.
73
+  static void HandleManualExtrude(DGUS_VP_Variable &var, void *val_ptr);
74
+  // Hook for motor lock and unlook
75
+  static void HandleMotorLockUnlock(DGUS_VP_Variable &var, void *val_ptr);
76
+  #if ENABLED(POWER_LOSS_RECOVERY)
77
+    // Hook for power loss recovery.
78
+    static void HandlePowerLossRecovery(DGUS_VP_Variable &var, void *val_ptr);
79
+  #endif
80
+  // Hook for settings
81
+  static void HandleSettings(DGUS_VP_Variable &var, void *val_ptr);
82
+  static void HandleStepPerMMChanged(DGUS_VP_Variable &var, void *val_ptr);
83
+  static void HandleStepPerMMExtruderChanged(DGUS_VP_Variable &var, void *val_ptr);
84
+
85
+  #if HAS_PID_HEATING
86
+    // Hook for "Change this temperature PID para"
87
+    static void HandleTemperaturePIDChanged(DGUS_VP_Variable &var, void *val_ptr);
88
+    // Hook for PID autotune
89
+    static void HandlePIDAutotune(DGUS_VP_Variable &var, void *val_ptr);
90
+  #endif
91
+  #if HAS_BED_PROBE
92
+    // Hook for "Change probe offset z"
93
+    static void HandleProbeOffsetZChanged(DGUS_VP_Variable &var, void *val_ptr);
94
+  #endif
95
+  #if ENABLED(BABYSTEPPING)
96
+    // Hook for live z adjust action
97
+    static void HandleLiveAdjustZ(DGUS_VP_Variable &var, void *val_ptr);
98
+  #endif
99
+  #if HAS_FAN
100
+    // Hook for fan control
101
+    static void HandleFanControl(DGUS_VP_Variable &var, void *val_ptr);
102
+  #endif
103
+  // Hook for heater control
104
+  static void HandleHeaterControl(DGUS_VP_Variable &var, void *val_ptr);
105
+  #if ENABLED(DGUS_PREHEAT_UI)
106
+    // Hook for preheat
107
+    static void HandlePreheat(DGUS_VP_Variable &var, void *val_ptr);
108
+  #endif
109
+  #if ENABLED(DGUS_FILAMENT_LOADUNLOAD)
110
+    // Hook for filament load and unload filament option
111
+    static void HandleFilamentOption(DGUS_VP_Variable &var, void *val_ptr);
112
+    // Hook for filament load and unload
113
+    static void HandleFilamentLoadUnload(DGUS_VP_Variable &var);
114
+  #endif
115
+
116
+  #if ENABLED(SDSUPPORT)
117
+    // Callback for VP "Display wants to change screen when there is a SD card"
118
+    static void ScreenChangeHookIfSD(DGUS_VP_Variable &var, void *val_ptr);
119
+    // Scroll buttons on the file listing screen.
120
+    static void DGUSLCD_SD_ScrollFilelist(DGUS_VP_Variable &var, void *val_ptr);
121
+    // File touched.
122
+    static void DGUSLCD_SD_FileSelected(DGUS_VP_Variable &var, void *val_ptr);
123
+    // start print after confirmation received.
124
+    static void DGUSLCD_SD_StartPrint(DGUS_VP_Variable &var, void *val_ptr);
125
+    // User hit the pause, resume or abort button.
126
+    static void DGUSLCD_SD_ResumePauseAbort(DGUS_VP_Variable &var, void *val_ptr);
127
+    // User confirmed the abort action
128
+    static void DGUSLCD_SD_ReallyAbort(DGUS_VP_Variable &var, void *val_ptr);
129
+    // User hit the tune button
130
+    static void DGUSLCD_SD_PrintTune(DGUS_VP_Variable &var, void *val_ptr);
131
+    // Send a single filename to the display.
132
+    static void DGUSLCD_SD_SendFilename(DGUS_VP_Variable &var);
133
+    // Marlin informed us that a new SD has been inserted.
134
+    static void SDCardInserted();
135
+    // Marlin informed us that the SD Card has been removed().
136
+    static void SDCardRemoved();
137
+    // Marlin informed us about a bad SD Card.
138
+    static void SDCardError();
139
+  #endif
140
+
141
+  // OK Button on the Confirm screen.
142
+  static void ScreenConfirmedOK(DGUS_VP_Variable &var, void *val_ptr);
143
+
144
+  // Update data after going to a new screen (by display or by GotoScreen)
145
+  // remember to store the last-displayed screen so it can be restored.
146
+  // (e.g., for popup messages)
147
+  static void UpdateNewScreen(DGUSLCD_Screens newscreen, bool popup=false);
148
+
149
+  // Recall the remembered screen.
150
+  static void PopToOldScreen();
151
+
152
+  // Make the display show the screen and update all VPs in it.
153
+  static void GotoScreen(DGUSLCD_Screens screen, bool ispopup = false);
154
+
155
+  static void UpdateScreenVPData();
156
+
157
+  // Helpers to convert and transfer data to the display.
158
+  static void DGUSLCD_SendWordValueToDisplay(DGUS_VP_Variable &var);
159
+  static void DGUSLCD_SendStringToDisplay(DGUS_VP_Variable &var);
160
+  static void DGUSLCD_SendStringToDisplayPGM(DGUS_VP_Variable &var);
161
+  static void DGUSLCD_SendTemperaturePID(DGUS_VP_Variable &var);
162
+  static void DGUSLCD_SendPercentageToDisplay(DGUS_VP_Variable &var);
163
+  static void DGUSLCD_SendPrintProgressToDisplay(DGUS_VP_Variable &var);
164
+  static void DGUSLCD_SendPrintTimeToDisplay(DGUS_VP_Variable &var);
165
+
166
+  #if ENABLED(PRINTCOUNTER)
167
+    static void DGUSLCD_SendPrintAccTimeToDisplay(DGUS_VP_Variable &var);
168
+    static void DGUSLCD_SendPrintsTotalToDisplay(DGUS_VP_Variable &var);
169
+  #endif
170
+  #if HAS_FAN
171
+    static void DGUSLCD_SendFanStatusToDisplay(DGUS_VP_Variable &var);
172
+  #endif
173
+  static void DGUSLCD_SendHeaterStatusToDisplay(DGUS_VP_Variable &var);
174
+  #if ENABLED(DGUS_UI_WAITING)
175
+    static void DGUSLCD_SendWaitingStatusToDisplay(DGUS_VP_Variable &var);
176
+  #endif
177
+
178
+  // Send a value from 0..100 to a variable with a range from 0..255
179
+  static void DGUSLCD_PercentageToUint8(DGUS_VP_Variable &var, void *val_ptr);
180
+
181
+  template<typename T>
182
+  static void DGUSLCD_SetValueDirectly(DGUS_VP_Variable &var, void *val_ptr) {
183
+    if (!var.memadr) return;
184
+    union { unsigned char tmp[sizeof(T)]; T t; } x;
185
+    unsigned char *ptr = (unsigned char*)val_ptr;
186
+    LOOP_L_N(i, sizeof(T)) x.tmp[i] = ptr[sizeof(T) - i - 1];
187
+    *(T*)var.memadr = x.t;
188
+  }
189
+
190
+  // Send a float value to the display.
191
+  // Display will get a 4-byte integer scaled to the number of digits:
192
+  // Tell the display the number of digits and it cheats by displaying a dot between...
193
+  template<unsigned int decimals>
194
+  static void DGUSLCD_SendFloatAsLongValueToDisplay(DGUS_VP_Variable &var) {
195
+    if (var.memadr) {
196
+      float f = *(float *)var.memadr;
197
+      f *= cpow(10, decimals);
198
+      dgusdisplay.WriteVariable(var.VP, (long)f);
199
+    }
200
+  }
201
+
202
+  // Send a float value to the display.
203
+  // Display will get a 2-byte integer scaled to the number of digits:
204
+  // Tell the display the number of digits and it cheats by displaying a dot between...
205
+  template<unsigned int decimals>
206
+  static void DGUSLCD_SendFloatAsIntValueToDisplay(DGUS_VP_Variable &var) {
207
+    if (var.memadr) {
208
+      float f = *(float *)var.memadr;
209
+      DEBUG_ECHOLNPAIR_F(" >> ", f, 6);
210
+      f *= cpow(10, decimals);
211
+      dgusdisplay.WriteVariable(var.VP, (int16_t)f);
212
+    }
213
+  }
214
+
215
+  // Force an update of all VP on the current screen.
216
+  static void ForceCompleteUpdate() { update_ptr = 0; ScreenComplete = false; }
217
+  // Has all VPs sent to the screen
218
+  static bool IsScreenComplete() { return ScreenComplete; }
219
+
220
+  static DGUSLCD_Screens getCurrentScreen() { return current_screen; }
221
+
222
+  static void SetupConfirmAction( void (*f)()) { confirm_action_cb = f; }
223
+
224
+protected:
225
+  static DGUSLCD_Screens current_screen;  //< currently on screen
226
+  static constexpr uint8_t NUM_PAST_SCREENS = 4;
227
+  static DGUSLCD_Screens past_screens[NUM_PAST_SCREENS]; //< LIFO with past screens for the "back" button.
228
+
229
+  static uint8_t update_ptr;      //< Last sent entry in the VPList for the actual screen.
230
+  static uint16_t skipVP;         //< When updating the screen data, skip this one, because the user is interacting with it.
231
+  static bool ScreenComplete;     //< All VPs sent to screen?
232
+
233
+  static uint16_t ConfirmVP;      //< context for confirm screen (VP that will be emulated-sent on "OK").
234
+
235
+  #if ENABLED(SDSUPPORT)
236
+    static int16_t top_file;      //< file on top of file chooser
237
+    static int16_t file_to_print; //< touched file to be confirmed
238
+  #endif
239
+
240
+  static void (*confirm_action_cb)();
241
+};

+ 6
- 10
Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp Просмотреть файл

333
     if (filament_data.action == 0) { // Go back to utility screen
333
     if (filament_data.action == 0) { // Go back to utility screen
334
       #if HAS_HOTEND
334
       #if HAS_HOTEND
335
         thermalManager.setTargetHotend(e_temp, ExtUI::extruder_t::E0);
335
         thermalManager.setTargetHotend(e_temp, ExtUI::extruder_t::E0);
336
-      #endif
337
-      #if HAS_MULTI_HOTEND
338
-        thermalManager.setTargetHotend(e_temp, ExtUI::extruder_t::E1);
336
+        #if HAS_MULTI_HOTEND
337
+          thermalManager.setTargetHotend(e_temp, ExtUI::extruder_t::E1);
338
+        #endif
339
       #endif
339
       #endif
340
       GotoScreen(DGUSLCD_SCREEN_UTILITY);
340
       GotoScreen(DGUSLCD_SCREEN_UTILITY);
341
     }
341
     }
348
               thermalManager.setTargetHotend(e_temp, filament_data.extruder);
348
               thermalManager.setTargetHotend(e_temp, filament_data.extruder);
349
               break;
349
               break;
350
           #endif
350
           #endif
351
-          #if HAS_MULTI_EXTRUDER
351
+          #if HAS_MULTI_HOTEND
352
             case VP_E1_FILAMENT_LOAD_UNLOAD:
352
             case VP_E1_FILAMENT_LOAD_UNLOAD:
353
               filament_data.extruder = ExtUI::extruder_t::E1;
353
               filament_data.extruder = ExtUI::extruder_t::E1;
354
               thermalManager.setTargetHotend(e_temp, filament_data.extruder);
354
               thermalManager.setTargetHotend(e_temp, filament_data.extruder);
413
 
413
 
414
     if (!booted && ELAPSED(ms, BOOTSCREEN_TIMEOUT)) {
414
     if (!booted && ELAPSED(ms, BOOTSCREEN_TIMEOUT)) {
415
       booted = true;
415
       booted = true;
416
-
417
-      if (TERN0(POWER_LOSS_RECOVERY, recovery.valid()))
418
-        GotoScreen(DGUSLCD_SCREEN_POWER_LOSS);
419
-      else
420
-        GotoScreen(DGUSLCD_SCREEN_MAIN);
416
+      GotoScreen(TERN0(POWER_LOSS_RECOVERY, recovery.valid()) ? DGUSLCD_SCREEN_POWER_LOSS : DGUSLCD_SCREEN_MAIN);
421
     }
417
     }
422
-
423
   #endif
418
   #endif
419
+
424
   return IsScreenComplete();
420
   return IsScreenComplete();
425
 }
421
 }
426
 
422
 

+ 2
- 217
Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.h Просмотреть файл

21
  */
21
  */
22
 #pragma once
22
 #pragma once
23
 
23
 
24
-#include "../DGUSDisplay.h"
25
-#include "../DGUSVPVariable.h"
26
-#include "../DGUSDisplayDef.h"
24
+#include "../DGUSScreenHandlerBase.h"
27
 
25
 
28
-#include "../../../../inc/MarlinConfig.h"
29
-
30
-enum DGUSLCD_Screens : uint8_t;
31
-
32
-class DGUSScreenHandler {
33
-public:
34
-  DGUSScreenHandler() = default;
35
-
36
-  static bool loop();
37
-
38
-  // Send all 4 strings that are displayed on the infoscreen, confirmation screen and kill screen
39
-  // The bools specifying whether the strings are in RAM or FLASH.
40
-  static void sendinfoscreen(PGM_P const line1, PGM_P const line2, PGM_P const line3, PGM_P const line4, bool l1inflash, bool l2inflash, bool l3inflash, bool liinflash);
41
-  static void sendinfoscreen(FSTR_P const line1, FSTR_P const line2, PGM_P const line3, PGM_P const line4, bool l1inflash, bool l2inflash, bool l3inflash, bool liinflash) {
42
-    sendinfoscreen(FTOP(line1), FTOP(line2), line3, line4, l1inflash, l2inflash, l3inflash, liinflash);
43
-  }
44
-  static void sendinfoscreen(FSTR_P const line1, FSTR_P const line2, FSTR_P const line3, FSTR_P const line4, bool l1inflash, bool l2inflash, bool l3inflash, bool liinflash) {
45
-    sendinfoscreen(FTOP(line1), FTOP(line2), FTOP(line3), FTOP(line4), l1inflash, l2inflash, l3inflash, liinflash);
46
-  }
47
-
48
-  static void HandleUserConfirmationPopUp(uint16_t ConfirmVP, PGM_P const line1, PGM_P const line2, PGM_P const line3, PGM_P const line4, bool l1inflash, bool l2inflash, bool l3inflash, bool liinflash);
49
-
50
-  // "M117" Message -- msg is a RAM ptr.
51
-  static void setstatusmessage(const char *msg);
52
-  // The same for messages from Flash
53
-  static void setstatusmessagePGM(PGM_P const msg);
54
-  // Callback for VP "Display wants to change screen on idle printer"
55
-  static void ScreenChangeHookIfIdle(DGUS_VP_Variable &var, void *val_ptr);
56
-  // Callback for VP "Screen has been changed"
57
-  static void ScreenChangeHook(DGUS_VP_Variable &var, void *val_ptr);
58
-
59
-  // Callback for VP "All Heaters Off"
60
-  static void HandleAllHeatersOff(DGUS_VP_Variable &var, void *val_ptr);
61
-  // Hook for "Change this temperature"
62
-  static void HandleTemperatureChanged(DGUS_VP_Variable &var, void *val_ptr);
63
-  // Hook for "Change Flowrate"
64
-  static void HandleFlowRateChanged(DGUS_VP_Variable &var, void *val_ptr);
65
-  #if ENABLED(DGUS_UI_MOVE_DIS_OPTION)
66
-    // Hook for manual move option
67
-    static void HandleManualMoveOption(DGUS_VP_Variable &var, void *val_ptr);
68
-  #endif
69
-
70
-  // Hook for manual move.
71
-  static void HandleManualMove(DGUS_VP_Variable &var, void *val_ptr);
72
-  // Hook for manual extrude.
73
-  static void HandleManualExtrude(DGUS_VP_Variable &var, void *val_ptr);
74
-  // Hook for motor lock and unlook
75
-  static void HandleMotorLockUnlock(DGUS_VP_Variable &var, void *val_ptr);
76
-  #if ENABLED(POWER_LOSS_RECOVERY)
77
-    // Hook for power loss recovery.
78
-    static void HandlePowerLossRecovery(DGUS_VP_Variable &var, void *val_ptr);
79
-  #endif
80
-  // Hook for settings
81
-  static void HandleSettings(DGUS_VP_Variable &var, void *val_ptr);
82
-  static void HandleStepPerMMChanged(DGUS_VP_Variable &var, void *val_ptr);
83
-  static void HandleStepPerMMExtruderChanged(DGUS_VP_Variable &var, void *val_ptr);
84
-
85
-  #if HAS_PID_HEATING
86
-    // Hook for "Change this temperature PID para"
87
-    static void HandleTemperaturePIDChanged(DGUS_VP_Variable &var, void *val_ptr);
88
-    // Hook for PID autotune
89
-    static void HandlePIDAutotune(DGUS_VP_Variable &var, void *val_ptr);
90
-  #endif
91
-  #if HAS_BED_PROBE
92
-    // Hook for "Change probe offset z"
93
-    static void HandleProbeOffsetZChanged(DGUS_VP_Variable &var, void *val_ptr);
94
-  #endif
95
-  #if ENABLED(BABYSTEPPING)
96
-    // Hook for live z adjust action
97
-    static void HandleLiveAdjustZ(DGUS_VP_Variable &var, void *val_ptr);
98
-  #endif
99
-  #if HAS_FAN
100
-    // Hook for fan control
101
-    static void HandleFanControl(DGUS_VP_Variable &var, void *val_ptr);
102
-  #endif
103
-  // Hook for heater control
104
-  static void HandleHeaterControl(DGUS_VP_Variable &var, void *val_ptr);
105
-  #if ENABLED(DGUS_PREHEAT_UI)
106
-    // Hook for preheat
107
-    static void HandlePreheat(DGUS_VP_Variable &var, void *val_ptr);
108
-  #endif
109
-  #if ENABLED(DGUS_FILAMENT_LOADUNLOAD)
110
-    // Hook for filament load and unload filament option
111
-    static void HandleFilamentOption(DGUS_VP_Variable &var, void *val_ptr);
112
-    // Hook for filament load and unload
113
-    static void HandleFilamentLoadUnload(DGUS_VP_Variable &var);
114
-  #endif
115
-
116
-  #if ENABLED(SDSUPPORT)
117
-    // Callback for VP "Display wants to change screen when there is a SD card"
118
-    static void ScreenChangeHookIfSD(DGUS_VP_Variable &var, void *val_ptr);
119
-    // Scroll buttons on the file listing screen.
120
-    static void DGUSLCD_SD_ScrollFilelist(DGUS_VP_Variable &var, void *val_ptr);
121
-    // File touched.
122
-    static void DGUSLCD_SD_FileSelected(DGUS_VP_Variable &var, void *val_ptr);
123
-    // start print after confirmation received.
124
-    static void DGUSLCD_SD_StartPrint(DGUS_VP_Variable &var, void *val_ptr);
125
-    // User hit the pause, resume or abort button.
126
-    static void DGUSLCD_SD_ResumePauseAbort(DGUS_VP_Variable &var, void *val_ptr);
127
-    // User confirmed the abort action
128
-    static void DGUSLCD_SD_ReallyAbort(DGUS_VP_Variable &var, void *val_ptr);
129
-    // User hit the tune button
130
-    static void DGUSLCD_SD_PrintTune(DGUS_VP_Variable &var, void *val_ptr);
131
-    // Send a single filename to the display.
132
-    static void DGUSLCD_SD_SendFilename(DGUS_VP_Variable &var);
133
-    // Marlin informed us that a new SD has been inserted.
134
-    static void SDCardInserted();
135
-    // Marlin informed us that the SD Card has been removed().
136
-    static void SDCardRemoved();
137
-    // Marlin informed us about a bad SD Card.
138
-    static void SDCardError();
139
-  #endif
140
-
141
-  // OK Button the Confirm screen.
142
-  static void ScreenConfirmedOK(DGUS_VP_Variable &var, void *val_ptr);
143
-
144
-  // Update data after went to new screen (by display or by GotoScreen)
145
-  // remember: store the last-displayed screen, so it can get returned to.
146
-  // (e.g for pop up messages)
147
-  static void UpdateNewScreen(DGUSLCD_Screens newscreen, bool popup=false);
148
-
149
-  // Recall the remembered screen.
150
-  static void PopToOldScreen();
151
-
152
-  // Make the display show the screen and update all VPs in it.
153
-  static void GotoScreen(DGUSLCD_Screens screen, bool ispopup = false);
154
-
155
-  static void UpdateScreenVPData();
156
-
157
-  // Helpers to convert and transfer data to the display.
158
-  static void DGUSLCD_SendWordValueToDisplay(DGUS_VP_Variable &var);
159
-  static void DGUSLCD_SendStringToDisplay(DGUS_VP_Variable &var);
160
-  static void DGUSLCD_SendStringToDisplayPGM(DGUS_VP_Variable &var);
161
-  static void DGUSLCD_SendTemperaturePID(DGUS_VP_Variable &var);
162
-  static void DGUSLCD_SendPercentageToDisplay(DGUS_VP_Variable &var);
163
-  static void DGUSLCD_SendPrintProgressToDisplay(DGUS_VP_Variable &var);
164
-  static void DGUSLCD_SendPrintTimeToDisplay(DGUS_VP_Variable &var);
165
-
166
-  #if ENABLED(PRINTCOUNTER)
167
-    static void DGUSLCD_SendPrintAccTimeToDisplay(DGUS_VP_Variable &var);
168
-    static void DGUSLCD_SendPrintsTotalToDisplay(DGUS_VP_Variable &var);
169
-  #endif
170
-  #if HAS_FAN
171
-    static void DGUSLCD_SendFanStatusToDisplay(DGUS_VP_Variable &var);
172
-  #endif
173
-  static void DGUSLCD_SendHeaterStatusToDisplay(DGUS_VP_Variable &var);
174
-  #if ENABLED(DGUS_UI_WAITING)
175
-    static void DGUSLCD_SendWaitingStatusToDisplay(DGUS_VP_Variable &var);
176
-  #endif
177
-
178
-  // Send a value from 0..100 to a variable with a range from 0..255
179
-  static void DGUSLCD_PercentageToUint8(DGUS_VP_Variable &var, void *val_ptr);
180
-
181
-  template<typename T>
182
-  static void DGUSLCD_SetValueDirectly(DGUS_VP_Variable &var, void *val_ptr) {
183
-    if (!var.memadr) return;
184
-    union { unsigned char tmp[sizeof(T)]; T t; } x;
185
-    unsigned char *ptr = (unsigned char*)val_ptr;
186
-    LOOP_L_N(i, sizeof(T)) x.tmp[i] = ptr[sizeof(T) - i - 1];
187
-    *(T*)var.memadr = x.t;
188
-  }
189
-
190
-  // Send a float value to the display.
191
-  // Display will get a 4-byte integer scaled to the number of digits:
192
-  // Tell the display the number of digits and it cheats by displaying a dot between...
193
-  template<unsigned int decimals>
194
-  static void DGUSLCD_SendFloatAsLongValueToDisplay(DGUS_VP_Variable &var) {
195
-    if (var.memadr) {
196
-      float f = *(float *)var.memadr;
197
-      f *= cpow(10, decimals);
198
-      dgusdisplay.WriteVariable(var.VP, (long)f);
199
-    }
200
-  }
201
-
202
-  // Send a float value to the display.
203
-  // Display will get a 2-byte integer scaled to the number of digits:
204
-  // Tell the display the number of digits and it cheats by displaying a dot between...
205
-  template<unsigned int decimals>
206
-  static void DGUSLCD_SendFloatAsIntValueToDisplay(DGUS_VP_Variable &var) {
207
-    if (var.memadr) {
208
-      float f = *(float *)var.memadr;
209
-      DEBUG_ECHOLNPAIR_F(" >> ", f, 6);
210
-      f *= cpow(10, decimals);
211
-      dgusdisplay.WriteVariable(var.VP, (int16_t)f);
212
-    }
213
-  }
214
-
215
-  // Force an update of all VP on the current screen.
216
-  static void ForceCompleteUpdate() { update_ptr = 0; ScreenComplete = false; }
217
-  // Has all VPs sent to the screen
218
-  static bool IsScreenComplete() { return ScreenComplete; }
219
-
220
-  static DGUSLCD_Screens getCurrentScreen() { return current_screen; }
221
-
222
-  static void SetupConfirmAction( void (*f)()) { confirm_action_cb = f; }
223
-
224
-private:
225
-  static DGUSLCD_Screens current_screen;  //< currently on screen
226
-  static constexpr uint8_t NUM_PAST_SCREENS = 4;
227
-  static DGUSLCD_Screens past_screens[NUM_PAST_SCREENS]; //< LIFO with past screens for the "back" button.
228
-
229
-  static uint8_t update_ptr;      //< Last sent entry in the VPList for the actual screen.
230
-  static uint16_t skipVP;         //< When updating the screen data, skip this one, because the user is interacting with it.
231
-  static bool ScreenComplete;     //< All VPs sent to screen?
232
-
233
-  static uint16_t ConfirmVP;      //< context for confirm screen (VP that will be emulated-sent on "OK").
234
-
235
-  #if ENABLED(SDSUPPORT)
236
-    static int16_t top_file;      //< file on top of file chooser
237
-    static int16_t file_to_print; //< touched file to be confirmed
238
-  #endif
239
-
240
-  static void (*confirm_action_cb)();
241
-};
26
+typedef DGUSScreenHandler DGUSScreenHandlerClass;
242
 
27
 
243
 #if ENABLED(POWER_LOSS_RECOVERY)
28
 #if ENABLED(POWER_LOSS_RECOVERY)
244
   #define PLR_SCREEN_RECOVER DGUSLCD_SCREEN_SDPRINTMANIPULATION
29
   #define PLR_SCREEN_RECOVER DGUSLCD_SCREEN_SDPRINTMANIPULATION

+ 4
- 1
Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp Просмотреть файл

411
     if (!booted && TERN0(POWER_LOSS_RECOVERY, recovery.valid()))
411
     if (!booted && TERN0(POWER_LOSS_RECOVERY, recovery.valid()))
412
       booted = true;
412
       booted = true;
413
 
413
 
414
-    if (!booted && ELAPSED(ms, TERN(USE_MKS_GREEN_UI, 1000, BOOTSCREEN_TIMEOUT)))
414
+    if (!booted && ELAPSED(ms, BOOTSCREEN_TIMEOUT)) {
415
       booted = true;
415
       booted = true;
416
+      GotoScreen(TERN0(POWER_LOSS_RECOVERY, recovery.valid()) ? DGUSLCD_SCREEN_POWER_LOSS : DGUSLCD_SCREEN_MAIN);
417
+    }
416
   #endif
418
   #endif
419
+
417
   return IsScreenComplete();
420
   return IsScreenComplete();
418
 }
421
 }
419
 
422
 

+ 2
- 217
Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.h Просмотреть файл

21
  */
21
  */
22
 #pragma once
22
 #pragma once
23
 
23
 
24
-#include "../DGUSDisplay.h"
25
-#include "../DGUSVPVariable.h"
26
-#include "../DGUSDisplayDef.h"
24
+#include "../DGUSScreenHandlerBase.h"
27
 
25
 
28
-#include "../../../../inc/MarlinConfig.h"
29
-
30
-enum DGUSLCD_Screens : uint8_t;
31
-
32
-class DGUSScreenHandler {
33
-public:
34
-  DGUSScreenHandler() = default;
35
-
36
-  static bool loop();
37
-
38
-  // Send all 4 strings that are displayed on the infoscreen, confirmation screen and kill screen
39
-  // The bools specifying whether the strings are in RAM or FLASH.
40
-  static void sendinfoscreen(PGM_P const line1, PGM_P const line2, PGM_P const line3, PGM_P const line4, bool l1inflash, bool l2inflash, bool l3inflash, bool liinflash);
41
-  static void sendinfoscreen(FSTR_P const line1, FSTR_P const line2, PGM_P const line3, PGM_P const line4, bool l1inflash, bool l2inflash, bool l3inflash, bool liinflash) {
42
-    sendinfoscreen(FTOP(line1), FTOP(line2), line3, line4, l1inflash, l2inflash, l3inflash, liinflash);
43
-  }
44
-  static void sendinfoscreen(FSTR_P const line1, FSTR_P const line2, FSTR_P const line3, FSTR_P const line4, bool l1inflash, bool l2inflash, bool l3inflash, bool liinflash) {
45
-    sendinfoscreen(FTOP(line1), FTOP(line2), FTOP(line3), FTOP(line4), l1inflash, l2inflash, l3inflash, liinflash);
46
-  }
47
-
48
-  static void HandleUserConfirmationPopUp(uint16_t ConfirmVP, PGM_P const line1, PGM_P const line2, PGM_P const line3, PGM_P const line4, bool l1inflash, bool l2inflash, bool l3inflash, bool liinflash);
49
-
50
-  // "M117" Message -- msg is a RAM ptr.
51
-  static void setstatusmessage(const char *msg);
52
-  // The same for messages from Flash
53
-  static void setstatusmessagePGM(PGM_P const msg);
54
-  // Callback for VP "Display wants to change screen on idle printer"
55
-  static void ScreenChangeHookIfIdle(DGUS_VP_Variable &var, void *val_ptr);
56
-  // Callback for VP "Screen has been changed"
57
-  static void ScreenChangeHook(DGUS_VP_Variable &var, void *val_ptr);
58
-
59
-  // Callback for VP "All Heaters Off"
60
-  static void HandleAllHeatersOff(DGUS_VP_Variable &var, void *val_ptr);
61
-  // Hook for "Change this temperature"
62
-  static void HandleTemperatureChanged(DGUS_VP_Variable &var, void *val_ptr);
63
-  // Hook for "Change Flowrate"
64
-  static void HandleFlowRateChanged(DGUS_VP_Variable &var, void *val_ptr);
65
-  #if ENABLED(DGUS_UI_MOVE_DIS_OPTION)
66
-    // Hook for manual move option
67
-    static void HandleManualMoveOption(DGUS_VP_Variable &var, void *val_ptr);
68
-  #endif
69
-
70
-  // Hook for manual move.
71
-  static void HandleManualMove(DGUS_VP_Variable &var, void *val_ptr);
72
-  // Hook for manual extrude.
73
-  static void HandleManualExtrude(DGUS_VP_Variable &var, void *val_ptr);
74
-  // Hook for motor lock and unlook
75
-  static void HandleMotorLockUnlock(DGUS_VP_Variable &var, void *val_ptr);
76
-  #if ENABLED(POWER_LOSS_RECOVERY)
77
-    // Hook for power loss recovery.
78
-    static void HandlePowerLossRecovery(DGUS_VP_Variable &var, void *val_ptr);
79
-  #endif
80
-  // Hook for settings
81
-  static void HandleSettings(DGUS_VP_Variable &var, void *val_ptr);
82
-  static void HandleStepPerMMChanged(DGUS_VP_Variable &var, void *val_ptr);
83
-  static void HandleStepPerMMExtruderChanged(DGUS_VP_Variable &var, void *val_ptr);
84
-
85
-  #if HAS_PID_HEATING
86
-    // Hook for "Change this temperature PID para"
87
-    static void HandleTemperaturePIDChanged(DGUS_VP_Variable &var, void *val_ptr);
88
-    // Hook for PID autotune
89
-    static void HandlePIDAutotune(DGUS_VP_Variable &var, void *val_ptr);
90
-  #endif
91
-  #if HAS_BED_PROBE
92
-    // Hook for "Change probe offset z"
93
-    static void HandleProbeOffsetZChanged(DGUS_VP_Variable &var, void *val_ptr);
94
-  #endif
95
-  #if ENABLED(BABYSTEPPING)
96
-    // Hook for live z adjust action
97
-    static void HandleLiveAdjustZ(DGUS_VP_Variable &var, void *val_ptr);
98
-  #endif
99
-  #if HAS_FAN
100
-    // Hook for fan control
101
-    static void HandleFanControl(DGUS_VP_Variable &var, void *val_ptr);
102
-  #endif
103
-  // Hook for heater control
104
-  static void HandleHeaterControl(DGUS_VP_Variable &var, void *val_ptr);
105
-  #if ENABLED(DGUS_PREHEAT_UI)
106
-    // Hook for preheat
107
-    static void HandlePreheat(DGUS_VP_Variable &var, void *val_ptr);
108
-  #endif
109
-  #if ENABLED(DGUS_FILAMENT_LOADUNLOAD)
110
-    // Hook for filament load and unload filament option
111
-    static void HandleFilamentOption(DGUS_VP_Variable &var, void *val_ptr);
112
-    // Hook for filament load and unload
113
-    static void HandleFilamentLoadUnload(DGUS_VP_Variable &var);
114
-  #endif
115
-
116
-  #if ENABLED(SDSUPPORT)
117
-    // Callback for VP "Display wants to change screen when there is a SD card"
118
-    static void ScreenChangeHookIfSD(DGUS_VP_Variable &var, void *val_ptr);
119
-    // Scroll buttons on the file listing screen.
120
-    static void DGUSLCD_SD_ScrollFilelist(DGUS_VP_Variable &var, void *val_ptr);
121
-    // File touched.
122
-    static void DGUSLCD_SD_FileSelected(DGUS_VP_Variable &var, void *val_ptr);
123
-    // start print after confirmation received.
124
-    static void DGUSLCD_SD_StartPrint(DGUS_VP_Variable &var, void *val_ptr);
125
-    // User hit the pause, resume or abort button.
126
-    static void DGUSLCD_SD_ResumePauseAbort(DGUS_VP_Variable &var, void *val_ptr);
127
-    // User confirmed the abort action
128
-    static void DGUSLCD_SD_ReallyAbort(DGUS_VP_Variable &var, void *val_ptr);
129
-    // User hit the tune button
130
-    static void DGUSLCD_SD_PrintTune(DGUS_VP_Variable &var, void *val_ptr);
131
-    // Send a single filename to the display.
132
-    static void DGUSLCD_SD_SendFilename(DGUS_VP_Variable &var);
133
-    // Marlin informed us that a new SD has been inserted.
134
-    static void SDCardInserted();
135
-    // Marlin informed us that the SD Card has been removed().
136
-    static void SDCardRemoved();
137
-    // Marlin informed us about a bad SD Card.
138
-    static void SDCardError();
139
-  #endif
140
-
141
-  // OK Button the Confirm screen.
142
-  static void ScreenConfirmedOK(DGUS_VP_Variable &var, void *val_ptr);
143
-
144
-  // Update data after went to new screen (by display or by GotoScreen)
145
-  // remember: store the last-displayed screen, so it can get returned to.
146
-  // (e.g for pop up messages)
147
-  static void UpdateNewScreen(DGUSLCD_Screens newscreen, bool popup=false);
148
-
149
-  // Recall the remembered screen.
150
-  static void PopToOldScreen();
151
-
152
-  // Make the display show the screen and update all VPs in it.
153
-  static void GotoScreen(DGUSLCD_Screens screen, bool ispopup = false);
154
-
155
-  static void UpdateScreenVPData();
156
-
157
-  // Helpers to convert and transfer data to the display.
158
-  static void DGUSLCD_SendWordValueToDisplay(DGUS_VP_Variable &var);
159
-  static void DGUSLCD_SendStringToDisplay(DGUS_VP_Variable &var);
160
-  static void DGUSLCD_SendStringToDisplayPGM(DGUS_VP_Variable &var);
161
-  static void DGUSLCD_SendTemperaturePID(DGUS_VP_Variable &var);
162
-  static void DGUSLCD_SendPercentageToDisplay(DGUS_VP_Variable &var);
163
-  static void DGUSLCD_SendPrintProgressToDisplay(DGUS_VP_Variable &var);
164
-  static void DGUSLCD_SendPrintTimeToDisplay(DGUS_VP_Variable &var);
165
-
166
-  #if ENABLED(PRINTCOUNTER)
167
-    static void DGUSLCD_SendPrintAccTimeToDisplay(DGUS_VP_Variable &var);
168
-    static void DGUSLCD_SendPrintsTotalToDisplay(DGUS_VP_Variable &var);
169
-  #endif
170
-  #if HAS_FAN
171
-    static void DGUSLCD_SendFanStatusToDisplay(DGUS_VP_Variable &var);
172
-  #endif
173
-  static void DGUSLCD_SendHeaterStatusToDisplay(DGUS_VP_Variable &var);
174
-  #if ENABLED(DGUS_UI_WAITING)
175
-    static void DGUSLCD_SendWaitingStatusToDisplay(DGUS_VP_Variable &var);
176
-  #endif
177
-
178
-  // Send a value from 0..100 to a variable with a range from 0..255
179
-  static void DGUSLCD_PercentageToUint8(DGUS_VP_Variable &var, void *val_ptr);
180
-
181
-  template<typename T>
182
-  static void DGUSLCD_SetValueDirectly(DGUS_VP_Variable &var, void *val_ptr) {
183
-    if (!var.memadr) return;
184
-    union { unsigned char tmp[sizeof(T)]; T t; } x;
185
-    unsigned char *ptr = (unsigned char*)val_ptr;
186
-    LOOP_L_N(i, sizeof(T)) x.tmp[i] = ptr[sizeof(T) - i - 1];
187
-    *(T*)var.memadr = x.t;
188
-  }
189
-
190
-  // Send a float value to the display.
191
-  // Display will get a 4-byte integer scaled to the number of digits:
192
-  // Tell the display the number of digits and it cheats by displaying a dot between...
193
-  template<unsigned int decimals>
194
-  static void DGUSLCD_SendFloatAsLongValueToDisplay(DGUS_VP_Variable &var) {
195
-    if (var.memadr) {
196
-      float f = *(float *)var.memadr;
197
-      f *= cpow(10, decimals);
198
-      dgusdisplay.WriteVariable(var.VP, (long)f);
199
-    }
200
-  }
201
-
202
-  // Send a float value to the display.
203
-  // Display will get a 2-byte integer scaled to the number of digits:
204
-  // Tell the display the number of digits and it cheats by displaying a dot between...
205
-  template<unsigned int decimals>
206
-  static void DGUSLCD_SendFloatAsIntValueToDisplay(DGUS_VP_Variable &var) {
207
-    if (var.memadr) {
208
-      float f = *(float *)var.memadr;
209
-      DEBUG_ECHOLNPAIR_F(" >> ", f, 6);
210
-      f *= cpow(10, decimals);
211
-      dgusdisplay.WriteVariable(var.VP, (int16_t)f);
212
-    }
213
-  }
214
-
215
-  // Force an update of all VP on the current screen.
216
-  static void ForceCompleteUpdate() { update_ptr = 0; ScreenComplete = false; }
217
-  // Has all VPs sent to the screen
218
-  static bool IsScreenComplete() { return ScreenComplete; }
219
-
220
-  static DGUSLCD_Screens getCurrentScreen() { return current_screen; }
221
-
222
-  static void SetupConfirmAction( void (*f)()) { confirm_action_cb = f; }
223
-
224
-private:
225
-  static DGUSLCD_Screens current_screen;  //< currently on screen
226
-  static constexpr uint8_t NUM_PAST_SCREENS = 4;
227
-  static DGUSLCD_Screens past_screens[NUM_PAST_SCREENS]; //< LIFO with past screens for the "back" button.
228
-
229
-  static uint8_t update_ptr;      //< Last sent entry in the VPList for the actual screen.
230
-  static uint16_t skipVP;         //< When updating the screen data, skip this one, because the user is interacting with it.
231
-  static bool ScreenComplete;     //< All VPs sent to screen?
232
-
233
-  static uint16_t ConfirmVP;      //< context for confirm screen (VP that will be emulated-sent on "OK").
234
-
235
-  #if ENABLED(SDSUPPORT)
236
-    static int16_t top_file;      //< file on top of file chooser
237
-    static int16_t file_to_print; //< touched file to be confirmed
238
-  #endif
239
-
240
-  static void (*confirm_action_cb)();
241
-};
26
+typedef DGUSScreenHandler DGUSScreenHandlerClass;
242
 
27
 
243
 #if ENABLED(POWER_LOSS_RECOVERY)
28
 #if ENABLED(POWER_LOSS_RECOVERY)
244
   #define PLR_SCREEN_RECOVER DGUSLCD_SCREEN_SDPRINTMANIPULATION
29
   #define PLR_SCREEN_RECOVER DGUSLCD_SCREEN_SDPRINTMANIPULATION

+ 43
- 43
Marlin/src/lcd/extui/dgus/mks/DGUSDisplayDef.cpp Просмотреть файл

69
     { 20, 20 }, { 20, 20 },
69
     { 20, 20 }, { 20, 20 },
70
     { X_CENTER, Y_CENTER }
70
     { X_CENTER, Y_CENTER }
71
   };
71
   };
72
-  mks_language_index = 0;
72
+  mks_language_index = MKS_SimpleChinese;
73
   COPY(mks_corner_offsets, init_dgus_level_offsets);
73
   COPY(mks_corner_offsets, init_dgus_level_offsets);
74
   mks_park_pos.set(20, 20, 10);
74
   mks_park_pos.set(20, 20, 10);
75
   mks_min_extrusion_temp = 0;
75
   mks_min_extrusion_temp = 0;
560
       VPHELPER(VP_PID_AUTOTUNE_E0, nullptr, ScreenHandler.HandlePIDAutotune, nullptr),
560
       VPHELPER(VP_PID_AUTOTUNE_E0, nullptr, ScreenHandler.HandlePIDAutotune, nullptr),
561
     #endif
561
     #endif
562
     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD)
562
     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD)
563
-      VPHELPER(VP_LOAD_Filament, nullptr, ScreenHandler.MKS_FilamentLoad, nullptr),
564
-      VPHELPER(VP_UNLOAD_Filament, nullptr, ScreenHandler.MKS_FilamentUnLoad, nullptr),
563
+      VPHELPER(VP_LOAD_Filament, nullptr, ScreenHandler.FilamentLoad, nullptr),
564
+      VPHELPER(VP_UNLOAD_Filament, nullptr, ScreenHandler.FilamentUnLoad, nullptr),
565
       VPHELPER(VP_Filament_distance, &distanceFilament, ScreenHandler.GetManualFilament, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
565
       VPHELPER(VP_Filament_distance, &distanceFilament, ScreenHandler.GetManualFilament, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
566
       VPHELPER(VP_Filament_speed, &filamentSpeed_mm_s, ScreenHandler.GetManualFilamentSpeed, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
566
       VPHELPER(VP_Filament_speed, &filamentSpeed_mm_s, ScreenHandler.GetManualFilamentSpeed, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
567
     #endif
567
     #endif
618
   VPHELPER(VP_ZPos, &current_position.z, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<2>),
618
   VPHELPER(VP_ZPos, &current_position.z, nullptr, ScreenHandler.DGUSLCD_SendFloatAsLongValueToDisplay<2>),
619
 
619
 
620
   // Level Point Set
620
   // Level Point Set
621
-  VPHELPER(VP_Level_Point_One_X, &mks_corner_offsets[0].x, ScreenHandler.HandleChangeLevelPoint_MKS, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
622
-  VPHELPER(VP_Level_Point_One_Y, &mks_corner_offsets[0].y, ScreenHandler.HandleChangeLevelPoint_MKS, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
623
-  VPHELPER(VP_Level_Point_Two_X, &mks_corner_offsets[1].x, ScreenHandler.HandleChangeLevelPoint_MKS, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
624
-  VPHELPER(VP_Level_Point_Two_Y, &mks_corner_offsets[1].y, ScreenHandler.HandleChangeLevelPoint_MKS, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
625
-  VPHELPER(VP_Level_Point_Three_X, &mks_corner_offsets[2].x, ScreenHandler.HandleChangeLevelPoint_MKS, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
626
-  VPHELPER(VP_Level_Point_Three_Y, &mks_corner_offsets[2].y, ScreenHandler.HandleChangeLevelPoint_MKS, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
627
-  VPHELPER(VP_Level_Point_Four_X, &mks_corner_offsets[3].x, ScreenHandler.HandleChangeLevelPoint_MKS, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
628
-  VPHELPER(VP_Level_Point_Four_Y, &mks_corner_offsets[3].y, ScreenHandler.HandleChangeLevelPoint_MKS, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
629
-  VPHELPER(VP_Level_Point_Five_X, &mks_corner_offsets[4].x, ScreenHandler.HandleChangeLevelPoint_MKS, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
630
-  VPHELPER(VP_Level_Point_Five_Y, &mks_corner_offsets[4].y, ScreenHandler.HandleChangeLevelPoint_MKS, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
621
+  VPHELPER(VP_Level_Point_One_X, &mks_corner_offsets[0].x, ScreenHandler.HandleChangeLevelPoint, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
622
+  VPHELPER(VP_Level_Point_One_Y, &mks_corner_offsets[0].y, ScreenHandler.HandleChangeLevelPoint, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
623
+  VPHELPER(VP_Level_Point_Two_X, &mks_corner_offsets[1].x, ScreenHandler.HandleChangeLevelPoint, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
624
+  VPHELPER(VP_Level_Point_Two_Y, &mks_corner_offsets[1].y, ScreenHandler.HandleChangeLevelPoint, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
625
+  VPHELPER(VP_Level_Point_Three_X, &mks_corner_offsets[2].x, ScreenHandler.HandleChangeLevelPoint, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
626
+  VPHELPER(VP_Level_Point_Three_Y, &mks_corner_offsets[2].y, ScreenHandler.HandleChangeLevelPoint, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
627
+  VPHELPER(VP_Level_Point_Four_X, &mks_corner_offsets[3].x, ScreenHandler.HandleChangeLevelPoint, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
628
+  VPHELPER(VP_Level_Point_Four_Y, &mks_corner_offsets[3].y, ScreenHandler.HandleChangeLevelPoint, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
629
+  VPHELPER(VP_Level_Point_Five_X, &mks_corner_offsets[4].x, ScreenHandler.HandleChangeLevelPoint, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
630
+  VPHELPER(VP_Level_Point_Five_Y, &mks_corner_offsets[4].y, ScreenHandler.HandleChangeLevelPoint, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
631
 
631
 
632
   // Print Progress
632
   // Print Progress
633
   VPHELPER(VP_PrintProgress_Percentage, nullptr, nullptr, ScreenHandler.DGUSLCD_SendPrintProgressToDisplay),
633
   VPHELPER(VP_PrintProgress_Percentage, nullptr, nullptr, ScreenHandler.DGUSLCD_SendPrintProgressToDisplay),
639
   VPHELPER(VP_SD_FileSelect_Back, nullptr, ScreenHandler.SD_FileBack, nullptr),
639
   VPHELPER(VP_SD_FileSelect_Back, nullptr, ScreenHandler.SD_FileBack, nullptr),
640
 
640
 
641
   // Print Time
641
   // Print Time
642
-  VPHELPER_STR(VP_PrintTime, nullptr, VP_PrintTime_LEN, nullptr, ScreenHandler.DGUSLCD_SendPrintTimeToDisplay_MKS),
642
+  VPHELPER_STR(VP_PrintTime, nullptr, VP_PrintTime_LEN, nullptr, ScreenHandler.DGUSLCD_SendPrintTimeToDisplay),
643
 
643
 
644
   #if ENABLED(PRINTCOUNTER)
644
   #if ENABLED(PRINTCOUNTER)
645
     VPHELPER_STR(VP_PrintAccTime, nullptr, VP_PrintAccTime_LEN, nullptr, ScreenHandler.DGUSLCD_SendPrintAccTimeToDisplay),
645
     VPHELPER_STR(VP_PrintAccTime, nullptr, VP_PrintAccTime_LEN, nullptr, ScreenHandler.DGUSLCD_SendPrintAccTimeToDisplay),
646
     VPHELPER_STR(VP_PrintsTotal, nullptr, VP_PrintsTotal_LEN, nullptr, ScreenHandler.DGUSLCD_SendPrintsTotalToDisplay),
646
     VPHELPER_STR(VP_PrintsTotal, nullptr, VP_PrintsTotal_LEN, nullptr, ScreenHandler.DGUSLCD_SendPrintsTotalToDisplay),
647
   #endif
647
   #endif
648
 
648
 
649
-  VPHELPER(VP_X_STEP_PER_MM, &planner.settings.axis_steps_per_mm[X_AXIS], ScreenHandler.HandleStepPerMMChanged_MKS, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>),
650
-  VPHELPER(VP_Y_STEP_PER_MM, &planner.settings.axis_steps_per_mm[Y_AXIS], ScreenHandler.HandleStepPerMMChanged_MKS, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>),
651
-  VPHELPER(VP_Z_STEP_PER_MM, &planner.settings.axis_steps_per_mm[Z_AXIS], ScreenHandler.HandleStepPerMMChanged_MKS, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>),
649
+  VPHELPER(VP_X_STEP_PER_MM, &planner.settings.axis_steps_per_mm[X_AXIS], ScreenHandler.HandleStepPerMMChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>),
650
+  VPHELPER(VP_Y_STEP_PER_MM, &planner.settings.axis_steps_per_mm[Y_AXIS], ScreenHandler.HandleStepPerMMChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>),
651
+  VPHELPER(VP_Z_STEP_PER_MM, &planner.settings.axis_steps_per_mm[Z_AXIS], ScreenHandler.HandleStepPerMMChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>),
652
 
652
 
653
-  VPHELPER(VP_X_MAX_SPEED, &planner.settings.max_feedrate_mm_s[X_AXIS], ScreenHandler.HandleMaxSpeedChange_MKS, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>),
654
-  VPHELPER(VP_Y_MAX_SPEED, &planner.settings.max_feedrate_mm_s[Y_AXIS], ScreenHandler.HandleMaxSpeedChange_MKS, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>),
655
-  VPHELPER(VP_Z_MAX_SPEED, &planner.settings.max_feedrate_mm_s[Z_AXIS], ScreenHandler.HandleMaxSpeedChange_MKS, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>),
653
+  VPHELPER(VP_X_MAX_SPEED, &planner.settings.max_feedrate_mm_s[X_AXIS], ScreenHandler.HandleMaxSpeedChange, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>),
654
+  VPHELPER(VP_Y_MAX_SPEED, &planner.settings.max_feedrate_mm_s[Y_AXIS], ScreenHandler.HandleMaxSpeedChange, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>),
655
+  VPHELPER(VP_Z_MAX_SPEED, &planner.settings.max_feedrate_mm_s[Z_AXIS], ScreenHandler.HandleMaxSpeedChange, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>),
656
 
656
 
657
   #if HAS_HOTEND
657
   #if HAS_HOTEND
658
-    VPHELPER(VP_E0_MAX_SPEED, &planner.settings.max_feedrate_mm_s[E_AXIS_N(0)], ScreenHandler.HandleExtruderMaxSpeedChange_MKS, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>),
658
+    VPHELPER(VP_E0_MAX_SPEED, &planner.settings.max_feedrate_mm_s[E_AXIS_N(0)], ScreenHandler.HandleExtruderMaxSpeedChange, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>),
659
     #if HAS_MULTI_HOTEND
659
     #if HAS_MULTI_HOTEND
660
-      VPHELPER(VP_E1_MAX_SPEED, &planner.settings.max_feedrate_mm_s[E_AXIS_N(1)], ScreenHandler.HandleExtruderMaxSpeedChange_MKS, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>),
660
+      VPHELPER(VP_E1_MAX_SPEED, &planner.settings.max_feedrate_mm_s[E_AXIS_N(1)], ScreenHandler.HandleExtruderMaxSpeedChange, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>),
661
     #endif
661
     #endif
662
   #endif
662
   #endif
663
 
663
 
664
-  VPHELPER(VP_X_ACC_MAX_SPEED, (uint16_t *)&planner.settings.max_acceleration_mm_per_s2[X_AXIS], ScreenHandler.HandleMaxAccChange_MKS, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
665
-  VPHELPER(VP_Y_ACC_MAX_SPEED, (uint16_t *)&planner.settings.max_acceleration_mm_per_s2[Y_AXIS], ScreenHandler.HandleMaxAccChange_MKS, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
666
-  VPHELPER(VP_Z_ACC_MAX_SPEED, (uint16_t *)&planner.settings.max_acceleration_mm_per_s2[Z_AXIS], ScreenHandler.HandleMaxAccChange_MKS, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
664
+  VPHELPER(VP_X_ACC_MAX_SPEED, (uint16_t *)&planner.settings.max_acceleration_mm_per_s2[X_AXIS], ScreenHandler.HandleMaxAccChange, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
665
+  VPHELPER(VP_Y_ACC_MAX_SPEED, (uint16_t *)&planner.settings.max_acceleration_mm_per_s2[Y_AXIS], ScreenHandler.HandleMaxAccChange, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
666
+  VPHELPER(VP_Z_ACC_MAX_SPEED, (uint16_t *)&planner.settings.max_acceleration_mm_per_s2[Z_AXIS], ScreenHandler.HandleMaxAccChange, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
667
 
667
 
668
   #if HAS_HOTEND
668
   #if HAS_HOTEND
669
-    VPHELPER(VP_E0_ACC_MAX_SPEED, (uint16_t *)&planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(0)], ScreenHandler.HandleExtruderAccChange_MKS, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
669
+    VPHELPER(VP_E0_ACC_MAX_SPEED, (uint16_t *)&planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(0)], ScreenHandler.HandleExtruderAccChange, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
670
     #if HAS_MULTI_HOTEND
670
     #if HAS_MULTI_HOTEND
671
-      VPHELPER(VP_E1_ACC_MAX_SPEED, (uint16_t *)&planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(1)], ScreenHandler.HandleExtruderAccChange_MKS, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
671
+      VPHELPER(VP_E1_ACC_MAX_SPEED, (uint16_t *)&planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(1)], ScreenHandler.HandleExtruderAccChange, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
672
     #endif
672
     #endif
673
   #endif
673
   #endif
674
 
674
 
675
-  VPHELPER(VP_TRAVEL_SPEED, (uint16_t *)&planner.settings.travel_acceleration, ScreenHandler.HandleTravelAccChange_MKS, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>),
676
-  VPHELPER(VP_FEEDRATE_MIN_SPEED, (uint16_t *)&planner.settings.min_feedrate_mm_s, ScreenHandler.HandleFeedRateMinChange_MKS, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>),
677
-  VPHELPER(VP_T_F_SPEED, (uint16_t *)&planner.settings.min_travel_feedrate_mm_s, ScreenHandler.HandleMin_T_F_MKS, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>),
678
-  VPHELPER(VP_ACC_SPEED, (uint16_t *)&planner.settings.acceleration, ScreenHandler.HandleAccChange_MKS, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
675
+  VPHELPER(VP_TRAVEL_SPEED, (uint16_t *)&planner.settings.travel_acceleration, ScreenHandler.HandleTravelAccChange, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>),
676
+  VPHELPER(VP_FEEDRATE_MIN_SPEED, (uint16_t *)&planner.settings.min_feedrate_mm_s, ScreenHandler.HandleFeedRateMinChange, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>),
677
+  VPHELPER(VP_T_F_SPEED, (uint16_t *)&planner.settings.min_travel_feedrate_mm_s, ScreenHandler.HandleMin_T_F, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>),
678
+  VPHELPER(VP_ACC_SPEED, (uint16_t *)&planner.settings.acceleration, ScreenHandler.HandleAccChange, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
679
 
679
 
680
-  VPHELPER(VP_X_PARK_POS, &mks_park_pos.x, ScreenHandler.GetParkPos_MKS, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
681
-  VPHELPER(VP_Y_PARK_POS, &mks_park_pos.y, ScreenHandler.GetParkPos_MKS, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
682
-  VPHELPER(VP_Z_PARK_POS, &mks_park_pos.z, ScreenHandler.GetParkPos_MKS, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
680
+  VPHELPER(VP_X_PARK_POS, &mks_park_pos.x, ScreenHandler.GetParkPos, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
681
+  VPHELPER(VP_Y_PARK_POS, &mks_park_pos.y, ScreenHandler.GetParkPos, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
682
+  VPHELPER(VP_Z_PARK_POS, &mks_park_pos.z, ScreenHandler.GetParkPos, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
683
 
683
 
684
   #if ENABLED(PREVENT_COLD_EXTRUSION)
684
   #if ENABLED(PREVENT_COLD_EXTRUSION)
685
-    VPHELPER(VP_MIN_EX_T, &thermalManager.extrude_min_temp, ScreenHandler.HandleGetExMinTemp_MKS, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
685
+    VPHELPER(VP_MIN_EX_T, &thermalManager.extrude_min_temp, ScreenHandler.HandleGetExMinTemp, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
686
   #endif
686
   #endif
687
 
687
 
688
   #if ENABLED(SENSORLESS_HOMING)  // TMC SENSORLESS Setting
688
   #if ENABLED(SENSORLESS_HOMING)  // TMC SENSORLESS Setting
725
   #endif
725
   #endif
726
 
726
 
727
   VPHELPER(VP_EEPROM_CTRL, nullptr, ScreenHandler.EEPROM_CTRL, nullptr),
727
   VPHELPER(VP_EEPROM_CTRL, nullptr, ScreenHandler.EEPROM_CTRL, nullptr),
728
-  VPHELPER(VP_LEVEL_BUTTON, nullptr, ScreenHandler.Level_Ctrl_MKS, nullptr),
729
-  VPHELPER(VP_LANGUAGE_CHANGE, nullptr, ScreenHandler.LanguageChange_MKS, nullptr),
728
+  VPHELPER(VP_LEVEL_BUTTON, nullptr, ScreenHandler.Level_Ctrl, nullptr),
729
+  VPHELPER(VP_LANGUAGE_CHANGE, nullptr, ScreenHandler.LanguageChange, nullptr),
730
 
730
 
731
   //VPHELPER(VP_SD_Print_LiveAdjustZ, nullptr, ScreenHandler.HandleLiveAdjustZ, nullptr),
731
   //VPHELPER(VP_SD_Print_LiveAdjustZ, nullptr, ScreenHandler.HandleLiveAdjustZ, nullptr),
732
 
732
 
743
   VPHELPER(VP_AutoTurnOffSw, nullptr, ScreenHandler.GetTurnOffCtrl, nullptr),
743
   VPHELPER(VP_AutoTurnOffSw, nullptr, ScreenHandler.GetTurnOffCtrl, nullptr),
744
 
744
 
745
   #if HAS_HOTEND
745
   #if HAS_HOTEND
746
-    VPHELPER(VP_E0_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(0)], ScreenHandler.HandleStepPerMMExtruderChanged_MKS, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>),
746
+    VPHELPER(VP_E0_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(0)], ScreenHandler.HandleStepPerMMExtruderChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>),
747
     #if HAS_MULTI_HOTEND
747
     #if HAS_MULTI_HOTEND
748
-      VPHELPER(VP_E1_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(1)], ScreenHandler.HandleStepPerMMExtruderChanged_MKS, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>),
748
+      VPHELPER(VP_E1_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(1)], ScreenHandler.HandleStepPerMMExtruderChanged, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<0>),
749
     #endif
749
     #endif
750
   #endif
750
   #endif
751
 
751
 
791
   //{.VP = VP_MSGSTR3, .memadr = nullptr, .size = VP_MSGSTR3_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplayPGM},
791
   //{.VP = VP_MSGSTR3, .memadr = nullptr, .size = VP_MSGSTR3_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplayPGM},
792
   //{.VP = VP_MSGSTR4, .memadr = nullptr, .size = VP_MSGSTR4_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplayPGM},
792
   //{.VP = VP_MSGSTR4, .memadr = nullptr, .size = VP_MSGSTR4_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplayPGM},
793
 
793
 
794
-  {.VP = VP_MSGSTR1, .memadr = nullptr, .size = VP_MSGSTR1_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplay_Language_MKS},
795
-  {.VP = VP_MSGSTR2, .memadr = nullptr, .size = VP_MSGSTR2_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplay_Language_MKS},
796
-  {.VP = VP_MSGSTR3, .memadr = nullptr, .size = VP_MSGSTR3_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplay_Language_MKS},
797
-  {.VP = VP_MSGSTR4, .memadr = nullptr, .size = VP_MSGSTR4_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplay_Language_MKS},
794
+  {.VP = VP_MSGSTR1, .memadr = nullptr, .size = VP_MSGSTR1_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplay_Language},
795
+  {.VP = VP_MSGSTR2, .memadr = nullptr, .size = VP_MSGSTR2_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplay_Language},
796
+  {.VP = VP_MSGSTR3, .memadr = nullptr, .size = VP_MSGSTR3_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplay_Language},
797
+  {.VP = VP_MSGSTR4, .memadr = nullptr, .size = VP_MSGSTR4_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = ScreenHandler.DGUSLCD_SendStringToDisplay_Language},
798
 
798
 
799
   VPHELPER(0, 0, 0, 0) // must be last entry.
799
   VPHELPER(0, 0, 0, 0) // must be last entry.
800
 };
800
 };

+ 75
- 75
Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp Просмотреть файл

52
 #endif
52
 #endif
53
 
53
 
54
 bool DGUSAutoTurnOff = false;
54
 bool DGUSAutoTurnOff = false;
55
-uint8_t mks_language_index; // Initialized by settings.load()
55
+MKS_Language mks_language_index; // Initialized by settings.load()
56
 
56
 
57
 // endianness swap
57
 // endianness swap
58
 uint32_t swap32(const uint32_t value) { return (value & 0x000000FFU) << 24U | (value & 0x0000FF00U) << 8U | (value & 0x00FF0000U) >> 8U | (value & 0xFF000000U) >> 24U; }
58
 uint32_t swap32(const uint32_t value) { return (value & 0x000000FFU) << 24U | (value & 0x0000FF00U) << 8U | (value & 0x00FF0000U) >> 8U | (value & 0xFF000000U) >> 24U; }
59
 
59
 
60
 #if 0
60
 #if 0
61
-void DGUSScreenHandler::sendinfoscreen_ch_mks(const uint16_t *line1, const uint16_t *line2, const uint16_t *line3, const uint16_t *line4) {
61
+void DGUSScreenHandlerMKS::sendinfoscreen_ch(const uint16_t *line1, const uint16_t *line2, const uint16_t *line3, const uint16_t *line4) {
62
   dgusdisplay.WriteVariable(VP_MSGSTR1, line1, 32, true);
62
   dgusdisplay.WriteVariable(VP_MSGSTR1, line1, 32, true);
63
   dgusdisplay.WriteVariable(VP_MSGSTR2, line2, 32, true);
63
   dgusdisplay.WriteVariable(VP_MSGSTR2, line2, 32, true);
64
   dgusdisplay.WriteVariable(VP_MSGSTR3, line3, 32, true);
64
   dgusdisplay.WriteVariable(VP_MSGSTR3, line3, 32, true);
65
   dgusdisplay.WriteVariable(VP_MSGSTR4, line4, 32, true);
65
   dgusdisplay.WriteVariable(VP_MSGSTR4, line4, 32, true);
66
 }
66
 }
67
 
67
 
68
-void DGUSScreenHandler::sendinfoscreen_en_mks(PGM_P const line1, PGM_P const line2, PGM_P const line3, PGM_P const line4) {
68
+void DGUSScreenHandlerMKS::sendinfoscreen_en(PGM_P const line1, PGM_P const line2, PGM_P const line3, PGM_P const line4) {
69
   dgusdisplay.WriteVariable(VP_MSGSTR1, line1, 32, true);
69
   dgusdisplay.WriteVariable(VP_MSGSTR1, line1, 32, true);
70
   dgusdisplay.WriteVariable(VP_MSGSTR2, line2, 32, true);
70
   dgusdisplay.WriteVariable(VP_MSGSTR2, line2, 32, true);
71
   dgusdisplay.WriteVariable(VP_MSGSTR3, line3, 32, true);
71
   dgusdisplay.WriteVariable(VP_MSGSTR3, line3, 32, true);
72
   dgusdisplay.WriteVariable(VP_MSGSTR4, line4, 32, true);
72
   dgusdisplay.WriteVariable(VP_MSGSTR4, line4, 32, true);
73
 }
73
 }
74
 
74
 
75
-void DGUSScreenHandler::sendinfoscreen_mks(const void *line1, const void *line2, const void *line3, const void *line4, uint16_t language) {
75
+void DGUSScreenHandlerMKS::sendinfoscreen(const void *line1, const void *line2, const void *line3, const void *line4, uint16_t language) {
76
   if (language == MKS_English)
76
   if (language == MKS_English)
77
-    DGUSScreenHandler::sendinfoscreen_en_mks((char *)line1, (char *)line2, (char *)line3, (char *)line4);
77
+    DGUSScreenHandlerMKS::sendinfoscreen_en((char *)line1, (char *)line2, (char *)line3, (char *)line4);
78
   else if (language == MKS_SimpleChinese)
78
   else if (language == MKS_SimpleChinese)
79
-    DGUSScreenHandler::sendinfoscreen_ch_mks((uint16_t *)line1, (uint16_t *)line2, (uint16_t *)line3, (uint16_t *)line4);
79
+    DGUSScreenHandlerMKS::sendinfoscreen_ch((uint16_t *)line1, (uint16_t *)line2, (uint16_t *)line3, (uint16_t *)line4);
80
 }
80
 }
81
 
81
 
82
 #endif
82
 #endif
83
 
83
 
84
-void DGUSScreenHandler::DGUSLCD_SendFanToDisplay(DGUS_VP_Variable &var) {
84
+void DGUSScreenHandlerMKS::DGUSLCD_SendFanToDisplay(DGUS_VP_Variable &var) {
85
   if (var.memadr) {
85
   if (var.memadr) {
86
     //DEBUG_ECHOPGM(" DGUS_LCD_SendWordValueToDisplay ", var.VP);
86
     //DEBUG_ECHOPGM(" DGUS_LCD_SendWordValueToDisplay ", var.VP);
87
     //DEBUG_ECHOLNPGM(" data ", *(uint16_t *)var.memadr);
87
     //DEBUG_ECHOLNPGM(" data ", *(uint16_t *)var.memadr);
91
   }
91
   }
92
 }
92
 }
93
 
93
 
94
-void DGUSScreenHandler::DGUSLCD_SendBabyStepToDisplay_MKS(DGUS_VP_Variable &var) {
94
+void DGUSScreenHandlerMKS::DGUSLCD_SendBabyStepToDisplay(DGUS_VP_Variable &var) {
95
   float value = current_position.z;
95
   float value = current_position.z;
96
   DEBUG_ECHOLNPAIR_F(" >> ", value, 6);
96
   DEBUG_ECHOLNPAIR_F(" >> ", value, 6);
97
   value *= cpow(10, 2);
97
   value *= cpow(10, 2);
98
   dgusdisplay.WriteVariable(VP_SD_Print_Baby, (uint16_t)value);
98
   dgusdisplay.WriteVariable(VP_SD_Print_Baby, (uint16_t)value);
99
 }
99
 }
100
 
100
 
101
-void DGUSScreenHandler::DGUSLCD_SendPrintTimeToDisplay_MKS(DGUS_VP_Variable &var) {
101
+void DGUSScreenHandlerMKS::DGUSLCD_SendPrintTimeToDisplay(DGUS_VP_Variable &var) {
102
   duration_t elapsed = print_job_timer.duration();
102
   duration_t elapsed = print_job_timer.duration();
103
   uint32_t time = elapsed.value;
103
   uint32_t time = elapsed.value;
104
   dgusdisplay.WriteVariable(VP_PrintTime_H, uint16_t(time / 3600));
104
   dgusdisplay.WriteVariable(VP_PrintTime_H, uint16_t(time / 3600));
106
   dgusdisplay.WriteVariable(VP_PrintTime_S, uint16_t((time % 3600) % 60));
106
   dgusdisplay.WriteVariable(VP_PrintTime_S, uint16_t((time % 3600) % 60));
107
 }
107
 }
108
 
108
 
109
-void DGUSScreenHandler::DGUSLCD_SetUint8(DGUS_VP_Variable &var, void *val_ptr) {
109
+void DGUSScreenHandlerMKS::DGUSLCD_SetUint8(DGUS_VP_Variable &var, void *val_ptr) {
110
   if (var.memadr) {
110
   if (var.memadr) {
111
     const uint16_t value = swap16(*(uint16_t*)val_ptr);
111
     const uint16_t value = swap16(*(uint16_t*)val_ptr);
112
     DEBUG_ECHOLNPGM("FAN value get:", value);
112
     DEBUG_ECHOLNPGM("FAN value get:", value);
115
   }
115
   }
116
 }
116
 }
117
 
117
 
118
-void DGUSScreenHandler::DGUSLCD_SendGbkToDisplay(DGUS_VP_Variable &var) {
118
+void DGUSScreenHandlerMKS::DGUSLCD_SendGbkToDisplay(DGUS_VP_Variable &var) {
119
   DEBUG_ECHOLNPGM(" data ", *(uint16_t *)var.memadr);
119
   DEBUG_ECHOLNPGM(" data ", *(uint16_t *)var.memadr);
120
   uint16_t *tmp = (uint16_t*) var.memadr;
120
   uint16_t *tmp = (uint16_t*) var.memadr;
121
   dgusdisplay.WriteVariable(var.VP, tmp, var.size, true);
121
   dgusdisplay.WriteVariable(var.VP, tmp, var.size, true);
122
 }
122
 }
123
 
123
 
124
-void DGUSScreenHandler::DGUSLCD_SendStringToDisplay_Language_MKS(DGUS_VP_Variable &var) {
124
+void DGUSScreenHandlerMKS::DGUSLCD_SendStringToDisplay_Language(DGUS_VP_Variable &var) {
125
   if (mks_language_index == MKS_English) {
125
   if (mks_language_index == MKS_English) {
126
     char *tmp = (char*) var.memadr;
126
     char *tmp = (char*) var.memadr;
127
     dgusdisplay.WriteVariable(var.VP, tmp, var.size, true);
127
     dgusdisplay.WriteVariable(var.VP, tmp, var.size, true);
132
   }
132
   }
133
 }
133
 }
134
 
134
 
135
-void DGUSScreenHandler::DGUSLCD_SendTMCStepValue(DGUS_VP_Variable &var) {
135
+void DGUSScreenHandlerMKS::DGUSLCD_SendTMCStepValue(DGUS_VP_Variable &var) {
136
   #if ENABLED(SENSORLESS_HOMING)
136
   #if ENABLED(SENSORLESS_HOMING)
137
     #if X_HAS_STEALTHCHOP
137
     #if X_HAS_STEALTHCHOP
138
       tmc_step.x = stepperX.homing_threshold();
138
       tmc_step.x = stepperX.homing_threshold();
268
   }
268
   }
269
 
269
 
270
 #else
270
 #else
271
-  void DGUSScreenHandler::PrintReturn(DGUS_VP_Variable& var, void *val_ptr) {
271
+  void DGUSScreenHandlerMKS::PrintReturn(DGUS_VP_Variable& var, void *val_ptr) {
272
     uint16_t value = swap16(*(uint16_t*)val_ptr);
272
     uint16_t value = swap16(*(uint16_t*)val_ptr);
273
     if (value == 0x0F) GotoScreen(DGUSLCD_SCREEN_MAIN);
273
     if (value == 0x0F) GotoScreen(DGUSLCD_SCREEN_MAIN);
274
   }
274
   }
315
   #endif
315
   #endif
316
 }
316
 }
317
 
317
 
318
-void DGUSScreenHandler::ScreenBackChange(DGUS_VP_Variable &var, void *val_ptr) {
318
+void DGUSScreenHandlerMKS::ScreenBackChange(DGUS_VP_Variable &var, void *val_ptr) {
319
   const uint16_t target = swap16(*(uint16_t *)val_ptr);
319
   const uint16_t target = swap16(*(uint16_t *)val_ptr);
320
   DEBUG_ECHOLNPGM(" back = 0x%x", target);
320
   DEBUG_ECHOLNPGM(" back = 0x%x", target);
321
   switch (target) {
321
   switch (target) {
322
   }
322
   }
323
 }
323
 }
324
 
324
 
325
-void DGUSScreenHandler::ZoffsetConfirm(DGUS_VP_Variable &var, void *val_ptr) {
325
+void DGUSScreenHandlerMKS::ZoffsetConfirm(DGUS_VP_Variable &var, void *val_ptr) {
326
   settings.save();
326
   settings.save();
327
   if (printJobOngoing())
327
   if (printJobOngoing())
328
     GotoScreen(MKSLCD_SCREEN_PRINT);
328
     GotoScreen(MKSLCD_SCREEN_PRINT);
330
     GotoScreen(MKSLCD_SCREEN_PAUSE);
330
     GotoScreen(MKSLCD_SCREEN_PAUSE);
331
 }
331
 }
332
 
332
 
333
-void DGUSScreenHandler::GetTurnOffCtrl(DGUS_VP_Variable &var, void *val_ptr) {
333
+void DGUSScreenHandlerMKS::GetTurnOffCtrl(DGUS_VP_Variable &var, void *val_ptr) {
334
   DEBUG_ECHOLNPGM("GetTurnOffCtrl\n");
334
   DEBUG_ECHOLNPGM("GetTurnOffCtrl\n");
335
   const uint16_t value = swap16(*(uint16_t *)val_ptr);
335
   const uint16_t value = swap16(*(uint16_t *)val_ptr);
336
   switch (value) {
336
   switch (value) {
339
   }
339
   }
340
 }
340
 }
341
 
341
 
342
-void DGUSScreenHandler::GetMinExtrudeTemp(DGUS_VP_Variable &var, void *val_ptr) {
342
+void DGUSScreenHandlerMKS::GetMinExtrudeTemp(DGUS_VP_Variable &var, void *val_ptr) {
343
   DEBUG_ECHOLNPGM("GetMinExtrudeTemp");
343
   DEBUG_ECHOLNPGM("GetMinExtrudeTemp");
344
   const uint16_t value = swap16(*(uint16_t *)val_ptr);
344
   const uint16_t value = swap16(*(uint16_t *)val_ptr);
345
   TERN_(PREVENT_COLD_EXTRUSION, thermalManager.extrude_min_temp = value);
345
   TERN_(PREVENT_COLD_EXTRUSION, thermalManager.extrude_min_temp = value);
347
   settings.save();
347
   settings.save();
348
 }
348
 }
349
 
349
 
350
-void DGUSScreenHandler::GetZoffsetDistance(DGUS_VP_Variable &var, void *val_ptr) {
350
+void DGUSScreenHandlerMKS::GetZoffsetDistance(DGUS_VP_Variable &var, void *val_ptr) {
351
   DEBUG_ECHOLNPGM("GetZoffsetDistance");
351
   DEBUG_ECHOLNPGM("GetZoffsetDistance");
352
   const uint16_t value = swap16(*(uint16_t *)val_ptr);
352
   const uint16_t value = swap16(*(uint16_t *)val_ptr);
353
   float val_distance = 0;
353
   float val_distance = 0;
361
   ZOffset_distance = val_distance;
361
   ZOffset_distance = val_distance;
362
 }
362
 }
363
 
363
 
364
-void DGUSScreenHandler::GetManualMovestep(DGUS_VP_Variable &var, void *val_ptr) {
364
+void DGUSScreenHandlerMKS::GetManualMovestep(DGUS_VP_Variable &var, void *val_ptr) {
365
   DEBUG_ECHOLNPGM("\nGetManualMovestep");
365
   DEBUG_ECHOLNPGM("\nGetManualMovestep");
366
   *(uint16_t *)var.memadr = swap16(*(uint16_t *)val_ptr);
366
   *(uint16_t *)var.memadr = swap16(*(uint16_t *)val_ptr);
367
 }
367
 }
368
 
368
 
369
-void DGUSScreenHandler::EEPROM_CTRL(DGUS_VP_Variable &var, void *val_ptr) {
369
+void DGUSScreenHandlerMKS::EEPROM_CTRL(DGUS_VP_Variable &var, void *val_ptr) {
370
   const uint16_t eep_flag = swap16(*(uint16_t *)val_ptr);
370
   const uint16_t eep_flag = swap16(*(uint16_t *)val_ptr);
371
   switch (eep_flag) {
371
   switch (eep_flag) {
372
     case 0:
372
     case 0:
384
   }
384
   }
385
 }
385
 }
386
 
386
 
387
-void DGUSScreenHandler::Z_offset_select(DGUS_VP_Variable &var, void *val_ptr) {
387
+void DGUSScreenHandlerMKS::Z_offset_select(DGUS_VP_Variable &var, void *val_ptr) {
388
   const uint16_t z_value = swap16(*(uint16_t *)val_ptr);
388
   const uint16_t z_value = swap16(*(uint16_t *)val_ptr);
389
   switch (z_value) {
389
   switch (z_value) {
390
     case 0: Z_distance = 0.01; break;
390
     case 0: Z_distance = 0.01; break;
394
   }
394
   }
395
 }
395
 }
396
 
396
 
397
-void DGUSScreenHandler::GetOffsetValue(DGUS_VP_Variable &var, void *val_ptr) {
397
+void DGUSScreenHandlerMKS::GetOffsetValue(DGUS_VP_Variable &var, void *val_ptr) {
398
 
398
 
399
   #if HAS_BED_PROBE
399
   #if HAS_BED_PROBE
400
     int32_t value = swap32(*(int32_t *)val_ptr);
400
     int32_t value = swap32(*(int32_t *)val_ptr);
411
   settings.save();
411
   settings.save();
412
 }
412
 }
413
 
413
 
414
-void DGUSScreenHandler::LanguageChange_MKS(DGUS_VP_Variable &var, void *val_ptr) {
414
+void DGUSScreenHandlerMKS::LanguageChange(DGUS_VP_Variable &var, void *val_ptr) {
415
   const uint16_t lag_flag = swap16(*(uint16_t *)val_ptr);
415
   const uint16_t lag_flag = swap16(*(uint16_t *)val_ptr);
416
   switch (lag_flag) {
416
   switch (lag_flag) {
417
     case MKS_SimpleChinese:
417
     case MKS_SimpleChinese:
418
       DGUS_LanguageDisplay(MKS_SimpleChinese);
418
       DGUS_LanguageDisplay(MKS_SimpleChinese);
419
       mks_language_index = MKS_SimpleChinese;
419
       mks_language_index = MKS_SimpleChinese;
420
-      dgusdisplay.MKS_WriteVariable(VP_LANGUAGE_CHANGE1, MKS_Language_Choose);
421
-      dgusdisplay.MKS_WriteVariable(VP_LANGUAGE_CHANGE2, MKS_Language_NoChoose);
420
+      dgusdisplay.WriteVariable(VP_LANGUAGE_CHANGE1, MKS_Language_Choose);
421
+      dgusdisplay.WriteVariable(VP_LANGUAGE_CHANGE2, MKS_Language_NoChoose);
422
       settings.save();
422
       settings.save();
423
       break;
423
       break;
424
     case MKS_English:
424
     case MKS_English:
425
       DGUS_LanguageDisplay(MKS_English);
425
       DGUS_LanguageDisplay(MKS_English);
426
       mks_language_index = MKS_English;
426
       mks_language_index = MKS_English;
427
-      dgusdisplay.MKS_WriteVariable(VP_LANGUAGE_CHANGE1, MKS_Language_NoChoose);
428
-      dgusdisplay.MKS_WriteVariable(VP_LANGUAGE_CHANGE2, MKS_Language_Choose);
427
+      dgusdisplay.WriteVariable(VP_LANGUAGE_CHANGE1, MKS_Language_NoChoose);
428
+      dgusdisplay.WriteVariable(VP_LANGUAGE_CHANGE2, MKS_Language_Choose);
429
       settings.save();
429
       settings.save();
430
       break;
430
       break;
431
     default: break;
431
     default: break;
436
   uint8_t mesh_point_count = GRID_MAX_POINTS;
436
   uint8_t mesh_point_count = GRID_MAX_POINTS;
437
 #endif
437
 #endif
438
 
438
 
439
-void DGUSScreenHandler::Level_Ctrl_MKS(DGUS_VP_Variable &var, void *val_ptr) {
439
+void DGUSScreenHandlerMKS::Level_Ctrl(DGUS_VP_Variable &var, void *val_ptr) {
440
   const uint16_t lev_but = swap16(*(uint16_t *)val_ptr);
440
   const uint16_t lev_but = swap16(*(uint16_t *)val_ptr);
441
   #if ENABLED(MESH_BED_LEVELING)
441
   #if ENABLED(MESH_BED_LEVELING)
442
     auto cs = getCurrentScreen();
442
     auto cs = getCurrentScreen();
483
   }
483
   }
484
 }
484
 }
485
 
485
 
486
-void DGUSScreenHandler::MeshLevelDistanceConfig(DGUS_VP_Variable &var, void *val_ptr) {
486
+void DGUSScreenHandlerMKS::MeshLevelDistanceConfig(DGUS_VP_Variable &var, void *val_ptr) {
487
   const uint16_t mesh_dist = swap16(*(uint16_t *)val_ptr);
487
   const uint16_t mesh_dist = swap16(*(uint16_t *)val_ptr);
488
   switch (mesh_dist) {
488
   switch (mesh_dist) {
489
     case 0: mesh_adj_distance = 0.01; break;
489
     case 0: mesh_adj_distance = 0.01; break;
493
   }
493
   }
494
 }
494
 }
495
 
495
 
496
-void DGUSScreenHandler::MeshLevel(DGUS_VP_Variable &var, void *val_ptr) {
496
+void DGUSScreenHandlerMKS::MeshLevel(DGUS_VP_Variable &var, void *val_ptr) {
497
   #if ENABLED(MESH_BED_LEVELING)
497
   #if ENABLED(MESH_BED_LEVELING)
498
     const uint16_t mesh_value = swap16(*(uint16_t *)val_ptr);
498
     const uint16_t mesh_value = swap16(*(uint16_t *)val_ptr);
499
     // static uint8_t a_first_level = 1;
499
     // static uint8_t a_first_level = 1;
588
   #endif // MESH_BED_LEVELING
588
   #endif // MESH_BED_LEVELING
589
 }
589
 }
590
 
590
 
591
-void DGUSScreenHandler::SD_FileBack(DGUS_VP_Variable&, void*) {
591
+void DGUSScreenHandlerMKS::SD_FileBack(DGUS_VP_Variable&, void*) {
592
   GotoScreen(MKSLCD_SCREEN_HOME);
592
   GotoScreen(MKSLCD_SCREEN_HOME);
593
 }
593
 }
594
 
594
 
595
-void DGUSScreenHandler::LCD_BLK_Adjust(DGUS_VP_Variable &var, void *val_ptr) {
595
+void DGUSScreenHandlerMKS::LCD_BLK_Adjust(DGUS_VP_Variable &var, void *val_ptr) {
596
   const uint16_t lcd_value = swap16(*(uint16_t *)val_ptr);
596
   const uint16_t lcd_value = swap16(*(uint16_t *)val_ptr);
597
 
597
 
598
   lcd_default_light = constrain(lcd_value, 10, 100);
598
   lcd_default_light = constrain(lcd_value, 10, 100);
601
   dgusdisplay.WriteVariable(0x0082, &lcd_data, 5, true);
601
   dgusdisplay.WriteVariable(0x0082, &lcd_data, 5, true);
602
 }
602
 }
603
 
603
 
604
-void DGUSScreenHandler::ManualAssistLeveling(DGUS_VP_Variable &var, void *val_ptr) {
604
+void DGUSScreenHandlerMKS::ManualAssistLeveling(DGUS_VP_Variable &var, void *val_ptr) {
605
   const int16_t point_value = swap16(*(uint16_t *)val_ptr);
605
   const int16_t point_value = swap16(*(uint16_t *)val_ptr);
606
 
606
 
607
   // Insist on leveling first time at this screen
607
   // Insist on leveling first time at this screen
654
 
654
 
655
 #define mks_min(a, b) ((a) < (b)) ? (a) : (b)
655
 #define mks_min(a, b) ((a) < (b)) ? (a) : (b)
656
 #define mks_max(a, b) ((a) > (b)) ? (a) : (b)
656
 #define mks_max(a, b) ((a) > (b)) ? (a) : (b)
657
-void DGUSScreenHandler::TMC_ChangeConfig(DGUS_VP_Variable &var, void *val_ptr) {
657
+void DGUSScreenHandlerMKS::TMC_ChangeConfig(DGUS_VP_Variable &var, void *val_ptr) {
658
   #if EITHER(HAS_TRINAMIC_CONFIG, HAS_STEALTHCHOP)
658
   #if EITHER(HAS_TRINAMIC_CONFIG, HAS_STEALTHCHOP)
659
     const uint16_t tmc_value = swap16(*(uint16_t*)val_ptr);
659
     const uint16_t tmc_value = swap16(*(uint16_t*)val_ptr);
660
   #endif
660
   #endif
893
     return;
893
     return;
894
 }
894
 }
895
 
895
 
896
-void DGUSScreenHandler::GetParkPos_MKS(DGUS_VP_Variable &var, void *val_ptr) {
896
+void DGUSScreenHandlerMKS::GetParkPos(DGUS_VP_Variable &var, void *val_ptr) {
897
   const int16_t value_pos = swap16(*(int16_t*)val_ptr);
897
   const int16_t value_pos = swap16(*(int16_t*)val_ptr);
898
 
898
 
899
   switch (var.VP) {
899
   switch (var.VP) {
905
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
905
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
906
 }
906
 }
907
 
907
 
908
-void DGUSScreenHandler::HandleChangeLevelPoint_MKS(DGUS_VP_Variable &var, void *val_ptr) {
909
-  DEBUG_ECHOLNPGM("HandleChangeLevelPoint_MKS");
908
+void DGUSScreenHandlerMKS::HandleChangeLevelPoint(DGUS_VP_Variable &var, void *val_ptr) {
909
+  DEBUG_ECHOLNPGM("HandleChangeLevelPoint");
910
 
910
 
911
   const int16_t value_raw = swap16(*(int16_t*)val_ptr);
911
   const int16_t value_raw = swap16(*(int16_t*)val_ptr);
912
   DEBUG_ECHOLNPGM("value_raw:", value_raw);
912
   DEBUG_ECHOLNPGM("value_raw:", value_raw);
917
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
917
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
918
 }
918
 }
919
 
919
 
920
-void DGUSScreenHandler::HandleStepPerMMChanged_MKS(DGUS_VP_Variable &var, void *val_ptr) {
921
-  DEBUG_ECHOLNPGM("HandleStepPerMMChanged_MKS");
920
+void DGUSScreenHandlerMKS::HandleStepPerMMChanged(DGUS_VP_Variable &var, void *val_ptr) {
921
+  DEBUG_ECHOLNPGM("HandleStepPerMMChanged");
922
 
922
 
923
   const uint16_t value_raw = swap16(*(uint16_t*)val_ptr);
923
   const uint16_t value_raw = swap16(*(uint16_t*)val_ptr);
924
   const float value = (float)value_raw;
924
   const float value = (float)value_raw;
939
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
939
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
940
 }
940
 }
941
 
941
 
942
-void DGUSScreenHandler::HandleStepPerMMExtruderChanged_MKS(DGUS_VP_Variable &var, void *val_ptr) {
943
-  DEBUG_ECHOLNPGM("HandleStepPerMMExtruderChanged_MKS");
942
+void DGUSScreenHandlerMKS::HandleStepPerMMExtruderChanged(DGUS_VP_Variable &var, void *val_ptr) {
943
+  DEBUG_ECHOLNPGM("HandleStepPerMMExtruderChanged");
944
 
944
 
945
   const uint16_t value_raw = swap16(*(uint16_t*)val_ptr);
945
   const uint16_t value_raw = swap16(*(uint16_t*)val_ptr);
946
   const float value = (float)value_raw;
946
   const float value = (float)value_raw;
964
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
964
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
965
 }
965
 }
966
 
966
 
967
-void DGUSScreenHandler::HandleMaxSpeedChange_MKS(DGUS_VP_Variable &var, void *val_ptr) {
968
-  DEBUG_ECHOLNPGM("HandleMaxSpeedChange_MKS");
967
+void DGUSScreenHandlerMKS::HandleMaxSpeedChange(DGUS_VP_Variable &var, void *val_ptr) {
968
+  DEBUG_ECHOLNPGM("HandleMaxSpeedChange");
969
 
969
 
970
   const uint16_t value_raw = swap16(*(uint16_t*)val_ptr);
970
   const uint16_t value_raw = swap16(*(uint16_t*)val_ptr);
971
   const float value = (float)value_raw;
971
   const float value = (float)value_raw;
986
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
986
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
987
 }
987
 }
988
 
988
 
989
-void DGUSScreenHandler::HandleExtruderMaxSpeedChange_MKS(DGUS_VP_Variable &var, void *val_ptr) {
990
-  DEBUG_ECHOLNPGM("HandleExtruderMaxSpeedChange_MKS");
989
+void DGUSScreenHandlerMKS::HandleExtruderMaxSpeedChange(DGUS_VP_Variable &var, void *val_ptr) {
990
+  DEBUG_ECHOLNPGM("HandleExtruderMaxSpeedChange");
991
 
991
 
992
   const uint16_t value_raw = swap16(*(uint16_t*)val_ptr);
992
   const uint16_t value_raw = swap16(*(uint16_t*)val_ptr);
993
   const float value = (float)value_raw;
993
   const float value = (float)value_raw;
1011
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1011
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1012
 }
1012
 }
1013
 
1013
 
1014
-void DGUSScreenHandler::HandleMaxAccChange_MKS(DGUS_VP_Variable &var, void *val_ptr) {
1015
-  DEBUG_ECHOLNPGM("HandleMaxAccChange_MKS");
1014
+void DGUSScreenHandlerMKS::HandleMaxAccChange(DGUS_VP_Variable &var, void *val_ptr) {
1015
+  DEBUG_ECHOLNPGM("HandleMaxAccChange");
1016
 
1016
 
1017
   const uint16_t value_raw = swap16(*(uint16_t*)val_ptr);
1017
   const uint16_t value_raw = swap16(*(uint16_t*)val_ptr);
1018
   const float value = (float)value_raw;
1018
   const float value = (float)value_raw;
1033
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1033
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1034
 }
1034
 }
1035
 
1035
 
1036
-void DGUSScreenHandler::HandleExtruderAccChange_MKS(DGUS_VP_Variable &var, void *val_ptr) {
1037
-  DEBUG_ECHOLNPGM("HandleExtruderAccChange_MKS");
1036
+void DGUSScreenHandlerMKS::HandleExtruderAccChange(DGUS_VP_Variable &var, void *val_ptr) {
1037
+  DEBUG_ECHOLNPGM("HandleExtruderAccChange");
1038
 
1038
 
1039
   uint16_t value_raw = swap16(*(uint16_t*)val_ptr);
1039
   uint16_t value_raw = swap16(*(uint16_t*)val_ptr);
1040
   DEBUG_ECHOLNPGM("value_raw:", value_raw);
1040
   DEBUG_ECHOLNPGM("value_raw:", value_raw);
1056
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1056
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1057
 }
1057
 }
1058
 
1058
 
1059
-void DGUSScreenHandler::HandleTravelAccChange_MKS(DGUS_VP_Variable &var, void *val_ptr) {
1059
+void DGUSScreenHandlerMKS::HandleTravelAccChange(DGUS_VP_Variable &var, void *val_ptr) {
1060
   uint16_t value_travel = swap16(*(uint16_t*)val_ptr);
1060
   uint16_t value_travel = swap16(*(uint16_t*)val_ptr);
1061
   planner.settings.travel_acceleration = (float)value_travel;
1061
   planner.settings.travel_acceleration = (float)value_travel;
1062
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1062
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1063
 }
1063
 }
1064
 
1064
 
1065
-void DGUSScreenHandler::HandleFeedRateMinChange_MKS(DGUS_VP_Variable &var, void *val_ptr) {
1065
+void DGUSScreenHandlerMKS::HandleFeedRateMinChange(DGUS_VP_Variable &var, void *val_ptr) {
1066
   uint16_t value_t = swap16(*(uint16_t*)val_ptr);
1066
   uint16_t value_t = swap16(*(uint16_t*)val_ptr);
1067
   planner.settings.min_feedrate_mm_s = (float)value_t;
1067
   planner.settings.min_feedrate_mm_s = (float)value_t;
1068
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1068
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1069
 }
1069
 }
1070
 
1070
 
1071
-void DGUSScreenHandler::HandleMin_T_F_MKS(DGUS_VP_Variable &var, void *val_ptr) {
1071
+void DGUSScreenHandlerMKS::HandleMin_T_F(DGUS_VP_Variable &var, void *val_ptr) {
1072
   uint16_t value_t_f = swap16(*(uint16_t*)val_ptr);
1072
   uint16_t value_t_f = swap16(*(uint16_t*)val_ptr);
1073
   planner.settings.min_travel_feedrate_mm_s = (float)value_t_f;
1073
   planner.settings.min_travel_feedrate_mm_s = (float)value_t_f;
1074
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1074
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1075
 }
1075
 }
1076
 
1076
 
1077
-void DGUSScreenHandler::HandleAccChange_MKS(DGUS_VP_Variable &var, void *val_ptr) {
1077
+void DGUSScreenHandlerMKS::HandleAccChange(DGUS_VP_Variable &var, void *val_ptr) {
1078
   uint16_t value_acc = swap16(*(uint16_t*)val_ptr);
1078
   uint16_t value_acc = swap16(*(uint16_t*)val_ptr);
1079
   planner.settings.acceleration = (float)value_acc;
1079
   planner.settings.acceleration = (float)value_acc;
1080
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1080
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1081
 }
1081
 }
1082
 
1082
 
1083
 #if ENABLED(PREVENT_COLD_EXTRUSION)
1083
 #if ENABLED(PREVENT_COLD_EXTRUSION)
1084
-  void DGUSScreenHandler::HandleGetExMinTemp_MKS(DGUS_VP_Variable &var, void *val_ptr) {
1084
+  void DGUSScreenHandlerMKS::HandleGetExMinTemp(DGUS_VP_Variable &var, void *val_ptr) {
1085
     const uint16_t value_ex_min_temp = swap16(*(uint16_t*)val_ptr);
1085
     const uint16_t value_ex_min_temp = swap16(*(uint16_t*)val_ptr);
1086
     thermalManager.extrude_min_temp = value_ex_min_temp;
1086
     thermalManager.extrude_min_temp = value_ex_min_temp;
1087
     skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1087
     skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1168
   }
1168
   }
1169
 #endif // BABYSTEPPING
1169
 #endif // BABYSTEPPING
1170
 
1170
 
1171
-void DGUSScreenHandler::GetManualFilament(DGUS_VP_Variable &var, void *val_ptr) {
1171
+void DGUSScreenHandlerMKS::GetManualFilament(DGUS_VP_Variable &var, void *val_ptr) {
1172
   DEBUG_ECHOLNPGM("GetManualFilament");
1172
   DEBUG_ECHOLNPGM("GetManualFilament");
1173
 
1173
 
1174
   uint16_t value_len = swap16(*(uint16_t*)val_ptr);
1174
   uint16_t value_len = swap16(*(uint16_t*)val_ptr);
1181
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1181
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1182
 }
1182
 }
1183
 
1183
 
1184
-void DGUSScreenHandler::GetManualFilamentSpeed(DGUS_VP_Variable &var, void *val_ptr) {
1184
+void DGUSScreenHandlerMKS::GetManualFilamentSpeed(DGUS_VP_Variable &var, void *val_ptr) {
1185
   DEBUG_ECHOLNPGM("GetManualFilamentSpeed");
1185
   DEBUG_ECHOLNPGM("GetManualFilamentSpeed");
1186
 
1186
 
1187
   uint16_t value_len = swap16(*(uint16_t*)val_ptr);
1187
   uint16_t value_len = swap16(*(uint16_t*)val_ptr);
1193
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1193
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1194
 }
1194
 }
1195
 
1195
 
1196
-void DGUSScreenHandler::MKS_FilamentLoadUnload(DGUS_VP_Variable &var, void *val_ptr, const int filamentDir) {
1196
+void DGUSScreenHandlerMKS::FilamentLoadUnload(DGUS_VP_Variable &var, void *val_ptr, const int filamentDir) {
1197
   #if EITHER(HAS_MULTI_HOTEND, SINGLENOZZLE)
1197
   #if EITHER(HAS_MULTI_HOTEND, SINGLENOZZLE)
1198
     uint8_t swap_tool = 0;
1198
     uint8_t swap_tool = 0;
1199
   #else
1199
   #else
1254
 }
1254
 }
1255
 
1255
 
1256
 /**
1256
 /**
1257
- * M1002: Do a tool-change and relative move for MKS_FilamentLoadUnload
1257
+ * M1002: Do a tool-change and relative move for FilamentLoadUnload
1258
  *        within the G-code execution window for best concurrency.
1258
  *        within the G-code execution window for best concurrency.
1259
  */
1259
  */
1260
 void GcodeSuite::M1002() {
1260
 void GcodeSuite::M1002() {
1276
   axis_relative = old_axis_relative;
1276
   axis_relative = old_axis_relative;
1277
 }
1277
 }
1278
 
1278
 
1279
-void DGUSScreenHandler::MKS_FilamentLoad(DGUS_VP_Variable &var, void *val_ptr) {
1280
-  DEBUG_ECHOLNPGM("MKS_FilamentLoad");
1281
-   MKS_FilamentLoadUnload(var, val_ptr, 1);
1279
+void DGUSScreenHandlerMKS::FilamentLoad(DGUS_VP_Variable &var, void *val_ptr) {
1280
+  DEBUG_ECHOLNPGM("FilamentLoad");
1281
+  FilamentLoadUnload(var, val_ptr, 1);
1282
 }
1282
 }
1283
 
1283
 
1284
-void DGUSScreenHandler::MKS_FilamentUnLoad(DGUS_VP_Variable &var, void *val_ptr) {
1285
-  DEBUG_ECHOLNPGM("MKS_FilamentUnLoad");
1286
-  MKS_FilamentLoadUnload(var, val_ptr, -1);
1284
+void DGUSScreenHandlerMKS::FilamentUnLoad(DGUS_VP_Variable &var, void *val_ptr) {
1285
+  DEBUG_ECHOLNPGM("FilamentUnLoad");
1286
+  FilamentLoadUnload(var, val_ptr, -1);
1287
 }
1287
 }
1288
 
1288
 
1289
 #if ENABLED(DGUS_FILAMENT_LOADUNLOAD)
1289
 #if ENABLED(DGUS_FILAMENT_LOADUNLOAD)
1392
 
1392
 
1393
 #endif // DGUS_FILAMENT_LOADUNLOAD
1393
 #endif // DGUS_FILAMENT_LOADUNLOAD
1394
 
1394
 
1395
-bool DGUSScreenHandler::loop() {
1395
+bool DGUSScreenHandlerMKS::loop() {
1396
   dgusdisplay.loop();
1396
   dgusdisplay.loop();
1397
 
1397
 
1398
   const millis_t ms = millis();
1398
   const millis_t ms = millis();
1444
   return IsScreenComplete();
1444
   return IsScreenComplete();
1445
 }
1445
 }
1446
 
1446
 
1447
-void DGUSScreenHandler::LanguagePInit() {
1447
+void DGUSScreenHandlerMKS::LanguagePInit() {
1448
   switch (mks_language_index) {
1448
   switch (mks_language_index) {
1449
     case MKS_SimpleChinese:
1449
     case MKS_SimpleChinese:
1450
-      dgusdisplay.MKS_WriteVariable(VP_LANGUAGE_CHANGE1, MKS_Language_Choose);
1451
-      dgusdisplay.MKS_WriteVariable(VP_LANGUAGE_CHANGE2, MKS_Language_NoChoose);
1450
+      dgusdisplay.WriteVariable(VP_LANGUAGE_CHANGE1, MKS_Language_Choose);
1451
+      dgusdisplay.WriteVariable(VP_LANGUAGE_CHANGE2, MKS_Language_NoChoose);
1452
       break;
1452
       break;
1453
     case MKS_English:
1453
     case MKS_English:
1454
-      dgusdisplay.MKS_WriteVariable(VP_LANGUAGE_CHANGE1, MKS_Language_NoChoose);
1455
-      dgusdisplay.MKS_WriteVariable(VP_LANGUAGE_CHANGE2, MKS_Language_Choose);
1454
+      dgusdisplay.WriteVariable(VP_LANGUAGE_CHANGE1, MKS_Language_NoChoose);
1455
+      dgusdisplay.WriteVariable(VP_LANGUAGE_CHANGE2, MKS_Language_Choose);
1456
       break;
1456
       break;
1457
     default:
1457
     default:
1458
       break;
1458
       break;
1459
   }
1459
   }
1460
 }
1460
 }
1461
 
1461
 
1462
-void DGUSScreenHandler::DGUS_ExtrudeLoadInit() {
1462
+void DGUSScreenHandlerMKS::DGUS_ExtrudeLoadInit() {
1463
   ex_filament.ex_length           = distanceFilament;
1463
   ex_filament.ex_length           = distanceFilament;
1464
   ex_filament.ex_load_unload_flag = 0;
1464
   ex_filament.ex_load_unload_flag = 0;
1465
   ex_filament.ex_need_time        = filamentSpeed_mm_s;
1465
   ex_filament.ex_need_time        = filamentSpeed_mm_s;
1469
   ex_filament.ex_tick_start       = 0;
1469
   ex_filament.ex_tick_start       = 0;
1470
 }
1470
 }
1471
 
1471
 
1472
-void DGUSScreenHandler::DGUS_RunoutInit() {
1472
+void DGUSScreenHandlerMKS::DGUS_RunoutInit() {
1473
   #if PIN_EXISTS(MT_DET_1)
1473
   #if PIN_EXISTS(MT_DET_1)
1474
     SET_INPUT_PULLUP(MT_DET_1_PIN);
1474
     SET_INPUT_PULLUP(MT_DET_1_PIN);
1475
   #endif
1475
   #endif
1479
   runout_mks.runout_status = UNRUNOUT_STATUS;
1479
   runout_mks.runout_status = UNRUNOUT_STATUS;
1480
 }
1480
 }
1481
 
1481
 
1482
-void DGUSScreenHandler::DGUS_Runout_Idle() {
1482
+void DGUSScreenHandlerMKS::DGUS_Runout_Idle() {
1483
   #if ENABLED(DGUS_MKS_RUNOUT_SENSOR)
1483
   #if ENABLED(DGUS_MKS_RUNOUT_SENSOR)
1484
     // scanf runout pin
1484
     // scanf runout pin
1485
     switch (runout_mks.runout_status) {
1485
     switch (runout_mks.runout_status) {
1514
   #endif
1514
   #endif
1515
 }
1515
 }
1516
 
1516
 
1517
-void DGUSScreenHandler::DGUS_LanguageDisplay(uint8_t var) {
1517
+void DGUSScreenHandlerMKS::DGUS_LanguageDisplay(uint8_t var) {
1518
   if (var == MKS_English) {
1518
   if (var == MKS_English) {
1519
     const char home_buf_en[] = "Home";
1519
     const char home_buf_en[] = "Home";
1520
     dgusdisplay.WriteVariable(VP_HOME_Dis, home_buf_en, 32, true);
1520
     dgusdisplay.WriteVariable(VP_HOME_Dis, home_buf_en, 32, true);

+ 30
- 235
Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.h Просмотреть файл

21
  */
21
  */
22
 #pragma once
22
 #pragma once
23
 
23
 
24
-#include "../DGUSDisplay.h"
25
-#include "../DGUSVPVariable.h"
26
-#include "../DGUSDisplayDef.h"
27
-
28
-#include "../../../../inc/MarlinConfig.h"
24
+#include "../DGUSScreenHandlerBase.h"
29
 
25
 
30
 enum DGUSLCD_Screens : uint8_t;
26
 enum DGUSLCD_Screens : uint8_t;
31
 
27
 
32
-class DGUSScreenHandler {
28
+class DGUSScreenHandlerMKS : public DGUSScreenHandler {
33
 public:
29
 public:
34
-  DGUSScreenHandler() = default;
35
-
36
-  static bool loop();
37
-
38
-  // Send all 4 strings that are displayed on the infoscreen, confirmation screen and kill screen
39
-  // The bools specifying whether the strings are in RAM or FLASH.
40
-  static void sendinfoscreen(PGM_P const line1, PGM_P const line2, PGM_P const line3, PGM_P const line4, bool l1inflash, bool l2inflash, bool l3inflash, bool liinflash);
41
-  static void sendinfoscreen(FSTR_P const line1, FSTR_P const line2, PGM_P const line3, PGM_P const line4, bool l1inflash, bool l2inflash, bool l3inflash, bool liinflash) {
42
-    sendinfoscreen(FTOP(line1), FTOP(line2), line3, line4, l1inflash, l2inflash, l3inflash, liinflash);
43
-  }
44
-  static void sendinfoscreen(FSTR_P const line1, FSTR_P const line2, FSTR_P const line3, FSTR_P const line4, bool l1inflash, bool l2inflash, bool l3inflash, bool liinflash) {
45
-    sendinfoscreen(FTOP(line1), FTOP(line2), FTOP(line3), FTOP(line4), l1inflash, l2inflash, l3inflash, liinflash);
46
-  }
47
-
48
-  static void HandleUserConfirmationPopUp(uint16_t ConfirmVP, PGM_P const line1, PGM_P const line2, PGM_P const line3, PGM_P const line4, bool l1inflash, bool l2inflash, bool l3inflash, bool liinflash);
30
+  DGUSScreenHandlerMKS() = default;
49
 
31
 
50
   #if 0
32
   #if 0
51
-  static void sendinfoscreen_ch_mks(const uint16_t *line1, const uint16_t *line2, const uint16_t *line3, const uint16_t *line4);
52
-  static void sendinfoscreen_en_mks(PGM_P const line1, PGM_P const line2, PGM_P const line3, PGM_P const line4);
53
-  static void sendinfoscreen_mks(const void *line1, const void *line2, const void *line3, const void *line4, uint16_t language);
33
+  static void sendinfoscreen_ch(const uint16_t *line1, const uint16_t *line2, const uint16_t *line3, const uint16_t *line4);
34
+  static void sendinfoscreen_en(PGM_P const line1, PGM_P const line2, PGM_P const line3, PGM_P const line4);
35
+  static void sendinfoscreen(const void *line1, const void *line2, const void *line3, const void *line4, uint16_t language);
54
   #endif
36
   #endif
55
 
37
 
56
-  // "M117" Message -- msg is a RAM ptr.
57
-  static void setstatusmessage(const char *msg);
58
-  // The same for messages from Flash
59
-  static void setstatusmessagePGM(PGM_P const msg);
60
-  // Callback for VP "Display wants to change screen on idle printer"
61
-  static void ScreenChangeHookIfIdle(DGUS_VP_Variable &var, void *val_ptr);
62
-  // Callback for VP "Screen has been changed"
63
-  static void ScreenChangeHook(DGUS_VP_Variable &var, void *val_ptr);
64
-
65
   static void ScreenBackChange(DGUS_VP_Variable &var, void *val_ptr);
38
   static void ScreenBackChange(DGUS_VP_Variable &var, void *val_ptr);
66
 
39
 
67
-  // Callback for VP "All Heaters Off"
68
-  static void HandleAllHeatersOff(DGUS_VP_Variable &var, void *val_ptr);
69
-  // Hook for "Change this temperature"
70
-  static void HandleTemperatureChanged(DGUS_VP_Variable &var, void *val_ptr);
71
-  // Hook for "Change Flowrate"
72
-  static void HandleFlowRateChanged(DGUS_VP_Variable &var, void *val_ptr);
73
-  #if ENABLED(DGUS_UI_MOVE_DIS_OPTION)
74
-    // Hook for manual move option
75
-    static void HandleManualMoveOption(DGUS_VP_Variable &var, void *val_ptr);
76
-  #endif
77
-
78
   static void EEPROM_CTRL(DGUS_VP_Variable &var, void *val_ptr);
40
   static void EEPROM_CTRL(DGUS_VP_Variable &var, void *val_ptr);
79
-  static void LanguageChange_MKS(DGUS_VP_Variable &var, void *val_ptr);
41
+  static void LanguageChange(DGUS_VP_Variable &var, void *val_ptr);
80
   static void GetOffsetValue(DGUS_VP_Variable &var, void *val_ptr);
42
   static void GetOffsetValue(DGUS_VP_Variable &var, void *val_ptr);
81
-  static void Level_Ctrl_MKS(DGUS_VP_Variable &var, void *val_ptr);
43
+  static void Level_Ctrl(DGUS_VP_Variable &var, void *val_ptr);
82
   static void MeshLevel(DGUS_VP_Variable &var, void *val_ptr);
44
   static void MeshLevel(DGUS_VP_Variable &var, void *val_ptr);
83
   static void MeshLevelDistanceConfig(DGUS_VP_Variable &var, void *val_ptr);
45
   static void MeshLevelDistanceConfig(DGUS_VP_Variable &var, void *val_ptr);
84
   static void ManualAssistLeveling(DGUS_VP_Variable &var, void *val_ptr);
46
   static void ManualAssistLeveling(DGUS_VP_Variable &var, void *val_ptr);
87
   static void GetManualMovestep(DGUS_VP_Variable &var, void *val_ptr);
49
   static void GetManualMovestep(DGUS_VP_Variable &var, void *val_ptr);
88
   static void GetZoffsetDistance(DGUS_VP_Variable &var, void *val_ptr);
50
   static void GetZoffsetDistance(DGUS_VP_Variable &var, void *val_ptr);
89
   static void GetMinExtrudeTemp(DGUS_VP_Variable &var, void *val_ptr);
51
   static void GetMinExtrudeTemp(DGUS_VP_Variable &var, void *val_ptr);
90
-  static void GetParkPos_MKS(DGUS_VP_Variable &var, void *val_ptr);
52
+  static void GetParkPos(DGUS_VP_Variable &var, void *val_ptr);
91
   #if ENABLED(PREVENT_COLD_EXTRUSION)
53
   #if ENABLED(PREVENT_COLD_EXTRUSION)
92
-    static void HandleGetExMinTemp_MKS(DGUS_VP_Variable &var, void *val_ptr);
54
+    static void HandleGetExMinTemp(DGUS_VP_Variable &var, void *val_ptr);
93
   #endif
55
   #endif
94
   static void DGUS_LanguageDisplay(uint8_t var);
56
   static void DGUS_LanguageDisplay(uint8_t var);
95
   static void TMC_ChangeConfig(DGUS_VP_Variable &var, void *val_ptr);
57
   static void TMC_ChangeConfig(DGUS_VP_Variable &var, void *val_ptr);
101
   static void LCD_BLK_Adjust(DGUS_VP_Variable &var, void *val_ptr);
63
   static void LCD_BLK_Adjust(DGUS_VP_Variable &var, void *val_ptr);
102
   static void SD_FileBack(DGUS_VP_Variable &var, void *val_ptr);
64
   static void SD_FileBack(DGUS_VP_Variable &var, void *val_ptr);
103
 
65
 
104
-  // Hook for manual move.
105
-  static void HandleManualMove(DGUS_VP_Variable &var, void *val_ptr);
106
-  // Hook for manual extrude.
107
-  static void HandleManualExtrude(DGUS_VP_Variable &var, void *val_ptr);
108
-  // Hook for motor lock and unlook
109
-  static void HandleMotorLockUnlock(DGUS_VP_Variable &var, void *val_ptr);
110
-  #if ENABLED(POWER_LOSS_RECOVERY)
111
-    // Hook for power loss recovery.
112
-    static void HandlePowerLossRecovery(DGUS_VP_Variable &var, void *val_ptr);
113
-  #endif
114
-  // Hook for settings
115
-  static void HandleSettings(DGUS_VP_Variable &var, void *val_ptr);
116
   static void HandleStepPerMMChanged(DGUS_VP_Variable &var, void *val_ptr);
66
   static void HandleStepPerMMChanged(DGUS_VP_Variable &var, void *val_ptr);
117
   static void HandleStepPerMMExtruderChanged(DGUS_VP_Variable &var, void *val_ptr);
67
   static void HandleStepPerMMExtruderChanged(DGUS_VP_Variable &var, void *val_ptr);
118
-
119
-  static void HandleStepPerMMChanged_MKS(DGUS_VP_Variable &var, void *val_ptr);
120
-  static void HandleStepPerMMExtruderChanged_MKS(DGUS_VP_Variable &var, void *val_ptr);
121
-  static void HandleMaxSpeedChange_MKS(DGUS_VP_Variable &var, void *val_ptr);
122
-  static void HandleExtruderMaxSpeedChange_MKS(DGUS_VP_Variable &var, void *val_ptr);
123
-  static void HandleAccChange_MKS(DGUS_VP_Variable &var, void *val_ptr);
124
-  static void HandleMaxAccChange_MKS(DGUS_VP_Variable &var, void *val_ptr);
125
-  static void HandleExtruderAccChange_MKS(DGUS_VP_Variable &var, void *val_ptr);
126
-  static void HandleChangeLevelPoint_MKS(DGUS_VP_Variable &var, void *val_ptr);
127
-  static void HandleTravelAccChange_MKS(DGUS_VP_Variable &var, void *val_ptr);
128
-  static void HandleFeedRateMinChange_MKS(DGUS_VP_Variable &var, void *val_ptr);
129
-  static void HandleMin_T_F_MKS(DGUS_VP_Variable &var, void *val_ptr);
68
+  static void HandleMaxSpeedChange(DGUS_VP_Variable &var, void *val_ptr);
69
+  static void HandleExtruderMaxSpeedChange(DGUS_VP_Variable &var, void *val_ptr);
70
+  static void HandleAccChange(DGUS_VP_Variable &var, void *val_ptr);
71
+  static void HandleMaxAccChange(DGUS_VP_Variable &var, void *val_ptr);
72
+  static void HandleExtruderAccChange(DGUS_VP_Variable &var, void *val_ptr);
73
+  static void HandleChangeLevelPoint(DGUS_VP_Variable &var, void *val_ptr);
74
+  static void HandleTravelAccChange(DGUS_VP_Variable &var, void *val_ptr);
75
+  static void HandleFeedRateMinChange(DGUS_VP_Variable &var, void *val_ptr);
76
+  static void HandleMin_T_F(DGUS_VP_Variable &var, void *val_ptr);
130
 
77
 
131
   #if HAS_PID_HEATING
78
   #if HAS_PID_HEATING
132
-    // Hook for "Change this temperature PID para"
133
-    static void HandleTemperaturePIDChanged(DGUS_VP_Variable &var, void *val_ptr);
134
-    // Hook for PID autotune
135
-    static void HandlePIDAutotune(DGUS_VP_Variable &var, void *val_ptr);
136
-  #endif
137
-  #if HAS_BED_PROBE
138
-    // Hook for "Change probe offset z"
139
-    static void HandleProbeOffsetZChanged(DGUS_VP_Variable &var, void *val_ptr);
140
-  #endif
141
-  #if ENABLED(BABYSTEPPING)
142
-    // Hook for live z adjust action
143
-    static void HandleLiveAdjustZ(DGUS_VP_Variable &var, void *val_ptr);
144
-  #endif
145
-  #if HAS_FAN
146
-    // Hook for fan control
147
-    static void HandleFanControl(DGUS_VP_Variable &var, void *val_ptr);
148
-  #endif
149
-  // Hook for heater control
150
-  static void HandleHeaterControl(DGUS_VP_Variable &var, void *val_ptr);
151
-  #if ENABLED(DGUS_PREHEAT_UI)
152
-    // Hook for preheat
153
-    static void HandlePreheat(DGUS_VP_Variable &var, void *val_ptr);
154
-  #endif
155
-  #if ENABLED(DGUS_FILAMENT_LOADUNLOAD)
156
-    // Hook for filament load and unload filament option
157
-    static void HandleFilamentOption(DGUS_VP_Variable &var, void *val_ptr);
158
-    // Hook for filament load and unload
159
-    static void HandleFilamentLoadUnload(DGUS_VP_Variable &var);
160
-
161
-    static void MKS_FilamentLoadUnload(DGUS_VP_Variable &var, void *val_ptr, const int filamentDir);
162
-    static void MKS_FilamentLoad(DGUS_VP_Variable &var, void *val_ptr);
163
-    static void MKS_FilamentUnLoad(DGUS_VP_Variable &var, void *val_ptr);
164
-    static void MKS_LOAD_UNLOAD_IDLE();
165
-    static void MKS_LOAD_Cancle(DGUS_VP_Variable &var, void *val_ptr);
79
+    static void FilamentLoadUnload(DGUS_VP_Variable &var, void *val_ptr, const int filamentDir);
80
+    static void FilamentLoad(DGUS_VP_Variable &var, void *val_ptr);
81
+    static void FilamentUnLoad(DGUS_VP_Variable &var, void *val_ptr);
166
     static void GetManualFilament(DGUS_VP_Variable &var, void *val_ptr);
82
     static void GetManualFilament(DGUS_VP_Variable &var, void *val_ptr);
167
     static void GetManualFilamentSpeed(DGUS_VP_Variable &var, void *val_ptr);
83
     static void GetManualFilamentSpeed(DGUS_VP_Variable &var, void *val_ptr);
168
   #endif
84
   #endif
169
 
85
 
170
   #if ENABLED(SDSUPPORT)
86
   #if ENABLED(SDSUPPORT)
171
-    // Callback for VP "Display wants to change screen when there is a SD card"
172
-    static void ScreenChangeHookIfSD(DGUS_VP_Variable &var, void *val_ptr);
173
-    // Scroll buttons on the file listing screen.
174
-    static void DGUSLCD_SD_ScrollFilelist(DGUS_VP_Variable &var, void *val_ptr);
175
-    // File touched.
176
-    static void DGUSLCD_SD_FileSelected(DGUS_VP_Variable &var, void *val_ptr);
177
-    // start print after confirmation received.
178
-    static void DGUSLCD_SD_StartPrint(DGUS_VP_Variable &var, void *val_ptr);
179
-    // User hit the pause, resume or abort button.
180
-    static void DGUSLCD_SD_ResumePauseAbort(DGUS_VP_Variable &var, void *val_ptr);
181
-    // User confirmed the abort action
182
-    static void DGUSLCD_SD_ReallyAbort(DGUS_VP_Variable &var, void *val_ptr);
183
-    // User hit the tune button
184
-    static void DGUSLCD_SD_PrintTune(DGUS_VP_Variable &var, void *val_ptr);
185
-    // Send a single filename to the display.
186
-    static void DGUSLCD_SD_SendFilename(DGUS_VP_Variable &var);
187
-    // Marlin informed us that a new SD has been inserted.
188
-    static void SDCardInserted();
189
-    // Marlin informed us that the SD Card has been removed().
190
-    static void SDCardRemoved();
191
-    // Marlin informed us about a bad SD Card.
192
-    static void SDCardError();
193
     // Marlin informed us about SD print completion.
87
     // Marlin informed us about SD print completion.
194
     static void SDPrintingFinished();
88
     static void SDPrintingFinished();
195
   #else
89
   #else
196
     static void PrintReturn(DGUS_VP_Variable &var, void *val_ptr);
90
     static void PrintReturn(DGUS_VP_Variable &var, void *val_ptr);
197
   #endif
91
   #endif
198
 
92
 
199
-  // OK Button on the Confirm screen.
200
-  static void ScreenConfirmedOK(DGUS_VP_Variable &var, void *val_ptr);
201
-
202
-  // Update data after going to a new screen (by display or by GotoScreen)
203
-  // remember: store the last-displayed screen, so it can be returned to.
204
-  // (e.g for popup messages)
205
-  static void UpdateNewScreen(DGUSLCD_Screens newscreen, bool popup=false);
206
-
207
-  // Recall the remembered screen.
208
-  static void PopToOldScreen();
209
-
210
-  // Make the display show the screen and update all VPs in it.
211
-  static void GotoScreen(DGUSLCD_Screens screen, bool ispopup = false);
212
-
213
-  static void UpdateScreenVPData();
214
-
215
-  // Helpers to convert and transfer data to the display.
216
-  static void DGUSLCD_SendWordValueToDisplay(DGUS_VP_Variable &var);
217
-  static void DGUSLCD_SendStringToDisplay(DGUS_VP_Variable &var);
218
-  static void DGUSLCD_SendStringToDisplayPGM(DGUS_VP_Variable &var);
219
-  static void DGUSLCD_SendTemperaturePID(DGUS_VP_Variable &var);
220
-  static void DGUSLCD_SendPercentageToDisplay(DGUS_VP_Variable &var);
221
-  static void DGUSLCD_SendPrintProgressToDisplay(DGUS_VP_Variable &var);
222
   static void DGUSLCD_SendPrintTimeToDisplay(DGUS_VP_Variable &var);
93
   static void DGUSLCD_SendPrintTimeToDisplay(DGUS_VP_Variable &var);
223
-
224
-  static void DGUSLCD_SendPrintTimeToDisplay_MKS(DGUS_VP_Variable &var);
225
-  static void DGUSLCD_SendBabyStepToDisplay_MKS(DGUS_VP_Variable &var);
94
+  static void DGUSLCD_SendBabyStepToDisplay(DGUS_VP_Variable &var);
226
   static void DGUSLCD_SendFanToDisplay(DGUS_VP_Variable &var);
95
   static void DGUSLCD_SendFanToDisplay(DGUS_VP_Variable &var);
227
   static void DGUSLCD_SendGbkToDisplay(DGUS_VP_Variable &var);
96
   static void DGUSLCD_SendGbkToDisplay(DGUS_VP_Variable &var);
228
-  static void DGUSLCD_SendStringToDisplay_Language_MKS(DGUS_VP_Variable &var);
97
+  static void DGUSLCD_SendStringToDisplay_Language(DGUS_VP_Variable &var);
229
   static void DGUSLCD_SendTMCStepValue(DGUS_VP_Variable &var);
98
   static void DGUSLCD_SendTMCStepValue(DGUS_VP_Variable &var);
230
 
99
 
231
-  #if ENABLED(PRINTCOUNTER)
232
-    static void DGUSLCD_SendPrintAccTimeToDisplay(DGUS_VP_Variable &var);
233
-    static void DGUSLCD_SendPrintsTotalToDisplay(DGUS_VP_Variable &var);
234
-  #endif
235
-  #if HAS_FAN
236
-    static void DGUSLCD_SendFanStatusToDisplay(DGUS_VP_Variable &var);
237
-  #endif
238
-  static void DGUSLCD_SendHeaterStatusToDisplay(DGUS_VP_Variable &var);
239
-  #if ENABLED(DGUS_UI_WAITING)
240
-    static void DGUSLCD_SendWaitingStatusToDisplay(DGUS_VP_Variable &var);
241
-  #endif
242
-
243
-  // Send a value from 0..100 to a variable with a range from 0..255
244
-  static void DGUSLCD_PercentageToUint8(DGUS_VP_Variable &var, void *val_ptr);
245
-
246
   static void DGUSLCD_SetUint8(DGUS_VP_Variable &var, void *val_ptr);
100
   static void DGUSLCD_SetUint8(DGUS_VP_Variable &var, void *val_ptr);
247
 
101
 
248
-  template<typename T>
249
-  static void DGUSLCD_SetValueDirectly(DGUS_VP_Variable &var, void *val_ptr) {
250
-    if (!var.memadr) return;
251
-    union { unsigned char tmp[sizeof(T)]; T t; } x;
252
-    unsigned char *ptr = (unsigned char*)val_ptr;
253
-    LOOP_L_N(i, sizeof(T)) x.tmp[i] = ptr[sizeof(T) - i - 1];
254
-    *(T*)var.memadr = x.t;
255
-  }
256
-
257
-  // Send a float value to the display.
258
-  // Display will get a 4-byte integer scaled to the number of digits:
259
-  // Tell the display the number of digits and it cheats by displaying a dot between...
260
-  template<unsigned int decimals>
261
-  static void DGUSLCD_SendFloatAsLongValueToDisplay(DGUS_VP_Variable &var) {
262
-    if (var.memadr) {
263
-      float f = *(float *)var.memadr;
264
-      f *= cpow(10, decimals);
265
-      dgusdisplay.WriteVariable(var.VP, (long)f);
266
-    }
267
-  }
268
-
269
-  // Send a float value to the display.
270
-  // Display will get a 2-byte integer scaled to the number of digits:
271
-  // Tell the display the number of digits and it cheats by displaying a dot between...
272
-  template<unsigned int decimals>
273
-  static void DGUSLCD_SendFloatAsIntValueToDisplay(DGUS_VP_Variable &var) {
274
-    if (var.memadr) {
275
-      float f = *(float *)var.memadr;
276
-      DEBUG_ECHOLNPAIR_F(" >> ", f, 6);
277
-      f *= cpow(10, decimals);
278
-      dgusdisplay.WriteVariable(var.VP, (int16_t)f);
279
-    }
280
-  }
281
-
282
-  // Force an update of all VP on the current screen.
283
-  static void ForceCompleteUpdate() { update_ptr = 0; ScreenComplete = false; }
284
-  // Has all VPs sent to the screen
285
-  static bool IsScreenComplete() { return ScreenComplete; }
286
-
287
-  static DGUSLCD_Screens getCurrentScreen() { return current_screen; }
288
-
289
-  static void SetupConfirmAction( void (*f)()) { confirm_action_cb = f; }
290
-
291
-private:
292
-  static DGUSLCD_Screens current_screen;  //< currently on screen
293
-  static constexpr uint8_t NUM_PAST_SCREENS = 4;
294
-  static DGUSLCD_Screens past_screens[NUM_PAST_SCREENS]; //< LIFO with past screens for the "back" button.
295
-
296
-  static uint8_t update_ptr;      //< Last sent entry in the VPList for the actual screen.
297
-  static uint16_t skipVP;         //< When updating the screen data, skip this one, because the user is interacting with it.
298
-  static bool ScreenComplete;     //< All VPs sent to screen?
299
-
300
-  static uint16_t ConfirmVP;      //< context for confirm screen (VP that will be emulated-sent on "OK").
301
-
302
-  #if ENABLED(SDSUPPORT)
303
-    static int16_t top_file;      //< file on top of file chooser
304
-    static int16_t file_to_print; //< touched file to be confirmed
305
-  #endif
306
-
307
-  static void (*confirm_action_cb)();
102
+  static bool loop();
308
 };
103
 };
309
 
104
 
310
-#define MKS_Language_Choose   0x00
311
-#define MKS_Language_NoChoose 0x01
105
+enum MKS_Choose : uint8_t { MKS_Language_Choose, MKS_Language_NoChoose };
106
+enum MKS_Language : uint8_t { MKS_SimpleChinese, MKS_English };
312
 
107
 
313
-#define MKS_SimpleChinese     0
314
-#define MKS_English           1
315
-extern uint8_t mks_language_index;
108
+extern MKS_Language mks_language_index;
316
 extern bool DGUSAutoTurnOff;
109
 extern bool DGUSAutoTurnOff;
317
 
110
 
318
 #if ENABLED(POWER_LOSS_RECOVERY)
111
 #if ENABLED(POWER_LOSS_RECOVERY)
319
   #define PLR_SCREEN_RECOVER MKSLCD_SCREEN_PRINT
112
   #define PLR_SCREEN_RECOVER MKSLCD_SCREEN_PRINT
320
   #define PLR_SCREEN_CANCEL MKSLCD_SCREEN_HOME
113
   #define PLR_SCREEN_CANCEL MKSLCD_SCREEN_HOME
321
 #endif
114
 #endif
115
+
116
+typedef DGUSScreenHandlerMKS DGUSScreenHandlerClass;

+ 2
- 217
Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.h Просмотреть файл

21
  */
21
  */
22
 #pragma once
22
 #pragma once
23
 
23
 
24
-#include "../DGUSDisplay.h"
25
-#include "../DGUSVPVariable.h"
26
-#include "../DGUSDisplayDef.h"
24
+#include "../DGUSScreenHandlerBase.h"
27
 
25
 
28
-#include "../../../../inc/MarlinConfig.h"
29
-
30
-enum DGUSLCD_Screens : uint8_t;
31
-
32
-class DGUSScreenHandler {
33
-public:
34
-  DGUSScreenHandler() = default;
35
-
36
-  static bool loop();
37
-
38
-  // Send all 4 strings that are displayed on the infoscreen, confirmation screen and kill screen
39
-  // The bools specifying whether the strings are in RAM or FLASH.
40
-  static void sendinfoscreen(PGM_P const line1, PGM_P const line2, PGM_P const line3, PGM_P const line4, bool l1inflash, bool l2inflash, bool l3inflash, bool liinflash);
41
-  static void sendinfoscreen(FSTR_P const line1, FSTR_P const line2, PGM_P const line3, PGM_P const line4, bool l1inflash, bool l2inflash, bool l3inflash, bool liinflash) {
42
-    sendinfoscreen(FTOP(line1), FTOP(line2), line3, line4, l1inflash, l2inflash, l3inflash, liinflash);
43
-  }
44
-  static void sendinfoscreen(FSTR_P const line1, FSTR_P const line2, FSTR_P const line3, FSTR_P const line4, bool l1inflash, bool l2inflash, bool l3inflash, bool liinflash) {
45
-    sendinfoscreen(FTOP(line1), FTOP(line2), FTOP(line3), FTOP(line4), l1inflash, l2inflash, l3inflash, liinflash);
46
-  }
47
-
48
-  static void HandleUserConfirmationPopUp(uint16_t ConfirmVP, PGM_P const line1, PGM_P const line2, PGM_P const line3, PGM_P const line4, bool l1inflash, bool l2inflash, bool l3inflash, bool liinflash);
49
-
50
-  // "M117" Message -- msg is a RAM ptr.
51
-  static void setstatusmessage(const char *msg);
52
-  // The same for messages from Flash
53
-  static void setstatusmessagePGM(PGM_P const msg);
54
-  // Callback for VP "Display wants to change screen on idle printer"
55
-  static void ScreenChangeHookIfIdle(DGUS_VP_Variable &var, void *val_ptr);
56
-  // Callback for VP "Screen has been changed"
57
-  static void ScreenChangeHook(DGUS_VP_Variable &var, void *val_ptr);
58
-
59
-  // Callback for VP "All Heaters Off"
60
-  static void HandleAllHeatersOff(DGUS_VP_Variable &var, void *val_ptr);
61
-  // Hook for "Change this temperature"
62
-  static void HandleTemperatureChanged(DGUS_VP_Variable &var, void *val_ptr);
63
-  // Hook for "Change Flowrate"
64
-  static void HandleFlowRateChanged(DGUS_VP_Variable &var, void *val_ptr);
65
-  #if ENABLED(DGUS_UI_MOVE_DIS_OPTION)
66
-    // Hook for manual move option
67
-    static void HandleManualMoveOption(DGUS_VP_Variable &var, void *val_ptr);
68
-  #endif
69
-
70
-  // Hook for manual move.
71
-  static void HandleManualMove(DGUS_VP_Variable &var, void *val_ptr);
72
-  // Hook for manual extrude.
73
-  static void HandleManualExtrude(DGUS_VP_Variable &var, void *val_ptr);
74
-  // Hook for motor lock and unlook
75
-  static void HandleMotorLockUnlock(DGUS_VP_Variable &var, void *val_ptr);
76
-  #if ENABLED(POWER_LOSS_RECOVERY)
77
-    // Hook for power loss recovery.
78
-    static void HandlePowerLossRecovery(DGUS_VP_Variable &var, void *val_ptr);
79
-  #endif
80
-  // Hook for settings
81
-  static void HandleSettings(DGUS_VP_Variable &var, void *val_ptr);
82
-  static void HandleStepPerMMChanged(DGUS_VP_Variable &var, void *val_ptr);
83
-  static void HandleStepPerMMExtruderChanged(DGUS_VP_Variable &var, void *val_ptr);
84
-
85
-  #if HAS_PID_HEATING
86
-    // Hook for "Change this temperature PID para"
87
-    static void HandleTemperaturePIDChanged(DGUS_VP_Variable &var, void *val_ptr);
88
-    // Hook for PID autotune
89
-    static void HandlePIDAutotune(DGUS_VP_Variable &var, void *val_ptr);
90
-  #endif
91
-  #if HAS_BED_PROBE
92
-    // Hook for "Change probe offset z"
93
-    static void HandleProbeOffsetZChanged(DGUS_VP_Variable &var, void *val_ptr);
94
-  #endif
95
-  #if ENABLED(BABYSTEPPING)
96
-    // Hook for live z adjust action
97
-    static void HandleLiveAdjustZ(DGUS_VP_Variable &var, void *val_ptr);
98
-  #endif
99
-  #if HAS_FAN
100
-    // Hook for fan control
101
-    static void HandleFanControl(DGUS_VP_Variable &var, void *val_ptr);
102
-  #endif
103
-  // Hook for heater control
104
-  static void HandleHeaterControl(DGUS_VP_Variable &var, void *val_ptr);
105
-  #if ENABLED(DGUS_PREHEAT_UI)
106
-    // Hook for preheat
107
-    static void HandlePreheat(DGUS_VP_Variable &var, void *val_ptr);
108
-  #endif
109
-  #if ENABLED(DGUS_FILAMENT_LOADUNLOAD)
110
-    // Hook for filament load and unload filament option
111
-    static void HandleFilamentOption(DGUS_VP_Variable &var, void *val_ptr);
112
-    // Hook for filament load and unload
113
-    static void HandleFilamentLoadUnload(DGUS_VP_Variable &var);
114
-  #endif
115
-
116
-  #if ENABLED(SDSUPPORT)
117
-    // Callback for VP "Display wants to change screen when there is a SD card"
118
-    static void ScreenChangeHookIfSD(DGUS_VP_Variable &var, void *val_ptr);
119
-    // Scroll buttons on the file listing screen.
120
-    static void DGUSLCD_SD_ScrollFilelist(DGUS_VP_Variable &var, void *val_ptr);
121
-    // File touched.
122
-    static void DGUSLCD_SD_FileSelected(DGUS_VP_Variable &var, void *val_ptr);
123
-    // start print after confirmation received.
124
-    static void DGUSLCD_SD_StartPrint(DGUS_VP_Variable &var, void *val_ptr);
125
-    // User hit the pause, resume or abort button.
126
-    static void DGUSLCD_SD_ResumePauseAbort(DGUS_VP_Variable &var, void *val_ptr);
127
-    // User confirmed the abort action
128
-    static void DGUSLCD_SD_ReallyAbort(DGUS_VP_Variable &var, void *val_ptr);
129
-    // User hit the tune button
130
-    static void DGUSLCD_SD_PrintTune(DGUS_VP_Variable &var, void *val_ptr);
131
-    // Send a single filename to the display.
132
-    static void DGUSLCD_SD_SendFilename(DGUS_VP_Variable &var);
133
-    // Marlin informed us that a new SD has been inserted.
134
-    static void SDCardInserted();
135
-    // Marlin informed us that the SD Card has been removed().
136
-    static void SDCardRemoved();
137
-    // Marlin informed us about a bad SD Card.
138
-    static void SDCardError();
139
-  #endif
140
-
141
-  // OK Button the Confirm screen.
142
-  static void ScreenConfirmedOK(DGUS_VP_Variable &var, void *val_ptr);
143
-
144
-  // Update data after went to new screen (by display or by GotoScreen)
145
-  // remember: store the last-displayed screen, so it can get returned to.
146
-  // (e.g for pop up messages)
147
-  static void UpdateNewScreen(DGUSLCD_Screens newscreen, bool popup=false);
148
-
149
-  // Recall the remembered screen.
150
-  static void PopToOldScreen();
151
-
152
-  // Make the display show the screen and update all VPs in it.
153
-  static void GotoScreen(DGUSLCD_Screens screen, bool ispopup = false);
154
-
155
-  static void UpdateScreenVPData();
156
-
157
-  // Helpers to convert and transfer data to the display.
158
-  static void DGUSLCD_SendWordValueToDisplay(DGUS_VP_Variable &var);
159
-  static void DGUSLCD_SendStringToDisplay(DGUS_VP_Variable &var);
160
-  static void DGUSLCD_SendStringToDisplayPGM(DGUS_VP_Variable &var);
161
-  static void DGUSLCD_SendTemperaturePID(DGUS_VP_Variable &var);
162
-  static void DGUSLCD_SendPercentageToDisplay(DGUS_VP_Variable &var);
163
-  static void DGUSLCD_SendPrintProgressToDisplay(DGUS_VP_Variable &var);
164
-  static void DGUSLCD_SendPrintTimeToDisplay(DGUS_VP_Variable &var);
165
-
166
-  #if ENABLED(PRINTCOUNTER)
167
-    static void DGUSLCD_SendPrintAccTimeToDisplay(DGUS_VP_Variable &var);
168
-    static void DGUSLCD_SendPrintsTotalToDisplay(DGUS_VP_Variable &var);
169
-  #endif
170
-  #if HAS_FAN
171
-    static void DGUSLCD_SendFanStatusToDisplay(DGUS_VP_Variable &var);
172
-  #endif
173
-  static void DGUSLCD_SendHeaterStatusToDisplay(DGUS_VP_Variable &var);
174
-  #if ENABLED(DGUS_UI_WAITING)
175
-    static void DGUSLCD_SendWaitingStatusToDisplay(DGUS_VP_Variable &var);
176
-  #endif
177
-
178
-  // Send a value from 0..100 to a variable with a range from 0..255
179
-  static void DGUSLCD_PercentageToUint8(DGUS_VP_Variable &var, void *val_ptr);
180
-
181
-  template<typename T>
182
-  static void DGUSLCD_SetValueDirectly(DGUS_VP_Variable &var, void *val_ptr) {
183
-    if (!var.memadr) return;
184
-    union { unsigned char tmp[sizeof(T)]; T t; } x;
185
-    unsigned char *ptr = (unsigned char*)val_ptr;
186
-    LOOP_L_N(i, sizeof(T)) x.tmp[i] = ptr[sizeof(T) - i - 1];
187
-    *(T*)var.memadr = x.t;
188
-  }
189
-
190
-  // Send a float value to the display.
191
-  // Display will get a 4-byte integer scaled to the number of digits:
192
-  // Tell the display the number of digits and it cheats by displaying a dot between...
193
-  template<unsigned int decimals>
194
-  static void DGUSLCD_SendFloatAsLongValueToDisplay(DGUS_VP_Variable &var) {
195
-    if (var.memadr) {
196
-      float f = *(float *)var.memadr;
197
-      f *= cpow(10, decimals);
198
-      dgusdisplay.WriteVariable(var.VP, (long)f);
199
-    }
200
-  }
201
-
202
-  // Send a float value to the display.
203
-  // Display will get a 2-byte integer scaled to the number of digits:
204
-  // Tell the display the number of digits and it cheats by displaying a dot between...
205
-  template<unsigned int decimals>
206
-  static void DGUSLCD_SendFloatAsIntValueToDisplay(DGUS_VP_Variable &var) {
207
-    if (var.memadr) {
208
-      float f = *(float *)var.memadr;
209
-      DEBUG_ECHOLNPAIR_F(" >> ", f, 6);
210
-      f *= cpow(10, decimals);
211
-      dgusdisplay.WriteVariable(var.VP, (int16_t)f);
212
-    }
213
-  }
214
-
215
-  // Force an update of all VP on the current screen.
216
-  static void ForceCompleteUpdate() { update_ptr = 0; ScreenComplete = false; }
217
-  // Has all VPs sent to the screen
218
-  static bool IsScreenComplete() { return ScreenComplete; }
219
-
220
-  static DGUSLCD_Screens getCurrentScreen() { return current_screen; }
221
-
222
-  static void SetupConfirmAction( void (*f)()) { confirm_action_cb = f; }
223
-
224
-private:
225
-  static DGUSLCD_Screens current_screen;  //< currently on screen
226
-  static constexpr uint8_t NUM_PAST_SCREENS = 4;
227
-  static DGUSLCD_Screens past_screens[NUM_PAST_SCREENS]; //< LIFO with past screens for the "back" button.
228
-
229
-  static uint8_t update_ptr;      //< Last sent entry in the VPList for the actual screen.
230
-  static uint16_t skipVP;         //< When updating the screen data, skip this one, because the user is interacting with it.
231
-  static bool ScreenComplete;     //< All VPs sent to screen?
232
-
233
-  static uint16_t ConfirmVP;      //< context for confirm screen (VP that will be emulated-sent on "OK").
234
-
235
-  #if ENABLED(SDSUPPORT)
236
-    static int16_t top_file;      //< file on top of file chooser
237
-    static int16_t file_to_print; //< touched file to be confirmed
238
-  #endif
239
-
240
-  static void (*confirm_action_cb)();
241
-};
26
+typedef DGUSScreenHandler DGUSScreenHandlerClass;
242
 
27
 
243
 #if ENABLED(POWER_LOSS_RECOVERY)
28
 #if ENABLED(POWER_LOSS_RECOVERY)
244
   #define PLR_SCREEN_RECOVER DGUSLCD_SCREEN_SDPRINTMANIPULATION
29
   #define PLR_SCREEN_RECOVER DGUSLCD_SCREEN_SDPRINTMANIPULATION

+ 11
- 11
Marlin/src/module/settings.cpp Просмотреть файл

555
   // MKS UI controller
555
   // MKS UI controller
556
   //
556
   //
557
   #if ENABLED(DGUS_LCD_UI_MKS)
557
   #if ENABLED(DGUS_LCD_UI_MKS)
558
-    uint8_t mks_language_index;                         // Display Language
558
+    MKS_Language mks_language_index;                    // Display Language
559
     xy_int_t mks_corner_offsets[5];                     // Bed Tramming
559
     xy_int_t mks_corner_offsets[5];                     // Bed Tramming
560
     xyz_int_t mks_park_pos;                             // Custom Parking (without NOZZLE_PARK)
560
     xyz_int_t mks_park_pos;                             // Custom Parking (without NOZZLE_PARK)
561
     celsius_t mks_min_extrusion_temp;                   // Min E Temp (shadow M302 value)
561
     celsius_t mks_min_extrusion_temp;                   // Min E Temp (shadow M302 value)
3302
   //
3302
   //
3303
   TERN_(DGUS_LCD_UI_MKS, MKS_reset_settings());
3303
   TERN_(DGUS_LCD_UI_MKS, MKS_reset_settings());
3304
 
3304
 
3305
-  postprocess();
3306
-
3307
-  #if EITHER(EEPROM_CHITCHAT, DEBUG_LEVELING_FEATURE)
3308
-    FSTR_P const hdsl = F("Hardcoded Default Settings Loaded");
3309
-    TERN_(HOST_EEPROM_CHITCHAT, hostui.notify(hdsl));
3310
-    DEBUG_ECHO_START(); DEBUG_ECHOLNF(hdsl);
3311
-  #endif
3312
-
3313
-  TERN_(EXTENSIBLE_UI, ExtUI::onFactoryReset());
3314
-
3315
   //
3305
   //
3316
   // Model predictive control
3306
   // Model predictive control
3317
   //
3307
   //
3342
       #endif
3332
       #endif
3343
     }
3333
     }
3344
   #endif
3334
   #endif
3335
+
3336
+  postprocess();
3337
+
3338
+  #if EITHER(EEPROM_CHITCHAT, DEBUG_LEVELING_FEATURE)
3339
+    FSTR_P const hdsl = F("Hardcoded Default Settings Loaded");
3340
+    TERN_(HOST_EEPROM_CHITCHAT, hostui.notify(hdsl));
3341
+    DEBUG_ECHO_START(); DEBUG_ECHOLNF(hdsl);
3342
+  #endif
3343
+
3344
+  TERN_(EXTENSIBLE_UI, ExtUI::onFactoryReset());
3345
 }
3345
 }
3346
 
3346
 
3347
 #if DISABLED(DISABLE_M503)
3347
 #if DISABLED(DISABLE_M503)

Загрузка…
Отмена
Сохранить