284 lines
9.7 KiB
C++
284 lines
9.7 KiB
C++
/**
|
|
* Marlin 3D Printer Firmware
|
|
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|
*
|
|
* Based on Sprinter and grbl.
|
|
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
#pragma once
|
|
|
|
/**
|
|
* lcd/e3v2/jyersui/dwin.h
|
|
* JYERSUI Author: Jacob Myers
|
|
*
|
|
* JYERSUI Enhanced by LCH-77
|
|
* Version: 1.9
|
|
* Date: Jun 16, 2022
|
|
*/
|
|
|
|
#include "dwin_defines.h"
|
|
|
|
#include "../../../inc/MarlinConfig.h"
|
|
|
|
enum processID : uint8_t {
|
|
Main, Print, Menu, Value, Option, File, Popup, Confirm, Wait, Locked, Cancel, Keyboard
|
|
};
|
|
|
|
enum PopupID : uint8_t {
|
|
Pause, Stop, Resume, SaveLevel, ETemp, ConfFilChange, PurgeMore, MeshSlot,
|
|
Level, Home, MoveWait, Heating, FilLoad, FilChange, TempWarn, Runout, Resuming, ManualProbing,
|
|
FilInsert, HeaterTime, UserInput, LevelError, InvalidMesh, UI, Complete, Custom, ESDiagPopup, PrintConfirm,
|
|
PIDWait, PIDWaitH, PIDWaitB, BadextruderNumber, TempTooHigh, PIDTimeout, PIDDone
|
|
};
|
|
|
|
enum menuID : uint8_t {
|
|
MainMenu,
|
|
Prepare,
|
|
Move,
|
|
HomeMenu,
|
|
ManualLevel,
|
|
ZOffset,
|
|
Preheat,
|
|
ChangeFilament,
|
|
HostActions,
|
|
MenuCustom,
|
|
Control,
|
|
TempMenu,
|
|
PID,
|
|
HotendPID,
|
|
BedPID,
|
|
#if HAS_PREHEAT
|
|
#define _PREHEAT_ID(N) Preheat##N,
|
|
REPEAT_1(PREHEAT_COUNT, _PREHEAT_ID)
|
|
#endif
|
|
Motion,
|
|
HomeOffsets,
|
|
MaxSpeed,
|
|
MaxAcceleration,
|
|
#if HAS_CLASSIC_JERK
|
|
MaxJerk,
|
|
#endif
|
|
#if HAS_JUNCTION_DEVIATION
|
|
JDmenu,
|
|
#endif
|
|
Steps,
|
|
#if ENABLED(FWRETRACT)
|
|
FwRetraction,
|
|
#endif
|
|
Visual,
|
|
ColorSettings,
|
|
HostSettings,
|
|
ActionCommands,
|
|
Advanced,
|
|
#if HAS_BED_PROBE
|
|
ProbeMenu,
|
|
#endif
|
|
Info,
|
|
#if HAS_MESH
|
|
Leveling,
|
|
LevelManual,
|
|
LevelView,
|
|
MeshViewer,
|
|
LevelSettings,
|
|
#if ENABLED(PROBE_MANUALLY)
|
|
ManualMesh,
|
|
#endif
|
|
#if ENABLED(AUTO_BED_LEVELING_UBL) && !HAS_BED_PROBE
|
|
UBLMesh,
|
|
#endif
|
|
#endif
|
|
InfoMain,
|
|
Tune,
|
|
PreheatHotend,
|
|
#if ANY(CASE_LIGHT_MENU, LED_CONTROL_MENU)
|
|
Ledsmenu,
|
|
#if BOTH(CASE_LIGHT_MENU, CASELIGHT_USES_BRIGHTNESS)
|
|
CaseLightmenu,
|
|
#endif
|
|
#if ENABLED(LED_CONTROL_MENU)
|
|
LedControlmenu,
|
|
#if HAS_COLOR_LEDS
|
|
#if ENABLED(LED_COLOR_PRESETS)
|
|
LedControlpresets,
|
|
#else
|
|
LedControlcustom,
|
|
#endif
|
|
#endif
|
|
#endif
|
|
#endif
|
|
};
|
|
|
|
typedef struct {
|
|
// Flags
|
|
bool flag_tune = false;
|
|
bool auto_fw_retract = false;
|
|
bool printing = false;
|
|
bool paused = false;
|
|
bool sdprint = false;
|
|
bool livemove = false;
|
|
bool liveadjust = false;
|
|
bool probe_deployed = false;
|
|
// Auxiliary values
|
|
AxisEnum axis = X_AXIS; // Axis Select
|
|
int16_t pausetemp = 0;
|
|
int16_t pausebed = 0;
|
|
int16_t pausefan = 0;
|
|
uint8_t preheatmode = 0;
|
|
uint8_t zoffsetmode = 0;
|
|
float zoffsetvalue = 0;
|
|
uint8_t gridpoint;
|
|
float corner_avg;
|
|
float corner_pos;
|
|
float zval;
|
|
#if ENABLED(PREHEAT_BEFORE_LEVELING)
|
|
uint8_t LevelingTempmode = 0;
|
|
#endif
|
|
#if BOTH(LED_CONTROL_MENU, HAS_COLOR_LEDS)
|
|
uint32_t LED_Color = Def_Leds_Color;
|
|
#endif
|
|
#if HAS_PID_HEATING
|
|
uint16_t PID_e_temp = 180;
|
|
uint16_t PID_bed_temp = 60;
|
|
#endif
|
|
} temp_val_t;
|
|
extern temp_val_t temp_val;
|
|
|
|
#define Custom_Colors 10
|
|
enum colorID : uint8_t {
|
|
Default, White, Green, Cyan, Blue, Magenta, Red, Orange, Yellow, Brown, Black
|
|
};
|
|
enum pidresult_t : uint8_t { PID_STARTED, PID_EXTR_START, PID_BED_START, PID_BAD_EXTRUDER_NUM, PID_TEMP_TOO_HIGH, PID_TUNING_TIMEOUT, PID_DONE };
|
|
|
|
class CrealityDWINClass {
|
|
public:
|
|
static constexpr const char * const color_names[11] = { "Default", "White", "Green", "Cyan", "Blue", "Magenta", "Red", "Orange", "Yellow", "Brown", "Black" };
|
|
static constexpr const char * const preheat_modes[3] = { "Both", "Hotend", "Bed" };
|
|
static constexpr const char * const zoffset_modes[3] = { "No Live" , "OnClick", " Live" };
|
|
#if ENABLED(PREHEAT_BEFORE_LEVELING)
|
|
static constexpr const char * const preheat_levmodes[4] = { " Both", " Hotend", " Bed", " None" };
|
|
#endif
|
|
|
|
static void Clear_Screen(uint8_t e=3);
|
|
static void Draw_Float(float value, uint8_t row, bool selected=false, uint8_t minunit=10);
|
|
static void Draw_Option(uint8_t value, const char * const * options, uint8_t row, bool selected=false, bool color=false);
|
|
static uint16_t GetColor(uint8_t color, uint16_t original, bool light=false);
|
|
static void Draw_Checkbox(uint8_t row, bool value);
|
|
static void Draw_Title(const char * title);
|
|
static void Draw_Title(FSTR_P const title);
|
|
static void Draw_Menu_Item(uint8_t row, uint8_t icon=0, const char * const label1=nullptr, const char * const label2=nullptr, bool more=false, bool centered=false);
|
|
static void Draw_Menu_Item(uint8_t row, uint8_t icon=0, FSTR_P const flabel1=nullptr, FSTR_P const flabel2=nullptr, bool more=false, bool centered=false);
|
|
static void Draw_Menu(uint8_t menu, uint8_t select=0, uint8_t scroll=0);
|
|
static void Redraw_Menu(bool lastprocess=true, bool lastselection=false, bool lastmenu=false);
|
|
static void Redraw_Screen();
|
|
|
|
static void Main_Menu_Icons();
|
|
static void Draw_Main_Menu(uint8_t select=0);
|
|
static void Print_Screen_Icons();
|
|
static void Draw_Print_Screen();
|
|
static void Draw_Print_Filename(const bool reset=false);
|
|
static void Draw_Print_ProgressBar();
|
|
#if ENABLED(USE_M73_REMAINING_TIME)
|
|
static void Draw_Print_ProgressRemain();
|
|
#endif
|
|
static void Draw_Print_ProgressElapsed();
|
|
static void Draw_PrintDone_confirm();
|
|
static void Draw_SD_Item(uint8_t item, uint8_t row);
|
|
static void Draw_SD_List(bool removed=false);
|
|
static void Draw_Status_Area(bool icons=false);
|
|
static void Draw_Popup(FSTR_P const line1, FSTR_P const line2, FSTR_P const line3, uint8_t mode, uint8_t icon=0);
|
|
static void Popup_Select();
|
|
static void Update_Status_Bar(bool refresh=false);
|
|
|
|
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
|
static void Draw_Bed_Mesh(int16_t selected = -1, uint8_t gridline_width = 1, uint16_t padding_x = 8, uint16_t padding_y_top = 40 + 53 - 7);
|
|
static void Set_Mesh_Viewer_Status();
|
|
#endif
|
|
|
|
static FSTR_P Get_Menu_Title(uint8_t menu);
|
|
static uint8_t Get_Menu_Size(uint8_t menu);
|
|
static void Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw=true);
|
|
|
|
static void Popup_Handler(PopupID popupid, bool option=false);
|
|
static void Confirm_Handler(PopupID popupid, bool option=false);
|
|
|
|
static void Main_Menu_Control();
|
|
static void Menu_Control();
|
|
static void Value_Control();
|
|
static void Option_Control();
|
|
static void File_Control();
|
|
static void Print_Screen_Control();
|
|
static void Popup_Control();
|
|
static void Confirm_Control();
|
|
|
|
static void Setup_Value(float value, float min, float max, float unit, uint8_t type);
|
|
static void Modify_Value(float &value, float min, float max, float unit, void (*f)()=nullptr);
|
|
static void Modify_Value(uint8_t &value, float min, float max, float unit, void (*f)()=nullptr);
|
|
static void Modify_Value(uint16_t &value, float min, float max, float unit, void (*f)()=nullptr);
|
|
static void Modify_Value(int16_t &value, float min, float max, float unit, void (*f)()=nullptr);
|
|
static void Modify_Value(uint32_t &value, float min, float max, float unit, void (*f)()=nullptr);
|
|
static void Modify_Value(int8_t &value, float min, float max, float unit, void (*f)()=nullptr);
|
|
static void Modify_Option(uint8_t value, const char * const * options, uint8_t max);
|
|
|
|
static void Update_Status(const char * const text);
|
|
static void Update_Status(FSTR_P text);
|
|
static void Start_Print(bool sd);
|
|
static void Stop_Print();
|
|
static void Update();
|
|
static void State_Update();
|
|
static void Screen_Update();
|
|
static void AudioFeedback(const bool success=true);
|
|
static void Save_Settings(char *buff);
|
|
static void Load_Settings(const char *buff);
|
|
static void Reset_Settings();
|
|
static void PreheatBefore();
|
|
|
|
#if HAS_ESDIAG
|
|
static void DWIN_EndstopsDiag();
|
|
#endif
|
|
#if HAS_LOCKSCREEN
|
|
static void DWIN_LockScreen();
|
|
static void DWIN_UnLockScreen();
|
|
static void HMI_LockScreen();
|
|
#endif
|
|
static void DWIN_RebootScreen();
|
|
static void RebootPrinter();
|
|
static void Update_Print_Filename(const char * const text);
|
|
#if ENABLED(LED_CONTROL_MENU, HAS_COLOR_LEDS)
|
|
static void ApplyLEDColor();
|
|
#endif
|
|
|
|
#if HAS_HOSTACTION_MENUS
|
|
static void Draw_String(char * string, uint8_t row, bool selected=false, bool below=false);
|
|
static const uint64_t Encode_String(const char * string);
|
|
static void Decode_String(uint64_t num, char * string);
|
|
static void Draw_Keyboard(bool restrict, bool numeric, uint8_t selected=0, bool uppercase=false, bool lock=false);
|
|
static void Draw_Keys(uint8_t index, bool selected, bool uppercase=false, bool lock=false);
|
|
static void Modify_String(char * string, uint8_t maxlength, bool restrict);
|
|
static void Keyboard_Control();
|
|
#endif
|
|
|
|
#if HAS_PIDPLOT
|
|
static void DWIN_Draw_PIDPopup(const pidresult_t pidresult);
|
|
#endif
|
|
|
|
#if HAS_PID_HEATING
|
|
static void DWIN_PidTuning(const pidresult_t pidresult);
|
|
#endif
|
|
};
|
|
|
|
extern CrealityDWINClass CrealityDWIN;
|