🔧 Add DGUS_LCD_UI RELOADED conditions

This commit is contained in:
Scott Lahteine
2023-03-06 22:55:55 -06:00
parent cc31537ae3
commit 4b9bb85b12
8 changed files with 56 additions and 99 deletions

View File

@@ -4409,6 +4409,8 @@ static_assert(_PLUS_TEST(4), "HOMING_FEEDRATE_MM_M values must be positive.");
#error "DGUS_LCD_UI RELOADED requires BABYSTEP_ALWAYS_AVAILABLE." #error "DGUS_LCD_UI RELOADED requires BABYSTEP_ALWAYS_AVAILABLE."
#elif DISABLED(BABYSTEP_ZPROBE_OFFSET) #elif DISABLED(BABYSTEP_ZPROBE_OFFSET)
#error "DGUS_LCD_UI RELOADED requires BABYSTEP_ZPROBE_OFFSET." #error "DGUS_LCD_UI RELOADED requires BABYSTEP_ZPROBE_OFFSET."
#elif ENABLED(HOME_AFTER_DEACTIVATE)
#error "DGUS_LCD_UI RELOADED requires HOME_AFTER_DEACTIVATE to be disabled."
#elif ENABLED(AUTO_BED_LEVELING_UBL) && DISABLED(UBL_SAVE_ACTIVE_ON_M500) #elif ENABLED(AUTO_BED_LEVELING_UBL) && DISABLED(UBL_SAVE_ACTIVE_ON_M500)
#warning "Without UBL_SAVE_ACTIVE_ON_M500, your mesh will not be saved when using the touchscreen." #warning "Without UBL_SAVE_ACTIVE_ON_M500, your mesh will not be saved when using the touchscreen."
#endif #endif

View File

