Browse Source

🐛 Fix DGUS Reloaded + STM32 (#24600)

Protomosh 3 years ago
parent
commit
4ae9bf3b9d
No account linked to committer's email address

+ 0
- 1
Marlin/src/lcd/extui/dgus/DGUSDisplay.h View File

39
 
39
 
40
 enum DGUSLCD_Screens : uint8_t;
40
 enum DGUSLCD_Screens : uint8_t;
41
 
41
 
42
-//#define DEBUG_DGUSLCD
43
 #define DEBUG_OUT ENABLED(DEBUG_DGUSLCD)
42
 #define DEBUG_OUT ENABLED(DEBUG_DGUSLCD)
44
 #include "../../../core/debug_out.h"
43
 #include "../../../core/debug_out.h"
45
 
44
 

+ 21
- 26
Marlin/src/lcd/extui/dgus/DGUSScreenHandler.cpp View File

152
 // Send an uint8_t between 0 and 100 to a variable scale to 0..255
152
 // Send an uint8_t between 0 and 100 to a variable scale to 0..255
153
 void DGUSScreenHandler::DGUSLCD_PercentageToUint8(DGUS_VP_Variable &var, void *val_ptr) {
153
 void DGUSScreenHandler::DGUSLCD_PercentageToUint8(DGUS_VP_Variable &var, void *val_ptr) {
154
   if (var.memadr) {
154
   if (var.memadr) {
155
-    uint16_t value = swap16(*(uint16_t*)val_ptr);
156
-    DEBUG_ECHOLNPGM("FAN value get:", value);
155
+    const uint16_t value = BE16_P(val_ptr);
156
+    DEBUG_ECHOLNPGM("Got percent:", value);
157
     *(uint8_t*)var.memadr = map(constrain(value, 0, 100), 0, 100, 0, 255);
157
     *(uint8_t*)var.memadr = map(constrain(value, 0, 100), 0, 100, 0, 255);
158
-    DEBUG_ECHOLNPGM("FAN value change:", *(uint8_t*)var.memadr);
158
+    DEBUG_ECHOLNPGM("Set uint8:", *(uint8_t*)var.memadr);
159
   }
159
   }
160
 }
160
 }
161
 
161
 
264
     static uint16_t period = 0;
264
     static uint16_t period = 0;
265
     static uint16_t index = 0;
265
     static uint16_t index = 0;
266
     //DEBUG_ECHOPGM(" DGUSLCD_SendWaitingStatusToDisplay ", var.VP);
266
     //DEBUG_ECHOPGM(" DGUSLCD_SendWaitingStatusToDisplay ", var.VP);
267
-    //DEBUG_ECHOLNPGM(" data ", swap16(index));
267
+    //DEBUG_ECHOLNPGM(" data ", BE16_P(&index));
268
     if (period++ > DGUS_UI_WAITING_STATUS_PERIOD) {
268
     if (period++ > DGUS_UI_WAITING_STATUS_PERIOD) {
269
       dgusdisplay.WriteVariable(var.VP, index);
269
       dgusdisplay.WriteVariable(var.VP, index);
270
-      //DEBUG_ECHOLNPGM(" data ", swap16(index));
270
+      //DEBUG_ECHOLNPGM(" data ", BE16_P(&index));
271
       if (++index >= DGUS_UI_WAITING_STATUS) index = 0;
271
       if (++index >= DGUS_UI_WAITING_STATUS) index = 0;
272
       period = 0;
272
       period = 0;
273
     }
273
     }
306
 
306
 
307
   void DGUSScreenHandler::DGUSLCD_SD_ScrollFilelist(DGUS_VP_Variable& var, void *val_ptr) {
307
   void DGUSScreenHandler::DGUSLCD_SD_ScrollFilelist(DGUS_VP_Variable& var, void *val_ptr) {
308
     auto old_top = top_file;
308
     auto old_top = top_file;
309
-    const int16_t scroll = (int16_t)swap16(*(uint16_t*)val_ptr);
309
+    const int16_t scroll = (int16_t)BE16_P(val_ptr);
310
     if (scroll) {
310
     if (scroll) {
311
       top_file += scroll;
311
       top_file += scroll;
312
       DEBUG_ECHOPGM("new topfile calculated:", top_file);
312
       DEBUG_ECHOPGM("new topfile calculated:", top_file);
391
 }
391
 }
392
 
392
 
393
 void DGUSScreenHandler::HandleTemperatureChanged(DGUS_VP_Variable &var, void *val_ptr) {
393
 void DGUSScreenHandler::HandleTemperatureChanged(DGUS_VP_Variable &var, void *val_ptr) {
394
-  celsius_t newvalue = swap16(*(uint16_t*)val_ptr);
394
+  celsius_t newvalue = BE16_P(val_ptr);
395
   celsius_t acceptedvalue;
395
   celsius_t acceptedvalue;
396
 
396
 
397
   switch (var.VP) {
397
   switch (var.VP) {
426
 
426
 
427
 void DGUSScreenHandler::HandleFlowRateChanged(DGUS_VP_Variable &var, void *val_ptr) {
427
 void DGUSScreenHandler::HandleFlowRateChanged(DGUS_VP_Variable &var, void *val_ptr) {
428
   #if HAS_EXTRUDERS
428
   #if HAS_EXTRUDERS
429
-    uint16_t newvalue = swap16(*(uint16_t*)val_ptr);
429
+    const uint16_t newvalue = BE16_P(val_ptr);
430
     uint8_t target_extruder;
430
     uint8_t target_extruder;
431
     switch (var.VP) {
431
     switch (var.VP) {
432
       default: return;
432
       default: return;
446
 void DGUSScreenHandler::HandleManualExtrude(DGUS_VP_Variable &var, void *val_ptr) {
446
 void DGUSScreenHandler::HandleManualExtrude(DGUS_VP_Variable &var, void *val_ptr) {
447
   DEBUG_ECHOLNPGM("HandleManualExtrude");
447
   DEBUG_ECHOLNPGM("HandleManualExtrude");
448
 
448
 
449
-  int16_t movevalue = swap16(*(uint16_t*)val_ptr);
449
+  const int16_t movevalue = BE16_P(val_ptr);
450
   float target = movevalue * 0.01f;
450
   float target = movevalue * 0.01f;
451
   ExtUI::extruder_t target_extruder;
451
   ExtUI::extruder_t target_extruder;
452
 
452
 
468
 #if ENABLED(DGUS_UI_MOVE_DIS_OPTION)
468
 #if ENABLED(DGUS_UI_MOVE_DIS_OPTION)
469
   void DGUSScreenHandler::HandleManualMoveOption(DGUS_VP_Variable &var, void *val_ptr) {
469
   void DGUSScreenHandler::HandleManualMoveOption(DGUS_VP_Variable &var, void *val_ptr) {
470
     DEBUG_ECHOLNPGM("HandleManualMoveOption");
470
     DEBUG_ECHOLNPGM("HandleManualMoveOption");
471
-    *(uint16_t*)var.memadr = swap16(*(uint16_t*)val_ptr);
471
+    *(uint16_t*)var.memadr = BE16_P(val_ptr);
472
   }
472
   }
473
 #endif
473
 #endif
474
 
474
 
475
 void DGUSScreenHandler::HandleMotorLockUnlock(DGUS_VP_Variable &var, void *val_ptr) {
475
 void DGUSScreenHandler::HandleMotorLockUnlock(DGUS_VP_Variable &var, void *val_ptr) {
476
   DEBUG_ECHOLNPGM("HandleMotorLockUnlock");
476
   DEBUG_ECHOLNPGM("HandleMotorLockUnlock");
477
-  const int16_t lock = swap16(*(uint16_t*)val_ptr);
477
+  const int16_t lock = BE16_P(val_ptr);
478
   queue.enqueue_one_now(lock ? F("M18") : F("M17"));
478
   queue.enqueue_one_now(lock ? F("M18") : F("M17"));
479
 }
479
 }
480
 
480
 
481
 void DGUSScreenHandler::HandleSettings(DGUS_VP_Variable &var, void *val_ptr) {
481
 void DGUSScreenHandler::HandleSettings(DGUS_VP_Variable &var, void *val_ptr) {
482
   DEBUG_ECHOLNPGM("HandleSettings");
482
   DEBUG_ECHOLNPGM("HandleSettings");
483
-  uint16_t value = swap16(*(uint16_t*)val_ptr);
483
+  const uint16_t value = BE16_P(val_ptr);
484
   switch (value) {
484
   switch (value) {
485
     default: break;
485
     default: break;
486
     case 1:
486
     case 1:
494
 }
494
 }
495
 
495
 
496
 void DGUSScreenHandler::HandleStepPerMMChanged(DGUS_VP_Variable &var, void *val_ptr) {
496
 void DGUSScreenHandler::HandleStepPerMMChanged(DGUS_VP_Variable &var, void *val_ptr) {
497
-  DEBUG_ECHOLNPGM("HandleStepPerMMChanged");
498
-
499
-  uint16_t value_raw = swap16(*(uint16_t*)val_ptr);
500
-  DEBUG_ECHOLNPGM("value_raw:", value_raw);
501
-  float value = (float)value_raw / 10;
497
+  const uint16_t value_raw = BE16_P(val_ptr);
498
+  DEBUG_ECHOLNPGM("HandleStepPerMMChanged:", value_raw);
499
+  const float value = (float)value_raw / 10;
502
   ExtUI::axis_t axis;
500
   ExtUI::axis_t axis;
503
   switch (var.VP) {
501
   switch (var.VP) {
504
     case VP_X_STEP_PER_MM: axis = ExtUI::axis_t::X; break;
502
     case VP_X_STEP_PER_MM: axis = ExtUI::axis_t::X; break;
510
   ExtUI::setAxisSteps_per_mm(value, axis);
508
   ExtUI::setAxisSteps_per_mm(value, axis);
511
   DEBUG_ECHOLNPGM("value_set:", ExtUI::getAxisSteps_per_mm(axis));
509
   DEBUG_ECHOLNPGM("value_set:", ExtUI::getAxisSteps_per_mm(axis));
512
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
510
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
513
-  return;
514
 }
511
 }
515
 
512
 
516
 void DGUSScreenHandler::HandleStepPerMMExtruderChanged(DGUS_VP_Variable &var, void *val_ptr) {
513
 void DGUSScreenHandler::HandleStepPerMMExtruderChanged(DGUS_VP_Variable &var, void *val_ptr) {
517
-  DEBUG_ECHOLNPGM("HandleStepPerMMExtruderChanged");
518
-
519
-  uint16_t value_raw = swap16(*(uint16_t*)val_ptr);
520
-  DEBUG_ECHOLNPGM("value_raw:", value_raw);
521
-  float value = (float)value_raw / 10;
514
+  const uint16_t value_raw = BE16_P(val_ptr);
515
+  DEBUG_ECHOLNPGM("HandleStepPerMMExtruderChanged:", value_raw);
516
+  const float value = (float)value_raw / 10;
522
   ExtUI::extruder_t extruder;
517
   ExtUI::extruder_t extruder;
523
   switch (var.VP) {
518
   switch (var.VP) {
524
     default: return;
519
     default: return;
575
   void DGUSScreenHandler::HandleProbeOffsetZChanged(DGUS_VP_Variable &var, void *val_ptr) {
570
   void DGUSScreenHandler::HandleProbeOffsetZChanged(DGUS_VP_Variable &var, void *val_ptr) {
576
     DEBUG_ECHOLNPGM("HandleProbeOffsetZChanged");
571
     DEBUG_ECHOLNPGM("HandleProbeOffsetZChanged");
577
 
572
 
578
-    const float offset = float(int16_t(swap16(*(uint16_t*)val_ptr))) / 100.0f;
573
+    const float offset = float(int16_t(BE16_P(val_ptr))) / 100.0f;
579
     ExtUI::setZOffset_mm(offset);
574
     ExtUI::setZOffset_mm(offset);
580
     skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
575
     skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
581
     return;
576
     return;
621
   void DGUSScreenHandler::HandlePreheat(DGUS_VP_Variable &var, void *val_ptr) {
616
   void DGUSScreenHandler::HandlePreheat(DGUS_VP_Variable &var, void *val_ptr) {
622
     DEBUG_ECHOLNPGM("HandlePreheat");
617
     DEBUG_ECHOLNPGM("HandlePreheat");
623
 
618
 
624
-    const uint16_t preheat_option = swap16(*(uint16_t*)val_ptr);
619
+    const uint16_t preheat_option = BE16_P(val_ptr);
625
     switch (preheat_option) {
620
     switch (preheat_option) {
626
       default:
621
       default:
627
       switch (var.VP) {
622
       switch (var.VP) {
644
 #if ENABLED(POWER_LOSS_RECOVERY)
639
 #if ENABLED(POWER_LOSS_RECOVERY)
645
 
640
 
646
   void DGUSScreenHandler::HandlePowerLossRecovery(DGUS_VP_Variable &var, void *val_ptr) {
641
   void DGUSScreenHandler::HandlePowerLossRecovery(DGUS_VP_Variable &var, void *val_ptr) {
647
-    uint16_t value = swap16(*(uint16_t*)val_ptr);
642
+    uint16_t value = BE16_P(val_ptr);
648
     if (value) {
643
     if (value) {
649
       queue.inject(F("M1000"));
644
       queue.inject(F("M1000"));
650
       dgusdisplay.WriteVariable(VP_SD_Print_Filename, filelist.filename(), 32, true);
645
       dgusdisplay.WriteVariable(VP_SD_Print_Filename, filelist.filename(), 32, true);

+ 4
- 0
Marlin/src/lcd/extui/dgus/DGUSScreenHandler.h View File

42
 
42
 
43
 #endif
43
 #endif
44
 
44
 
45
+// endianness swap
46
+#define BE16_P(V) ( ((uint8_t*)(V))[0] << 8U | ((uint8_t*)(V))[1] )
47
+#define BE32_P(V) ( ((uint8_t*)(V))[0] << 24U | ((uint8_t*)(V))[1] << 16U | ((uint8_t*)(V))[2] << 8U | ((uint8_t*)(V))[3] )
48
+
45
 #if ENABLED(DGUS_LCD_UI_ORIGIN)
49
 #if ENABLED(DGUS_LCD_UI_ORIGIN)
46
   #include "origin/DGUSScreenHandler.h"
50
   #include "origin/DGUSScreenHandler.h"
47
 #elif ENABLED(DGUS_LCD_UI_MKS)
51
 #elif ENABLED(DGUS_LCD_UI_MKS)

+ 55
- 66
Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp View File

54
 bool DGUSAutoTurnOff = false;
54
 bool DGUSAutoTurnOff = false;
55
 MKS_Language mks_language_index; // Initialized by settings.load()
55
 MKS_Language mks_language_index; // Initialized by settings.load()
56
 
56
 
57
-// endianness swap
58
-uint32_t swap32(const uint32_t value) { return (value & 0x000000FFU) << 24U | (value & 0x0000FF00U) << 8U | (value & 0x00FF0000U) >> 8U | (value & 0xFF000000U) >> 24U; }
59
-
60
 #if 0
57
 #if 0
61
 void DGUSScreenHandlerMKS::sendinfoscreen_ch(const uint16_t *line1, const uint16_t *line2, const uint16_t *line3, const uint16_t *line4) {
58
 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);
59
   dgusdisplay.WriteVariable(VP_MSGSTR1, line1, 32, true);
108
 
105
 
109
 void DGUSScreenHandlerMKS::DGUSLCD_SetUint8(DGUS_VP_Variable &var, void *val_ptr) {
106
 void DGUSScreenHandlerMKS::DGUSLCD_SetUint8(DGUS_VP_Variable &var, void *val_ptr) {
110
   if (var.memadr) {
107
   if (var.memadr) {
111
-    const uint16_t value = swap16(*(uint16_t*)val_ptr);
112
-    DEBUG_ECHOLNPGM("FAN value get:", value);
108
+    const uint16_t value = BE16_P(val_ptr);
109
+    DEBUG_ECHOLNPGM("Got uint8:", value);
113
     *(uint8_t*)var.memadr = map(constrain(value, 0, 255), 0, 255, 0, 255);
110
     *(uint8_t*)var.memadr = map(constrain(value, 0, 255), 0, 255, 0, 255);
114
-    DEBUG_ECHOLNPGM("FAN value change:", *(uint8_t*)var.memadr);
111
+    DEBUG_ECHOLNPGM("Set uint8:", *(uint8_t*)var.memadr);
115
   }
112
   }
116
 }
113
 }
117
 
114
 
152
 #if ENABLED(SDSUPPORT)
149
 #if ENABLED(SDSUPPORT)
153
 
150
 
154
   void DGUSScreenHandler::DGUSLCD_SD_FileSelected(DGUS_VP_Variable &var, void *val_ptr) {
151
   void DGUSScreenHandler::DGUSLCD_SD_FileSelected(DGUS_VP_Variable &var, void *val_ptr) {
155
-    uint16_t touched_nr = (int16_t)swap16(*(uint16_t*)val_ptr) + top_file;
152
+    uint16_t touched_nr = (int16_t)BE16_P(val_ptr) + top_file;
156
     if (touched_nr != 0x0F && touched_nr > filelist.count()) return;
153
     if (touched_nr != 0x0F && touched_nr > filelist.count()) return;
157
     if (!filelist.seek(touched_nr) && touched_nr != 0x0F) return;
154
     if (!filelist.seek(touched_nr) && touched_nr != 0x0F) return;
158
 
155
 
191
   void DGUSScreenHandler::DGUSLCD_SD_ResumePauseAbort(DGUS_VP_Variable &var, void *val_ptr) {
188
   void DGUSScreenHandler::DGUSLCD_SD_ResumePauseAbort(DGUS_VP_Variable &var, void *val_ptr) {
192
 
189
 
193
     if (!ExtUI::isPrintingFromMedia()) return; // avoid race condition when user stays in this menu and printer finishes.
190
     if (!ExtUI::isPrintingFromMedia()) return; // avoid race condition when user stays in this menu and printer finishes.
194
-    switch (swap16(*(uint16_t*)val_ptr)) {
191
+    switch (BE16_P(val_ptr)) {
195
       case 0: { // Resume
192
       case 0: { // Resume
196
         auto cs = getCurrentScreen();
193
         auto cs = getCurrentScreen();
197
         if (runout_mks.runout_status != RUNOUT_WAITING_STATUS && runout_mks.runout_status != UNRUNOUT_STATUS) {
194
         if (runout_mks.runout_status != RUNOUT_WAITING_STATUS && runout_mks.runout_status != UNRUNOUT_STATUS) {
268
 
265
 
269
 #else
266
 #else
270
   void DGUSScreenHandlerMKS::PrintReturn(DGUS_VP_Variable& var, void *val_ptr) {
267
   void DGUSScreenHandlerMKS::PrintReturn(DGUS_VP_Variable& var, void *val_ptr) {
271
-    uint16_t value = swap16(*(uint16_t*)val_ptr);
268
+    const uint16_t value = BE16_P(val_ptr);
272
     if (value == 0x0F) GotoScreen(DGUSLCD_SCREEN_MAIN);
269
     if (value == 0x0F) GotoScreen(DGUSLCD_SCREEN_MAIN);
273
   }
270
   }
274
 #endif // SDSUPPORT
271
 #endif // SDSUPPORT
315
 }
312
 }
316
 
313
 
317
 void DGUSScreenHandlerMKS::ScreenBackChange(DGUS_VP_Variable &var, void *val_ptr) {
314
 void DGUSScreenHandlerMKS::ScreenBackChange(DGUS_VP_Variable &var, void *val_ptr) {
318
-  const uint16_t target = swap16(*(uint16_t *)val_ptr);
315
+  const uint16_t target = BE16_P(val_ptr);
319
   DEBUG_ECHOLNPGM(" back = 0x%x", target);
316
   DEBUG_ECHOLNPGM(" back = 0x%x", target);
320
   switch (target) {
317
   switch (target) {
321
   }
318
   }
331
 
328
 
332
 void DGUSScreenHandlerMKS::GetTurnOffCtrl(DGUS_VP_Variable &var, void *val_ptr) {
329
 void DGUSScreenHandlerMKS::GetTurnOffCtrl(DGUS_VP_Variable &var, void *val_ptr) {
333
   DEBUG_ECHOLNPGM("GetTurnOffCtrl\n");
330
   DEBUG_ECHOLNPGM("GetTurnOffCtrl\n");
334
-  const uint16_t value = swap16(*(uint16_t *)val_ptr);
331
+  const uint16_t value = BE16_P(val_ptr);
335
   switch (value) {
332
   switch (value) {
336
     case 0 ... 1: DGUSAutoTurnOff = (bool)value; break;
333
     case 0 ... 1: DGUSAutoTurnOff = (bool)value; break;
337
     default: break;
334
     default: break;
340
 
337
 
341
 void DGUSScreenHandlerMKS::GetMinExtrudeTemp(DGUS_VP_Variable &var, void *val_ptr) {
338
 void DGUSScreenHandlerMKS::GetMinExtrudeTemp(DGUS_VP_Variable &var, void *val_ptr) {
342
   DEBUG_ECHOLNPGM("GetMinExtrudeTemp");
339
   DEBUG_ECHOLNPGM("GetMinExtrudeTemp");
343
-  const uint16_t value = swap16(*(uint16_t *)val_ptr);
340
+  const uint16_t value = BE16_P(val_ptr);
344
   TERN_(PREVENT_COLD_EXTRUSION, thermalManager.extrude_min_temp = value);
341
   TERN_(PREVENT_COLD_EXTRUSION, thermalManager.extrude_min_temp = value);
345
   mks_min_extrusion_temp = value;
342
   mks_min_extrusion_temp = value;
346
   settings.save();
343
   settings.save();
348
 
345
 
349
 void DGUSScreenHandlerMKS::GetZoffsetDistance(DGUS_VP_Variable &var, void *val_ptr) {
346
 void DGUSScreenHandlerMKS::GetZoffsetDistance(DGUS_VP_Variable &var, void *val_ptr) {
350
   DEBUG_ECHOLNPGM("GetZoffsetDistance");
347
   DEBUG_ECHOLNPGM("GetZoffsetDistance");
351
-  const uint16_t value = swap16(*(uint16_t *)val_ptr);
348
+  const uint16_t value = BE16_P(val_ptr);
352
   float val_distance = 0;
349
   float val_distance = 0;
353
   switch (value) {
350
   switch (value) {
354
     case 0: val_distance = 0.01; break;
351
     case 0: val_distance = 0.01; break;
362
 
359
 
363
 void DGUSScreenHandlerMKS::GetManualMovestep(DGUS_VP_Variable &var, void *val_ptr) {
360
 void DGUSScreenHandlerMKS::GetManualMovestep(DGUS_VP_Variable &var, void *val_ptr) {
364
   DEBUG_ECHOLNPGM("\nGetManualMovestep");
361
   DEBUG_ECHOLNPGM("\nGetManualMovestep");
365
-  *(uint16_t *)var.memadr = swap16(*(uint16_t *)val_ptr);
362
+  *(uint16_t *)var.memadr = BE16_P(val_ptr);
366
 }
363
 }
367
 
364
 
368
 void DGUSScreenHandlerMKS::EEPROM_CTRL(DGUS_VP_Variable &var, void *val_ptr) {
365
 void DGUSScreenHandlerMKS::EEPROM_CTRL(DGUS_VP_Variable &var, void *val_ptr) {
369
-  const uint16_t eep_flag = swap16(*(uint16_t *)val_ptr);
366
+  const uint16_t eep_flag = BE16_P(val_ptr);
370
   switch (eep_flag) {
367
   switch (eep_flag) {
371
     case 0:
368
     case 0:
372
       settings.save();
369
       settings.save();
384
 }
381
 }
385
 
382
 
386
 void DGUSScreenHandlerMKS::Z_offset_select(DGUS_VP_Variable &var, void *val_ptr) {
383
 void DGUSScreenHandlerMKS::Z_offset_select(DGUS_VP_Variable &var, void *val_ptr) {
387
-  const uint16_t z_value = swap16(*(uint16_t *)val_ptr);
384
+  const uint16_t z_value = BE16_P(val_ptr);
388
   switch (z_value) {
385
   switch (z_value) {
389
     case 0: Z_distance = 0.01; break;
386
     case 0: Z_distance = 0.01; break;
390
     case 1: Z_distance = 0.1; break;
387
     case 1: Z_distance = 0.1; break;
396
 void DGUSScreenHandlerMKS::GetOffsetValue(DGUS_VP_Variable &var, void *val_ptr) {
393
 void DGUSScreenHandlerMKS::GetOffsetValue(DGUS_VP_Variable &var, void *val_ptr) {
397
 
394
 
398
   #if HAS_BED_PROBE
395
   #if HAS_BED_PROBE
399
-    int32_t value = swap32(*(int32_t *)val_ptr);
400
-    float Offset = value / 100.0f;
396
+    const int32_t value = BE32_P(val_ptr);
397
+    const float Offset = value / 100.0f;
401
     DEBUG_ECHOLNPGM("\nget int6 offset >> ", value, 6);
398
     DEBUG_ECHOLNPGM("\nget int6 offset >> ", value, 6);
402
-  #endif
403
 
399
 
404
-  switch (var.VP) {
405
-    case VP_OFFSET_X: TERN_(HAS_BED_PROBE, probe.offset.x = Offset); break;
406
-    case VP_OFFSET_Y: TERN_(HAS_BED_PROBE, probe.offset.y = Offset); break;
407
-    case VP_OFFSET_Z: TERN_(HAS_BED_PROBE, probe.offset.z = Offset); break;
408
-    default: break;
409
-  }
410
-  settings.save();
400
+    switch (var.VP) {
401
+      default: break;
402
+        case VP_OFFSET_X: probe.offset.x = Offset; break;
403
+        case VP_OFFSET_Y: probe.offset.y = Offset; break;
404
+        case VP_OFFSET_Z: probe.offset.z = Offset; break;
405
+    }
406
+    settings.save();
407
+  #endif
411
 }
408
 }
412
 
409
 
413
 void DGUSScreenHandlerMKS::LanguageChange(DGUS_VP_Variable &var, void *val_ptr) {
410
 void DGUSScreenHandlerMKS::LanguageChange(DGUS_VP_Variable &var, void *val_ptr) {
414
-  const uint16_t lag_flag = swap16(*(uint16_t *)val_ptr);
411
+  const uint16_t lag_flag = BE16_P(val_ptr);
415
   switch (lag_flag) {
412
   switch (lag_flag) {
416
     case MKS_SimpleChinese:
413
     case MKS_SimpleChinese:
417
       DGUS_LanguageDisplay(MKS_SimpleChinese);
414
       DGUS_LanguageDisplay(MKS_SimpleChinese);
436
 #endif
433
 #endif
437
 
434
 
438
 void DGUSScreenHandlerMKS::Level_Ctrl(DGUS_VP_Variable &var, void *val_ptr) {
435
 void DGUSScreenHandlerMKS::Level_Ctrl(DGUS_VP_Variable &var, void *val_ptr) {
439
-  const uint16_t lev_but = swap16(*(uint16_t *)val_ptr);
440
   #if ENABLED(MESH_BED_LEVELING)
436
   #if ENABLED(MESH_BED_LEVELING)
441
     auto cs = getCurrentScreen();
437
     auto cs = getCurrentScreen();
442
   #endif
438
   #endif
439
+  const uint16_t lev_but = BE16_P(val_ptr);
443
   switch (lev_but) {
440
   switch (lev_but) {
444
     case 0:
441
     case 0:
445
       #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
442
       #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
483
 }
480
 }
484
 
481
 
485
 void DGUSScreenHandlerMKS::MeshLevelDistanceConfig(DGUS_VP_Variable &var, void *val_ptr) {
482
 void DGUSScreenHandlerMKS::MeshLevelDistanceConfig(DGUS_VP_Variable &var, void *val_ptr) {
486
-  const uint16_t mesh_dist = swap16(*(uint16_t *)val_ptr);
483
+  const uint16_t mesh_dist = BE16_P(val_ptr);
487
   switch (mesh_dist) {
484
   switch (mesh_dist) {
488
     case 0: mesh_adj_distance = 0.01; break;
485
     case 0: mesh_adj_distance = 0.01; break;
489
     case 1: mesh_adj_distance = 0.1; break;
486
     case 1: mesh_adj_distance = 0.1; break;
494
 
491
 
495
 void DGUSScreenHandlerMKS::MeshLevel(DGUS_VP_Variable &var, void *val_ptr) {
492
 void DGUSScreenHandlerMKS::MeshLevel(DGUS_VP_Variable &var, void *val_ptr) {
496
   #if ENABLED(MESH_BED_LEVELING)
493
   #if ENABLED(MESH_BED_LEVELING)
497
-    const uint16_t mesh_value = swap16(*(uint16_t *)val_ptr);
494
+    const uint16_t mesh_value = BE16_P(val_ptr);
498
     // static uint8_t a_first_level = 1;
495
     // static uint8_t a_first_level = 1;
499
     char cmd_buf[30];
496
     char cmd_buf[30];
500
     float offset = mesh_adj_distance;
497
     float offset = mesh_adj_distance;
592
 }
589
 }
593
 
590
 
594
 void DGUSScreenHandlerMKS::LCD_BLK_Adjust(DGUS_VP_Variable &var, void *val_ptr) {
591
 void DGUSScreenHandlerMKS::LCD_BLK_Adjust(DGUS_VP_Variable &var, void *val_ptr) {
595
-  const uint16_t lcd_value = swap16(*(uint16_t *)val_ptr);
596
 
592
 
593
+  const uint16_t lcd_value = BE16_P(val_ptr);
597
   lcd_default_light = constrain(lcd_value, 10, 100);
594
   lcd_default_light = constrain(lcd_value, 10, 100);
598
 
595
 
599
   const uint16_t lcd_data[2] = { lcd_default_light, lcd_default_light };
596
   const uint16_t lcd_data[2] = { lcd_default_light, lcd_default_light };
601
 }
598
 }
602
 
599
 
603
 void DGUSScreenHandlerMKS::ManualAssistLeveling(DGUS_VP_Variable &var, void *val_ptr) {
600
 void DGUSScreenHandlerMKS::ManualAssistLeveling(DGUS_VP_Variable &var, void *val_ptr) {
604
-  const int16_t point_value = swap16(*(uint16_t *)val_ptr);
601
+  const int16_t point_value = BE16_P(val_ptr);
605
 
602
 
606
   // Insist on leveling first time at this screen
603
   // Insist on leveling first time at this screen
607
   static bool first_level_flag = false;
604
   static bool first_level_flag = false;
655
 #define mks_max(a, b) ((a) > (b)) ? (a) : (b)
652
 #define mks_max(a, b) ((a) > (b)) ? (a) : (b)
656
 void DGUSScreenHandlerMKS::TMC_ChangeConfig(DGUS_VP_Variable &var, void *val_ptr) {
653
 void DGUSScreenHandlerMKS::TMC_ChangeConfig(DGUS_VP_Variable &var, void *val_ptr) {
657
   #if EITHER(HAS_TRINAMIC_CONFIG, HAS_STEALTHCHOP)
654
   #if EITHER(HAS_TRINAMIC_CONFIG, HAS_STEALTHCHOP)
658
-    const uint16_t tmc_value = swap16(*(uint16_t*)val_ptr);
655
+    const uint16_t tmc_value = BE16_P(val_ptr);
659
   #endif
656
   #endif
660
 
657
 
661
   switch (var.VP) {
658
   switch (var.VP) {
748
 void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) {
745
 void DGUSScreenHandler::HandleManualMove(DGUS_VP_Variable &var, void *val_ptr) {
749
   DEBUG_ECHOLNPGM("HandleManualMove");
746
   DEBUG_ECHOLNPGM("HandleManualMove");
750
 
747
 
751
-  int16_t movevalue = swap16(*(uint16_t*)val_ptr);
748
+  int16_t movevalue = BE16_P(val_ptr);
752
 
749
 
753
   // Choose Move distance
750
   // Choose Move distance
754
        if (manualMoveStep == 0x01) manualMoveStep =   10;
751
        if (manualMoveStep == 0x01) manualMoveStep =   10;
893
 }
890
 }
894
 
891
 
895
 void DGUSScreenHandlerMKS::GetParkPos(DGUS_VP_Variable &var, void *val_ptr) {
892
 void DGUSScreenHandlerMKS::GetParkPos(DGUS_VP_Variable &var, void *val_ptr) {
896
-  const int16_t value_pos = swap16(*(int16_t*)val_ptr);
893
+  const int16_t value_pos = BE16_P(val_ptr);
897
 
894
 
898
   switch (var.VP) {
895
   switch (var.VP) {
899
     case VP_X_PARK_POS: mks_park_pos.x = value_pos; break;
896
     case VP_X_PARK_POS: mks_park_pos.x = value_pos; break;
907
 void DGUSScreenHandlerMKS::HandleChangeLevelPoint(DGUS_VP_Variable &var, void *val_ptr) {
904
 void DGUSScreenHandlerMKS::HandleChangeLevelPoint(DGUS_VP_Variable &var, void *val_ptr) {
908
   DEBUG_ECHOLNPGM("HandleChangeLevelPoint");
905
   DEBUG_ECHOLNPGM("HandleChangeLevelPoint");
909
 
906
 
910
-  const int16_t value_raw = swap16(*(int16_t*)val_ptr);
907
+  const int16_t value_raw = BE16_P(val_ptr);
911
   DEBUG_ECHOLNPGM("value_raw:", value_raw);
908
   DEBUG_ECHOLNPGM("value_raw:", value_raw);
912
 
909
 
913
   *(int16_t*)var.memadr = value_raw;
910
   *(int16_t*)var.memadr = value_raw;
919
 void DGUSScreenHandlerMKS::HandleStepPerMMChanged(DGUS_VP_Variable &var, void *val_ptr) {
916
 void DGUSScreenHandlerMKS::HandleStepPerMMChanged(DGUS_VP_Variable &var, void *val_ptr) {
920
   DEBUG_ECHOLNPGM("HandleStepPerMMChanged");
917
   DEBUG_ECHOLNPGM("HandleStepPerMMChanged");
921
 
918
 
922
-  const uint16_t value_raw = swap16(*(uint16_t*)val_ptr);
919
+  const uint16_t value_raw = BE16_P(val_ptr);
923
   const float value = (float)value_raw;
920
   const float value = (float)value_raw;
924
 
921
 
925
   DEBUG_ECHOLNPGM("value_raw:", value_raw);
922
   DEBUG_ECHOLNPGM("value_raw:", value_raw);
941
 void DGUSScreenHandlerMKS::HandleStepPerMMExtruderChanged(DGUS_VP_Variable &var, void *val_ptr) {
938
 void DGUSScreenHandlerMKS::HandleStepPerMMExtruderChanged(DGUS_VP_Variable &var, void *val_ptr) {
942
   DEBUG_ECHOLNPGM("HandleStepPerMMExtruderChanged");
939
   DEBUG_ECHOLNPGM("HandleStepPerMMExtruderChanged");
943
 
940
 
944
-  const uint16_t value_raw = swap16(*(uint16_t*)val_ptr);
941
+  const uint16_t value_raw = BE16_P(val_ptr);
945
   const float value = (float)value_raw;
942
   const float value = (float)value_raw;
946
 
943
 
947
   DEBUG_ECHOLNPGM("value_raw:", value_raw);
944
   DEBUG_ECHOLNPGM("value_raw:", value_raw);
966
 void DGUSScreenHandlerMKS::HandleMaxSpeedChange(DGUS_VP_Variable &var, void *val_ptr) {
963
 void DGUSScreenHandlerMKS::HandleMaxSpeedChange(DGUS_VP_Variable &var, void *val_ptr) {
967
   DEBUG_ECHOLNPGM("HandleMaxSpeedChange");
964
   DEBUG_ECHOLNPGM("HandleMaxSpeedChange");
968
 
965
 
969
-  const uint16_t value_raw = swap16(*(uint16_t*)val_ptr);
966
+  const uint16_t value_raw = BE16_P(val_ptr);
970
   const float value = (float)value_raw;
967
   const float value = (float)value_raw;
971
 
968
 
972
   DEBUG_ECHOLNPGM("value_raw:", value_raw);
969
   DEBUG_ECHOLNPGM("value_raw:", value_raw);
988
 void DGUSScreenHandlerMKS::HandleExtruderMaxSpeedChange(DGUS_VP_Variable &var, void *val_ptr) {
985
 void DGUSScreenHandlerMKS::HandleExtruderMaxSpeedChange(DGUS_VP_Variable &var, void *val_ptr) {
989
   DEBUG_ECHOLNPGM("HandleExtruderMaxSpeedChange");
986
   DEBUG_ECHOLNPGM("HandleExtruderMaxSpeedChange");
990
 
987
 
991
-  const uint16_t value_raw = swap16(*(uint16_t*)val_ptr);
988
+  const uint16_t value_raw = BE16_P(val_ptr);
992
   const float value = (float)value_raw;
989
   const float value = (float)value_raw;
993
 
990
 
994
   DEBUG_ECHOLNPGM("value_raw:", value_raw);
991
   DEBUG_ECHOLNPGM("value_raw:", value_raw);
1013
 void DGUSScreenHandlerMKS::HandleMaxAccChange(DGUS_VP_Variable &var, void *val_ptr) {
1010
 void DGUSScreenHandlerMKS::HandleMaxAccChange(DGUS_VP_Variable &var, void *val_ptr) {
1014
   DEBUG_ECHOLNPGM("HandleMaxAccChange");
1011
   DEBUG_ECHOLNPGM("HandleMaxAccChange");
1015
 
1012
 
1016
-  const uint16_t value_raw = swap16(*(uint16_t*)val_ptr);
1013
+  const uint16_t value_raw = BE16_P(val_ptr);
1017
   const float value = (float)value_raw;
1014
   const float value = (float)value_raw;
1018
 
1015
 
1019
   DEBUG_ECHOLNPGM("value_raw:", value_raw);
1016
   DEBUG_ECHOLNPGM("value_raw:", value_raw);
1035
 void DGUSScreenHandlerMKS::HandleExtruderAccChange(DGUS_VP_Variable &var, void *val_ptr) {
1032
 void DGUSScreenHandlerMKS::HandleExtruderAccChange(DGUS_VP_Variable &var, void *val_ptr) {
1036
   DEBUG_ECHOLNPGM("HandleExtruderAccChange");
1033
   DEBUG_ECHOLNPGM("HandleExtruderAccChange");
1037
 
1034
 
1038
-  uint16_t value_raw = swap16(*(uint16_t*)val_ptr);
1035
+  uint16_t value_raw = BE16_P(val_ptr);
1039
   DEBUG_ECHOLNPGM("value_raw:", value_raw);
1036
   DEBUG_ECHOLNPGM("value_raw:", value_raw);
1040
   float value = (float)value_raw;
1037
   float value = (float)value_raw;
1041
   ExtUI::extruder_t extruder;
1038
   ExtUI::extruder_t extruder;
1056
 }
1053
 }
1057
 
1054
 
1058
 void DGUSScreenHandlerMKS::HandleTravelAccChange(DGUS_VP_Variable &var, void *val_ptr) {
1055
 void DGUSScreenHandlerMKS::HandleTravelAccChange(DGUS_VP_Variable &var, void *val_ptr) {
1059
-  uint16_t value_travel = swap16(*(uint16_t*)val_ptr);
1056
+  uint16_t value_travel = BE16_P(val_ptr);
1060
   planner.settings.travel_acceleration = (float)value_travel;
1057
   planner.settings.travel_acceleration = (float)value_travel;
1061
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1058
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1062
 }
1059
 }
1063
 
1060
 
1064
 void DGUSScreenHandlerMKS::HandleFeedRateMinChange(DGUS_VP_Variable &var, void *val_ptr) {
1061
 void DGUSScreenHandlerMKS::HandleFeedRateMinChange(DGUS_VP_Variable &var, void *val_ptr) {
1065
-  uint16_t value_t = swap16(*(uint16_t*)val_ptr);
1062
+  uint16_t value_t = BE16_P(val_ptr);
1066
   planner.settings.min_feedrate_mm_s = (float)value_t;
1063
   planner.settings.min_feedrate_mm_s = (float)value_t;
1067
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1064
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1068
 }
1065
 }
1069
 
1066
 
1070
 void DGUSScreenHandlerMKS::HandleMin_T_F(DGUS_VP_Variable &var, void *val_ptr) {
1067
 void DGUSScreenHandlerMKS::HandleMin_T_F(DGUS_VP_Variable &var, void *val_ptr) {
1071
-  uint16_t value_t_f = swap16(*(uint16_t*)val_ptr);
1068
+  uint16_t value_t_f = BE16_P(val_ptr);
1072
   planner.settings.min_travel_feedrate_mm_s = (float)value_t_f;
1069
   planner.settings.min_travel_feedrate_mm_s = (float)value_t_f;
1073
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1070
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1074
 }
1071
 }
1075
 
1072
 
1076
 void DGUSScreenHandlerMKS::HandleAccChange(DGUS_VP_Variable &var, void *val_ptr) {
1073
 void DGUSScreenHandlerMKS::HandleAccChange(DGUS_VP_Variable &var, void *val_ptr) {
1077
-  uint16_t value_acc = swap16(*(uint16_t*)val_ptr);
1074
+  uint16_t value_acc = BE16_P(val_ptr);
1078
   planner.settings.acceleration = (float)value_acc;
1075
   planner.settings.acceleration = (float)value_acc;
1079
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1076
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1080
 }
1077
 }
1081
 
1078
 
1082
 #if ENABLED(PREVENT_COLD_EXTRUSION)
1079
 #if ENABLED(PREVENT_COLD_EXTRUSION)
1083
   void DGUSScreenHandlerMKS::HandleGetExMinTemp(DGUS_VP_Variable &var, void *val_ptr) {
1080
   void DGUSScreenHandlerMKS::HandleGetExMinTemp(DGUS_VP_Variable &var, void *val_ptr) {
1084
-    const uint16_t value_ex_min_temp = swap16(*(uint16_t*)val_ptr);
1081
+    const uint16_t value_ex_min_temp = BE16_P(val_ptr);
1085
     thermalManager.extrude_min_temp = value_ex_min_temp;
1082
     thermalManager.extrude_min_temp = value_ex_min_temp;
1086
     skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1083
     skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1087
   }
1084
   }
1089
 
1086
 
1090
 #if HAS_PID_HEATING
1087
 #if HAS_PID_HEATING
1091
   void DGUSScreenHandler::HandleTemperaturePIDChanged(DGUS_VP_Variable &var, void *val_ptr) {
1088
   void DGUSScreenHandler::HandleTemperaturePIDChanged(DGUS_VP_Variable &var, void *val_ptr) {
1092
-    const uint16_t rawvalue = swap16(*(uint16_t*)val_ptr);
1089
+    const uint16_t rawvalue = BE16_P(val_ptr);
1093
     DEBUG_ECHOLNPGM("V1:", rawvalue);
1090
     DEBUG_ECHOLNPGM("V1:", rawvalue);
1094
     const float value = 1.0f * rawvalue;
1091
     const float value = 1.0f * rawvalue;
1095
     DEBUG_ECHOLNPGM("V2:", value);
1092
     DEBUG_ECHOLNPGM("V2:", value);
1125
 #if ENABLED(BABYSTEPPING)
1122
 #if ENABLED(BABYSTEPPING)
1126
   void DGUSScreenHandler::HandleLiveAdjustZ(DGUS_VP_Variable &var, void *val_ptr) {
1123
   void DGUSScreenHandler::HandleLiveAdjustZ(DGUS_VP_Variable &var, void *val_ptr) {
1127
     DEBUG_ECHOLNPGM("HandleLiveAdjustZ");
1124
     DEBUG_ECHOLNPGM("HandleLiveAdjustZ");
1128
-    float step = ZOffset_distance;
1125
+    const float step = ZOffset_distance;
1129
 
1126
 
1130
-    uint16_t flag = swap16(*(uint16_t*)val_ptr);
1127
+    const uint16_t flag = BE16_P(val_ptr);
1131
     switch (flag) {
1128
     switch (flag) {
1132
       case 0:
1129
       case 0:
1133
         if (step == 0.01)
1130
         if (step == 0.01)
1159
         z_offset_add += ZOffset_distance;
1156
         z_offset_add += ZOffset_distance;
1160
         break;
1157
         break;
1161
 
1158
 
1162
-      default:
1163
-        break;
1159
+      default: break;
1164
     }
1160
     }
1165
     ForceCompleteUpdate();
1161
     ForceCompleteUpdate();
1166
   }
1162
   }
1167
 #endif // BABYSTEPPING
1163
 #endif // BABYSTEPPING
1168
 
1164
 
1169
 void DGUSScreenHandlerMKS::GetManualFilament(DGUS_VP_Variable &var, void *val_ptr) {
1165
 void DGUSScreenHandlerMKS::GetManualFilament(DGUS_VP_Variable &var, void *val_ptr) {
1170
-  DEBUG_ECHOLNPGM("GetManualFilament");
1171
-
1172
-  uint16_t value_len = swap16(*(uint16_t*)val_ptr);
1166
+  const uint16_t value_len = BE16_P(val_ptr);
1167
+  const float value = (float)value_len;
1173
 
1168
 
1174
-  float value = (float)value_len;
1175
-
1176
-  DEBUG_ECHOLNPGM("Get Filament len value:", value);
1169
+  DEBUG_ECHOLNPGM("GetManualFilament:", value);
1177
   distanceFilament = value;
1170
   distanceFilament = value;
1178
 
1171
 
1179
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1172
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1180
 }
1173
 }
1181
 
1174
 
1182
 void DGUSScreenHandlerMKS::GetManualFilamentSpeed(DGUS_VP_Variable &var, void *val_ptr) {
1175
 void DGUSScreenHandlerMKS::GetManualFilamentSpeed(DGUS_VP_Variable &var, void *val_ptr) {
1183
-  DEBUG_ECHOLNPGM("GetManualFilamentSpeed");
1184
-
1185
-  uint16_t value_len = swap16(*(uint16_t*)val_ptr);
1186
-
1187
-  DEBUG_ECHOLNPGM("filamentSpeed_mm_s value:", value_len);
1188
-
1176
+  const uint16_t value_len = BE16_P(val_ptr);
1189
   filamentSpeed_mm_s = value_len;
1177
   filamentSpeed_mm_s = value_len;
1178
+  DEBUG_ECHOLNPGM("GetManualFilamentSpeed:", value_len);
1190
 
1179
 
1191
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1180
   skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
1192
 }
1181
 }
1205
   if (!print_job_timer.isPaused() && !queue.ring_buffer.empty())
1194
   if (!print_job_timer.isPaused() && !queue.ring_buffer.empty())
1206
     return;
1195
     return;
1207
 
1196
 
1208
-  const uint16_t val_t = swap16(*(uint16_t*)val_ptr);
1197
+  const uint16_t val_t = BE16_P(val_ptr);
1209
   switch (val_t) {
1198
   switch (val_t) {
1210
     default: break;
1199
     default: break;
1211
     case 0:
1200
     case 0:
1291
 
1280
 
1292
     uint8_t e_temp = 0;
1281
     uint8_t e_temp = 0;
1293
     filament_data.heated = false;
1282
     filament_data.heated = false;
1294
-    uint16_t preheat_option = swap16(*(uint16_t*)val_ptr);
1283
+    uint16_t preheat_option = BE16_P(val_ptr);
1295
     if (preheat_option >= 10) {     // Unload filament type
1284
     if (preheat_option >= 10) {     // Unload filament type
1296
       preheat_option -= 10;
1285
       preheat_option -= 10;
1297
       filament_data.action = 2;
1286
       filament_data.action = 2;

+ 8
- 3
Marlin/src/lcd/extui/dgus_reloaded/DGUSDisplay.h View File

21
  */
21
  */
22
 #pragma once
22
 #pragma once
23
 
23
 
24
-/* DGUS implementation written by coldtobi in 2019 for Marlin */
24
+/**
25
+ * DGUS implementation written by coldtobi in 2019.
26
+ * Updated for STM32G0B1RE by Protomosh in 2022.
27
+ */
25
 
28
 
26
 #include "config/DGUS_Screen.h"
29
 #include "config/DGUS_Screen.h"
27
 #include "config/DGUS_Control.h"
30
 #include "config/DGUS_Control.h"
30
 #include "../../../inc/MarlinConfigPre.h"
33
 #include "../../../inc/MarlinConfigPre.h"
31
 #include "../../../MarlinCore.h"
34
 #include "../../../MarlinCore.h"
32
 
35
 
36
+#define DEBUG_DGUSLCD // Uncomment for debug messages
33
 #define DEBUG_OUT ENABLED(DEBUG_DGUSLCD)
37
 #define DEBUG_OUT ENABLED(DEBUG_DGUSLCD)
34
 #include "../../../core/debug_out.h"
38
 #include "../../../core/debug_out.h"
35
 
39
 
36
-#define Swap16(val) ((uint16_t)(((uint16_t)(val) >> 8) |\
37
-                                ((uint16_t)(val) << 8)))
40
+// New endianness swap for 32bit mcu (tested with STM32G0B1RE)
41
+#define BE16_P(V) ( ((uint8_t*)(V))[0] << 8U | ((uint8_t*)(V))[1] )
42
+#define BE32_P(V) ( ((uint8_t*)(V))[0] << 24U | ((uint8_t*)(V))[1] << 16U | ((uint8_t*)(V))[2] << 8U | ((uint8_t*)(V))[3] )
38
 
43
 
39
 // Low-Level access to the display.
44
 // Low-Level access to the display.
40
 class DGUSDisplay {
45
 class DGUSDisplay {

+ 11
- 11
Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.cpp View File

215
 void DGUSRxHandler::Feedrate(DGUS_VP &vp, void *data_ptr) {
215
 void DGUSRxHandler::Feedrate(DGUS_VP &vp, void *data_ptr) {
216
   UNUSED(vp);
216
   UNUSED(vp);
217
 
217
 
218
-  const int16_t feedrate = Swap16(*(int16_t*)data_ptr);
218
+  const int16_t feedrate = BE16_P(data_ptr);
219
 
219
 
220
   ExtUI::setFeedrate_percent(feedrate);
220
   ExtUI::setFeedrate_percent(feedrate);
221
 
221
 
223
 }
223
 }
224
 
224
 
225
 void DGUSRxHandler::Flowrate(DGUS_VP &vp, void *data_ptr) {
225
 void DGUSRxHandler::Flowrate(DGUS_VP &vp, void *data_ptr) {
226
-  const int16_t flowrate = Swap16(*(int16_t*)data_ptr);
226
+  const int16_t flowrate = BE16_P(data_ptr);
227
 
227
 
228
   switch (vp.addr) {
228
   switch (vp.addr) {
229
     default: return;
229
     default: return;
246
 void DGUSRxHandler::BabystepSet(DGUS_VP &vp, void *data_ptr) {
246
 void DGUSRxHandler::BabystepSet(DGUS_VP &vp, void *data_ptr) {
247
   UNUSED(vp);
247
   UNUSED(vp);
248
 
248
 
249
-  const int16_t data = Swap16(*(int16_t*)data_ptr);
249
+  const int16_t data = BE16_P(data_ptr);
250
   const float offset = dgus_display.FromFixedPoint<int16_t, float, 2>(data);
250
   const float offset = dgus_display.FromFixedPoint<int16_t, float, 2>(data);
251
 
251
 
252
   const int16_t steps = ExtUI::mmToWholeSteps(offset - ExtUI::getZOffset_mm(), ExtUI::Z);
252
   const int16_t steps = ExtUI::mmToWholeSteps(offset - ExtUI::getZOffset_mm(), ExtUI::Z);
315
 }
315
 }
316
 
316
 
317
 void DGUSRxHandler::TempTarget(DGUS_VP &vp, void *data_ptr) {
317
 void DGUSRxHandler::TempTarget(DGUS_VP &vp, void *data_ptr) {
318
-  const int16_t temp = Swap16(*(int16_t*)data_ptr);
318
+  const int16_t temp = BE16_P(data_ptr);
319
 
319
 
320
   switch (vp.addr) {
320
   switch (vp.addr) {
321
     default: return;
321
     default: return;
338
 void DGUSRxHandler::TempCool(DGUS_VP &vp, void *data_ptr) {
338
 void DGUSRxHandler::TempCool(DGUS_VP &vp, void *data_ptr) {
339
   UNUSED(vp);
339
   UNUSED(vp);
340
 
340
 
341
-  const DGUS_Data::Heater heater = (DGUS_Data::Heater)Swap16(*(uint16_t*)data_ptr);
341
+  const DGUS_Data::Heater heater = (DGUS_Data::Heater)BE16_P(data_ptr);
342
 
342
 
343
   switch (heater) {
343
   switch (heater) {
344
     default: return;
344
     default: return;
397
     return;
397
     return;
398
   }
398
   }
399
 
399
 
400
-  const int16_t data = Swap16(*(int16_t*)data_ptr);
400
+  const int16_t data = BE16_P(data_ptr);
401
   const float offset = dgus_display.FromFixedPoint<int16_t, float, 2>(data);
401
   const float offset = dgus_display.FromFixedPoint<int16_t, float, 2>(data);
402
 
402
 
403
   const int16_t steps = ExtUI::mmToWholeSteps(offset - ExtUI::getZOffset_mm(), ExtUI::Z);
403
   const int16_t steps = ExtUI::mmToWholeSteps(offset - ExtUI::getZOffset_mm(), ExtUI::Z);
546
 void DGUSRxHandler::FilamentSelect(DGUS_VP &vp, void *data_ptr) {
546
 void DGUSRxHandler::FilamentSelect(DGUS_VP &vp, void *data_ptr) {
547
   UNUSED(vp);
547
   UNUSED(vp);
548
 
548
 
549
-  const DGUS_Data::Extruder extruder = (DGUS_Data::Extruder)Swap16(*(uint16_t*)data_ptr);
549
+  const DGUS_Data::Extruder extruder = (DGUS_Data::Extruder)BE16_P(data_ptr);
550
 
550
 
551
   switch (extruder) {
551
   switch (extruder) {
552
     default: return;
552
     default: return;
563
 void DGUSRxHandler::FilamentLength(DGUS_VP &vp, void *data_ptr) {
563
 void DGUSRxHandler::FilamentLength(DGUS_VP &vp, void *data_ptr) {
564
   UNUSED(vp);
564
   UNUSED(vp);
565
 
565
 
566
-  const uint16_t length = Swap16(*(uint16_t*)data_ptr);
566
+  const uint16_t length = BE16_P(data_ptr);
567
 
567
 
568
   dgus_screen_handler.filament_length = constrain(length, 0, EXTRUDE_MAXLENGTH);
568
   dgus_screen_handler.filament_length = constrain(length, 0, EXTRUDE_MAXLENGTH);
569
 
569
 
644
 }
644
 }
645
 
645
 
646
 void DGUSRxHandler::Move(DGUS_VP &vp, void *data_ptr) {
646
 void DGUSRxHandler::Move(DGUS_VP &vp, void *data_ptr) {
647
-  const int16_t data = Swap16(*(int16_t*)data_ptr);
647
+  const int16_t data = BE16_P(data_ptr);
648
   const float position = dgus_display.FromFixedPoint<int16_t, float, 1>(data);
648
   const float position = dgus_display.FromFixedPoint<int16_t, float, 1>(data);
649
   ExtUI::axis_t axis;
649
   ExtUI::axis_t axis;
650
 
650
 
816
 void DGUSRxHandler::PIDSelect(DGUS_VP &vp, void *data_ptr) {
816
 void DGUSRxHandler::PIDSelect(DGUS_VP &vp, void *data_ptr) {
817
   UNUSED(vp);
817
   UNUSED(vp);
818
 
818
 
819
-  const DGUS_Data::Heater heater = (DGUS_Data::Heater)Swap16(*(uint16_t*)data_ptr);
819
+  const DGUS_Data::Heater heater = (DGUS_Data::Heater)BE16_P(data_ptr);
820
 
820
 
821
   switch (heater) {
821
   switch (heater) {
822
     default: return;
822
     default: return;
846
     return;
846
     return;
847
   }
847
   }
848
 
848
 
849
-  uint16_t temp = Swap16(*(uint16_t*)data_ptr);
849
+  uint16_t temp = BE16_P(data_ptr);
850
 
850
 
851
   switch (dgus_screen_handler.pid_heater) {
851
   switch (dgus_screen_handler.pid_heater) {
852
     default: return;
852
     default: return;

+ 1
- 1
Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.h View File

107
         break;
107
         break;
108
       }
108
       }
109
       case 2: {
109
       case 2: {
110
-        const uint16_t data = Swap16(*(uint16_t*)data_ptr);
110
+        const uint16_t data = BE16_P(data_ptr);
111
         *(T*)vp.extra = (T)data;
111
         *(T*)vp.extra = (T)data;
112
         break;
112
         break;
113
       }
113
       }

+ 2
- 0
Marlin/src/lcd/extui/dgus_reloaded/DGUSTxHandler.h View File

24
 #include "DGUSDisplay.h"
24
 #include "DGUSDisplay.h"
25
 #include "definition/DGUS_VP.h"
25
 #include "definition/DGUS_VP.h"
26
 
26
 
27
+#define Swap16(val) ((uint16_t)(((uint16_t)(val) >> 8) | ((uint16_t)(val) << 8)))
28
+
27
 namespace DGUSTxHandler {
29
 namespace DGUSTxHandler {
28
 
30
 
29
   #if ENABLED(SDSUPPORT)
31
   #if ENABLED(SDSUPPORT)

Loading…
Cancel
Save