Update and fix DGUS (#16317)
This commit is contained in:
		
							parent
							
								
									7f87a044cd
								
							
						
					
					
						commit
						e593da1c23
					
				| @ -2030,9 +2030,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -109,6 +109,19 @@ typedef int8_t pin_t; | ||||
|   #endif | ||||
| #endif | ||||
| 
 | ||||
| #ifdef DGUS_SERIAL_PORT | ||||
|   #if !WITHIN(DGUS_SERIAL_PORT, -1, 3) | ||||
|     #error "DGUS_SERIAL_PORT must be from -1 to 3. Please update your configuration." | ||||
|   #elif DGUS_SERIAL_PORT == SERIAL_PORT | ||||
|     #error "DGUS_SERIAL_PORT must be different than SERIAL_PORT. Please update your configuration." | ||||
|   #elif defined(SERIAL_PORT_2) && DGUS_SERIAL_PORT == SERIAL_PORT_2 | ||||
|     #error "DGUS_SERIAL_PORT must be different than SERIAL_PORT_2. Please update your configuration." | ||||
|   #endif | ||||
|   #define DGUS_SERIAL internalDgusSerial | ||||
| 
 | ||||
|   #define DGUS_SERIAL_GET_TX_BUFFER_FREE DGUS_SERIAL.get_tx_buffer_free | ||||
| #endif | ||||
| 
 | ||||
| // ------------------------
 | ||||
| // Public functions
 | ||||
| // ------------------------
 | ||||
|  | ||||
| @ -757,6 +757,33 @@ | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
| #ifdef DGUS_SERIAL_PORT | ||||
| 
 | ||||
|   template<typename Cfg> | ||||
|   typename MarlinSerial<Cfg>::ring_buffer_pos_t MarlinSerial<Cfg>::get_tx_buffer_free() { | ||||
|     const ring_buffer_pos_t t = tx_buffer.tail,  // next byte to send.
 | ||||
|                             h = tx_buffer.head;  // next pos for queue.
 | ||||
|     int ret = t - h - 1; | ||||
|     if (ret < 0) ret += Cfg::TX_SIZE + 1; | ||||
|     return ret; | ||||
|   } | ||||
| 
 | ||||
|   ISR(SERIAL_REGNAME(USART,DGUS_SERIAL_PORT,_RX_vect)) { | ||||
|     MarlinSerial<MarlinInternalSerialCfg<DGUS_SERIAL_PORT>>::store_rxd_char(); | ||||
|   } | ||||
| 
 | ||||
|   ISR(SERIAL_REGNAME(USART,DGUS_SERIAL_PORT,_UDRE_vect)) { | ||||
|     MarlinSerial<MarlinInternalSerialCfg<DGUS_SERIAL_PORT>>::_tx_udr_empty_irq(); | ||||
|   } | ||||
| 
 | ||||
|   // Preinstantiate
 | ||||
|   template class MarlinSerial<MarlinInternalSerialCfg<DGUS_SERIAL_PORT>>; | ||||
| 
 | ||||
|   // Instantiate
 | ||||
|   MarlinSerial<MarlinInternalSerialCfg<DGUS_SERIAL_PORT>> internalDgusSerial; | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
| // For AT90USB targets use the UART for BT interfacing
 | ||||
| #if defined(USBCON) && ENABLED(BLUETOOTH) | ||||
|   HardwareSerial bluetoothSerial; | ||||
|  | ||||
| @ -217,6 +217,9 @@ | ||||
|       static ring_buffer_pos_t available(); | ||||
|       static void write(const uint8_t c); | ||||
|       static void flushTX(); | ||||
|       #ifdef DGUS_SERIAL_PORT | ||||
|         static ring_buffer_pos_t get_tx_buffer_free(); | ||||
|       #endif | ||||
| 
 | ||||
|       FORCE_INLINE static uint8_t dropped() { return Cfg::DROPPED_RX ? rx_dropped_bytes : 0; } | ||||
|       FORCE_INLINE static uint8_t buffer_overruns() { return Cfg::RX_OVERRUNS ? rx_buffer_overruns : 0; } | ||||
| @ -292,6 +295,23 @@ | ||||
|   extern MarlinSerial<MarlinInternalSerialCfg<INTERNAL_SERIAL_PORT>> internalSerial; | ||||
| #endif | ||||
| 
 | ||||
| #ifdef DGUS_SERIAL_PORT | ||||
|   template <uint8_t serial> | ||||
|   struct MarlinInternalSerialCfg { | ||||
|     static constexpr int PORT               = serial; | ||||
|     static constexpr unsigned int RX_SIZE   = 128; | ||||
|     static constexpr unsigned int TX_SIZE   = 48; | ||||
|     static constexpr bool XONOFF            = false; | ||||
|     static constexpr bool EMERGENCYPARSER   = false; | ||||
|     static constexpr bool DROPPED_RX        = false; | ||||
|     static constexpr bool RX_OVERRUNS       = bDGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS; | ||||
|     static constexpr bool RX_FRAMING_ERRORS = false; | ||||
|     static constexpr bool MAX_RX_QUEUED     = false; | ||||
|   }; | ||||
| 
 | ||||
|   extern MarlinSerial<MarlinInternalSerialCfg<DGUS_SERIAL_PORT>> internalDgusSerial; | ||||
| #endif | ||||
| 
 | ||||
| // Use the UART for Bluetooth in AT90USB configurations
 | ||||
| #if defined(USBCON) && ENABLED(BLUETOOTH) | ||||
|   extern HardwareSerial bluetoothSerial; | ||||
|  | ||||
| @ -74,6 +74,27 @@ | ||||
|   #define NUM_SERIAL 1 | ||||
| #endif | ||||
| 
 | ||||
| #ifdef DGUS_SERIAL_PORT | ||||
|   #if DGUS_SERIAL_PORT == SERIAL_PORT | ||||
|     #error "DGUS_SERIAL_PORT must be different from SERIAL_PORT. Please update your configuration." | ||||
|   #elif defined(SERIAL_PORT_2) && DGUS_SERIAL_PORT == SERIAL_PORT_2 | ||||
|     #error "DGUS_SERIAL_PORT must be different than SERIAL_PORT_2. Please update your configuration." | ||||
|   #elif DGUS_SERIAL_PORT == -1 | ||||
|     #define DGUS_SERIAL internalDgusSerial | ||||
|   #elif DGUS_SERIAL_PORT == 0 | ||||
|     #define DGUS_SERIAL Serial | ||||
|   #elif DGUS_SERIAL_PORT == 1 | ||||
|     #define DGUS_SERIAL Serial1 | ||||
|   #elif DGUS_SERIAL_PORT == 2 | ||||
|     #define DGUS_SERIAL Serial2 | ||||
|   #elif DGUS_SERIAL_PORT == 3 | ||||
|     #define DGUS_SERIAL Serial3 | ||||
|   #else | ||||
|     #error "DGUS_SERIAL_PORT must be from -1 to 3. Please update your configuration." | ||||
|   #endif | ||||
| #endif | ||||
| 
 | ||||
| 
 | ||||
| #include "MarlinSerial.h" | ||||
| #include "MarlinSerialUSB.h" | ||||
| 
 | ||||
|  | ||||
| @ -96,6 +96,26 @@ extern "C" volatile uint32_t _millis; | ||||
|   #define NUM_SERIAL 1 | ||||
| #endif | ||||
| 
 | ||||
| #ifdef DGUS_SERIAL_PORT | ||||
|   #if DGUS_SERIAL_PORT == SERIAL_PORT | ||||
|     #error "DGUS_SERIAL_PORT must be different than SERIAL_PORT. Please update your configuration." | ||||
|   #elif defined(SERIAL_PORT_2) && DGUS_SERIAL_PORT == SERIAL_PORT_2 | ||||
|     #error "DGUS_SERIAL_PORT must be different than SERIAL_PORT_2. Please update your configuration." | ||||
|   #elif DGUS_SERIAL_PORT == -1 | ||||
|     #define DGUS_SERIAL UsbSerial | ||||
|   #elif DGUS_SERIAL_PORT == 0 | ||||
|     #define DGUS_SERIAL MSerial | ||||
|   #elif DGUS_SERIAL_PORT == 1 | ||||
|     #define DGUS_SERIAL MSerial1 | ||||
|   #elif DGUS_SERIAL_PORT == 2 | ||||
|     #define DGUS_SERIAL MSerial2 | ||||
|   #elif DGUS_SERIAL_PORT == 3 | ||||
|     #define DGUS_SERIAL MSerial3 | ||||
|   #else | ||||
|     #error "DGUS_SERIAL_PORT must be from -1 to 3. Please update your configuration." | ||||
|   #endif | ||||
| #endif | ||||
| 
 | ||||
| //
 | ||||
| // Interrupts
 | ||||
| //
 | ||||
|  | ||||
| @ -71,6 +71,26 @@ | ||||
|     #define NUM_SERIAL 1 | ||||
|   #endif | ||||
| 
 | ||||
|   #ifdef DGUS_SERIAL_PORT | ||||
|     #if DGUS_SERIAL_PORT == SERIAL_PORT | ||||
|       #error "DGUS_SERIAL_PORT must be different than SERIAL_PORT. Please update your configuration." | ||||
|     #elif defined(SERIAL_PORT_2) && DGUS_SERIAL_PORT == SERIAL_PORT_2 | ||||
|       #error "DGUS_SERIAL_PORT must be different than SERIAL_PORT_2. Please update your configuration." | ||||
|     #elif DGUS_SERIAL_PORT == -1 | ||||
|       #define DGUS_SERIAL Serial | ||||
|     #elif DGUS_SERIAL_PORT == 0 | ||||
|       #define DGUS_SERIAL Serial1 | ||||
|     #elif DGUS_SERIAL_PORT == 1 | ||||
|       #define DGUS_SERIAL Serial2 | ||||
|     #elif DGUS_SERIAL_PORT == 2 | ||||
|       #define DGUS_SERIAL Serial3 | ||||
|     #elif DGUS_SERIAL_PORT == 2 | ||||
|       #define DGUS_SERIAL Serial4 | ||||
|     #else | ||||
|       #error "DGUS_SERIAL_PORT must be from -1 to 3. Please update your configuration." | ||||
|     #endif | ||||
|   #endif | ||||
| 
 | ||||
| #endif // ADAFRUIT_GRAND_CENTRAL_M4
 | ||||
| 
 | ||||
| typedef int8_t pin_t; | ||||
|  | ||||
| @ -90,6 +90,34 @@ | ||||
|   #define NUM_SERIAL 1 | ||||
| #endif | ||||
| 
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #if DGUS_SERIAL_PORT == 0 | ||||
|     #error "DGUS_SERIAL_PORT cannot be 0. (Port 0 does not exist.) Please update your configuration." | ||||
|   #elif DGUS_SERIAL_PORT == SERIAL_PORT | ||||
|     #error "DGUS_SERIAL_PORT must be different than SERIAL_PORT. Please update your configuration." | ||||
|   #elif defined(SERIAL_PORT_2) && DGUS_SERIAL_PORT == SERIAL_PORT_2 | ||||
|     #error "DGUS_SERIAL_PORT must be different than SERIAL_PORT_2. Please update your configuration." | ||||
|   #elif DGUS_SERIAL_PORT == -1 | ||||
|     #define DGUS_SERIAL SerialUSB | ||||
|   #elif DGUS_SERIAL_PORT == 1 | ||||
|     #define DGUS_SERIAL Serial1 | ||||
|   #elif DGUS_SERIAL_PORT == 2 | ||||
|     #define DGUS_SERIAL Serial2 | ||||
|   #elif DGUS_SERIAL_PORT == 3 | ||||
|     #define DGUS_SERIAL Serial3 | ||||
|   #elif DGUS_SERIAL_PORT == 4 | ||||
|     #define DGUS_SERIAL Serial4 | ||||
|   #elif DGUS_SERIAL_PORT == 5 | ||||
|     #define DGUS_SERIAL Serial5 | ||||
|   #elif DGUS_SERIAL_PORT == 6 | ||||
|     #define DGUS_SERIAL Serial6 | ||||
|   #else | ||||
|     #error "DGUS_SERIAL_PORT must be from -1 to 6. Please update your configuration." | ||||
|   #endif | ||||
| 
 | ||||
|   #define DGUS_SERIAL_GET_TX_BUFFER_FREE DGUS_SERIAL.availableForWrite | ||||
| #endif | ||||
| 
 | ||||
| #include "timers.h" | ||||
| 
 | ||||
| /**
 | ||||
|  | ||||
| @ -121,6 +121,31 @@ | ||||
|   #define NUM_SERIAL 1 | ||||
| #endif | ||||
| 
 | ||||
| #ifdef DGUS_SERIAL | ||||
|   #if DGUS_SERIAL_PORT == 0 | ||||
|     #error "DGUS_SERIAL_PORT cannot be 0. (Port 0 does not exist.) Please update your configuration." | ||||
|   #elif DGUS_SERIAL_PORT == SERIAL_PORT | ||||
|     #error "DGUS_SERIAL_PORT must be different than SERIAL_PORT. Please update your configuration." | ||||
|   #elif defined(SERIAL_PORT_2) && DGUS_SERIAL_PORT == SERIAL_PORT_2 | ||||
|     #error "DGUS_SERIAL_PORT must be different than SERIAL_PORT_2. Please update your configuration." | ||||
|   #elif DGUS_SERIAL_PORT == -1 | ||||
|     #define DGUS_SERIAL UsbSerial | ||||
|   #elif DGUS_SERIAL_PORT == 1 | ||||
|     #define DGUS_SERIAL MSerial1 | ||||
|   #elif DGUS_SERIAL_PORT == 2 | ||||
|     #define DGUS_SERIAL MSerial2 | ||||
|   #elif DGUS_SERIAL_PORT == 3 | ||||
|     #define DGUS_SERIAL MSerial3 | ||||
|   #elif DGUS_SERIAL_PORT == 4 | ||||
|     #define DGUS_SERIAL MSerial4 | ||||
|   #elif DGUS_SERIAL_PORT == 5 | ||||
|     #define DGUS_SERIAL MSerial5 | ||||
|   #else | ||||
|     #error "DGUS_SERIAL_PORT must be from -1 to 5. Please update your configuration." | ||||
|   #endif | ||||
| #endif | ||||
| 
 | ||||
| 
 | ||||
| // Set interrupt grouping for this MCU
 | ||||
| void HAL_init(); | ||||
| #define HAL_IDLETASK 1 | ||||
|  | ||||
| @ -94,6 +94,32 @@ | ||||
|   #define NUM_SERIAL 1 | ||||
| #endif | ||||
| 
 | ||||
| #ifdef DGUS_SERIAL_PORT | ||||
|   #if defined(STM32F4) && DGUS_SERIAL_PORT == 0 | ||||
|     #error "DGUS_SERIAL_PORT cannot be 0. (Port 0 does not exist.) Please update your configuration." | ||||
|   #elif DGUS_SERIAL_PORT == SERIAL_PORT | ||||
|     #error "DGUS_SERIAL_PORT must be different than SERIAL_PORT. Please update your configuration." | ||||
|   #elif defined(SERIAL_PORT_2) && DGUS_SERIAL_PORT == SERIAL_PORT_2 | ||||
|     #error "DGUS_SERIAL_PORT must be different than SERIAL_PORT_2. Please update your configuration." | ||||
|   #elif DGUS_SERIAL_PORT == -1 | ||||
|     #define DGUS_SERIAL SerialUSB | ||||
|   #elif DGUS_SERIAL_PORT == 1 | ||||
|     #define DGUS_SERIAL SerialUART1 | ||||
|   #elif DGUS_SERIAL_PORT == 2 | ||||
|     #define DGUS_SERIAL SerialUART2 | ||||
|   #elif DGUS_SERIAL_PORT == 3 | ||||
|     #define DGUS_SERIAL SerialUART3 | ||||
|   #elif DGUS_SERIAL_PORT == 4 | ||||
|     #define DGUS_SERIAL SerialUART4 | ||||
|   #elif DGUS_SERIAL_PORT == 5 | ||||
|     #define DGUS_SERIAL SerialUART5 | ||||
|   #elif DGUS_SERIAL_PORT == 6 | ||||
|     #define DGUS_SERIAL SerialUART6 | ||||
|   #else | ||||
|     #error "DGUS_SERIAL_PORT must be from -1 to 6. Please update your configuration." | ||||
|   #endif | ||||
| #endif | ||||
| 
 | ||||
| /**
 | ||||
|  * TODO: review this to return 1 for pins that are not analog input | ||||
|  */ | ||||
|  | ||||
| @ -28,6 +28,13 @@ | ||||
| #include "../../inc/MarlinConfigPre.h" | ||||
| 
 | ||||
| constexpr bool | ||||
|   #if HAS_DGUS_LCD | ||||
|     bDGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS = (false | ||||
|       #if ENABLED(DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS) | ||||
|         || true | ||||
|       #endif | ||||
|     ), | ||||
|   #endif | ||||
|   bSERIAL_XON_XOFF = (false | ||||
|     #if ENABLED(SERIAL_XON_XOFF) | ||||
|       || true | ||||
|  | ||||
| @ -28,6 +28,9 @@ | ||||
| #include "../../../feature/power_loss_recovery.h" | ||||
| #include "../../../module/motion.h" | ||||
| #include "../../../lcd/ultralcd.h" | ||||
| #if ENABLED(EXTENSIBLE_UI) | ||||
|   #include "../../../lcd/extensible_ui/ui_api.h" | ||||
| #endif | ||||
| 
 | ||||
| #define DEBUG_OUT ENABLED(DEBUG_POWER_LOSS_RECOVERY) | ||||
| #include "../../../core/debug_out.h" | ||||
| @ -55,6 +58,8 @@ void GcodeSuite::M1000() { | ||||
|     if (parser.seen('S')) { | ||||
|       #if HAS_LCD_MENU | ||||
|         ui.goto_screen(menu_job_recovery); | ||||
|       #elif ENABLED(EXTENSIBLE_UI)         | ||||
|         ExtUI::OnPowerLossResume(); | ||||
|       #else | ||||
|         SERIAL_ECHO_MSG("Resume requires LCD."); | ||||
|       #endif | ||||
|  | ||||
| @ -27,6 +27,10 @@ | ||||
| #include "../gcode.h" | ||||
| #include "../../module/temperature.h" | ||||
| 
 | ||||
| #if ENABLED(EXTENSIBLE_UI) | ||||
|   #include "../../lcd/extensible_ui/ui_api.h" | ||||
| #endif | ||||
| 
 | ||||
| /**
 | ||||
|  * M303: PID relay autotune | ||||
|  * | ||||
| @ -49,6 +53,9 @@ void GcodeSuite::M303() { | ||||
|   const heater_ind_t e = (heater_ind_t)parser.intval('E'); | ||||
|   if (!WITHIN(e, SI, EI)) { | ||||
|     SERIAL_ECHOLNPGM(MSG_PID_BAD_EXTRUDER_NUM); | ||||
|     #if ENABLED(EXTENSIBLE_UI) | ||||
|       ExtUI::OnPidTuning(ExtUI::result_t::PID_BAD_EXTRUDER_NUM); | ||||
|     #endif | ||||
|     return; | ||||
|   } | ||||
| 
 | ||||
|  | ||||
| @ -359,6 +359,7 @@ | ||||
| #define HAS_CHARACTER_LCD   (HAS_SPI_LCD && !HAS_GRAPHICAL_LCD) | ||||
| #define HAS_LCD_MENU        (ENABLED(ULTIPANEL) && DISABLED(NO_LCD_MENUS)) | ||||
| #define HAS_ADC_BUTTONS      ENABLED(ADC_KEYPAD) | ||||
| #define HAS_DGUS_LCD         ANY(DGUS_LCD_UI_ORIGIN, DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
| 
 | ||||
| /**
 | ||||
|  * Extruders have some combination of stepper motors and hotends | ||||
|  | ||||
| @ -424,6 +424,8 @@ | ||||
|   #error "FILAMENT_UNLOAD_DELAY is now FILAMENT_UNLOAD_PURGE_DELAY. Please update Configuration_adv.h." | ||||
| #elif defined(HOME_USING_SPREADCYCLE) | ||||
|   #error "HOME_USING_SPREADCYCLE is now obsolete. Please remove it from Configuration_adv.h." | ||||
| #elif defined(DGUS_LCD) | ||||
|   #error "DGUS_LCD is now DGUS_LCD_UI_(ORIGIN|FYSETC|HIPRECY). Please update your configuration." | ||||
| #endif | ||||
| 
 | ||||
| /**
 | ||||
| @ -1910,7 +1912,9 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS | ||||
|   + ENABLED(MKS_12864OLED_SSD1306) \ | ||||
|   + ENABLED(U8GLIB_SH1106_EINSTART) \ | ||||
|   + ENABLED(OVERLORD_OLED) \ | ||||
|   + ENABLED(DGUS_LCD) \ | ||||
|   + ENABLED(DGUS_LCD_UI_ORIGIN) \ | ||||
|   + ENABLED(DGUS_LCD_UI_FYSETC) \ | ||||
|   + ENABLED(DGUS_LCD_UI_HIPRECY) \ | ||||
|   + ENABLED(MALYAN_LCD) \ | ||||
|   + ENABLED(TOUCH_UI_FTDI_EVE) \ | ||||
|   + ENABLED(FSMC_GRAPHICAL_TFT) | ||||
|  | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -116,10 +116,52 @@ public: | ||||
|   static void HandleTemperatureChanged(DGUS_VP_Variable &var, void *val_ptr); | ||||
|   // Hook for "Change Flowrate"
 | ||||
|   static void HandleFlowRateChanged(DGUS_VP_Variable &var, void *val_ptr); | ||||
|   #if ENABLED(DUGS_UI_MOVE_DIS_OPTION) | ||||
|     // Hook for manual move option
 | ||||
|     static void HandleManualMoveOption(DGUS_VP_Variable &var, void *val_ptr); | ||||
|   #endif | ||||
|   // Hook for manual move.
 | ||||
|   static void HandleManualMove(DGUS_VP_Variable &var, void *val_ptr); | ||||
|   // Hook for manual extrude.
 | ||||
|   static void HandleManualExtrude(DGUS_VP_Variable &var, void *val_ptr); | ||||
|   // Hook for motor lock and unlook
 | ||||
|   static void HandleMotorLockUnlock(DGUS_VP_Variable &var, void *val_ptr); | ||||
|   #if ENABLED(POWER_LOSS_RECOVERY) | ||||
|     // Hook for power loss recovery.
 | ||||
|     static void HandlePowerLossRecovery(DGUS_VP_Variable &var, void *val_ptr); | ||||
|   #endif | ||||
|   // Hook for settings
 | ||||
|   static void HandleSettings(DGUS_VP_Variable &var, void *val_ptr); | ||||
|   static void HandleStepPerMMChanged(DGUS_VP_Variable &var, void *val_ptr); | ||||
|   static void HandleStepPerMMExtruderChanged(DGUS_VP_Variable &var, void *val_ptr); | ||||
|   #if HAS_PID_HEATING | ||||
|   	// Hook for "Change this temperature PID para"
 | ||||
|     static void HandleTemperaturePIDChanged(DGUS_VP_Variable &var, void *val_ptr); | ||||
|     // Hook for PID autotune
 | ||||
|     static void HandlePIDAutotune(DGUS_VP_Variable &var, void *val_ptr); | ||||
|   #endif | ||||
|   // Hook for "Change probe offset z"
 | ||||
|   static void HandleProbeOffsetZChanged(DGUS_VP_Variable &var, void *val_ptr); | ||||
|   #if ENABLED(BABYSTEPPING) | ||||
|     // Hook for live z adjust action
 | ||||
|     static void HandleLiveAdjustZ(DGUS_VP_Variable &var, void *val_ptr); | ||||
|   #endif | ||||
|   #if FAN_COUNT > 0 | ||||
|     // Hook for fan control
 | ||||
|     static void HandleFanControl(DGUS_VP_Variable &var, void *val_ptr); | ||||
|   #endif | ||||
|   // Hook for heater control
 | ||||
|   static void HandleHeaterControl(DGUS_VP_Variable &var, void *val_ptr); | ||||
|   #if ENABLED(DGUS_PREHEAT_UI) | ||||
|     // Hook for preheat
 | ||||
|     static void HandlePreheat(DGUS_VP_Variable &var, void *val_ptr); | ||||
|   #endif | ||||
|   #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|     // Hook for filament load and unload filament option
 | ||||
|     static void HandleFilamentOption(DGUS_VP_Variable &var, void *val_ptr); | ||||
|     // Hook for filament load and unload
 | ||||
|     static void HandleFilamentLoadUnload(DGUS_VP_Variable &var); | ||||
|   #endif | ||||
| 
 | ||||
|   #if ENABLED(SDSUPPORT) | ||||
|     // Callback for VP "Display wants to change screen when there is a SD card"
 | ||||
| @ -134,6 +176,8 @@ public: | ||||
|     static void DGUSLCD_SD_ResumePauseAbort(DGUS_VP_Variable &var, void *val_ptr); | ||||
|     /// User confirmed the abort action
 | ||||
|     static void DGUSLCD_SD_ReallyAbort(DGUS_VP_Variable &var, void *val_ptr); | ||||
|     /// User hit the tune button
 | ||||
|     static void DGUSLCD_SD_PrintTune(DGUS_VP_Variable &var, void *val_ptr); | ||||
|     /// Send a single filename to the display.
 | ||||
|     static void DGUSLCD_SD_SendFilename(DGUS_VP_Variable &var); | ||||
|     /// Marlin informed us that a new SD has been inserted.
 | ||||
| @ -164,8 +208,20 @@ public: | ||||
|   static void DGUSLCD_SendWordValueToDisplay(DGUS_VP_Variable &var); | ||||
|   static void DGUSLCD_SendStringToDisplay(DGUS_VP_Variable &var); | ||||
|   static void DGUSLCD_SendStringToDisplayPGM(DGUS_VP_Variable &var); | ||||
|   static void DGUSLCD_SendTemperaturePID(DGUS_VP_Variable &var); | ||||
|   static void DGUSLCD_SendPercentageToDisplay(DGUS_VP_Variable &var); | ||||
|   static void DGUSLCD_SendPrintTimeToDisplay(DGUS_VP_Variable &var); | ||||
|   #if ENABLED(PRINTCOUNTER) | ||||
|     static void DGUSLCD_SendPrintAccTimeToDisplay(DGUS_VP_Variable &var); | ||||
|     static void DGUSLCD_SendPrintsTotalToDisplay(DGUS_VP_Variable &var); | ||||
|   #endif | ||||
|   #if FAN_COUNT > 0 | ||||
|     static void DGUSLCD_SendFanStatusToDisplay(DGUS_VP_Variable &var); | ||||
|   #endif | ||||
|   static void DGUSLCD_SendHeaterStatusToDisplay(DGUS_VP_Variable &var); | ||||
|   #if ENABLED(DGUS_UI_WAITING) | ||||
|     static void DGUSLCD_SendWaitingStatusToDisplay(DGUS_VP_Variable &var); | ||||
|   #endif | ||||
| 
 | ||||
|   /// Send a value from 0..100 to a variable with a range from 0..255
 | ||||
|   static void DGUSLCD_PercentageToUint8(DGUS_VP_Variable &var, void *val_ptr); | ||||
| @ -199,6 +255,25 @@ public: | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   /// Send a float value to the display.
 | ||||
|   /// Display will get a 2-byte integer scaled to the number of digits:
 | ||||
|   /// Tell the display the number of digits and it cheats by displaying a dot between...
 | ||||
|   template<unsigned int decimals> | ||||
|   static void DGUSLCD_SendFloatAsIntValueToDisplay(DGUS_VP_Variable &var) { | ||||
|     if (var.memadr) { | ||||
|       float f = *(float *)var.memadr; | ||||
|       DEBUG_ECHOLNPAIR_F(" >> ", f, 6); | ||||
|       f *= cpow(10, decimals); | ||||
|       union { int16_t i; char lb[2]; } endian; | ||||
| 
 | ||||
|       char tmp[2]; | ||||
|       endian.i = f; | ||||
|       tmp[0] = endian.lb[1]; | ||||
|       tmp[1] = endian.lb[0]; | ||||
|       dgusdisplay.WriteVariable(var.VP, tmp, 2); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   /// Force an update of all VP on the current screen.
 | ||||
|   static inline void ForceCompleteUpdate() { update_ptr = 0; ScreenComplete = false; } | ||||
|   /// Has all VPs sent to the screen
 | ||||
|  | ||||
| @ -38,155 +38,13 @@ struct VPMapping { | ||||
| 
 | ||||
| extern const struct VPMapping VPMap[]; | ||||
| 
 | ||||
| enum DGUSLCD_Screens : uint8_t { | ||||
|   DGUSLCD_SCREEN_BOOT = 0, | ||||
|   DGUSLCD_SCREEN_MAIN = 10, | ||||
|   DGUSLCD_SCREEN_TEMPERATURE = 20, | ||||
|   DGUSLCD_SCREEN_STATUS = 30, | ||||
|   DGUSLCD_SCREEN_STATUS2 = 32, | ||||
|   DGUSLCD_SCREEN_MANUALMOVE = 40, | ||||
|   DGUSLCD_SCREEN_MANUALEXTRUDE=42, | ||||
|   DGUSLCD_SCREEN_FANANDFEEDRATE = 44, | ||||
|   DGUSLCD_SCREEN_FLOWRATES = 46, | ||||
|   DGUSLCD_SCREEN_SDFILELIST = 50, | ||||
|   DGUSLCD_SCREEN_SDPRINTMANIPULATION = 52, | ||||
|   DGUSLCD_SCREEN_CONFIRM = 240, | ||||
|   DGUSLCD_SCREEN_KILL = 250, ///< Kill Screen. Must always be 250 (to be able to display "Error wrong LCD Version")
 | ||||
|   DGUSLCD_SCREEN_POPUP = 252,  ///< special target, popup screen will also return this code to say "return to previous screen"
 | ||||
|   DGUSLDC_SCREEN_UNUSED = 255 | ||||
| }; | ||||
| 
 | ||||
| // Display Memory layout used (T5UID)
 | ||||
| // Except system variables this is arbitrary, just to organize stuff....
 | ||||
| 
 | ||||
| // 0x0000 .. 0x0FFF  -- System variables and reserved by the display
 | ||||
| // 0x1000 .. 0x1FFF  -- Variables to never change location, regardless of UI Version
 | ||||
| // 0x2000 .. 0x2FFF  -- Controls (VPs that will trigger some action)
 | ||||
| // 0x3000 .. 0x4FFF  -- Marlin Data to be displayed
 | ||||
| // 0x5000 ..         -- SPs (if we want to modify display elements, e.g change color or like) -- currently unused
 | ||||
| 
 | ||||
| // As there is plenty of space (at least most displays have >8k RAM), we do not pack them too tight,
 | ||||
| // so that we can keep variables nicely together in the address space.
 | ||||
| 
 | ||||
| // UI Version always on 0x1000...0x1002 so that the firmware can check this and bail out.
 | ||||
| constexpr uint16_t VP_UI_VERSION_MAJOR = 0x1000;  // Major -- incremented when incompatible
 | ||||
| constexpr uint16_t VP_UI_VERSION_MINOR = 0x1001;  // Minor -- incremented on new features, but compatible
 | ||||
| constexpr uint16_t VP_UI_VERSION_PATCH = 0x1002;  // Patch -- fixed which do not change functionality.
 | ||||
| constexpr uint16_t VP_UI_FLAVOUR       = 0x1010;  // lets reserve 16 bytes here to determine if UI is suitable for this Marlin. tbd.
 | ||||
| 
 | ||||
| // Storage space for the Killscreen messages. 0x1100 - 0x1200 . Reused for the popup.
 | ||||
| constexpr uint16_t VP_MSGSTR1 = 0x1100; | ||||
| constexpr uint8_t VP_MSGSTR1_LEN = 0x20;  // might be more place for it...
 | ||||
| constexpr uint16_t VP_MSGSTR2 = 0x1140; | ||||
| constexpr uint8_t VP_MSGSTR2_LEN = 0x20; | ||||
| constexpr uint16_t VP_MSGSTR3 = 0x1180; | ||||
| constexpr uint8_t VP_MSGSTR3_LEN = 0x20; | ||||
| constexpr uint16_t VP_MSGSTR4 = 0x11C0; | ||||
| constexpr uint8_t VP_MSGSTR4_LEN = 0x20; | ||||
| 
 | ||||
| // Screenchange request for screens that only make sense when printer is idle.
 | ||||
| // e.g movement is only allowed if printer is not printing.
 | ||||
| // Marlin must confirm by setting the screen manually.
 | ||||
| constexpr uint16_t VP_SCREENCHANGE_ASK = 0x2000; | ||||
| constexpr uint16_t VP_SCREENCHANGE = 0x2001;   // Key-Return button to new menu pressed. Data contains target screen in low byte and info in high byte.
 | ||||
| constexpr uint16_t VP_TEMP_ALL_OFF = 0x2002;   // Turn all heaters off. Value arbitrary ;)=
 | ||||
| constexpr uint16_t VP_SCREENCHANGE_WHENSD = 0x2003; // "Print" Button touched -- go only there if there is an SD Card.
 | ||||
| 
 | ||||
| constexpr uint16_t VP_CONFIRMED = 0x2010; // OK on confirm screen.
 | ||||
| 
 | ||||
| // Buttons on the SD-Card File listing.
 | ||||
| constexpr uint16_t VP_SD_ScrollEvent = 0x2020; // Data: 0 for "up a directory", numbers are the amount to scroll, e.g -1 one up, 1 one down
 | ||||
| constexpr uint16_t VP_SD_FileSelected = 0x2022; // Number of file field selected.
 | ||||
| constexpr uint16_t VP_SD_FileSelectConfirm = 0x2024; // (This is a virtual VP and emulated by the Confirm Screen when a file has been confirmed)
 | ||||
| 
 | ||||
| constexpr uint16_t VP_SD_ResumePauseAbort = 0x2026; // Resume(Data=0), Pause(Data=1), Abort(Data=2) SD Card prints
 | ||||
| constexpr uint16_t VP_SD_AbortPrintConfirmed = 0x2028; // Abort print confirmation (virtual, will be injected by the confirm dialog)
 | ||||
| 
 | ||||
| // Controls for movement (we can't use the incremental / decremental feature of the display at this feature works only with 16 bit values
 | ||||
| // (which would limit us to 655.35mm, which is likely not a problem for common setups, but i don't want to rule out hangprinters support)
 | ||||
| // A word about the coding: The VP will be per axis and the return code will be an signed 16 bit value in 0.01 mm resolution, telling us
 | ||||
| // the relative travel amount t he user wants to do. So eg. if the display sends us VP=2100 with value 100, the user wants us to move X by +1 mm.
 | ||||
| constexpr uint16_t VP_MOVE_X = 0x2100; | ||||
| constexpr uint16_t VP_MOVE_Y = 0x2102; | ||||
| constexpr uint16_t VP_MOVE_Z = 0x2104; | ||||
| constexpr uint16_t VP_MOVE_E0 = 0x2110; | ||||
| constexpr uint16_t VP_MOVE_E1 = 0x2112; | ||||
| //constexpr uint16_t VP_MOVE_E2 = 0x2114;
 | ||||
| //constexpr uint16_t VP_MOVE_E3 = 0x2116;
 | ||||
| //constexpr uint16_t VP_MOVE_E4 = 0x2118;
 | ||||
| //constexpr uint16_t VP_MOVE_E5 = 0x211A;
 | ||||
| constexpr uint16_t VP_HOME_ALL = 0x2120; | ||||
| 
 | ||||
| // Firmware version on the boot screen.
 | ||||
| constexpr uint16_t VP_MARLIN_VERSION = 0x3000; | ||||
| constexpr uint8_t VP_MARLIN_VERSION_LEN = 16;   // there is more space on the display, if needed.
 | ||||
| 
 | ||||
| // Place for status messages.
 | ||||
| constexpr uint16_t VP_M117 = 0x3020; | ||||
| constexpr uint8_t VP_M117_LEN = 0x20; | ||||
| 
 | ||||
| // Temperatures.
 | ||||
| constexpr uint16_t VP_T_E0_Is = 0x3060;  // 4 Byte Integer
 | ||||
| constexpr uint16_t VP_T_E0_Set = 0x3062; // 2 Byte Integer
 | ||||
| constexpr uint16_t VP_T_E1_Is = 0x3064;  // 4 Byte Integer
 | ||||
| 
 | ||||
| // reserved to support up to 6 Extruders:
 | ||||
| //constexpr uint16_t VP_T_E1_Set = 0x3066; // 2 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E2_Is = 0x3068;  // 4 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E2_Set = 0x306A; // 2 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E3_Is = 0x306C;  // 4 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E3_Set = 0x306E; // 2 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E4_Is = 0x3070;  // 4 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E4_Set = 0x3072; // 2 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E4_Is = 0x3074;  // 4 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E4_Set = 0x3076; // 2 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E5_Is = 0x3078;  // 4 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E5_Set = 0x307A; // 2 Byte Integer
 | ||||
| 
 | ||||
| constexpr uint16_t VP_T_Bed_Is = 0x3080;  // 4 Byte Integer
 | ||||
| constexpr uint16_t VP_T_Bed_Set = 0x3082; // 2 Byte Integer
 | ||||
| 
 | ||||
| constexpr uint16_t VP_Flowrate_E0 = 0x3090; // 2 Byte Integer
 | ||||
| constexpr uint16_t VP_Flowrate_E1 = 0x3092; // 2 Byte Integer
 | ||||
| 
 | ||||
| // reserved for up to 6 Extruders:
 | ||||
| //constexpr uint16_t VP_Flowrate_E2 = 0x3094;
 | ||||
| //constexpr uint16_t VP_Flowrate_E3 = 0x3096;
 | ||||
| //constexpr uint16_t VP_Flowrate_E4 = 0x3098;
 | ||||
| //constexpr uint16_t VP_Flowrate_E5 = 0x309A;
 | ||||
| 
 | ||||
| constexpr uint16_t VP_Fan_Percentage = 0x3100;  // 2 Byte Integer (0..100)
 | ||||
| constexpr uint16_t VP_Feedrate_Percentage = 0x3102; // 2 Byte Integer (0..100)
 | ||||
| constexpr uint16_t VP_PrintProgress_Percentage = 0x3104; // 2 Byte Integer (0..100)
 | ||||
| 
 | ||||
| constexpr uint16_t VP_PrintTime = 0x3106; | ||||
| constexpr uint16_t VP_PrintTime_LEN = 10; | ||||
| 
 | ||||
| // Actual Position
 | ||||
| constexpr uint16_t VP_XPos = 0x3110;  // 4 Byte Fixed point number; format xxx.yy
 | ||||
| constexpr uint16_t VP_YPos = 0x3112;  // 4 Byte Fixed point number; format xxx.yy
 | ||||
| constexpr uint16_t VP_ZPos = 0x3114;  // 4 Byte Fixed point number; format xxx.yy
 | ||||
| 
 | ||||
| constexpr uint16_t VP_EPos = 0x3120;  // 4 Byte Fixed point number; format xxx.yy
 | ||||
| 
 | ||||
| // SDCard File Listing
 | ||||
| constexpr uint16_t VP_SD_FileName_LEN = 32; // LEN is shared for all entries.
 | ||||
| constexpr uint16_t DGUS_SD_FILESPERSCREEN = 5; // FIXME move that info to the display and read it from there.
 | ||||
| constexpr uint16_t VP_SD_FileName0 = 0x3200; | ||||
| constexpr uint16_t VP_SD_FileName1 = 0x3220; | ||||
| constexpr uint16_t VP_SD_FileName2 = 0x3240; | ||||
| constexpr uint16_t VP_SD_FileName3 = 0x3260; | ||||
| constexpr uint16_t VP_SD_FileName4 = 0x3280; | ||||
| 
 | ||||
| // SPs for certain variables...
 | ||||
| // located at 0x5000 and up
 | ||||
| // Not used yet!
 | ||||
| // This can be used e.g to make controls / data display invisible
 | ||||
| constexpr uint16_t SP_T_E0_Is = 0x5000; | ||||
| constexpr uint16_t SP_T_E0_Set = 0x5010; | ||||
| constexpr uint16_t SP_T_E1_Is = 0x5020; | ||||
| constexpr uint16_t SP_T_Bed_Is = 0x5030; | ||||
| constexpr uint16_t SP_T_Bed_Set = 0x5040; | ||||
| 
 | ||||
| // List of VPs handled by Marlin / The Display.
 | ||||
| extern const struct DGUS_VP_Variable ListOfVP[]; | ||||
| 
 | ||||
| #if ENABLED(DGUS_LCD_UI_ORIGIN) | ||||
|   #include "DGUSDisplayDefinitionOrigin.h" | ||||
| #elif ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|   #include "DGUSDisplayDefinitionFYSETC.h" | ||||
| #elif ENABLED(DGUS_LCD_UI_HIPRECY) | ||||
|   #include "DGUSDisplayDefinitionHIPRECY.h" | ||||
| #endif | ||||
|  | ||||
| @ -0,0 +1,476 @@ | ||||
| /**
 | ||||
|  * Marlin 3D Printer Firmware | ||||
|  * Copyright (c) 2019 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 <http://www.gnu.org/licenses/>.
 | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /* DGUS VPs changed by George Fu in 2019 for Marlin */ | ||||
| 
 | ||||
| #include "../../../../inc/MarlinConfigPre.h" | ||||
| 
 | ||||
| #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
| 
 | ||||
| #include "DGUSDisplayDefinition.h" | ||||
| #include "DGUSDisplay.h" | ||||
| 
 | ||||
| #include "../../../../module/temperature.h" | ||||
| #include "../../../../module/motion.h" | ||||
| #include "../../../../module/planner.h" | ||||
| 
 | ||||
| #include "../../ui_api.h" | ||||
| #include "../../../ultralcd.h" | ||||
| 
 | ||||
| #if ENABLED(DUGS_UI_MOVE_DIS_OPTION) | ||||
|   uint16_t distanceToMove = 0.1; | ||||
| #endif | ||||
| 
 | ||||
| const uint16_t VPList_Boot[] PROGMEM = { | ||||
|   VP_MARLIN_VERSION, | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_Main[] PROGMEM = { | ||||
|   /* VP_M117, for completeness, but it cannot be auto-uploaded. */ | ||||
|   #if HOTENDS >= 1 | ||||
|     VP_T_E0_Is, VP_T_E0_Set, VP_E0_STATUS, | ||||
|   #endif | ||||
|   #if HOTENDS >= 2 | ||||
|     VP_T_E1_Is, VP_T_E1_Set, | ||||
|   #endif | ||||
|   #if HAS_HEATED_BED | ||||
|     VP_T_Bed_Is, VP_T_Bed_Set, VP_BED_STATUS, | ||||
|   #endif | ||||
|   #if FAN_COUNT > 0 | ||||
|     VP_Fan0_Percentage, VP_FAN0_STATUS, | ||||
|   #endif | ||||
|   VP_XPos, VP_YPos, VP_ZPos, | ||||
|   VP_Fan0_Percentage, | ||||
|   VP_Feedrate_Percentage, | ||||
|   #if ENABLED(LCD_SET_PROGRESS_MANUALLY) | ||||
|     VP_PrintProgress_Percentage, | ||||
|   #endif | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_Temp[] PROGMEM = { | ||||
|   #if HOTENDS >= 1 | ||||
|     VP_T_E0_Is, VP_T_E0_Set, | ||||
|   #endif | ||||
|   #if HOTENDS >= 2 | ||||
|     VP_T_E1_Is, VP_T_E1_Set, | ||||
|   #endif | ||||
|   #if HAS_HEATED_BED | ||||
|     VP_T_Bed_Is, VP_T_Bed_Set, | ||||
|   #endif | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_Status[] PROGMEM = { | ||||
|   /* VP_M117, for completeness, but it cannot be auto-uploaded */ | ||||
|   #if HOTENDS >= 1 | ||||
|     VP_T_E0_Is, VP_T_E0_Set, | ||||
|   #endif | ||||
|   #if HOTENDS >= 2 | ||||
|     VP_T_E1_Is, VP_T_E1_Set, | ||||
|   #endif | ||||
|   #if HAS_HEATED_BED | ||||
|     VP_T_Bed_Is, VP_T_Bed_Set, | ||||
|   #endif | ||||
|   #if FAN_COUNT > 0 | ||||
|     VP_Fan0_Percentage, | ||||
|   #endif | ||||
|   VP_XPos, VP_YPos, VP_ZPos, | ||||
|   VP_Fan0_Percentage, | ||||
|   VP_Feedrate_Percentage, | ||||
|   VP_PrintProgress_Percentage, | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_Status2[] PROGMEM = { | ||||
|   /* VP_M117, for completeness, but it cannot be auto-uploaded */ | ||||
|   #if HOTENDS >= 1 | ||||
|     VP_Flowrate_E0, | ||||
|   #endif | ||||
|   #if HOTENDS >= 2 | ||||
|     VP_Flowrate_E1, | ||||
|   #endif | ||||
|   VP_PrintProgress_Percentage, | ||||
|   VP_PrintTime, | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_Preheat[] PROGMEM = { | ||||
|   #if HOTENDS >= 1 | ||||
|     VP_T_E0_Is, VP_T_E0_Set, | ||||
|   #endif | ||||
|   #if HOTENDS >= 2 | ||||
|     VP_T_E1_Is, VP_T_E1_Set, | ||||
|   #endif | ||||
|   #if HAS_HEATED_BED | ||||
|     VP_T_Bed_Is, VP_T_Bed_Set, | ||||
|   #endif | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_ManualMove[] PROGMEM = { | ||||
|   VP_XPos, VP_YPos, VP_ZPos, | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_ManualExtrude[] PROGMEM = { | ||||
|   #if HOTENDS >= 1 | ||||
|     VP_T_E0_Is, VP_T_E0_Set, | ||||
|   #endif | ||||
|   #if HOTENDS >= 2 | ||||
|     VP_T_E1_Is, VP_T_E1_Set, | ||||
|   #endif | ||||
|   VP_EPos, | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_FanAndFeedrate[] PROGMEM = { | ||||
|   VP_Feedrate_Percentage, VP_Fan0_Percentage, | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_SD_FlowRates[] PROGMEM = { | ||||
|   VP_Flowrate_E0, VP_Flowrate_E1, | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_Filament_heating[] PROGMEM = { | ||||
|   #if HOTENDS >= 1 | ||||
|     VP_T_E0_Is, VP_T_E0_Set, | ||||
|     VP_E0_FILAMENT_LOAD_UNLOAD, | ||||
|   #endif | ||||
|   #if HOTENDS >= 2 | ||||
|     VP_T_E1_Is, VP_T_E1_Set, | ||||
|     VP_E1_FILAMENT_LOAD_UNLOAD, | ||||
|   #endif | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_Filament_load_unload[] PROGMEM = { | ||||
|   #if HOTENDS >= 1 | ||||
|     VP_E0_FILAMENT_LOAD_UNLOAD, | ||||
|   #endif | ||||
|   #if HOTENDS >= 2 | ||||
|     VP_E1_FILAMENT_LOAD_UNLOAD, | ||||
|   #endif | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_SDFileList[] PROGMEM = { | ||||
|   VP_SD_FileName0, VP_SD_FileName1, VP_SD_FileName2, VP_SD_FileName3, VP_SD_FileName4, | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_SD_PrintManipulation[] PROGMEM = { | ||||
|   VP_PrintProgress_Percentage, VP_PrintTime, | ||||
|   #if HOTENDS >= 1 | ||||
|     VP_T_E0_Is, VP_T_E0_Set, | ||||
|   #endif | ||||
|   #if HOTENDS >= 2 | ||||
|     VP_T_E1_Is, VP_T_E1_Set, | ||||
|   #endif | ||||
|   #if HAS_HEATED_BED | ||||
|     VP_T_Bed_Is, VP_T_Bed_Set, | ||||
|   #endif | ||||
|   #if FAN_COUNT > 0 | ||||
|     VP_Fan0_Percentage, | ||||
|     #if FAN_COUNT > 1 | ||||
|       VP_Fan1_Percentage, | ||||
|     #endif | ||||
|   #endif | ||||
|   VP_Flowrate_E0, | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_SDPrintTune[] PROGMEM = { | ||||
|   #if HOTENDS >= 1 | ||||
|     VP_T_E0_Is, VP_T_E0_Set, VP_Flowrate_E0, | ||||
|   #endif | ||||
|   #if HOTENDS >= 2 | ||||
|     VP_T_E1_Is, VP_T_E1_Set, VP_Flowrate_E1, | ||||
|   #endif | ||||
|   #if HAS_HEATED_BED | ||||
|     VP_T_Bed_Is, VP_T_Bed_Set, | ||||
|   #endif | ||||
|   VP_Feedrate_Percentage, | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_StepPerMM[] PROGMEM = { | ||||
|   VP_X_STEP_PER_MM, | ||||
|   VP_Y_STEP_PER_MM, | ||||
|   VP_Z_STEP_PER_MM, | ||||
|   #if HOTENDS >= 1 | ||||
|     VP_E0_STEP_PER_MM, | ||||
|   #endif | ||||
|   #if HOTENDS >= 2 | ||||
|     VP_E1_STEP_PER_MM, | ||||
|   #endif | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_PIDE0[] PROGMEM = { | ||||
|   #if ENABLED(PIDTEMP) | ||||
|     VP_E0_PID_P, | ||||
|     VP_E0_PID_I, | ||||
|     VP_E0_PID_D, | ||||
|   #endif | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_PIDBED[] PROGMEM = { | ||||
|   #if ENABLED(PIDTEMP) | ||||
|     VP_BED_PID_P, | ||||
|     VP_BED_PID_I, | ||||
|     VP_BED_PID_D, | ||||
|   #endif | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_Infos[] PROGMEM = { | ||||
|   VP_MARLIN_VERSION, | ||||
|   VP_PrintTime, | ||||
|   #if ENABLED(PRINTCOUNTER) | ||||
|     VP_PrintAccTime, | ||||
|     VP_PrintsTotal, | ||||
|   #endif | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_PIDTuningWaiting[] PROGMEM = { | ||||
|   VP_WAITING_STATUS, | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_FLCPreheat[] PROGMEM = { | ||||
|   #if HOTENDS >= 1 | ||||
|     VP_T_E0_Is, VP_T_E0_Set, | ||||
|   #endif | ||||
|   #if HAS_HEATED_BED | ||||
|     VP_T_Bed_Is, VP_T_Bed_Set, | ||||
|   #endif | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_FLCPrinting[] PROGMEM = { | ||||
|   #if HOTENDS >= 1 | ||||
|     VP_SD_Print_ProbeOffsetZ, | ||||
|   #endif | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const struct VPMapping VPMap[] PROGMEM = { | ||||
|   { DGUSLCD_SCREEN_BOOT, VPList_Boot }, | ||||
|   { DGUSLCD_SCREEN_MAIN, VPList_Main }, | ||||
|   { DGUSLCD_SCREEN_TEMPERATURE, VPList_Temp }, | ||||
|   { DGUSLCD_SCREEN_STATUS, VPList_Status }, | ||||
|   { DGUSLCD_SCREEN_STATUS2, VPList_Status2 }, | ||||
|   { DGUSLCD_SCREEN_PREHEAT, VPList_Preheat }, | ||||
|   { DGUSLCD_SCREEN_MANUALMOVE, VPList_ManualMove }, | ||||
|   { DGUSLCD_SCREEN_MANUALEXTRUDE, VPList_ManualExtrude }, | ||||
|   { DGUSLCD_SCREEN_FILAMENT_HEATING, VPList_Filament_heating }, | ||||
|   { DGUSLCD_SCREEN_FILAMENT_LOADING, VPList_Filament_load_unload }, | ||||
|   { DGUSLCD_SCREEN_FILAMENT_UNLOADING, VPList_Filament_load_unload }, | ||||
|   { DGUSLCD_SCREEN_SDPRINTMANIPULATION, VPList_SD_PrintManipulation }, | ||||
|   { DGUSLCD_SCREEN_SDFILELIST, VPList_SDFileList }, | ||||
|   { DGUSLCD_SCREEN_SDPRINTTUNE, VPList_SDPrintTune }, | ||||
|   { DGUSLCD_SCREEN_WAITING, VPList_PIDTuningWaiting }, | ||||
|   { DGUSLCD_SCREEN_FLC_PREHEAT, VPList_FLCPreheat }, | ||||
|   { DGUSLCD_SCREEN_FLC_PRINTING, VPList_FLCPrinting }, | ||||
|   { DGUSLCD_SCREEN_STEPPERMM, VPList_StepPerMM }, | ||||
|   { DGUSLCD_SCREEN_PID_E, VPList_PIDE0 }, | ||||
|   { DGUSLCD_SCREEN_PID_BED, VPList_PIDBED }, | ||||
|   { DGUSLCD_SCREEN_INFOS, VPList_Infos }, | ||||
|   { 0 , nullptr } // List is terminated with an nullptr as table entry.
 | ||||
| }; | ||||
| 
 | ||||
| const char MarlinVersion[] PROGMEM = SHORT_BUILD_VERSION; | ||||
| 
 | ||||
| // Helper to define a DGUS_VP_Variable for common use cases.
 | ||||
| #define VPHELPER(VPADR, VPADRVAR, RXFPTR, TXFPTR ) { .VP=VPADR, .memadr=VPADRVAR, .size=sizeof(VPADRVAR), \ | ||||
|   .set_by_display_handler = RXFPTR, .send_to_display_handler = TXFPTR } | ||||
| 
 | ||||
| // Helper to define a DGUS_VP_Variable when the sizeo of the var cannot be determined automaticalyl (eg. a string)
 | ||||
| #define VPHELPER_STR(VPADR, VPADRVAR, STRLEN, RXFPTR, TXFPTR ) { .VP=VPADR, .memadr=VPADRVAR, .size=STRLEN, \ | ||||
|   .set_by_display_handler = RXFPTR, .send_to_display_handler = TXFPTR } | ||||
| 
 | ||||
| const struct DGUS_VP_Variable ListOfVP[] PROGMEM = { | ||||
|   // Helper to detect touch events
 | ||||
|   VPHELPER(VP_SCREENCHANGE, nullptr, DGUSScreenVariableHandler::ScreenChangeHook, nullptr), | ||||
|   VPHELPER(VP_SCREENCHANGE_ASK, nullptr, DGUSScreenVariableHandler::ScreenChangeHookIfIdle, nullptr), | ||||
|   VPHELPER(VP_SCREENCHANGE_WHENSD, nullptr, DGUSScreenVariableHandler::ScreenChangeHookIfSD, nullptr), | ||||
|   VPHELPER(VP_CONFIRMED, nullptr, DGUSScreenVariableHandler::ScreenConfirmedOK, nullptr), | ||||
| 
 | ||||
|   VPHELPER(VP_TEMP_ALL_OFF, nullptr, &DGUSScreenVariableHandler::HandleAllHeatersOff, nullptr), | ||||
|   #if ENABLED(DUGS_UI_MOVE_DIS_OPTION) | ||||
|     VPHELPER(VP_MOVE_OPTION, &distanceToMove, &DGUSScreenVariableHandler::HandleManualMoveOption, nullptr), | ||||
|   #endif | ||||
|   #if ENABLED(DUGS_UI_MOVE_DIS_OPTION) | ||||
|     VPHELPER(VP_MOVE_X, &distanceToMove, &DGUSScreenVariableHandler::HandleManualMove, nullptr), | ||||
|     VPHELPER(VP_MOVE_Y, &distanceToMove, &DGUSScreenVariableHandler::HandleManualMove, nullptr), | ||||
|     VPHELPER(VP_MOVE_Z, &distanceToMove, &DGUSScreenVariableHandler::HandleManualMove, nullptr), | ||||
|     VPHELPER(VP_HOME_ALL, &distanceToMove, &DGUSScreenVariableHandler::HandleManualMove, nullptr), | ||||
|   #else | ||||
|     VPHELPER(VP_MOVE_X, nullptr, &DGUSScreenVariableHandler::HandleManualMove, nullptr), | ||||
|     VPHELPER(VP_MOVE_Y, nullptr, &DGUSScreenVariableHandler::HandleManualMove, nullptr), | ||||
|     VPHELPER(VP_MOVE_Z, nullptr, &DGUSScreenVariableHandler::HandleManualMove, nullptr), | ||||
|     VPHELPER(VP_HOME_ALL, nullptr, &DGUSScreenVariableHandler::HandleManualMove, nullptr), | ||||
|   #endif | ||||
|   VPHELPER(VP_MOTOR_LOCK_UNLOK, nullptr, &DGUSScreenVariableHandler::HandleMotorLockUnlock, nullptr), | ||||
|   #if ENABLED(POWER_LOSS_RECOVERY) | ||||
|     VPHELPER(VP_POWER_LOSS_RECOVERY, nullptr, &DGUSScreenVariableHandler::HandlePowerLossRecovery, nullptr), | ||||
|   #endif | ||||
|   VPHELPER(VP_SETTINGS, nullptr, &DGUSScreenVariableHandler::HandleSettings, nullptr), | ||||
|   #if ENABLED(SINGLE_Z_CALIBRATION) | ||||
|     VPHELPER(VP_Z_CALIBRATE, nullptr, &DGUSScreenVariableHandler::HandleZCalibration, nullptr), | ||||
|   #endif | ||||
| 
 | ||||
|   #if ENABLED(FIRST_LAYER_CAL) | ||||
|     VPHELPER(VP_Z_FIRST_LAYER_CAL, nullptr, &DGUSScreenVariableHandler::HandleFirstLayerCal, nullptr), | ||||
|   #endif | ||||
| 
 | ||||
|   { .VP = VP_MARLIN_VERSION, .memadr = (void*)MarlinVersion, .size = VP_MARLIN_VERSION_LEN, .set_by_display_handler = nullptr, .send_to_display_handler =&DGUSScreenVariableHandler::DGUSLCD_SendStringToDisplayPGM }, | ||||
|   // M117 LCD String (We don't need the string in memory but "just" push it to the display on demand, hence the nullptr
 | ||||
|   { .VP = VP_M117, .memadr = nullptr, .size = VP_M117_LEN, .set_by_display_handler = nullptr, .send_to_display_handler =&DGUSScreenVariableHandler::DGUSLCD_SendStringToDisplay }, | ||||
| 
 | ||||
|   // Temperature Data
 | ||||
|   #if HOTENDS >= 1 | ||||
|     VPHELPER(VP_T_E0_Is, &thermalManager.temp_hotend[0].celsius, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<0>), | ||||
|     VPHELPER(VP_T_E0_Set, &thermalManager.temp_hotend[0].target, DGUSScreenVariableHandler::HandleTemperatureChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay), | ||||
|     VPHELPER(VP_Flowrate_E0, &planner.flow_percentage[ExtUI::extruder_t::E0], DGUSScreenVariableHandler::HandleFlowRateChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay), | ||||
|     VPHELPER(VP_EPos, &destination.e, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<2>), | ||||
|     VPHELPER(VP_MOVE_E0, nullptr, &DGUSScreenVariableHandler::HandleManualExtrude, nullptr), | ||||
|     VPHELPER(VP_E0_CONTROL, &thermalManager.temp_hotend[0].target, &DGUSScreenVariableHandler::HandleHeaterControl, nullptr), | ||||
|     VPHELPER(VP_E0_STATUS, &thermalManager.temp_hotend[0].target, nullptr, &DGUSScreenVariableHandler::DGUSLCD_SendHeaterStatusToDisplay), | ||||
|     #if ENABLED(DGUS_PREHEAT_UI) | ||||
|       VPHELPER(VP_E0_BED_PREHEAT, nullptr, &DGUSScreenVariableHandler::HandlePreheat, nullptr), | ||||
|     #endif | ||||
|     #if ENABLED(PIDTEMP) | ||||
|       VPHELPER(VP_E0_PID_P, &thermalManager.temp_hotend[0].pid.Kp, DGUSScreenVariableHandler::HandleTemperaturePIDChanged, DGUSScreenVariableHandler::DGUSLCD_SendTemperaturePID), | ||||
|       VPHELPER(VP_E0_PID_I, &thermalManager.temp_hotend[0].pid.Ki, DGUSScreenVariableHandler::HandleTemperaturePIDChanged, DGUSScreenVariableHandler::DGUSLCD_SendTemperaturePID), | ||||
|       VPHELPER(VP_E0_PID_D, &thermalManager.temp_hotend[0].pid.Kd, DGUSScreenVariableHandler::HandleTemperaturePIDChanged, DGUSScreenVariableHandler::DGUSLCD_SendTemperaturePID), | ||||
|       VPHELPER(VP_PID_AUTOTUNE_E0, nullptr, &DGUSScreenVariableHandler::HandlePIDAutotune, nullptr), | ||||
|     #endif | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       VPHELPER(VP_E0_FILAMENT_LOAD_UNLOAD, nullptr, &DGUSScreenVariableHandler::HandleFilamentOption, &DGUSScreenVariableHandler::HandleFilamentLoadUnload), | ||||
|     #endif | ||||
|   #endif | ||||
|   #if HOTENDS >= 2 | ||||
|     VPHELPER(VP_T_E1_Is, &thermalManager.temp_hotend[1].celsius, nullptr, DGUSLCD_SendFloatAsLongValueToDisplay<0>), | ||||
|     VPHELPER(VP_T_E1_Set, &thermalManager.temp_hotend[1].target, DGUSScreenVariableHandler::HandleTemperatureChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay), | ||||
|     VPHELPER(VP_Flowrate_E1, &planner.flow_percentage[ExtUI::extruder_t::E1], DGUSScreenVariableHandler::HandleFlowRateChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay), | ||||
|     VPHELPER(VP_MOVE_E1, nullptr, &DGUSScreenVariableHandler::HandleManualExtrude, nullptr), | ||||
|     VPHELPER(VP_E1_CONTROL, &thermalManager.temp_hotend[1].target, &DGUSScreenVariableHandler::HandleHeaterControl, nullptr), | ||||
|     VPHELPER(VP_E1_STATUS, &thermalManager.temp_hotend[1].target, nullptr, &DGUSScreenVariableHandler::DGUSLCD_SendHeaterStatusToDisplay), | ||||
|     #if ENABLED(PIDTEMP) | ||||
|       VPHELPER(VP_PID_AUTOTUNE_E1, nullptr, &DGUSScreenVariableHandler::HandlePIDAutotune, nullptr), | ||||
|     #endif | ||||
|     VPHELPER(VP_E1_FILAMENT_LOAD_UNLOAD, nullptr, &DGUSScreenVariableHandler::HandleFilamentOption, &DGUSScreenVariableHandler::HandleFilamentLoadUnload), | ||||
|   #endif | ||||
|   #if HAS_HEATED_BED | ||||
|     VPHELPER(VP_T_Bed_Is, &thermalManager.temp_bed.celsius, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<0>), | ||||
|     VPHELPER(VP_T_Bed_Set, &thermalManager.temp_bed.target, DGUSScreenVariableHandler::HandleTemperatureChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay), | ||||
|     VPHELPER(VP_BED_CONTROL, &thermalManager.temp_bed.target, &DGUSScreenVariableHandler::HandleHeaterControl, nullptr), | ||||
|     VPHELPER(VP_BED_STATUS, &thermalManager.temp_bed.target, nullptr, &DGUSScreenVariableHandler::DGUSLCD_SendHeaterStatusToDisplay), | ||||
|     #if ENABLED(PIDTEMPBED) | ||||
|       VPHELPER(VP_BED_PID_P, &thermalManager.temp_bed.pid.Kp, DGUSScreenVariableHandler::HandleTemperaturePIDChanged, DGUSScreenVariableHandler::DGUSLCD_SendTemperaturePID), | ||||
|       VPHELPER(VP_BED_PID_I, &thermalManager.temp_bed.pid.Ki, DGUSScreenVariableHandler::HandleTemperaturePIDChanged, DGUSScreenVariableHandler::DGUSLCD_SendTemperaturePID), | ||||
|       VPHELPER(VP_BED_PID_D, &thermalManager.temp_bed.pid.Kd, DGUSScreenVariableHandler::HandleTemperaturePIDChanged, DGUSScreenVariableHandler::DGUSLCD_SendTemperaturePID), | ||||
|       VPHELPER(VP_PID_AUTOTUNE_BED, nullptr, &DGUSScreenVariableHandler::HandlePIDAutotune, nullptr), | ||||
|     #endif | ||||
|   #endif | ||||
| 
 | ||||
|   // Fan Data
 | ||||
|   #if FAN_COUNT | ||||
|     #define FAN_VPHELPER(N) \ | ||||
|       VPHELPER(VP_Fan##N##_Percentage, &thermalManager.fan_speed[N], DGUSScreenVariableHandler::DGUSLCD_PercentageToUint8, &DGUSScreenVariableHandler::DGUSLCD_SendPercentageToDisplay), \ | ||||
|       VPHELPER(VP_FAN##N##_CONTROL, &thermalManager.fan_speed[N], &DGUSScreenVariableHandler::HandleFanControl, nullptr), \ | ||||
|       VPHELPER(VP_FAN##N##_STATUS, &thermalManager.fan_speed[N], nullptr, &DGUSScreenVariableHandler::DGUSLCD_SendFanStatusToDisplay), | ||||
|     REPEAT(FAN_COUNT, FAN_VPHELPER) | ||||
|   #endif | ||||
| 
 | ||||
|   // Feedrate
 | ||||
|   VPHELPER(VP_Feedrate_Percentage, &feedrate_percentage, DGUSScreenVariableHandler::DGUSLCD_SetValueDirectly<int16_t>, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay ), | ||||
| 
 | ||||
|   // Position Data
 | ||||
|   VPHELPER(VP_XPos, ¤t_position.x, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<2>), | ||||
|   VPHELPER(VP_YPos, ¤t_position.y, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<2>), | ||||
|   VPHELPER(VP_ZPos, ¤t_position.z, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<2>), | ||||
| 
 | ||||
|   // Print Progress
 | ||||
|   #if ENABLED(LCD_SET_PROGRESS_MANUALLY) | ||||
|     VPHELPER(VP_PrintProgress_Percentage, &ui.progress_override, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay), | ||||
|   #endif | ||||
| 
 | ||||
|   // Print Time
 | ||||
|   VPHELPER_STR(VP_PrintTime, nullptr, VP_PrintTime_LEN, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendPrintTimeToDisplay), | ||||
|   #if ENABLED(PRINTCOUNTER) | ||||
|     VPHELPER_STR(VP_PrintAccTime, nullptr, VP_PrintAccTime_LEN, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendPrintAccTimeToDisplay), | ||||
|     VPHELPER_STR(VP_PrintsTotal, nullptr, VP_PrintsTotal_LEN, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendPrintsTotalToDisplay), | ||||
|   #endif | ||||
| 
 | ||||
|   VPHELPER(VP_X_STEP_PER_MM, &planner.settings.axis_steps_per_mm[X_AXIS], DGUSScreenVariableHandler::HandleStepPerMMChanged, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsIntValueToDisplay<1>), | ||||
|   VPHELPER(VP_Y_STEP_PER_MM, &planner.settings.axis_steps_per_mm[Y_AXIS], DGUSScreenVariableHandler::HandleStepPerMMChanged, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsIntValueToDisplay<1>), | ||||
|   VPHELPER(VP_Z_STEP_PER_MM, &planner.settings.axis_steps_per_mm[Z_AXIS], DGUSScreenVariableHandler::HandleStepPerMMChanged, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsIntValueToDisplay<1>), | ||||
|   #if HOTENDS >= 1 | ||||
|     VPHELPER(VP_E0_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(0)], DGUSScreenVariableHandler::HandleStepPerMMExtruderChanged, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsIntValueToDisplay<1>), | ||||
|   #endif | ||||
|   #if HOTENDS >= 2 | ||||
|     VPHELPER(VP_E1_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(1)], DGUSScreenVariableHandler::HandleStepPerMMExtruderChanged, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsIntValueToDisplay<1>), | ||||
|   #endif | ||||
| 
 | ||||
|   // SDCard File listing.
 | ||||
|   #if ENABLED(SDSUPPORT) | ||||
|     VPHELPER(VP_SD_ScrollEvent, nullptr, DGUSScreenVariableHandler::DGUSLCD_SD_ScrollFilelist, nullptr), | ||||
|     VPHELPER(VP_SD_FileSelected, nullptr, DGUSScreenVariableHandler::DGUSLCD_SD_FileSelected, nullptr), | ||||
|     VPHELPER(VP_SD_FileSelectConfirm, nullptr, DGUSScreenVariableHandler::DGUSLCD_SD_StartPrint, nullptr), | ||||
|     VPHELPER_STR(VP_SD_FileName0, nullptr, VP_SD_FileName_LEN, nullptr, DGUSScreenVariableHandler::DGUSLCD_SD_SendFilename), | ||||
|     VPHELPER_STR(VP_SD_FileName1, nullptr, VP_SD_FileName_LEN, nullptr, DGUSScreenVariableHandler::DGUSLCD_SD_SendFilename), | ||||
|     VPHELPER_STR(VP_SD_FileName2, nullptr, VP_SD_FileName_LEN, nullptr, DGUSScreenVariableHandler::DGUSLCD_SD_SendFilename), | ||||
|     VPHELPER_STR(VP_SD_FileName3, nullptr, VP_SD_FileName_LEN, nullptr, DGUSScreenVariableHandler::DGUSLCD_SD_SendFilename), | ||||
|     VPHELPER_STR(VP_SD_FileName4, nullptr, VP_SD_FileName_LEN, nullptr, DGUSScreenVariableHandler::DGUSLCD_SD_SendFilename), | ||||
|     VPHELPER(VP_SD_ResumePauseAbort, nullptr, DGUSScreenVariableHandler::DGUSLCD_SD_ResumePauseAbort, nullptr), | ||||
|     VPHELPER(VP_SD_AbortPrintConfirmed, nullptr, DGUSScreenVariableHandler::DGUSLCD_SD_ReallyAbort, nullptr), | ||||
|     VPHELPER(VP_SD_Print_Setting, nullptr, DGUSScreenVariableHandler::DGUSLCD_SD_PrintTune, nullptr), | ||||
|     #if HAS_BED_PROBE | ||||
|       VPHELPER(VP_SD_Print_ProbeOffsetZ, &probe_offset.z, DGUSScreenVariableHandler::HandleProbeOffsetZChanged, &DGUSScreenVariableHandler::DGUSLCD_SendFloatAsIntValueToDisplay<2>), | ||||
|       #if ENABLED(BABYSTEPPING) | ||||
|         VPHELPER(VP_SD_Print_LiveAdjustZ, nullptr, DGUSScreenVariableHandler::HandleLiveAdjustZ, nullptr), | ||||
|       #endif | ||||
|     #endif | ||||
|   #endif | ||||
| 
 | ||||
|   #if ENABLED(DGUS_UI_WAITING) | ||||
|     VPHELPER(VP_WAITING_STATUS, nullptr, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendWaitingStatusToDisplay), | ||||
|   #endif | ||||
| 
 | ||||
|   // Messages for the User, shared by the popup and the kill screen. They cant be autouploaded as we do not buffer content.
 | ||||
|   { .VP = VP_MSGSTR1, .memadr = nullptr, .size = VP_MSGSTR1_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = &DGUSScreenVariableHandler::DGUSLCD_SendStringToDisplayPGM }, | ||||
|   { .VP = VP_MSGSTR2, .memadr = nullptr, .size = VP_MSGSTR2_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = &DGUSScreenVariableHandler::DGUSLCD_SendStringToDisplayPGM }, | ||||
|   { .VP = VP_MSGSTR3, .memadr = nullptr, .size = VP_MSGSTR3_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = &DGUSScreenVariableHandler::DGUSLCD_SendStringToDisplayPGM }, | ||||
|   { .VP = VP_MSGSTR4, .memadr = nullptr, .size = VP_MSGSTR4_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = &DGUSScreenVariableHandler::DGUSLCD_SendStringToDisplayPGM }, | ||||
| 
 | ||||
|   VPHELPER(0, 0, 0, 0)  // must be last entry.
 | ||||
| }; | ||||
| 
 | ||||
| #endif // DGUS_LCD_UI_FYSETC
 | ||||
| @ -0,0 +1,290 @@ | ||||
| /**
 | ||||
|  * Marlin 3D Printer Firmware | ||||
|  * Copyright (c) 2019 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 <http://www.gnu.org/licenses/>.
 | ||||
|  * | ||||
|  */ | ||||
| #pragma once | ||||
| 
 | ||||
| enum DGUSLCD_Screens : uint8_t { | ||||
|   DGUSLCD_SCREEN_BOOT                =   0, | ||||
|   DGUSLCD_SCREEN_MAIN                =   1, | ||||
|   DGUSLCD_SCREEN_STATUS              =   1, | ||||
|   DGUSLCD_SCREEN_STATUS2             =   1, | ||||
|   DGUSLCD_SCREEN_TEMPERATURE         =  10, | ||||
|   DGUSLCD_SCREEN_PREHEAT             =  18, | ||||
|   DGUSLCD_SCREEN_POWER_LOSS          = 100, | ||||
|   DGUSLCD_SCREEN_MANUALMOVE          = 192, | ||||
|   DGUSLCD_SCREEN_UTILITY             = 120, | ||||
|   DGUSLCD_SCREEN_FILAMENT_HEATING    = 146, | ||||
|   DGUSLCD_SCREEN_FILAMENT_LOADING    = 148, | ||||
|   DGUSLCD_SCREEN_FILAMENT_UNLOADING  = 158, | ||||
|   DGUSLCD_SCREEN_MANUALEXTRUDE       = 160, | ||||
|   DGUSLCD_SCREEN_SDFILELIST          =  71, | ||||
|   DGUSLCD_SCREEN_SDPRINTMANIPULATION =  73, | ||||
|   DGUSLCD_SCREEN_SDPRINTTUNE         =  75, | ||||
|   DGUSLCD_SCREEN_FLC_PREHEAT         =  94, | ||||
|   DGUSLCD_SCREEN_FLC_PRINTING        =  96, | ||||
|   DGUSLCD_SCREEN_STEPPERMM           = 212, | ||||
|   DGUSLCD_SCREEN_PID_E               = 214, | ||||
|   DGUSLCD_SCREEN_PID_BED             = 218, | ||||
|   DGUSLCD_SCREEN_INFOS               =  30, | ||||
|   DGUSLCD_SCREEN_CONFIRM             = 240, | ||||
|   DGUSLCD_SCREEN_KILL                = 250, ///< Kill Screen. Must always be 250 (to be able to display "Error wrong LCD Version")
 | ||||
|   DGUSLCD_SCREEN_WAITING             = 251, | ||||
|   DGUSLCD_SCREEN_POPUP               = 252, ///< special target, popup screen will also return this code to say "return to previous screen"
 | ||||
|   DGUSLDC_SCREEN_UNUSED              = 255 | ||||
| }; | ||||
| 
 | ||||
| // Display Memory layout used (T5UID)
 | ||||
| // Except system variables this is arbitrary, just to organize stuff....
 | ||||
| 
 | ||||
| // 0x0000 .. 0x0FFF  -- System variables and reserved by the display
 | ||||
| // 0x1000 .. 0x1FFF  -- Variables to never change location, regardless of UI Version
 | ||||
| // 0x2000 .. 0x2FFF  -- Controls (VPs that will trigger some action)
 | ||||
| // 0x3000 .. 0x4FFF  -- Marlin Data to be displayed
 | ||||
| // 0x5000 ..         -- SPs (if we want to modify display elements, e.g change color or like) -- currently unused
 | ||||
| 
 | ||||
| // As there is plenty of space (at least most displays have >8k RAM), we do not pack them too tight,
 | ||||
| // so that we can keep variables nicely together in the address space.
 | ||||
| 
 | ||||
| // UI Version always on 0x1000...0x1002 so that the firmware can check this and bail out.
 | ||||
| constexpr uint16_t VP_UI_VERSION_MAJOR = 0x1000;  // Major -- incremented when incompatible
 | ||||
| constexpr uint16_t VP_UI_VERSION_MINOR = 0x1001;  // Minor -- incremented on new features, but compatible
 | ||||
| constexpr uint16_t VP_UI_VERSION_PATCH = 0x1002;  // Patch -- fixed which do not change functionality.
 | ||||
| constexpr uint16_t VP_UI_FLAVOUR       = 0x1010;  // lets reserve 16 bytes here to determine if UI is suitable for this Marlin. tbd.
 | ||||
| 
 | ||||
| // Storage space for the Killscreen messages. 0x1100 - 0x1200 . Reused for the popup.
 | ||||
| constexpr uint16_t VP_MSGSTR1 = 0x1100; | ||||
| constexpr uint8_t VP_MSGSTR1_LEN = 0x20;  // might be more place for it...
 | ||||
| constexpr uint16_t VP_MSGSTR2 = 0x1140; | ||||
| constexpr uint8_t VP_MSGSTR2_LEN = 0x20; | ||||
| constexpr uint16_t VP_MSGSTR3 = 0x1180; | ||||
| constexpr uint8_t VP_MSGSTR3_LEN = 0x20; | ||||
| constexpr uint16_t VP_MSGSTR4 = 0x11C0; | ||||
| constexpr uint8_t VP_MSGSTR4_LEN = 0x20; | ||||
| 
 | ||||
| // Screenchange request for screens that only make sense when printer is idle.
 | ||||
| // e.g movement is only allowed if printer is not printing.
 | ||||
| // Marlin must confirm by setting the screen manually.
 | ||||
| constexpr uint16_t VP_SCREENCHANGE_ASK = 0x2000; | ||||
| constexpr uint16_t VP_SCREENCHANGE = 0x2001;   // Key-Return button to new menu pressed. Data contains target screen in low byte and info in high byte.
 | ||||
| constexpr uint16_t VP_TEMP_ALL_OFF = 0x2002;   // Turn all heaters off. Value arbitrary ;)=
 | ||||
| constexpr uint16_t VP_SCREENCHANGE_WHENSD = 0x2003; // "Print" Button touched -- go only there if there is an SD Card.
 | ||||
| 
 | ||||
| constexpr uint16_t VP_CONFIRMED = 0x2010; // OK on confirm screen.
 | ||||
| 
 | ||||
| // Buttons on the SD-Card File listing.
 | ||||
| constexpr uint16_t VP_SD_ScrollEvent = 0x2020; // Data: 0 for "up a directory", numbers are the amount to scroll, e.g -1 one up, 1 one down
 | ||||
| constexpr uint16_t VP_SD_FileSelected = 0x2022; // Number of file field selected.
 | ||||
| constexpr uint16_t VP_SD_FileSelectConfirm = 0x2024; // (This is a virtual VP and emulated by the Confirm Screen when a file has been confirmed)
 | ||||
| 
 | ||||
| constexpr uint16_t VP_SD_ResumePauseAbort = 0x2026; // Resume(Data=0), Pause(Data=1), Abort(Data=2) SD Card prints
 | ||||
| constexpr uint16_t VP_SD_AbortPrintConfirmed = 0x2028; // Abort print confirmation (virtual, will be injected by the confirm dialog)
 | ||||
| constexpr uint16_t VP_SD_Print_Setting = 0x2040; | ||||
| constexpr uint16_t VP_SD_Print_LiveAdjustZ = 0x2050; // Data: 0 down, 1 up
 | ||||
| 
 | ||||
| // Controls for movement (we can't use the incremental / decremental feature of the display at this feature works only with 16 bit values
 | ||||
| // (which would limit us to 655.35mm, which is likely not a problem for common setups, but i don't want to rule out hangprinters support)
 | ||||
| // A word about the coding: The VP will be per axis and the return code will be an signed 16 bit value in 0.01 mm resolution, telling us
 | ||||
| // the relative travel amount t he user wants to do. So eg. if the display sends us VP=2100 with value 100, the user wants us to move X by +1 mm.
 | ||||
| constexpr uint16_t VP_MOVE_X = 0x2100; | ||||
| constexpr uint16_t VP_MOVE_Y = 0x2102; | ||||
| constexpr uint16_t VP_MOVE_Z = 0x2104; | ||||
| constexpr uint16_t VP_MOVE_E0 = 0x2110; | ||||
| constexpr uint16_t VP_MOVE_E1 = 0x2112; | ||||
| //constexpr uint16_t VP_MOVE_E2 = 0x2114;
 | ||||
| //constexpr uint16_t VP_MOVE_E3 = 0x2116;
 | ||||
| //constexpr uint16_t VP_MOVE_E4 = 0x2118;
 | ||||
| //constexpr uint16_t VP_MOVE_E5 = 0x211A;
 | ||||
| constexpr uint16_t VP_HOME_ALL = 0x2120; | ||||
| constexpr uint16_t VP_MOTOR_LOCK_UNLOK = 0x2130; | ||||
| 
 | ||||
| // Power loss recovery
 | ||||
| constexpr uint16_t VP_POWER_LOSS_RECOVERY = 0x2180; | ||||
| 
 | ||||
| // Fan Control Buttons , switch between "off" and "on"
 | ||||
| constexpr uint16_t VP_FAN0_CONTROL = 0x2200; | ||||
| constexpr uint16_t VP_FAN1_CONTROL = 0x2202; | ||||
| //constexpr uint16_t VP_FAN2_CONTROL = 0x2204;
 | ||||
| //constexpr uint16_t VP_FAN3_CONTROL = 0x2206;
 | ||||
| 
 | ||||
| // Heater Control Buttons , triged between "cool down" and "heat PLA" state
 | ||||
| constexpr uint16_t VP_E0_CONTROL = 0x2210; | ||||
| constexpr uint16_t VP_E1_CONTROL = 0x2212; | ||||
| //constexpr uint16_t VP_E2_CONTROL = 0x2214;
 | ||||
| //constexpr uint16_t VP_E3_CONTROL = 0x2216;
 | ||||
| //constexpr uint16_t VP_E4_CONTROL = 0x2218;
 | ||||
| //constexpr uint16_t VP_E5_CONTROL = 0x221A;
 | ||||
| constexpr uint16_t VP_BED_CONTROL = 0x221C; | ||||
| 
 | ||||
| // Preheat
 | ||||
| constexpr uint16_t VP_E0_BED_PREHEAT = 0x2220; | ||||
| constexpr uint16_t VP_E1_BED_PREHEAT = 0x2222; | ||||
| //constexpr uint16_t VP_E2_BED_PREHEAT = 0x2224;
 | ||||
| //constexpr uint16_t VP_E3_BED_PREHEAT = 0x2226;
 | ||||
| //constexpr uint16_t VP_E4_BED_PREHEAT = 0x2228;
 | ||||
| //constexpr uint16_t VP_E5_BED_PREHEAT = 0x222A;
 | ||||
| 
 | ||||
| // Filament load and unload
 | ||||
| constexpr uint16_t VP_E0_FILAMENT_LOAD_UNLOAD = 0x2300; | ||||
| constexpr uint16_t VP_E1_FILAMENT_LOAD_UNLOAD = 0x2302; | ||||
| 
 | ||||
| // Settings store , reset
 | ||||
| constexpr uint16_t VP_SETTINGS = 0x2400; | ||||
| 
 | ||||
| // PID autotune
 | ||||
| constexpr uint16_t VP_PID_AUTOTUNE_E0 = 0x2410; | ||||
| //constexpr uint16_t VP_PID_AUTOTUNE_E1 = 0x2412;
 | ||||
| //constexpr uint16_t VP_PID_AUTOTUNE_E2 = 0x2414;
 | ||||
| //constexpr uint16_t VP_PID_AUTOTUNE_E3 = 0x2416;
 | ||||
| //constexpr uint16_t VP_PID_AUTOTUNE_E4 = 0x2418;
 | ||||
| //constexpr uint16_t VP_PID_AUTOTUNE_E5 = 0x241A;
 | ||||
| constexpr uint16_t VP_PID_AUTOTUNE_BED = 0x2420; | ||||
| 
 | ||||
| // Calibrate Z
 | ||||
| constexpr uint16_t VP_Z_CALIBRATE = 0x2430; | ||||
| 
 | ||||
| // First layer cal
 | ||||
| constexpr uint16_t VP_Z_FIRST_LAYER_CAL = 0x2500; // Data: 0 - Cancel first layer cal progress, >0 filament type have loaded
 | ||||
| 
 | ||||
| // Firmware version on the boot screen.
 | ||||
| constexpr uint16_t VP_MARLIN_VERSION = 0x3000; | ||||
| constexpr uint8_t VP_MARLIN_VERSION_LEN = 16;   // there is more space on the display, if needed.
 | ||||
| 
 | ||||
| // Place for status messages.
 | ||||
| constexpr uint16_t VP_M117 = 0x3020; | ||||
| constexpr uint8_t VP_M117_LEN = 0x20; | ||||
| 
 | ||||
| // Temperatures.
 | ||||
| constexpr uint16_t VP_T_E0_Is = 0x3060;  // 4 Byte Integer
 | ||||
| constexpr uint16_t VP_T_E0_Set = 0x3062; // 2 Byte Integer
 | ||||
| constexpr uint16_t VP_T_E1_Is = 0x3064;  // 4 Byte Integer
 | ||||
| 
 | ||||
| // reserved to support up to 6 Extruders:
 | ||||
| constexpr uint16_t VP_T_E1_Set = 0x3066; // 2 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E2_Is = 0x3068;  // 4 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E2_Set = 0x306A; // 2 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E3_Is = 0x306C;  // 4 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E3_Set = 0x306E; // 2 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E4_Is = 0x3070;  // 4 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E4_Set = 0x3072; // 2 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E4_Is = 0x3074;  // 4 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E4_Set = 0x3076; // 2 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E5_Is = 0x3078;  // 4 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E5_Set = 0x307A; // 2 Byte Integer
 | ||||
| 
 | ||||
| constexpr uint16_t VP_T_Bed_Is = 0x3080;  // 4 Byte Integer
 | ||||
| constexpr uint16_t VP_T_Bed_Set = 0x3082; // 2 Byte Integer
 | ||||
| 
 | ||||
| constexpr uint16_t VP_Flowrate_E0 = 0x3090; // 2 Byte Integer
 | ||||
| constexpr uint16_t VP_Flowrate_E1 = 0x3092; // 2 Byte Integer
 | ||||
| 
 | ||||
| // reserved for up to 6 Extruders:
 | ||||
| //constexpr uint16_t VP_Flowrate_E2 = 0x3094;
 | ||||
| //constexpr uint16_t VP_Flowrate_E3 = 0x3096;
 | ||||
| //constexpr uint16_t VP_Flowrate_E4 = 0x3098;
 | ||||
| //constexpr uint16_t VP_Flowrate_E5 = 0x309A;
 | ||||
| 
 | ||||
| constexpr uint16_t VP_Fan0_Percentage = 0x3100;  // 2 Byte Integer (0..100)
 | ||||
| constexpr uint16_t VP_Fan1_Percentage = 0x3102;  // 2 Byte Integer (0..100)
 | ||||
| constexpr uint16_t VP_Fan2_Percentage = 0x3104;  // 2 Byte Integer (0..100)
 | ||||
| constexpr uint16_t VP_Fan3_Percentage = 0x3106;  // 2 Byte Integer (0..100)
 | ||||
| constexpr uint16_t VP_Feedrate_Percentage = 0x3108; // 2 Byte Integer (0..100)
 | ||||
| 
 | ||||
| // Actual Position
 | ||||
| constexpr uint16_t VP_XPos = 0x3110;  // 4 Byte Fixed point number; format xxx.yy
 | ||||
| constexpr uint16_t VP_YPos = 0x3112;  // 4 Byte Fixed point number; format xxx.yy
 | ||||
| constexpr uint16_t VP_ZPos = 0x3114;  // 4 Byte Fixed point number; format xxx.yy
 | ||||
| 
 | ||||
| constexpr uint16_t VP_EPos = 0x3120;  // 4 Byte Fixed point number; format xxx.yy
 | ||||
| 
 | ||||
| constexpr uint16_t VP_PrintProgress_Percentage = 0x3130; // 2 Byte Integer (0..100)
 | ||||
| 
 | ||||
| constexpr uint16_t VP_PrintTime = 0x3140; | ||||
| constexpr uint16_t VP_PrintTime_LEN = 32; | ||||
| 
 | ||||
| constexpr uint16_t VP_PrintAccTime = 0x3160; | ||||
| constexpr uint16_t VP_PrintAccTime_LEN = 32; | ||||
| 
 | ||||
| constexpr uint16_t VP_PrintsTotal = 0x3180; | ||||
| constexpr uint16_t VP_PrintsTotal_LEN = 16; | ||||
| 
 | ||||
| // SDCard File Listing
 | ||||
| constexpr uint16_t VP_SD_FileName_LEN = 32; // LEN is shared for all entries.
 | ||||
| constexpr uint16_t DGUS_SD_FILESPERSCREEN = 5; // FIXME move that info to the display and read it from there.
 | ||||
| constexpr uint16_t VP_SD_FileName0 = 0x3200; | ||||
| constexpr uint16_t VP_SD_FileName1 = 0x3220; | ||||
| constexpr uint16_t VP_SD_FileName2 = 0x3240; | ||||
| constexpr uint16_t VP_SD_FileName3 = 0x3260; | ||||
| constexpr uint16_t VP_SD_FileName4 = 0x3280; | ||||
| 
 | ||||
| constexpr uint16_t VP_SD_Print_ProbeOffsetZ = 0x32A0; //
 | ||||
| constexpr uint16_t VP_SD_Print_Filename = 0x32C0; | ||||
| 
 | ||||
| // Fan status
 | ||||
| constexpr uint16_t VP_FAN0_STATUS = 0x3300; | ||||
| constexpr uint16_t VP_FAN1_STATUS = 0x3302; | ||||
| //constexpr uint16_t VP_FAN2_STATUS = 0x3304;
 | ||||
| //constexpr uint16_t VP_FAN3_STATUS = 0x3306;
 | ||||
| 
 | ||||
| // Heater status
 | ||||
| constexpr uint16_t VP_E0_STATUS = 0x3310; | ||||
| //constexpr uint16_t VP_E1_STATUS = 0x3312;
 | ||||
| //constexpr uint16_t VP_E2_STATUS = 0x3314;
 | ||||
| //constexpr uint16_t VP_E3_STATUS = 0x3316;
 | ||||
| //constexpr uint16_t VP_E4_STATUS = 0x3318;
 | ||||
| //constexpr uint16_t VP_E5_STATUS = 0x331A;
 | ||||
| constexpr uint16_t VP_BED_STATUS = 0x331C; | ||||
| 
 | ||||
| constexpr uint16_t VP_MOVE_OPTION = 0x3400; | ||||
| 
 | ||||
| // Step per mm
 | ||||
| constexpr uint16_t VP_X_STEP_PER_MM = 0x3600; // at the moment , 2 byte unsigned int , 0~1638.4
 | ||||
| //constexpr uint16_t VP_X2_STEP_PER_MM = 0x3602;
 | ||||
| constexpr uint16_t VP_Y_STEP_PER_MM = 0x3604; | ||||
| //constexpr uint16_t VP_Y2_STEP_PER_MM = 0x3606;
 | ||||
| constexpr uint16_t VP_Z_STEP_PER_MM = 0x3608; | ||||
| //constexpr uint16_t VP_Z2_STEP_PER_MM = 0x360A;
 | ||||
| constexpr uint16_t VP_E0_STEP_PER_MM = 0x3610; | ||||
| constexpr uint16_t VP_E1_STEP_PER_MM = 0x3612; | ||||
| //constexpr uint16_t VP_E2_STEP_PER_MM = 0x3614;
 | ||||
| //constexpr uint16_t VP_E3_STEP_PER_MM = 0x3616;
 | ||||
| //constexpr uint16_t VP_E4_STEP_PER_MM = 0x3618;
 | ||||
| //constexpr uint16_t VP_E5_STEP_PER_MM = 0x361A;
 | ||||
| 
 | ||||
| // PIDs
 | ||||
| constexpr uint16_t VP_E0_PID_P = 0x3700; // at the moment , 2 byte unsigned int , 0~1638.4
 | ||||
| constexpr uint16_t VP_E0_PID_I = 0x3702; | ||||
| constexpr uint16_t VP_E0_PID_D = 0x3704; | ||||
| constexpr uint16_t VP_BED_PID_P = 0x3710; | ||||
| constexpr uint16_t VP_BED_PID_I = 0x3712; | ||||
| constexpr uint16_t VP_BED_PID_D = 0x3714; | ||||
| 
 | ||||
| // Wating screen status
 | ||||
| constexpr uint16_t VP_WAITING_STATUS = 0x3800; | ||||
| 
 | ||||
| // SPs for certain variables...
 | ||||
| // located at 0x5000 and up
 | ||||
| // Not used yet!
 | ||||
| // This can be used e.g to make controls / data display invisible
 | ||||
| constexpr uint16_t SP_T_E0_Is = 0x5000; | ||||
| constexpr uint16_t SP_T_E0_Set = 0x5010; | ||||
| constexpr uint16_t SP_T_E1_Is = 0x5020; | ||||
| constexpr uint16_t SP_T_Bed_Is = 0x5030; | ||||
| constexpr uint16_t SP_T_Bed_Set = 0x5040; | ||||
| @ -0,0 +1,476 @@ | ||||
| /**
 | ||||
|  * Marlin 3D Printer Firmware | ||||
|  * Copyright (c) 2019 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 <http://www.gnu.org/licenses/>.
 | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /* DGUS VPs changed by George Fu in 2019 for Marlin */ | ||||
| 
 | ||||
| #include "../../../../inc/MarlinConfigPre.h" | ||||
| 
 | ||||
| #if ENABLED(DGUS_LCD_UI_HIPRECY) | ||||
| 
 | ||||
| #include "DGUSDisplayDefinition.h" | ||||
| #include "DGUSDisplay.h" | ||||
| 
 | ||||
| #include "../../../../module/temperature.h" | ||||
| #include "../../../../module/motion.h" | ||||
| #include "../../../../module/planner.h" | ||||
| 
 | ||||
| #include "../../ui_api.h" | ||||
| #include "../../../ultralcd.h" | ||||
| 
 | ||||
| #if ENABLED(DUGS_UI_MOVE_DIS_OPTION) | ||||
|   uint16_t distanceToMove = 0.1; | ||||
| #endif | ||||
| 
 | ||||
| const uint16_t VPList_Boot[] PROGMEM = { | ||||
|   VP_MARLIN_VERSION, | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_Main[] PROGMEM = { | ||||
|   /* VP_M117, for completeness, but it cannot be auto-uploaded. */ | ||||
|   #if HOTENDS >= 1 | ||||
|     VP_T_E0_Is, VP_T_E0_Set, VP_E0_STATUS, | ||||
|   #endif | ||||
|   #if HOTENDS >= 2 | ||||
|     VP_T_E1_Is, VP_T_E1_Set, | ||||
|   #endif | ||||
|   #if HAS_HEATED_BED | ||||
|     VP_T_Bed_Is, VP_T_Bed_Set, VP_BED_STATUS, | ||||
|   #endif | ||||
|   #if FAN_COUNT > 0 | ||||
|     VP_Fan0_Percentage, VP_FAN0_STATUS, | ||||
|   #endif | ||||
|   VP_XPos, VP_YPos, VP_ZPos, | ||||
|   VP_Fan0_Percentage, | ||||
|   VP_Feedrate_Percentage, | ||||
|   #if ENABLED(LCD_SET_PROGRESS_MANUALLY) | ||||
|     VP_PrintProgress_Percentage, | ||||
|   #endif | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_Temp[] PROGMEM = { | ||||
|   #if HOTENDS >= 1 | ||||
|     VP_T_E0_Is, VP_T_E0_Set, | ||||
|   #endif | ||||
|   #if HOTENDS >= 2 | ||||
|     VP_T_E1_Is, VP_T_E1_Set, | ||||
|   #endif | ||||
|   #if HAS_HEATED_BED | ||||
|     VP_T_Bed_Is, VP_T_Bed_Set, | ||||
|   #endif | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_Status[] PROGMEM = { | ||||
|   /* VP_M117, for completeness, but it cannot be auto-uploaded */ | ||||
|   #if HOTENDS >= 1 | ||||
|     VP_T_E0_Is, VP_T_E0_Set, | ||||
|   #endif | ||||
|   #if HOTENDS >= 2 | ||||
|     VP_T_E1_Is, VP_T_E1_Set, | ||||
|   #endif | ||||
|   #if HAS_HEATED_BED | ||||
|     VP_T_Bed_Is, VP_T_Bed_Set, | ||||
|   #endif | ||||
|   #if FAN_COUNT > 0 | ||||
|     VP_Fan0_Percentage, | ||||
|   #endif | ||||
|   VP_XPos, VP_YPos, VP_ZPos, | ||||
|   VP_Fan0_Percentage, | ||||
|   VP_Feedrate_Percentage, | ||||
|   VP_PrintProgress_Percentage, | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_Status2[] PROGMEM = { | ||||
|   /* VP_M117, for completeness, but it cannot be auto-uploaded */ | ||||
|   #if HOTENDS >= 1 | ||||
|     VP_Flowrate_E0, | ||||
|   #endif | ||||
|   #if HOTENDS >= 2 | ||||
|     VP_Flowrate_E1, | ||||
|   #endif | ||||
|   VP_PrintProgress_Percentage, | ||||
|   VP_PrintTime, | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_Preheat[] PROGMEM = { | ||||
|   #if HOTENDS >= 1 | ||||
|     VP_T_E0_Is, VP_T_E0_Set, | ||||
|   #endif | ||||
|   #if HOTENDS >= 2 | ||||
|     VP_T_E1_Is, VP_T_E1_Set, | ||||
|   #endif | ||||
|   #if HAS_HEATED_BED | ||||
|     VP_T_Bed_Is, VP_T_Bed_Set, | ||||
|   #endif | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_ManualMove[] PROGMEM = { | ||||
|   VP_XPos, VP_YPos, VP_ZPos, | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_ManualExtrude[] PROGMEM = { | ||||
|   #if HOTENDS >= 1 | ||||
|     VP_T_E0_Is, VP_T_E0_Set, | ||||
|   #endif | ||||
|   #if HOTENDS >= 2 | ||||
|     VP_T_E1_Is, VP_T_E1_Set, | ||||
|   #endif | ||||
|   VP_EPos, | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_FanAndFeedrate[] PROGMEM = { | ||||
|   VP_Feedrate_Percentage, VP_Fan0_Percentage, | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_SD_FlowRates[] PROGMEM = { | ||||
|   VP_Flowrate_E0, VP_Flowrate_E1, | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_Filament_heating[] PROGMEM = { | ||||
|   #if HOTENDS >= 1 | ||||
|     VP_T_E0_Is, VP_T_E0_Set, | ||||
|     VP_E0_FILAMENT_LOAD_UNLOAD, | ||||
|   #endif | ||||
|   #if HOTENDS >= 2 | ||||
|     VP_T_E1_Is, VP_T_E1_Set, | ||||
|   #endif | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_Filament_load_unload[] PROGMEM = { | ||||
|   #if HOTENDS >= 1 | ||||
|     VP_E0_FILAMENT_LOAD_UNLOAD, | ||||
|   #endif | ||||
|   #if HOTENDS >= 2 | ||||
|     VP_E1_FILAMENT_LOAD_UNLOAD, | ||||
|   #endif | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_SDFileList[] PROGMEM = { | ||||
|   VP_SD_FileName0, VP_SD_FileName1, VP_SD_FileName2, VP_SD_FileName3, VP_SD_FileName4, | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_SD_PrintManipulation[] PROGMEM = { | ||||
|   VP_PrintProgress_Percentage, VP_PrintTime, | ||||
|   #if HOTENDS >= 1 | ||||
|     VP_T_E0_Is, VP_T_E0_Set, | ||||
|   #endif | ||||
|   #if HOTENDS >= 2 | ||||
|     VP_T_E1_Is, VP_T_E1_Set, | ||||
|   #endif | ||||
|   #if HAS_HEATED_BED | ||||
|     VP_T_Bed_Is, VP_T_Bed_Set, | ||||
|   #endif | ||||
|   #if FAN_COUNT > 0 | ||||
|     VP_Fan0_Percentage, | ||||
|     #if FAN_COUNT > 1 | ||||
|       VP_Fan1_Percentage, | ||||
|     #endif | ||||
|   #endif | ||||
|   VP_Flowrate_E0, | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_SDPrintTune[] PROGMEM = { | ||||
|   #if HOTENDS >= 1 | ||||
|     VP_T_E0_Is, VP_T_E0_Set, | ||||
|   #endif | ||||
|   #if HOTENDS >= 2 | ||||
|     VP_T_E1_Is, VP_T_E1_Set, | ||||
|   #endif | ||||
|   #if HAS_HEATED_BED | ||||
|     VP_T_Bed_Is, VP_T_Bed_Set, | ||||
|   #endif | ||||
|   VP_Feedrate_Percentage, | ||||
|   #if FAN_COUNT > 0 | ||||
|     VP_Fan0_Percentage, | ||||
|   #endif | ||||
|   VP_Flowrate_E0, | ||||
|   VP_SD_Print_ProbeOffsetZ, | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_StepPerMM[] PROGMEM = { | ||||
|   VP_X_STEP_PER_MM, | ||||
|   VP_Y_STEP_PER_MM, | ||||
|   VP_Z_STEP_PER_MM, | ||||
|   #if HOTENDS >= 1 | ||||
|     VP_E0_STEP_PER_MM, | ||||
|   #endif | ||||
|   #if HOTENDS >= 2 | ||||
|     VP_E1_STEP_PER_MM, | ||||
|   #endif | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_PIDE0[] PROGMEM = { | ||||
|   #if ENABLED(PIDTEMP) | ||||
|     VP_E0_PID_P, | ||||
|     VP_E0_PID_I, | ||||
|     VP_E0_PID_D, | ||||
|   #endif | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_PIDBED[] PROGMEM = { | ||||
|   #if ENABLED(PIDTEMP) | ||||
|     VP_BED_PID_P, | ||||
|     VP_BED_PID_I, | ||||
|     VP_BED_PID_D, | ||||
|   #endif | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_Infos[] PROGMEM = { | ||||
|   VP_MARLIN_VERSION, | ||||
|   VP_PrintTime, | ||||
|   #if ENABLED(PRINTCOUNTER) | ||||
|     VP_PrintAccTime, | ||||
|     VP_PrintsTotal, | ||||
|   #endif | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_PIDTuningWaiting[] PROGMEM = { | ||||
|   VP_WAITING_STATUS, | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_FLCPreheat[] PROGMEM = { | ||||
|   #if HOTENDS >= 1 | ||||
|     VP_T_E0_Is, VP_T_E0_Set, | ||||
|   #endif | ||||
|   #if HAS_HEATED_BED | ||||
|     VP_T_Bed_Is, VP_T_Bed_Set, | ||||
|   #endif | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_FLCPrinting[] PROGMEM = { | ||||
|   #if HOTENDS >= 1 | ||||
|     VP_SD_Print_ProbeOffsetZ, | ||||
|   #endif | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| const struct VPMapping VPMap[] PROGMEM = { | ||||
|   { DGUSLCD_SCREEN_BOOT, VPList_Boot }, | ||||
|   { DGUSLCD_SCREEN_MAIN, VPList_Main }, | ||||
|   { DGUSLCD_SCREEN_TEMPERATURE, VPList_Temp }, | ||||
|   { DGUSLCD_SCREEN_STATUS, VPList_Status }, | ||||
|   { DGUSLCD_SCREEN_STATUS2, VPList_Status2 }, | ||||
|   { DGUSLCD_SCREEN_PREHEAT, VPList_Preheat }, | ||||
|   { DGUSLCD_SCREEN_MANUALMOVE, VPList_ManualMove }, | ||||
|   { DGUSLCD_SCREEN_MANUALEXTRUDE, VPList_ManualExtrude }, | ||||
|   { DGUSLCD_SCREEN_FILAMENT_HEATING, VPList_Filament_heating }, | ||||
|   { DGUSLCD_SCREEN_FILAMENT_LOADING, VPList_Filament_load_unload }, | ||||
|   { DGUSLCD_SCREEN_FILAMENT_UNLOADING, VPList_Filament_load_unload }, | ||||
|   { DGUSLCD_SCREEN_SDPRINTMANIPULATION, VPList_SD_PrintManipulation }, | ||||
|   { DGUSLCD_SCREEN_SDFILELIST, VPList_SDFileList }, | ||||
|   { DGUSLCD_SCREEN_SDPRINTTUNE, VPList_SDPrintTune }, | ||||
|   { DGUSLCD_SCREEN_WAITING, VPList_PIDTuningWaiting }, | ||||
|   { DGUSLCD_SCREEN_FLC_PREHEAT, VPList_FLCPreheat }, | ||||
|   { DGUSLCD_SCREEN_FLC_PRINTING, VPList_FLCPrinting }, | ||||
|   { DGUSLCD_SCREEN_STEPPERMM, VPList_StepPerMM }, | ||||
|   { DGUSLCD_SCREEN_PID_E, VPList_PIDE0 }, | ||||
|   { DGUSLCD_SCREEN_PID_BED, VPList_PIDBED }, | ||||
|   { DGUSLCD_SCREEN_INFOS, VPList_Infos }, | ||||
|   { 0 , nullptr } // List is terminated with an nullptr as table entry.
 | ||||
| }; | ||||
| 
 | ||||
| const char MarlinVersion[] PROGMEM = SHORT_BUILD_VERSION; | ||||
| 
 | ||||
| // Helper to define a DGUS_VP_Variable for common use cases.
 | ||||
| #define VPHELPER(VPADR, VPADRVAR, RXFPTR, TXFPTR ) { .VP=VPADR, .memadr=VPADRVAR, .size=sizeof(VPADRVAR), \ | ||||
|   .set_by_display_handler = RXFPTR, .send_to_display_handler = TXFPTR } | ||||
| 
 | ||||
| // Helper to define a DGUS_VP_Variable when the sizeo of the var cannot be determined automaticalyl (eg. a string)
 | ||||
| #define VPHELPER_STR(VPADR, VPADRVAR, STRLEN, RXFPTR, TXFPTR ) { .VP=VPADR, .memadr=VPADRVAR, .size=STRLEN, \ | ||||
|   .set_by_display_handler = RXFPTR, .send_to_display_handler = TXFPTR } | ||||
| 
 | ||||
| const struct DGUS_VP_Variable ListOfVP[] PROGMEM = { | ||||
|   // Helper to detect touch events
 | ||||
|   VPHELPER(VP_SCREENCHANGE, nullptr, DGUSScreenVariableHandler::ScreenChangeHook, nullptr), | ||||
|   VPHELPER(VP_SCREENCHANGE_ASK, nullptr, DGUSScreenVariableHandler::ScreenChangeHookIfIdle, nullptr), | ||||
|   VPHELPER(VP_SCREENCHANGE_WHENSD, nullptr, DGUSScreenVariableHandler::ScreenChangeHookIfSD, nullptr), | ||||
|   VPHELPER(VP_CONFIRMED, nullptr, DGUSScreenVariableHandler::ScreenConfirmedOK, nullptr), | ||||
| 
 | ||||
|   VPHELPER(VP_TEMP_ALL_OFF, nullptr, &DGUSScreenVariableHandler::HandleAllHeatersOff, nullptr), | ||||
| 
 | ||||
|   #if ENABLED(DUGS_UI_MOVE_DIS_OPTION) | ||||
|     VPHELPER(VP_MOVE_OPTION, &distanceToMove, &DGUSScreenVariableHandler::HandleManualMoveOption, nullptr), | ||||
|   #endif | ||||
|   #if ENABLED(DUGS_UI_MOVE_DIS_OPTION) | ||||
|     VPHELPER(VP_MOVE_X, &distanceToMove, &DGUSScreenVariableHandler::HandleManualMove, nullptr), | ||||
|     VPHELPER(VP_MOVE_Y, &distanceToMove, &DGUSScreenVariableHandler::HandleManualMove, nullptr), | ||||
|     VPHELPER(VP_MOVE_Z, &distanceToMove, &DGUSScreenVariableHandler::HandleManualMove, nullptr), | ||||
|     VPHELPER(VP_HOME_ALL, &distanceToMove, &DGUSScreenVariableHandler::HandleManualMove, nullptr), | ||||
|   #else | ||||
|     VPHELPER(VP_MOVE_X, nullptr, &DGUSScreenVariableHandler::HandleManualMove, nullptr), | ||||
|     VPHELPER(VP_MOVE_Y, nullptr, &DGUSScreenVariableHandler::HandleManualMove, nullptr), | ||||
|     VPHELPER(VP_MOVE_Z, nullptr, &DGUSScreenVariableHandler::HandleManualMove, nullptr), | ||||
|     VPHELPER(VP_HOME_ALL, nullptr, &DGUSScreenVariableHandler::HandleManualMove, nullptr), | ||||
|   #endif | ||||
|   VPHELPER(VP_MOTOR_LOCK_UNLOK, nullptr, &DGUSScreenVariableHandler::HandleMotorLockUnlock, nullptr), | ||||
|   #if ENABLED(POWER_LOSS_RECOVERY) | ||||
|     VPHELPER(VP_POWER_LOSS_RECOVERY, nullptr, &DGUSScreenVariableHandler::HandlePowerLossRecovery, nullptr), | ||||
|   #endif | ||||
|   VPHELPER(VP_SETTINGS, nullptr, &DGUSScreenVariableHandler::HandleSettings, nullptr), | ||||
|   #if ENABLED(SINGLE_Z_CALIBRATION) | ||||
|     VPHELPER(VP_Z_CALIBRATE, nullptr, &DGUSScreenVariableHandler::HandleZCalibration, nullptr), | ||||
|   #endif | ||||
|   #if ENABLED(FIRST_LAYER_CAL) | ||||
|     VPHELPER(VP_Z_FIRST_LAYER_CAL, nullptr, &DGUSScreenVariableHandler::HandleFirstLayerCal, nullptr), | ||||
|   #endif | ||||
| 
 | ||||
|   { .VP = VP_MARLIN_VERSION, .memadr = (void*)MarlinVersion, .size = VP_MARLIN_VERSION_LEN, .set_by_display_handler = nullptr, .send_to_display_handler =&DGUSScreenVariableHandler::DGUSLCD_SendStringToDisplayPGM }, | ||||
|   // M117 LCD String (We don't need the string in memory but "just" push it to the display on demand, hence the nullptr
 | ||||
|   { .VP = VP_M117, .memadr = nullptr, .size = VP_M117_LEN, .set_by_display_handler = nullptr, .send_to_display_handler =&DGUSScreenVariableHandler::DGUSLCD_SendStringToDisplay }, | ||||
| 
 | ||||
|   // Temperature Data
 | ||||
|   #if HOTENDS >= 1 | ||||
|     VPHELPER(VP_T_E0_Is, &thermalManager.temp_hotend[0].celsius, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<0>), | ||||
|     VPHELPER(VP_T_E0_Set, &thermalManager.temp_hotend[0].target, DGUSScreenVariableHandler::HandleTemperatureChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay), | ||||
|     VPHELPER(VP_Flowrate_E0, nullptr, DGUSScreenVariableHandler::HandleFlowRateChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay), | ||||
|     VPHELPER(VP_EPos, &destination.e, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<2>), | ||||
|     VPHELPER(VP_MOVE_E0, nullptr, &DGUSScreenVariableHandler::HandleManualExtrude, nullptr), | ||||
|     VPHELPER(VP_E0_CONTROL, &thermalManager.temp_hotend[0].target, &DGUSScreenVariableHandler::HandleHeaterControl, nullptr), | ||||
|     VPHELPER(VP_E0_STATUS, &thermalManager.temp_hotend[0].target, nullptr, &DGUSScreenVariableHandler::DGUSLCD_SendHeaterStatusToDisplay), | ||||
|     #if ENABLED(DGUS_PREHEAT_UI) | ||||
|       VPHELPER(VP_E0_BED_PREHEAT, nullptr, &DGUSScreenVariableHandler::HandlePreheat, nullptr), | ||||
|     #endif | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       VPHELPER(VP_E0_FILAMENT_LOAD_UNLOAD, nullptr, &DGUSScreenVariableHandler::HandleFilamentOption, &DGUSScreenVariableHandler::HandleFilamentLoadUnload), | ||||
|     #endif | ||||
|     #if ENABLED(PIDTEMP) | ||||
|       VPHELPER(VP_E0_PID_P, &thermalManager.temp_hotend[0].pid.Kp, DGUSScreenVariableHandler::HandleTemperaturePIDChanged, DGUSScreenVariableHandler::DGUSLCD_SendTemperaturePID), | ||||
|       VPHELPER(VP_E0_PID_I, &thermalManager.temp_hotend[0].pid.Ki, DGUSScreenVariableHandler::HandleTemperaturePIDChanged, DGUSScreenVariableHandler::DGUSLCD_SendTemperaturePID), | ||||
|       VPHELPER(VP_E0_PID_D, &thermalManager.temp_hotend[0].pid.Kd, DGUSScreenVariableHandler::HandleTemperaturePIDChanged, DGUSScreenVariableHandler::DGUSLCD_SendTemperaturePID), | ||||
|       VPHELPER(VP_PID_AUTOTUNE_E0, nullptr, &DGUSScreenVariableHandler::HandlePIDAutotune, nullptr), | ||||
|     #endif | ||||
|   #endif | ||||
|   #if HOTENDS >= 2 | ||||
|     VPHELPER(VP_T_E1_Is, &thermalManager.temp_hotend[1].celsius, nullptr, DGUSLCD_SendFloatAsLongValueToDisplay<0>), | ||||
|     VPHELPER(VP_T_E1_Set, &thermalManager.temp_hotend[1].target, DGUSScreenVariableHandler::HandleTemperatureChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay), | ||||
|     VPHELPER(VP_Flowrate_E1, nullptr, DGUSScreenVariableHandler::HandleFlowRateChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay), | ||||
|     VPHELPER(VP_MOVE_E1, nullptr, &DGUSScreenVariableHandler::HandleManualExtrude, nullptr), | ||||
|     VPHELPER(VP_E1_CONTROL, &thermalManager.temp_hotend[1].target, &DGUSScreenVariableHandler::HandleHeaterControl, nullptr), | ||||
|     VPHELPER(VP_E1_STATUS, &thermalManager.temp_hotend[1].target, nullptr, &DGUSScreenVariableHandler::DGUSLCD_SendHeaterStatusToDisplay), | ||||
|   #endif | ||||
|   #if HAS_HEATED_BED | ||||
|     VPHELPER(VP_T_Bed_Is, &thermalManager.temp_bed.celsius, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<0>), | ||||
|     VPHELPER(VP_T_Bed_Set, &thermalManager.temp_bed.target, DGUSScreenVariableHandler::HandleTemperatureChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay), | ||||
|     VPHELPER(VP_BED_CONTROL, &thermalManager.temp_bed.target, &DGUSScreenVariableHandler::HandleHeaterControl, nullptr), | ||||
|     VPHELPER(VP_BED_STATUS, &thermalManager.temp_bed.target, nullptr, &DGUSScreenVariableHandler::DGUSLCD_SendHeaterStatusToDisplay), | ||||
|     #if ENABLED(PIDTEMP) | ||||
|       VPHELPER(VP_BED_PID_P, &thermalManager.temp_bed.pid.Kp, DGUSScreenVariableHandler::HandleTemperaturePIDChanged, DGUSScreenVariableHandler::DGUSLCD_SendTemperaturePID), | ||||
|       VPHELPER(VP_BED_PID_I, &thermalManager.temp_bed.pid.Ki, DGUSScreenVariableHandler::HandleTemperaturePIDChanged, DGUSScreenVariableHandler::DGUSLCD_SendTemperaturePID), | ||||
|       VPHELPER(VP_BED_PID_D, &thermalManager.temp_bed.pid.Kd, DGUSScreenVariableHandler::HandleTemperaturePIDChanged, DGUSScreenVariableHandler::DGUSLCD_SendTemperaturePID), | ||||
|       VPHELPER(VP_PID_AUTOTUNE_BED, nullptr, &DGUSScreenVariableHandler::HandlePIDAutotune, nullptr), | ||||
|     #endif | ||||
|   #endif | ||||
| 
 | ||||
|   // Fan Data
 | ||||
|   #if FAN_COUNT | ||||
|     #define FAN_VPHELPER(N) \ | ||||
|       VPHELPER(VP_Fan##N##_Percentage, &thermalManager.fan_speed[N], DGUSScreenVariableHandler::DGUSLCD_PercentageToUint8, &DGUSScreenVariableHandler::DGUSLCD_SendPercentageToDisplay), \ | ||||
|       VPHELPER(VP_FAN##N##_CONTROL, &thermalManager.fan_speed[N], &DGUSScreenVariableHandler::HandleFanControl, nullptr), \ | ||||
|       VPHELPER(VP_FAN##N##_STATUS, &thermalManager.fan_speed[N], nullptr, &DGUSScreenVariableHandler::DGUSLCD_SendFanStatusToDisplay), | ||||
|     REPEAT(FAN_COUNT, FAN_VPHELPER) | ||||
|   #endif | ||||
| 
 | ||||
|   // Feedrate
 | ||||
|   VPHELPER(VP_Feedrate_Percentage, &feedrate_percentage, DGUSScreenVariableHandler::DGUSLCD_SetValueDirectly<int16_t>, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay ), | ||||
| 
 | ||||
|   // Position Data
 | ||||
|   VPHELPER(VP_XPos, ¤t_position.x, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<2>), | ||||
|   VPHELPER(VP_YPos, ¤t_position.y, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<2>), | ||||
|   VPHELPER(VP_ZPos, ¤t_position.z, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<2>), | ||||
| 
 | ||||
|   // Print Progress
 | ||||
|   #if ENABLED(LCD_SET_PROGRESS_MANUALLY) | ||||
|     VPHELPER(VP_PrintProgress_Percentage, &ui.progress_override, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay ), | ||||
|   #endif | ||||
| 
 | ||||
|   // Print Time
 | ||||
|   VPHELPER_STR(VP_PrintTime, nullptr, VP_PrintTime_LEN, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendPrintTimeToDisplay ), | ||||
|   #if ENABLED(PRINTCOUNTER) | ||||
|     VPHELPER_STR(VP_PrintAccTime, nullptr, VP_PrintAccTime_LEN, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendPrintAccTimeToDisplay ), | ||||
|     VPHELPER_STR(VP_PrintsTotal, nullptr, VP_PrintsTotal_LEN, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendPrintsTotalToDisplay ), | ||||
|   #endif | ||||
| 
 | ||||
|   VPHELPER(VP_X_STEP_PER_MM, &planner.settings.axis_steps_per_mm[X_AXIS], DGUSScreenVariableHandler::HandleStepPerMMChanged, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsIntValueToDisplay<1>), | ||||
|   VPHELPER(VP_Y_STEP_PER_MM, &planner.settings.axis_steps_per_mm[Y_AXIS], DGUSScreenVariableHandler::HandleStepPerMMChanged, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsIntValueToDisplay<1>), | ||||
|   VPHELPER(VP_Z_STEP_PER_MM, &planner.settings.axis_steps_per_mm[Z_AXIS], DGUSScreenVariableHandler::HandleStepPerMMChanged, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsIntValueToDisplay<1>), | ||||
|   #if HOTENDS >= 1 | ||||
|     VPHELPER(VP_E0_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(0)], DGUSScreenVariableHandler::HandleStepPerMMExtruderChanged, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsIntValueToDisplay<1>), | ||||
|   #endif | ||||
|   #if HOTENDS >= 2 | ||||
|     VPHELPER(VP_E1_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(1)], DGUSScreenVariableHandler::HandleStepPerMMExtruderChanged, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsIntValueToDisplay<1>), | ||||
|   #endif | ||||
| 
 | ||||
|   // SDCard File listing.
 | ||||
|   #if ENABLED(SDSUPPORT) | ||||
|     VPHELPER(VP_SD_ScrollEvent, nullptr, DGUSScreenVariableHandler::DGUSLCD_SD_ScrollFilelist, nullptr), | ||||
|     VPHELPER(VP_SD_FileSelected, nullptr, DGUSScreenVariableHandler::DGUSLCD_SD_FileSelected, nullptr), | ||||
|     VPHELPER(VP_SD_FileSelectConfirm, nullptr, DGUSScreenVariableHandler::DGUSLCD_SD_StartPrint, nullptr), | ||||
|     VPHELPER_STR(VP_SD_FileName0,  nullptr, VP_SD_FileName_LEN, nullptr, DGUSScreenVariableHandler::DGUSLCD_SD_SendFilename ), | ||||
|     VPHELPER_STR(VP_SD_FileName1,  nullptr, VP_SD_FileName_LEN, nullptr, DGUSScreenVariableHandler::DGUSLCD_SD_SendFilename ), | ||||
|     VPHELPER_STR(VP_SD_FileName2,  nullptr, VP_SD_FileName_LEN, nullptr, DGUSScreenVariableHandler::DGUSLCD_SD_SendFilename ), | ||||
|     VPHELPER_STR(VP_SD_FileName3,  nullptr, VP_SD_FileName_LEN, nullptr, DGUSScreenVariableHandler::DGUSLCD_SD_SendFilename ), | ||||
|     VPHELPER_STR(VP_SD_FileName4,  nullptr, VP_SD_FileName_LEN, nullptr, DGUSScreenVariableHandler::DGUSLCD_SD_SendFilename ), | ||||
|     VPHELPER(VP_SD_ResumePauseAbort, nullptr, DGUSScreenVariableHandler::DGUSLCD_SD_ResumePauseAbort, nullptr), | ||||
|     VPHELPER(VP_SD_AbortPrintConfirmed, nullptr, DGUSScreenVariableHandler::DGUSLCD_SD_ReallyAbort, nullptr), | ||||
|     VPHELPER(VP_SD_Print_Setting, nullptr, DGUSScreenVariableHandler::DGUSLCD_SD_PrintTune, nullptr), | ||||
|     #if HAS_BED_PROBE | ||||
|       VPHELPER(VP_SD_Print_ProbeOffsetZ, &probe_offset.z, DGUSScreenVariableHandler::HandleProbeOffsetZChanged, &DGUSScreenVariableHandler::DGUSLCD_SendFloatAsIntValueToDisplay<2>), | ||||
|       #if ENABLED(BABYSTEPPING) | ||||
|         VPHELPER(VP_SD_Print_LiveAdjustZ, nullptr, DGUSScreenVariableHandler::HandleLiveAdjustZ, nullptr), | ||||
|       #endif | ||||
|     #endif | ||||
|   #endif | ||||
| 
 | ||||
|   #if ENABLED(DGUS_UI_WAITING) | ||||
|     VPHELPER(VP_WAITING_STATUS, nullptr, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendWaitingStatusToDisplay), | ||||
|   #endif | ||||
| 
 | ||||
|   // Messages for the User, shared by the popup and the kill screen. They cant be autouploaded as we do not buffer content.
 | ||||
|   { .VP = VP_MSGSTR1, .memadr = nullptr, .size = VP_MSGSTR1_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = &DGUSScreenVariableHandler::DGUSLCD_SendStringToDisplayPGM }, | ||||
|   { .VP = VP_MSGSTR2, .memadr = nullptr, .size = VP_MSGSTR2_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = &DGUSScreenVariableHandler::DGUSLCD_SendStringToDisplayPGM }, | ||||
|   { .VP = VP_MSGSTR3, .memadr = nullptr, .size = VP_MSGSTR3_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = &DGUSScreenVariableHandler::DGUSLCD_SendStringToDisplayPGM }, | ||||
|   { .VP = VP_MSGSTR4, .memadr = nullptr, .size = VP_MSGSTR4_LEN, .set_by_display_handler = nullptr, .send_to_display_handler = &DGUSScreenVariableHandler::DGUSLCD_SendStringToDisplayPGM }, | ||||
| 
 | ||||
|   VPHELPER(0, 0, 0, 0)  // must be last entry.
 | ||||
| }; | ||||
| 
 | ||||
| #endif // DGUS_LCD_UI_HIPRECY
 | ||||
| @ -0,0 +1,289 @@ | ||||
| /**
 | ||||
|  * Marlin 3D Printer Firmware | ||||
|  * Copyright (c) 2019 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 <http://www.gnu.org/licenses/>.
 | ||||
|  * | ||||
|  */ | ||||
| #pragma once | ||||
| 
 | ||||
| enum DGUSLCD_Screens : uint8_t { | ||||
|   DGUSLCD_SCREEN_BOOT                 = 160, | ||||
|   DGUSLCD_SCREEN_MAIN                 =   1, | ||||
|   DGUSLCD_SCREEN_STATUS               =   1, | ||||
|   DGUSLCD_SCREEN_STATUS2              =   1, | ||||
|   DGUSLCD_SCREEN_POWER_LOSS           =  17, | ||||
|   DGUSLCD_SCREEN_TEMPERATURE          =  40, | ||||
|   DGUSLCD_SCREEN_MANUALMOVE           =  86, | ||||
|   DGUSLCD_SCREEN_PREHEAT              =  48, | ||||
|   DGUSLCD_SCREEN_UTILITY              =  70, | ||||
|   DGUSLCD_SCREEN_FILAMENT_HEATING     =  80, | ||||
|   DGUSLCD_SCREEN_FILAMENT_LOADING     =  76, | ||||
|   DGUSLCD_SCREEN_FILAMENT_UNLOADING   =  82, | ||||
|   DGUSLCD_SCREEN_MANUALEXTRUDE        =  84, | ||||
|   DGUSLCD_SCREEN_SDFILELIST           =   3, | ||||
|   DGUSLCD_SCREEN_SDPRINTMANIPULATION  =   7, | ||||
|   DGUSLCD_SCREEN_SDPRINTTUNE          =   9, | ||||
|   DGUSLCD_SCREEN_FLC_PREHEAT          =  94, | ||||
|   DGUSLCD_SCREEN_FLC_PRINTING         =  96, | ||||
|   DGUSLCD_SCREEN_STEPPERMM            = 122, | ||||
|   DGUSLCD_SCREEN_PID_E                = 126, | ||||
|   DGUSLCD_SCREEN_PID_BED              = 128, | ||||
|   DGUSLCD_SCREEN_INFOS                = 131, | ||||
|   DGUSLCD_SCREEN_CONFIRM              = 240, | ||||
|   DGUSLCD_SCREEN_KILL                 = 250, ///< Kill Screen. Must always be 250 (to be able to display "Error wrong LCD Version")
 | ||||
|   DGUSLCD_SCREEN_WAITING              = 251, | ||||
|   DGUSLCD_SCREEN_POPUP                = 252, ///< special target, popup screen will also return this code to say "return to previous screen"
 | ||||
|   DGUSLDC_SCREEN_UNUSED               = 255 | ||||
| }; | ||||
| 
 | ||||
| // Display Memory layout used (T5UID)
 | ||||
| // Except system variables this is arbitrary, just to organize stuff....
 | ||||
| 
 | ||||
| // 0x0000 .. 0x0FFF  -- System variables and reserved by the display
 | ||||
| // 0x1000 .. 0x1FFF  -- Variables to never change location, regardless of UI Version
 | ||||
| // 0x2000 .. 0x2FFF  -- Controls (VPs that will trigger some action)
 | ||||
| // 0x3000 .. 0x4FFF  -- Marlin Data to be displayed
 | ||||
| // 0x5000 ..         -- SPs (if we want to modify display elements, e.g change color or like) -- currently unused
 | ||||
| 
 | ||||
| // As there is plenty of space (at least most displays have >8k RAM), we do not pack them too tight,
 | ||||
| // so that we can keep variables nicely together in the address space.
 | ||||
| 
 | ||||
| // UI Version always on 0x1000...0x1002 so that the firmware can check this and bail out.
 | ||||
| constexpr uint16_t VP_UI_VERSION_MAJOR = 0x1000;  // Major -- incremented when incompatible
 | ||||
| constexpr uint16_t VP_UI_VERSION_MINOR = 0x1001;  // Minor -- incremented on new features, but compatible
 | ||||
| constexpr uint16_t VP_UI_VERSION_PATCH = 0x1002;  // Patch -- fixed which do not change functionality.
 | ||||
| constexpr uint16_t VP_UI_FLAVOUR       = 0x1010;  // lets reserve 16 bytes here to determine if UI is suitable for this Marlin. tbd.
 | ||||
| 
 | ||||
| // Storage space for the Killscreen messages. 0x1100 - 0x1200 . Reused for the popup.
 | ||||
| constexpr uint16_t VP_MSGSTR1 = 0x1100; | ||||
| constexpr uint8_t VP_MSGSTR1_LEN = 0x20;  // might be more place for it...
 | ||||
| constexpr uint16_t VP_MSGSTR2 = 0x1140; | ||||
| constexpr uint8_t VP_MSGSTR2_LEN = 0x20; | ||||
| constexpr uint16_t VP_MSGSTR3 = 0x1180; | ||||
| constexpr uint8_t VP_MSGSTR3_LEN = 0x20; | ||||
| constexpr uint16_t VP_MSGSTR4 = 0x11C0; | ||||
| constexpr uint8_t VP_MSGSTR4_LEN = 0x20; | ||||
| 
 | ||||
| // Screenchange request for screens that only make sense when printer is idle.
 | ||||
| // e.g movement is only allowed if printer is not printing.
 | ||||
| // Marlin must confirm by setting the screen manually.
 | ||||
| constexpr uint16_t VP_SCREENCHANGE_ASK = 0x2000; | ||||
| constexpr uint16_t VP_SCREENCHANGE = 0x2001;   // Key-Return button to new menu pressed. Data contains target screen in low byte and info in high byte.
 | ||||
| constexpr uint16_t VP_TEMP_ALL_OFF = 0x2002;   // Turn all heaters off. Value arbitrary ;)=
 | ||||
| constexpr uint16_t VP_SCREENCHANGE_WHENSD = 0x2003; // "Print" Button touched -- go only there if there is an SD Card.
 | ||||
| 
 | ||||
| constexpr uint16_t VP_CONFIRMED = 0x2010; // OK on confirm screen.
 | ||||
| 
 | ||||
| // Buttons on the SD-Card File listing.
 | ||||
| constexpr uint16_t VP_SD_ScrollEvent = 0x2020; // Data: 0 for "up a directory", numbers are the amount to scroll, e.g -1 one up, 1 one down
 | ||||
| constexpr uint16_t VP_SD_FileSelected = 0x2022; // Number of file field selected.
 | ||||
| constexpr uint16_t VP_SD_FileSelectConfirm = 0x2024; // (This is a virtual VP and emulated by the Confirm Screen when a file has been confirmed)
 | ||||
| 
 | ||||
| constexpr uint16_t VP_SD_ResumePauseAbort = 0x2026; // Resume(Data=0), Pause(Data=1), Abort(Data=2) SD Card prints
 | ||||
| constexpr uint16_t VP_SD_AbortPrintConfirmed = 0x2028; // Abort print confirmation (virtual, will be injected by the confirm dialog)
 | ||||
| constexpr uint16_t VP_SD_Print_Setting = 0x2040; | ||||
| constexpr uint16_t VP_SD_Print_LiveAdjustZ = 0x2050; // Data: 0 down, 1 up
 | ||||
| 
 | ||||
| // Controls for movement (we can't use the incremental / decremental feature of the display at this feature works only with 16 bit values
 | ||||
| // (which would limit us to 655.35mm, which is likely not a problem for common setups, but i don't want to rule out hangprinters support)
 | ||||
| // A word about the coding: The VP will be per axis and the return code will be an signed 16 bit value in 0.01 mm resolution, telling us
 | ||||
| // the relative travel amount t he user wants to do. So eg. if the display sends us VP=2100 with value 100, the user wants us to move X by +1 mm.
 | ||||
| constexpr uint16_t VP_MOVE_X = 0x2100; | ||||
| constexpr uint16_t VP_MOVE_Y = 0x2102; | ||||
| constexpr uint16_t VP_MOVE_Z = 0x2104; | ||||
| constexpr uint16_t VP_MOVE_E0 = 0x2110; | ||||
| constexpr uint16_t VP_MOVE_E1 = 0x2112; | ||||
| //constexpr uint16_t VP_MOVE_E2 = 0x2114;
 | ||||
| //constexpr uint16_t VP_MOVE_E3 = 0x2116;
 | ||||
| //constexpr uint16_t VP_MOVE_E4 = 0x2118;
 | ||||
| //constexpr uint16_t VP_MOVE_E5 = 0x211A;
 | ||||
| constexpr uint16_t VP_HOME_ALL = 0x2120; | ||||
| constexpr uint16_t VP_MOTOR_LOCK_UNLOK = 0x2130; | ||||
| 
 | ||||
| // Power loss recovery
 | ||||
| constexpr uint16_t VP_POWER_LOSS_RECOVERY = 0x2180; | ||||
| 
 | ||||
| // Fan Control Buttons , switch between "off" and "on"
 | ||||
| constexpr uint16_t VP_FAN0_CONTROL = 0x2200; | ||||
| constexpr uint16_t VP_FAN1_CONTROL = 0x2202; | ||||
| //constexpr uint16_t VP_FAN2_CONTROL = 0x2204;
 | ||||
| //constexpr uint16_t VP_FAN3_CONTROL = 0x2206;
 | ||||
| 
 | ||||
| // Heater Control Buttons , triged between "cool down" and "heat PLA" state
 | ||||
| constexpr uint16_t VP_E0_CONTROL = 0x2210; | ||||
| constexpr uint16_t VP_E1_CONTROL = 0x2212; | ||||
| //constexpr uint16_t VP_E2_CONTROL = 0x2214;
 | ||||
| //constexpr uint16_t VP_E3_CONTROL = 0x2216;
 | ||||
| //constexpr uint16_t VP_E4_CONTROL = 0x2218;
 | ||||
| //constexpr uint16_t VP_E5_CONTROL = 0x221A;
 | ||||
| constexpr uint16_t VP_BED_CONTROL = 0x221C; | ||||
| 
 | ||||
| // Preheat
 | ||||
| constexpr uint16_t VP_E0_BED_PREHEAT = 0x2220; | ||||
| //constexpr uint16_t VP_E1_BED_PREHEAT = 0x2222;
 | ||||
| //constexpr uint16_t VP_E2_BED_PREHEAT = 0x2224;
 | ||||
| //constexpr uint16_t VP_E3_BED_PREHEAT = 0x2226;
 | ||||
| //constexpr uint16_t VP_E4_BED_PREHEAT = 0x2228;
 | ||||
| //constexpr uint16_t VP_E5_BED_PREHEAT = 0x222A;
 | ||||
| 
 | ||||
| // Filament load and unload
 | ||||
| constexpr uint16_t VP_E0_FILAMENT_LOAD_UNLOAD = 0x2300; | ||||
| 
 | ||||
| // Settings store , reset
 | ||||
| constexpr uint16_t VP_SETTINGS = 0x2400; | ||||
| 
 | ||||
| // PID autotune
 | ||||
| constexpr uint16_t VP_PID_AUTOTUNE_E0 = 0x2410; | ||||
| //constexpr uint16_t VP_PID_AUTOTUNE_E1 = 0x2412;
 | ||||
| //constexpr uint16_t VP_PID_AUTOTUNE_E2 = 0x2414;
 | ||||
| //constexpr uint16_t VP_PID_AUTOTUNE_E3 = 0x2416;
 | ||||
| //constexpr uint16_t VP_PID_AUTOTUNE_E4 = 0x2418;
 | ||||
| //constexpr uint16_t VP_PID_AUTOTUNE_E5 = 0x241A;
 | ||||
| constexpr uint16_t VP_PID_AUTOTUNE_BED = 0x2420; | ||||
| 
 | ||||
| // Calibrate Z
 | ||||
| constexpr uint16_t VP_Z_CALIBRATE = 0x2430; | ||||
| 
 | ||||
| // First layer cal
 | ||||
| constexpr uint16_t VP_Z_FIRST_LAYER_CAL = 0x2500; // Data: 0 - Cancel first layer cal progress, >0 filament type have loaded
 | ||||
| 
 | ||||
| // Firmware version on the boot screen.
 | ||||
| constexpr uint16_t VP_MARLIN_VERSION = 0x3000; | ||||
| constexpr uint8_t VP_MARLIN_VERSION_LEN = 16;   // there is more space on the display, if needed.
 | ||||
| 
 | ||||
| // Place for status messages.
 | ||||
| constexpr uint16_t VP_M117 = 0x3020; | ||||
| constexpr uint8_t VP_M117_LEN = 0x20; | ||||
| 
 | ||||
| // Temperatures.
 | ||||
| constexpr uint16_t VP_T_E0_Is = 0x3060;  // 4 Byte Integer
 | ||||
| constexpr uint16_t VP_T_E0_Set = 0x3062; // 2 Byte Integer
 | ||||
| constexpr uint16_t VP_T_E1_Is = 0x3064;  // 4 Byte Integer
 | ||||
| 
 | ||||
| // reserved to support up to 6 Extruders:
 | ||||
| //constexpr uint16_t VP_T_E1_Set = 0x3066; // 2 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E2_Is = 0x3068;  // 4 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E2_Set = 0x306A; // 2 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E3_Is = 0x306C;  // 4 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E3_Set = 0x306E; // 2 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E4_Is = 0x3070;  // 4 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E4_Set = 0x3072; // 2 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E4_Is = 0x3074;  // 4 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E4_Set = 0x3076; // 2 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E5_Is = 0x3078;  // 4 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E5_Set = 0x307A; // 2 Byte Integer
 | ||||
| 
 | ||||
| constexpr uint16_t VP_T_Bed_Is = 0x3080;  // 4 Byte Integer
 | ||||
| constexpr uint16_t VP_T_Bed_Set = 0x3082; // 2 Byte Integer
 | ||||
| 
 | ||||
| constexpr uint16_t VP_Flowrate_E0 = 0x3090; // 2 Byte Integer
 | ||||
| constexpr uint16_t VP_Flowrate_E1 = 0x3092; // 2 Byte Integer
 | ||||
| 
 | ||||
| // reserved for up to 6 Extruders:
 | ||||
| //constexpr uint16_t VP_Flowrate_E2 = 0x3094;
 | ||||
| //constexpr uint16_t VP_Flowrate_E3 = 0x3096;
 | ||||
| //constexpr uint16_t VP_Flowrate_E4 = 0x3098;
 | ||||
| //constexpr uint16_t VP_Flowrate_E5 = 0x309A;
 | ||||
| 
 | ||||
| constexpr uint16_t VP_Fan0_Percentage = 0x3100;  // 2 Byte Integer (0..100)
 | ||||
| constexpr uint16_t VP_Fan1_Percentage = 0x3102;  // 2 Byte Integer (0..100)
 | ||||
| constexpr uint16_t VP_Fan2_Percentage = 0x3104;  // 2 Byte Integer (0..100)
 | ||||
| constexpr uint16_t VP_Fan3_Percentage = 0x3106;  // 2 Byte Integer (0..100)
 | ||||
| constexpr uint16_t VP_Feedrate_Percentage = 0x3108; // 2 Byte Integer (0..100)
 | ||||
| 
 | ||||
| // Actual Position
 | ||||
| constexpr uint16_t VP_XPos = 0x3110;  // 4 Byte Fixed point number; format xxx.yy
 | ||||
| constexpr uint16_t VP_YPos = 0x3112;  // 4 Byte Fixed point number; format xxx.yy
 | ||||
| constexpr uint16_t VP_ZPos = 0x3114;  // 4 Byte Fixed point number; format xxx.yy
 | ||||
| 
 | ||||
| constexpr uint16_t VP_EPos = 0x3120;  // 4 Byte Fixed point number; format xxx.yy
 | ||||
| 
 | ||||
| constexpr uint16_t VP_PrintProgress_Percentage = 0x3130; // 2 Byte Integer (0..100)
 | ||||
| 
 | ||||
| constexpr uint16_t VP_PrintTime = 0x3140; | ||||
| constexpr uint16_t VP_PrintTime_LEN = 32; | ||||
| 
 | ||||
| constexpr uint16_t VP_PrintAccTime = 0x3160; | ||||
| constexpr uint16_t VP_PrintAccTime_LEN = 32; | ||||
| 
 | ||||
| constexpr uint16_t VP_PrintsTotal = 0x3180; | ||||
| constexpr uint16_t VP_PrintsTotal_LEN = 16; | ||||
| 
 | ||||
| // SDCard File Listing
 | ||||
| constexpr uint16_t VP_SD_FileName_LEN = 32; // LEN is shared for all entries.
 | ||||
| constexpr uint16_t DGUS_SD_FILESPERSCREEN = 5; // FIXME move that info to the display and read it from there.
 | ||||
| constexpr uint16_t VP_SD_FileName0 = 0x3200; | ||||
| constexpr uint16_t VP_SD_FileName1 = 0x3220; | ||||
| constexpr uint16_t VP_SD_FileName2 = 0x3240; | ||||
| constexpr uint16_t VP_SD_FileName3 = 0x3260; | ||||
| constexpr uint16_t VP_SD_FileName4 = 0x3280; | ||||
| 
 | ||||
| constexpr uint16_t VP_SD_Print_ProbeOffsetZ = 0x32A0; //
 | ||||
| 
 | ||||
| constexpr uint16_t VP_SD_Print_Filename = 0x32C0; //
 | ||||
| // Fan status
 | ||||
| constexpr uint16_t VP_FAN0_STATUS = 0x3300; | ||||
| constexpr uint16_t VP_FAN1_STATUS = 0x3302; | ||||
| //constexpr uint16_t VP_FAN2_STATUS = 0x3304;
 | ||||
| //constexpr uint16_t VP_FAN3_STATUS = 0x3306;
 | ||||
| 
 | ||||
| // Heater status
 | ||||
| constexpr uint16_t VP_E0_STATUS = 0x3310; | ||||
| //constexpr uint16_t VP_E1_STATUS = 0x3312;
 | ||||
| //constexpr uint16_t VP_E2_STATUS = 0x3314;
 | ||||
| //constexpr uint16_t VP_E3_STATUS = 0x3316;
 | ||||
| //constexpr uint16_t VP_E4_STATUS = 0x3318;
 | ||||
| //constexpr uint16_t VP_E5_STATUS = 0x331A;
 | ||||
| constexpr uint16_t VP_BED_STATUS = 0x331C; | ||||
| 
 | ||||
| constexpr uint16_t VP_MOVE_OPTION = 0x3400; | ||||
| 
 | ||||
| // Step per mm
 | ||||
| constexpr uint16_t VP_X_STEP_PER_MM = 0x3600; // at the moment , 2 byte unsigned int , 0~1638.4
 | ||||
| //constexpr uint16_t VP_X2_STEP_PER_MM = 0x3602;
 | ||||
| constexpr uint16_t VP_Y_STEP_PER_MM = 0x3604; | ||||
| //constexpr uint16_t VP_Y2_STEP_PER_MM = 0x3606;
 | ||||
| constexpr uint16_t VP_Z_STEP_PER_MM = 0x3608; | ||||
| //constexpr uint16_t VP_Z2_STEP_PER_MM = 0x360A;
 | ||||
| constexpr uint16_t VP_E0_STEP_PER_MM = 0x3610; | ||||
| //constexpr uint16_t VP_E1_STEP_PER_MM = 0x3612;
 | ||||
| //constexpr uint16_t VP_E2_STEP_PER_MM = 0x3614;
 | ||||
| //constexpr uint16_t VP_E3_STEP_PER_MM = 0x3616;
 | ||||
| //constexpr uint16_t VP_E4_STEP_PER_MM = 0x3618;
 | ||||
| //constexpr uint16_t VP_E5_STEP_PER_MM = 0x361A;
 | ||||
| 
 | ||||
| // PIDs
 | ||||
| constexpr uint16_t VP_E0_PID_P = 0x3700; // at the moment , 2 byte unsigned int , 0~1638.4
 | ||||
| constexpr uint16_t VP_E0_PID_I = 0x3702; | ||||
| constexpr uint16_t VP_E0_PID_D = 0x3704; | ||||
| constexpr uint16_t VP_BED_PID_P = 0x3710; | ||||
| constexpr uint16_t VP_BED_PID_I = 0x3712; | ||||
| constexpr uint16_t VP_BED_PID_D = 0x3714; | ||||
| 
 | ||||
| // Wating screen status
 | ||||
| constexpr uint16_t VP_WAITING_STATUS = 0x3800; | ||||
| 
 | ||||
| // SPs for certain variables...
 | ||||
| // located at 0x5000 and up
 | ||||
| // Not used yet!
 | ||||
| // This can be used e.g to make controls / data display invisible
 | ||||
| constexpr uint16_t SP_T_E0_Is = 0x5000; | ||||
| constexpr uint16_t SP_T_E0_Set = 0x5010; | ||||
| constexpr uint16_t SP_T_E1_Is = 0x5020; | ||||
| constexpr uint16_t SP_T_Bed_Is = 0x5030; | ||||
| constexpr uint16_t SP_T_Bed_Set = 0x5040; | ||||
| @ -24,16 +24,21 @@ | ||||
| 
 | ||||
| #include "../../../../inc/MarlinConfigPre.h" | ||||
| 
 | ||||
| #if ENABLED(DGUS_LCD) | ||||
| #if ENABLED(DGUS_LCD_UI_ORIGIN) | ||||
| 
 | ||||
| #include "DGUSDisplayDefinition.h" | ||||
| #include "DGUSDisplay.h" | ||||
| 
 | ||||
| #include "../../../../module/temperature.h" | ||||
| #include "../../../../module/motion.h" | ||||
| #include "../../../../module/planner.h" | ||||
| 
 | ||||
| #include "../../../ultralcd.h" | ||||
| 
 | ||||
| #if ENABLED(DUGS_UI_MOVE_DIS_OPTION) | ||||
|   uint16_t distanceToMove = 0.1; | ||||
| #endif | ||||
| 
 | ||||
| const uint16_t VPList_Boot[] PROGMEM = { | ||||
|   VP_MARLIN_VERSION, | ||||
|   0x0000 | ||||
| @ -49,7 +54,7 @@ const uint16_t VPList_Temp[] PROGMEM = { | ||||
|     VP_T_E0_Is, VP_T_E0_Set, | ||||
|   #endif | ||||
|   #if HOTENDS >= 2 | ||||
|     VP_T_E1_I, VP_T_E1_S, | ||||
|     VP_T_E1_Is, VP_T_E1_Set, | ||||
|   #endif | ||||
|   #if HAS_HEATED_BED | ||||
|     VP_T_Bed_Is, VP_T_Bed_Set, | ||||
| @ -63,16 +68,16 @@ const uint16_t VPList_Status[] PROGMEM = { | ||||
|     VP_T_E0_Is, VP_T_E0_Set, | ||||
|   #endif | ||||
|   #if HOTENDS >= 2 | ||||
|     VP_T_E1_I, VP_T_E1_S, | ||||
|     VP_T_E1_Is, VP_T_E1_Set, | ||||
|   #endif | ||||
|   #if HAS_HEATED_BED | ||||
|     VP_T_Bed_Is, VP_T_Bed_Set, | ||||
|   #endif | ||||
|   #if FAN_COUNT > 0 | ||||
|     VP_Fan_Percentage, | ||||
|     VP_Fan0_Percentage, | ||||
|   #endif | ||||
|   VP_XPos, VP_YPos, VP_ZPos, | ||||
|   VP_Fan_Percentage, | ||||
|   VP_Fan0_Percentage, | ||||
|   VP_Feedrate_Percentage, | ||||
|   VP_PrintProgress_Percentage, | ||||
|   0x0000 | ||||
| @ -102,7 +107,7 @@ const uint16_t VPList_ManualExtrude[] PROGMEM = { | ||||
| }; | ||||
| 
 | ||||
| const uint16_t VPList_FanAndFeedrate[] PROGMEM = { | ||||
|   VP_Feedrate_Percentage, VP_Fan_Percentage, | ||||
|   VP_Feedrate_Percentage, VP_Fan0_Percentage, | ||||
|   0x0000 | ||||
| }; | ||||
| 
 | ||||
| @ -150,15 +155,33 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = { | ||||
|   // Helper to detect touch events
 | ||||
|   VPHELPER(VP_SCREENCHANGE, nullptr, DGUSScreenVariableHandler::ScreenChangeHook, nullptr), | ||||
|   VPHELPER(VP_SCREENCHANGE_ASK, nullptr, DGUSScreenVariableHandler::ScreenChangeHookIfIdle, nullptr), | ||||
|   VPHELPER(VP_SCREENCHANGE_WHENSD, nullptr, DGUSScreenVariableHandler::ScreenChangeHookIfSD, nullptr), | ||||
|   #if ENABLED(SDSUPPORT) | ||||
|     VPHELPER(VP_SCREENCHANGE_WHENSD, nullptr, DGUSScreenVariableHandler::ScreenChangeHookIfSD, nullptr), | ||||
|   #endif | ||||
|   VPHELPER(VP_CONFIRMED, nullptr, DGUSScreenVariableHandler::ScreenConfirmedOK, nullptr), | ||||
| 
 | ||||
|   VPHELPER(VP_TEMP_ALL_OFF, nullptr, &DGUSScreenVariableHandler::HandleAllHeatersOff, nullptr), | ||||
| 
 | ||||
|   VPHELPER(VP_MOVE_X, nullptr, &DGUSScreenVariableHandler::HandleManualMove, nullptr), | ||||
|   VPHELPER(VP_MOVE_Y, nullptr, &DGUSScreenVariableHandler::HandleManualMove, nullptr), | ||||
|   VPHELPER(VP_MOVE_Z, nullptr, &DGUSScreenVariableHandler::HandleManualMove, nullptr), | ||||
|   VPHELPER(VP_HOME_ALL, nullptr, &DGUSScreenVariableHandler::HandleManualMove, nullptr), | ||||
|   #if ENABLED(DUGS_UI_MOVE_DIS_OPTION) | ||||
|     VPHELPER(VP_MOVE_OPTION, &distanceToMove, &DGUSScreenVariableHandler::HandleManualMoveOption, nullptr), | ||||
|   #endif | ||||
|   #if ENABLED(DUGS_UI_MOVE_DIS_OPTION) | ||||
|     VPHELPER(VP_MOVE_X, &distanceToMove, &DGUSScreenVariableHandler::HandleManualMove, nullptr), | ||||
|     VPHELPER(VP_MOVE_Y, &distanceToMove, &DGUSScreenVariableHandler::HandleManualMove, nullptr), | ||||
|     VPHELPER(VP_MOVE_Z, &distanceToMove, &DGUSScreenVariableHandler::HandleManualMove, nullptr), | ||||
|     VPHELPER(VP_HOME_ALL, &distanceToMove, &DGUSScreenVariableHandler::HandleManualMove, nullptr), | ||||
|   #else | ||||
|     VPHELPER(VP_MOVE_X, nullptr, &DGUSScreenVariableHandler::HandleManualMove, nullptr), | ||||
|     VPHELPER(VP_MOVE_Y, nullptr, &DGUSScreenVariableHandler::HandleManualMove, nullptr), | ||||
|     VPHELPER(VP_MOVE_Z, nullptr, &DGUSScreenVariableHandler::HandleManualMove, nullptr), | ||||
|     VPHELPER(VP_HOME_ALL, nullptr, &DGUSScreenVariableHandler::HandleManualMove, nullptr), | ||||
|   #endif | ||||
| 
 | ||||
|   VPHELPER(VP_MOTOR_LOCK_UNLOK, nullptr, &DGUSScreenVariableHandler::HandleMotorLockUnlock, nullptr), | ||||
|   #if ENABLED(POWER_LOSS_RECOVERY) | ||||
|     VPHELPER(VP_POWER_LOSS_RECOVERY, nullptr, &DGUSScreenVariableHandler::HandlePowerLossRecovery, nullptr), | ||||
|   #endif | ||||
|   VPHELPER(VP_SETTINGS, nullptr, &DGUSScreenVariableHandler::HandleSettings, nullptr), | ||||
| 
 | ||||
|   { .VP = VP_MARLIN_VERSION, .memadr = (void*)MarlinVersion, .size = VP_MARLIN_VERSION_LEN, .set_by_display_handler = nullptr, .send_to_display_handler =&DGUSScreenVariableHandler::DGUSLCD_SendStringToDisplayPGM }, | ||||
|   // M117 LCD String (We don't need the string in memory but "just" push it to the display on demand, hence the nullptr
 | ||||
| @ -171,39 +194,82 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = { | ||||
|     VPHELPER(VP_Flowrate_E0, nullptr, DGUSScreenVariableHandler::HandleFlowRateChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay), | ||||
|     VPHELPER(VP_EPos, &destination.e, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<2>), | ||||
|     VPHELPER(VP_MOVE_E0, nullptr, &DGUSScreenVariableHandler::HandleManualExtrude, nullptr), | ||||
|     VPHELPER(VP_E0_CONTROL, &thermalManager.temp_hotend[0].target, &DGUSScreenVariableHandler::HandleHeaterControl, nullptr), | ||||
|     VPHELPER(VP_E0_STATUS, &thermalManager.temp_hotend[0].target, nullptr, &DGUSScreenVariableHandler::DGUSLCD_SendHeaterStatusToDisplay), | ||||
|     #if ENABLED(DGUS_PREHEAT_UI) | ||||
|       VPHELPER(VP_E0_BED_PREHEAT, nullptr, &DGUSScreenVariableHandler::HandlePreheat, nullptr), | ||||
|     #endif | ||||
|     #if ENABLED(PIDTEMP) | ||||
|       VPHELPER(VP_E0_PID_P, &thermalManager.temp_hotend[0].pid.Kp, DGUSScreenVariableHandler::HandleTemperaturePIDChanged, DGUSScreenVariableHandler::DGUSLCD_SendTemperaturePID), | ||||
|       VPHELPER(VP_E0_PID_I, &thermalManager.temp_hotend[0].pid.Ki, DGUSScreenVariableHandler::HandleTemperaturePIDChanged, DGUSScreenVariableHandler::DGUSLCD_SendTemperaturePID), | ||||
|       VPHELPER(VP_E0_PID_D, &thermalManager.temp_hotend[0].pid.Kd, DGUSScreenVariableHandler::HandleTemperaturePIDChanged, DGUSScreenVariableHandler::DGUSLCD_SendTemperaturePID), | ||||
|       VPHELPER(VP_PID_AUTOTUNE_E0, nullptr, &DGUSScreenVariableHandler::HandlePIDAutotune, nullptr), | ||||
|     #endif | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       VPHELPER(VP_E0_FILAMENT_LOAD_UNLOAD, nullptr, &DGUSScreenVariableHandler::HandleFilamentOption, &DGUSScreenVariableHandler::HandleFilamentLoadUnload), | ||||
|     #endif | ||||
|   #endif | ||||
|   #if HOTENDS >= 2 | ||||
|     VPHELPER(VP_T_E1_I, &thermalManager.temp_hotend[1].celsius, nullptr, DGUSLCD_SendFloatAsLongValueToDisplay<0>), | ||||
|     VPHELPER(VP_T_E1_S, &thermalManager.temp_hotend[1].target, DGUSScreenVariableHandler::HandleTemperatureChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay), | ||||
|     VPHELPER(VP_T_E1_Is, &thermalManager.temp_hotend[1].celsius, nullptr, DGUSLCD_SendFloatAsLongValueToDisplay<0>), | ||||
|     VPHELPER(VP_T_E1_Set, &thermalManager.temp_hotend[1].target, DGUSScreenVariableHandler::HandleTemperatureChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay), | ||||
|     VPHELPER(VP_Flowrate_E1, nullptr, DGUSScreenVariableHandler::HandleFlowRateChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay), | ||||
|     VPHELPER(VP_MOVE_E1, nullptr, &DGUSScreenVariableHandler::HandleManualExtrude, nullptr), | ||||
|   #endif | ||||
|   #if HOTENDS >= 3 | ||||
|     #error More than 2 Hotends currently not implemented on the Display UI design. | ||||
|     VPHELPER(VP_E1_CONTROL, &thermalManager.temp_hotend[1].target, &DGUSScreenVariableHandler::HandleHeaterControl, nullptr), | ||||
|     VPHELPER(VP_E1_STATUS, &thermalManager.temp_hotend[1].target, nullptr, &DGUSScreenVariableHandler::DGUSLCD_SendHeaterStatusToDisplay), | ||||
|     #if ENABLED(PIDTEMP) | ||||
|       VPHELPER(VP_PID_AUTOTUNE_E1, nullptr, &DGUSScreenVariableHandler::HandlePIDAutotune, nullptr), | ||||
|     #endif | ||||
|   #endif | ||||
|   #if HAS_HEATED_BED | ||||
|     VPHELPER(VP_T_Bed_Is, &thermalManager.temp_bed.celsius, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<0>), | ||||
|     VPHELPER(VP_T_Bed_Set, &thermalManager.temp_bed.target, DGUSScreenVariableHandler::HandleTemperatureChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay), | ||||
|     VPHELPER(VP_BED_CONTROL, &thermalManager.temp_bed.target, &DGUSScreenVariableHandler::HandleHeaterControl, nullptr), | ||||
|     VPHELPER(VP_BED_STATUS, &thermalManager.temp_bed.target, nullptr, &DGUSScreenVariableHandler::DGUSLCD_SendHeaterStatusToDisplay), | ||||
|     #if ENABLED(PIDTEMPBED) | ||||
|       VPHELPER(VP_BED_PID_P, &thermalManager.temp_bed.pid.Kp, DGUSScreenVariableHandler::HandleTemperaturePIDChanged, DGUSScreenVariableHandler::DGUSLCD_SendTemperaturePID), | ||||
|       VPHELPER(VP_BED_PID_I, &thermalManager.temp_bed.pid.Ki, DGUSScreenVariableHandler::HandleTemperaturePIDChanged, DGUSScreenVariableHandler::DGUSLCD_SendTemperaturePID), | ||||
|       VPHELPER(VP_BED_PID_D, &thermalManager.temp_bed.pid.Kd, DGUSScreenVariableHandler::HandleTemperaturePIDChanged, DGUSScreenVariableHandler::DGUSLCD_SendTemperaturePID), | ||||
|     #endif | ||||
|   #endif | ||||
| 
 | ||||
|   // Fan Data.
 | ||||
|   #if FAN_COUNT > 0 | ||||
|     VPHELPER(VP_Fan_Percentage, &thermalManager.fan_speed[0], DGUSScreenVariableHandler::DGUSLCD_PercentageToUint8, &DGUSScreenVariableHandler::DGUSLCD_SendPercentageToDisplay), | ||||
|   // Fan Data
 | ||||
|   #if FAN_COUNT | ||||
|     #define FAN_VPHELPER(N) \ | ||||
|       VPHELPER(VP_Fan##N##_Percentage, &thermalManager.fan_speed[N], DGUSScreenVariableHandler::DGUSLCD_PercentageToUint8, &DGUSScreenVariableHandler::DGUSLCD_SendPercentageToDisplay), \ | ||||
|       VPHELPER(VP_FAN##N##_CONTROL, &thermalManager.fan_speed[N], &DGUSScreenVariableHandler::HandleFanControl, nullptr), \ | ||||
|       VPHELPER(VP_FAN##N##_STATUS, &thermalManager.fan_speed[N], nullptr, &DGUSScreenVariableHandler::DGUSLCD_SendFanStatusToDisplay), | ||||
|     REPEAT(FAN_COUNT, FAN_VPHELPER) | ||||
|   #endif | ||||
| 
 | ||||
|   // Feedrate.
 | ||||
|   // Feedrate
 | ||||
|   VPHELPER(VP_Feedrate_Percentage, &feedrate_percentage, DGUSScreenVariableHandler::DGUSLCD_SetValueDirectly<int16_t>, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay ), | ||||
| 
 | ||||
|   // Position Data.
 | ||||
|   // Position Data
 | ||||
|   VPHELPER(VP_XPos, ¤t_position.x, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<2>), | ||||
|   VPHELPER(VP_YPos, ¤t_position.y, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<2>), | ||||
|   VPHELPER(VP_ZPos, ¤t_position.z, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<2>), | ||||
| 
 | ||||
|   // Print Progress.
 | ||||
|   VPHELPER(VP_PrintProgress_Percentage, &ui.progress_override, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay ), | ||||
|   // Print Progress
 | ||||
|   #if ENABLED(LCD_SET_PROGRESS_MANUALLY) | ||||
|     VPHELPER(VP_PrintProgress_Percentage, &ui.progress_override, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay ), | ||||
|   #endif | ||||
| 
 | ||||
|   // Print Time
 | ||||
|   VPHELPER_STR(VP_PrintTime, nullptr, VP_PrintTime_LEN, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendPrintTimeToDisplay ), | ||||
|   #if ENABLED(PRINTCOUNTER) | ||||
|     VPHELPER_STR(VP_PrintAccTime, nullptr, VP_PrintAccTime_LEN, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendPrintAccTimeToDisplay ), | ||||
|     VPHELPER_STR(VP_PrintsTotal, nullptr, VP_PrintsTotal_LEN, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendPrintsTotalToDisplay ), | ||||
|   #endif | ||||
| 
 | ||||
|   VPHELPER(VP_X_STEP_PER_MM, &planner.settings.axis_steps_per_mm[X_AXIS], DGUSScreenVariableHandler::HandleStepPerMMChanged, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsIntValueToDisplay<1>), | ||||
|   VPHELPER(VP_Y_STEP_PER_MM, &planner.settings.axis_steps_per_mm[Y_AXIS], DGUSScreenVariableHandler::HandleStepPerMMChanged, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsIntValueToDisplay<1>), | ||||
|   VPHELPER(VP_Z_STEP_PER_MM, &planner.settings.axis_steps_per_mm[Z_AXIS], DGUSScreenVariableHandler::HandleStepPerMMChanged, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsIntValueToDisplay<1>), | ||||
|   #if HOTENDS >= 1 | ||||
|     VPHELPER(VP_E0_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(0)], DGUSScreenVariableHandler::HandleStepPerMMExtruderChanged, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsIntValueToDisplay<1>), | ||||
|   #endif | ||||
|   #if HOTENDS >= 2 | ||||
|     VPHELPER(VP_E1_STEP_PER_MM, &planner.settings.axis_steps_per_mm[E_AXIS_N(1)], DGUSScreenVariableHandler::HandleStepPerMMExtruderChanged, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsIntValueToDisplay<1>), | ||||
|   #endif | ||||
| 
 | ||||
|   // SDCard File listing.
 | ||||
|   #if ENABLED(SDSUPPORT) | ||||
| @ -217,6 +283,17 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = { | ||||
|     VPHELPER_STR(VP_SD_FileName4,  nullptr, VP_SD_FileName_LEN, nullptr, DGUSScreenVariableHandler::DGUSLCD_SD_SendFilename ), | ||||
|     VPHELPER(VP_SD_ResumePauseAbort, nullptr, DGUSScreenVariableHandler::DGUSLCD_SD_ResumePauseAbort, nullptr), | ||||
|     VPHELPER(VP_SD_AbortPrintConfirmed, nullptr, DGUSScreenVariableHandler::DGUSLCD_SD_ReallyAbort, nullptr), | ||||
|     VPHELPER(VP_SD_Print_Setting, nullptr, DGUSScreenVariableHandler::DGUSLCD_SD_PrintTune, nullptr), | ||||
|     #if HAS_BED_PROBE | ||||
|       VPHELPER(VP_SD_Print_ProbeOffsetZ, &probe_offset.z, DGUSScreenVariableHandler::HandleProbeOffsetZChanged, &DGUSScreenVariableHandler::DGUSLCD_SendFloatAsIntValueToDisplay<2>), | ||||
|       #if ENABLED(BABYSTEPPING) | ||||
|         VPHELPER(VP_SD_Print_LiveAdjustZ, nullptr, DGUSScreenVariableHandler::HandleLiveAdjustZ, nullptr), | ||||
|       #endif | ||||
|     #endif | ||||
|   #endif | ||||
| 
 | ||||
|   #if ENABLED(DGUS_UI_WAITING) | ||||
|     VPHELPER(VP_WAITING_STATUS, nullptr, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendWaitingStatusToDisplay), | ||||
|   #endif | ||||
| 
 | ||||
|   // Messages for the User, shared by the popup and the kill screen. They cant be autouploaded as we do not buffer content.
 | ||||
| @ -228,4 +305,4 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = { | ||||
|   VPHELPER(0, 0, 0, 0)  // must be last entry.
 | ||||
| }; | ||||
| 
 | ||||
| #endif // DGUS_LCD
 | ||||
| #endif // DGUS_LCD_UI_ORIGIN
 | ||||
| @ -0,0 +1,280 @@ | ||||
| /**
 | ||||
|  * Marlin 3D Printer Firmware | ||||
|  * Copyright (c) 2019 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 <http://www.gnu.org/licenses/>.
 | ||||
|  * | ||||
|  */ | ||||
| #pragma once | ||||
| 
 | ||||
| enum DGUSLCD_Screens : uint8_t { | ||||
|   DGUSLCD_SCREEN_BOOT = 0, | ||||
|   DGUSLCD_SCREEN_MAIN = 10, | ||||
|   DGUSLCD_SCREEN_TEMPERATURE = 20, | ||||
|   DGUSLCD_SCREEN_STATUS = 30, | ||||
|   DGUSLCD_SCREEN_STATUS2 = 32, | ||||
|   DGUSLCD_SCREEN_MANUALMOVE = 40, | ||||
|   DGUSLCD_SCREEN_MANUALEXTRUDE=42, | ||||
|   DGUSLCD_SCREEN_FANANDFEEDRATE = 44, | ||||
|   DGUSLCD_SCREEN_FLOWRATES = 46, | ||||
|   DGUSLCD_SCREEN_SDFILELIST = 50, | ||||
|   DGUSLCD_SCREEN_SDPRINTMANIPULATION = 52, | ||||
|   DGUSLCD_SCREEN_POWER_LOSS = 100, | ||||
|   DGUSLCD_SCREEN_PREHEAT=120, | ||||
|   DGUSLCD_SCREEN_UTILITY=110, | ||||
|   DGUSLCD_SCREEN_FILAMENT_HEATING=146, | ||||
|   DGUSLCD_SCREEN_FILAMENT_LOADING=148, | ||||
|   DGUSLCD_SCREEN_FILAMENT_UNLOADING=158, | ||||
|   DGUSLCD_SCREEN_SDPRINTTUNE = 170, | ||||
|   DGUSLCD_SCREEN_CONFIRM = 240, | ||||
|   DGUSLCD_SCREEN_KILL = 250, ///< Kill Screen. Must always be 250 (to be able to display "Error wrong LCD Version")
 | ||||
|   DGUSLCD_SCREEN_WAITING = 251, | ||||
|   DGUSLCD_SCREEN_POPUP = 252,  ///< special target, popup screen will also return this code to say "return to previous screen"
 | ||||
|   DGUSLDC_SCREEN_UNUSED = 255 | ||||
| }; | ||||
| 
 | ||||
| // Display Memory layout used (T5UID)
 | ||||
| // Except system variables this is arbitrary, just to organize stuff....
 | ||||
| 
 | ||||
| // 0x0000 .. 0x0FFF  -- System variables and reserved by the display
 | ||||
| // 0x1000 .. 0x1FFF  -- Variables to never change location, regardless of UI Version
 | ||||
| // 0x2000 .. 0x2FFF  -- Controls (VPs that will trigger some action)
 | ||||
| // 0x3000 .. 0x4FFF  -- Marlin Data to be displayed
 | ||||
| // 0x5000 ..         -- SPs (if we want to modify display elements, e.g change color or like) -- currently unused
 | ||||
| 
 | ||||
| // As there is plenty of space (at least most displays have >8k RAM), we do not pack them too tight,
 | ||||
| // so that we can keep variables nicely together in the address space.
 | ||||
| 
 | ||||
| // UI Version always on 0x1000...0x1002 so that the firmware can check this and bail out.
 | ||||
| constexpr uint16_t VP_UI_VERSION_MAJOR = 0x1000;  // Major -- incremented when incompatible
 | ||||
| constexpr uint16_t VP_UI_VERSION_MINOR = 0x1001;  // Minor -- incremented on new features, but compatible
 | ||||
| constexpr uint16_t VP_UI_VERSION_PATCH = 0x1002;  // Patch -- fixed which do not change functionality.
 | ||||
| constexpr uint16_t VP_UI_FLAVOUR       = 0x1010;  // lets reserve 16 bytes here to determine if UI is suitable for this Marlin. tbd.
 | ||||
| 
 | ||||
| // Storage space for the Killscreen messages. 0x1100 - 0x1200 . Reused for the popup.
 | ||||
| constexpr uint16_t VP_MSGSTR1 = 0x1100; | ||||
| constexpr uint8_t VP_MSGSTR1_LEN = 0x20;  // might be more place for it...
 | ||||
| constexpr uint16_t VP_MSGSTR2 = 0x1140; | ||||
| constexpr uint8_t VP_MSGSTR2_LEN = 0x20; | ||||
| constexpr uint16_t VP_MSGSTR3 = 0x1180; | ||||
| constexpr uint8_t VP_MSGSTR3_LEN = 0x20; | ||||
| constexpr uint16_t VP_MSGSTR4 = 0x11C0; | ||||
| constexpr uint8_t VP_MSGSTR4_LEN = 0x20; | ||||
| 
 | ||||
| // Screenchange request for screens that only make sense when printer is idle.
 | ||||
| // e.g movement is only allowed if printer is not printing.
 | ||||
| // Marlin must confirm by setting the screen manually.
 | ||||
| constexpr uint16_t VP_SCREENCHANGE_ASK = 0x2000; | ||||
| constexpr uint16_t VP_SCREENCHANGE = 0x2001;   // Key-Return button to new menu pressed. Data contains target screen in low byte and info in high byte.
 | ||||
| constexpr uint16_t VP_TEMP_ALL_OFF = 0x2002;   // Turn all heaters off. Value arbitrary ;)=
 | ||||
| constexpr uint16_t VP_SCREENCHANGE_WHENSD = 0x2003; // "Print" Button touched -- go only there if there is an SD Card.
 | ||||
| 
 | ||||
| constexpr uint16_t VP_CONFIRMED = 0x2010; // OK on confirm screen.
 | ||||
| 
 | ||||
| // Buttons on the SD-Card File listing.
 | ||||
| constexpr uint16_t VP_SD_ScrollEvent = 0x2020; // Data: 0 for "up a directory", numbers are the amount to scroll, e.g -1 one up, 1 one down
 | ||||
| constexpr uint16_t VP_SD_FileSelected = 0x2022; // Number of file field selected.
 | ||||
| constexpr uint16_t VP_SD_FileSelectConfirm = 0x2024; // (This is a virtual VP and emulated by the Confirm Screen when a file has been confirmed)
 | ||||
| 
 | ||||
| constexpr uint16_t VP_SD_ResumePauseAbort = 0x2026; // Resume(Data=0), Pause(Data=1), Abort(Data=2) SD Card prints
 | ||||
| constexpr uint16_t VP_SD_AbortPrintConfirmed = 0x2028; // Abort print confirmation (virtual, will be injected by the confirm dialog)
 | ||||
| constexpr uint16_t VP_SD_Print_Setting = 0x2040; | ||||
| constexpr uint16_t VP_SD_Print_LiveAdjustZ = 0x2050; // Data: 0 down, 1 up
 | ||||
| 
 | ||||
| // Controls for movement (we can't use the incremental / decremental feature of the display at this feature works only with 16 bit values
 | ||||
| // (which would limit us to 655.35mm, which is likely not a problem for common setups, but i don't want to rule out hangprinters support)
 | ||||
| // A word about the coding: The VP will be per axis and the return code will be an signed 16 bit value in 0.01 mm resolution, telling us
 | ||||
| // the relative travel amount t he user wants to do. So eg. if the display sends us VP=2100 with value 100, the user wants us to move X by +1 mm.
 | ||||
| constexpr uint16_t VP_MOVE_X = 0x2100; | ||||
| constexpr uint16_t VP_MOVE_Y = 0x2102; | ||||
| constexpr uint16_t VP_MOVE_Z = 0x2104; | ||||
| constexpr uint16_t VP_MOVE_E0 = 0x2110; | ||||
| constexpr uint16_t VP_MOVE_E1 = 0x2112; | ||||
| //constexpr uint16_t VP_MOVE_E2 = 0x2114;
 | ||||
| //constexpr uint16_t VP_MOVE_E3 = 0x2116;
 | ||||
| //constexpr uint16_t VP_MOVE_E4 = 0x2118;
 | ||||
| //constexpr uint16_t VP_MOVE_E5 = 0x211A;
 | ||||
| constexpr uint16_t VP_HOME_ALL = 0x2120; | ||||
| constexpr uint16_t VP_MOTOR_LOCK_UNLOK = 0x2130; | ||||
| 
 | ||||
| // Power loss recovery
 | ||||
| constexpr uint16_t VP_POWER_LOSS_RECOVERY = 0x2180; | ||||
| 
 | ||||
| // Fan Control Buttons , switch between "off" and "on"
 | ||||
| constexpr uint16_t VP_FAN0_CONTROL = 0x2200; | ||||
| constexpr uint16_t VP_FAN1_CONTROL = 0x2202; | ||||
| //constexpr uint16_t VP_FAN2_CONTROL = 0x2204;
 | ||||
| //constexpr uint16_t VP_FAN3_CONTROL = 0x2206;
 | ||||
| 
 | ||||
| // Heater Control Buttons , triged between "cool down" and "heat PLA" state
 | ||||
| constexpr uint16_t VP_E0_CONTROL = 0x2210; | ||||
| constexpr uint16_t VP_E1_CONTROL = 0x2212; | ||||
| //constexpr uint16_t VP_E2_CONTROL = 0x2214;
 | ||||
| //constexpr uint16_t VP_E3_CONTROL = 0x2216;
 | ||||
| //constexpr uint16_t VP_E4_CONTROL = 0x2218;
 | ||||
| //constexpr uint16_t VP_E5_CONTROL = 0x221A;
 | ||||
| constexpr uint16_t VP_BED_CONTROL = 0x221C; | ||||
| 
 | ||||
| // Preheat
 | ||||
| constexpr uint16_t VP_E0_BED_PREHEAT = 0x2220; | ||||
| constexpr uint16_t VP_E1_BED_CONTROL = 0x2222; | ||||
| //constexpr uint16_t VP_E2_BED_CONTROL = 0x2224;
 | ||||
| //constexpr uint16_t VP_E3_BED_CONTROL = 0x2226;
 | ||||
| //constexpr uint16_t VP_E4_BED_CONTROL = 0x2228;
 | ||||
| //constexpr uint16_t VP_E5_BED_CONTROL = 0x222A;
 | ||||
| 
 | ||||
| // Filament load and unload
 | ||||
| constexpr uint16_t VP_E0_FILAMENT_LOAD_UNLOAD = 0x2300; | ||||
| constexpr uint16_t VP_E1_FILAMENT_LOAD_UNLOAD = 0x2302; | ||||
| 
 | ||||
| // Settings store , reset
 | ||||
| constexpr uint16_t VP_SETTINGS = 0x2400; | ||||
| 
 | ||||
| // PID autotune
 | ||||
| constexpr uint16_t VP_PID_AUTOTUNE_E0 = 0x2410; | ||||
| //constexpr uint16_t VP_PID_AUTOTUNE_E1 = 0x2412;
 | ||||
| //constexpr uint16_t VP_PID_AUTOTUNE_E2 = 0x2414;
 | ||||
| //constexpr uint16_t VP_PID_AUTOTUNE_E3 = 0x2416;
 | ||||
| //constexpr uint16_t VP_PID_AUTOTUNE_E4 = 0x2418;
 | ||||
| //constexpr uint16_t VP_PID_AUTOTUNE_E5 = 0x241A;
 | ||||
| constexpr uint16_t VP_PID_AUTOTUNE_BED = 0x2420; | ||||
| 
 | ||||
| // Firmware version on the boot screen.
 | ||||
| constexpr uint16_t VP_MARLIN_VERSION = 0x3000; | ||||
| constexpr uint8_t VP_MARLIN_VERSION_LEN = 16;   // there is more space on the display, if needed.
 | ||||
| 
 | ||||
| // Place for status messages.
 | ||||
| constexpr uint16_t VP_M117 = 0x3020; | ||||
| constexpr uint8_t VP_M117_LEN = 0x20; | ||||
| 
 | ||||
| // Temperatures.
 | ||||
| constexpr uint16_t VP_T_E0_Is = 0x3060;  // 4 Byte Integer
 | ||||
| constexpr uint16_t VP_T_E0_Set = 0x3062; // 2 Byte Integer
 | ||||
| constexpr uint16_t VP_T_E1_Is = 0x3064;  // 4 Byte Integer
 | ||||
| 
 | ||||
| // reserved to support up to 6 Extruders:
 | ||||
| //constexpr uint16_t VP_T_E1_Set = 0x3066; // 2 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E2_Is = 0x3068;  // 4 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E2_Set = 0x306A; // 2 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E3_Is = 0x306C;  // 4 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E3_Set = 0x306E; // 2 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E4_Is = 0x3070;  // 4 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E4_Set = 0x3072; // 2 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E4_Is = 0x3074;  // 4 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E4_Set = 0x3076; // 2 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E5_Is = 0x3078;  // 4 Byte Integer
 | ||||
| //constexpr uint16_t VP_T_E5_Set = 0x307A; // 2 Byte Integer
 | ||||
| 
 | ||||
| constexpr uint16_t VP_T_Bed_Is = 0x3080;  // 4 Byte Integer
 | ||||
| constexpr uint16_t VP_T_Bed_Set = 0x3082; // 2 Byte Integer
 | ||||
| 
 | ||||
| constexpr uint16_t VP_Flowrate_E0 = 0x3090; // 2 Byte Integer
 | ||||
| constexpr uint16_t VP_Flowrate_E1 = 0x3092; // 2 Byte Integer
 | ||||
| 
 | ||||
| // reserved for up to 6 Extruders:
 | ||||
| //constexpr uint16_t VP_Flowrate_E2 = 0x3094;
 | ||||
| //constexpr uint16_t VP_Flowrate_E3 = 0x3096;
 | ||||
| //constexpr uint16_t VP_Flowrate_E4 = 0x3098;
 | ||||
| //constexpr uint16_t VP_Flowrate_E5 = 0x309A;
 | ||||
| 
 | ||||
| constexpr uint16_t VP_Fan0_Percentage = 0x3100;  // 2 Byte Integer (0..100)
 | ||||
| //constexpr uint16_t VP_Fan1_Percentage = 0x33A2;  // 2 Byte Integer (0..100)
 | ||||
| //constexpr uint16_t VP_Fan2_Percentage = 0x33A4;  // 2 Byte Integer (0..100)
 | ||||
| //constexpr uint16_t VP_Fan3_Percentage = 0x33A6;  // 2 Byte Integer (0..100)
 | ||||
| 
 | ||||
| constexpr uint16_t VP_Feedrate_Percentage = 0x3102; // 2 Byte Integer (0..100)
 | ||||
| constexpr uint16_t VP_PrintProgress_Percentage = 0x3104; // 2 Byte Integer (0..100)
 | ||||
| 
 | ||||
| constexpr uint16_t VP_PrintTime = 0x3106; | ||||
| constexpr uint16_t VP_PrintTime_LEN = 10; | ||||
| 
 | ||||
| constexpr uint16_t VP_PrintAccTime = 0x3160; | ||||
| constexpr uint16_t VP_PrintAccTime_LEN = 32; | ||||
| 
 | ||||
| constexpr uint16_t VP_PrintsTotal = 0x3180; | ||||
| constexpr uint16_t VP_PrintsTotal_LEN = 16; | ||||
| 
 | ||||
| // Actual Position
 | ||||
| constexpr uint16_t VP_XPos = 0x3110;  // 4 Byte Fixed point number; format xxx.yy
 | ||||
| constexpr uint16_t VP_YPos = 0x3112;  // 4 Byte Fixed point number; format xxx.yy
 | ||||
| constexpr uint16_t VP_ZPos = 0x3114;  // 4 Byte Fixed point number; format xxx.yy
 | ||||
| 
 | ||||
| constexpr uint16_t VP_EPos = 0x3120;  // 4 Byte Fixed point number; format xxx.yy
 | ||||
| 
 | ||||
| // SDCard File Listing
 | ||||
| constexpr uint16_t VP_SD_FileName_LEN = 32; // LEN is shared for all entries.
 | ||||
| constexpr uint16_t DGUS_SD_FILESPERSCREEN = 5; // FIXME move that info to the display and read it from there.
 | ||||
| constexpr uint16_t VP_SD_FileName0 = 0x3200; | ||||
| constexpr uint16_t VP_SD_FileName1 = 0x3220; | ||||
| constexpr uint16_t VP_SD_FileName2 = 0x3240; | ||||
| constexpr uint16_t VP_SD_FileName3 = 0x3260; | ||||
| constexpr uint16_t VP_SD_FileName4 = 0x3280; | ||||
| 
 | ||||
| constexpr uint16_t VP_SD_Print_ProbeOffsetZ = 0x32A0; //
 | ||||
| constexpr uint16_t VP_SD_Print_Filename = 0x32C0; //
 | ||||
| 
 | ||||
| // Fan status
 | ||||
| constexpr uint16_t VP_FAN0_STATUS = 0x3300; | ||||
| constexpr uint16_t VP_FAN1_STATUS = 0x3302; | ||||
| //constexpr uint16_t VP_FAN2_STATUS = 0x3304;
 | ||||
| //constexpr uint16_t VP_FAN3_STATUS = 0x3306;
 | ||||
| 
 | ||||
| // Heater status
 | ||||
| constexpr uint16_t VP_E0_STATUS = 0x3310; | ||||
| //constexpr uint16_t VP_E1_STATUS = 0x3312;
 | ||||
| //constexpr uint16_t VP_E2_STATUS = 0x3314;
 | ||||
| //constexpr uint16_t VP_E3_STATUS = 0x3316;
 | ||||
| //constexpr uint16_t VP_E4_STATUS = 0x3318;
 | ||||
| //constexpr uint16_t VP_E5_STATUS = 0x331A;
 | ||||
| constexpr uint16_t VP_BED_STATUS = 0x331C; | ||||
| 
 | ||||
| constexpr uint16_t VP_MOVE_OPTION = 0x3400; | ||||
| 
 | ||||
| // Step per mm
 | ||||
| constexpr uint16_t VP_X_STEP_PER_MM = 0x3600; // at the moment , 2 byte unsigned int , 0~1638.4
 | ||||
| //constexpr uint16_t VP_X2_STEP_PER_MM = 0x3602;
 | ||||
| constexpr uint16_t VP_Y_STEP_PER_MM = 0x3604; | ||||
| //constexpr uint16_t VP_Y2_STEP_PER_MM = 0x3606;
 | ||||
| constexpr uint16_t VP_Z_STEP_PER_MM = 0x3608; | ||||
| //constexpr uint16_t VP_Z2_STEP_PER_MM = 0x360A;
 | ||||
| constexpr uint16_t VP_E0_STEP_PER_MM = 0x3610; | ||||
| //constexpr uint16_t VP_E1_STEP_PER_MM = 0x3612;
 | ||||
| //constexpr uint16_t VP_E2_STEP_PER_MM = 0x3614;
 | ||||
| //constexpr uint16_t VP_E3_STEP_PER_MM = 0x3616;
 | ||||
| //constexpr uint16_t VP_E4_STEP_PER_MM = 0x3618;
 | ||||
| //constexpr uint16_t VP_E5_STEP_PER_MM = 0x361A;
 | ||||
| 
 | ||||
| // PIDs
 | ||||
| constexpr uint16_t VP_E0_PID_P = 0x3700; // at the moment , 2 byte unsigned int , 0~1638.4
 | ||||
| constexpr uint16_t VP_E0_PID_I = 0x3702; | ||||
| constexpr uint16_t VP_E0_PID_D = 0x3704; | ||||
| constexpr uint16_t VP_BED_PID_P = 0x3710; | ||||
| constexpr uint16_t VP_BED_PID_I = 0x3712; | ||||
| constexpr uint16_t VP_BED_PID_D = 0x3714; | ||||
| 
 | ||||
| // Wating screen status
 | ||||
| constexpr uint16_t VP_WAITING_STATUS = 0x3800; | ||||
| 
 | ||||
| // SPs for certain variables...
 | ||||
| // located at 0x5000 and up
 | ||||
| // Not used yet!
 | ||||
| // This can be used e.g to make controls / data display invisible
 | ||||
| constexpr uint16_t SP_T_E0_Is = 0x5000; | ||||
| constexpr uint16_t SP_T_E0_Set = 0x5010; | ||||
| constexpr uint16_t SP_T_E1_Is = 0x5020; | ||||
| constexpr uint16_t SP_T_Bed_Is = 0x5030; | ||||
| constexpr uint16_t SP_T_Bed_Set = 0x5040; | ||||
| @ -56,6 +56,7 @@ namespace ExtUI { | ||||
|   enum extruder_t : uint8_t { E0, E1, E2, E3, E4, E5 }; | ||||
|   enum heater_t   : uint8_t { H0, H1, H2, H3, H4, H5, BED, CHAMBER }; | ||||
|   enum fan_t      : uint8_t { FAN0, FAN1, FAN2, FAN3, FAN4, FAN5 }; | ||||
|   enum result_t   : uint8_t { PID_BAD_EXTRUDER_NUM, PID_TEMP_TOO_HIGH, PID_TUNING_TIMEOUT, PID_DONE }; | ||||
| 
 | ||||
|   constexpr uint8_t extruderCount = EXTRUDERS; | ||||
|   constexpr uint8_t hotendCount   = HOTENDS; | ||||
| @ -318,6 +319,12 @@ namespace ExtUI { | ||||
|   void onLoadSettings(const char *); | ||||
|   void onConfigurationStoreWritten(bool success); | ||||
|   void onConfigurationStoreRead(bool success); | ||||
|   #if ENABLED(POWER_LOSS_RECOVERY) | ||||
|     void OnPowerLossResume(); | ||||
|   #endif | ||||
|   #if HAS_PID_HEATING | ||||
|     void OnPidTuning(const result_t rst); | ||||
|   #endif | ||||
| }; | ||||
| 
 | ||||
| /**
 | ||||
|  | ||||
| @ -28,7 +28,7 @@ | ||||
| 
 | ||||
| #include "../inc/MarlinConfigPre.h" | ||||
| 
 | ||||
| #if ENABLED(DGUS_LCD) | ||||
| #if HAS_DGUS_LCD | ||||
| 
 | ||||
| #include "extensible_ui/ui_api.h" | ||||
| #include "extensible_ui/lib/dgus/DGUSDisplay.h" | ||||
| @ -88,8 +88,69 @@ namespace ExtUI { | ||||
|   void onStatusChanged(const char * const msg) { ScreenHandler.setstatusmessage(msg); } | ||||
| 
 | ||||
|   void onFactoryReset() {} | ||||
|   void onLoadSettings() {} | ||||
|   void onStoreSettings() {} | ||||
| } | ||||
|   void onStoreSettings(char *buff) { | ||||
|     // Called when saving to EEPROM (i.e. M500). If the ExtUI needs
 | ||||
|     // permanent data to be stored, it can write up to eeprom_data_size bytes
 | ||||
|     // into buff.
 | ||||
| 
 | ||||
| #endif // DGUS_LCD
 | ||||
|     // Example:
 | ||||
|     //  static_assert(sizeof(myDataStruct) <= ExtUI::eeprom_data_size);
 | ||||
|     //  memcpy(buff, &myDataStruct, sizeof(myDataStruct));
 | ||||
|   } | ||||
| 
 | ||||
|   void onLoadSettings(const char *buff) { | ||||
|     // Called while loading settings from EEPROM. If the ExtUI
 | ||||
|     // needs to retrieve data, it should copy up to eeprom_data_size bytes
 | ||||
|     // from buff
 | ||||
| 
 | ||||
|     // Example:
 | ||||
|     //  static_assert(sizeof(myDataStruct) <= ExtUI::eeprom_data_size);
 | ||||
|     //  memcpy(&myDataStruct, buff, sizeof(myDataStruct));
 | ||||
|   } | ||||
| 
 | ||||
|   void onConfigurationStoreWritten(bool success) { | ||||
|     // Called after the entire EEPROM has been written,
 | ||||
|     // whether successful or not.
 | ||||
|   } | ||||
| 
 | ||||
|   void onConfigurationStoreRead(bool success) { | ||||
|     // Called after the entire EEPROM has been read,
 | ||||
|     // whether successful or not.
 | ||||
|   } | ||||
| 
 | ||||
|   void onMeshUpdate(const int8_t xpos, const int8_t ypos, const float zval) { | ||||
|     // Called when any mesh points are updated
 | ||||
|   } | ||||
| 
 | ||||
|   #if ENABLED(POWER_LOSS_RECOVERY) | ||||
|     void OnPowerLossResume() { | ||||
|       // Called on resume from power-loss
 | ||||
|       ScreenHandler.GotoScreen(DGUSLCD_SCREEN_POWER_LOSS); | ||||
|     } | ||||
|   #endif | ||||
| 
 | ||||
| 
 | ||||
|   #if HAS_PID_HEATING | ||||
|     void OnPidTuning(const result_t rst) { | ||||
|       // Called for temperature PID tuning result
 | ||||
|       SERIAL_ECHOLNPAIR("OnPidTuning:",rst); | ||||
|       switch(rst) { | ||||
|         case PID_BAD_EXTRUDER_NUM: | ||||
|           ScreenHandler.setstatusmessagePGM(PSTR(MSG_PID_BAD_EXTRUDER_NUM)); | ||||
|           break; | ||||
|         case PID_TEMP_TOO_HIGH: | ||||
|           ScreenHandler.setstatusmessagePGM(PSTR(MSG_PID_TEMP_TOO_HIGH)); | ||||
|           break; | ||||
|         case PID_TUNING_TIMEOUT: | ||||
|           ScreenHandler.setstatusmessagePGM(PSTR(MSG_PID_TIMEOUT)); | ||||
|           break; | ||||
|         case PID_DONE: | ||||
|           ScreenHandler.setstatusmessagePGM(PSTR(MSG_PID_AUTOTUNE_FINISHED)); | ||||
|           break; | ||||
|       } | ||||
|       ScreenHandler.GotoScreen(DGUSLCD_SCREEN_MAIN); | ||||
|     } | ||||
|   #endif | ||||
| 
 | ||||
| } | ||||
| #endif // HAS_DGUS_LCD
 | ||||
|  | ||||
| @ -92,6 +92,18 @@ namespace ExtUI { | ||||
|   void onMeshUpdate(const int8_t xpos, const int8_t ypos, const float zval) { | ||||
|     // Called when any mesh points are updated
 | ||||
|   } | ||||
| 
 | ||||
|   #if ENABLED(POWER_LOSS_RECOVERY) | ||||
|     void OnPowerLossResume() { | ||||
|       // Called on resume from power-loss
 | ||||
|     } | ||||
|   #endif | ||||
| 
 | ||||
|   #if HAS_PID_HEATING | ||||
|     void OnPidTuning(const result_t rst) { | ||||
|       // Called for temperature PID tuning result
 | ||||
|     } | ||||
|   #endif | ||||
| } | ||||
| 
 | ||||
| #endif // EXTUI_EXAMPLE && EXTENSIBLE_UI
 | ||||
|  | ||||
| @ -32,6 +32,9 @@ | ||||
| #include "planner.h" | ||||
| #include "../core/language.h" | ||||
| #include "../HAL/shared/Delay.h" | ||||
| #if ENABLED(EXTENSIBLE_UI) | ||||
|   #include "../lcd/extensible_ui/ui_api.h" | ||||
| #endif | ||||
| 
 | ||||
| #if ENABLED(MAX6675_IS_MAX31865) | ||||
|   #include "Adafruit_MAX31865.h" | ||||
| @ -399,6 +402,9 @@ volatile bool Temperature::temp_meas_ready = false; | ||||
| 
 | ||||
|     if (target > GHV(BED_MAXTEMP - 10, temp_range[heater].maxtemp - 15)) { | ||||
|       SERIAL_ECHOLNPGM(MSG_PID_TEMP_TOO_HIGH); | ||||
|       #if ENABLED(EXTENSIBLE_UI) | ||||
|         ExtUI::OnPidTuning(ExtUI::result_t::PID_TEMP_TOO_HIGH); | ||||
|       #endif | ||||
|       return; | ||||
|     } | ||||
| 
 | ||||
| @ -512,6 +518,9 @@ volatile bool Temperature::temp_meas_ready = false; | ||||
|       #endif | ||||
|       if (current_temp > target + MAX_OVERSHOOT_PID_AUTOTUNE) { | ||||
|         SERIAL_ECHOLNPGM(MSG_PID_TEMP_TOO_HIGH); | ||||
|         #if ENABLED(EXTENSIBLE_UI) | ||||
|           ExtUI::OnPidTuning(ExtUI::result_t::PID_TEMP_TOO_HIGH); | ||||
|         #endif | ||||
|         break; | ||||
|       } | ||||
| 
 | ||||
| @ -554,6 +563,9 @@ volatile bool Temperature::temp_meas_ready = false; | ||||
|         #define MAX_CYCLE_TIME_PID_AUTOTUNE 20L | ||||
|       #endif | ||||
|       if (((ms - t1) + (ms - t2)) > (MAX_CYCLE_TIME_PID_AUTOTUNE * 60L * 1000L)) { | ||||
|         #if ENABLED(EXTENSIBLE_UI) | ||||
|           ExtUI::OnPidTuning(ExtUI::result_t::PID_TUNING_TIMEOUT); | ||||
|         #endif | ||||
|         SERIAL_ECHOLNPGM(MSG_PID_TIMEOUT); | ||||
|         break; | ||||
|       } | ||||
| @ -602,6 +614,9 @@ volatile bool Temperature::temp_meas_ready = false; | ||||
|         #if ENABLED(PRINTER_EVENT_LEDS) | ||||
|           printerEventLEDs.onPidTuningDone(color); | ||||
|         #endif | ||||
|         #if ENABLED(EXTENSIBLE_UI) | ||||
|           ExtUI::OnPidTuning(ExtUI::result_t::PID_DONE); | ||||
|         #endif | ||||
| 
 | ||||
|         goto EXIT_M303; | ||||
|       } | ||||
| @ -613,6 +628,9 @@ volatile bool Temperature::temp_meas_ready = false; | ||||
|     #if ENABLED(PRINTER_EVENT_LEDS) | ||||
|       printerEventLEDs.onPidTuningDone(color); | ||||
|     #endif | ||||
|     #if ENABLED(EXTENSIBLE_UI) | ||||
|       ExtUI::OnPidTuning(ExtUI::result_t::PID_DONE); | ||||
|     #endif | ||||
| 
 | ||||
|     EXIT_M303: | ||||
|       #if ENABLED(NO_FAN_SLOWING_IN_PID_TUNING) | ||||
|  | ||||
| @ -2030,9 +2030,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2062,9 +2062,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2031,9 +2031,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2031,9 +2031,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2050,9 +2050,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2110,9 +2110,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1244,6 +1244,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2109,9 +2109,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2030,9 +2030,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -2041,9 +2041,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2032,9 +2032,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2032,9 +2032,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2147,9 +2147,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2058,9 +2058,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2041,9 +2041,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2033,9 +2033,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2042,9 +2042,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2040,9 +2040,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2031,9 +2031,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1247,6 +1247,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2013,9 +2013,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2035,9 +2035,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2030,9 +2030,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -2030,9 +2030,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2030,9 +2030,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2018,9 +2018,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2031,9 +2031,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1251,6 +1251,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2018,9 +2018,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2022,9 +2022,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2023,9 +2023,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2029,9 +2029,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2040,9 +2040,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2031,9 +2031,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2033,9 +2033,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2049,9 +2049,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2034,9 +2034,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2034,9 +2034,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2040,9 +2040,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
| @ -1243,6 +1243,44 @@ | ||||
| 
 | ||||
| #endif // HAS_GRAPHICAL_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Additional options for DGUS / DWIN displays
 | ||||
| //
 | ||||
| #if HAS_DGUS_LCD | ||||
|   #define DGUS_SERIAL_PORT 2 | ||||
|   #define DGUS_BAUDRATE 115200 | ||||
| 
 | ||||
|   #define DGUS_RX_BUFFER_SIZE 128 | ||||
|   #define DGUS_TX_BUFFER_SIZE 48 | ||||
|   //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS  // Fix Rx overrun situation (Currently only for AVR)
 | ||||
| 
 | ||||
|   #define DGUS_UPDATE_INTERVAL_MS  500    // (ms) Interval between automatic screen updates
 | ||||
|   #define BOOTSCREEN_TIMEOUT      3000    // (ms) Duration to display the boot screen
 | ||||
| 
 | ||||
|   #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY) | ||||
|     #define DGUS_PRINT_FILENAME           // Display the filename during printing
 | ||||
|     #define DGUS_PREHEAT_UI               // Display a preheat screen during heatup
 | ||||
| 
 | ||||
|     #if ENABLED(DGUS_LCD_UI_FYSETC) | ||||
|       //#define DUGS_UI_MOVE_DIS_OPTION   // Disabled by default for UI_FYSETC
 | ||||
|     #else | ||||
|       #define DUGS_UI_MOVE_DIS_OPTION     // Enabled by default for UI_HIPRECY
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_FILAMENT_LOADUNLOAD | ||||
|     #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) | ||||
|       #define DGUS_FILAMENT_PURGE_LENGTH 10 | ||||
|       #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
 | ||||
|     #endif | ||||
| 
 | ||||
|     #define DGUS_UI_WAITING               // Show a "waiting" screen between some screens
 | ||||
|     #if ENABLED(DGUS_UI_WAITING) | ||||
|       #define DGUS_UI_WAITING_STATUS 10 | ||||
|       #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
 | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // HAS_DGUS_LCD
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch UI for the FTDI Embedded Video Engine (EVE)
 | ||||
| //
 | ||||
|  | ||||
| @ -2034,9 +2034,11 @@ | ||||
| //=============================================================================
 | ||||
| 
 | ||||
| //
 | ||||
| // DGUS Touch Display with DWIN OS
 | ||||
| // DGUS Touch Display with DWIN OS. (Choose one.)
 | ||||
| //
 | ||||
| //#define DGUS_LCD
 | ||||
| //#define DGUS_LCD_UI_ORIGIN
 | ||||
| //#define DGUS_LCD_UI_FYSETC
 | ||||
| //#define DGUS_LCD_UI_HIPRECY
 | ||||
| 
 | ||||
| //
 | ||||
| // Touch-screen LCD for Malyan M200 printers
 | ||||
|  | ||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user