@@ -125,8 +125,7 @@ void DGUSDisplay::WriteStringPGM(uint16_t addr, const void* data_ptr, uint8_t si
const char* data = static_cast<const char*>(data_ptr); const char* data = static_cast<const char*>(data_ptr);
size_t len = strlen_P(data); size_t len = strlen_P(data);
uint8_t left_spaces = 0; uint8_t left_spaces = 0, right_spaces = 0;
uint8_t right_spaces = 0;
if (len < size) { if (len < size) {
if (!len) { if (!len) {
@@ -147,15 +146,9 @@ void DGUSDisplay::WriteStringPGM(uint16_t addr, const void* data_ptr, uint8_t si
len = size; len = size;
} }
while (left_spaces--) { while (left_spaces--) LCD_SERIAL.write(' ');
LCD_SERIAL.write(' '); while (len--) LCD_SERIAL.write(pgm_read_byte(data++));
} while (right_spaces--) LCD_SERIAL.write(use_space ? ' ' : '\0');
while (len--) {
LCD_SERIAL.write(pgm_read_byte(data++));
}
while (right_spaces--) {
LCD_SERIAL.write(use_space ? ' ' : '\0');
}
} }
void DGUSDisplay::ReadVersions() { void DGUSDisplay::ReadVersions() {
@@ -340,11 +333,13 @@ void DGUSDisplay::ProcessRx() {
} }
size_t DGUSDisplay::GetFreeTxBuffer() { size_t DGUSDisplay::GetFreeTxBuffer() {
#ifdef LCD_SERIAL_GET_TX_BUFFER_FREE return (
return LCD_SERIAL_GET_TX_BUFFER_FREE(); #ifdef LCD_SERIAL_GET_TX_BUFFER_FREE
#else LCD_SERIAL_GET_TX_BUFFER_FREE()
return SIZE_MAX; #else
#endif SIZE_MAX
#endif
);
} }
void DGUSDisplay::FlushTx() { void DGUSDisplay::FlushTx() {

View File

@@ -47,13 +47,13 @@ public:
enum DGUS_ControlType : uint8_t { enum DGUS_ControlType : uint8_t {
VARIABLE_DATA_INPUT = 0x00, VARIABLE_DATA_INPUT = 0x00,
POPUP_WINDOW = 0x01, POPUP_WINDOW = 0x01,
INCREMENTAL_ADJUST = 0x02, INCREMENTAL_ADJUST = 0x02,
SLIDER_ADJUST = 0x03, SLIDER_ADJUST = 0x03,
RTC_SETTINGS = 0x04, RTC_SETTINGS = 0x04,
RETURN_KEY_CODE = 0x05, RETURN_KEY_CODE = 0x05,
TEXT_INPUT = 0x06, TEXT_INPUT = 0x06,
FIRMWARE_SETTINGS = 0x07 FIRMWARE_SETTINGS = 0x07
}; };
DGUSDisplay() = default; DGUSDisplay() = default;
@@ -63,8 +63,11 @@ public:
static void Read(uint16_t addr, uint8_t size); static void Read(uint16_t addr, uint8_t size);
static void Write(uint16_t addr, const void* data_ptr, uint8_t size); static void Write(uint16_t addr, const void* data_ptr, uint8_t size);
static void WriteString(uint16_t addr, const void* data_ptr, uint8_t size, bool left = true, bool right = false, bool use_space = true); static void WriteString(uint16_t addr, const void* data_ptr, uint8_t size, bool left=true, bool right=false, bool use_space=true);
static void WriteStringPGM(uint16_t addr, const void* data_ptr, uint8_t size, bool left = true, bool right = false, bool use_space = true); static void WriteStringPGM(uint16_t addr, const void* data_ptr, uint8_t size, bool left=true, bool right=false, bool use_space=true);
static void WriteString(uint16_t addr, FSTR_P const fstr, uint8_t size, bool left=true, bool right=false, bool use_space=true) {
WriteStringPGM(addr, FTOP(fstr), size, left, right, use_space);
}
template<typename T> template<typename T>
static void Write(uint16_t addr, T data) { static void Write(uint16_t addr, T data) {
@@ -83,7 +86,7 @@ public:
// start: position at which the sound was stored on the display. // start: position at which the sound was stored on the display.
// len: how many sounds to play. Sounds will play consecutively from start to start+len-1. // len: how many sounds to play. Sounds will play consecutively from start to start+len-1.
// volume: playback volume. 0 keeps the current volume. // volume: playback volume. 0 keeps the current volume.
static void PlaySound(uint8_t start, uint8_t len = 1, uint8_t volume = 0); static void PlaySound(uint8_t start, uint8_t len=1, uint8_t volume=0);
// Enable/disable a specific touch control. // Enable/disable a specific touch control.
// type: control type. // type: control type.
// control: index of the control on the page (set during screen development). // control: index of the control on the page (set during screen development).
@@ -154,7 +157,7 @@ private:
}; };
enum dgus_system_addr : uint16_t { enum dgus_system_addr : uint16_t {
DGUS_VERSION = 0x000f // OS/GUI version DGUS_VERSION = 0x000F // OS/GUI version
}; };
static void WriteHeader(uint16_t addr, uint8_t command, uint8_t len); static void WriteHeader(uint16_t addr, uint8_t command, uint8_t len);

View File

@@ -387,7 +387,7 @@ void DGUSRxHandler::Steppers(DGUS_VP &vp, void *data_ptr) {
void DGUSRxHandler::ZOffset(DGUS_VP &vp, void *data_ptr) { void DGUSRxHandler::ZOffset(DGUS_VP &vp, void *data_ptr) {
UNUSED(vp); UNUSED(vp);
if (!ExtUI::isAxisPositionKnown(ExtUI::Z)) { if (TERN0(NO_MOTION_BEFORE_HOMING, !ExtUI::isAxisPositionKnown(ExtUI::Z))) {
dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_HOMING_REQUIRED)); dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_HOMING_REQUIRED));
return; return;
} }
@@ -411,7 +411,7 @@ void DGUSRxHandler::ZOffset(DGUS_VP &vp, void *data_ptr) {
void DGUSRxHandler::ZOffsetStep(DGUS_VP &vp, void *data_ptr) { void DGUSRxHandler::ZOffsetStep(DGUS_VP &vp, void *data_ptr) {
UNUSED(vp); UNUSED(vp);
if (!ExtUI::isAxisPositionKnown(ExtUI::Z)) { if (TERN0(NO_MOTION_BEFORE_HOMING, !ExtUI::isAxisPositionKnown(ExtUI::Z))) {
dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_HOMING_REQUIRED)); dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_HOMING_REQUIRED));
return; return;
} }
@@ -525,7 +525,7 @@ void DGUSRxHandler::Probe(DGUS_VP &vp, void *data_ptr) {
#else #else
queue.enqueue_now(F("G29")); queue.enqueue_now(F("G29"));
#endif #endif
queue.enqueue_now_P(DGUS_CMD_EEPROM_SAVE); queue.enqueue_now(F("M500"));
} }
void DGUSRxHandler::DisableABL(DGUS_VP &vp, void *data_ptr) { void DGUSRxHandler::DisableABL(DGUS_VP &vp, void *data_ptr) {
@@ -646,18 +646,12 @@ void DGUSRxHandler::Move(DGUS_VP &vp, void *data_ptr) {
switch (vp.addr) { switch (vp.addr) {
default: return; default: return;
case DGUS_Addr::MOVE_SetX: case DGUS_Addr::MOVE_SetX: axis = ExtUI::X; break;
axis = ExtUI::X; case DGUS_Addr::MOVE_SetY: axis = ExtUI::Y; break;
break; case DGUS_Addr::MOVE_SetZ: axis = ExtUI::Z; break;
case DGUS_Addr::MOVE_SetY:
axis = ExtUI::Y;
break;
case DGUS_Addr::MOVE_SetZ:
axis = ExtUI::Z;
break;
} }
if (!ExtUI::isAxisPositionKnown(axis)) { if (TERN0(NO_MOTION_BEFORE_HOMING, !ExtUI::isAxisPositionKnown(axis))) {
dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_HOMING_REQUIRED)); dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_HOMING_REQUIRED));
return; return;
} }
@@ -671,18 +665,11 @@ void DGUSRxHandler::MoveStep(DGUS_VP &vp, void *data_ptr) {
UNUSED(vp); UNUSED(vp);
float offset; float offset;
switch (dgus_screen_handler.move_steps) { switch (dgus_screen_handler.move_steps) {
default: return; default: return;
case DGUS_Data::StepSize::MM10: case DGUS_Data::StepSize::MM10: offset = 10.0f; break;
offset = 10.0f; case DGUS_Data::StepSize::MM1: offset = 1.0f; break;
break; case DGUS_Data::StepSize::MMP1: offset = 0.1f; break;
case DGUS_Data::StepSize::MM1:
offset = 1.0f;
break;
case DGUS_Data::StepSize::MMP1:
offset = 0.1f;
break;
} }
const DGUS_Data::MoveDirection direction = (DGUS_Data::MoveDirection)((uint8_t*)data_ptr)[1]; const DGUS_Data::MoveDirection direction = (DGUS_Data::MoveDirection)((uint8_t*)data_ptr)[1];
@@ -690,30 +677,15 @@ void DGUSRxHandler::MoveStep(DGUS_VP &vp, void *data_ptr) {
switch (direction) { switch (direction) {
default: return; default: return;
case DGUS_Data::MoveDirection::XP: case DGUS_Data::MoveDirection::XM: offset = -offset;
axis = ExtUI::X; case DGUS_Data::MoveDirection::XP: axis = ExtUI::X; break;
break; case DGUS_Data::MoveDirection::YM: offset = -offset;
case DGUS_Data::MoveDirection::XM: case DGUS_Data::MoveDirection::YP: axis = ExtUI::Y; break;
axis = ExtUI::X; case DGUS_Data::MoveDirection::ZM: offset = -offset;
offset = -offset; case DGUS_Data::MoveDirection::ZP: axis = ExtUI::Z; break;
break;
case DGUS_Data::MoveDirection::YP:
axis = ExtUI::Y;
break;
case DGUS_Data::MoveDirection::YM:
axis = ExtUI::Y;
offset = -offset;
break;
case DGUS_Data::MoveDirection::ZP:
axis = ExtUI::Z;
break;
case DGUS_Data::MoveDirection::ZM:
axis = ExtUI::Z;
offset = -offset;
break;
} }
if (!ExtUI::isAxisPositionKnown(axis)) { if (TERN0(NO_MOTION_BEFORE_HOMING, !ExtUI::isAxisPositionKnown(axis))) {
dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_HOMING_REQUIRED)); dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_HOMING_REQUIRED));
return; return;
} }
@@ -727,7 +699,6 @@ void DGUSRxHandler::MoveSetStep(DGUS_VP &vp, void *data_ptr) {
UNUSED(vp); UNUSED(vp);
const DGUS_Data::StepSize size = (DGUS_Data::StepSize)((uint8_t*)data_ptr)[1]; const DGUS_Data::StepSize size = (DGUS_Data::StepSize)((uint8_t*)data_ptr)[1];
dgus_screen_handler.move_steps = size; dgus_screen_handler.move_steps = size;
dgus_screen_handler.TriggerFullUpdate(); dgus_screen_handler.TriggerFullUpdate();
@@ -746,9 +717,7 @@ void DGUSRxHandler::GcodeExecute(DGUS_VP &vp, void *data_ptr) {
UNUSED(vp); UNUSED(vp);
UNUSED(data_ptr); UNUSED(data_ptr);
if (!strlen(dgus_screen_handler.gcode)) { if (!strlen(dgus_screen_handler.gcode)) return;
return;
}
if (!dgus_screen_handler.IsPrinterIdle()) { if (!dgus_screen_handler.IsPrinterIdle()) {
dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY));
@@ -765,9 +734,7 @@ void DGUSRxHandler::ResetEEPROM(DGUS_VP &vp, void *data_ptr) {
const DGUS_Data::Popup result = (DGUS_Data::Popup)((uint8_t*)data_ptr)[1]; const DGUS_Data::Popup result = (DGUS_Data::Popup)((uint8_t*)data_ptr)[1];
if (result != DGUS_Data::Popup::CONFIRMED) { if (result != DGUS_Data::Popup::CONFIRMED) return;
return;
}
if (!dgus_screen_handler.IsPrinterIdle()) { if (!dgus_screen_handler.IsPrinterIdle()) {
dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY)); dgus_screen_handler.SetStatusMessage(GET_TEXT_F(DGUS_MSG_BUSY));
@@ -775,7 +742,7 @@ void DGUSRxHandler::ResetEEPROM(DGUS_VP &vp, void *data_ptr) {
} }
queue.enqueue_now(F("M502")); queue.enqueue_now(F("M502"));
queue.enqueue_now_P(DGUS_CMD_EEPROM_SAVE); queue.enqueue_now(F("M500"));
} }
void DGUSRxHandler::SettingsExtra(DGUS_VP &vp, void *data_ptr) { void DGUSRxHandler::SettingsExtra(DGUS_VP &vp, void *data_ptr) {
@@ -908,7 +875,7 @@ void DGUSRxHandler::PIDRun(DGUS_VP &vp, void *data_ptr) {
dgus_screen_handler.ShowWaitScreen(GET_TEXT_F(DGUS_MSG_PID_AUTOTUNING), DGUS_Screen::PID); dgus_screen_handler.ShowWaitScreen(GET_TEXT_F(DGUS_MSG_PID_AUTOTUNING), DGUS_Screen::PID);
queue.enqueue_one_now(buffer); queue.enqueue_one_now(buffer);
queue.enqueue_now_P(DGUS_CMD_EEPROM_SAVE); queue.enqueue_now(F("M500"));
} }
#if ENABLED(POWER_LOSS_RECOVERY) #if ENABLED(POWER_LOSS_RECOVERY)

View File

@@ -69,11 +69,6 @@ bool DGUSScreenHandler::leveling_active = false;
millis_t DGUSScreenHandler::status_expire = 0; millis_t DGUSScreenHandler::status_expire = 0;
millis_t DGUSScreenHandler::eeprom_save = 0; millis_t DGUSScreenHandler::eeprom_save = 0;
const char DGUS_MSG_UNDEF[] PROGMEM = "-";
const char DGUS_CMD_HOME[] PROGMEM = "G28",
DGUS_CMD_EEPROM_SAVE[] PROGMEM = "M500";
void DGUSScreenHandler::Init() { void DGUSScreenHandler::Init() {
dgus_display.Init(); dgus_display.Init();
@@ -146,7 +141,7 @@ void DGUSScreenHandler::Loop() {
if (eeprom_save > 0 && ELAPSED(ms, eeprom_save) && IsPrinterIdle()) { if (eeprom_save > 0 && ELAPSED(ms, eeprom_save) && IsPrinterIdle()) {
eeprom_save = 0; eeprom_save = 0;
queue.enqueue_now_P(DGUS_CMD_EEPROM_SAVE); queue.enqueue_now(F("M500"));
return; return;
} }
@@ -385,7 +380,7 @@ void DGUSScreenHandler::SetStatusMessage(const char* msg, const millis_t duratio
} }
void DGUSScreenHandler::SetStatusMessage(FSTR_P const fmsg, const millis_t duration) { void DGUSScreenHandler::SetStatusMessage(FSTR_P const fmsg, const millis_t duration) {
dgus_display.WriteStringPGM((uint16_t)DGUS_Addr::MESSAGE_Status, FTOP(fmsg), DGUS_STATUS_LEN, false, true); dgus_display.WriteString((uint16_t)DGUS_Addr::MESSAGE_Status, fmsg, DGUS_STATUS_LEN, false, true);
status_expire = (duration > 0 ? ExtUI::safe_millis() + duration : 0); status_expire = (duration > 0 ? ExtUI::safe_millis() + duration : 0);
} }

View File

@@ -141,8 +141,3 @@ private:
}; };
extern DGUSScreenHandler dgus_screen_handler; extern DGUSScreenHandler dgus_screen_handler;
extern const char DGUS_MSG_UNDEF[];
extern const char DGUS_CMD_HOME[],
DGUS_CMD_EEPROM_SAVE[];

View File

@@ -82,7 +82,7 @@ bool DGUSSetupHandler::LevelingMenu() {
dgus_screen_handler.ShowWaitScreen(GET_TEXT_F(DGUS_MSG_HOMING), DGUS_Screen::LEVELING_MENU); dgus_screen_handler.ShowWaitScreen(GET_TEXT_F(DGUS_MSG_HOMING), DGUS_Screen::LEVELING_MENU);
queue.enqueue_now_P(DGUS_CMD_HOME); queue.enqueue_now(F("G28"));
return false; return false;
} }
@@ -101,7 +101,7 @@ bool DGUSSetupHandler::LevelingManual() {
dgus_screen_handler.ShowWaitScreen(GET_TEXT_F(DGUS_MSG_HOMING), DGUS_Screen::LEVELING_MANUAL); dgus_screen_handler.ShowWaitScreen(GET_TEXT_F(DGUS_MSG_HOMING), DGUS_Screen::LEVELING_MANUAL);
queue.enqueue_now_P(DGUS_CMD_HOME); queue.enqueue_now(F("G28"));
return false; return false;
} }
@@ -130,7 +130,7 @@ bool DGUSSetupHandler::LevelingOffset() {
dgus_screen_handler.ShowWaitScreen(GET_TEXT_F(DGUS_MSG_HOMING), DGUS_Screen::LEVELING_OFFSET); dgus_screen_handler.ShowWaitScreen(GET_TEXT_F(DGUS_MSG_HOMING), DGUS_Screen::LEVELING_OFFSET);
queue.enqueue_now_P(DGUS_CMD_HOME); queue.enqueue_now(F("G28"));
return false; return false;
} }

