Skip to content

Commit b205036

Browse files
committed
Add max accelerations to axis screen #189
1 parent 7b25604 commit b205036

File tree

6 files changed

+29
-1
lines changed

6 files changed

+29
-1
lines changed

Marlin/src/lcd/extui/lib/dgus_creality/DGUSScreenHandler.h

+16
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,22 @@ class DGUSScreenHandler {
321321
//dgusdisplay.SetVariableAppendText(var.VP, suffix);
322322
}
323323

324+
static void DGUSLCD_SendUint32LongToDisplay(DGUS_VP_Variable &var) {
325+
if (var.memadr) {
326+
// Round - truncated values look like skipped numbers
327+
long roundedValue = *(uint32_t *) var.memadr;
328+
dgusdisplay.WriteVariable(var.VP, roundedValue);
329+
}
330+
}
331+
332+
static void DGUSLCD_ReceiveUint32LongFromDisplay(DGUS_VP_Variable &var, void* val_ptr) {
333+
if (var.memadr) {
334+
// Round - truncated values look like skipped numbers
335+
uint32_t incomingValue = *(uint32_t *) val_ptr;
336+
337+
*(uint32_t*)val_ptr = swap32(incomingValue);
338+
}
339+
}
324340

325341
/// Force an update of all VP on the current screen.
326342
static inline void ForceCompleteUpdate() { update_ptr = 0; ScreenComplete = false; }

Marlin/src/lcd/extui/lib/dgus_creality/DGUSVPVariable.h

+2
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,6 @@ struct DGUS_VP_Variable {
5151
// endianness swap
5252
FORCE_INLINE uint16_t swap16(const uint16_t value) { return (value & 0xffU) << 8U | (value >> 8U); }
5353

54+
FORCE_INLINE uint32_t swap32(const uint32_t value) { return ((value>>24)&0xff) | ((value<<8)&0xff0000) | ((value>>8)&0xff00) | ((value<<24)&0xff000000); }
55+
5456
FORCE_INLINE uint16_t uInt16Value(void *val_ptr) { return swap16(*static_cast<uint16_t*>(val_ptr)); }

Marlin/src/lcd/extui/lib/dgus_creality/creality_touch/AxisSettingsHandler.cpp

+6
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ AxisEnum AxisSettingsHandler::current_axis;
2121
uint16_t AxisSettingsHandler::axis_settings_title_icon = ICON_AXIS_SETTINGS_TITLE_X;
2222

2323
float AxisSettingsHandler::axis_steps_mm;
24+
uint32_t AxisSettingsHandler::max_acceleration_mm_per_s2;
2425

2526
void AxisSettingsHandler::HandleNavigation(DGUS_VP_Variable &var, void *val_ptr) {
2627
switch (uInt16Value(val_ptr)) {
@@ -49,13 +50,18 @@ void AxisSettingsHandler::HandleNavigation(DGUS_VP_Variable &var, void *val_ptr)
4950

5051
// Load settings for axis
5152
axis_steps_mm = planner.settings.axis_steps_per_mm[current_axis];
53+
max_acceleration_mm_per_s2 = planner.settings.max_acceleration_mm_per_s2[current_axis];
5254
}
5355

5456
void AxisSettingsHandler::HandleBackNavigation(DGUS_VP_Variable &var, void *val_ptr) {
5557
// Save settings for axis
5658
planner.settings.axis_steps_per_mm[current_axis] = axis_steps_mm;
59+
planner.settings.max_acceleration_mm_per_s2[current_axis] = max_acceleration_mm_per_s2;
5760

61+
// Save and pop
5862
ScreenHandler.PopToOldScreen();
63+
64+
settings.save();
5965
}
6066

6167
#endif

Marlin/src/lcd/extui/lib/dgus_creality/creality_touch/AxisSettingsHandler.h

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ class AxisSettingsHandler {
88
static uint16_t axis_settings_title_icon;
99

1010
static float axis_steps_mm;
11+
static uint32_t max_acceleration_mm_per_s2;
1112

1213
public:
1314
static void HandleNavigation(DGUS_VP_Variable &var, void *val_ptr);

Marlin/src/lcd/extui/lib/dgus_creality/creality_touch/DGUSDisplayDef.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,7 @@ const uint16_t VPList_AxisSettingsAxis[] PROGMEM = {
296296
VP_AXIS_SETTINGS_TITLE_ICON,
297297

298298
VP_AXIS_SETTINGS_AXIS_STEPSMM,
299+
VP_AXIS_SETTINGS_AXIS_MAX_ACCEL,
299300

300301
0x0000
301302
};
@@ -425,6 +426,7 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = {
425426
VPHELPER(VP_AXIS_SETTINGS_TITLE_ICON, &AxisSettingsHandler::axis_settings_title_icon, nullptr, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
426427

427428
VPHELPER(VP_AXIS_SETTINGS_AXIS_STEPSMM, &AxisSettingsHandler::axis_steps_mm, ScreenHandler.DGUSLCD_SetFloatAsIntFromDisplay<1>, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<1>),
429+
VPHELPER(VP_AXIS_SETTINGS_AXIS_MAX_ACCEL, &AxisSettingsHandler::max_acceleration_mm_per_s2, ScreenHandler.DGUSLCD_ReceiveUint32LongFromDisplay, ScreenHandler.DGUSLCD_SendUint32LongToDisplay),
428430

429431

430432
VPHELPER(VP_AXIS_SETTINGS_NAV_BACKBUTTON, nullptr, AxisSettingsHandler::HandleBackNavigation, nullptr),

Marlin/src/lcd/extui/lib/dgus_creality/creality_touch/DGUSDisplayDef.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,8 @@ constexpr uint16_t ICON_AXIS_SETTINGS_TITLE_E = 23;
308308

309309
constexpr uint16_t VP_AXIS_SETTINGS_NAV_BACKBUTTON = 0x22DD;
310310

311-
constexpr uint16_t VP_AXIS_SETTINGS_AXIS_STEPSMM = 0x22DF;
311+
constexpr uint16_t VP_AXIS_SETTINGS_AXIS_STEPSMM = 0x22DF; // 2-byte
312+
constexpr uint16_t VP_AXIS_SETTINGS_AXIS_MAX_ACCEL = 0x22E1; // 4-byte (!)
312313

313314

314315
// Mesh leveling

0 commit comments

Comments
 (0)