🎨 Consolidate Ender-3 V2 DWIN common code (#22778)

This commit is contained in:
Scott Lahteine
2021-09-15 19:48:29 -05:00
committed by GitHub
parent cca3250c3f
commit 5b5a8798f8
39 changed files with 1512 additions and 4078 deletions

View File

@@ -138,7 +138,7 @@ constexpr uint16_t MROWS = TROWS - 1, // Last Row Index
// Value Init
HMI_value_t HMI_ValueStruct;
HMI_Flag_t HMI_flag{0};
HMI_flag_t HMI_flag{0};
millis_t dwin_heat_time = 0;
@@ -470,7 +470,7 @@ void Draw_Back_First(const bool is_sel=true) {
}
template <typename T>
inline bool Apply_Encoder(const ENCODER_DiffState &encoder_diffState, T &valref) {
inline bool Apply_Encoder(const EncoderState &encoder_diffState, T &valref) {
if (encoder_diffState == ENCODER_DIFF_CW)
valref += EncoderRate.encoderMoveValue;
else if (encoder_diffState == ENCODER_DIFF_CCW)
@@ -593,7 +593,7 @@ void DWIN_Draw_Label(const uint8_t row, const __FlashStringHelper *title) {
DWIN_Draw_Label(row, (char*)title);
}
void DWIN_Draw_Signed_Float(uint8_t size, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, long value) {
void DWIN_Draw_Signed_Float(uint8_t size, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, int32_t value) {
DWIN_Draw_String(true, size, Color_White, bColor, x - 8, y, value < 0 ? F("-") : F(" "));
DWIN_Draw_FloatValue(true, true, 0, size, Color_White, bColor, iNum, fNum, x, y, value < 0 ? -value : value);
}
@@ -607,7 +607,7 @@ void Draw_Edit_Integer4(const uint8_t row, const uint16_t value, const bool acti
}
void Draw_Edit_Float3(const uint8_t row, const uint16_t value, const bool active=false) {
DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, active ? Select_Color : Color_Bg_Black, 3, UNITFDIGITS, 220 - UNITFDIGITS * 8, EBASE(row), value);
DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, active ? Select_Color : Color_Bg_Black, 3, UNITFDIGITS, 220 - UNITFDIGITS * 8, EBASE(row), (int32_t)value);
}
void Draw_Edit_Signed_Float2(const uint8_t row, const float value, const bool active=false) {
@@ -1292,11 +1292,11 @@ void Goto_MainMenu() {
TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)();
}
inline ENCODER_DiffState get_encoder_state() {
inline EncoderState get_encoder_state() {
static millis_t Encoder_ms = 0;
const millis_t ms = millis();
if (PENDING(ms, Encoder_ms)) return ENCODER_DIFF_NO;
const ENCODER_DiffState state = Encoder_ReceiveAnalyze();
const EncoderState state = Encoder_ReceiveAnalyze();
if (state != ENCODER_DIFF_NO) Encoder_ms = ms + ENCODER_WAIT_MS;
return state;
}
@@ -1317,7 +1317,7 @@ void HMI_Move_Done(const AxisEnum axis) {
}
void HMI_Move_X() {
ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
EncoderState encoder_diffState = Encoder_ReceiveAnalyze();
if (encoder_diffState == ENCODER_DIFF_NO) return;
if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Move_X_scaled)) {
Draw_Edit_Float3(1, HMI_ValueStruct.Move_X_scaled);
@@ -1331,7 +1331,7 @@ void HMI_Move_X() {
}
void HMI_Move_Y() {
ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
EncoderState encoder_diffState = Encoder_ReceiveAnalyze();
if (encoder_diffState == ENCODER_DIFF_NO) return;
if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Move_Y_scaled)) {
Draw_Edit_Float3(2, HMI_ValueStruct.Move_Y_scaled);
@@ -1345,7 +1345,7 @@ void HMI_Move_Y() {
}
void HMI_Move_Z() {
ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
EncoderState encoder_diffState = Encoder_ReceiveAnalyze();
if (encoder_diffState == ENCODER_DIFF_NO) return;
if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Move_Z_scaled)) {
Draw_Edit_Float3(3, HMI_ValueStruct.Move_Z_scaled);
@@ -1362,7 +1362,7 @@ void HMI_Move_Z() {
void HMI_Move_E() {
static float last_E_scaled = 0;
ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
EncoderState encoder_diffState = Encoder_ReceiveAnalyze();
if (encoder_diffState == ENCODER_DIFF_NO) return;
if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Move_E_scaled)) {
last_E_scaled = HMI_ValueStruct.Move_E_scaled;
@@ -1383,7 +1383,7 @@ void HMI_Move_Z() {
bool printer_busy() { return planner.movesplanned() || printingIsActive(); }
void HMI_Zoffset() {
ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
EncoderState encoder_diffState = Encoder_ReceiveAnalyze();
if (encoder_diffState == ENCODER_DIFF_NO) return;
uint8_t zoff_line;
switch (HMI_ValueStruct.show_mode) {
@@ -1416,7 +1416,7 @@ void HMI_Move_Z() {
#if HAS_HOTEND
void HMI_ETemp() {
ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
EncoderState encoder_diffState = Encoder_ReceiveAnalyze();
if (encoder_diffState == ENCODER_DIFF_NO) return;
uint8_t temp_line;
switch (HMI_ValueStruct.show_mode) {
@@ -1458,7 +1458,7 @@ void HMI_Move_Z() {
#if HAS_HEATED_BED
void HMI_BedTemp() {
ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
EncoderState encoder_diffState = Encoder_ReceiveAnalyze();
if (encoder_diffState == ENCODER_DIFF_NO) return;
uint8_t bed_line;
switch (HMI_ValueStruct.show_mode) {
@@ -1500,7 +1500,7 @@ void HMI_Move_Z() {
#if HAS_PREHEAT && HAS_FAN
void HMI_FanSpeed() {
ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
EncoderState encoder_diffState = Encoder_ReceiveAnalyze();
if (encoder_diffState == ENCODER_DIFF_NO) return;
uint8_t fan_line;
switch (HMI_ValueStruct.show_mode) {
@@ -1541,7 +1541,7 @@ void HMI_Move_Z() {
#endif // HAS_PREHEAT && HAS_FAN
void HMI_PrintSpeed() {
ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
EncoderState encoder_diffState = Encoder_ReceiveAnalyze();
if (encoder_diffState == ENCODER_DIFF_NO) return;
if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.print_speed)) {
checkkey = Tune;
@@ -1559,7 +1559,7 @@ void HMI_PrintSpeed() {
#define LAST_AXIS TERN(HAS_HOTEND, E_AXIS, Z_AXIS)
void HMI_MaxFeedspeedXYZE() {
ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
EncoderState encoder_diffState = Encoder_ReceiveAnalyze();
if (encoder_diffState == ENCODER_DIFF_NO) return;
if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Max_Feedspeed)) {
checkkey = MaxSpeed;
@@ -1578,7 +1578,7 @@ void HMI_MaxFeedspeedXYZE() {
}
void HMI_MaxAccelerationXYZE() {
ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
EncoderState encoder_diffState = Encoder_ReceiveAnalyze();
if (encoder_diffState == ENCODER_DIFF_NO) return;
if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Max_Acceleration)) {
checkkey = MaxAcceleration;
@@ -1599,7 +1599,7 @@ void HMI_MaxAccelerationXYZE() {
#if HAS_CLASSIC_JERK
void HMI_MaxJerkXYZE() {
ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
EncoderState encoder_diffState = Encoder_ReceiveAnalyze();
if (encoder_diffState == ENCODER_DIFF_NO) return;
if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Max_Jerk_scaled)) {
checkkey = MaxJerk;
@@ -1620,7 +1620,7 @@ void HMI_MaxAccelerationXYZE() {
#endif // HAS_CLASSIC_JERK
void HMI_StepXYZE() {
ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
EncoderState encoder_diffState = Encoder_ReceiveAnalyze();
if (encoder_diffState == ENCODER_DIFF_NO) return;
if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Max_Step_scaled)) {
checkkey = Step;
@@ -1816,8 +1816,6 @@ void HMI_SDCardInit() { card.cdroot(); }
void MarlinUI::refresh() { /* Nothing to see here */ }
#define ICON_Folder ICON_More
#if ENABLED(SCROLL_LONG_FILENAMES)
char shift_name[LONG_FILENAME_LENGTH + 1];
@@ -2077,7 +2075,7 @@ void Draw_Print_File_Menu() {
// Main Process
void HMI_MainMenu() {
ENCODER_DiffState encoder_diffState = get_encoder_state();
EncoderState encoder_diffState = get_encoder_state();
if (encoder_diffState == ENCODER_DIFF_NO) return;
if (encoder_diffState == ENCODER_DIFF_CW) {
@@ -2137,7 +2135,7 @@ void HMI_MainMenu() {
// Select (and Print) File
void HMI_SelectFile() {
ENCODER_DiffState encoder_diffState = get_encoder_state();
EncoderState encoder_diffState = get_encoder_state();
const uint16_t hasUpDir = !card.flag.workDirIsRoot;
@@ -2257,7 +2255,7 @@ void HMI_SelectFile() {
// Printing
void HMI_Printing() {
ENCODER_DiffState encoder_diffState = get_encoder_state();
EncoderState encoder_diffState = get_encoder_state();
if (encoder_diffState == ENCODER_DIFF_NO) return;
if (HMI_flag.done_confirm_flag) {
@@ -2335,7 +2333,7 @@ void HMI_Printing() {
// Pause and Stop window
void HMI_PauseOrStop() {
ENCODER_DiffState encoder_diffState = get_encoder_state();
EncoderState encoder_diffState = get_encoder_state();
if (encoder_diffState == ENCODER_DIFF_NO) return;
if (encoder_diffState == ENCODER_DIFF_CW)
@@ -2417,7 +2415,7 @@ void Item_Adv_HomeOffsets(const uint8_t row) {
Item_AreaCopy(1, 76, 102, 87, row); // "Set Home Offsets"
#endif
}
Draw_Menu_Line(row, ICON_HomeOff);
Draw_Menu_Line(row, ICON_HomeOffset);
Draw_More_Icon(row);
}
@@ -2434,7 +2432,7 @@ void Item_Adv_HomeOffsets(const uint8_t row) {
say_probe_offs_en(row);
#endif
}
Draw_Menu_Line(row, ICON_ProbeOff);
Draw_Menu_Line(row, ICON_ProbeOffset);
Draw_More_Icon(row);
}
@@ -2529,12 +2527,12 @@ void Item_HomeOffs_X(const uint8_t row) {
}
else {
#ifdef USE_STRING_TITLES
Draw_Menu_LineF(row, ICON_HomeOffX, GET_TEXT_F(MSG_HOME_OFFSET_X));
Draw_Menu_LineF(row, ICON_HomeOffsetX, GET_TEXT_F(MSG_HOME_OFFSET_X));
#else
say_home_offs_en(row); say_x_en(75, row); // "Home Offset X"
#endif
}
Draw_Menu_Line(row, ICON_HomeOff);
Draw_Menu_Line(row, ICON_HomeOffset);
Draw_Edit_Signed_Float3(row, HMI_ValueStruct.Home_OffX_scaled);
}
@@ -2544,12 +2542,12 @@ void Item_HomeOffs_Y(const uint8_t row) {
}
else {
#ifdef USE_STRING_TITLES
Draw_Menu_LineF(row, ICON_HomeOffY, GET_TEXT_F(MSG_HOME_OFFSET_Y));
Draw_Menu_LineF(row, ICON_HomeOffsetY, GET_TEXT_F(MSG_HOME_OFFSET_Y));
#else
say_home_offs_en(row); say_y_en(75, row); // "Home Offset X"
#endif
}
Draw_Menu_Line(row, ICON_HomeOff);
Draw_Menu_Line(row, ICON_HomeOffset);
Draw_Edit_Signed_Float3(row, HMI_ValueStruct.Home_OffY_scaled);
}
@@ -2559,12 +2557,12 @@ void Item_HomeOffs_Z(const uint8_t row) {
}
else {
#ifdef USE_STRING_TITLES
Draw_Menu_LineF(row, ICON_HomeOffZ, GET_TEXT_F(MSG_HOME_OFFSET_Z));
Draw_Menu_LineF(row, ICON_HomeOffsetZ, GET_TEXT_F(MSG_HOME_OFFSET_Z));
#else
say_home_offs_en(row); say_z_en(75, row); // "Home Offset Z"
#endif
}
Draw_Menu_Line(row, ICON_HomeOff);
Draw_Menu_Line(row, ICON_HomeOffset);
Draw_Edit_Signed_Float3(row, HMI_ValueStruct.Home_OffZ_scaled);
}
@@ -2602,8 +2600,8 @@ void Draw_HomeOff_Menu() {
DWIN_Frame_TitleCopy(124, 431, 91, 12); // "Probe Offsets"
#endif
#ifdef USE_STRING_TITLES
Draw_Menu_LineF(1, ICON_ProbeOffX, GET_TEXT_F(MSG_ZPROBE_XOFFSET)); // Probe X Offset
Draw_Menu_LineF(2, ICON_ProbeOffY, GET_TEXT_F(MSG_ZPROBE_YOFFSET)); // Probe Y Offset
Draw_Menu_LineF(1, ICON_ProbeOffsetX, GET_TEXT_F(MSG_ZPROBE_XOFFSET)); // Probe X Offset
Draw_Menu_LineF(2, ICON_ProbeOffsetY, GET_TEXT_F(MSG_ZPROBE_YOFFSET)); // Probe Y Offset
#else
say_probe_offs_en(1); say_x_en(75, 1); // "Probe Offset X"
say_probe_offs_en(2); say_y_en(75, 2); // "Probe Offset Y"
@@ -2615,6 +2613,7 @@ void Draw_HomeOff_Menu() {
if (select_item.now != CASE_BACK) Draw_Menu_Cursor(select_item.now);
}
#endif
#include "../../../libs/buzzer.h"
@@ -2633,7 +2632,7 @@ void HMI_AudioFeedback(const bool success=true) {
// Prepare
void HMI_Prepare() {
ENCODER_DiffState encoder_diffState = get_encoder_state();
EncoderState encoder_diffState = get_encoder_state();
if (encoder_diffState == ENCODER_DIFF_NO) return;
// Avoid flicker by updating only the previous menu
@@ -2847,7 +2846,7 @@ void Draw_Temperature_Menu() {
// Control
void HMI_Control() {
ENCODER_DiffState encoder_diffState = get_encoder_state();
EncoderState encoder_diffState = get_encoder_state();
if (encoder_diffState == ENCODER_DIFF_NO) return;
// Avoid flicker by updating only the previous menu
@@ -2932,28 +2931,25 @@ void HMI_Control() {
DWIN_UpdateLCD();
}
#if HAS_ONESTEP_LEVELING
// Leveling
void HMI_Leveling() {
Popup_Window_Leveling();
DWIN_UpdateLCD();
queue.inject_P(PSTR("G28O\nG29"));
}
#endif
// Axis Move
void HMI_AxisMove() {
ENCODER_DiffState encoder_diffState = get_encoder_state();
EncoderState encoder_diffState = get_encoder_state();
if (encoder_diffState == ENCODER_DIFF_NO) return;
#if ENABLED(PREVENT_COLD_EXTRUSION)
// popup window resume
if (HMI_flag.ETempTooLow_flag) {
if (HMI_flag.cold_flag) {
if (encoder_diffState == ENCODER_DIFF_ENTER) {
HMI_flag.ETempTooLow_flag = false;
HMI_flag.cold_flag = false;
HMI_ValueStruct.Move_E_scaled = current_position.e * MINUNITMULT;
Draw_Move_Menu();
Draw_Edit_Float3(1, HMI_ValueStruct.Move_X_scaled);
@@ -3003,7 +2999,7 @@ void HMI_AxisMove() {
case 4: // Extruder
#if ENABLED(PREVENT_COLD_EXTRUSION)
if (thermalManager.tooColdToExtrude(0)) {
HMI_flag.ETempTooLow_flag = true;
HMI_flag.cold_flag = true;
Popup_Window_ETempTooLow();
DWIN_UpdateLCD();
return;
@@ -3022,7 +3018,7 @@ void HMI_AxisMove() {
// TemperatureID
void HMI_Temperature() {
ENCODER_DiffState encoder_diffState = get_encoder_state();
EncoderState encoder_diffState = get_encoder_state();
if (encoder_diffState == ENCODER_DIFF_NO) return;
// Avoid flicker by updating only the previous menu
@@ -3449,7 +3445,7 @@ void Draw_Steps_Menu() {
// Motion
void HMI_Motion() {
ENCODER_DiffState encoder_diffState = get_encoder_state();
EncoderState encoder_diffState = get_encoder_state();
if (encoder_diffState == ENCODER_DIFF_NO) return;
// Avoid flicker by updating only the previous menu
@@ -3497,7 +3493,7 @@ void HMI_Motion() {
// Advanced Settings
void HMI_AdvSet() {
ENCODER_DiffState encoder_diffState = get_encoder_state();
EncoderState encoder_diffState = get_encoder_state();
if (encoder_diffState == ENCODER_DIFF_NO) return;
// Avoid flicker by updating only the previous menu
@@ -3594,7 +3590,7 @@ void HMI_AdvSet() {
// Home Offset
void HMI_HomeOff() {
ENCODER_DiffState encoder_diffState = get_encoder_state();
EncoderState encoder_diffState = get_encoder_state();
if (encoder_diffState == ENCODER_DIFF_NO) return;
// Avoid flicker by updating only the previous menu
@@ -3633,7 +3629,7 @@ void HMI_AdvSet() {
}
void HMI_HomeOffN(const AxisEnum axis, float &posScaled, const_float_t lo, const_float_t hi) {
ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
EncoderState encoder_diffState = Encoder_ReceiveAnalyze();
if (encoder_diffState == ENCODER_DIFF_NO) return;
if (Apply_Encoder(encoder_diffState, posScaled)) {
@@ -3654,9 +3650,10 @@ void HMI_AdvSet() {
#endif // HAS_HOME_OFFSET
#if HAS_ONESTEP_LEVELING
// Probe Offset
void HMI_ProbeOff() {
ENCODER_DiffState encoder_diffState = get_encoder_state();
EncoderState encoder_diffState = get_encoder_state();
if (encoder_diffState == ENCODER_DIFF_NO) return;
// Avoid flicker by updating only the previous menu
@@ -3689,7 +3686,7 @@ void HMI_AdvSet() {
}
void HMI_ProbeOffN(float &posScaled, float &offset_ref) {
ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
EncoderState encoder_diffState = Encoder_ReceiveAnalyze();
if (encoder_diffState == ENCODER_DIFF_NO) return;
if (Apply_Encoder(encoder_diffState, posScaled)) {
@@ -3710,7 +3707,7 @@ void HMI_AdvSet() {
// Info
void HMI_Info() {
ENCODER_DiffState encoder_diffState = get_encoder_state();
EncoderState encoder_diffState = get_encoder_state();
if (encoder_diffState == ENCODER_DIFF_NO) return;
if (encoder_diffState == ENCODER_DIFF_ENTER) {
#if HAS_ONESTEP_LEVELING
@@ -3727,7 +3724,7 @@ void HMI_Info() {
// Tune
void HMI_Tune() {
ENCODER_DiffState encoder_diffState = get_encoder_state();
EncoderState encoder_diffState = get_encoder_state();
if (encoder_diffState == ENCODER_DIFF_NO) return;
// Avoid flicker by updating only the previous menu
@@ -3813,7 +3810,7 @@ void HMI_Tune() {
// PLA Preheat
void HMI_PLAPreheatSetting() {
ENCODER_DiffState encoder_diffState = get_encoder_state();
EncoderState encoder_diffState = get_encoder_state();
if (encoder_diffState == ENCODER_DIFF_NO) return;
// Avoid flicker by updating only the previous menu
@@ -3869,7 +3866,7 @@ void HMI_Tune() {
// ABS Preheat
void HMI_ABSPreheatSetting() {
ENCODER_DiffState encoder_diffState = get_encoder_state();
EncoderState encoder_diffState = get_encoder_state();
if (encoder_diffState == ENCODER_DIFF_NO) return;
// Avoid flicker by updating only the previous menu
@@ -3927,7 +3924,7 @@ void HMI_Tune() {
// Max Speed
void HMI_MaxSpeed() {
ENCODER_DiffState encoder_diffState = get_encoder_state();
EncoderState encoder_diffState = get_encoder_state();
if (encoder_diffState == ENCODER_DIFF_NO) return;
// Avoid flicker by updating only the previous menu
@@ -3956,7 +3953,7 @@ void HMI_MaxSpeed() {
// Max Acceleration
void HMI_MaxAcceleration() {
ENCODER_DiffState encoder_diffState = get_encoder_state();
EncoderState encoder_diffState = get_encoder_state();
if (encoder_diffState == ENCODER_DIFF_NO) return;
// Avoid flicker by updating only the previous menu
@@ -3986,7 +3983,7 @@ void HMI_MaxAcceleration() {
#if HAS_CLASSIC_JERK
// Max Jerk
void HMI_MaxJerk() {
ENCODER_DiffState encoder_diffState = get_encoder_state();
EncoderState encoder_diffState = get_encoder_state();
if (encoder_diffState == ENCODER_DIFF_NO) return;
// Avoid flicker by updating only the previous menu
@@ -4016,7 +4013,7 @@ void HMI_MaxAcceleration() {
// Step
void HMI_Step() {
ENCODER_DiffState encoder_diffState = get_encoder_state();
EncoderState encoder_diffState = get_encoder_state();
if (encoder_diffState == ENCODER_DIFF_NO) return;
// Avoid flicker by updating only the previous menu
@@ -4172,7 +4169,7 @@ void EachMomentUpdate() {
DWIN_UpdateLCD();
while (recovery_flag) {
ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
EncoderState encoder_diffState = Encoder_ReceiveAnalyze();
if (encoder_diffState != ENCODER_DIFF_NO) {
if (encoder_diffState == ENCODER_DIFF_ENTER) {
recovery_flag = false;