View File

@@ -522,7 +522,7 @@ void DGUSTxHandler::PrintTime(DGUS_VP &vp) {
dgus_display.WriteString((uint16_t)vp.addr, buffer, vp.size); dgus_display.WriteString((uint16_t)vp.addr, buffer, vp.size);
#else #else
dgus_display.WriteStringPGM((uint16_t)vp.addr, DGUS_MSG_UNDEF, vp.size); dgus_display.WriteString((uint16_t)vp.addr, F("-"), vp.size);
#endif #endif
} }
@@ -533,7 +533,7 @@ void DGUSTxHandler::LongestPrint(DGUS_VP &vp) {
dgus_display.WriteString((uint16_t)vp.addr, buffer, vp.size); dgus_display.WriteString((uint16_t)vp.addr, buffer, vp.size);
#else #else
dgus_display.WriteStringPGM((uint16_t)vp.addr, DGUS_MSG_UNDEF, vp.size); dgus_display.WriteString((uint16_t)vp.addr, F("-"), vp.size);
#endif #endif
} }
@@ -544,7 +544,7 @@ void DGUSTxHandler::FilamentUsed(DGUS_VP &vp) {
dgus_display.WriteString((uint16_t)vp.addr, buffer, vp.size); dgus_display.WriteString((uint16_t)vp.addr, buffer, vp.size);
#else #else
dgus_display.WriteStringPGM((uint16_t)vp.addr, DGUS_MSG_UNDEF, vp.size); dgus_display.WriteString((uint16_t)vp.addr, F("-"), vp.size);
#endif #endif
} }